すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Terraform を使用したアドオンの管理

最終更新日:Jun 16, 2026

Container Service for Kubernetes (ACK) のアドオンはクラスターの機能を拡張するもので、クラスター作成時に指定し、その後は Terraform を使用してライフサイクルを管理します。

アドオンの種類

ACK アドオンには、システムアドオンオプションアドオンがあります。「アドオン」をご参照ください。

システムアドオン

システムアドオンは、クラスター作成時にデフォルトでインストールされる基盤となるサービスです。

例:

  • kube-apiserver

  • kube-controller-manager

  • cloud-controller-manager

  • kube-proxy

  • CoreDNS

オプションアドオン

オプションアドオンは必須ではありませんが、インストールすることでクラスターの機能を拡張できます。これらは、次のようなカテゴリに分けられます:

  • アプリケーション管理

  • ロギングとモニタリング

  • ストレージ

  • ネットワーキング

  • セキュリティ

コンソールでの Terraform 設定パラメーターの生成

ACK コンソールでは、クラスターアドオンを管理するための Terraform 設定を自動生成できます。

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。

  3. [アドオン] ページで、対象のアドオンを選択し、[インストール] または [設定] をクリックします。

  4. 表示されたダイアログボックスで [Console-to-Code] をクリックします。[Terraform] タブをクリックし、表示された設定をコピーします。

アドオン管理のベストプラクティス

クラスター作成時にアドオンを指定し、そのライフサイクルを管理します。以降のセクションでは、さまざまなシナリオにおけるライフサイクル管理とベストプラクティスについて説明します。

クラスター作成時のアドオン指定

次の Terraform リソースは、異なるクラスタータイプに対応しています:

  • ACK マネージドクラスター:alicloud_cs_managed_kubernetes

  • ACK 専用クラスター:alicloud_cs_kubernetes

  • ACK エッジクラスター:alicloud_cs_edge_kubernetes

  • ACK サーバーレスクラスター:alicloud_cs_serverless_kubernetes

アドオンを指定するには、リソースで addons オブジェクトを設定します。次のコードブロックに、addons オブジェクトの属性を示します。

# この例では ACK マネージドクラスターを使用します。
resource "alicloud_cs_managed_kubernetes" "default" {
  # その他のパラメーター。
  # ...

  # addons オブジェクトはリストです。リソース内で addons オブジェクトを設定して、クラスター作成時にインストールするアドオンを指定できます。
  addons {
    # アドオン名。データソース alicloud_cs_kubernetes_addons を使用してアドオン名を照会できます。
    # クラスターにすでにインストールされているアドオン、インストール可能なアドオン、および各アドオンのバージョン。
    name = "XXX"

    # アドオンのカスタムパラメーター。カスタムパラメーターをサポートするクラスターアドオンの場合、この属性を設定できます。詳細については、「クラスターアドオンのカスタムパラメーターの変更」をご参照ください。
    config = jsonencode(
      {
        ....
      }
    )

    # 値はブール型で、デフォルトは false です。デフォルトでは、ACK はクラスターを管理するための特定のアドオンを自動的にインストールします。ACK がクラスターを作成する際にアドオンをインストールしない場合は、disabled=true を設定します。
    disabled = XXX
  }
}
重要

addons オブジェクトはクラスター作成時にのみ適用されます。クラスター作成後にこのオブジェクトを変更しても、アドオンの更新、アンインストール、再設定はできません。クラスター作成後のアドオンの管理をご参照ください。

次の表に、Terraform で設定可能なアドオンを示します。

アドオン

アドオンタイプ

説明

Terraform を使用した設定方法

appcenter

アプリケーション管理

クラスター間でアプリケーションのデプロイとライフサイクルを一元管理します。

addons { name = "appcenter" }

progressive-delivery-tool

アプリケーション管理

アプリケーションの段階的なリリースを可能にします。

addons { name = "progressive-delivery-tool" }

alicloud-monitor-controller

ロギングとモニタリング

CloudMonitor との統合を有効にします。

addons { name = "alicloud-monitor-controller" }

metrics-server

ロギングとモニタリング

オープンソースの Metrics Server に基づいてリソースメトリクスを収集します。Metrics API を提供し、Horizontal Pod Autoscaler (HPA) をサポートします。

addons { name = "metrics-server" }

