第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 によって管理されている場合、インフラストラクチャーの要件は、クラスターがパブリック、プライベート、またはその組み合わせであるかによって異なります。

パブリッククラスターを使用するアカウントの場合、インフラストラクチャー要件は次のとおりです。

  • ノードプールには、RoleRolePolicy が定義された 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 リソースを作成する必要があります。

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 キーシークレット。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.