多套凭据怎么组织
访问信息按集群、用户、上下文三个维度组织:集群描述接口地址,用户描述凭据,上下文把二者与命名空间绑定。切换集群本质上是切换上下文。管理多个环境时,可以把多份配置文件用环境变量合并使用,避免反复覆盖同一份文件。
基本信息
| 适用平台 | kubectl 1.20+,各平台通用 |
|---|---|
| 三个维度 | 集群、用户、上下文 |
| 合并方式 | 通过环境变量列出多个配置文件 |
| 分隔符差异 | 类 Unix 系统用冒号,Windows 用分号 |
| 常用查询 | 列出上下文、查看当前上下文、切换上下文 |
典型使用场景
- 同时管理开发、测试与生产多套集群
- 临时切换上下文排查不同环境的问题
- 把多份配置合并导出,供跳板机统一使用
- 流水线中按环境注入不同的配置来源
- 排查误操作:确认当前上下文指向哪个集群
合并与切换(类 Unix)
合并与切换(类 Unix)
export KUBECONFIG=$HOME/.kube/config:$HOME/.kube/prod.yaml:$HOME/.kube/dev.yaml
kubectl config get-contexts # 列出全部上下文
kubectl config current-context # 当前指向哪个集群
kubectl config use-context prod-admin # 切换上下文
kubectl config view --flatten > ~/.kube/merged.yaml # 合并导出为一份Windows PowerShell
Windows PowerShell
$env:KUBECONFIG = "$HOME\.kube\config;$HOME\.kube\prod.yaml" # 分隔符是分号
kubectl config get-contexts
kubectl config current-context
kubectl config use-context prod-admin配置字段读法
| 字段 | 含义 | 注意点 |
|---|---|---|
| 集群条目 | 接口地址与证书信息 | 地址变更后需要更新 |
| 用户条目 | 凭据或客户端证书 | 证书轮换后会失效 |
| 上下文条目 | 集群与用户、命名空间的组合 | 切换集群实际是切换上下文 |
| 当前上下文 | 默认生效的组合 | 执行前确认可避免误操作 |
合并后的文件是某一时刻的快照。凭据轮换或成员变更后,旧快照里的信息会失效,需要重新导出,否则会出现认证失败却看不出原因的情况。
在多套环境之间切换时,执行删除或变更操作前先确认当前上下文。大多数误删事故都发生在「以为还在测试环境」的时刻。