api_fingerprint (必須)
|
アップロードしたAPI署名キーのフィンガープリント。 |
api_private_key_path (必須)
|
プライベートAPI署名キーが格納されているファイルのフルパスと名前。 |
compartment_id (必須)
|
リソースを作成するコンパートメントのOCID。 |
tenancy_id (必須)
|
テナンシのOCID。 |
user_id (必須)
|
TerraformでOracle Cloud Infrastructureによる認証に使用するユーザーのOCID。 |
ssh_private_key_path |
ベース・ホストに指定する公開キーに対応する秘密SSHキーが含まれるファイルのフルパスと名前。
この値は、ベース・ホストへのアクセスに使用できるsshコマンドを作成するために使用します。Terraform構成を適用すると、出力にsshコマンドが表示されます。Terraformは秘密キーの読取りやコピーを行いません。
|
ssh_public_key_path |
ベース・ホストに指定する公開SSHキーが格納されているファイルのフルパスと名前。 |
label_prefix |
短い識別子。リソースの名前に接頭辞として使用します。
名前を参照してリソースの目的または性質を識別するのに役立つ文字列を使用します。たとえば、Terraform構成を使用してテスト環境またはステージング環境を設定する場合は、接頭辞testまたはstagingを使用することを検討してください。
|
region |
リソースを作成するリージョンのID。 たとえば、米国東部(Ashburn)地域のIDはus-ashburn-1です。
|
nat_gateway_enabled |
trueを指定すると、VCN用のNATゲートウェイを作成できます。
NATゲートウェイは、パブリック・インターネット上のホストにアクセスする必要のあるプライベートなコンピュート・インスタンス(管理ホストまたはKubernetesワーカー・ノードなど)がある場合に必要です。
|
newbitsおよびnetnum |
この構成を適用すると、Terraformによって、newbitsとnetnumの値が引数としてTerraformファンクションcidrsubnet()に渡されます。この関数は、bastionホスト、管理ホスト、ロード・バランサ・ノードおよびKubernetes workerノードのサブネットのCIDR接頭辞を計算します。
newbitsは、サブネットのサイズを決定するために使用されます。VCNのネットマスクと、ベース・サブネットに必要なネットマスクとの相違点です。
たとえば、/16 VCNにネットマスク/29を持つサブネットを作成するには、newbitsの値として13を指定します(29から16を指定)。
newbits値を低くすると、より大きなアドレス空間を持つサブネットが発生します。
netnumは、サブネットの境界の決定に使用されます。newbitsでネットワークをマスクする場合、サブネットのゼロベースの索引です。
前の例で続いて、newbits=13とnetnum=0を指定すると、cidrsubnet()ファンクションは、10.0.0.0/16 VCN内の最初の/29アドレス空間であるサブネットCIDR接頭辞10.0.0.0/29を戻します。
デフォルトの値 netnum = {
admin = 33
bastion = 32
int_lb = 16
pub_lb = 17
workers = 1
}
newbits = {
admin = 13
bastion = 13
lb = 11
workers = 2
}
これらの変数をデフォルト値のままにしてVCNのCIDR範囲として 10.0.0.0/16を指定すると、Terraformファンクション cidrsubnet()でサブネットの次のCIDR接頭辞が計算されます。利用可能なアドレスはカッコ内に表示されます。最初の2つのアドレスとサブネット内の最後のアドレスは、ネットワーク・サービスによって予約されます。
- バス・サブネット:
10.0.1.0/29 (使用可能なアドレス: 10.0.1.2から10.0.1.6。つまり、5ホスト)
- 管理サブネット:
10.0.1.8/29( 10.0.1.10から10.0.1.14、5ホスト)
- 内部ロード・バランサ・サブネット:
10.0.2.0/27( 10.0.2.2から10.0.2.30; 29ノード)
- パブリック・ロード・バランサ・サブネット:
10.0.2.32/27( 10.0.2.34から10.0.2.62。29ノード)
- Kubernetesワーカー・ノード・サブネット:
10.0.64.0/18(10.0.64.2から10.0.127.254; 16381ノード)
デフォルト設定と異なるアドレスまたはサイズのサブネットが必要な場合は、newbitsおよびnetnumの適切な値を決定する必要があります。これを行うには、クラスレスIPアドレスに関する基本的な知識が必要です。cidrsubnet()関数については、Terraformのドキュメントも参照してください。
ここで指定するCIDRブロックは、Kubernetesポッド(pods_cidr)に指定するCIDRブロックと重ならないようにしてください。
|
service_gateway_enabled |
VCNのサービス・ゲートウェイを作成する場合は、trueを指定します。
VCNのコンピュート・インスタンスがOracle Cloud Infrastructure Object Storageなどの他のOracleサービスにアクセスする必要がある場合、サービス・ゲートウェイが必要です。
|
vcn_cidr |
VCNで選択するIPv4 CIDRブロック。
デフォルトは10.0.0.0/16です。許容範囲は、/16から/30です。
ここで指定するCIDRブロックは、Kubernetesサービス(services_cidr)に指定するCIDRブロックと重複しないようにしてください。
|
vcn_dns_label |
VCNの内部DNS名の名前接頭辞。
ここで指定する名前は、oraclevcn.comの接頭辞として、VCNのDNSドメイン名を構成します。たとえば、接頭辞としてokeを指定すると、VCNのDNSドメイン名はoke.oraclevcn.comになります
|
vcn_name |
VCNリソースの名前。 |
bastion_access |
ベースへのSSHアクセスを許可する必要があるIPアドレス(CIDR表記)の範囲。
ホスト(つまり、0.0.0.0/0)からのSSHアクセスを許可するには、この変数をデフォルト値のANYWHEREのままにします。
|
bastion_enabled |
ベース・ホストを作成する場合はtrueを指定します。
|
bastion_image_id |
ベース・ホストの作成に使用されるイメージのOCID。
この変数をデフォルト値のNONEのままにすると、Oracle Autonomous Linuxイメージが使用されます。
|
bastion_notification_enabled |
Oracle Cloud Infrastructure Notificationサービスを使用すると、更新が適用されたとき、またはOracle Kspliceによって検出されたことがわかっているときに、bastionホストからステータス・メッセージを受信できます。
ベース・ホストに対して通知の送信を有効にする場合は trueを指定します。
注意: このソリューションのTerraformコードでは、デフォルトのOracle Autonomous Linuxイメージを使用している場合のみ、bastionホストの通知を構成します。
|
bastion_notification_endpoint |
通知の送信先となる電子メール・アドレス。この変数は、bastion_notification_enabledをtrueに設定した場合は必須です。
|
bastion_notification_protocol |
この変数をEMAILに設定します。
|
bastion_notification_topic |
作成される通知トピックの名前。この変数は、bastion_notification_enabledをtrueに設定した場合は必須です。
|
bastion_package_upgrade |
ホストが初めて起動したときに、ベース・ホストのセキュリティ・パッケージをアップグレードする場合は、trueを指定します。
この変数がtrueに設定されている場合、ベース・ホストがプロビジョニングされた後、セキュリティ・パッケージがアップグレードされる間その変数は短期間使用できないことに注意してください。ただし、このアップグレードを有効にすることで、回復ホストの脆弱性が最小限に抑えられます。
|
bastion_shape |
ベース・ホストに使用するコンピュート・シェイプ。 |
bastion_timezone |
IANAのタイムゾーン形式(America/Los_Angelesなど)で、bastionホストに対して構成するタイムゾーン。
|
admin_enabled |
管理ホストを作成する場合は、trueを指定します。
|
admin_image_id |
ベース・ホストの作成に使用されるイメージのOCID。
この変数をデフォルト値のNONEのままにすると、Oracle提供のLinuxイメージが使用されます。
|
admin_instance_principal |
管理ホストが指定したコンパートメント内のすべてのリソースを管理できるようにする場合は、trueを指定します。
CLIコマンドを実行する場合、または管理ホストからAPIコールを作成してトポロジ内のリソースを管理する場合は、この機能を使用します。
注意: SSHを使用してコンピュート・インスタンスに接続できるユーザーは、インスタンスに付与されているインスタンス権限を継承します。管理ホストをインスタンス・プリンシパルとして指定するかどうかを決定する際には、このことを考慮してください。この機能は、管理ホストに影響を及ぼすことなく、いつでもオフまたは有効にできます。
この変数をtrueに設定した場合、管理ホストは動的グループのメンバーになり、動的グループがコンパートメント内のすべてのリソースを管理できるようにポリシー文が作成されます。
|
|
admin_notification_enabled
admin_notification_endpoint
admin_notification_protocol
admin_notification_topic
|
これらの変数はデフォルト値のままにします。管理ホストでの通知の有効化は、現在このTerraformコードではサポートされていません。 |
admin_package_upgrade |
ホストが初めて起動したときに管理ホストのセキュリティ・パッケージをアップグレードする場合は、trueを指定します。
この変数がtrueに設定されている場合、管理ホストがプロビジョニングされた後、セキュリティ・パッケージがアップグレードされる間その変数は短期間使用できないことに注意してください。ただし、このアップグレードを有効にすることで、管理ホストの脆弱性を最小限に抑えることができます。
|
admin_shape |
管理ホストで使用するコンピュート・シェイプ。 |
admin_timezone |
IANAタイムゾーン書式(America/Los_Angelesなど)で管理ホストに対して構成するタイムゾーン。
|
availability_domains |
管理ホストおよびベース・ホストをプロビジョニングする可用性ドメイン。
たとえば、2番目の可用性ドメインでベース・ホストをプロビジョニングするには、bastion = 2を設定します。
指定した領域に可用性のドメインが1つのみ含まれている場合は、この変数をデフォルト値の1のままにします。
|
tagging |
計算リソースおよびネットワーク・リソースに割り当てるタグを指定します。 |
allow_node_port_access |
Kubernetesの就業者ノードがパブリック・モードでデプロイされたときにTCPトラフィックを許可する場合は、trueを指定します。
|
allow_worker_ssh_access |
Kubernetesの就業者ノードへのSSH接続をベース・ホストを介して許可する場合は、trueを指定します。
就業者ノードがパブリック・モードでデプロイされている場合でも、SSH接続はベース・ホストを経由する必要があります。
この変数をtrueに設定した場合は、bastion_enabled = trueも設定する必要があります。
|
cluster_name |
Kubernetesクラスタの名前。 |
dashboard_enabled |
デフォルトのKubernetesダッシュボードを作成する場合、trueを指定します。
|
kubernetes_version |
就業者ノードに使用されるKubernetesのバージョン。
この変数をデフォルト値のLATESTのままにすると、サポートされる最新のバージョンが選択されます。特定のバージョンを使用するには、そのバージョンを指定します。
|
node_pools |
作成されるノード・プールの数、各プールのサイズ、および就業者ノードに使用される計算図形は、次の形式で表示されます。node_pools = {
"np1" = ["computeShape", numberOfNodes]
"np2" = ["computeShape", numberOfNodes]
"np3" = ["computeShape", numberOfNodes]
...
}
np1、np2およびnp3は、個々のノード・プールを表す任意の名前です。
computeShapeは、プール内の就業者ノードに使用されるコンピュート・シェイプです。
numberOfNodesは、プールで作成されるKubernetes就業者ノードの数です。下限値を指定しても、各プールでは最低3つのノードが作成されます。
次の例は、それぞれが異なる計算形状を使用し、異なる数のKubernetesワーカー・ノードを含む2つのプールで構成されるクラスタの場合です。 node_pools = {
"np1" = ["VM.Standard2.1", 3]
"np2" = ["VM.Standard2.2", 5]
}
|
node_pool_name_prefix |
ノード・プールの名前接頭辞。
ノード・プール名は、label_prefix、node_pool_name_prefixおよびノード・プール番号の値を連結して生成されます。たとえば、label_prefix = "prod"とnode_pool_name_prefix = "np"を指定すると、ノード・プールで生成される名前は、prod-np-1、prod-np-2、prod-np-3などとなります。
|
node_pool_image_id |
Kubernetesの就業者ノードに使用されるイメージのOCID。
この変数をデフォルト値NONEのままにすると、node_pool_osおよびnode_pool_os_versionに指定した値と一致するイメージが使用されます。
|
node_pool_os |
Kubernetesのワーカー・ノードに使用するオペレーティング・システム(例: "Oracle Linux")。
この設定は、node_pool_image_id = "NONE"と設定した場合にのみ考慮されます。
|
node_pool_os_version |
Kubernetesの就業者ノード(たとえば、"7.7")に使用するオペレーティング・システムのバージョン。
この設定は、node_pool_image_id = "NONE"と設定した場合にのみ考慮されます。
|
pods_cidr |
Kubernetesポッドに選択するIPv4 CIDRブロック。
ここで指定するCIDRブロックは、VCN (vcn_cidr)に指定するCIDRブロックと重ならないようにしてください。
|
services_cidr |
Kubernetesポッドに選択するIPv4 CIDRブロック。
ここで指定するCIDRブロックは、VCN (vcn_cidr)に指定するCIDRブロックと重ならないようにしてください。
|
worker_mode |
就業者ノードがパブリック・インターネットからアクセス可能である必要がある場合は、publicを指定します。それ以外の場合は、この変数をprivateに設定します。
worker_mode = "private"を設定する場合は、nat_gateway_enabled = trueを設定します。
|
lb_subnet_typeおよびpreferred_lb_subnets |
lb_subnet_typeおよびpreferred_lb_subnetsに指定する値は、LoadBalancerタイプのKubernetesサービスを使用してデプロイするロード・バランサ・ノードで使用する必要のあるサブネットのタイプを決定します。
パブリック・ロード・バランサには、パブリックIPアドレスがあります。内部ロード・バランサにはプライベートIPアドレスのみがあり、パブリック・インターネットからはアクセスできません。
- パブリック・ロード・バランサを使用する場合は、
preferred_lb_subnet = "public"およびsubnet_typeを"both"または"public"のいずれかに設定します。
- 内部ロード・バランサを使用する場合は、
preferred_lb_subnet = "internal"とsubnet_typeを"both"または"internal"のいずれかに設定します
ロード・バランサ・サブネットを内部に設定した場合でも、内部ロード・バランサ・サービスの作成時に適切な注釈(service.beta.kubernetes.io/oci-load-balancer-internal: "true"など)を設定する必要があります。サブネットをプライベートに設定すれば十分ではありません。
内部ロード・バランサの作成の詳細は、Oracle Cloud Infrastructureのドキュメントを参照してください。
|
secret_id |
Oracle Cloud Infrastructure VaultサービスのシークレットのID。Oracle Cloud Infrastructure Registryからアプリケーション・イメージをプルするための認証トークンが格納されています。
次の設定も行う必要があります。 bastion_enabled = true
admin_enabled = true
admin_instance_principal = true
|
email_address |
Dockerのシークレットを生成するときに使用する電子メール・アドレス。Eメール・アドレスは必須ですが、指定内容は重要ではありません。
この変数は、secret_idを指定する場合は必須です。
|
tenancy_name |
Kubernetesクラスタへのデプロイメントのためにイメージを取得する必要があるレジストリを含むテナンシのOracle Cloud Infrastructure Object Storageネームスペース。
この変数は、secret_idを指定する場合は必須です。
|
username |
secret_idに格納されている認証トークンを生成したユーザー名。
この変数は、secret_idを指定する場合は必須です。
|
install_helm |
Helmをインストールする場合は、trueを指定します。
Helmは、Kubernetesのパッケージ・マネージャです。
Helmをインストールするには、admin_instance_principal = trueも設定する必要があります。
|
helm_version |
インストールするHelmクライアントのバージョン。
Tiller (Helmのサーバー側の機能)は、自動的にアップグレードされます。
|
install_calico |
Calicoをインストールする場合は、trueを指定します。
Calicoを使用すると、Kubernetesクラスタにデプロイされたコンテナ・ワークロードにネットワーク・ポリシーを実装できます。
install_calico = trueを設定した場合、次の設定も行う必要があります。 bastion_enabled = true
admin_enabled = true
admin_instance_principal = true
|
calico_version |
インストールされるCalicoのバージョン。 |
install_metricserver |
Kubernetes Metrics Serverをインストールする場合は、trueを指定します。
デフォルトでは、最新バージョンはkube-systemネームスペースにインストールされます。Kubernetes Metrics Serverは、クラスタ全体のリソース使用率データを集約します。
install_metricserver = trueを設定した場合、次の設定も行う必要があります。 bastion_enabled = true
admin_enabled = true
admin_instance_principal = true
|
use_encryption |
Oracle Cloud Infrastructure Vaultサービスを使用してKubernetesシークレットを暗号化する場合は、この変数をtrueに設定します。
use_encryption = trueを設定した場合、次の設定も行う必要があります。 bastion_enabled = true
admin_enabled = true
admin_instance_principal = true
|
existing_key_id |
Oracle Cloud Infrastructure Vaultサービスで作成された既存のキーのOCID。
この変数は、use_encryptionをtrueに設定した場合は必須です。
|
create_service_account |
外部のプロセスおよびツール(CI/CDパイプラインなど)からクラスタにアクセスする場合は、この変数をtrueに設定します。サービス・アカウントは、独自の認証トークンを使用して作成されます。
create_service_account = trueを設定した場合、次の設定も行う必要があります。 bastion_enabled = true
admin_enabled = true
admin_instance_principal = true
|
service_account_name |
作成するサービス・アカウントの名前。 |
service_account_namespace |
アカウントを作成するKubernetesネームスペース。 |
service_account_cluster_role_binding |
サービス・アカウントのクラスタ・ロール・バインディングの名前。 |