ack-node-problem-detector

ロギングとモニタリング

オープンソースの Node Problem Detector (NPD) に基づいてノードの健全性を監視します。サードパーティのモニタリングプラットフォームに接続します。

addons { name = "ack-node-problem-detector" }

ags-metrics-collector

ロギングとモニタリング

Alibaba Cloud Genomics Service (AGS) のワークフローで、ノードごとのリソース使用量を監視します。

addons { name = "ags-metrics-collector" }

ack-arms-prometheus

ロギングとモニタリング

Managed Service for Prometheus を使用して ACK クラスターを監視します。

addons { name = "arms-prometheus" }

loongcollector

ロギングとモニタリング

Log Service を使用してコンテナログを収集します。

addons { name = "loongcollector" }

csi-plugin

ストレージ

ボリュームのマウントとアンマウントを行います。クラスター作成時に CSI を選択すると、自動的にインストールされます。

addons { name = "csi-plugin" }

csi-provisioner

ストレージ

ボリュームのプロビジョニングを自動化します。クラスター作成時に CSI を選択すると、自動的にインストールされます。

addons { name = "csi-provisioner" }

storage-operator

ストレージ

ボリュームアドオンのライフサイクルを管理します。

addons { name = "storage-operator" }

alicloud-disk-controller

ストレージ

ディスクボリュームのプロビジョニングを自動化します。

addons { name = "alicloud-disk-controller" }

flexvolume

ストレージ

Kubernetes コミュニティによって開発された初期のストレージボリューム拡張メカニズムです。ボリュームのマウントとアンマウントを行います。クラスター作成時に FlexVolume を選択すると、自動的にインストールされます。

addons { name = "flexvolume" }

nginx-ingress-controller

ネットワーキング

Ingress のルーティングルールを解析し、一致するリクエストをバックエンドの Service に転送します。

addons { name = "nginx-ingress-controller" }

terway-eniip

ネットワーキング

VPC と連携し、標準の Kubernetes ネットワークポリシーをサポートする Alibaba Cloud の CNI アドオンです。クラスター内のネットワーク接続を設定します。クラスター作成時に Terway を選択すると、自動的にインストールされます。

addons { name = "terway-eniip" }

ack-node-local-dns

ネットワーキング

オープンソースの NodeLocal DNSCache プロジェクトに基づいて開発されたローカル DNS キャッシュソリューションです。

addons { name = "ack-node-local-dns" }

aliyun-acr-credential-helper

セキュリティ

Container Registry Enterprise Edition と Personal Edition から、パスワードなしでプライベートイメージをプルします。

addons { name = "aliyun-acr-credential-helper" }

gatekeeper

セキュリティ

ACK クラスターで OPA ポリシーを管理および適用し、名前空間ラベルを管理します。

addons { name = "gatekeeper" }

kritis-validation-hook

セキュリティ

イメージの署名を検証します。

addons { name = "kritis-validation-hook" }

security-inspector

セキュリティ

セキュリティ検査を実施します。

addons { name = "security-inspector" }

ack-kubernetes-webhook-injector

セキュリティ

Alibaba Cloud サービスのホワイトリスト内で Pod IP アドレスを動的に管理します。

addons { name = "ack-kubernetes-webhook-injector" }

ack-arena

その他

ACK コンソールにオープンソースの Arena をインストールします。

addons { name = "ack-arena" }

ack-cost-exporter

その他

コスト分析データの処理を有効にします。

addons { name = "ack-cost-exporter" }

ack-kubernetes-cronhpa-controller

その他

スケジュールに基づいてワークロードをスケーリングします。

addons { name = "ack-kubernetes-cronhpa-controller" }

ack-virtual-node

その他

Aliyun Provider をサポートするオープンソースの Virtual Kubelet に基づいています。Kubernetes と Elastic Container Instance のシームレスな統合を実現します。

addons { name = "ack-virtual-node" }

aesm

その他

Intel SGX Enclave の起動をサポートする Intel SGX のシステムアドオンです。キーのプロビジョニングやリモートアテステーションなどのサービスが含まれます。

addons { name = "aesm" }

aliyun-acr-acceleration-suite

その他

オンデマンドのイメージロードを有効にします。ワーカーノード上に DaemonSet としてデプロイされます。

