在pipeline中的CD环节,有时候需要部署到不同的K8S集群,比如开发环境、测试环境、生产环境。此时可以使用kubectl config来进行多个集群的管理。
- 开发环境集群
- 生产环境集群
为了方便,我们使用Jenkins本机作为agent来配置两个K8S集群的认证文件,达到可以在本机上操作两个集群的目的。
scp root@192.168.2.29:/etc/kubernetes/admin.conf ~/.kube/config-work-prod
scp root@10.61.150.19:/etc/kubernetes/admin.conf ~/.kube/config-work-dev
我们已经完成了配置的拷贝,但是为了便于管理,我们需要对这些配置中的命名进行修改规范;我们要修改这两个配置文件,并着重关注三大要素:集群、上下文、用户;
-
修改集群名称
-
修改用户名称
-
更新上下文名称,关联对应用户及集群
#dev
- context:
cluster: work-dev-cluster
user: work-dev-admin
name: kubernetes-dev
#prod
- context:
cluster: work-prod-cluster
user: work-dev-admin
name: kubernetes-prod
- 将修改好的配置文件写入环境变量
vim ~/.bash_profile
export KUBECONFIG=$HOME/.kube/config-work-dev:$HOME/.kube/config-work-prod
source ~/.bash_profile
echo $KUBECONFIG
kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
kubernetes-dev work-dev-cluster work-dev-admin
kubernetes-prod kubernetes kubernetes-admin
-
或取全局上下文
kubectl config get-contexts
-
获取当前K8S上下文
kubectl config current-context
-
切换当前上下文
kubectl config use-context kubernetes-dev