Istio DEMO On DigitalOcean K8S Cluster

Kubernetes 和 Istio(Basic) DEMO

关于本文的具体命令可参考Github Repo
https://github.com/felipegirotti/kubernetes-istio-digital-ocean

本样例使用 Digital Ocean k8s服务来构建,当然,你也可以选择其他的云服务提供商或者本地部署.

我们使用简单的 bash命令行来创建k8s集群、istio环境和其他资源 (Mysql, RabbitMQ 和 Dashboard).
因为我们需要DO的token来通过API创建集群,所以请在DO的web工作台生成相应的Token
: https://cloud.digitalocean.com/account/api/tokens
并在本地的环境变量中export出来
export DO_TOKEN={your_digital_ocean_token}

运行命令 ./bin/create-cluster.sh (该命令会创建包含 3 个节点(1vcpu 、2gb内存)的k8s集群). 这大概要花费3到5分钟时间,这时间你可以去刷两条抖音或者支付宝偷个能量了。

然后你需要把DO生成的k8s配置文件挪到~/.kube目录下, 例如: mv /tmp/kubernetes-file.conf ~/.kube/config

Dashboard

通过proxy访问Dashboard: kubectl proxy 它创建了一个访问k8s集群的代理, 这样你就可以通过以下URL访问Dashboard了: http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/ 如果有验证的话需要现创建Token,执行以下命令: ./dashboard/get-token.sh,通过生成的token即可访问dashboard了。

Demo Apps

本文有 2 个demo 应用需要部署和测试:

部署Demo应用只需执行以下命令:
kubectl apply -f ./app/client -f ./app/place

通过以下命令查看应用请求地址 :
kubectl get svc -l app=istio-ingressgateway -n istio-system

NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                                                                                                                                      AGE
istio-ingressgateway   LoadBalancer   10.245.11.222   104.248.111.9   15020:30682/TCP,80:31380/TCP,443:31390/TCP,31400:31400/TCP,15029:30482/TCP,15030:31907/TCP,15031:31941/TCP,15032:31102/TCP,15443:31835/TCP   2m

EXTERNAL-IP 就是你要使用的地址

Testing

发起 place请求:

curl -X POST -H "Content-Type: application/json" -d '{"client_id": 1, "name": "Test", "latitude": 10.22, "longitude": -12.223}' http://104.248.111.9/api/v1/place
Get place: curl http://104.248.111.9/api/v1/place/1

发起 Client请求:
curl -X POST -H "Content-Type: application/json" -d '{"name": "Client Test", "latitude": 10.22, "longitude": -12.223}' http://104.248.111.9/api/v1/client List Clients: curl http://104.248.111.9/api/v1/clients

执行以下命令查看RabbitMQ应用:
kubectl port-forward rabbitmq-0 15673:15672

本地访问: http:localhost:15673
User: root
Pass: root

执行port-forward访问mysql:
kubectl port-forward svc/mysql 3307:3306

本地访问: mysql -h 127.0.0.1 -u root --port=3307 -p Pass: root

:tada::tada::tada:ENJOY!