使用Helm在Minikube中安装Consul
背景介绍
Kubernetes管理容器集群,容器间的通信是很有必要的,通过硬编码的方式指定容器的IP地址不可移植且增加工作量,因此提供一个服务发现的服务是有必要的,Consul就是这样的一个工具。本文将讲述如何在Kubernetes中安装和使用Consul。
准备
Helm是Kubernetes的包管理工具,类似于Centos的yumd和Ubuntu的apt,用于包的发布和管理,功能十分强大。 本文中简单地介绍如何使用helm安装Consul。
Consul是用于服务发现和监测的服务,在我们前面的文章中,做了简单的介绍。Consul可以独立于Kubernetes使用,在一些简单的微服务架构中也可以用作服务发现的工具。
启动Minikube和安装Consul
# 启动minikube, 可以指定运行内存
minikube start --memory 4096
# 启动控制UI界面 设置url参数
minikube dashboard --url
#为了完成测试可以先使用demo
git clone https://github.com/hashicorp/demo-consul-101.git
cd demo-consul-101/k8s
# helm 安装
snap install helm
# helm初始化,在国内不能使用
# helm init
# 替代方案
# 记下helm版本号,并修改下面init命令的对应的版本号
helm version
helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:版本号(例如V.2.14.1) --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
# 修改配置conusl文件helm-consul-values.yaml如下:
# Choose an optional name for the datacenter
global:
datacenter: minidc
# Enable the Consul Web UI via a NodePort
ui:
service:
type: 'NodePort'
# Enable Connect for secure communication between nodes
connectInject:
enabled: true
client:
enabled: true
grpc: true
# Use only one Consul server for local development
server:
replicas: 1
bootstrapExpect: 1
disruptionBudget:
enabled: true
maxUnavailable: 0
# 安装consul 通过指定文件,如果不使用name参数将会使用随机名字
helm install -f helm-consul-values.yaml --name hedgehog ./consul-helm
# 查看服务,可以通过如下命令也可以使用dashboard
kubectl get pods
部署Consul可发现的应用
# 通过ui查看consul,打开url
minikube service hedgehog-consul-ui
# 部署一个实例应用
kubectl create -f 04-yaml-connect-envoy
# 查看实例应用是否部署成功,打开 http://localhost:9002
kubectl port-forward dashboard 9002:9002
这样表示部署完成,可以通过查看yaml文件查看配置,具体参见文件内容
使用Consul Connect
在Consul UI界面里面可以通过Intentions栏创建已注册服务的网络连续连接情况,可以定义两个服务市质检是否可以访问,具体实际操作