在其他 Kubernetes 发行版上安装


本页面介绍了如何在 Kubernetes 上安装 Config Connector Google Cloud 上的 Google Kubernetes Engine (GKE) 以外的 Google Cloud 运维套件 GKE on AWS

准备工作

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

安装配置连接器

如需在其他 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 上 同一集群中此方法可能会利用节点到集群级别提升漏洞,并通过此密钥来冒充 Google Cloud 服务账号。如果您使用的是 GKE 集群,我们建议您使用适用于 GKE 的工作负载身份联合

创建服务账号

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

  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 文件:

    gcloud storage 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
      stateIntoSpec: Absent
    

    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。

Folder

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

    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:

gcloud storage 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

后续步骤