k8s-认证-kubeconfig介绍、配置示例

174 阅读2分钟

kubeconfig基础

场景 有多个集群 多个apiserver 要怎么管理 和 访问

image.png

kubeconfig文件拓扑

  • users
    • 是一个列表 a b c
  • cluster
    • cluster1
    • cluster2
  • contexts
    • a@cluster1
    • b@cluster1
    • c@cluster2

kubeconfig是YAML格式的文件,用于存储身份认证信息,以便于客户端加载并认证到API Server

kubeconfig保存有认证到一至多个Kubernetes集群的相关配置信息,并允许管理员按需在各配置间灵活切换

  • clusters:Kubernetes集群访问端点(API Server)列表
  • users:认证到API Server的身份凭据列表
  • contexts:将每一个user同可认证到的cluster建立关联的上下文列表
  • current-context:当前默认使用的context

查看当前的配置信息

kubectl config view

image.png

客户端程序加载的kubeconfig文件的途径及次序

  • --kubeconfig选项
  • KUBECONFIG环境变量:其值是包含有kubeconfig文件的列表
  • 默认路径:$HOME/.kube/config

创建kubeconfig文件(静态令牌用户)

step1 定义cluster

提供包括集群名称、API Server URL和信任的CA的证书相关的配置;clusters配置段中的各列表项名称需要惟一;

cd /root/.kube

kubectl config set-cluster kube-test --embed-certs=true --certificate-authority=/etc/kubernetes/pki/ca.crt --server="https://kubeapi.magedu.com:6443" --kubeconfig=/root/.kube/kubeusers.conf

image.png

step2 定义user

添加身份凭据,使用静态令牌文件认证的客户端提供令牌令牌即可

之前生成的token

8a6fb6.630f42379543bcb1,tom,1001,"kubeusers,kubeadmin"
e9854c.32327c5e30b5a2dc,tom,jerry,"kubeusers"
kubectl config set-credentials tom --token="8a6fb6.630f42379543bcb1" --kubeconfig=/root/.kube/kubeusers.conf

image.png

kubectl config view --kubeconfig=/root/.kube/kubeusers.conf

image.png

step3 定义context

为用户jerry的身份凭据与kube-test集群建立映射关系

kubectl config set-context tom@kube-test --cluster=kube-test --user=tom --kubeconfig=/root/.kube/kubeusers.conf

image.png

设定默认Current-Context

kubectl config use-context tom@kube-test --kubeconfig=/root/.kube/kubeusers.conf

image.png

测试 image.png

ca证书的配置方法

之前的操作 juejin.cn/post/729369…

定义user

kubectl config set-credentials mason --embed-certs=true --client-certificate=/etc/kubernetes/pki/mason.crt --client-key=/etc/kubernetes/pki/mason.key --kubeconfig=/root/.kube/kubeusers.conf

image.png

定义context

kubectl config set-context mason@kube-test --cluster=kube-test --user=mason --kubeconfig=/root/.kube/kubeusers.conf

image.png