addons { name = "aliyun-acr-acceleration-suite" }

migrate-controller

その他

オープンソースの Velero に基づいて Kubernetes アプリケーションを移行します。

addons { name = "migrate-controller" }

resource-controller

その他

Pod のリソースを動的に制御します。ACK Pro クラスターでトポロジー対応の CPU スケジューリングを行うために必要です。

addons { name = "resource-controller" }

sandboxed-container-controller

その他

Sandboxed-Container ランタイムのサンドボックスコンテナ機能を強化および拡張します。

addons { name = "sandboxed-container-controller" }

sandboxed-container-helper

その他

サンドボックスコンテナのヘルスチェックと運用保守 (O&M) を実行します。

addons { name = "sandboxed-container-helper" }

sgx-device-plugin

その他

コンテナで Intel SGX を使用する手順を簡素化します。ACK チームと Ant Group によって開発されました。

addons { name = "sgx-device-plugin" }

クラスター作成後のアドオン管理

アドオンのライフサイクルを管理する前に、Container Service for Kubernetes (ACK) クラスターがあることを確認してください。

alicloud_cs_kubernetes_addon リソースを使用して、アドオンのインストール、更新、アンインストール、および設定を行います。 次のコードブロックに、alicloud_cs_kubernetes_addon の属性を示します。

resource "alicloud_cs_kubernetes_addon" "addon-example" {
  # クラスター ID。
  cluster_id = "XXXX"

  # アドオン名。alicloud_cs_kubernetes_addons データソースを使用して、インストール済みのアドオン、インストール可能なアドオン、およびそのバージョンを照会できます。
  name = "XXXX"

  # アドオンのバージョン。
  version = "XXXX"

  # カスタムアドオンパラメーター (JSON 文字列形式) 。Terraform の jsonencode メソッドを使用するか、JSON 文字列を直接指定します。後者の場合は、文字のエスケープに注意してください。この属性はカスタムパラメーターをサポートするアドオンにのみ適用されます。詳細については、「アドオンパラメーターのカスタマイズ」をご参照ください。
  config = jsonencode(
    {
      ....
    }
  )
}

JSON 文字列でカスタムパラメーターを直接指定することもできます。文字のエスケープに注意してください。たとえば、nginx-ingress-controller を設定するには、以下のいずれかの方法を使用します。

  • jsonencode を使用してカスタムパラメーターを設定します:

    config = jsonencode(   
      {       
        IngressSlbNetworkType="internet"       
        IngressSlbSpec="slb.s2.small"     
      }  
    )
  • JSON 文字列でカスタムパラメーターを直接指定します。

    config = "{\"IngressSlbNetworkType\":\"internet\",\"IngressSlbSpec\":\"slb.s2.small\"}"

インストール済みアドオンの Terraform へのインポート

terraform import を使用して、クラスターアドオンを Terraform の管理対象としてインポートします。 次の例では nginx-ingress-controller を使用します。

  1. .tf ファイルを作成し、リソースを定義します。すでに .tf ファイルがある場合は、そのファイルに定義します。

    alicloud_cs_kubernetes_addon リソースはクラスターアドオンを管理します。最初は空のままにしておきます。

    resource "alicloud_cs_kubernetes_addon" "nginx-ingress-controller" {
    }
  2. nginx-ingress-controller をインポートします。

    Terraform は、クラスターから nginx-ingress-controller の設定を .state ファイルにプルします。

    terraform import alicloud_cs_kubernetes_addon.nginx-ingress-controller <cluster_id>:nginx-ingress-controller
  3. terraform plan を実行します。出力には、nginx-ingress-controller とリソース間の設定差分が表示されます。

    差分と .state に基づいて、ステップ 1 のリソースを更新します。terraform plan で差分が表示されなくなると、インポートは完了です。

    resource "alicloud_cs_kubernetes_addon" "nginx-ingress-controller" {
      cluster_id = "XXXXX"
      name = "nginx-ingress-controller"
      version = "v1.2.1-aliyun.1"
      config = jsonencode(
        {
          IngressSlbNetworkType = "internet"
          IngressSlbSpec        = "slb.s2.small"
        }
      )
    }

クラスターアドオンのインストール

