特性开关

Connectors 使用特性开关来控制可选功能或逐步引入的能力。这些开关存储在由 ConnectorsCore 组件创建的 connectors-config ConfigMap 中。

本页面介绍当前为 ConnectorsCore 组件定义的特性开关。

特性开关的存储位置

ConnectorsCore 组件会在其安装所在的命名空间中创建一个 connectors-config ConfigMap。默认命名空间为 connectors-system

apiVersion: v1
kind: ConfigMap
metadata:
  name: connectors-config
  namespace: connectors-system # example namespace
data:
  enable-connector-apis-permissions: "false"
  enable-connector-proxy-permissions: "false"
  enable-connectors-approval: "false"
  enable-multi-connector: "false"
  enable-custom-ca-certs: "false"

所有值都是字符串布尔值("true""false")。由于这些开关存储在一个共享的 ConfigMap 中,因此它们适用于当前 Connectors 安装,而不是单个 Connector。

查看当前特性开关

你可以直接检查该 ConfigMap:

kubectl -n <connectors-namespace> get configmap connectors-config -o yaml

你也可以查询 Connectors Operator API:

curl -H "Authorization: Bearer ${K8S_TOKEN}" \
  "https://platform.example.com/clusters-rewrite/${CLUSTER_NAME}/connectors-operator/featureflags"

此 API 需要具备访问 ConnectorClass 的权限。有关端点详情,请参阅 Connector API

更新特性开关

特性开关通过 ConnectorsCore CR 的 spec.featureFlags 字段进行配置。operator 在协调过程中会将这些值合并到 connectors-config ConfigMap 中,其中 CR 中的值会覆盖 manifest 默认值。

通过 ConnectorsCore CR(推荐)

编辑 ConnectorsCore CR,以声明式方式设置特性开关:

kubectl edit connectorscore connectorscore
apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsCore
metadata:
  name: connectorscore
spec:
  featureFlags:
    enable-multi-connector: "true"
    enable-custom-ca-certs: "true"

或者使用 kubectl patch

kubectl patch connectorscore connectorscore --type merge \
  -p '{"spec":{"featureFlags":{"enable-multi-connector":"true"}}}'

spec.featureFlags 中声明的特性开关会覆盖 connectors-config 中的 manifest 默认值。未在 CR 中列出的键将保留其 manifest 默认值。当新版本引入额外的特性开关时,它们会自动以默认值显示。

注意:connectors-config ConfigMap 的直接修改(例如通过 kubectl edit configmap)会在下一次协调时被覆盖。请始终使用 ConnectorsCore CR 来配置特性开关。

内置特性开关

开关默认值描述
enable-connector-apis-permissions"false"为通过 Connectors API 暴露的工具 API 访问启用权限检查。
enable-connector-proxy-permissions"false"为通过 Connectors Proxy 处理的流量启用权限控制。
enable-connectors-approval"false"为对 Connectors Proxy 的受限访问启用 Connectors 审批工作流。应与 enable-connector-proxy-permissions 一起启用。
enable-multi-connector"false"启用在单个 CSI volume 中挂载并渲染多个 Connectors 的配置。
enable-custom-ca-certs"false"在验证到工具的 TLS 连接时,启用信任自定义 CA 证书(带全局标签的 Secrets 以及按 Connector 配置的 spec.caCertSecretRef)。

特性开关详情

enable-connector-apis-permissions

启用此开关后,系统会对通过 Connectors API 执行的访问应用基于 RBAC 的权限检查。这将读取 Connector 资源的权限与使用该 Connector 访问目标工具 API 的权限分离开来。

当你希望用户或工作负载可以发现 Connectors,但仍然控制他们是否能够对集成工具执行读或写操作时,此能力非常有用。

相关阅读:

enable-connector-proxy-permissions

启用此开关后,权限控制会应用于通过 Connectors Proxy 处理的请求。当工作负载或工具通过基于代理的无密连接访问外部系统时,这一点尤其相关。

当代理访问本身必须受平台权限治理时,请使用此开关。启用 enable-connectors-approval 时也必须启用此开关,因为审批功能会保护 Connectors Proxy 的使用。

相关阅读:

enable-connectors-approval

启用此开关后,Connectors 可以参与针对 Connectors Proxy 的审批门控访问工作流。此功能用于保护基于代理的 connector 使用,尤其适用于工作负载通过代理端点访问外部工具的场景。

请将 enable-connector-proxy-permissions 与此开关一起启用。没有代理权限控制,审批功能无法保护目标代理使用路径。

该功能适用于如下场景:生产制品晋级、部署到受保护的集群,或任何需要在授予访问权限前先进行审批的基于代理的 connector 使用环境。

相关阅读:

enable-multi-connector

启用此开关后,Connectors CSI Driver 可以在单个 volume 中挂载由多个 Connectors 渲染出的配置。这使得一个工作负载可以同时消费多个工具集成,并且 driver 会根据配置的 configuration.names 合并渲染结果。

这对于诸如 Tekton task 之类的工作流非常有用,例如需要一个 Connector 用于读取依赖项,另一个 Connector 用于发布制品。

相关阅读:

enable-custom-ca-certs

启用此开关后,平台在验证到工具的 TLS 连接时会信任额外的 CA 证书,而不会禁用证书验证。信任池会以叠加方式构成:

  1. 系统默认 CA 池 — 容器镜像中内置的 OS 级信任存储。
  2. 全局自定义 CA 证书 — 位于 connectors-system 命名空间中、并带有 connectors.cpaas.io/ca-cert: "true" 标签的 Secrets。
  3. 每个 Connector 的 CA 证书 — Connectorspec.caCertSecretRef.name 引用的可选 Secret,该 Secret 必须与该 Connector 位于同一命名空间中。

构建后的 CA 池会用于 controller 的存活和认证探针、Connectors Proxy 流量、ConnectorClass 可访问性检查,以及适用时的扩展代理(OCI、Harbor、Git HTTPS 等)。

启用该开关后,会在每个 Connector 上发布信息性 CACertReady condition,以反映按 Connector 加载 CA 的状态。该 condition 的 severity: Info,并且不会影响顶层的 Ready condition。

相关阅读:

后续步骤