1.11. 集群 API
集群 API 提供声明 API,以简化 Kubernetes 集群的置备、升级和管理。多集群引擎 operator 安装核心 Cluster API 组件以及多个基础架构和 bootstrap 供应商,以支持不同的用例和平台。了解如何在独立多集群引擎 operator 或 Red Hat Advanced Cluster Management 中使用 Cluster API。请参见以下进程:
1.11.1. 使用 Cluster API 安装受管集群 复制链接链接已复制到粘贴板!
您可以使用 metal3 基础架构供应商和 OpenShift Container Platform 支持的 bootstrap 和 control plane 供应商使用 Cluster API 安装 OpenShift Container Platform 受管集群。
-
ControlPlane资源定义 control plane 属性。 -
ClusterInfrastructure定义集群级别的基础架构详情。
先决条件
-
您需要 Red Hat Advanced Cluster Management 安装中的
MultiClusterEngine资源,或 multicluster engine operator 独立安装。 -
以下 API 基域必须指向静态 API VIP:
api.<cluster_name>.<base_domain>。 -
以下应用程序基域必须指向 Ingress VIP 的静态 IP 地址:.<
apps.<cluster_name>.<base_domain>。 -
您需要集群的内部 API 端点:
api-int.<baseDomain>。
1.11.1.1. 使用 Cluster API 置备工作负载 复制链接链接已复制到粘贴板!
启用置备工作负载所需的服务。默认情况下启用
assisted-service。默认情况下,禁用cluster-api-provider-metal3和cluster-api-provider-openshift-assisted。确保启用了所有三个服务: true。运行以下命令编辑资源:oc edit multiclusterengines.multicluster.openshift.io -n multicluster-engine在
assisted-service组件、cluster-api-provider-metal3组件和cluster-api-provider-openshift-assisted组件的.spec.overrides中设置enabled: true。请参阅以下configOverrides值:- configOverrides: {} enabled: true name: assisted-service - configOverrides: {} enabled: true name: cluster-api ... - configOverrides: {} enabled: true name: cluster-api-provider-metal3 - configOverrides: {} enabled: true name: cluster-api-provider-openshift-assisted- 启用中央基础架构管理服务。请参阅启用中央基础架构管理服务。
使用
clusterNetwork规格、controlPlaneRef规格和infrastructureRef规格配置集群资源。请参阅以下集群资源:apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: name: <cluster-name> namespace: <cluster-namespace> spec: clusterNetwork: pods: cidrBlocks: - 172.18.0.0/20 services: cidrBlocks: - 10.96.0.0/12 controlPlaneRef:1 apiVersion: controlplane.cluster.x-k8s.io/v1alpha2 kind: OpenshiftAssistedControlPlane name: <cluster-name> namespace: <cluster-namespace> infrastructureRef:2 apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: Metal3Cluster name: <cluster-name> namespace: <cluster-namespace>运行以下命令来应用 YAML 内容:
oc apply -f <filename>.yaml配置
OpenshiftAssistedControlPlane资源,其中包含distributionVersion、apiVIP和 SSH 密钥。在distributionVersion字段中指定 OpenShift Container Platform 版本。注:
distributionVersion的值与 OpenShift Container Platform Releases 中的镜像匹配。请参阅以下 YAML 资源:apiVersion: controlplane.cluster.x-k8s.io/v1alpha2 kind: OpenshiftAssistedControlPlane metadata: name: <cluster-name> namespace: <cluster-namespace> annotations: {} spec:1 openshiftAssistedConfigSpec: sshAuthorizedKey: "{{ ssh_authorized_key }}" nodeRegistration: kubeletExtraLabels: - 'metal3.io/uuid="${METADATA_UUID}"' distributionVersion: <4.x.0> config: apiVIPs: - 192.168.222.40 ingressVIPs: - 192.168.222.41 baseDomain: lab.home pullSecretRef: name: "pull-secret" sshAuthorizedKey: "{{ ssh_authorized_key }}"2 machineTemplate: infrastructureRef: apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: Metal3MachineTemplate name: <cluster-name-control-plane> namespace: <cluster-namespace> replicas: 3应用 YAML 文件。运行以下命令:
oc apply -f <filename>.yaml- 如果没有 pull secret,则需要创建一个 pull secret,以便集群从容器 registry 中拉取镜像。完成以下步骤以创建 pull secret:
创建 YAML 文件以拉取镜像。请参阅以下名为
pull-secret.yaml的文件示例:apiVersion: v1 kind: Secret metadata:1 name: pull-secret namespace: <cluster-namespace> data:2 .dockerconfigjson: <encoded_docker_configuration> type: kubernetes.io/dockerconfigjson运行以下命令以应用该文件:
oc apply -f pull-secret.yaml配置
Metal3Cluster基础架构资源,其中包含与 baremetal 上部署集群相关的信息。apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: Metal3Cluster metadata: name: <cluster-name> namespace: <cluster-namespace> spec: controlPlaneEndpoint: host: <cluster-name>.lab.home1 port: 6443 noCloudProvider: true- 1
主机是带有Cluster资源的 clusterName 的 <gt;.<baseDomain>* 值,clusterName&baseDomain在OpenshiftAssistedControlPlane资源中定义。
应用该文件。运行以下命令:
oc apply -f <filename>.yaml为从
OpenshiftAssistedControlPlane资源引用的 control plane 节点配置Metal3MachineTemplate资源。请参见以下 YAML 示例:apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: Metal3MachineTemplate metadata: name: <cluster-name> namespace: <cluster-namespace> spec: nodeReuse: false template: spec: automatedCleaningMode: disabled dataTemplate: name: <cluster-name-template> image:1 checksum: https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.19/4.19.0/sha256sum.txt checksumType: sha256 url: https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.19/4.19.0/rhcos-4.19.0-x86_64-nutanix.x86_64.qcow2 format: qcow2 --- apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: Metal3DataTemplate metadata: name: <cluster-name-template> namespace: <cluster-namespace> spec: clusterName: <cluster-name>2 - 1
- 镜像与 OpenShift Container Platform Releases 中的
distributionVersion值和版本匹配。 - 2
- 将
clusterName设置为在Cluster资源中相同的值
应用该文件。运行以下命令:
oc apply -f <filename>.yaml使用
MachineDeployment资源配置 worker 节点,该资源引用Metal3MachineTemplate。请参阅以下 YAML 示例:apiVersion: cluster.x-k8s.io/v1beta1 kind: MachineDeployment metadata: name: <cluster-name-worker> namespace: <cluster-namespace> labels: cluster.x-k8s.io/cluster-name: <cluster-name> spec: clusterName: <cluster-name> replicas: 2 selector: matchLabels: cluster.x-k8s.io/cluster-name: <cluster-name> template: metadata: labels: cluster.x-k8s.io/cluster-name: <cluster-name> spec: clusterName: <cluster-name> bootstrap:1 configRef: name: <cluster-name-worker> apiVersion: bootstrap.cluster.x-k8s.io/v1alpha1 kind: OpenshiftAssistedConfigTemplate infrastructureRef:2 name: <cluster-name-workers-2> apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3 kind: Metal3MachineTemplate应用该文件。运行以下命令:
oc apply -f <filename>.yaml创建
MachineDeployment中引用的OpenshiftAssistedConfigTemplate资源。以下 YAML 为 worker 节点定义 bootstrap 配置,用于使用 Assisted Installer 注册节点:apiVersion: bootstrap.cluster.x-k8s.io/v1alpha1 kind: OpenshiftAssistedConfigTemplate metadata: name: <cluster-name-worker> namespace: <cluster-namespace> labels: cluster.x-k8s.io/cluster-name: cluster-name spec: template: spec: nodeRegistration: kubeletExtraLabels: - 'metal3.io/uuid="${METADATA_UUID}"'1 sshAuthorizedKey: "{{ ssh_authorized_key }}"2 创建
MachineDeployment资源中引用的Metal3MachineTemplate。请参见以下示例:apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: Metal3MachineTemplate metadata: name: <cluster-name-workers-2> namespace: <cluster-namespace> spec: nodeReuse: false template: spec: automatedCleaningMode: metadata dataTemplate: name: <cluster-name-workers-template> image: checksum: https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.19/4.19.0/sha256sum.txt checksumType: sha256 url: https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.19/4.19.0/rhcos-4.19.0-x86_64-nutanix.x86_64.qcow2 format: qcow2 --- apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: Metal3DataTemplate metadata: name: <cluster-name-workers-template> namespace: <cluster-namespace> spec: clusterName: <cluster-name>运行以下命令来保存 YAML 文件并置备集群:
oc apply -f <filename>.yaml验证集群置备状态。
运行
oc get cluster --namespace <cluster-namespace> <cluster-name> -o yaml以检查您的集群资源状态。请参见以下输出和状态:
status: conditions: - lastTransitionTime: "2025-06-25T11:23:38Z" status: "True" type: Ready - lastTransitionTime: "2025-06-25T11:23:38Z" status: "True" type: ControlPlaneReady - lastTransitionTime: "2025-06-25T10:37:03Z" status: "True" type: InfrastructureReady运行
oc get metal3cluster --namespace <cluster-namespace> <cluster-name> -o yaml命令检查集群基础架构状态。请参见以下输出和状态:
status: conditions: - lastTransitionTime: "2025-06-25T10:37:03Z" status: "True" type: Ready - lastTransitionTime: "2025-06-25T10:37:03Z" status: "True" type: BaremetalInfrastructureReady运行
oc get openshiftassistedcontrolplane --namespace <cluster-namespace> <cluster-name> -o yaml命令检查 control plane 状态。请参见以下输出和状态:
status: conditions: - lastTransitionTime: "2025-06-25T11:23:38Z" status: "True" type: Ready - lastTransitionTime: "2025-06-25T11:23:38Z" status: "True" type: ControlPlaneReady - lastTransitionTime: "2025-06-25T10:45:48Z" status: "True" type: KubeconfigAvailable - lastTransitionTime: "2025-06-25T10:38:25Z" status: "True" type: MachinesCreated - lastTransitionTime: "2025-06-25T11:10:54Z" status: "True" type: MachinesReady - lastTransitionTime: "2025-06-25T11:23:38Z" status: "True" type: UpgradeCompleted运行
oc get machinedeployment --namespace <cluster-namespace> <cluster-name> -o yaml命令检查机器部署状态。请参见以下输出和状态:
status: conditions: - lastTransitionTime: "2025-06-25T11:10:29Z" status: "True" type: Ready - lastTransitionTime: "2025-06-25T11:10:29Z" status: "True" type: Available - lastTransitionTime: "2025-06-25T11:10:29Z" status: "True" type: MachineSetReady运行
kubectl get machine -l cluster.x-k8s.io/cluster-name=cluster-name -n test-capi -o yaml命令检查您的机器。请参见以下输出和状态:
status: conditions: - lastTransitionTime: "2025-06-25T11:09:57Z" status: "True" type: Ready - lastTransitionTime: "2025-06-25T10:38:20Z" status: "True" type: BootstrapReady - lastTransitionTime: "2025-06-25T11:09:57Z" status: "True" type: InfrastructureReady - lastTransitionTime: "2025-06-25T11:10:29Z" status: "True" type: NodeHealthy访问集群。
运行以下命令来获取
kubeconfig文件:oc get secret -n test-capi cluster-name-admin-kubeconfig -o json | jq -r .data.kubeconfig | base64 --decode > kubeconfig-
运行以下命令使用
kubeconfig文件来访问集群:
export KUBECONFIG=$(realpath kubeconfig) oc get nodes
1.11.2. 为 Cluster API 集群启用自动导入(技术预览) 复制链接链接已复制到粘贴板!
您可以通过自动导入使用 Cluster API 置备的集群来节省时间。
需要的访问权限:集群管理员
先决条件
-
您需要 Red Hat Advanced Cluster Management 安装中的
MultiClusterEngine资源,或 multicluster engine operator 独立安装。
1.11.2.1. 准备您的 hub 集群 复制链接链接已复制到粘贴板!
在使用 Cluster API 自动导入置备的集群前,您必须完成以下步骤:
通过添加以下 YAML 文件示例,在
ClusterManager资源中启用ClusterImporter功能门:apiVersion: operator.open-cluster-management.io/v1 kind: ClusterManager metadata: name: cluster-manager spec: registrationConfiguration: featureGates: - feature: ClusterImporter mode: Enable通过将
clusterImportConfig设置为true,将导入控制器配置为创建集群导入配置 secret。ConfigMap资源可能类似以下 YAML 文件示例:apiVersion: v1 kind: ConfigMap metadata: name: import-controller-config namespace: multicluster-engine data: clusterImportConfig: "true"如果您还没有
ConfigMap资源,请运行以下命令来应用更改。将<filename> 替换为您的文件名:oc apply -f <filename>.yaml-
如果您已经有一个
ConfigMap资源,请运行以下命令来应用更改:
oc patch configmap import-controller-config -n multicluster-engine --type merge -p '{"data":{"clusterImportConfig":"true"}}'将 Cluster API Manager 权限绑定到导入控制器服务帐户。添加以下 YAML 文件示例:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: cluster-manager-registration-capi roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: capi-manager-role subjects: - kind: ServiceAccount name: registration-controller-sa namespace: open-cluster-management-hub运行以下命令以应用更改。将
<filename> 替换为您的文件名:oc apply -f <filename>.yaml
1.11.2.2. 创建 ManagedCluster 资源 复制链接链接已复制到粘贴板!
要启用自动导入,创建一个带有与 Cluster API 集群相同的名称和命名空间的 ManagedCluster 资源。完成以下步骤:
通过添加以下 YAML 示例来创建
ManagedCluster资源。将 Cluster API 集群的名称添加到name参数中:apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: <clusterapi_cluster_name> spec: hubAcceptsClient: true运行以下命令以应用更改。将
<filename> 替换为您的文件名:oc apply -f <filename>.yaml
1.11.3. 在受管集群中将 AWS 凭证切换到 IAM 角色(技术预览) 复制链接链接已复制到粘贴板!
在使用 Cluster API 部署受管集群时,您可以使用 Identity and Access Management (IAM)角色切换到使用 Cluster API 角色。如果您使用 Amazon Web Services (AWS)凭证创建了受管集群,您可以从 AWS 凭证切换到 IAM 角色,以使用 cluster-api-provider-aws 创建带有托管 control plane 集群的 Red Hat OpenShift Service on AWS,而无需在受管集群中存储 AWS 凭证。
需要的访问权限:集群管理员
先决条件
- 您需要一个使用 AWS 凭证创建的带有托管 control plane bootstrap 集群的 Red Hat OpenShift Container Platform 或 Red Hat OpenShift Service on AWS。您可以使用临时凭证。请参阅 AWS 文档中的 请求临时安全凭证 以了解更多信息。
- 您需要在 bootstrap 集群上安装 Red Hat Advanced Cluster Management for Kubernetes。
- 在启用 Cluster API 和 Cluster API Provider AWS 前,您需要禁用 HyperShift 组件。
流程
完成以下步骤:
编辑
MultiClusterEngine资源。运行以下命令:oc edit multiclusterengine engine禁用
hypershift和hypershift-local-hosting组件,并启用cluster-api和cluster-api-provider-aws组件。请参见以下示例:- configOverrides: {} enabled: false name: hypershift - configOverrides: {} enabled: false name: hypershift-local-hosting - configOverrides: {} enabled: true name: cluster-api - configOverrides: {} enabled: true name: cluster-api-provider-aws验证 Cluster API 和 Cluster API Provider AWS 部署是否正在运行。运行以下命令:
oc get deploy -n multicluster-engine输出可能类似以下示例:
NAME READY UP-TO-DATE AVAILABLE AGE capa-controller-manager 1/1 1 1 12d capi-controller-manager 1/1 1 1 12d暂停
MultiClusterEngine自定义资源,以便 Cluster API Provider AWS 控制器服务帐户可以更新。运行以下命令:oc annotate mce multiclusterengine installer.multicluster.openshift.io/pause=true检索 OpenID Connect (OIDC)供应商详情。运行以下命令:
export OIDC_PROVIDER=$(oc get authentication.config.openshift.io cluster -ojson | jq -r .spec.serviceAccountIssuer | sed 's/https:\/\///')设置 AWS 帐户 ID。运行以下命令。更改帐户 ID 值:
export AWS_ACCOUNT_ID={YOUR_AWS_ACCOUNT_ID}为
capa-controller-managerIAM 角色创建信任策略文件。运行以下命令:cat ./trust.json通过在文件中添加以下内容,定义允许谁假定关联的 IAM 角色:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::${AWS_ACCOUNT_ID}:oidc-provider/${OIDC_PROVIDER}" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "${OIDC_PROVIDER}:sub": "system:serviceaccount:multicluster-engine:capa-controller-manager" } } } ] }创建 IAM 角色并附加所需的 AWS 策略。运行以下命令:
aws iam create-role --role-name "capa-manager-role" --assume-role-policy-document file://trust.json --description "IAM role for CAPA to assume" aws iam attach-role-policy --role-name capa-manager-role --policy-arn arn:aws:iam::aws:policy/AWSCloudFormationFullAccess aws iam attach-role-policy --role-name capa-manager-role --policy-arn arn:aws:iam::aws:policy/AmazonVPCFullAccess检索 IAM 角色 Amazon Resource Name (ARN)。运行以下命令:
export APP_IAM_ROLE_ARN=$(aws iam get-role --role-name=capa-manager-role --query Role.Arn --output text) export IRSA_ROLE_ARN=eks.amazonaws.com/role-arn=$APP_IAM_ROLE_ARN使用 IAM 角色 ARN 注解服务帐户。运行以下命令:
oc annotate serviceaccount -n multicluster-engine capa-controller-manager $IRSA_ROLE_ARN重启 Cluster API Provider AWS 部署。运行以下命令:
oc rollout restart deployment capa-controller-manager -n multicluster-engine
带有托管 control plane 集群的 Red Hat OpenShift Service on AWS 是一个部署模型,其中集群 control plane 在 Red Hat Amazon Web Services (AWS)帐户中托管并管理。完成以下主题中的步骤,使用 Cluster API 在带有托管 control plane 集群的 AWS 上创建 Red Hat OpenShift Service。
需要的访问权限:集群管理员
先决条件
- 您需要 AWS 访问密钥。如需更多信息,请参阅 AWS 文档中的管理 IAM 用户的 访问密钥。
- AWS Red Hat OpenShift Service on AWS 管理的策略附加到 AWS 用户权限。请参阅 AWS 文档中的 ROSA 的 AWS 管理策略 以了解更多信息。
-
您需要 OpenShift CLI (
oc)。请参阅 OpenShift Container Platform 文档中的 OpenShift CLI (oc) 以了解更多信息。 -
您需要 ROSA CLI (
rosa)。请参阅 Red Hat OpenShift Service on AWS 文档中的 ROSA CLI 以了解更多信息。
1.11.4.1. 创建一个服务帐户 复制链接链接已复制到粘贴板!
在使用托管的 control plane 集群创建 Red Hat OpenShift Service on AWS 之前,您需要服务帐户。如果您有服务帐户,则不需要完成本节。
流程
完成以下步骤:
- 通过导航到控制台中的 Identity & Access Management > Service Accounts 来创建服务帐户。
- 点 Create service account 按钮。
对于您创建的每个新服务帐户,请使用 ROSA CLI 激活帐户。
登录到您的新服务帐户。运行以下命令。根据需要替换值:
rosa login --client-id <your-client-id> --client-secret <your-client-secret>- 激活您的服务帐户。运行以下命令:
rosa whoami
1.11.4.2. 设置 AWS 凭证 复制链接链接已复制到粘贴板!
在使用托管的 control plane 集群创建 Red Hat OpenShift Service on AWS 前,您需要设置 AWS 凭证。完成以下步骤:
如果您没有在 AWS 中使用多因素身份验证,请使用您创建的 AWS 访问密钥设置 AWS 凭证。运行以下命令。根据需要替换值:
echo '[default] aws_access_key_id = <your-access-key> aws_secret_access_key = <your-secret-access-key> region = us-east-1 ' | base64 -w 0如果您在 AWS 中使用多因素身份验证,请运行以下命令。根据需要替换值:
echo '[default] aws_access_key_id = <your-access-key> aws_secret_access_key = <your-secret-access-key> aws_session_token= <your-aws-session-token> region = us-east-1 ' | base64 -w 0更新
capa-manager-bootstrap-credentialssecret。复制上一命令的输出,并将输出添加到
capa-manager-bootstrap-credentialssecret。运行以下命令来编辑 secret:oc edit secret -n multicluster-engine capa-manager-bootstrap-credentials将您的输出添加到
credentials字段中。请参见以下示例:apiVersion: v1 data: credentials: <your-aws-credentials> kind: Secret metadata: name: capa-manager-bootstrap-credentials namespace: multicluster-engine可选: 如果要将 AWS IAM 角色与服务帐户搭配使用,以验证
capa-controller-manager,请参阅附加资源部分,并完成 在集群 API 受管集群(技术预览)上的 AWS 凭证切换到 IAM 角色 的步骤。
重新启动
capa-controller-manager部署。运行以下命令:oc rollout restart deployment capa-controller-manager -n multicluster-engine
1.11.4.3. 对 OpenShift Cluster Manager 进行身份验证 复制链接链接已复制到粘贴板!
AWS 控制器的 Cluster API Provider 需要 OpenShift Cluster Manager 凭证,以便在带有托管 control plane 的 AWS 上置备 Red Hat OpenShift Service。完成以下步骤:
使用您创建的服务帐户凭证在目标命名空间中创建 Kubernetes secret。
ROSAControlPlane资源在置备过程中引用此 secret。运行以下命令。根据需要替换值:oc create namespace <your-rosa-hcp-namespace> oc -n <your-rosa-hcp-namespace> create secret generic rosa-creds-secret \ --from-literal=ocmClientID='....' \ --from-literal=ocmClientSecret='eyJhbGciOiJIUzI1NiIsI....' \ --from-literal=ocmApiUrl='https://api.openshift.com'可选: 您可以通过调用 secret
rosa-creds-secret并在multicluster-engine命名空间中创建 secret,而无需从ROSAControlPlane资源引用它。运行以下命令:oc -n multicluster-engine create secret generic rosa-creds-secret \ --from-literal=ocmClientID='....' \ --from-literal=ocmClientSecret='eyJhbGciOiJIUzI1NiIsI....' \ --from-literal=ocmApiUrl='https://api.openshift.com'
创建服务帐户后,设置 AWS 凭证并验证 OpenShift Cluster Manager 凭证,请完成以下步骤,使用托管的 control plane 集群在 AWS 上创建 Red Hat OpenShift Service on AWS:
创建
AWSClusterControllerIdentity资源。请参阅以下 YAML 文件示例:apiVersion: infrastructure.cluster.x-k8s.io/v1beta2 kind: AWSClusterControllerIdentity metadata: name: "default" spec: allowedNamespaces: {}创建
ROSARoleConfig资源。请参阅以下 YAML 文件示例:apiVersion: infrastructure.cluster.x-k8s.io/v1beta2 kind: ROSARoleConfig metadata: name: "role-config" namespace: "ns-rosa-hcp" spec: accountRoleConfig: prefix: "rosa" version: "4.20.0" operatorRoleConfig: prefix: "rosa" credentialsSecretRef: name: rosa-creds-secret oidcProviderType: Managed创建
ROSANetwork资源。请参阅以下 YAML 文件示例:apiVersion: infrastructure.cluster.x-k8s.io/v1beta2 kind: ROSANetwork metadata: name: "rosa-vpc" namespace: "ns-rosa-hcp" spec: region: "us-west-2" stackName: "rosa-hcp-net" availabilityZones: - "us-west-2a" - "us-west-2b" - "us-west-2c" cidrBlock: 10.0.0.0/16 identityRef: kind: AWSClusterControllerIdentity name: default验证是否已创建
ROSARoleConfig资源。检查ROSARoleConfig状态是否包含accountRolesRef、oidcID、oidcProviderARN和operatorRolesRef。运行以下命令:oc get rosaroleconfig -n ns-rosa-hcp role-config -o yaml验证是否已创建
ROSANetwork资源。ROSANetwork状态包含创建的子网。运行以下命令:oc get rosanetwork -n ns-rosa-hcp rosa-vpc -o yaml为
ROSAControlPlane资源创建所需的自定义资源。使用以下 YAML 文件内容创建
ManagedCluster资源:apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: rosa-hcp-1 spec: hubAcceptsClient: true使用以下 YAML 文件内容创建集群资源:
apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: name: "rosa-hcp-1" namespace: "ns-rosa-hcp" spec: clusterNetwork: pods: cidrBlocks: ["192.168.0.0/16"] infrastructureRef: apiVersion: infrastructure.cluster.x-k8s.io/v1beta2 kind: ROSACluster name: "rosa-hcp-1" namespace: "ns-rosa-hcp" controlPlaneRef: apiVersion: controlplane.cluster.x-k8s.io/v1beta2 kind: ROSAControlPlane name: "rosa-cp-1" namespace: "ns-rosa-hcp"
使用以下 YAML 文件内容创建
ROSACluster资源:apiVersion: infrastructure.cluster.x-k8s.io/v1beta2 kind: ROSACluster metadata: name: "rosa-hcp-1" namespace: "ns-rosa-hcp" spec: {}使用以下 YAML 文件内容创建
ROSAControlPlane资源。确保区域与用于创建ROSANetwork资源的 AWS 区域匹配:apiVersion: controlplane.cluster.x-k8s.io/v1beta2 kind: ROSAControlPlane metadata: name: "rosa-cp-1" namespace: "ns-rosa-hcp" spec: credentialsSecretRef: name: rosa-creds-secret rosaClusterName: rosa-hcp-1 domainPrefix: rosa-hcp rosaRoleConfigRef: name: role-config version: "4.20.0" region: "us-west-2" rosaNetworkRef: name: "rosa-vpc" network: machineCIDR: "10.0.0.0/16" podCIDR: "10.128.0.0/14" serviceCIDR: "172.30.0.0/16" defaultMachinePoolSpec: instanceType: "m5.xlarge" autoscaling: maxReplicas: 6 minReplicas: 3 additionalTags: env: "demo" profile: "hcp"检查
ROSAControlPlane状态。运行以下命令。确保READY列为true:oc get ROSAControlPlane rosa-cp-1 -n ns-rosa-hcp注: 带有托管 control plane 集群的 Red Hat OpenShift Service on AWS 可能需要最多 40 分钟才能完全置备。
完成
ROSAControlPlane资源置备后,验证是否已创建ROSAMachinePool。运行以下命令:oc get ROSAMachinePool -n ns-rosa-hcp可能显示以下输出:
NAMESPACE NAME READY REPLICAS ns-rosa-hcp workers-0 true 1 ns-rosa-hcp workers-1 true 1 ns-rosa-hcp workers-2 true 1注: 默认可用的
ROSAMachinePools计数基于分配的可用区。
1.11.4.5. 其他资源 复制链接链接已复制到粘贴板!
-
如果要将 AWS IAM 角色与服务帐户搭配使用,以验证
capa-controller-manager,请完成 从 AWS 凭证切换到 Cluster API 受管集群上的 IAM 角色的步骤(技术预览)。
删除 ROSAControlPlane 会在带有托管 control plane 集群的 AWS 上取消置备 Red Hat OpenShift Service。完成此过程需要 30 到 50 分钟。关联的 ROSAMachinePool 资源会被自动删除。
需要的访问权限:集群管理员
先决条件
- 您有一个带有 Cluster API 的托管 control plane 集群的 Red Hat OpenShift Service on AWS。
流程
删除
ROSAControlPlane自定义资源和匹配的集群自定义资源。运行以下命令。根据需要替换值:oc delete -n ns-rosa-hcp cluster/rosa-hcp-1 rosacontrolplane/rosa-cp-1-
在
ROSAControlPlane删除完成后,删除ROSARoleConfig和ROSANetwork资源。