AWS の管理クラスタ構成

クラスタ構成ファイルを作成するには、以前の展開の既存の構成ファイルを Amazon Web Services (AWS) にコピーして更新します。また、空のテンプレートを使用してファイルを最初から作成することもできます。

管理クラスタ構成テンプレート

次に示すテンプレートには、AWS への管理クラスタの展開に関連するすべてのオプションが含まれています。このテンプレートをコピーして使用し、管理クラスタを AWS に展開できます。

必須オプションはコメント解除されています。オプションの設定はコメントアウトされています。必要に応じて、デフォルト値が含まれています。

#! ---------------------------------------------------------------------
#! Basic cluster creation configuration
#! ---------------------------------------------------------------------

CLUSTER_NAME:
CLUSTER_PLAN: dev
INFRASTRUCTURE_PROVIDER: aws
# CLUSTER_API_SERVER_PORT:
ENABLE_CEIP_PARTICIPATION: true
ENABLE_AUDIT_LOGGING: true
CLUSTER_CIDR: 100.96.0.0/11
SERVICE_CIDR: 100.64.0.0/13
# CAPBK_BOOTSTRAP_TOKEN_TTL: 30m

#! ---------------------------------------------------------------------
#! Node configuration
#! AWS-only MACHINE_TYPE settings override cloud-agnostic SIZE settings.
#! ---------------------------------------------------------------------

# SIZE:
# CONTROLPLANE_SIZE:
# WORKER_SIZE:
CONTROL_PLANE_MACHINE_TYPE: t3.large
NODE_MACHINE_TYPE: m5.large
# OS_NAME: ""
# OS_VERSION: ""
# OS_ARCH: ""

#! ---------------------------------------------------------------------
#! AWS configuration
#! ---------------------------------------------------------------------

AWS_REGION:
AWS_NODE_AZ: ""
AWS_ACCESS_KEY_ID:
AWS_SECRET_ACCESS_KEY:
AWS_SSH_KEY_NAME:
BASTION_HOST_ENABLED: true
# AWS_NODE_AZ_1: ""
# AWS_NODE_AZ_2: ""
# AWS_VPC_ID: ""
# AWS_PRIVATE_SUBNET_ID: ""
# AWS_PUBLIC_SUBNET_ID: ""
# AWS_PUBLIC_SUBNET_ID_1: ""
# AWS_PRIVATE_SUBNET_ID_1: ""
# AWS_PUBLIC_SUBNET_ID_2: ""
# AWS_PRIVATE_SUBNET_ID_2: ""
# AWS_PRIVATE_NODE_CIDR: 10.0.0.0/24
# AWS_PUBLIC_NODE_CIDR: 10.0.1.0/24
# AWS_PRIVATE_NODE_CIDR_1: 10.0.2.0/24
# AWS_PUBLIC_NODE_CIDR_1: 10.0.3.0/24
# AWS_PRIVATE_NODE_CIDR_2: 10.0.4.0/24
# AWS_PUBLIC_NODE_CIDR_2: 10.0.5.0/24
# AWS_SECURITY_GROUP_BASTION: sg-12345
# AWS_SECURITY_GROUP_CONTROLPLANE: sg-12346
# AWS_SECURITY_GROUP_APISERVER_LB: sg-12347
# AWS_SECURITY_GROUP_NODE: sg-12348
# AWS_SECURITY_GROUP_LB: sg-12349
# DISABLE_TMC_CLOUD_PERMISSIONS: false # Deactivates IAM permissions required for TMC enablement

#! ---------------------------------------------------------------------
#! Image repository configuration
#! ---------------------------------------------------------------------

# TKG_CUSTOM_IMAGE_REPOSITORY: ""
# TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE: ""

#! ---------------------------------------------------------------------
#! Proxy configuration
#! ---------------------------------------------------------------------

# TKG_HTTP_PROXY: ""
# TKG_HTTPS_PROXY: ""
# TKG_NO_PROXY: ""

#! ---------------------------------------------------------------------
#! Machine Health Check configuration
#! ---------------------------------------------------------------------

