在其他 Kubernetes 发行版上安装
本页面介绍了如何在 Kubernetes 上安装 Config Connector Google Cloud 上的 Google Kubernetes Engine (GKE) 以外的 Google Cloud 运维套件 GKE on AWS。
准备工作
在开始之前,请确保您已执行以下任务:
- 选择或创建 Google Cloud 项目以安装 Config Connector。
- 确保您拥有为项目创建和下载服务账号的权限。
- 创建或指定尚未安装 Config Connector 的 Kubernetes 集群。
安装配置连接器
如需在其他 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 的工作负载身份联合。
创建服务账号
如需创建服务账号,请完成以下步骤:
创建 IAM 服务账号。 如果您原本有一个服务账号,则可以使用原有的账号,而不必新建服务账号。
通过运行以下命令,使用 gcloud CLI 创建服务账号:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
将
SERVICE_ACCOUNT_NAME
替换为您的服务账号的名称。如需详细了解如何创建服务账号,请参阅创建和管理服务账号。
向 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
替换为您的服务账号的名称。
- 将
创建服务账号密钥并将其凭据导出到文件
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 的集群,请完成以下步骤:
创建
cnrm-system
命名空间:kubectl create namespace cnrm-system
将密钥的凭据作为 Secret 导入。
kubectl create secret generic SECRET_NAME \ --from-file key.json \ --namespace cnrm-system
将 SECRET_NAME 替换为您要为 Secret 指定的名称。
从系统中移除凭据:
rm key.json
安装 Config Connector Operator
要安装 Config Connector Operator,请完成以下步骤:
下载最新的 Config Connector tar 文件:
gcloud storage cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
解压缩 tar 文件:
tar zxvf release-bundle.tar.gz
在集群上安装 Config Connector Operator:
kubectl apply -f operator-system/configconnector-operator.yaml
配置 Config Connector
要使用 Operator 配置 Config Connector,请为 ConfigConnector
CustomResource 创建配置文件,然后使用 kubectl apply
命令应用该配置文件。
要使用 Operator 配置 Config Connector,请执行以下操作:
将以下 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 的名称。
使用
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
后续步骤
- 详细了解如何选择安装类型。
- 了解如何对 Config Connector 进行问题排查。