上一篇 使用 azure kubernetes service + dotnet core 的微服务实践 - 1.创建AKS 中完成了azure上 kubernetes cluster的创建,接下来就是往aks上部署各种应用了。
本文将介绍Consul 集群的部署,Consul 在整个微服务架构中用于服务注册和发现。
Helm
微服务和容器化给复杂应用部署与管理带来了极大的挑战。Helm把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,chart被保存到chart仓库。通过chart仓库可用来存储和分享chart。Helm使发布可配置,支持发布应用配置的版本管理,简化了Kubernetes部署应用的版本控制、打包、发布、删除、更新等操作。
Helm是目前Kubernetes服务编排领域的唯一开源子项目,做为Kubernetes应用的一个包管理工具,可理解为Kubernetes的apt-get / yum,由Deis 公司发起,该公司已经被微软收购。
Helm 可以理解为 Kubernetes 的包管理工具。
更多请参考官网 https://helm.sh
在本地安装Helm客户端 Helm CLI
brew install kubernetes-helm
-
在K8s集群中安装Helm服务端组件 Tiller
首先运行如下命令,确保kubectl 命令的上下文已经连接到我们创建的AKS。
az aks get-credentials --resource-group <resource group name> --name <aks name>
可以运行如下命令进行确认:
kubectl config view
执行以下命令进行安装:
helm init --upgrade
如果没梯子,可通过如下命令利用阿里云的镜像来安装 Helm:
helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.12.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
注意上面命令中的版本号v2.12.1,需要与 helm cli 版本一致。
Tiller默认被部署在k8s集群中的kube-system这个namespace下。
运行命令:
kubectl get pod -n kube-system -l app=helm
得到如下输出:
运行命令helm version
得到如下的输出:
部署 Consul 集群
使用官方的consul-helm部署,更多请参考 https://github.com/hashicorp/consul-helm
consul helm目前还没有放到chart repository中,所以第一步先下载到本地:
git clone https://github.com/hashicorp/consul-helm.git
然后运行如下命令安装:
helm install ./consul-helm
(假设本地目录为consul-helm)
注意:这里没有对consul-helm做任何修改,在生产环境中需要按需修改,更多请参考官网。
运行命令kubectl get pods
可得到如下输出:
运行命令helm list
可以列出当前k8s中部署的版本,可以看出当前部署的release name为snug-robin:
或者通过Kubernetes仪表板查看:
Consul UI
运行命令:
kubectl port-forward snug-robin-consul-server-0 8500:8500
然后在浏览器中打开http://localhost:8500,如下图:
删除 Consul 集群
通过指定release name 删除Consul:
helm delete <release name>
如此处可以执行下面的命令将Consul删除:
helm delete snug-robin
至此,consul 集群部署成功。