华为云UCS-获取KubeConfig文件:第三方云厂商集群
第三方云厂商集群
由于第三方云厂商集群提供的KubeConfig文件格式存在差异,您需要自行创建一个具有所有集群资源操作权限的ServiceAccount,并获取这个ServiceAccount的token,用于配置U CS 支持的KubeConfig文件。
- 通过kubectl连接集群。
- 创建ucs-service-account.yaml文件。
apiVersion: v1 kind: ServiceAccount metadata: name: ucs-user --- apiVersion: v1 kind: Secret metadata: name: ucs-user-token annotations: kubernetes.io/service-account.name: "ucs-user" type: kubernetes.io/service-account-token --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: ucs-user-role rules: - apiGroups: - '*' resources: - '*' verbs: - '*' - nonResourceURLs: - '*' verbs: - get --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: ucs-user-role-binding subjects: - kind: ServiceAccount name: ucs-user namespace: default roleRef: kind: ClusterRole name: ucs-user-role apiGroup: rbac.authorization.k8s.io
- 在集群中执行以下命令创建ServiceAccount。
kubectl apply -f ucs-service-account.yaml
- 使用以下命令获取token。
kubectl get secret ucs-user-token -n default -oyaml | grep token: | awk '{print $2}' | base64 -d ;echo
- 配置KubeConfig文件。
参考以下示例创建一个kubeconfig.yaml文件,并将token替换为4中获取的值。
kubeconfig.yaml:
kind: Config apiVersion: v1 preferences: {} clusters: - name: internalCluster cluster: server: 'https://kubernetes.default.svc.cluster.local:443' insecure-skip-tls-verify: true users: - name: ucs-user user: token: 'MIIFbAYJKo*****' contexts: - name: internal context: cluster: internalCluster user: ucs-user current-context: internal
KubeConfig文件中的关键参数说明如下:参数名
参数值
说明
是否可选
server
'https://kubernetes.default.svc.cluster.local:443'
APIServer的集群内访问地址。由于部分厂商集群对APIServer地址做了外部访问限制,可能导致UCS无法正常接入集群,因此建议使用集群内访问地址。
必选
insecure-skip-tls-verify
true
如使用该参数,表示跳过证书认证,参数值必须为true。
二选一
说明:当server字段为集群内访问地址时,优选跳过证书认证。
certificate-authority-data
base64加密字符串
如使用该参数,表示集群开启双向认证,参数值为经base64加密后的服务端证书。
原生K8s集群的服务端证书默认地址为master节点的“/etc/kubernetes/pki/ca.crt”。
token
base64加密字符串
用户以token方式进行认证,参数值为4中获取的token值。
三选一
说明:优选token方式,UCS不支持除这三种方式外的其他认证方式。
- client-certificate-data
- client-key-data
base64加密字符串
用户以证书加私钥的方式进行认证。
- client-certificate-data:经base64加密后的客户端证书。
- client-key-data:经base64加密后的客户端私钥。
- username
- password
字符串
用户通过用户名密码进行认证。
- username:访问集群的用户名。
- password:用户名对应的密码。
- 使用5中配置的KubeConfig文件接入集群,详细步骤请继续参考注册附着集群(公网接入)或注册附着集群(私网接入)。
使用UCS期间,创建的ServiceAccount、ClusterRole、ClusterRoleBinding对象均不能删除,否则token将会失效。
如集群不再接入UCS,可使用kubectl delete -f ucs-service-account.yaml命令删除UCS创建的SA对象。