Kubernetes Connector
Kubernetes Connector 是一个平台无关的连接器,您可以使用它连接到任何 Kubernetes 集群。
您可以使用 Kubernetes Connector 在 CICD 流水线中安全地执行 kubernetes 操作,或者在 kubernetes 工作负载中使用它以无凭据方式执行 kubernetes 操作。
此外,您还可以集中管理跨命名空间的 kubernetes 访问配置,避免在每个命名空间中重复配置 kubernetes 凭据。
目录
OverviewIntegration RequirementsCreating a simple Kubernetes connectorFields ReferenceCapabilities of Kubernetes ConnectorAuthentication使用基于 Bearer Token 的认证Token 所需权限Token 生成Proxy and Kubeconfig ConfigurationProxy Addresskubeconfig 配置文件使用 Connectors CSI Driver 挂载 kubeconfig 文件Further ReadingReferencesOverview
本文档涵盖:
- Integration Requirements:目标 Kubernetes 集群的先决条件
- Creating Kubernetes connector
- Advanced Features:关于 Kubernetes Connector 的代理功能和配置功能
Integration Requirements
目标 Kubernetes 集群必须满足以下先决条件:
- CNCF Certification:集群必须符合 CNCF Certified Kubernetes 标准
Creating a simple Kubernetes connector
以下是创建基础 Kubernetes Connector 的方法:
Fields Reference
spec.connectorClassName:
k8s(固定值),指定 Kubernetes 集成的 ConnectorClass 名称。
spec.address:
目标 Kubernetes 集群 API 服务器端点,例如:https://192.168.1.100:6443。
也支持带路径的 URL,例如:https://192.168.1.100:6443/kubernetes/global,当 Kubernetes 集群 API 服务器通过代理暴露时非常有用。
spec.auth:
指定 Kubernetes 集群的认证方式。
-
spec.auth.name:Kubernetes Connector 应为bearerTokenAuth。 -
spec.auth.secretRef:指定包含 Kubernetes 集群认证信息的 Secret,该 Secret 应创建在与 Connector 相同的命名空间中。
有关认证的更多信息,请参见 Authentication。
可选元数据字段:
-
cpaas.io/description:Kubernetes Connector 的描述信息,例如:
Capabilities of Kubernetes Connector
Authentication
Kubernetes Connector 支持以下认证类型:
bearerTokenAuth:基于 Bearer Token 的认证,对应的 Secret 类型为:connectors.cpaas.io/bearer-token
使用基于 Bearer Token 的认证
如果 Secret 不正确,kubernetes connector 中的 status.conditions 字段会显示错误信息。
有关完整状态信息,请参见 Connector Status Documentation。
Token 所需权限
配置的 Token 所需权限取决于您计划如何在 Pods/Pipelines 中使用它。
例如:
- 如果您需要使用此 Connector 创建工作负载(Deployments、Jobs 等),则 Token 必须具有目标集群中对应资源的
create权限。 - 如果您仅需读取集群信息,则 Token 只需对相关资源具有
get和list权限。
出于安全最佳实践,建议创建权限最小化的 Token。当需要额外权限时,建议创建权限更高的独立 Connector,并通过命名空间隔离控制用户访问。
Token 生成
Bearer Token 通常由目标 Kubernetes 集群中的 ServiceAccount 生成。您可以创建具有适当 RBAC 权限的 ServiceAccount 并使用其 Token。有关 ServiceAccount Token 和 RBAC 配置的详细信息,请参见 Kubernetes Authentication documentation。
如果您使用 Alauda Container Platform 提供的 API 端点访问集群(例如 https://platform.example.com/kubernetes/global),则必须配置 ACP 平台令牌,而非直接从 Kubernetes 集群生成的 Token。有关平台令牌的信息,请参见 Alauda Container Platform API 文档。
Proxy and Kubeconfig Configuration
为了让客户端能够无凭据访问 kubernetes 资源,Kubernetes Connector 提供了一个代理服务器,用于自动注入认证信息。
客户端可以使用该代理服务器访问 kubernetes 资源,无需在客户端配置凭据。
为简化使用,Kubernetes ConnectorClass 提供了可通过 CSI 挂载到 Pod 的 kubeconfig 文件。在 Pod 中执行 kubernetes 操作时,代理服务可自动注入认证信息。
Proxy Address
Connector 创建后,系统会自动为目标集群配置一个代理服务。
代理端点记录在 status.proxy.httpAddress 中:
例如:
kubeconfig 配置文件
Kubernetes Connector 提供以下配置:
kubeconfig:
- 提供一个
kubeconfig配置文件,结合 connector-csi-driver,该配置文件将被挂载到 Pod 中,使 Pod 通过代理访问 Kubernetes 集群,无需在客户端配置凭据。
Pod 中生成的配置文件示例:
关键字段:
server:目标 Kubernetes API 服务器端点proxy-url:带有嵌入式代理认证的 Connector 代理地址certificate-authority-data:用于 TLS 校验的代理服务器证书
有关代理机制的详细说明,请参见快速入门指南中的 How It Works。
使用 Connectors CSI Driver 挂载 kubeconfig 文件
Kubernetes Connector 提供的 kubeconfig 配置文件可以通过 Connector CSI Driver 挂载到 Pod。
示例:
参数说明:
csi.readOnly:固定值truecsi.driver:Connector CSI Driver,固定为connectors-csicsi.volumeAttributes:CSI 卷属性connector.name:Kubernetes Connector 名称connector.namespace:Kubernetes Connector 所在命名空间;若未指定,则使用 Pod 的命名空间configuration.names:配置名称,由 Kubernetes Connector 提供。如上示例,支持kubeconfig
关于如何在 Pod 中通过 connectors-csi-driver 使用 kubeconfig 文件的详细信息,请参见 Using Kubernetes Connectors in kubernetes jobs