5.3. 为 Azure 手动创建 IAM
在无法访问云身份和访问管理(IAM)API 的环境中,或者管理员更不希望将管理员级别的凭证 secret 存储在集群 kube-system
命名空间中时,可以在安装前将 Cloud Credential Operator(CCO)放入手动模式。
5.3.1. 在 kube-system 项目中存储管理员级别的 secret 的替代方案
Cloud Credential Operator(CCO) 将云供应商凭证作为 Kubernetes 自定义资源定义 (CRD) 进行管理。您可以通过在 install-config.yaml
文件中为 credentialsMode
参数设置不同的值,来配置 CCO 来满足机构的安全要求。
如果您不希望在集群 kube-system
项目中存储管理员级别的凭证 secret,您可以在安装 OpenShift Container Platform 时把 CCO 的 credentialsMode
参数设置为 Manual
,并手动管理您的云凭证。
使用手动模式可允许每个集群组件只拥有所需的权限,而无需在集群中存储管理员级别的凭证。如果您的环境没有连接到云供应商公共 IAM 端点,您还可以使用此模式。但是,每次升级都必须手动将权限与新发行镜像协调。您还必须手动为每个请求它们的组件提供凭证。
其他资源
- 有关所有可用 CCO 凭证模式及其支持的平台的详细信息,请参阅关于 Cloud Credential Operator。
5.3.2. 手动创建 IAM
在无法访问云身份和访问管理(IAM)API 的环境中,或者管理员更不希望将管理员级别的凭证 secret 存储在集群 kube-system
命名空间中时,可以在安装前将 Cloud Credential Operator(CCO)放入手动模式。
流程
切换到包含安装程序的目录并创建
install-config.yaml
文件:$ openshift-install create install-config --dir <installation_directory>
其中
<installation_directory>
是安装程序在其中创建文件的目录。编辑
install-config.yaml
配置文件,把其中的credentialsMode
参数设置为Manual
。示例
install-config.yaml
配置文件apiVersion: v1 baseDomain: cluster1.example.com credentialsMode: Manual 1 compute: - architecture: amd64 hyperthreading: Enabled ...
- 1
- 添加这一行将
credentialsMode
参数设置为Manual
。
要生成清单,请在包含安装程序的目录中运行以下命令:
$ openshift-install create manifests --dir <installation_directory>
从包含安装程序的目录中,获取
openshift-install
二进制文件要使用的 OpenShift Container Platform 发行镜像详情:$ openshift-install version
输出示例
release image quay.io/openshift-release-dev/ocp-release:4.y.z-x86_64
针对您要部署到的云,找到此发行版本镜像中的所有
CredentialsRequests
对象:$ oc adm release extract quay.io/openshift-release-dev/ocp-release:4.y.z-x86_64 --credentials-requests --cloud=azure
此命令为每个
CredentialsRequest
对象创建一个 YAML 文件。CredentialsRequest
对象示例apiVersion: cloudcredential.openshift.io/v1 kind: CredentialsRequest metadata: labels: controller-tools.k8s.io: "1.0" name: openshift-image-registry-azure namespace: openshift-cloud-credential-operator spec: secretRef: name: installer-cloud-credentials namespace: openshift-image-registry providerSpec: apiVersion: cloudcredential.openshift.io/v1 kind: AzureProviderSpec roleBindings: - role: Contributor
-
在之前生成的
openshift-install
清单目录中为 secret 创建 YAML 文件。secret 必须使用在spec.secretRef
中为每个credentialsRequest
定义的命名空间和 secret 名称存储 。secret 数据的格式因云供应商而异。 从包含安装程序的目录中,开始创建集群:
$ openshift-install create cluster --dir <installation_directory>
重要在升级使用手动维护凭证的集群前,必须确保 CCO 处于可升级状态。详情请参阅您的云供应商的安装内容"使用手动维护凭证对集群进行升级"部分。
5.3.3. 使用手动维护的凭证升级集群
默认情况下,带有手动维护凭证的集群的 Cloud Credential Operator (CCO) Ugradable
状态为 False
。
-
对于次发行版本(例如从 4.7 升级到 4.8),这个状态会阻止升级,直到您解决了任何更新的权限并注解
CloudCredential
资源,以指示下一版本根据需要更新权限。此注解将Upgradable
状态更改为True
。 - 对于 z-stream 版本(例如从 4.8.9 到 4.8.10),不会添加或更改任何权限,因此不会阻止升级。
在使用手动维护凭证升级集群前,您必须为要升级到的发行镜像创建新凭证。另外,您必须检查现有凭证所需的权限,并满足新版本中这些组件的任何新权限要求。
流程
提取并检查新版本的
CredentialsRequest
自定义资源。云供应商安装内容的"手动创建 IAM"部分解释了如何获取和使用您的云所需的凭证。
更新集群中手动维护的凭证:
-
为新发行镜像添加的任何
CredentialsRequest
自定义资源创建新 secret。 -
如果存储在 secret 中的任何现有凭证的
CredentialsRequest
自定义资源更改了其权限要求,请根据需要更新权限。
-
为新发行镜像添加的任何
当所有 secret 对于新发行版本都正确时,表示集群已准备好升级:
-
以具有
cluster-admin
角色的用户身份登录到 OpenShift Container Platform CLI。 编辑
CloudCredential
资源,以在metadata
字段中添加upgradeable-to
注解:$ oc edit cloudcredential cluster
要添加的文本
... metadata: annotations: cloudcredential.openshift.io/upgradeable-to: <version_number> ...
其中
<version_number>
是您要升级到的版本,格式为x.y.z
。例如,OpenShift Container Platform4.8.2
代表 OpenShift Container Platform 4.8.2。添加可升级状态进行更改的注解后,可能需要几分钟时间。
-
以具有
验证 CCO 是否可升级:
-
在 Web 控制台的 Administrator 视角中,导航至 Administration
Cluster Settings。 - 要查看 CCO 状态详情,请点 Cluster Operators 列表中的 cloud-credential。
-
如果 Conditions 部分中的 Upgradeable 状态为 False,请验证
upgradeable-to
注解没有拼写错误。
-
在 Web 控制台的 Administrator 视角中,导航至 Administration
当 Conditions 部分中的 Upgradeable 状态为 True 时,您可以开始 OpenShift Container Platform 升级。
5.3.4. 后续步骤
安装 OpenShift Container Platform 集群:
- 使用安装程序置备的基础架构默认选项在 Azure 上快速安装集群
- 在安装程序置备的基础架构中使用云自定义安装集群
- 使用网络自定义在安装程序置备的基础架构上安装集群