ENABLE_MHC:
ENABLE_MHC_CONTROL_PLANE: true
ENABLE_MHC_WORKER_NODE: true
MHC_UNKNOWN_STATUS_TIMEOUT: 5m
MHC_FALSE_STATUS_TIMEOUT: 12m

#! ---------------------------------------------------------------------
#! Identity management configuration
#! ---------------------------------------------------------------------

IDENTITY_MANAGEMENT_TYPE: "none"

#! Settings for IDENTITY_MANAGEMENT_TYPE: "oidc"
# CERT_DURATION: 2160h
# CERT_RENEW_BEFORE: 360h
# OIDC_IDENTITY_PROVIDER_CLIENT_ID:
# OIDC_IDENTITY_PROVIDER_CLIENT_SECRET:
# OIDC_IDENTITY_PROVIDER_GROUPS_CLAIM: groups
# OIDC_IDENTITY_PROVIDER_ISSUER_URL:
# OIDC_IDENTITY_PROVIDER_SCOPES: "email,profile,groups"
# OIDC_IDENTITY_PROVIDER_USERNAME_CLAIM: email

#! The following two variables are used to configure Pinniped JWTAuthenticator for workload clusters
# SUPERVISOR_ISSUER_URL:
# SUPERVISOR_ISSUER_CA_BUNDLE_DATA:

#! Settings for IDENTITY_MANAGEMENT_TYPE: "ldap"
# LDAP_BIND_DN:
# LDAP_BIND_PASSWORD:
# LDAP_HOST:
# LDAP_USER_SEARCH_BASE_DN:
# LDAP_USER_SEARCH_FILTER:
# LDAP_USER_SEARCH_USERNAME: userPrincipalName
# LDAP_USER_SEARCH_ID_ATTRIBUTE: DN
# LDAP_USER_SEARCH_EMAIL_ATTRIBUTE: DN
# LDAP_USER_SEARCH_NAME_ATTRIBUTE:
# LDAP_GROUP_SEARCH_BASE_DN:
# LDAP_GROUP_SEARCH_FILTER:
# LDAP_GROUP_SEARCH_USER_ATTRIBUTE: DN
# LDAP_GROUP_SEARCH_GROUP_ATTRIBUTE:
# LDAP_GROUP_SEARCH_NAME_ATTRIBUTE: cn
# LDAP_ROOT_CA_DATA_B64:

#! ---------------------------------------------------------------------
#! Antrea CNI configuration
#! ---------------------------------------------------------------------

# ANTREA_NO_SNAT: true
# ANTREA_NODEPORTLOCAL: true
# ANTREA_NODEPORTLOCAL_ENABLED: true
# ANTREA_NODEPORTLOCAL_PORTRANGE: 61000-62000
# ANTREA_TRAFFIC_ENCAP_MODE: "encap"
# ANTREA_PROXY: true
# ANTREA_PROXY_ALL: true
# ANTREA_PROXY_LOAD_BALANCER_IPS: false
# ANTREA_PROXY_NODEPORT_ADDRS:
# ANTREA_PROXY_SKIP_SERVICES: ""
# ANTREA_POLICY: true
# ANTREA_TRACEFLOW: true
# ANTREA_DISABLE_UDP_TUNNEL_OFFLOAD: false
# ANTREA_ENABLE_USAGE_REPORTING: false
# ANTREA_EGRESS: true
# ANTREA_EGRESS_EXCEPT_CIDRS: ""
# ANTREA_FLOWEXPORTER: false
# ANTREA_FLOWEXPORTER_COLLECTOR_ADDRESS: "flow-aggregator.flow-aggregator.svc:4739:tls"
# ANTREA_FLOWEXPORTER_POLL_INTERVAL: "5s"
# ANTREA_FLOWEXPORTER_ACTIVE_TIMEOUT: "5s"
# ANTREA_FLOWEXPORTER_IDLE_TIMEOUT: "15s"
# ANTREA_IPAM: false
# ANTREA_KUBE_APISERVER_OVERRIDE: ""
# ANTREA_MULTICAST: false
# ANTREA_MULTICAST_INTERFACES: ""
# ANTREA_NETWORKPOLICY_STATS: true
# ANTREA_SERVICE_EXTERNALIP: true
# ANTREA_TRANSPORT_INTERFACE: ""
# ANTREA_TRANSPORT_INTERFACE_CIDRS: ""

