Kubernetesクラスタの作成
Terraformを使用して、Oracle Cloud InfrastructureアカウントにKubernetesクラスタを設定します。
主なタスクは:
- Terraformチュートリアルから既存のスクリプトをコピーします。
- 既存のスクリプトを編集して再利用します。
- Kubernetesクラスタ用の新しいスクリプトを記述します。

詳細は、次を参照してください:
開始前
このチュートリアルを正常に実行するには、次が必要です:
- 有料Oracle Cloud Infrastructureアカウント。無料Oracle Cloudプロモーションのリクエストおよび管理を参照してください。
- MacOS、LinuxまたはWindowsコンピュータ。
- Terraformチュートリアル・リソース:
- 次のすべてのステップを実行します:
- 作成したスクリプトを次のディレクトリに保持します:
$HOME/tf-simple-infrastructure/
1. 必要な情報の収集
ノード・プール内のコンピュート・インスタンスの情報を収集します。
VM.Standard2.1
を使用します。<node-shape>
VM.Standard2.1
をメモ帳に保存します。
2. 既存のスクリプトのコピー
OCI Terraformを使用した単純なインフラストラクチャの設定で作成されたスクリプトをコピーします。次に、コンピュート・インスタンスに関連するスクリプトおよび出力を削除します。次の項では、コンピュート・インスタンスを使用してノード・プールを宣言します。
3. スクリプトの作成
クラスタ、ノード・プールおよび出力の印刷用のスクリプトを作成します。
引数参照(oci_containerengine_cluster)で、必要なすべての引数を検索します。
- compartment_id
- kubernetes_version
- 名前
- vcn_id
引数参照(oci_containerengine_cluster)にナビゲートするには:
- Oracle Cloud Infrastructureプロバイダに移動します。
- 左上の「フィルタ」ボックスに、
container engine
と入力します。結果は、データ・ソースとリソースの両方に対して返されます。
- 「コンテナ・エンジン」で、「リソース」に移動し、oci_containerengine_clusterを選択します。
- 「引数参照」を選択します。
「引数参照」が開きます。
リソース・ブロックを作成します:
- キーワード
resource
を使用してリソース・ブロックを宣言します - リソースタイプ
"oci_containerengine_cluster"
のラベルを追加します - ローカル名のラベルを追加します(任意):
- ラベルには、文字、数字、アンダースコア(
_
)およびハイフン(-
)を含めることができます。最初の文字は数字にできません。 - 例:
"oke-cluster"
- ラベルには、文字、数字、アンダースコア(
- コード・ブロック内で、必要な引数の値を指定します:
- compartment_id:
compartment.tf
で宣言されているコンパートメントを指します:oci_identity_compartment.tf-compartment.id
- kubernetes_version:このチュートリアルでは、バージョン
v1.21.5
を使用します。最新バージョンのコンソールで「クイック作成」オプションを選択できます。 - name:任意の名前を割り当てます。
- vcn_id:
vcn-module.tf
で宣言されているコンパートメントを指します:module.vcn.vcn_id
必須引数にはデフォルト値がありません。
- compartment_id:
- 次のオプションの引数に値を指定して、デフォルト値をオーバーライドします。
- add_ons:次の引数に
true
またはfalse
を割り当てます:- is_kubernetes_dashboard_enabled
- is_tiller_enabled
- kubernetes_network_config: CIDRブロックを次の引数の文字列として割り当てます:
pods_cidr
services_cidr
ノート
ポッドのCIDRブロックは、ワーカー・ノードおよびロード・バランサ・サブネットのCIDRブロックと重複できません。
KubernetesサービスのCIDRブロックはVCN CIDRブロックと重複できません。
このチュートリアルのサンプル・コードでは、コンソールのクイック作成オプションと同じCIDRブロックを使用します。
詳細は、CIDRブロックおよびKubernetesエンジン(OKE)を参照してください。
- service_lb_subnet_ids:
public-subnet.tf
で宣言したパブリック・サブネットを割り当てますノート
引数service_lb_subnet_idsは、サブネットIDのリストを受け入れます:- サブネットが1つある場合でも、大カッコを使用してリストを示します。
- 例:
[oci_core_subnet.vcn-public-subnet.id]
- add_ons:次の引数に
アラーム参照(oci_containerengine_node_pool)で、必要なすべての引数を検索します。
- cluster_id
- compartment_id
- kubernetes_version
- 名前
- node_config_details
- placement_configs
- availability_domain
- subnet_id
- placement_configs
- node_shape
- node_source_details
- image_id
- source_type
アラーム参照(oci_containerengine_node_pool)にナビゲートするには:
- Oracle Cloud Infrastructureプロバイダに移動します。
- 左上の「フィルタ」ボックスに、
container engine
と入力します。結果は、データ・ソースとリソースの両方に対して返されます。
- 「コンテナ・エンジン」で、「リソース」に移動し、oci_containerengine_node_poolを選択します。
- 「引数参照」を選択します。
「引数参照」が開きます。
リソース・ブロックを作成します:
- キーワード
resource
を使用してリソース・ブロックを宣言します - リソース・タイプのラベルを追加します:
"oci_containerengine_node_pool"
- ローカル名のラベルを追加します(任意):
- ラベルには、文字、数字、アンダースコア(
_
)およびハイフン(-
)を含めることができます。最初の文字は数字にできません。 - 例:
"oke-node-pool"
- ラベルには、文字、数字、アンダースコア(
- コード・ブロック内で、必要な引数の値を指定します:
- cluster_id:
cluster.tf
で宣言されているクラスタを指します:oci_containerengine_cluster.oke-cluster.id
- compartment_id
compartment.tf
で宣言されているコンパートメントを指します:oci_identity_compartment.tf-compartment.id
- kubernetes_version:このチュートリアルでは、コンソールのクラスタの作成ウィザードと同じバージョンを使用します。
- name:任意の名前を割り当てます。コンソールのクラスタの作成ウィザードでは、
pool1
という名前を使用します。 - node_shape: 1項で収集した情報を入力します。
- node_source_details:
- image_id: 1項で収集した情報を入力します。
- source_type:
"image"
に設定します。
- cluster_id:
- 次のオプションの引数に値を指定して、デフォルト値をオーバーライドします。
- initial_node_labels:ノードにキー/値のペアを割り当てます。
- key:任意のキーを割り当てます。コンソールの「クイック作成」オプションでは、キー
"name"
が作成されます。 - value:キーに値を割り当てます。コンソールの「クイック作成」オプションは、
"<your-cluster-name>"
を"name"
キーに割り当てます。
- key:任意のキーを割り当てます。コンソールの「クイック作成」オプションでは、キー
- initial_node_labels:ノードにキー/値のペアを割り当てます。
この項では、クラスタおよびノード・プールの出力を宣言します。
- clusterの出力については、属性リファレンス(oci_containerengine_cluster)を参照してください。
- ノード・プールの出力については、属性リファレンス(oci_containerengine_node_pool)を参照してください。
リスト・アイテムの出力
- 通常、リスト属性は複数形(末尾はs)です。
- ノード・プールのリスト属性の例:
node_config_details
- リスト内のすべての属性を出力するには、リスト属性を単独でカッコなしで使用します。
- 次に例を示します:
output "node-configuration-details"{ value = oci_containerengine_node_pool.oke-node-pool.node_config_details }
サンプル出力:
node-configuration-details = [ { "placement_configs" = [ { "availability_domain" = "QnsC:US-ASHBURN-AD-1" "subnet_id" = "ocid1.subnet.xxx" }, { "availability_domain" = "QnsC:US-ASHBURN-AD-2" "subnet_id" = "ocid1.subnet.xxx" }, { "availability_domain" = "QnsC:US-ASHBURN-AD-3" "subnet_id" = "ocid1.subnet.xxx" }, ] "size" = 3 }, ]
- リストからアイテムを出力またはコールするには:
- 次のフォーマットを使用します:
<list-attribute-name>[index].<attribute-from-list>
-
[index]
を次のように置き換えます:- 1つ目のアイテムの場合は[0]。
- 2つ目のアイテムの場合は[1]。
- ...
- (n+1)thアイテムの場合は[n]。
- 次のフォーマットを使用します:
- 次に例を示します:
size
属性の値:output "node-size" { value = oci_containerengine_node_pool.oke-node-pool.node_config_details[0].size }
4. スクリプトの実行
Terraformスクリプトを実行して、コンパートメント、仮想クラウド・ネットワーク、Kubernetesクラスタおよびノード・プールを作成します。
oci
プロバイダのプラグインを含む.terraform
というフォルダが作成されました。Terraformスクリプトを実行します:
terraform apply
確認を求められた場合は、作成するリソースにyes
を入力します。
クラスタの作成には15分以上かかる場合があります。Terraformによってリソースが作成されたら、ターミナルで出力を確認します。
Apply complete! Resources: 14 added, 0 changed, 0 destroyed.
Outputs:
...
cluster-OCID = ocid1.cluster.xxx
cluster-kubernetes-version = "v1.21.5"
cluster-name = <your-cluster-name>
cluster-state = ACTIVE
...
node-pool-OCID = ocid1.nodepool.xxx
node-pool-kubernetes-version = "v1.21.5"
node-pool-name = "pool1"
node-shape = "VM.Standard2.1"
node-size = 3
...
- 401エラー- (Service error:NotAuthenticated):
- 次のいずれかの値が正しくありません:
- テナンシOCID
- ユーザーOCID
- フィンガープリント
- RSA秘密キー(パスまたはキー)
- 次のいずれかの値が正しくありません:
- そのようなホストはありません:
- 次の値が正しくありません:
- リージョン識別子
- 次の値が正しくありません:
参照:
次の処理
完了!Terraformを使用して、Oracle Cloud InfrastructureアカウントにKubernetesクラスタが作成されました。
Kubernetesクラスタができたので、開発者チュートリアルでKubernetesチュートリアルを試してください。
Oracle製品を使用した開発の詳細を確認するには、次のサイトを参照してください: