在其他 Kubernetes 发行版上安装
本页介绍了如何在 Google Kubernetes Engine (GKE) on Google Cloud以外的 Kubernetes 发行版(例如 GKE on AWS)上安装 Config Connector。
准备工作
在开始之前,请确保您已执行以下任务:
- 选择或创建 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 如果您使用的是 GKE 集群,我们建议您使用 Workload Identity Federation for 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。
文件夹
如需在特定文件夹中创建资源,请运行以下命令:
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 问题。