$ rosa create cluster --hosted-cp --subnet-ids=$SUBNET_IDS \
--oidc-config-id=$OIDC_ID --cluster-name=<cluster_name> \
--operator-roles-prefix=$OPERATOR_ROLES_PREFIX \
--external-auth-providers-enabled
您可以创建使用托管控制平面 (HCP) 集群的 AWS 上的 Red Hat OpenShift 服务 (ROSA),这些集群使用外部 OpenID Connect (OIDC) 身份提供程序来颁发用于身份验证的令牌,从而替换内置的 OpenShift OAuth 服务器。虽然内置的 OpenShift OAuth 服务器支持与各种身份提供程序集成,包括外部 OIDC 身份提供程序,但它仅限于 OAuth 服务器本身的功能。您可以直接将外部 OIDC 身份提供程序与使用 HCP 集群的 ROSA 集成,以便促进机器到机器的工作流,例如 CLI,并提供使用内置 OpenShift OAuth 服务器时不可用的其他功能。
由于无法将现有 ROSA 集群升级或转换为托管控制平面架构,因此必须创建一个新集群才能使用带有 HCP 功能的 ROSA。您也不能将创建为使用外部身份验证提供程序的集群转换为使用内部 OAuth2 服务器。您也必须创建一个新集群。 |
跨多个 AWS 账户共享 VPC目前不支持使用 HCP 的 ROSA。请勿将使用 HCP 的 ROSA 集群安装到从其他 AWS 账户共享的子网中。有关更多信息,请参阅"单个 VPC 中是否支持多个 ROSA 集群?" |
使用 HCP 的 ROSA 集群仅支持安全令牌服务 (STS) 身份验证。 |
请参阅 AWS 文档,了解有关使用自动模式下的 ROSA CLI 开始使用带有 HCP 的 ROSA的信息。
在 ROSA CLI 中使用--external-auth-providers-enabled
标志创建使用外部身份验证服务的集群。
创建使用 HCP 集群的 ROSA 时,默认机器无类域间路由 (CIDR) 为 |
如果您使用OIDC_ID
、SUBNET_IDS
和OPERATOR_ROLES_PREFIX
变量准备环境,则可以在创建集群时继续使用这些变量。例如,运行以下命令
$ rosa create cluster --hosted-cp --subnet-ids=$SUBNET_IDS \
--oidc-config-id=$OIDC_ID --cluster-name=<cluster_name> \
--operator-roles-prefix=$OPERATOR_ROLES_PREFIX \
--external-auth-providers-enabled
如果您未设置环境变量,请运行以下命令
$ rosa create cluster --cluster-name=<cluster_name> --sts --mode=auto \
--hosted-cp --operator-roles-prefix <operator-role-prefix> \
--oidc-config-id <ID-of-OIDC-configuration> \
--external-auth-providers-enabled \
--subnet-ids=<public-subnet-id>,<private-subnet-id>
通过运行以下命令验证集群详细信息中是否启用了外部身份验证
$ rosa describe cluster --cluster=<cluster_name>
Name: rosa-ext-test
Display Name: rosa-ext-test
ID: <cluster_id>
External ID: <cluster_ext_id>
Control Plane: ROSA Service Hosted
OpenShift Version: 4.17.0
Channel Group: stable
DNS: <dns>
AWS Account: <AWS_id>
AWS Billing Account: <AWS_id>
API URL: <ocm_api>
Console URL:
Region: us-east-1
Availability:
- Control Plane: MultiAZ
- Data Plane: SingleAZ
Nodes:
- Compute (desired): 2
- Compute (current): 0
Network:
- Type: OVNKubernetes
- Service CIDR: <service_cidr>
- Machine CIDR: <machine_cidr>
- Pod CIDR: <pod_cidr>
- Host Prefix: /23
- Subnets: <subnet_ids>
EC2 Metadata Http Tokens: optional
Role (STS) ARN: arn:aws:iam::<AWS_id>:role/<account_roles_prefix>-HCP-ROSA-Installer-Role
Support Role ARN: arn:aws:iam::<AWS_id>:role/<account_roles_prefix>-HCP-ROSA-Support-Role
Instance IAM Roles:
- Worker: arn:aws:iam::<AWS_id>:role/<account_roles_prefix>-HCP-ROSA-Worker-Role
Operator IAM Roles:
- arn:aws:iam::<AWS_id>:role/<operator_roles_prefix>-openshift-cloud-network-config-controller-clo
- arn:aws:iam::<AWS_id>:role/<operator_roles_prefix>-kube-system-capa-controller-manager
- arn:aws:iam::<AWS_id>:role/<operator_roles_prefix>-kube-system-control-plane-operator
- arn:aws:iam::<AWS_id>:role/<operator_roles_prefix>-kube-system-kms-provider
- arn:aws:iam::<AWS_id>:role/<operator_roles_prefix>-kube-system-kube-controller-manager
- arn:aws:iam::<AWS_id>:role/<operator_roles_prefix>-openshift-image-registry-installer-cloud-cred
- arn:aws:iam::<AWS_id>:role/<operator_roles_prefix>-openshift-ingress-operator-cloud-credentials
- arn:aws:iam::<AWS_id>:role/<operator_roles_prefix>-openshift-cluster-csi-drivers-ebs-cloud-crede
Managed Policies: Yes
State: ready
Private: No
Created: Mar 29 2024 14:25:52 UTC
User Workload Monitoring: Enabled
Details Page: https://<url>
OIDC Endpoint URL: https://<endpoint> (Managed)
Audit Log Forwarding: Disabled
External Authentication: Enabled (1)
1 | 已启用外部身份验证 标志,您现在可以创建外部身份验证提供程序。 |
创建启用外部身份验证提供程序选项的使用 HCP 集群的 ROSA 后,必须使用 ROSA CLI 创建提供程序。
与 ROSA CLI 中的 |
下表显示了创建外部身份验证提供程序时可以使用的一些 CLI 标志
CLI 标志 | 描述 |
---|---|
|
您的集群的名称或 ID。 |
|
用于引用外部身份验证提供程序的名称。 |
|
此字符串是用于将您的帐户与应用程序关联的客户端密钥。如果您不包含客户端密钥,则此命令将使用公共 OIDC OAuthClient。 |
|
这是一个用逗号分隔的令牌访问者列表。 |
|
令牌发行者的 URL。 |
|
应用于为集群身份构建用户名的主张名称。 |
|
应用于为集群身份构建组名称的主张名称。 |
要使用交互式命令界面,请运行以下命令
$ rosa create external-auth-provider -c <cluster_name>
I: Enabling interactive mode
? Name: (1)
? Issuer audiences: (2)
? The serving url of the token issuer: (3)
? CA file path (optional): (4)
? Claim mapping username: (5)
? Claim mapping groups: (6)
? Claim validation rule (optional): (7)
? Console client id (optional): (8)
1 | 您的外部身份验证提供程序的名称。此名称应为小写字母、数字和短划线。 |
2 | 此身份验证提供程序为此发放令牌的访问者 ID。 |
3 | 提供令牌的发行者的 URL。 |
4 | 可选:发出请求时要使用的证书文件。 |
5 | 用于为集群身份构建用户名的主张名称,例如使用email 。 |
6 | 将 ID 令牌转换为集群身份的方法,例如使用groups 。 |
7 | 可选:有助于验证身份验证用户的令牌声明的规则。此字段应格式化为:<required_value> 。 |
8 | 可选:您的应用程序注册用于控制台的应用程序或客户端 ID。 |
您可以包含所需的 ID,以使用以下命令创建您的外部身份验证提供程序
rosa create external-auth-provider --cluster=<cluster_id> \
--name=<provider_name> --issuer-url=<issuing_url> \
--issuer-audiences=<audience_id> \
--claim-mapping-username-claim=email \
--claim-mapping-groups-claim=groups \
--console-client-id=<client_id_for_app_registration> \
--console-client-secret=<client_secret>
I: Successfully created an external authentication provider for cluster '<cluster_id>'
要验证您的外部身份验证提供程序,请运行以下选项之一
使用以下命令列出指定集群上的外部身份验证配置
$ rosa list external-auth-provider -c <cluster_name>
以下示例显示已配置的 Microsoft Entra ID 外部身份验证提供程序
NAME ISSUER URL
m-entra-id https://login.microsoftonline.com/<group_id>/v2.0
使用以下命令显示指定集群上的外部身份验证配置
$ rosa describe external-auth-provider \
-c <cluster_name> --name <name_of_external_authentication>
ID: ms-entra-id
Cluster ID: <cluster_id>
Issuer audiences:
- <audience_id>
Issuer Url: https://login.microsoftonline.com/<group_id>/v2.0
Claim mappings group: groups
Claim mappings username: email
有关为您的 IDP 配置 Entra ID 的更多信息,请参阅 Azure 文档中的什么是 Microsoft Entra ID?或文档的将 Microsoft Entra ID(以前称为 Azure Active Directory)配置为身份提供程序教程部分。
作为具有 HCP 集群的 ROSA 所有者,您可以使用应急凭据创建临时管理员客户端凭据,以访问配置了自定义 OpenID Connect (OIDC) 令牌发行者的集群。创建应急凭据会生成一个新的 cluster-admin kubeconfig
文件。kubeconfig
文件包含有关集群的信息,CLI 使用这些信息将客户端连接到正确的集群和 API 服务器。您可以使用新生成的kubeconfig
文件来允许访问具有 HCP 集群的 ROSA。
您已创建启用了外部身份验证的具有 HCP 集群的 ROSA。有关更多信息,请参阅创建使用外部身份验证提供程序的具有 HCP 集群的 ROSA。
您已创建外部身份验证提供程序。有关更多信息,请参阅创建外部身份验证提供程序。
您拥有具有cluster admin
权限的帐户。
使用以下命令之一创建应急凭据
要使用交互式命令界面以交互方式指定自定义设置来创建应急凭据,请运行以下命令
$ rosa create break-glass-credential -c <cluster_name> -i (1)
1 | 将<cluster_name>替换为您的集群名称。 |
此命令启动交互式 CLI 进程
I: Enabling interactive mode
? Username (optional): (1)
? Expiration duration (optional): (2)
I: Successfully created a break glass credential for cluster 'ac-hcp-test'.
1 | 如果留空,则username 中的值将具有随机生成的用户名值。 |
2 | 应急凭据的最小有效期为 10 分钟,最大有效期为 24 小时。如果留空,则到期持续时间值默认为 24 小时。 |
要为名为mycluster
的集群创建具有指定值的应急凭据
$ rosa create break-glass-credential -c mycluster --username test-username --expiration 1h
通过运行以下命令列出名为mycluster
的集群可用的应急凭据 ID、状态和关联用户
$ rosa list break-glass-credential -c mycluster
ID USERNAME STATUS
2a7jli9n4phe6c02ul7ti91djtv2o51d test-user issued
您还可以通过向命令添加 |
要查看应急凭据的状态,请运行以下命令,并将<break_glass_credential_id>替换为应急凭据 ID
$ rosa describe break-glass-credential <break_glass_credential_id> -c <cluster_name>
ID: 2a7jli9n4phe6c02ul7ti91djtv2o51d
Username: test-user
Expire at: Dec 28 2026 10:23:05 EDT
Status: issued
以下是可能的Status
字段值列表
issued
应急凭据已发出,可以使用了。
expired
应急凭据已过期,无法再使用了。
failed
应急凭据创建失败。在这种情况下,您会收到详细说明失败的服务日志。有关服务日志的更多信息,请参阅访问 AWS 集群上的 Red Hat OpenShift 服务的服务日志。有关联系 Red Hat 支持寻求帮助的步骤,请参阅获取支持。
awaiting_revocation
应急凭据当前正在撤销,这意味着它无法使用。
revoked
应急凭据已被撤销,无法再使用了。
要检索kubeconfig
,请运行以下命令
创建一个kubeconfigs
目录
$ mkdir ~/kubeconfigs
导出新生成的kubeconfig
文件,将<cluster_name>替换为您的集群名称
$ export CLUSTER_NAME=<cluster_name> && export KUBECONFIG=~/kubeconfigs/break-glass-${CLUSTER_NAME}.kubeconfig
查看kubeconfig
$ rosa describe break-glass-credential <break_glass_credential_id> -c mycluster --kubeconfig
apiVersion: v1
clusters:
- cluster:
server: <server_url>
name: cluster
contexts:
- context:
cluster: cluster
namespace: default
user: test-username
name: admin
current-context: admin
kind: Config
preferences: {}
users:
- name: test-user
user:
client-certificate-data: <client-certificate-data> (1)
client-key-data: <client-key-data> (2)
1 | 客户端证书包含由 Kubernetes 证书颁发机构 (CA) 签名的用户证书。 |
2 | 客户端密钥包含签署客户端证书的密钥。 |
可选:要保存kubeconfig
,请运行以下命令
$ rosa describe break-glass-credential <break_glass_credential_id> -c mycluster --kubeconfig > $KUBECONFIG
有关创建启用了外部身份验证的具有 HCP 集群的 ROSA 的更多信息,请参阅创建使用外部身份验证提供程序的具有 HCP 集群的 ROSA。
使用应急凭据中的新kubeconfig
获得对具有 HCP 集群的 ROSA 的临时管理员访问权限。
您可以访问启用了外部身份验证的具有 HCP 集群的 ROSA。有关更多信息,请参阅创建使用外部身份验证提供程序的具有 HCP 集群的 ROSA。
您已安装oc
和kubectl
CLI。
您已配置新的kubeconfig
。更多信息,请参见为具有 HCP 集群的 ROSA 创建应急凭据。
访问集群详细信息
$ rosa describe break-glass-credential <break_glass_credential_id> -c <cluster_name> --kubeconfig > $KUBECONFIG
列出集群中的节点
$ oc get nodes
NAME STATUS ROLES AGE VERSION
ip-10-0-0-27.ec2.internal Ready worker 8m v1.28.7+f1b5f6c
ip-10-0-0-67.ec2.internal Ready worker 9m v1.28.7+f1b5f6c
验证您拥有正确的凭据
$ kubectl auth whoami
ATTRIBUTE VALUE
Username system:customer-break-glass:test-user
Groups [system:masters system:authenticated]
为在外部 OIDC 提供商中定义的组应用ClusterRoleBinding
。ClusterRoleBinding
将在 Microsoft Entra ID 中创建的rosa-hcp-admins
组映射到 ROSA 与 HCP 集群中的一个组。
$ oc apply -f - <<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: rosa-hcp-admins
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: f715c264-ab90-45d5-8a29-2e91a609a895
EOF
clusterrolebinding.rbac.authorization.k8s.io/rosa-hcp-admins created
应用 |
有关集群角色绑定的更多信息,请参见使用 RBAC 定义和应用权限。
您可以随时使用revoke break-glass-credentials
命令吊销您已预配的任何应急凭据的访问权限。
您已创建应急凭据。
您是集群所有者。
通过运行以下命令来吊销具有 HCP 集群的 ROSA 的应急凭据。
运行此命令将吊销与集群相关的所有应急凭据的访问权限。 |
$ rosa revoke break-glass-credentials -c <cluster_name> (1)
1 | 将<cluster_name>替换为您的集群名称。 |
? Are you sure you want to revoke all the break glass credentials on cluster 'my-cluster'?: Yes
I: Successfully requested revocation for all break glass credentials from cluster 'my-cluster'
吊销过程可能需要几分钟时间。您可以通过运行以下命令之一来验证集群的应急凭据是否已被吊销
列出所有应急凭据并检查每个凭据的状态
$ rosa list break-glass-credential -c <cluster_name>
ID USERNAME STATUS
2330dbs0n8m3chkkr25gkkcd8pnj3lk2 test-user awaiting_revocation
您也可以通过检查单个凭据来验证状态
$ rosa describe break-glass-credential <break_glass_credential_id> -c <cluster_name>
ID: 2330dbs0n8m3chkkr25gkkcd8pnj3lk2
Username: test-user
Expire at: Dec 28 2026 10:23:05 EDT
Status: issued
Revoked at: Dec 27 2026 15:30:33 EDT
使用 ROSA CLI 删除外部身份验证提供程序。
通过运行以下命令来显示集群上的外部身份验证提供程序
$ rosa list external-auth-provider -c <cluster_name>
NAME ISSUER URL
entra-test https://login.microsoftonline.com/<group_id>/v2.0
通过运行以下命令来删除外部身份验证提供程序
$ rosa delete external-auth-provider <name_of_provider> -c <cluster_name>
? Are you sure you want to delete external authentication provider entra-test on cluster rosa-ext-test? Yes
I: Successfully deleted external authentication provider 'entra-test' from cluster 'rosa-ext-test'
通过运行以下命令来查询集群上的任何外部身份验证提供程序
$ rosa list external-auth-provider -c <cluster_name>
E: there are no external authentication providers for this cluster
有关可选设置运算符角色名称前缀的详细信息,请参见关于自定义运算符 IAM 角色前缀。
有关安装使用 STS 的 ROSA 的前提条件的信息,请参见使用 STS 的 ROSA 的 AWS 前提条件。
有关使用auto
和manual
模式创建所需的 STS 资源的详细信息,请参见了解自动和手动部署模式。
有关在 AWS IAM 中使用 OpenID Connect (OIDC) 身份提供程序的更多信息,请参见 AWS 文档中的创建 OpenID Connect (OIDC) 身份提供程序。
有关 ROSA 集群安装故障排除的更多信息,请参见安装故障排除。
有关联系 Red Hat 支持寻求帮助的步骤,请参见获取 AWS 上 Red Hat OpenShift 服务的支持。