alicloud_cs_kubernetes_addon リソースを使用してアドオンをインストールします。次の例では Gatekeeper を使用します。

  1. .tf ファイルでアドオンを指定します。

    • クラスター ID。

    • アドオンの名前とバージョン。

      alicloud_cs_kubernetes_addons データソースを使用して、インストール可能なアドオンとバージョンを照会します。最新バージョンのみが表示されます。以前のバージョンについては、アドオンのリリースノートをご確認ください。

    • (オプション) カスタムアドオンの設定。

      jsonencode を使用して config フィールドをカスタマイズします。サポートされているパラメーターは、alicloud_cs_kubernetes_addon_metadata データソースを使用して照会します。詳細については、「アドオンパラメーターのカスタマイズ」をご参照ください。

    詳細を表示

    resource "alicloud_cs_kubernetes_addon" "gatekeeper" {
      cluster_id = "ce36b7c61e126430b8b245730ca6d****"
      name = "gatekeeper"
      version = "v3.8.1.113-geb7947ef-aliyun"
      config = jsonencode(
        {
          AdmissionPodCpuLimit      = "1000m"
          AdmissionPodCpuRequest    = "100m"
          AdmissionPodMemoryLimit   = "512Mi"
          AdmissionPodMemoryRequest = "256Mi"
          AdmissionPodNumber        = 3
          AuditInterval             = 1800
          AuditPodCpuLimit          = "1000m"
          AuditPodCpuRequest        = "100m"
          AuditPodMemoryLimit       = "512Mi"
          AuditPodMemoryRequest     = "256Mi"
          EnableAuditPod            = false
          EnableMutatingWebhook     = false
        }
      )
    }
  2. アドオンをインストールします。

    terraform apply

    出力例:

    Plan: 1 to add, 0 to change, 0 to destroy.
    
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
    
      Enter a value: yes
    
    alicloud_cs_kubernetes_addon.gatekeeper: Creating...
    alicloud_cs_kubernetes_addon.gatekeeper: Still creating... [10s elapsed]
    alicloud_cs_kubernetes_addon.gatekeeper: Creation complete after 16s [id=XXXXX:gatekeeper]
    
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

    Apply complete! と表示されると、アドオンがインストールされます。

クラスターアドオンの更新

alicloud_cs_kubernetes_addons データソースで利用可能なバージョンを照会し、バージョン番号を変更して更新します。 次の例では Gatekeeper を使用します。

詳細を表示

resource "alicloud_cs_kubernetes_addon" "gatekeeper" {
  cluster_id = "ce36b7c61e126430b8b245730ca6d****"
  name = "gatekeeper"

  # version を目的のバージョン番号に変更します。
  version = "XXXXXXXXX"
  config = jsonencode(
    {
      AdmissionPodCpuLimit      = "1000m"
      AdmissionPodCpuRequest    = "100m"
      AdmissionPodMemoryLimit   = "512Mi"
      AdmissionPodMemoryRequest = "256Mi"
      AdmissionPodNumber        = 3
      AuditInterval             = 1800
      AuditPodCpuLimit          = "1000m"
      AuditPodCpuRequest        = "100m"
      AuditPodMemoryLimit       = "512Mi"
      AuditPodMemoryRequest     = "256Mi"
      EnableAuditPod            = false
      EnableMutatingWebhook     = false
    }
  )
}

terraform apply を実行してアドオンを更新します。Apply complete! が表示されると、更新は成功です。

アドオンパラメーターのカスタマイズ

alicloud_cs_kubernetes_addonsconfig フィールドを変更して、アドオン設定をカスタマイズします。 次の例では Gatekeeper を使用します。

詳細を表示

resource "alicloud_cs_kubernetes_addon" "gatekeeper" {
  cluster_id = "ce36b7c61e126430b8b245730ca6d****"
  name = "gatekeeper"
  version = "v3.8.1.113-geb7947ef-aliyun"

  # config の設定を変更して適用すると、クラスターアドオンをカスタマイズできます。

}

alicloud_cs_kubernetes_addon_metadata データソースを使用して、サポートされているカスタムパラメーターを照会すると、JSON スキーマが返されます。たとえば、Gatekeeper パラメーターを照会するには、以下をお客様の .tf ファイルに追加します。