AWS 接続設定

AWS アカウント、およびクラスタを展開するリージョンとアベイラビリティ ゾーンに関する情報を提供するには、次のいずれかを実行します。

  • (推奨)AWS CLI を使用して AWS 認証情報プロファイルを構成し、ブートストラップ マシンのプロファイル名に AWS_PROFILE 環境変数を設定します。

  • アカウントの認証情報とその他の情報をクラスタ構成ファイルに含めます。例:

    AWS_REGION: eu-west-1
    AWS_NODE_AZ: "eu-west-1a"
    # Only use AWS_PROFILE OR combination of AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, but not both.
    AWS_PROFILE: tkg
    # AWS_ACCESS_KEY_ID:  <encoded:QUtJQVQ[...]SU82TTM=>
    # AWS_SECRET_ACCESS_KEY: <encoded:eGN4RHJmLzZ[...]SR08yY2ticQ==>
    AWS_SSH_KEY_NAME: default
    BASTION_HOST_ENABLED: true
    
    • AWS_PROFILE、または AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY の組み合わせのみを使用します。両方を使用することはできません。
    • AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY の値は Base64 でエンコードする必要があります。

API サーバに内部ロード バランサを使用する

デフォルトでは、Tanzu Kubernetes Grid on AWS は、管理クラスタの Kubernetes API サーバ用に公開ロード バランサを作成します。

エアギャップ環境やプロキシ環境などのインターネットが制限されている環境では、クラスタ構成ファイルで AWS_LOAD_BALANCER_SCHEME_INTERNALtrue に設定することで、公開ロード バランサの作成を回避できます。

AWS_LOAD_BALANCER_SCHEME_INTERNAL: true

この設定は、内部スキームを使用するように管理クラスタのロード バランサをカスタマイズします。つまり、Kubernetes API サーバにアクセスしてインターネット経由でルーティングすることはできません。

ノード サイズの構成

Tanzu CLI は、構成ファイルで指定した設定に従って、ワークロード クラスタの個々のノードを作成します。AWS では、すべてのノード仮想マシンに同じ事前定義済み構成を適用することも、制御プレーン ノードとワーカー ノードにそれぞれ異なる事前定義済み構成を設定することもできます。これらの設定を使用すると、管理クラスタ ノードにそれぞれ異なる構成のノードを持つ Tanzu Kubernetes クラスタを作成できます。また、制御プレーン ノードとワーカー ノードの構成が異なるクラスタを作成することもできます。

管理クラスタを作成すると、ノード マシンのインスタンス タイプが CONTROL_PLANE_MACHINE_TYPE および NODE_MACHINE_TYPE オプションで設定されます。デフォルトでは、これらの設定はワークロード クラスタにも使用されます。最小構成は、2 個の CPU と 8 GB のメモリです。互換性のあるインスタンス タイプのリストは、リージョンによって異なります。

CONTROL_PLANE_MACHINE_TYPE: "t3.large"
NODE_MACHINE_TYPE: "m5.large"

これらの設定は、SIZECONTROLPLANE_SIZE、および WORKER_SIZE オプションを使用してオーバーライドできます。すべての制御プレーンおよびワーカー ノードの仮想マシンのサイズが同じ Tanzu Kubernetes クラスタを作成するには、SIZE 変数を指定します。SIZE 変数を設定すると、設定した構成を使用してすべてのノードが作成されます。Amazon EC2 のノード インスタンスのさまざまなサイズの構成については、「Amazon EC2 Instance Types」を参照してください。

SIZE: "t3.large"

制御プレーンおよびワーカー ノードの仮想マシンのサイズが異なるワークロード クラスタを作成するには、CONTROLPLANE_SIZE および WORKER_SIZE オプションを指定します。

CONTROLPLANE_SIZE: "t3.large"
WORKER_SIZE: "m5.xlarge"

