Kubeconfig基本结构并管理多集群

Kubeconfig基本结构并管理多集群

文章目录

  • Kubeconfig基本结构并管理多集群
    • 通过Kubectl设置kubeconfig
    • 修改kubeconfig的NAME 、CLUSTER、AUTHIINFO
    • 通过ServiceAccount的token,创建kubeconfig文件

前提通过rbac授权role或者clusterrole,再进行如下配置。

通过Kubectl设置kubeconfig

ca证书获取方式,下面用到的是base64解密之后的:

kubectl get secret <secretname> -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt

token获取方式(需要base64解密):

kubectl get secret <secretname> -o jsonpath='{.data.token}' | base64 --decode > token
  1. 设置cluster
kubectl config set-cluster cluster_name \
    --embed-certs=true \
    --server=https://ip:6443 \
    --certificate-authority=./ca.crt

这里的ca.crt是base64解密之后的,形如

-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----

  1. 设置token认证
kubectl config set-credentials lab2-user --token=<token>
  1. 设置上下文
kubectl config set-context lab2 --cluster=lab2 --user=lab2-user

验证:

Kubeconfig基本结构并管理多集群_第1张图片

修改kubeconfig的NAME 、CLUSTER、AUTHIINFO

修改kubectl时候注意三大位置,clusters,contexts,users,对应位置的名称对应。

Kubeconfig基本结构并管理多集群_第2张图片

通过ServiceAccount的token,创建kubeconfig文件

关于sa的一些知识,请在文档内搜索rbac。

apiVersion: v1
kind: Config

clusters:
- name: ${cluster_name}
  cluster:
    certificate-authority-data: ${ca}
    server: ${server}
    
contexts:
- name: ${context_name}
  context:
    cluster: ${cluster_name}
    namespace: default
    user: ${sa_name}
    
current-context: ${context_name}

users:
- name: ${sa_name}
  user:
    token: ${token}
  • ca证书获取方式(这里需要的是base64加密之后的):
ca=$(kubectl get secret <secretname> -o jsonpath='{.data.ca\.crt}')
  • token获取方式(需要base64解密):
token=$(kubectl get secret <secretname> -o jsonpath='{.data.token}' | base64 --decode)
  • Server: 需要是https://ip:6443,一般是6443
  • sa_name: 并不一定是Servicename,只要与users.name对应即可。
  • cluster_name 和 context_name可以自己指定,也可以修改,会稍微麻烦,建议一次性修改准确,因为这个和控制多集群又关系。

需要的这几个值设置好之后就可以进行下一步:

echo "
apiVersion: v1
kind: Config

clusters:
- name: ${cluster_name}
  cluster:
    certificate-authority-data: ${ca}
    server: ${server}
    
contexts:
- name: ${context_name}
  context:
    cluster: ${cluster_name}
    namespace: default
    user: ${sa_name}
    
current-context: ${context_name}

users:
- name: ${sa_name}
  user:
    token: ${token}
" > sa-kubeconfig

验证:

image-20200708121637987

image-20200708121737504

你可能感兴趣的:(Kubernetes)