# Gatekeeper アドオンでサポートされているカスタムパラメーターのスキーマを取得するデータソース。
data "alicloud_cs_kubernetes_addon_metadata" "default" {
  cluster_id = "ce36b7c61e126430b8b245730ca6d****"
  name       = "gatekeeper"
  version    = "v3.8.1.113-geb7947ef-aliyun"
}

# スキーマを出力します。
output "addon_config_schema" {
  value = data.alicloud_cs_kubernetes_addon_metadata.default.config_schema
}

terraform apply を実行します。結果は JSON スキーマで、properties 属性にはサポートされているすべてのカスタムパラメーターがリストされています:

  • default:デフォルト値

  • description:パラメーターの説明

  • pattern:有効な値の正規表現

  • type:データ型

詳細を表示

addon_config_schema = <<EOT
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "AdmissionPodCpuLimit": {
      "default": "1000m",
      "description": "Gatekeeper の CPU 上限",
      "pattern": "^(|[1-9][0-9]*(m|\\.\\d+)?)$",
      "type": "string"
    },
    "AdmissionPodCpuRequest": {
      "default": "100m",
      "description": "Gatekeeper の CPU リクエスト",
      "pattern": "^[1-9][0-9]*(m|\\.\\d+)?$",
      "type": "string"
    },
    "AdmissionPodMemoryLimit": {
      "default": "512Mi",
      "description": "Gatekeeper のメモリー上限",
      "pattern": "^(|[1-9][0-9]*(\\.\\d+)?(K|Ki|M|Mi|G|Gi|T|Ti)?)$",
      "type": "string"
    },

    ......
  },
  "title": "Config",
  "type": "object"
}
EOT

ネットワークアドオンの設定

ACK クラスターは、コンテナネットワークには Terway を使用します。概要をご参照ください。

次の例では、Terraform を使用してネットワークアドオンを設定します:

クリックして詳細を表示

# Terway ネットワークアドオンを設定し、各 Pod に 1 つの ENI を割り当てるモードを有効にします。これはデフォルトのモードです。
# このモードでは、ノード上の Pod 数は Elastic Compute Service (ECS) インスタンスの Elastic Network Interface (ENI) クォータによって制限されます。

resource "alicloud_cs_managed_kubernetes" "default" {
  # その他のパラメーター。
  # ...

  addons {
    name = "terway-eniip"
  }
}

# Terway ネットワークアドオンを設定し、IPVLAN モードを有効にします。
# 複数の Pod で 1 つの ENI を使用するモードは IPVLAN + eBPF の仮想化技術を使用するため、Alibaba Cloud Linux 2 オペレーティングシステムのみ使用可能です。
resource "alicloud_cs_managed_kubernetes" "default" {
  # その他のパラメーター。
  # ...

  addons {
    name   =  "terway-eniip"
    config = "{\"IPVlan\":\"true\",\"NetworkPolicy\":\"false\"}"
  }
}

# Terway ネットワークアドオンを設定し、IPVLAN モードで Kubernetes ネットワークポリシーを有効にします。
# 複数の Pod で 1 つの ENI を使用するモードは IPVLAN + eBPF の仮想化技術を使用するため、Alibaba Cloud Linux 2 オペレーティングシステムのみ使用可能です。
# IPVLAN モードでは、Kubernetes ネットワークポリシーに基づいてネットワークアクセスを制御できます。
resource "alicloud_cs_managed_kubernetes" "default" {
  # その他のパラメーター。
  # ...

  addons {
    name   =  "terway-eniip"
    config = "{\"IPVlan\":\"true\",\"NetworkPolicy\":\"true\"}"
  }
}

ボリュームアドオンの設定

ACK は、FlexVolume と CSI のボリュームアドオンを提供しています。FlexVolume は廃止されたため、代わりに CSI を使用してください。クラスター作成時にストレージアドオンが指定されていない場合、デフォルトで CSI がインストールされます。

クリックして詳細を表示

# CSI を使用するには、csi-plugin と csi-provisioner のアドオンをインストールする必要があります。さらに、動的にプロビジョニングされたボリューム用に ACK でデフォルトの NAS ファイルシステムと CNFS ファイルシステムを作成するには、storage-operator アドオンもインストールする必要があります。
resource "alicloud_cs_managed_kubernetes" "default" {
  # その他のパラメーター。
  # ...

  addons {
    name = "csi-plugin"
  }
  addons {
    name = "csi-provisioner"
  }
  addons {
    name   = "storage-operator"
    config = "{\"CnfsOssEnable\":\"false\",\"CnfsNasEnable\":\"true\"}"
  }
}

