第5章 Hosted Control Plane の管理
5.1. AWS での Hosted Control Plane の管理
Amazon Web Services (AWS) 上の OpenShift Container Platform に Hosted Control Plane を使用する場合、セットアップに応じてインフラストラクチャーの要件が異なります。
5.1.1. AWS インフラストラクチャーと IAM 権限を管理するための前提条件
Amazon Web Services (AWS) 上の OpenShift Container Platform の Hosted Control Plane を設定するには、次のインフラストラクチャー要件を満たす必要があります。
- ホステッドクラスターを作成する前に、Hosted Control Plane を設定した。
- AWS Identity and Access Management (IAM) ロールと AWS Security Token Service (STS) 認証情報を作成した。
5.1.1.1. AWS のインフラストラクチャー要件
Amazon Web Services (AWS) で Hosted Control Plane を使用する場合、インフラストラクチャー要件は次のカテゴリーに当てはまります。
- 任意の AWS アカウント内の、HyperShift Operator 用の事前に必要な管理対象外インフラストラクチャー
- ホステッドクラスターの AWS アカウント内の事前に必要な管理対象外インフラストラクチャー
- 管理 AWS アカウント内の Hosted Control Plane によって管理されるインフラストラクチャー
- ホステッドクラスターの AWS アカウント内の Hosted Control Plane によって管理されるインフラストラクチャー
- ホステッドクラスターの AWS アカウント内の Kubernetes によって管理されるインフラストラクチャー
事前に必要とは、Hosted Control Plane を適切に動作させるために AWS インフラストラクチャーが必要であることを意味します。管理対象外とは、Operator やコントローラーによってインフラストラクチャーが作成されないことを意味します。
5.1.1.2. AWS アカウント内の HyperShift Operator 用の管理対象外インフラストラクチャー
任意の Amazon Web Services (AWS) アカウントは、Hosted Control Plane サービスのプロバイダーによって異なります。
セルフマネージドの Hosted Control Plane では、クラスターサービスプロバイダーが AWS アカウントを制御します。クラスターサービスプロバイダーは、クラスターコントロールプレーンをホストし、稼働時間について責任を負う管理者です。マネージドの Hosted Control Plane では、AWS アカウントは Red Hat に属します。
HyperShift Operator 用の事前に必要な管理対象外のインフラストラクチャーでは、管理クラスター AWS アカウントに次のインフラストラクチャー要件が適用されます。
1 つの S3 バケット
- OpenID Connect (OIDC)
ルート 53 のホステッドゾーン
- ホステッドクラスターのプライベートおよびパブリックエントリーをホストするドメイン
5.1.1.3. 管理 AWS アカウントの管理対象外インフラストラクチャーの要件
インフラストラクチャーが事前に必要であり、ホステッドクラスターの AWS アカウントで管理されていない場合、すべてのアクセスモードのインフラストラクチャー要件は次のとおりです。
- 1 つの VPC
- 1 つの DHCP オプション
2 つのサブネット
- 内部データプレーンサブネットであるプライベートサブネット
- データプレーンからインターネットへのアクセスを可能にするパブリックサブネット
- 1 つのインターネットゲートウェイ
- 1 つの Elastic IP
- 1 つの NAT ゲートウェイ
- 1 つのセキュリティーグループ (ワーカーノード)
- 2 つのルートテーブル (1 つはプライベート、もう 1 つはパブリック)
- 2 つの Route 53 のホステッドゾーン
次の項目に対する十分なクォータ:
- パブリックホステッドクラスター用の 1 つの Ingress サービスロードバランサー
- プライベートホステッドクラスター用の 1 つのプライベートリンクエンドポイント
プライベートリンクネットワークが機能するには、ホステッドクラスターの AWS アカウントのエンドポイントゾーンが、管理クラスターの AWS アカウントのサービスエンドポイントによって解決されるインスタンスのゾーンと同じである必要があります。AWS では、ゾーン名は us-east-2b などのエイリアスであり、必ずしも異なるアカウントの同じゾーンにマップされるわけではありません。そのため、プライベートリンクが機能するには、管理クラスターのリージョンのすべてのゾーンにサブネットまたはワーカーが必要です。
5.1.1.4. 管理 AWS アカウントのインフラストラクチャーの要件
インフラストラクチャーが管理 AWS アカウントの Hosted Control Plane によって管理されている場合、インフラストラクチャーの要件は、クラスターがパブリック、プライベート、またはその組み合わせであるかによって異なります。
パブリッククラスターを使用するアカウントの場合、インフラストラクチャー要件は次のとおりです。
ネットワークロードバランサー: ロードバランサー Kube API サーバー
- Kubernetes がセキュリティーグループを作成する
ボリューム
- etcd 用 (高可用性に応じて 1 つまたは 3 つ)
- OVN-Kube 用
プライベートクラスターを使用するアカウントの場合、インフラストラクチャー要件は次のとおりです。
- ネットワークロードバランサー: ロードバランサーのプライベートルーター
- エンドポイントサービス (プライベートリンク)
パブリッククラスターとプライベートクラスターを持つアカウントの場合、インフラストラクチャー要件は次のとおりです。
- ネットワークロードバランサー: ロードバランサーのパブリックルーター
- ネットワークロードバランサー: ロードバランサーのプライベートルーター
- エンドポイントサービス (プライベートリンク)
ボリューム
- etcd 用 (高可用性に応じて 1 つまたは 3 つ)
- OVN-Kube 用
5.1.1.5. ホステッドクラスターの AWS アカウントのインフラストラクチャー要件
インフラストラクチャーがホステッドクラスターの Amazon Web Services (AWS) アカウントの Hosted Control Plane によって管理されている場合、インフラストラクチャーの要件は、クラスターがパブリック、プライベート、またはその組み合わせであるかによって異なります。
パブリッククラスターを使用するアカウントの場合、インフラストラクチャー要件は次のとおりです。
-
ノードプールには、
Role
とRolePolicy
が定義された EC2 インスタンスが必要です。
プライベートクラスターを使用するアカウントの場合、インフラストラクチャー要件は次のとおりです。
- アベイラビリティーゾーンごとに 1 つのプライベートリンクエンドポイント
- ノードプールの EC2 インスタンス
パブリッククラスターとプライベートクラスターを持つアカウントの場合、インフラストラクチャー要件は次のとおりです。
- アベイラビリティーゾーンごとに 1 つのプライベートリンクエンドポイント
- ノードプールの EC2 インスタンス
5.1.1.6. ホステッドクラスターの AWS アカウント内の Kubernetes によって管理されるインフラストラクチャー
ホステッドクラスターの Amazon Web Services (AWS) アカウント内のインフラストラクチャーを Kubernetes によって管理する場合、インフラストラクチャーの要件は次のとおりです。
- デフォルトの Ingress 用のネットワークロードバランサー
- レジストリー用の S3 バケット
5.1.2. Identity and Access Management (IAM) 権限
Hosted Control Plane のコンテキストでは、コンシューマーが Amazon Resource Name (ARN) ロールを作成する役割を果たします。コンシューマー は、権限ファイルを生成するための自動プロセスです。コンシューマーは CLI または OpenShift Cluster Manager である場合があります。Hosted Control Plane では、最小権限コンポーネントの原則を遵守するための詳細な設定が可能です。そのため、すべてのコンポーネントが独自のロールを使用して Amazon Web Services (AWS) オブジェクトを操作または作成します。ロールは、製品が正常に機能するために必要なものに制限されます。
ホステッドクラスターは ARN ロールを入力として受け取り、コンシューマーは各コンポーネントの AWS 権限設定を作成します。その結果、コンポーネントは STS および事前設定された OIDC IDP を通じて認証できるようになります。
次のロールは、コントロールプレーン上で実行され、データプレーン上で動作する、Hosted Control Plane の一部のコンポーネントによって消費されます。
-
controlPlaneOperatorARN
-
imageRegistryARN
-
ingressARN
-
kubeCloudControllerARN
-
nodePoolManagementARN
-
storageARN
-
networkARN
次の例は、ホステッドクラスターからの IAM ロールへの参照を示しています。
... endpointAccess: Public region: us-east-2 resourceTags: - key: kubernetes.io/cluster/example-cluster-bz4j5 value: owned rolesRef: controlPlaneOperatorARN: arn:aws:iam::820196288204:role/example-cluster-bz4j5-control-plane-operator imageRegistryARN: arn:aws:iam::820196288204:role/example-cluster-bz4j5-openshift-image-registry ingressARN: arn:aws:iam::820196288204:role/example-cluster-bz4j5-openshift-ingress kubeCloudControllerARN: arn:aws:iam::820196288204:role/example-cluster-bz4j5-cloud-controller networkARN: arn:aws:iam::820196288204:role/example-cluster-bz4j5-cloud-network-config-controller nodePoolManagementARN: arn:aws:iam::820196288204:role/example-cluster-bz4j5-node-pool storageARN: arn:aws:iam::820196288204:role/example-cluster-bz4j5-aws-ebs-csi-driver-controller type: AWS ...
Hosted Control Plane が使用するロールを次の例に示します。
ingressARN
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticloadbalancing:DescribeLoadBalancers", "tag:GetResources", "route53:ListHostedZones" ], "Resource": "\*" }, { "Effect": "Allow", "Action": [ "route53:ChangeResourceRecordSets" ], "Resource": [ "arn:aws:route53:::PUBLIC_ZONE_ID", "arn:aws:route53:::PRIVATE_ZONE_ID" ] } ] }
imageRegistryARN
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:DeleteBucket", "s3:PutBucketTagging", "s3:GetBucketTagging", "s3:PutBucketPublicAccessBlock", "s3:GetBucketPublicAccessBlock", "s3:PutEncryptionConfiguration", "s3:GetEncryptionConfiguration", "s3:PutLifecycleConfiguration", "s3:GetLifecycleConfiguration", "s3:GetBucketLocation", "s3:ListBucket", "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:ListBucketMultipartUploads", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts" ], "Resource": "\*" } ] }
storageARN
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:CreateSnapshot", "ec2:CreateTags", "ec2:CreateVolume", "ec2:DeleteSnapshot", "ec2:DeleteTags", "ec2:DeleteVolume", "ec2:DescribeInstances", "ec2:DescribeSnapshots", "ec2:DescribeTags", "ec2:DescribeVolumes", "ec2:DescribeVolumesModifications", "ec2:DetachVolume", "ec2:ModifyVolume" ], "Resource": "\*" } ] }
networkARN
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:DescribeInstanceTypes", "ec2:UnassignPrivateIpAddresses", "ec2:AssignPrivateIpAddresses", "ec2:UnassignIpv6Addresses", "ec2:AssignIpv6Addresses", "ec2:DescribeSubnets", "ec2:DescribeNetworkInterfaces" ], "Resource": "\*" } ] }
kubeCloudControllerARN
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:DescribeInstances", "ec2:DescribeImages", "ec2:DescribeRegions", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVolumes", "ec2:CreateSecurityGroup", "ec2:CreateTags", "ec2:CreateVolume", "ec2:ModifyInstanceAttribute", "ec2:ModifyVolume", "ec2:AttachVolume", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateRoute", "ec2:DeleteRoute", "ec2:DeleteSecurityGroup", "ec2:DeleteVolume", "ec2:DetachVolume", "ec2:RevokeSecurityGroupIngress", "ec2:DescribeVpcs", "elasticloadbalancing:AddTags", "elasticloadbalancing:AttachLoadBalancerToSubnets", "elasticloadbalancing:ApplySecurityGroupsToLoadBalancer", "elasticloadbalancing:CreateLoadBalancer", "elasticloadbalancing:CreateLoadBalancerPolicy", "elasticloadbalancing:CreateLoadBalancerListeners", "elasticloadbalancing:ConfigureHealthCheck", "elasticloadbalancing:DeleteLoadBalancer", "elasticloadbalancing:DeleteLoadBalancerListeners", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeLoadBalancerAttributes", "elasticloadbalancing:DetachLoadBalancerFromSubnets", "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", "elasticloadbalancing:ModifyLoadBalancerAttributes", "elasticloadbalancing:RegisterInstancesWithLoadBalancer", "elasticloadbalancing:SetLoadBalancerPoliciesForBackendServer", "elasticloadbalancing:AddTags", "elasticloadbalancing:CreateListener", "elasticloadbalancing:CreateTargetGroup", "elasticloadbalancing:DeleteListener", "elasticloadbalancing:DeleteTargetGroup", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:DescribeLoadBalancerPolicies", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeTargetHealth", "elasticloadbalancing:ModifyListener", "elasticloadbalancing:ModifyTargetGroup", "elasticloadbalancing:RegisterTargets", "elasticloadbalancing:SetLoadBalancerPoliciesOfListener", "iam:CreateServiceLinkedRole", "kms:DescribeKey" ], "Resource": [ "\*" ], "Effect": "Allow" } ] }
nodePoolManagementARN
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:AllocateAddress", "ec2:AssociateRouteTable", "ec2:AttachInternetGateway", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateInternetGateway", "ec2:CreateNatGateway", "ec2:CreateRoute", "ec2:CreateRouteTable", "ec2:CreateSecurityGroup", "ec2:CreateSubnet", "ec2:CreateTags", "ec2:DeleteInternetGateway", "ec2:DeleteNatGateway", "ec2:DeleteRouteTable", "ec2:DeleteSecurityGroup", "ec2:DeleteSubnet", "ec2:DeleteTags", "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeAvailabilityZones", "ec2:DescribeImages", "ec2:DescribeInstances", "ec2:DescribeInternetGateways", "ec2:DescribeNatGateways", "ec2:DescribeNetworkInterfaces", "ec2:DescribeNetworkInterfaceAttribute", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeVpcAttribute", "ec2:DescribeVolumes", "ec2:DetachInternetGateway", "ec2:DisassociateRouteTable", "ec2:DisassociateAddress", "ec2:ModifyInstanceAttribute", "ec2:ModifyNetworkInterfaceAttribute", "ec2:ModifySubnetAttribute", "ec2:ReleaseAddress", "ec2:RevokeSecurityGroupIngress", "ec2:RunInstances", "ec2:TerminateInstances", "tag:GetResources", "ec2:CreateLaunchTemplate", "ec2:CreateLaunchTemplateVersion", "ec2:DescribeLaunchTemplates", "ec2:DescribeLaunchTemplateVersions", "ec2:DeleteLaunchTemplate", "ec2:DeleteLaunchTemplateVersions" ], "Resource": [ "\*" ], "Effect": "Allow" }, { "Condition": { "StringLike": { "iam:AWSServiceName": "elasticloadbalancing.amazonaws.com" } }, "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:*:iam::*:role/aws-service-role/elasticloadbalancing.amazonaws.com/AWSServiceRoleForElasticLoadBalancing" ], "Effect": "Allow" }, { "Action": [ "iam:PassRole" ], "Resource": [ "arn:*:iam::*:role/*-worker-role" ], "Effect": "Allow" } ] }
controlPlaneOperatorARN
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateVpcEndpoint", "ec2:DescribeVpcEndpoints", "ec2:ModifyVpcEndpoint", "ec2:DeleteVpcEndpoints", "ec2:CreateTags", "route53:ListHostedZones" ], "Resource": "\*" }, { "Effect": "Allow", "Action": [ "route53:ChangeResourceRecordSets", "route53:ListResourceRecordSets" ], "Resource": "arn:aws:route53:::%s" } ] }
5.1.3. AWS インフラストラクチャーと IAM リソースを個別に作成する
デフォルトでは、hcp create cluster aws
コマンドは、クラウドインフラストラクチャーをホステッドクラスターとともに作成し、それを適用します。hcp create cluster aws
コマンドを使用してクラスターの作成だけを実行したり、クラスターを生成して適用する前に変更したりできるように、クラウドインフラストラクチャー部分を個別に作成することもできます。
クラウドインフラストラクチャー部分を個別に作成するには、Amazon Web Services (AWS) インフラストラクチャーの作成、AWS Identity and Access (IAM) リソースの作成、およびクラスターの作成を行う必要があります。
5.1.3.1. AWS インフラストラクチャーを個別に作成する
Amazon Web Services (AWS) インフラストラクチャーを作成するには、クラスター用の Virtual Private Cloud (VPC) やその他のリソースを作成する必要があります。AWS コンソールまたはインフラストラクチャー自動化およびプロビジョニングツールを使用できます。AWS コンソールの使用手順は、AWS ドキュメントの Create a VPC plus other VPC resources を参照してください。
VPC には、プライベートサブネットとパブリックサブネット、およびネットワークアドレス変換 (NAT) ゲートウェイやインターネットゲートウェイなどの外部アクセス用のリソースが含まれている必要があります。VPC に加えて、クラスターの Ingress 用のプライベートホストゾーンが必要です。PrivateLink (Private
または PublicAndPrivate
アクセスモード) を使用するクラスターを作成する場合は、PrivateLink 用の追加のホストゾーンが必要です。
次の設定例を使用して、ホステッドクラスター用の AWS インフラストラクチャーを作成します。
--- apiVersion: v1 kind: Namespace metadata: creationTimestamp: null name: clusters spec: {} status: {} --- apiVersion: v1 data: .dockerconfigjson: xxxxxxxxxxx kind: Secret metadata: creationTimestamp: null labels: hypershift.openshift.io/safe-to-delete-with-cluster: "true" name: <pull_secret_name> 1 namespace: clusters --- apiVersion: v1 data: key: xxxxxxxxxxxxxxxxx kind: Secret metadata: creationTimestamp: null labels: hypershift.openshift.io/safe-to-delete-with-cluster: "true" name: <etcd_encryption_key_name> 2 namespace: clusters type: Opaque --- apiVersion: v1 data: id_rsa: xxxxxxxxx id_rsa.pub: xxxxxxxxx kind: Secret metadata: creationTimestamp: null labels: hypershift.openshift.io/safe-to-delete-with-cluster: "true" name: <ssh-key-name> 3 namespace: clusters --- apiVersion: hypershift.openshift.io/v1beta1 kind: HostedCluster metadata: creationTimestamp: null name: <hosted_cluster_name> 4 namespace: clusters spec: autoscaling: {} configuration: {} controllerAvailabilityPolicy: SingleReplica dns: baseDomain: <dns_domain> 5 privateZoneID: xxxxxxxx publicZoneID: xxxxxxxx etcd: managed: storage: persistentVolume: size: 8Gi storageClassName: gp3-csi type: PersistentVolume managementType: Managed fips: false infraID: <infra_id> 6 issuerURL: <issuer_url> 7 networking: clusterNetwork: - cidr: 10.132.0.0/14 machineNetwork: - cidr: 10.0.0.0/16 networkType: OVNKubernetes serviceNetwork: - cidr: 172.31.0.0/16 olmCatalogPlacement: management platform: aws: cloudProviderConfig: subnet: id: <subnet_xxx> 8 vpc: <vpc_xxx> 9 zone: us-west-1b endpointAccess: Public multiArch: false region: us-west-1 rolesRef: controlPlaneOperatorARN: arn:aws:iam::820196288204:role/<infra_id>-control-plane-operator imageRegistryARN: arn:aws:iam::820196288204:role/<infra_id>-openshift-image-registry ingressARN: arn:aws:iam::820196288204:role/<infra_id>-openshift-ingress kubeCloudControllerARN: arn:aws:iam::820196288204:role/<infra_id>-cloud-controller networkARN: arn:aws:iam::820196288204:role/<infra_id>-cloud-network-config-controller nodePoolManagementARN: arn:aws:iam::820196288204:role/<infra_id>-node-pool storageARN: arn:aws:iam::820196288204:role/<infra_id>-aws-ebs-csi-driver-controller type: AWS pullSecret: name: <pull_secret_name> release: image: quay.io/openshift-release-dev/ocp-release:4.16-x86_64 secretEncryption: aescbc: activeKey: name: <etcd_encryption_key_name> type: aescbc services: - service: APIServer servicePublishingStrategy: type: LoadBalancer - service: OAuthServer servicePublishingStrategy: type: Route - service: Konnectivity servicePublishingStrategy: type: Route - service: Ignition servicePublishingStrategy: type: Route - service: OVNSbDb servicePublishingStrategy: type: Route sshKey: name: <ssh_key_name> status: controlPlaneEndpoint: host: "" port: 0 --- apiVersion: hypershift.openshift.io/v1beta1 kind: NodePool metadata: creationTimestamp: null name: <node_pool_name> 10 namespace: clusters spec: arch: amd64 clusterName: <hosted_cluster_name> management: autoRepair: true upgradeType: Replace nodeDrainTimeout: 0s platform: aws: instanceProfile: <instance_profile_name> 11 instanceType: m6i.xlarge rootVolume: size: 120 type: gp3 subnet: id: <subnet_xxx> type: AWS release: image: quay.io/openshift-release-dev/ocp-release:4.16-x86_64 replicas: 2 status: replicas: 0
- 1
<pull_secret_name>
は、プルシークレットの名前に置き換えます。- 2
<etcd_encryption_key_name>
は、etcd 暗号鍵の名前に置き換えます。- 3
<ssh_key_name>
は、SSH 鍵の名前に置き換えます。- 4
<hosted_cluster_name>
は、ホステッドクラスターの名前に置き換えます。- 5
<dns_domain>
は、example.com
などのベース DNS ドメインに置き換えます。- 6
<infra_id>
は、ホステッドクラスターに関連付けられている IAM リソースを特定する値に置き換えます。- 7
<issuer_url>
は、末尾の値がinfra_id
である発行者 URL に置き換えます。たとえば、https://example-hosted-us-west-1.s3.us-west-1.amazonaws.com/example-hosted-infra-id
です。- 8
<subnet_xxx>
は、サブネット ID に置き換えます。プライベートサブネットとパブリックサブネットの両方にタグを付ける必要があります。パブリックサブネットの場合は、kubernetes.io/role/elb=1
を使用します。プライベートサブネットの場合は、kubernetes.io/role/internal-elb=1
を使用します。- 9
<vpc_xxx>
は、VPC ID に置き換えます。- 10
<node_pool_name>
は、NodePool
リソースの名前に置き換えます。- 11
<instance_profile_name>
は、AWS インスタンスの名前に置き換えます。
5.1.3.2. AWS IAM リソースの作成
Amazon Web Services (AWS) では、次の IAM リソースを作成する必要があります。
- IAM 内の OpenID Connect (OIDC) アイデンティティープロバイダー。これは STS 認証を有効にするために必要です。
- 7 つのロール。Kubernetes コントローラーマネージャー、クラスター API プロバイダー、レジストリーなど、プロバイダーとやり取りするコンポーネントごとに分かれたロールです。
- インスタンスプロファイル。これは、クラスターのすべてのワーカーインスタンスに割り当てられるプロファイルです。
5.1.3.3. ホステッドクラスターを個別に作成する
Amazon Web Services (AWS) にホステッドクラスターを個別に作成できます。
ホステッドクラスターを個別に作成するには、次のコマンドを入力します。
$ hcp create cluster aws \ --infra-id <infra_id> \1 --name <hosted_cluster_name> \2 --sts-creds <path_to_sts_credential_file> \3 --pull-secret <path_to_pull_secret> \4 --generate-ssh \5 --node-pool-replicas 3 --role-arn <role_name> 6
- 1
<infra_id>
をcreate infra aws
コマンドで指定したのと同じ ID に置き換えます。この値は、ホステッドクラスターに関連付けられている IAM リソースを識別します。- 2
<hosted_cluster_name>
は、ホステッドクラスターの名前に置き換えます。- 3
<path_to_sts_credential_file>
は、create infra aws
コマンドで指定した名前と同じ名前に置き換えます。- 4
<path_to_pull_secret>
を有効な OpenShift Container Platform プルシークレットを含むファイルの名前に置き換えます。- 5
--generate-ssh
フラグはオプションですが、ワーカーに SSH 接続する必要がある場合に含めるとよいでしょう。SSH キーが生成され、ホステッドクラスターと同じ名 namespace にシークレットとして保存されます。- 6
<role_name>
は、Amazon Resource Name (ARN) に置き換えます (例:arn:aws:iam::820196288204:role/myrole
)。Amazon Resource Name (ARN) を指定します (例:arn:aws:iam::820196288204:role/myrole
)。ARN ロールの詳細は、「Identity and Access Management (IAM) 権限」を参照してください。
コマンドに --render
フラグを追加して、クラスターに適用する前にリソースを編集できるファイルに出力をリダイレクトすることもできます。
コマンドを実行すると、次のリソースがクラスターに適用されます。
- namespace
- プルシークレットを含むシークレット
-
HostedCluster
-
NodePool
- コントロールプレーンコンポーネントの 3 つの AWS STS シークレット
-
--generate-ssh
フラグを指定した場合は、1 つの SSH キーシークレット。