Tyk是一个开源的轻量级API网关程序,Tyk官网
tyk.io 官方支持ubuntu rethat docker mac等几种平台下搭建,本人选择了在ubuntu中使用docker 搭建
由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:
$ sudo apt-get remove docker docker-engine docker-ce docker.io
更新apt包索引:
$ sudo apt-get update
安装以下包以使apt可以通过HTTPS使用存储库(repository):
$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
添加Docker官方的GPG密钥:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
使用下面的命令来设置stable存储库:
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
再更新一下apt包索引:
$ sudo apt-get update
安装最新版本的Docker CE:
$ sudo apt-get install -y docker-ce
在生产系统上,可能会需要应该安装一个特定版本的Docker CE,而不是总是使用最新版本,这里主要不是docker,如果需要安装指定版本,请自行google
* docker pull tykio/tyk-gateway
* docker pull tykio/tyk-dashboard
* docker pull tykio/tyk-pump-docker-pub
* docker pull redis
* docker pull mongo
如果出现以上五个容器(不包括hello-world),则镜像拉取成功
* docker run -d --name tyk_mongo mongo
* docker run -d --name tyk_redis redis
* docker run -d -p 8080:8080 --link tyk_redis:redis --name tyk_gateway tykio/tyk-gateway
* docker run -d --name tyk_dashboard -p 3000:3000 --link tyk_redis:redis --link tyk_mongo:mongo --link tyk_gateway:tyk_gateway tykio/tyk-dashboard
* docker run -d --name tyk_pump --link tyk_redis:redis --link tyk_mongo:mongo tykio/tyk-pump-docker-pub
此时你可以访问Ubuntu的ip:3000 查看dashboard了,是这样的,需要我们输入激活码
可以看到,需要我们输入激活码,当然,不用紧张,激活码有针对于开发者的免费版,我们一起来看一下如何获取,首先打开官网 https://tyk.io/
打开官网后,找到顶部的导航栏,鼠标悬浮PRODUCTS,点击菜单中第二项 ON PREMISES,打开后滑动至页面底部,如下图所示
可以看到我框起来的按钮,获取一个开发版本的激活码,点击后,进入如下页面
点击我所框住的按钮,这一步告诉你,免费的激活码,只能用十二个月,到期了要再过来获取一次,并且只能有一个节点,不能多节点配置,点击按钮跳转至最后一步的页面,提交个人信息,最重要的是邮箱,其他信息都不重要,点击PLACE ORDER按钮提交表单后,你的邮箱会收到多条邮件,其中有一条就是你自己的激活码,将激活码复制后,到输入到激活页面完成激活,到此,激活已经完成了。
基础配置文件在github上,地址如下
https://github.com/TykTechnologies/tyk-dashboard-docker
在ubuntu中自己找一个位置(随意),执行如下命令(前提需要ubuntu已经安装git,如果没有安装请自行google)
git clone https://github.com/TykTechnologies/tyk-dashboard-docker
下载完成后,进入到对应的文件夹
cd tyk-dashboard-docker/
进入文件夹后,找到 bootstrap.sh 文件,如果Ubuntu安装的是python3以下的版本,则直接运行如下命令即可
./bootstrap.sh ubuntu主机ip
如果是以上版本包括python3,则需要做一些更改,如果自己不确定,可以先执行以上命令,执行过程中有错误信息,则做以下几步:
1、清空bootstrap.sh文件内容
>bootstrap.sh
2、将以下内容保存到文件中
#!/bin/bash
# Usage ./bootstrap.sh DASHBOARD_HOSTNAME
LOCALIP=$1
RANDOM_USER=$(env LC_CTYPE=C tr -dc "a-z0-9" < /dev/urandom | head -c 10)
PASS="test123"
echo "Creating Organisation"
ORGDATA=$(curl --silent --header "admin-auth: 12345" --header "Content-Type:application/json" --data '{"owner_name": "Default Org.","owner_slug": "default", "cname_enabled": true, "cname": ""}' http://$LOCALIP:3000/admin/organisations 2>&1)
#echo $ORGDATA
ORGID=$(echo $ORGDATA | python3 -c 'import json,sys;obj=json.load(sys.stdin);print(obj["Meta"])')
echo "ORGID: $ORGID"
echo "Adding new user"
USER_DATA=$(curl --silent --header "admin-auth: 12345" --header "Content-Type:application/json" --data '{"first_name": "John","last_name": "Smith","email_address": "'$RANDOM_USER'@default.com","password":"'$PASS'", "active": true,"org_id": "'$ORGID'"}' http://$LOCALIP:3000/admin/users 2>&1)
#echo $USER_DATA
USER_CODE=$(echo $USER_DATA | python3 -c 'import json,sys;obj=json.load(sys.stdin);print(obj["Message"])')
echo "USER AUTH: $USER_CODE"
USER_LIST=$(curl --silent --header "authorization: $USER_CODE" http://$LOCALIP:3000/api/users 2>&1)
#echo $USER_LIST
USER_ID=$(echo $USER_LIST | python3 -c 'import json,sys;obj=json.load(sys.stdin);print(obj["users"][0]["id"])')
echo "NEW ID: $USER_ID"
echo "Setting password"
OK=$(curl --silent --header "authorization: $USER_CODE" --header "Content-Type:application/json" http://$LOCALIP:3000/api/users/$USER_ID/actions/reset --data '{"new_password":"'$PASS'"}')
echo ""
内容替换完成后执行:
./bootstrap.sh Ubuntu主机ip
如果执行报错,八成是文件中python相关问题,可以自行排查解决,执行后输出信息如下:
root@ubuntu:~/tyk-dashboard-docker# ./bootstrap.sh 192.168.174.131
Creating Organisation
ORGID: 5c17635489d49c00014fffb3
Adding new user
USER AUTH: 2700cd3dd5c94aa74e66a61ccb0d8195
NEW ID: 5c1763544b084caaaa850abe
Setting password
DONE
====
Login at http://192.168.174.131:3000/
User: j4aawfows5@default.com
Pass: test123