ロギングアドオンの設定

ACK のログ収集アドオンは、次の 2 つの方法のいずれかで、ログを Simple Log Service (SLS) に保存します。

  • 既存の SLS プロジェクトを使用します。

  • クラスター作成時に ACK が自動的に SLS プロジェクトを作成します。

以下の例では、選択した Log Service プロジェクトに応じて、Terraform で loongcollector および ack-node-problem-detector を設定します。

クリックして詳細を表示

# 自動作成された SLS プロジェクトを使用します。
resource "alicloud_cs_managed_kubernetes" "default" {
  # その他のパラメーター。
  # ...

  addons {
    name = "loongcollector"
  }
}

# 自動作成された SLS プロジェクトを使用します。自動作成された Ingress ダッシュボードを有効にします。
resource "alicloud_cs_managed_kubernetes" "default" {
  # その他のパラメーター。
  # ...

  addons {
    name = "loongcollector"
    config = "{\"IngressDashboardEnabled\":\"true\"}"
  }
}


# 既存の SLS プロジェクトを使用します。自動作成された Ingress ダッシュボードを有効にします。
resource "alicloud_cs_managed_kubernetes" "default" {
  # その他のパラメーター。
  # ...

  addons {
    name = "loongcollector"
    config = "{\"IngressDashboardEnabled\":\"true\",\"sls_project_name\":\"k8s-log-c55c35ff493df47b88783bea48827****\"}"
  }
}

# node-problem-detector をインストールして設定します。
# 自動作成された SLS プロジェクトにイベントを保存するように、node-problem-detector を設定します。
resource "alicloud_cs_managed_kubernetes" "default" {
  # その他のパラメーター。
  # ...

  addons {
    name   = "ack-node-problem-detector"
    config = "{\"sls_project_name\":\"\"}"
  }
}

# node-problem-detector をインストールして設定します。
# 既存の SLS プロジェクトにイベントを保存するように、node-problem-detector を設定します。node-problem-detector は、loongcollector が使用する Logstore を共有できます。
resource "alicloud_cs_managed_kubernetes" "default" {
  # その他のパラメーター。
  # ...

  addons {
    name   = "ack-node-problem-detector"
    config = "{\"sls_project_name\":\"k8s-log-c55c35ff493df47b88783bea48827****\"}"
  }
}

モニタリング アドオンの設定

ACK は、ECS ノード向けの CloudMonitor エージェントと、Managed Service for Prometheus アドオンを提供しています。CloudMonitor エージェントをインストールするには、Terraform で install_cloud_monitor パラメーターを設定します。

クリックして詳細を表示

# Managed Service for Prometheus をインストールします。
resource "alicloud_cs_managed_kubernetes" "default" {
  # 他のパラメーター
  # ...
  addons {
    name = "arms-prometheus"
  }
}
# ECS ノードに CloudMonitor エージェントをインストールします。
resource "alicloud_cs_kubernetes_node_pool" "default" {
  # 他のパラメーター
  # ...
  install_cloud_monitor = true
}

Ingress アドオンの設定

ACK は、アプリケーションにトラフィックをルーティングするために nginx-ingress-controller と alb-ingress-controller を提供します。

  • nginx-ingress-controller:オープンソースの ingress-nginx に基づいています。柔軟で信頼性の高いルーティングを提供します。NGINX Ingress の概要をご参照ください。

  • alb-ingress-controller:ACK によってマネージドされています。柔軟で信頼性の高いルーティングを提供します。ALB イングレスを使用した Service へのアクセスをご参照ください。

次の例では、Terraform を使用して Ingress アドオンを設定します。

[詳細を表示]

# nginx-ingress-controller を設定します。
# インターネット向けの Server Load Balancer (SLB) インスタンスを使用する場合は、Config で IngressSlbNetworkType パラメーターを internet に設定する必要があります。
# 内部向けの SLB インスタンスを使用する場合は、Config で IngressSlbNetworkType パラメーターを intranet に設定する必要があります。
resource "alicloud_cs_managed_kubernetes" "default" {
  # その他のパラメーター。
  # ...

  addons {
    name   =  "nginx-ingress-controller"
    config = "{\"IngressSlbNetworkType\":\"internet\",\"IngressSlbSpec\":\"slb.s2.small\"}"
  }
}