CONTROLPLANE_SIZE オプションと WORKER_SIZE オプションを SIZE オプションと組み合わせることができます。たとえば、SIZE: "t3.large"WORKER_SIZE: "m5.xlarge" を指定すると、制御プレーン ノードは t3.large に設定され、ワーカー ノードは m5.xlarge に設定されます。

SIZE: "t3.large"
WORKER_SIZE: "m5.xlarge"

VPC の構成

次の行をコメント解除して更新し、スタンドアローン管理クラスタをホストし、スタンドアローン管理クラスタによって使用される VPC およびその他の AWS インフラストラクチャを指定します。

AWS_REGION:
AWS_NODE_AZ:
AWS_PRIVATE_SUBNET_ID:
AWS_PUBLIC_SUBNET_ID:
AWS_SSH_KEY_NAME:
AWS_VPC_ID:
BASTION_HOST_ENABLED:
CONTROL_PLANE_MACHINE_TYPE:
NODE_MACHINE_TYPE:
SERVICE_CIDR:
CLUSTER_CIDR:

本番用の管理クラスタを展開する場合は、次の行もコメント解除し、追加の 2 つの制御プレーン ノードを指定します。

AWS_NODE_AZ_1:
AWS_NODE_AZ_2:
AWS_PRIVATE_SUBNET_ID_1:
AWS_PRIVATE_SUBNET_ID_2:
AWS_PUBLIC_SUBNET_ID_1:
AWS_PUBLIC_SUBNET_ID_2:

たとえば、既存の VPC 上の本番用の管理クラスタの構成は次のようになります。

AWS_REGION: us-west-2
AWS_NODE_AZ: us-west-2a
AWS_NODE_AZ_1: us-west-2b
AWS_NODE_AZ_2: us-west-2c
AWS_PRIVATE_SUBNET_ID: subnet-ID
AWS_PRIVATE_SUBNET_ID_1: subnet-ID
AWS_PRIVATE_SUBNET_ID_2: subnet-ID
AWS_PUBLIC_SUBNET_ID: subnet-ID
AWS_PUBLIC_SUBNET_ID_1: subnet-ID
AWS_PUBLIC_SUBNET_ID_2: subnet-ID
AWS_SSH_KEY_NAME: tkg
AWS_VPC_ID: vpc-ID
BASTION_HOST_ENABLED: "true"
CONTROL_PLANE_MACHINE_TYPE: m5.large
NODE_MACHINE_TYPE: m5.large
SERVICE_CIDR: 100.64.0.0/13
CLUSTER_CIDR: 100.96.0.0/11

デフォルトでは、Tanzu Kubernetes Grid は制御プレーン、ワーカー ノード、およびロード バランサを接続するための新しいセキュリティ グループを作成します。カスタム ルールが必要な場合は、セキュリティ グループを事前にプロビジョニングし、ルールセットを追加し、次に説明するように、カスタム セキュリティ グループを使用するようにクラスタを構成できます。

カスタム セキュリティ グループの構成

デフォルトでは、Tanzu Kubernetes Grid は VPC 内に 5 つのセキュリティ グループを作成します。

Tanzu Kubernetes Grid が新しいセキュリティ グループを作成するのを防ぎ、代わりにカスタム ルールセットで事前プロビジョニングされた既存のセキュリティ グループを使用するには、次の手順を実行します。

  • カスタム ルールセットを使用してセキュリティ グループを作成し、可能な限りデフォルトのルール セットと一致させます。
  • AWS_SECURITY_GROUP_* 変数をセキュリティ グループ名に設定して、クラスタ構成ファイルでカスタム セキュリティ グループを指定します。例:

    AWS_SECURITY_GROUP_BASTION: sg-12345
    

