安装政策控制器

本主题介绍如何安装政策控制器,这是一个 Kubernetes 准入控制器,可以检查、审核并强制您的集群遵守与安全性、法规或业务规则相关的政策。

准备工作

  • 您必须具有 Anthos 授权才能使用 Anthos Config Management 安装政策控制器。

  • 您需要一个已安装 Anthos Config Management 并且运行 GKE v1.14.x 或更高版本的集群。

使用 Anthos Config Management 安装政策控制器

请按照以下步骤配置 Anthos Config Management,以将政策控制器动态准入控制器安装到集群中。

默认情况下,政策控制器安装常见政策类型的限制条件模板库。要跳过安装限制条件模板,请在清单中取消以 templateLibraryInstalled 开头的行的注释。

  1. spec.policyController 对象中 enabled 的值设置为 Operator 配置文件中的 true

    # config-management.yaml
    
    apiVersion: configmanagement.gke.io/v1
    kind: ConfigManagement
    metadata:
      name: config-management
    spec:
      # Set to true to install and enable Policy Controller
      policyController:
        enabled: true
        # Uncomment to prevent the template library from being installed
        # templateLibraryInstalled: false
        # Uncomment to disable audit, adjust value to set audit interval
        # auditIntervalSeconds: 0
        # Uncomment to log all denies and dryrun failures
        # logDeniesEnabled: true
    
      # ...other fields...
    

    默认情况下,停用对参照限制条件的支持。启用它之前,请确保您了解关于最终一致性的注意事项

  2. 使用 kubectl apply 应用配置。

    kubectl apply -f config-management.yaml
    

Pod 创建完成,政策控制器开始检查并强制执行限制条件。

验证安装

如果正确安装了政策控制器,则其 Pod 将运行。Pod 在可用之前可能会重启几次。

kubectl get pods -n gatekeeper-system

输出示例:

NAME                              READY   STATUS    RESTARTS   AGE
gatekeeper-controller-manager-0   1/1     Running   1          53s

限制条件模板库是默认安装的。这可能需要几分钟才能完成。要验证是否已安装模板库,请列出所有 ConstraintTemplate 对象:

kubectl get constrainttemplates

输出示例:

NAME                                      AGE
k8sallowedrepos                           84s
k8scontainerlimits                        84s
k8spspallowprivilegeescalationcontainer   84s
...[OUTPUT TRUNCATED]...

正确安装单个限制条件模板后,其 status.created 字段为 true

政策控制器和 Anthos Config Management

运行政策控制器所必需的资源由 Config Management Operator 管理。为了避免在 Operator 和政策控制器之间发生争用,请注意将哪些内容放入 Anthos Config Management 代码库中。

一些需要关注的领域:

  • 除非禁用限制条件模板库,否则您将无法同步也是模板库一部分的限制条件模板。

  • 如果要同步存储在 gatekeeper-system 命名空间中的配置资源,则该命名空间必须在代码库中未定义,或者与 Operator 要安装的配置相匹配。

  • 如果从真实源代码库中删除了 gatekeeper-system 命名空间,则 Operator 可能无法恢复。要恢复,请删除政策控制器的验证 Webhook 配置

管理限制条件模板库

如需了解有关卸载或重新安装限制条件模板,它们的关联限制条件或限制条件模板库的信息,请参阅创建限制条件

命名空间免于强制执行

您可以配置政策控制器以忽略命名空间中的对象。如需了解详情,请参阅从政策控制器中排除命名空间

查看政策控制器版本

政策控制器是从 Gatekeeper 开源项目构建的。如需了解政策控制器正在使用的 Gatekeeper 版本,请查看映像标记:

kubectl get deployments -n gatekeeper-system gatekeeper-controller-manager \
  -o="jsonpath={.spec.template.spec.containers[0].image}"

从 Anthos Config Management 1.3.2 版及更高版本开始,用于构建 Gatekeeper 的 Git 标记(或哈希)以及 Anthos Config Management 版本号包含在映像标记中,如下所示:

.../gatekeeper:version-number-git-tag.gbuild-number

例如,对于以下映像:

gcr.io/config-management-release/gatekeeper:anthos1.3.2-480baac.g0
  • anthos1.3.2 是版本号。
  • 480baac 是 Git 标记。
  • 0 是内部版本号。

您还可以在发布版本表中查看所有 Anthos Config Management 版本及其对应的清单、安装和 nomos 二进制文件版本的列表。

卸载政策控制器

要卸载政策控制器,请config-management.yaml修改 Operator 配置,并将 policyController.enabled 设置为 false。Operator 移除 policycontroller.configmanagement.gke.io 终结器后,卸载完成。

如果要完全卸载 Anthos Config Management,请参阅从集群中卸载 Operator

后续步骤