# alb-ingress-controller を設定します。
resource "alicloud_cs_managed_kubernetes" "default" {
  # その他のパラメーター。
  # ...

  addons {
    name   = "alb-ingress-controller"
    config = "{\"albIngress\":{\"CreateDefaultALBConfig\":false}}"  # 現時点では作成されません。
#   config = "{\"albIngress\":{\"LoadBalancerId\":\"alb-vl8uiXXXXXxdr\",\"CreateDefaultALBConfig\":true}}" # 既存の ALB インスタンスを指定します。
#   config = "{\"albIngress\":{\"AddressType\":\"Internet\",\"ZoneMappings\":{\"cn-hangzhou-l\":[\"vsw-uf6XXXXXoyb4qe\"],\"cn-hangzhou-m\":[\"vsw-uf6XXXX0rlkiq\"]},\"CreateDefaultALBConfig\":true}}" # 新しい ALB インスタンスを作成します。少なくとも 2 つのアベイラビリティーゾーンを指定する必要があります。
 
  }
}

デフォルトアドオンのインストールの無効化

ACK はクラスター作成時にデフォルトアドオンをインストールします。特定のアドオンがインストールされないようにするには、disabled = true を設定します。次の例では、nginx-ingress-controller を無効化します。

# nginx-ingress-controller アドオンのインストールの無効化

resource "alicloud_cs_managed_kubernetes" "default" {
  # その他のパラメーター
  # ...

  addons {
    name     =  "nginx-ingress-controller"
    disabled = true
  }
}

デフォルトでインストールされるアドオン

明示的なアドオン設定がない場合、システムは以下のアドオンをインストールします。

クラスタータイプ

アドオンタイプ

デフォルトでインストールされるアドオン名

説明

ACK クラスター

システムアドオン

kube-scheduler

クラスターのリソースをスケジューリングします。

cloud-controller-manager

SLB インスタンスを作成し、ノードのルートエントリを管理します。

kube-apiserver

ACK クラスターのバスおよび Ingress ゲートウェイです。

kube-controller-manager

クラスター内のリソースマネージャーです。

ロギングとモニタリングのアドオン

alicloud-monitor-controller

コンテナのライフサイクルとステータスを監視します。

metrics-server

オートスケーリングのために、コンテナのリソースメトリクスを収集します。

ボリュームアドオン

csi-plugin

ボリュームのライフサイクルを管理します。このアドオンを推奨します。

csi-provisioner

ボリュームを作成および削除します。このアドオンを推奨します。

storage-operator

ストレージアドオンのライフサイクルを管理します。このアドオンを推奨します。

ネットワークアドオン

CoreDNS

Kubernetes クラスターの DNS サーバーとして機能します。

Gateway API

ゲートウェイのリソースモデルです。

terway-eniip

Terway ネットワークアドオンです。

nginx-ingress-controller (デフォルトでは Pro 版がインストールされます)

NGINX Ingress のトラフィック転送ルールを解析します。

ACK Serverless クラスター

システムアドオン

kube-scheduler

クラスターのリソースをスケジューリングします。

ack-virtual-node

仮想ノードと Elastic Container Instance を使用してリソースをスケーリングします。

cloud-controller-manager

SLB インスタンスを作成し、ノードのルートエントリを管理します。

kube-apiserver

ACK クラスターのバスおよび Ingress ゲートウェイです。

kube-controller-manager

クラスター内のリソースマネージャーです。

ネットワークアドオン

CoreDNS

Kubernetes クラスターの DNS サーバーとして機能します。

ACK Edge クラスター

システムアドオン

kube-scheduler

クラスターのリソースをスケジューリングします。

cloud-controller-manager

SLB インスタンスを作成し、ノードのルートエントリを管理します。

kube-apiserver

ACK クラスターのバスおよび Ingress ゲートウェイです。

kube-controller-manager

クラスター内のリソースマネージャーです。

ロギングとモニタリングのアドオン

alicloud-monitor-controller

コンテナのライフサイクルとステータスを監視します。

metrics-server