5 つのセキュリティ グループ、それらのデフォルト ルール、および対応するクラスタ構成変数を次に示します。

  • グループ: CLUSTER-NAME-bastion

    クラスタ構成変数 AWS_SECURITY_GROUP_BASTION を使用して設定します。

    ルール:

    説明 プロトコル 元のポート 先のポート 入力を許可 必須
    SSH TCP 22 22 0.0.0.0/0 いいえ
  • グループ: CLUSTER-NAME-node

    クラスタ構成変数 AWS_SECURITY_GROUP_NODE を使用して設定します。

    ルール:

    説明 プロトコル 元のポート 先のポート 入力を許可 必須
    SSH TCP 22 22 セキュリティ グループ <cluster-name>-bastion いいえ
    ノード ポート サービス TCP 30000 32767 0.0.0.0/0 いいえ(以下の注を参照)
    Kubelet API TCP 10250 10250 セキュリティ グループ <cluster-name>-controlplane および <cluster-name>-node はい
    Antrea CNI TCP 10349-10351 10349-10351 セキュリティ グループ <cluster-name>-node はい
    GENEVE UDP 6081 6081 セキュリティ グループ <cluster-name>-node はい

    0.0.0.0/0 は、VPC 内、ピアリングされた VPC、および VPN または DirectConnect 経由で接続されたネットワークからのみの受信です。0.0.0.0/0 は、インターネットにアクセス可能であると解釈しないでください。管理者であれば、ノード ポート サービスのポート範囲と入力方向ルールの両方を変更でき、クラスタの機能には使用されません。

  • グループ: CLUSTER-NAME-controlplane

    クラスタ構成変数 AWS_SECURITY_GROUP_CONTROLPLANE を使用して設定します。

    ルール:

    説明 プロトコル 元のポート 先のポート 入力を許可 必須
    SSH TCP 22 22 セキュリティ グループ <cluster-name>-bastion いいえ
    Kubernetes API TCP 6443* 6443* セキュリティ グループ <cluster-name>-apiserver-lb、<cluster-name>-apiserver-controlplane、および <cluster-name>-apiserver-node はい
    etcd TCP 2379 2379 セキュリティ グループ <cluster-name>-controlplane はい
    etcd peer TCP 2380 2380 セキュリティ グループ <cluster-name>-controlplane はい
    addons-manager TCP 9865 9865 セキュリティ グループ <cluster-name>-controlplane はい
    kapp-controller TCP 10100 10100 セキュリティ グループ <cluster-name>-controlplane はい

    * CLUSTER_API_SERVER_PORT を設定した場合は 6443 を変数に設定したポート番号に置き換えます。

  • グループ: CLUSTER-NAME-apiserver-lb

    クラスタ構成変数 AWS_SECURITY_GROUP_APISERVER_LB を使用して設定します。

    ルール:

    説明 プロトコル 元のポート 先のポート 入力を許可 必須
    Kubernetes API TCP 6443* 6443* 0.0.0.0/0 いいえ(以下の注を参照)

    * CLUSTER_API_SERVER_PORT を設定した場合は 6443 を変数に設定したポート番号に置き換えます。

    ロード バランサを内部でプロビジョニングするように指定されていない場合、デフォルトでは 0.0.0.0/0 ルールはインターネットにアクセスできます。ロード バランサが内部の場合は、管理クラスタ(ワークロード クラスタの場合)またはブートストラップ マシン(管理クラスタの場合)からアクセスできる必要があります。このルールはロックダウンできますが、その場合は、次のルールを追加する必要があります。

    説明 プロトコル 元のポート 先のポート 入力を許可 必須
    クラスタ内の Kubernetes API TCP 6443* 6443* セキュリティ グループ <cluster-name>-controlplane および <cluster-name>-node はい

    * CLUSTER_API_SERVER_PORT を設定した場合は 6443 を変数に設定したポート番号に置き換えます。

  • グループ: CLUSTER-NAME-lb

    クラスタ構成変数 AWS_SECURITY_GROUP_LB を使用して設定します。

    このセキュリティ グループは、ワークロード ロード バランサに使用されます。このセキュリティ グループにはルールが追加されません。AWS 管理者が、アプリケーション ワークロード用に必要に応じてルールセットをカスタマイズすることが想定されます。

次の手順

管理クラスタ構成ファイルの更新が完了したら、「構成ファイルからの管理クラスタの展開」の手順に従って管理クラスタを作成します。

check-circle-line exclamation-circle-line close-line
Scroll to top icon