Bootstrap

kubernetes中.kube/config文件生成

kubeconfig介绍

kubeconfig文件是在访问kube-api时用于权限校验的一个重要的文件,主要用于存储 Kubernetes 集群的配置信息,通常用于管理集群访问。
它里面主要包含了API版本、集群信息、上下文列表、当前使用的上下文以及用户信息列表,那一个kubeconfig的组成大致可以表示成这样,如下

apiVersion: v1 #API版本
kind: Config #资源类型
clusters: #集群列表相关的信息
- name: example-cluster #集群名称
  cluster: 
    server: https://192.168.1.1:6443 #集群API服务器地址
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t... #CA证书的base64编码后的数据
contexts: #上下文列表
- name: example-context
  context:
    cluster: example-cluster #要使用的集群名称
    user: example-user 要使用的用户名称
    namespace: default 命名空间(可选),不选是所有命名空间下均可使用
current-context: example-context #当前正在使用的上下文名称
users: #用户列表
- name: example-user #用户的名称,用于标识不同的用户
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t... #客户端证书的 base64 编码数据,用于身份验证。
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQ... #客户端私钥的 base64 编码数据,用于身份验证。

知道了一个kubeconfig文件的组成,那要生成一个应该并不难了。

生成kubeconfig文件

测试环境

k8s版本:V1.23.10
CentOS 7.9
可通过kubectl versionkubectl get nodes -o wide查看当前节点的kubernetes版本

生成

在我们部署好集群时,kubernetes会在/etc/kubernetes/ssl下生成一些证书用于控制对集群的访问权限
在这里插入图片描述
这里面的证书也可以用作kubernetes中控制用户的访问权限。
下面我们根据上面的config文件模板生成一个config文件

apiVersion: v1
kind: Config
clusters:
- cluster:
    api-version: v1
    certificate-authority-data: kube-ca.pem的base64编码数据
    server: "https://192.168.10.8:6443"
  name: "local"
contexts:
- context:
    cluster: "local"
    user: "kube-admin-local"
  name: "local"
current-context: "local"
users:
- name: "kube-admin-local"
  user:
    client-certificate-data: kube-apiserver.pem的base64编码数据
    client-key-data: kube-apiserver-key.pem的base64编码数据

对于client-certificate-data和client-key-data可在上面的ssl文件夹中任选一组符合自己需要的权限进行分配,没有强制要求。
这样我们就生成了一个对于kubectl和client-go可使用的config文件。

;