3.5. 为 Operator 身份验证打开 ID Connect (OIDC)要求
对于使用 STS 的 ROSA 安装,您必须创建一个特定于集群的 OIDC 供应商,供集群 Operator 为您自己的 OIDC 供应商进行身份验证或创建自己的 OIDC 配置。
3.5.1. 使用 CLI 创建 OIDC 供应商
您可以使用 Red Hat OpenShift Service on AWS (ROSA) CLI 创建托管在 AWS 帐户中的 OIDC 供应商 rosa
。
前提条件
- 已安装最新版本的 ROSA CLI。
流程
要创建 OIDC 供应商,使用未注册或注册的 OIDC 配置。
取消注册的 OIDC 配置要求您通过集群创建 OIDC 供应商。运行以下命令来创建 OIDC 供应商:
$ rosa create oidc-provider --mode manual --cluster <cluster_name>
注意使用
手动
模式时,aws
命令会被打印到终端中,供您查看。查看aws
命令后,您必须手动运行。另外,您可以使用rosa create
命令指定--mode auto
来立即运行aws
命令。命令输出
aws iam create-open-id-connect-provider \ --url https://oidc.op1.openshiftapps.com/<oidc_config_id> \1 --client-id-list openshift sts.<aws_region>.amazonaws.com \ --thumbprint-list <thumbprint> 2
注册的 OIDC 配置使用 OIDC 配置 ID。使用您的 OIDC 配置 ID 运行以下命令:
$ rosa create oidc-provider --oidc-config-id <oidc_config_id> --mode auto -y
命令输出
I: Creating OIDC provider using 'arn:aws:iam::4540112244:user/userName' I: Created OIDC provider with ARN 'arn:aws:iam::4540112244:oidc-provider/dvbwgdztaeq9o.cloudfront.net/241rh9ql5gpu99d7leokhvkp8icnalpf'
3.5.2. 创建 OpenID 连接配置
当使用由红帽托管的集群时,您可以使用 Red Hat OpenShift Service on AWS (ROSA) CLI, rosa
创建受管或非受管 OpenID Connect (OIDC)配置。受管 OIDC 配置存储在红帽的 AWS 帐户中,而生成的非受管 OIDC 配置存储在 AWS 帐户中。OIDC 配置已注册到 OpenShift Cluster Manager。在创建非受管 OIDC 配置时,CLI 为您提供了私钥。
创建 OpenID 连接配置
当在 AWS 集群上使用 Red Hat OpenShift Service 时,您可以在创建集群时创建 OpenID Connect (OIDC)配置。此配置已注册到 OpenShift Cluster Manager。
前提条件
-
您已在安装主机上安装并配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI
rosa
。
流程
要创建 OIDC 配置和 AWS 资源,请运行以下命令:
$ rosa create oidc-config --mode=auto --yes
此命令返回以下信息:
输出示例
? Would you like to create a Managed (Red Hat hosted) OIDC Configuration Yes I: Setting up managed OIDC configuration I: To create Operator Roles for this OIDC Configuration, run the following command and remember to replace <user-defined> with a prefix of your choice: rosa create operator-roles --prefix <user-defined> --oidc-config-id 13cdr6b If you are going to create a Hosted Control Plane cluster please include '--hosted-cp' I: Creating OIDC provider using 'arn:aws:iam::4540112244:user/userName' ? Create the OIDC provider? Yes I: Created OIDC provider with ARN 'arn:aws:iam::4540112244:oidc-provider/dvbwgdztaeq9o.cloudfront.net/13cdr6b'
在创建集群时,您必须提供 OIDC 配置 ID。CLI 输出为
--mode auto
提供这个值,否则您必须根据--mode manual
的aws
CLI 输出来确定这些值。可选: 您可以将 OIDC 配置 ID 保存为变量,以便稍后使用。运行以下命令来保存变量:
$ export OIDC_ID=<oidc_config_id>1
- 1
- 在上面的示例输出中,OIDC 配置 ID 是 13cdr6b。
运行以下命令,查看变量的值:
$ echo $OIDC_ID
输出示例
13cdr6b
验证
您可以列出与用户机构关联的集群可用的 OIDC 配置。运行以下命令:
$ rosa list oidc-config
输出示例
ID MANAGED ISSUER URL SECRET ARN 2330dbs0n8m3chkkr25gkkcd8pnj3lk2 true https://dvbwgdztaeq9o.cloudfront.net/2330dbs0n8m3chkkr25gkkcd8pnj3lk2 233hvnrjoqu14jltk6lhbhf2tj11f8un false https://oidc-r7u1.s3.us-east-1.amazonaws.com aws:secretsmanager:us-east-1:242819244:secret:rosa-private-key-oidc-r7u1-tM3MDN
创建自己的 OpenID Connect 配置的参数选项
以下选项可以添加到 rosa create oidc-config
命令中。所有这些参数都是可选的。运行没有参数的 rosa create oidc-config
命令会创建一个非受管 OIDC 配置。
您需要通过 OpenShift Cluster Manager 将请求发布到 /oidc_configs
来注册非受管 OIDC 配置。您在响应中收到 ID。使用此 ID 创建集群。
raw-files
允许您为私有 RSA 密钥提供原始文件。这个密钥名为 rosa-private-key-oidc-<random_label_of_length_4>.key
。您还收到名为 discovery-document-oidc-<random_label_of_length_4>.json
的发现文档,以及名为 jwks-oidc-<random_label_of_length_4>.json
的发现文档。
您可以使用这些文件来设置端点。此端点会响应 /.well-known/openid-configuration
,它带有发现文档和带有 JSON Web Key Set 的 keys.json
。私钥以纯文本形式存储在 Amazon Web Services (AWS) Secrets Manager Service (SMS)中。
示例
$ rosa create oidc-config --raw-files
模式
允许您指定模式来创建 OIDC 配置。使用 manual
选项,您可以接收在 S3 存储桶中设置 OIDC 配置的 AWS 命令。这个选项将私钥存储在 Secrets Manager 中。使用 手动
选项,OIDC Endpoint URL 是 S3 存储桶的 URL。您必须检索 Secret Manager ARN,以便在 OpenShift Cluster Manager 中注册 OIDC 配置。
在使用 auto
选项时,您会收到与 手动模式
相同的 OIDC 配置和 AWS 资源。两个选项之间的显著区别在于,在使用 auto
选项时,ROSA 调用 AWS,因此您不需要采取任何进一步的操作。OIDC 端点 URL 是 S3 存储桶的 URL。CLI 检索 Secrets Manager ARN,将 OIDC 配置注册到 OpenShift Cluster Manager,并报告用户可以运行的第二个 rosa
命令继续创建 STS 集群。
示例
$ rosa create oidc-config --mode=<auto|manual>
Managed
创建一个托管在红帽 AWS 帐户下的 OIDC 配置。这个命令会创建一个私钥,它直接使用 OIDC 配置 ID 响应,供您在创建 STS 集群时使用。
示例
$ rosa create oidc-config --managed
输出示例
W: For a managed OIDC Config only auto mode is supported. However, you may choose the provider creation mode ? OIDC Provider creation mode: auto I: Setting up managed OIDC configuration I: Please run the following command to create a cluster with this oidc config rosa create cluster --sts --oidc-config-id 233jnu62i9aphpucsj9kueqlkr1vcgra I: Creating OIDC provider using 'arn:aws:iam::242819244:user/userName' ? Create the OIDC provider? Yes I: Created OIDC provider with ARN 'arn:aws:iam::242819244:oidc-provider/dvbwgdztaeq9o.cloudfront.net/233jnu62i9aphpucsj9kueqlkr1vcgra'