在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
我們已經完成了配置的拷貝,但是為了便於管理,我們需要對這些配置中的命名進行修改規范;我們要修改這兩個配置文件,並着重關注三大要素:集群、上下文、用戶;
1. 修改集群名稱
2. 修改用戶名稱
3. 更新上下文名稱,關聯對應用戶及集群
#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
4. 將修改好的配置文件寫入環境變量
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
5. 或取全局上下文
kubectl config get-contexts
6. 獲取當前K8S上下文
kubectl config current-context
7. 切換當前上下文
kubectl config use-context kubernetes-dev
8. kubectl config 命令見幫助信息
current-context 顯示 current_context
delete-cluster 刪除 kubeconfig 文件中指定的集群
delete-context 刪除 kubeconfig 文件中指定的 context
get-clusters 顯示 kubeconfig 文件中定義的集群
get-contexts 描述一個或多個 contexts
rename-context Renames a context from the kubeconfig file.
set 設置 kubeconfig 文件中的一個單個值
set-cluster 設置 kubeconfig 文件中的一個集群條目
set-context 設置 kubeconfig 文件中的一個 context 條目
set-credentials 設置 kubeconfig 文件中的一個用戶條目
unset 取消設置 kubeconfig 文件中的一個單個值
use-context 設置 kubeconfig 文件中的當前上下文
view 顯示合並的 kubeconfig 配置或一個指定的 kubeconfig 文件