オートスケーリングのメカニズムのために、コンテナリソースの使用量メトリクスを収集します。

ネットワークアドオン

CoreDNS

Kubernetes クラスターの DNS サーバーとして機能します。

terway-eniip

Terway ネットワークアドオンです。

その他

edge-controller-manager

-

edge-tunnel-agent

C/S アーキテクチャを使用し、クラウドエッジ連携のためのリバース O&M トンネルを作成します。

edge-tunnel-server

C/S アーキテクチャを使用し、クラウドエッジ連携のためのリバース O&M トンネルを作成します。

yurt-app-manager

ACK Edge クラスター向けにノードプールとセルベースデプロイメントを提供します。

一般的な設定例

次の例では、一般的なアドオン設定を紹介します。

  • ネットワークアドオンとして Terway を使用します。

  • CSI (推奨) または FlexVolume を使用します。FlexVolume は廃止されています。

  • 要件に応じて nginx-ingress-controller または alb-ingress-controller を選択します。

  • 要件に応じてその他のアドオンを選択します。

例 1:アドオンをインストールしない場合

# クラスターの作成時にアドオンをインストールしません。このシナリオでは、デフォルトのアドオンのみがインストールされます。
# シンプルなテンプレートです。変数を目的の値に置き換えてください。
resource "alicloud_cs_managed_kubernetes" "default" {
  name                         = var.name
  cluster_spec                 = "ack.pro.small"
  is_enterprise_security_group = true
  pod_cidr                     = "172.20.0.0/16"
  service_cidr                 = "172.21.0.0/20"
  worker_vswitch_ids           = [var.vswitch_id]
}

例 2:Terway のインストール

# Terway がインストールされたクラスターを作成します。
# 各 Pod に 1 つの ENI を割り当てるモードを有効にします。

resource "alicloud_cs_managed_kubernetes" "default" {
  name                         = var.name
  cluster_spec                 = "ack.pro.small"
  is_enterprise_security_group = true
  pod_vswitch_ids              = [var.vswitch_id]
  service_cidr                 = "172.21.0.0/20"
  worker_vswitch_ids           = [var.vswitch_id]

  addons {
    name = "terway-eni"
  }
}

# Terway がインストールされたクラスターを作成します。
# IPVLAN モードを有効にし、Kubernetes NetworkPolicy を有効にします。
resource "alicloud_cs_managed_kubernetes" "default" {
  name                         = var.name
  cluster_spec                 = "ack.pro.small"
  is_enterprise_security_group = true
  service_cidr                 = "172.21.0.0/20"
  pod_vswitch_ids              = [var.vswitch_id]
  worker_vswitch_ids           = [var.vswitch_id]

  addons {
    name   =  "terway-eniip"
    config = "{\"IPVlan\":\"true\",\"NetworkPolicy\":\"true\"}"
  }
}

例 3:Terway、CSI、および nginx-ingress-controller アドオンのインストール

# Terway、CSI、および nginx-ingress-controller アドオンをインストールするためのテンプレートです。

resource "alicloud_cs_managed_kubernetes" "default" {
  name                         = var.name
  cluster_spec                 = "ack.pro.small"
  is_enterprise_security_group = true
  service_cidr                 = "172.21.0.0/20"
  pod_vswitch_ids              = [var.vswitch_id]
  worker_vswitch_ids           = [var.vswitch_id]

  addons {
    name = "terway-eniip"
    config = "{\"IPVlan\":\"true\",\"NetworkPolicy\":\"false\"}"
  }
  addons {
    name = "csi-plugin"
  }
  addons {
    name = "csi-provisioner"
  }
  addons {
    name = "storage-operator"
    config = "{\"CnfsOssEnable\":\"false\",\"CnfsNasEnable\":\"true\"}"
  }
  addons {
    name = "ack-node-problem-detector"
    config = "{\"sls_project_name\":\"\"}"
  }
  addons {
    name = "nginx-ingress-controller"
    config = "{\"IngressSlbNetworkType\":\"internet\",\"IngressSlbSpec\":\"slb.s2.small\"}"
  }
  addons {
    name = "ack-node-local-dns"
  }
  addons {
    name = "arms-prometheus"
  }
  addons {
    name = "alicloud-monitor-controller"
    config = "{\"group_contact_ids\":\"[10619]\"}"
  }
}