以非 root 用户运行 TiDB Operator 和 TiDB 集群

在某些 Kubernetes 环境中,无法用 root 用户运行容器。你可以通过配置 securityContext 来以非 root 用户运行容器。

配置 TiDB Operator 相关的容器

对于 TiDB Operator 相关的容器,你可以在 helm 的 values.yaml 文件中配置安全上下文 (security context) 。所有 operator 的相关组件都支持该配置 (<controllerManager/scheduler/advancedStatefulset/admissionWebhook>.securityContext)。

以下是一个配置示例:

  1. controllerManager:
  2. securityContext:
  3. runAsUser: 1000
  4. runAsGroup: 2000
  5. fsGroup: 2000

配置按照 CR 生成的容器

对于按照 CR 生成的容器,你同样可以在任意一种 CR (TidbCluster/DMCluster/TiInitializer/TiMonitor/Backup/BackupSchedule/Restore) 中配置安全上下文 (security context) 。

podSecurityContext 可以配置在集群级别 (spec.podSecurityContext) 对所有组件生效或者配置在组件级别 (例如,配置 TidbCluster 的 spec.tidb.podSecurityContext,配置 DMCluster 的 spec.master.podSecurityContext) 仅对该组件生效。

以下是一个集群级别的配置示例:

  1. spec:
  2. podSecurityContext:
  3. runAsUser: 1000
  4. runAsGroup: 2000
  5. fsGroup: 2000

以下是一个组件级别的配置示例:

  1. spec:
  2. pd:
  3. podSecurityContext:
  4. runAsUser: 1000
  5. runAsGroup: 2000
  6. fsGroup: 2000
  7. tidb:
  8. podSecurityContext:
  9. runAsUser: 1000
  10. runAsGroup: 2000
  11. fsGroup: 2000

如果同时配置了集群级别和组件级别,则该组件以组件级别的配置为准。