在其他 Kubernetes 发行版上安装


本页面介绍如何在 Google Cloud 上的 Google Kubernetes Engine (GKE) 以外的 Kubernetes 发行版(例如 GKE on AWS)上安装 Config Connector。

准备工作

在开始之前,请确保您已执行以下任务:

安装配置连接器

如需在其他 Kubernetes 环境中安装 Config Connector,请在创建或指定 Kubernetes 集群后,创建一个 Identity and Access Management (IAM) 服务账号,然后在集群上安装 Config Connector 组件。

创建 ClusterRoleBinding

Config Connector 需要获得创建 Kubernetes 角色的权限才能创建资源。

通过运行以下命令来验证您是否可以创建角色:

kubectl auth can-i create roles

如果输出为 yes,请继续创建身份部分。

如果输出为 no,请在集群中创建 ClusterRoleBinding,这样您便可以创建角色:

kubectl create clusterrolebinding cluster-admin-binding \
    --clusterrole cluster-admin \
    --user ACCOUNT_EMAIL

ACCOUNT_EMAIL 替换为您用于登录 Cloud Billing 账号的电子邮件地址。

输出应包含短语 cluster-admin-binding created。如果没有显示该短语,请联系您的 Cloud Billing 账号管理员或 GKE 集群管理员以获取权限信息。

创建身份

Config Connector 需要 Cloud Identity 才能与其他资源通信。要设置身份,请创建 IAM 服务账号服务账号密钥。然后在运行 Config Connector 的每个集群中将密钥的凭据作为 Secret 导入。

在下一组说明中,您会将 Google Cloud 服务帐号凭据密钥导入 Kubernetes 集群中。将服务帐号凭据直接导入集群通常被视为不安全,尤其是在同一集群中运行第三方或自定义工作负载时。此方法可能利用节点到集群升级漏洞,并通过此密钥模拟 Google Cloud 服务帐号。如果您使用的是 GKE 集群,我们建议您使用 Workload Identity

创建服务账号

如需创建服务账号,请完成以下步骤:

  1. 创建 IAM 服务账号。 如果您原本有一个服务账号,则可以使用原有的账号,而不必新建服务账号。

    使用 gcloud CLI 运行以下命令来创建服务帐号:

     gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
    

    SERVICE_ACCOUNT_NAME 替换为您的服务账号的名称。

    如需详细了解如何创建服务账号,请参阅创建和管理服务账号

  2. 向 IAM 服务账号授予对项目的提升权限:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/owner"
    

    替换以下内容:

    • PROJECT_ID 替换为 Google Cloud 项目 ID。
    • SERVICE_ACCOUNT_NAME 替换为您的服务账号的名称。
  3. 创建服务账号密钥并将其凭据导出到文件 key.json 中:

    gcloud iam service-accounts keys create --iam-account \
        SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com key.json
    

    替换以下内容:

    • SERVICE_ACCOUNT_NAME 替换为您的服务账号的名称。
    • PROJECT_ID 替换为 Google Cloud 项目 ID。

将凭据应用到集群

如需将凭据应用于要运行 Config Connector 的集群,请完成以下步骤:

  1. 创建 cnrm-system 命名空间:

    kubectl create namespace cnrm-system
    
  2. 将密钥的凭据作为 Secret 导入。

    kubectl create secret generic SECRET_NAME \
        --from-file key.json \
        --namespace cnrm-system
    

    SECRET_NAME 替换为您要为 Secret 指定的名称。

  3. 从系统中移除凭据:

    rm key.json
    

安装 Config Connector Operator

要安装 Config Connector Operator,请完成以下步骤:

  1. 下载最新的 Config Connector tar 文件:

    gsutil cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
    
  2. 解压缩 tar 文件:

    tar zxvf release-bundle.tar.gz
    
  3. 在集群上安装 Config Connector Operator:

    kubectl apply -f operator-system/configconnector-operator.yaml
    

配置 Config Connector

要使用 Operator 配置 Config Connector,请为 ConfigConnector CustomResource 创建配置文件,然后使用 kubectl apply 命令应用该配置文件。

要使用 Operator 配置 Config Connector,请执行以下操作:

  1. 将以下 YAML 复制到名为 configconnector.yaml 的文件中:

    apiVersion: core.cnrm.cloud.google.com/v1beta1
    kind: ConfigConnector
    metadata:
      # the name is restricted to ensure that there is only ConfigConnector
      # instance installed in your cluster
      name: configconnector.core.cnrm.cloud.google.com
    spec:
     mode: cluster
     credentialSecretName: SECRET_NAME
    

    SECRET_NAME 替换为您之前创建的 Secret 的名称。

  2. 使用 kubectl apply 将配置应用到集群:

    kubectl apply -f configconnector.yaml
    

指定创建资源的位置

Config Connector 可以按项目、文件夹或组织整理资源,这与使用 Google Cloud 整理资源的方式相同。

在使用 Config Connector 创建资源之前,必须先配置创建资源的位置。为了确定创建资源的位置,Config Connector 会在资源配置或现有命名空间中使用注解。如需了解详情,请参阅整理资源

如果您没有可用于此目的的命名空间,请使用 kubectl 创建一个命名空间。
kubectl create namespace NAMESPACE

NAMESPACE 替换为您的命名空间名称。 例如 config-connector

选择一个标签页以便选择 Config Connector 创建资源的位置。

项目

如需在特定项目中创建资源,请运行以下命令:

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/project-id=PROJECT_ID

请替换以下内容:

  • NAMESPACE 替换为您的命名空间名称。
  • PROJECT_ID 替换为 Google Cloud 项目 ID。

文件夹

如需在特定文件夹中创建资源,请运行以下命令:

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/folder-id=FOLDER_ID

请替换以下内容:

  • NAMESPACE 替换为您的命名空间名称。
  • FOLDER_ID 替换为您的 Google Cloud 文件夹 ID。

组织

如需在特定组织中创建资源,请运行以下命令:

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/organization-id=ORGANIZATION_ID

请替换以下内容:

  • NAMESPACE 替换为您的命名空间名称。
  • ORGANIZATION_ID 替换为您的 Google Cloud 组织 ID。

为命名空间添加注释时,Config Connector 将在相应的项目、文件夹或组织中创建资源。如需详细了解 Config Connector 如何使用 Kubernetes 命名空间,请参阅 Kubernetes 命名空间和 Google Cloud 项目

验证安装

Config Connector 在命名空间 cnrm-system 中运行其所有组件。您可以通过运行以下命令来验证 Pod 是否准备就绪:

kubectl wait -n cnrm-system \
      --for=condition=Ready pod --all

如果正确安装了 Config Connector,则输出类似于以下内容:

pod/cnrm-controller-manager-0 condition met

升级 Config Connector

如需升级 Config Connector,请下载并安装最新版本的 Config Connector Operator:

gsutil cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
tar zxvf release-bundle.tar.gz
kubectl apply -f operator-system/configconnector-operator.yaml

卸载 Config Connector

使用 kubectl delete 移除 Config Connector CRD 和控制器组件:

kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \
    --wait=true

如需卸载 Config Connector Operator,请运行以下命令:

kubectl delete -f operator-system/configconnector-operator.yaml  --wait=true

后续步骤