快速开始
本文档将帮助您快速了解如何创建一个 kubernetes connector 以连接到 kubernetes 集群,并在不直接处理凭据的情况下安全地执行 kubectl 操作。
目录
预计阅读时间前提条件流程概览操作步骤第 1 步:生成 ServiceAccount 令牌第 2 步:创建 Namespace第 3 步:创建 K8S 凭据和 Connector第 4 步:创建 Job 执行 Kubectl 操作第 5 步:验证操作底层原理关键观察点代理配置字段认证流程Kubeconfig 卷故障排查延伸阅读参考资料预计阅读时间
15 分钟
前提条件
- 已安装 Connectors 系统(Operator、Core 和 K8S 组件)的 Kubernetes 集群。有关安装这些组件的详细信息,请参阅安装指南。
- kubernetes 集群 apiserver 地址和具有列出 kubernetes pod 权限的 bearer token
- 基本的 Kubernetes 知识
流程概览
操作步骤
第 1 步:生成 ServiceAccount 令牌
为 k8s connector 生成 ServiceAccount 令牌以执行操作。
- 创建一个 ServiceAccount 并绑定一个 clusterrole,clusterrole 应包含满足您使用场景所需的权限,以便 k8s connector 执行操作。请参考创建 ServiceAccount 并绑定 clusterrole指南。
- 生成一个 ServiceAccount 令牌供 k8s connector 使用。请参考ServiceAccount 令牌指南。
第 2 步:创建 Namespace
为本次演示创建一个专用命名空间:
第 3 步:创建 K8S 凭据和 Connector
创建包含 k8s 凭据的 Secret 和 kubernetes connector 资源。有关创建和配置 connector 的详细信息,请参阅Connectors 快速开始指南。
验证 connector 是否处于 “Ready” 状态:
输出应显示:
第 4 步:创建 Job 执行 Kubectl 操作
创建一个使用 connector 执行 k8s 操作的 Job:
volumeAttributes 中的关键参数:
connector.name:您的 kubernetes connector 名称configuration.names:设置为 "kubeconfig",引用 kubernetes connectorClass 中定义的特定配置模板。该模板用于生成带有适当认证设置的 ".kubeconfig" 文件。
第 5 步:验证操作
查看 Job 的日志以确认 kubectl 操作成功执行:
您应能看到 kubectl 操作成功完成,并列出集群中所有 pod,且 Job 中无任何 secret 配置。
底层原理
kubernetes connector 的工作原理:
- 创建一个代理服务,位于您的工作负载与目标 k8s 集群之间
- 请求通过代理时注入认证信息
- 为客户端提供
kubeconfig文件,通过代理执行 kubectl 操作
为演示此机制,我们查看生成的 kubeconfig 文件:
查看生成的 kubeconfig 文件:
示例输出:
关键观察点
server字段与 Connector 中指定的 Kubernetes API 服务器地址一致- 额外的代理相关字段支持基于代理的认证,如
cluster.proxy-url和cluster.certificate-authority-data kubeconfig文件不包含原始 bearer token,通过 Connectors CSI Driver 挂载到 Pod
代理配置字段
-
cluster.proxy-url:来自名为k8s-connector的 connector 的status.proxy.httpAddress字段中的代理地址:输出示例:
cluster.proxy-url包含代理认证信息:- 用户名:格式为
<connector-namespace>/<connector-name>,即 connector 的命名空间和名称 - 密码:connector 自动生成的临时 ServiceAccount 令牌(30 分钟后过期)(非原始 k8s 集群令牌)
- 用户名:格式为
-
cluster.certificate-authority-data:代理服务器 TLS 验证所用的 CA 证书数据,客户端应信任代理服务器证书。
认证流程
inspect-k8s-access Pod 中不包含原始集群令牌。当 kubectl 向 Kubernetes API 服务器发起 HTTPS 请求时,代理服务器拦截请求,注入来自 k8s-connector 的认证凭据,并将认证后的请求转发至后端 API 服务器。
Kubeconfig 卷
kubeconfig 文件通过 Connectors CSI Driver 挂载到 Pod 中。
有关卷参数,请参阅 Kubernetes Connector Concepts 文档中的使用 Connectors CSI Driver 挂载 kubeconfig 文件。
故障排查
如果您的 kubectl 操作失败,请检查以下内容:
-
Connector 状态:确保 connector 处于 “Ready” 状态:
-
验证 connectors 部署状态:确保所有组件均已部署且处于 “Ready” 状态
延伸阅读
成功使用 kubernetes connector 执行 kubectl 操作后,您可以:
- 将 kubectl 命令更改为您需要的操作,如
kubectl create、kubectl apply - 了解更多关于 Kubernetes Connectors 概念
- 在 CI/CD 流水线中使用 Kubernetes Connectors