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

Resource Orchestration Service:ALIYUN::CS::ManagedKubernetesCluster

最終更新日:Feb 07, 2026

ALIYUN::CS::ManagedKubernetesCluster は、Container Service for Kubernetes (ACK) のマネージドクラスターを作成するためのリソースタイプです。

構文

{
  "Type": "ALIYUN::CS::ManagedKubernetesCluster",
  "Properties": {
    "CloudMonitorFlags": Boolean,
    "ProxyMode": String,
    "SnatEntry": Boolean,
    "VpcId": String,
    "Tags": List,
    "LoginPassword": String,
    "ContainerCidr": String,
    "Name": String,
    "Taint": List,
    "KeyPair": String,
    "Addons": List,
    "ServiceCidr": String,
    "KubernetesVersion": String,
    "SecurityGroupId": String,
    "EndpointPublicAccess": Boolean,
    "RrsaConfig": Map,
    "ClusterSpec": String,
    "TimeoutMins": Number,
    "PodVswitchIds": List,
    "EncryptionProviderKey": String,
    "Runtime": Map,
    "SocEnabled": Boolean,
    "UserData": String,
    "OsType": String,
    "IsEnterpriseSecurityGroup": Boolean,
    "Platform": String,
    "LoadBalancerSpec": String,
    "FormatDisk": Boolean,
    "NodeCidrMask": String,
    "KeepInstanceName": Boolean,
    "DeletionProtection": Boolean,
    "ResourceGroupId": String,
    "NodePools": List,
    "NodeNameMode": String,
    "SecurityHardeningOs": Boolean,
    "DeleteOptions": List,
    "ControlPlaneLogComponents": List,
    "ControlPlaneLogTtl": Number,
    "ControlPlaneLogProject": String,
    "MaintenanceWindow": Map,
    "ZoneIds": List,
    "VSwitchIds": List,
    "TimeZone": String,
    "IpStack": String
  }
}

プロパティ

プロパティ名

タイプ

必須

更新可能

説明

制約

Name

String

はい

いいえ

クラスター名。

長さ:1~63 文字。文字、漢字、数字、ハイフン (-) を使用できます。

VpcId

String

はい

いいえ

VPC ID。

設定しない場合、システムは CIDR ブロックが 192.168.0.0/16 の VPC を自動的に作成します。

VpcIdVSwitchIds は、両方を設定するか、両方とも未設定にする必要があります。

Addons

List

いいえ

はい

Kubernetes クラスターのアドオンプラグインの組み合わせ。

値:

  • ネットワークコンポーネント

    Flannel と Terway のネットワークタイプをサポートします。クラスター作成時にいずれかを選択します。

    • Flannel ネットワーク:[{"Name":"flannel","Config":""}]

    • Terway ネットワーク:[{"Name": "terway-eniip","Config": ""}]

  • ストレージコンポーネント

    csiflexvolume タイプをサポートします。

    • CSI:[{"Name":"csi-plugin","Config": ""},{"Name": "csi-provisioner","Config": ""}]

    • FlexVolume:[{"Name": "flexvolume","Config": ""}]

  • ログコンポーネント (オプション)

    説明

    Simple Log Service を有効にしない場合、クラスター監査機能は使用できません。

    • 既存の Simple Log Service プロジェクトを使用する:[{"Name": "logtail-ds","Config": "{\"IngressDashboardEnabled\":\"true\",\"sls_project_name\":\"your_sls_project_name\"}"}]

    • 新しい Simple Log Service プロジェクトを作成する:[{"Name": "logtail-ds","Config": "{\"IngressDashboardEnabled\":\"true\"}"}]

  • Ingress コンポーネント (オプション)

    ACK 専用クラスターは、デフォルトで nginx-ingress-controller Ingress コンポーネントをインストールします。

    • Ingress をインストールし、パブリックネットワークアクセスを有効にする:[{"Name":"nginx-ingress-controller","Config":"{\"IngressSlbNetworkType\":\"internet\"}"}]

    • Ingress をインストールしない:[{"Name": "nginx-ingress-controller","Config": "","Disabled": true}]

  • イベントセンター (オプション、デフォルトで有効)

    イベントセンターを使用して Kubernetes イベントを保存およびクエリし、アラートを設定できます。K8s イベントセンターに関連付けられている Logstore は 90 日間無料で利用できます。詳細については、「K8s イベントセンターの作成と使用」をご参照ください。

    イベントセンターを有効にする:[{"Name":"ack-node-problem-detector","Config":"{\"sls_project_name\":\"your_sls_project_name\"}"}]

詳細については、「Addons のプロパティ」をご参照ください。

SecurityHardeningOs

Boolean

いいえ

いいえ

Alibaba Cloud オペレーティングシステムのセキュリティ強化。

値:

  • true: セキュリティ強化されたオペレーティングシステムを有効にします。

  • false: セキュリティ強化されたオペレーティングシステムを無効にします。

デフォルト:false。

CloudMonitorFlags

Boolean

いいえ

いいえ

CloudMonitor エージェントをインストールします。

値:

  • true: CloudMonitor エージェントをインストールします。

  • false (デフォルト): CloudMonitor エージェントをインストールしません。

ClusterSpec

String

いいえ

いいえ

ACK マネージドクラスターのタイプ。

値:

  • ack.pro.small: プロフェッショナルマネージドクラスター、ACK Pro マネージドクラスターです。

  • ack.standard (デフォルト): 標準マネージドクラスター。

ContainerCidr

String

いいえ

いいえ

コンテナーの CIDR ブロック。

VPC の CIDR ブロックと競合することはできません。システムが VPC を自動的に作成する場合、デフォルトで 172.16.0.0/16 の CIDR ブロックを使用します。

DeletionProtection

Boolean

いいえ

はい

削除保護を有効にします。

有効にすると、クラスターを直接削除できなくなります。有効値:

  • true: 有効化。

  • false (デフォルト): 無効化。

EncryptionProviderKey

String

いいえ

いいえ

Key Management Service (KMS) によって管理されるキー ID。

このキーはデータディスクを暗号化します。KMS はプロフェッショナルマネージド Kubernetes クラスターでのみ使用してください。

EndpointPublicAccess

Boolean

いいえ

いいえ

API サーバーのパブリックネットワークアクセスを有効にします。

値:

  • true: 有効化。

  • false (デフォルト): 無効化。この場合、プライベートネットワーク API サーバーのみが作成されます。

FormatDisk

Boolean

いいえ

いいえ

既存の ECS インスタンス内に作成されたノードにデータディスクをマウントするかどうかを指定します。

値:

  • true: コンテナーとイメージのデータはデータディスクに保存されます。ディスク上の元のデータは上書きされます。ディスクをマウントする前にデータをバックアップしてください。

  • false (デフォルト): コンテナーとイメージのデータをデータディスクに保存しません。

RrsaConfig

Map

いいえ

いいえ

RRSA 設定。

詳細については、「RrsaConfig のプロパティ」をご参照ください。

IsEnterpriseSecurityGroup

Boolean

いいえ

いいえ

高度なセキュリティグループを作成します。

このパラメーターは、SecurityGroupId が空の場合に有効になります。有効値:

  • true: 作成します。Terway がインストールされたクラスターは、高度なセキュリティグループを作成する必要があります。

  • false (デフォルト): 作成しません。

KeepInstanceName

Boolean

いいえ

いいえ

クラスターで使用される既存の ECS インスタンスの名前を保持します。

値:

  • true (デフォルト): 保持します。

  • false: 保持しません。システムが新しい名前を割り当てます。

KeyPair

String

いいえ

いいえ

キーペア名。

KeyPair または LoginPassword のいずれかを指定します。

KubernetesVersion

String

いいえ

はい

クラスターのバージョン。Kubernetes コミュニティのベースラインバージョンと一致します。最新バージョンを選択することを推奨します。

最新の 2 つのバージョンのクラスターを作成できます。ACK がサポートする Kubernetes のバージョンについては、「Kubernetes バージョンリリース概要 (オフライン)」をご参照ください。

LoadBalancerSpec

String

いいえ

いいえ

SLB インスタンスタイプ。

値:

  • slb.s1.small

  • slb.s2.small

  • slb.s2.medium

  • slb.s3.small

  • slb.s3.medium

  • slb.s3.large

LoginPassword

String

いいえ

いいえ

SSH ログインパスワード。

長さ:8~30 文字。文字、数字、特殊文字を含める必要があります。サポートされている特殊文字は ( )'~!@#$%^&*-+=|{ }[ ]:;< >,.?/_ です。

説明

LoginPassword または KeyPair のいずれかを指定します。

NodeCidrMask

String

いいえ

いいえ

ノードに割り当て可能な IP アドレスの最大数。

この数値は、指定された Pod の CIDR に依存します。このパラメーターは、クラスターが Flannel プラグインを使用する場合にのみ適用されます。

デフォルト:25。

NodeNameMode

String

いいえ

いいえ

ノード名をカスタマイズします。

ノード名は、プレフィックス + ノード IP アドレスの部分文字列 + サフィックスの 3 つの部分で構成されます。

  • プレフィックスとサフィックスは、ピリオド (.) で区切られた 1 つ以上の部分で構成できます。各部分は、小文字、数字、ハイフン (-) を含めることができます。ノード名は、小文字または数字で開始および終了する必要があります。

  • IP アドレスセグメントの長さは、ノード IP アドレスの末尾から切り捨てられる桁数を指します。範囲:5~12。

たとえば、ノード IP アドレスが 192.168.XX.XX、プレフィックスが aliyun.com、IP アドレスセグメントの長さが 5、サフィックスが test の場合、ノード名は aliyun.com0****test になります。

NodePools

List

いいえ

いいえ

ノードプール情報。

詳細については、「NodePools のプロパティ」をご参照ください。

OsType

String

いいえ

いいえ

オペレーティングシステムのタイプ。

値:

  • Windows

  • Linux (デフォルト)

Platform

String

いいえ

いいえ

オペレーティングシステムのリリースバージョン。

値:

  • CentOS (デフォルト)

  • AliyunLinux

  • QbootAliyunLinux

  • Qboot

  • Windows

  • WindowsCore

PodVswitchIds

List

いいえ

いいえ

Pod の vSwitch のリスト。

各ノード vSwitch に対して、同じゾーンに少なくとも 1 つの Pod vSwitch を指定します。Pod vSwitch はノード vSwitch と同じにすることはできません。

CIDR ブロックマスクが 19 以下の vSwitch を選択してください。

説明

クラスターリスト (Addons) がネットワークコンポーネントに設定され、Terway ネットワークタイプが使用されている場合、クラスターに PodVswitchIds を指定する必要があります。

ProxyMode

String

いいえ

いいえ

kube-proxy モード。

値:

  • iptables (デフォルト)

  • IPVS

ResourceGroupId

String

いいえ

はい

クラスターが属するリソースグループ ID。

なし

Runtime

Map

いいえ

いいえ

コンテナーランタイム。

Runtime には、次の 2 つの情報が含まれます。

  • name: コンテナーランタイム名。

  • version: コンテナーランタイムのバージョン。

例:

{"name": "docker", "version": "19.03.5"}

コンテナーランタイムの選択に関する詳細については、「containerd、サンドボックスコンテナー、Docker ランタイムの比較」をご参照ください。

詳細については、「Runtime のプロパティ」をご参照ください。

SecurityGroupId

String

いいえ

いいえ

クラスターの ECS インスタンスが属するセキュリティグループ ID。

なし

ServiceCidr

String

いいえ

いいえ

サービスの CIDR ブロック。

VPC の CIDR ブロックまたはコンテナーの CIDR ブロックと競合することはできません。システムが VPC を自動的に作成する場合、デフォルトで 172.19.0.0/20 の CIDR ブロックを使用します。

SnatEntry

Boolean

いいえ

いいえ

ネットワークに SNAT が設定されているかどうか。

値:

  • 既存の VPC がパブリックネットワークにアクセスできる場合:false。ネットワークに SNAT 設定は不要です。

  • 既存の VPC がパブリックネットワークにアクセスできない場合:

    • true: パブリックネットワークにアクセスするために SNAT を設定します。

    • false: SNAT を設定せず、パブリックネットワークアクセスは利用できません。

SocEnabled

Boolean

いいえ

いいえ

階層化保護強化を有効にします。

値:

  • true: 有効化。

  • false (デフォルト): 無効化。

Tags

List

いいえ

はい

クラスタータグ。

最大 20 個のタググループを設定します。

詳細については、「Tags のプロパティ」をご参照ください。

Taint

List

いいえ

いいえ

ノードに Taint を設定します。通常、Pod のスケジューリングポリシーに使用されます。

Pod がノードの Taint に一致する Toleration を持っている場合、そのノードにスケジュールできます。

TimeoutMins

Number

いいえ

いいえ

クラスター作成のタイムアウト。

デフォルト:60。

単位:分。

UserData

String

いいえ

いいえ

ECS インスタンス作成時に渡されるユーザーデータ。

コンテンツは 16 KB 以内である必要があります。Base64 エンコーディングは不要です。特殊文字にはエスケープ文字を使用してください。

DeleteOptions

List

いいえ

はい

クラスターに関連付けられたリソースの削除オプション。

詳細については、「DeleteOptions のプロパティ」をご参照ください。

ControlPlaneLogTtl

Number

いいえ

はい

コントロールプレーンコンポーネントのログを保持する日数。

なし

ControlPlaneLogComponents

List

いいえ

はい

コンポーネント名のリスト。

収集するコントロールプレーンコンポーネントのログを指定します。

デフォルトでは、apiserver、kcm、scheduler コンポーネントからログを収集します。

ControlPlaneLogProject

String

いいえ

はい

コントロールプレーンコンポーネントのログ用の Simple Log Service プロジェクト。

ロギングには既存のプロジェクトを使用するか、システムに自動的に作成させます。自動作成を選択した場合、システムは k8s-log-{ClusterID} という名前の Simple Log Service プロジェクトを作成します。

MaintenanceWindow

Map

いいえ

はい

クラスターのメンテナンスウィンドウ設定。

詳細については、「MaintenanceWindow のプロパティ」をご参照ください。

VSwitchIds

List

はい

いいえ

ワーカーノードにバインドされた vSwitch。

なし

ZoneIds

List

いいえ

いいえ

ゾーンのリスト。

なし

TimeZone

String

いいえ

いいえ

クラスターのタイムゾーン。

なし

IpStack

String

いいえ

いいえ

クラスターの IP プロトコルスタック。

値:

  • ipv4

  • ipv6

NodePools の構文

"NodePools": [
  {
    "ScalingGroup": Map,
    "KubernetesConfig": Map,
    "NodePoolInfo": Map
  }
]

NodePools のプロパティ

プロパティ名

タイプ

必須

更新可能

説明

制約

ScalingGroup

Map

はい

いいえ

ノードプールのスケーリンググループ設定。

詳細については、「ScalingGroup のプロパティ」をご参照ください。

KubernetesConfig

Map

いいえ

いいえ

クラスター関連の設定。

詳細については、「KubernetesConfig のプロパティ」をご参照ください。

NodePoolInfo

Map

いいえ

いいえ

ノードプールの設定。

詳細については、「NodePoolInfo のプロパティ」をご参照ください。

ScalingGroup の構文

"ScalingGroup": {
  "InstancePatterns": List,
  "SocEnabled": Boolean,
  "ImageType": String,
  "SecurityHardeningOs": Boolean,
  "RdsInstances": List,
  "IsEnterpriseSecurityGroup": Boolean,
  "VSwitchIds": List,
  "InternetMaxBandwidthOut": Integer,
  "DataDisks": List,
  "Period": Integer,
  "InternetChargeType": String,
  "KeyPair": String,
  "SystemDiskPerformanceLevel": String,
  "ImageId": String,
  "InstanceTypes": List,
  "SystemDiskCategory": String,
  "PeriodUnit": String,
  "LoginPassword": String,
  "InstanceChargeType": String,
  "SystemDiskSize": Integer,
  "Tags": List,
  "ZoneIds": List,
  "DesiredSize": Integer
}

ScalingGroup のプロパティ

プロパティ名

タイプ

必須

更新可能

説明

制約

InstanceTypes

List

いいえ

いいえ

インスタンスタイプ。

なし

SystemDiskSize

Integer

はい

いいえ

ノードのシステムディスクのサイズ。

単位:GiB。

範囲:40~500。

VSwitchIds

List

いいえ

いいえ

vSwitch ID のリスト。

なし

SocEnabled

Boolean

いいえ

いいえ

階層化保護強化を有効にします。

値:

  • true: 有効化。

  • false (デフォルト): 無効化。

ImageType

String

いいえ

いいえ

オペレーティングシステムのイメージタイプ。

なし

InstancePatterns

List

いいえ

いいえ

インスタンスのプロパティ設定。

詳細については、「InstancePatterns のプロパティ」をご参照ください。

SecurityHardeningOs

Boolean

いいえ

いいえ

Alibaba Cloud OS のセキュリティ強化。

値:

  • true: Alibaba Cloud OS のセキュリティ強化を有効にします。

  • false: Alibaba Cloud OS のセキュリティ強化を有効にしません。

デフォルト:false

DesiredSize

Integer

いいえ

いいえ

ノードプール内のノードの希望数。

なし

DataDisks

List

いいえ

いいえ

ノードプールのデータディスク設定。

詳細については、「DataDisks のプロパティ」をご参照ください。

ImageId

String

いいえ

いいえ

カスタムイメージ ID。

デフォルトでは、システム提供のイメージを使用します。

InstanceChargeType

String

いいえ

いいえ

ノードプールノードの課金方法。

値:

  • PrePaid: サブスクリプション。

  • PostPaid (デフォルト): 従量課金。

InternetChargeType

String

いいえ

いいえ

パブリック IP アドレスの課金方法。

値:

  • PayByBandwidth: 帯域幅による支払い。

  • PayByTraffic: トラフィックによる支払い。

InternetMaxBandwidthOut

Integer

いいえ

いいえ

ノードのパブリック IP アドレスの最大アウトバウンド帯域幅。

単位:Mbps。

範囲:1~100。

IsEnterpriseSecurityGroup

Boolean

いいえ

いいえ

エンタープライズレベルのセキュリティグループを自動的に作成します。

値:

  • true: エンタープライズレベルのセキュリティグループを作成して使用します。

  • false: エンタープライズレベルのセキュリティグループを使用しません。

KeyPair

String

いいえ

いいえ

パスワードなしのログイン用のキーペア名。

KeyPair または LoginPassword プロパティのいずれかを選択します。

LoginPassword

String

いいえ

いいえ

SSH ログインパスワード。

KeyPair または LoginPassword のいずれかを選択します。

パスワードのルール:8~30 文字で、大文字、小文字、数字、特殊文字を含める必要があります。

Period

Integer

いいえ

いいえ

ノードプールノードのサブスクリプション期間。

このプロパティは、InstanceChargeType が PrePaid に設定されている場合に適用され、必須です。

period_unit が Month に設定されている場合、period の範囲は {1, 2, 3, 6, 12} です。

デフォルト:1。

PeriodUnit

String

いいえ

いいえ

ノードプールノードの課金サイクル。

InstanceChargeType が PrePaid に設定されている場合に期間を指定します。

Month: 1 暦月に等しい時間単位。

RdsInstances

List

いいえ

いいえ

ApsaraDB RDS インスタンス ID。

なし

SystemDiskCategory

String

いいえ

いいえ

ノードのシステムディスクタイプ。

値:

  • cloud_efficiency (デフォルト): 高効率クラウドディスク。

  • cloud_ssd: 標準 SSD。

  • cloud_essd: ESSD (エンタープライズ SSD)。

SystemDiskPerformanceLevel

String

いいえ

いいえ

ノードのシステムディスクのパフォーマンスレベル。

ESSD ディスクにのみ適用されます。

Tags

List

いいえ

いいえ

ECS インスタンスにのみタグを追加します。

詳細については、「Tags のプロパティ」をご参照ください。

ZoneIds

List

いいえ

いいえ

ゾーンのリスト。

なし

DataDisks の構文

"DataDisks": [
  {
    "AutoSnapshotPolicyId": String,
    "Encrypted": Boolean,
    "Size": Integer,
    "Category": String,
    "PerformanceLevel": String,
    "Categories": List
  }
]

DataDisks のプロパティ

プロパティ名

タイプ

必須

更新可能

説明

制約

AutoSnapshotPolicyId

String

いいえ

いいえ

自動スナップショットポリシー ID を選択します。

クラウドディスクは、スナップショットポリシーに従って自動的にバックアップされます。

Category

String

いいえ

いいえ

データディスクタイプ。

値:

  • Cloud: 基本ディスク

  • cloud_efficiency (デフォルト): 高効率クラウドディスク。

  • cloud_ssd: 標準 SSD。

  • cloud_essd: ESSD (エンタープライズ SSD)。

Encrypted

Boolean

いいえ

いいえ

データディスクを暗号化するかどうかを指定します。

値:

  • true: データディスクを暗号化します。

  • false (デフォルト): データディスクを暗号化しません。

PerformanceLevel

String

いいえ

いいえ

ノードのデータディスクのパフォーマンスレベル。

ESSD ディスクにのみ適用されます。ディスクのパフォーマンスレベルはディスクサイズに関連しています。

詳細については、「エンタープライズ SSD」をご参照ください。

Size

Integer

いいえ

いいえ

データディスクのサイズ。

単位:GiB。

範囲:40~32768。

デフォルト:120。

Categories

List

いいえ

いいえ

データディスクタイプのリスト。

なし

KubernetesConfig の構文

"KubernetesConfig": {
  "Runtime": String,
  "RuntimeVersion": String,
  "CpuPolicy": String,
  "Labels": List,
  "NodeNameMode": String,
  "Taints": List
}

KubernetesConfig のプロパティ

プロパティ名

タイプ

必須

更新可能

説明

制約

Runtime

String

はい

いいえ

コンテナーランタイム。

なし

RuntimeVersion

String

はい

いいえ

コンテナーランタイムのバージョン。

なし

CpuPolicy

String

いいえ

いいえ

ノードの CPU 管理ポリシー。

クラスターバージョンが 1.12.6 以降の場合、次の 2 つのポリシーがサポートされます。

  • static: 特定のリソース特性を持つ Pod の CPU アフィニティと排他性をノード上で強化します。

  • none (デフォルト): 既存のデフォルトの CPU アフィニティスキームを有効にします。

Labels

List

いいえ

いいえ

ノードのラベル。

Kubernetes クラスターノードにラベルを追加します。

詳細については、「Labels のプロパティ」をご参照ください。

NodeNameMode

String

いいえ

いいえ

ノード名をカスタマイズします。

ノード名は、プレフィックス + ノード IP アドレスの部分文字列 + サフィックスの 3 つの部分で構成されます。

  • プレフィックスとサフィックスは、ピリオド (.) で区切られた 1 つ以上の部分で構成できます。各部分は、小文字、数字、ハイフン (-) を含めることができます。ノード名は、小文字または数字で開始および終了する必要があります。

  • IP アドレスセグメントの長さは、ノード IP アドレスの末尾から切り捨てられる桁数を指します。範囲:5~12。

たとえば、ノード IP アドレスが 192.168.XX.XX、プレフィックスが aliyun.com、IP アドレスセグメントの長さが 5、サフィックスが test の場合、ノード名は aliyun.com0****test になります。

Taints

List

いいえ

いいえ

Taint 設定。

詳細については、「Taints のプロパティ」をご参照ください。

RrsaConfig の構文

"RrsaConfig": 
  {
    "Enabled": Boolean
  }

RrsaConfig のプロパティ

プロパティ名

タイプ

必須

更新を許可

説明

制約

Enabled

Boolean

はい

いいえ

サービスアカウントの RAM ロール (RRSA) 機能を有効にします。

値:

  • true: 有効化

  • false: 無効化

InstancePatterns の構文

"InstancePatterns": [
  {
    "CpuArchitectures": List,
    "MaxCpuCores": Integer,
    "MinMemorySize": Integer,
    "Memory": Integer,
    "InstanceFamilyLevel": String,
    "MinCpuCores": Integer,
    "Cores": Integer,
    "InstanceTypeFamilies": List,
    "InstanceCategories": List,
    "ExcludedInstanceTypes": List,
    "MaxMemorySize": Integer
  }
]

InstancePatterns のプロパティ

プロパティ名

タイプ

必須

更新可能

説明

制約

CpuArchitectures

List

いいえ

いいえ

インスタンスの CPU アーキテクチャ。

値:

  • X86

  • ARM

MaxCpuCores

Integer

いいえ

いいえ

インスタンスタイプの vCPU コアの最大数。

なし

MinMemorySize

Integer

いいえ

いいえ

インスタンスタイプの最小メモリサイズ。

単位:GiB。

Memory

Integer

いいえ

いいえ

インスタンスタイプのメモリサイズ。

単位:GiB。

InstanceFamilyLevel

String

いいえ

いいえ

インスタンスファミリーレベル。

なし

MinCpuCores

Integer

いいえ

いいえ

インスタンスタイプの vCPU コアの最小数。

なし

Cores

Integer

いいえ

いいえ

インスタンスタイプの vCPU コア数。

なし

InstanceTypeFamilies

List

いいえ

いいえ

インスタンスファミリーを指定します。

なし

InstanceCategories

List

いいえ

いいえ

インスタンスの分類。

なし

ExcludedInstanceTypes

List

いいえ

いいえ

除外するインスタンスタイプ。

なし

MaxMemorySize

Integer

いいえ

いいえ

インスタンスタイプの最大メモリサイズ。

単位:GiB。

Labels の構文

"Labels": {
 "Value": String,
 "Key": String
}

Labels のプロパティ

プロパティ名

タイプ

必須

更新可能

説明

制約

Key

String

はい

いいえ

タグキー。

なし

Value

String

はい

いいえ

タグの値。

なし

Taints の構文

"Taints": [{
 "Value": String,
 "Effect": String,
 "Key": String
}]

Taints のプロパティ

プロパティ名

タイプ

必須

更新可能

説明

制約

Key

String

はい

いいえ

Taint 名。

なし

Value

String

はい

いいえ

Taint の値。

なし

Effect

String

いいえ

いいえ

スケジューリングポリシー。

  • NoSchedule (デフォルト): 許容できませんが、スケジューリングプロセスにのみ影響します。すでにスケジュールされている Pod は影響を受けません。新しく追加された Pod にのみ適用されます。

  • NoExecute: 許容できません。Taint が変更されると Pod は退去させられます。

  • PreferNoSchedule: ソフト制約。ノード上の既存の Pod は影響を受けません。

NodePoolInfo の構文

"NodePoolInfo": {
  "Name": String,
  "Type": String,
  "ResourceGroupId": String
}

NodePoolInfo のプロパティ

プロパティ名

タイプ

必須

更新可能

説明

制約

ResourceGroupId

String

いいえ

はい

ノードプールが属するリソースグループ。

なし

Name

String

はい

いいえ

ノードプール名。

なし

Type

String

いいえ

いいえ

ノードプールのタイプ。

値:

  • ess: ESS ノードプール。

  • edge: エッジノードプール。

MaintenanceWindow の構文

"MaintenanceWindow": {
  "Enable": Boolean,
  "MaintenanceTime": String,
  "Duration": String,
  "WeeklyPeriod": String,
  "Recurrence": String
}

MaintenanceWindow のプロパティ

プロパティ名

タイプ

必須

更新可能

説明

制約

Duration

String

いいえ

はい

メンテナンス期間。

範囲:[1, 24]。単位:時間。

デフォルト:3h。

Enable

Boolean

いいえ

はい

メンテナンスウィンドウを有効にします。

値:

  • true: メンテナンスウィンドウを有効にします。

  • false: メンテナンスウィンドウを有効にしません。

デフォルト:false

MaintenanceTime

String

いいえ

はい

メンテナンスの開始時刻。

RFC3339 標準フォーマット。

WeeklyPeriod

String

いいえ

はい

メンテナンス期間。

複数の値をカンマ (,) で区切ります。有効値:{Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}

デフォルト:Thursday

Recurrence

String

いいえ

はい

メンテナンスウィンドウの繰り返しルール。RFC5545 の繰り返しルール構文を使用して定義されます。

現在、FREQ=WEEKLY のみをサポートしています。COUNT または UNTIL の指定はサポートしていません。

Tags の構文

"Tags": [
  {
    "Key": String,
    "Value": String
  }
]

Tags のプロパティ

プロパティ名

タイプ

必須

更新可能

説明

制約

Key

String

はい

いいえ

タグキー。

長さ:1~64 文字。aliyunacs:https://、または http:// で始めることはできません。

Value

String

はい

いいえ

タグの値。

長さ:0~128 文字。aliyunacs:https://、または http:// で始めることはできません。

Addons の構文

"Addons": [
  {
    "Version": String,
    "Config": String,
    "Name": String,
    "Disabled": Boolean
  }
]

Addons のプロパティ

プロパティ名

タイプ

必須

更新可能

説明

制約

Name

String

はい

いいえ

アドオンプラグイン名。

なし

Config

String

いいえ

はい

アドオンプラグインの設定。

なし

Disabled

Boolean

いいえ

いいえ

デフォルトのインストールを無効にしますか?

値:

  • true (デフォルト): デフォルトのインストールを無効にします。

  • false: デフォルトのインストールを有効にします。

Version

String

いいえ

いいえ

アドオンプラグインのバージョン。

デフォルトでは最新バージョンを使用します。

DeleteOptions の構文

"DeleteOptions": [
    {
      "DeleteMode": String,
      "ResourceType": String
    }
  ]

DeleteOptions のプロパティ

プロパティ名

タイプ

必須

更新可能

説明

制約

DeleteMode

String

いいえ

はい

このリソースタイプの削除ポリシー。

値:

  • delete: このリソースタイプを削除します

  • retain: このリソースタイプを保持します

ResourceType

String

いいえ

はい

リソースタイプ。

値:

  • SLB: サービスを通じて作成された SLB リソース。デフォルトで削除されますが、保持することも選択できます。

  • ALB: ALB Ingress Controller によって作成された ALB リソース。デフォルトで保持されますが、削除することも選択できます。

  • SLS_Data: クラスターのロギング機能で使用される Simple Log Service プロジェクト。デフォルトで保持されますが、削除することも選択できます。

  • SLS_ControlPlane: ACK マネージドクラスターのコントロールプレーンログで使用される Simple Log Service プロジェクト。デフォルトで保持されますが、削除することも選択できます。

  • PrivateZone: サーバーレス Kubernetes (ACK Serverless) クラスターによって作成された PrivateZone リソース。デフォルトで保持されますが、削除することも選択できます。

Runtime の構文

"Runtime": {
    "Name": String,
    "Version": String
  }

Runtime のプロパティ

プロパティ名

タイプ

必須

更新可能

説明

制約

Name

String

はい

いいえ

コンテナーランタイム名。

ACK は、次の 3 つのコンテナーランタイムをサポートしています。

  • containerd: 推奨。すべてのクラスターバージョンをサポートします。

  • Sandboxed-Container.runv: サンドボックスコンテナー。より高い隔離を提供します。クラスターバージョン 1.24 以前をサポートします。

  • docker: クラスターバージョン 1.22 以前をサポートします。

デフォルト:containerd

Version

String

いいえ

いいえ

コンテナーランタイムのバージョン。

デフォルトでは最新バージョンになります。

詳細については、「サンドボックス化されたコンテナランタイムリリースノート」をご参照ください。

戻り値

Fn::GetAtt

  • ClusterId: クラスター ID。

  • TaskId: タスク ID。システムが自動的に割り当てるため、ユーザーはタスクのステータスをクエリできます。

  • DefaultUserKubeConfig: ユーザーのクラスター認証情報用のデフォルトの Kubernetes 設定。

  • ScalingRuleId: スケーリングルール ID。

  • ScalingGroupId: スケーリンググループ ID。

  • PrivateUserKubConfig: ユーザーのクラスター認証情報用のプライベート Kubernetes 設定。

  • ScalingConfigurationId: スケーリング設定 ID。

  • Nodes: クラスターノードのリスト。

  • APIServerSLBId: API サーバーの Server Load Balancer (SLB) ID。

  • IngressSLBId: Ingress の Server Load Balancer (SLB) ID。

  • WorkerRamRoleName: ワーカー RAM ロール名。

シナリオ 1:ACK マネージドクラスターの作成

クイック作成

ROSTemplateFormatVersion: '2015-09-01'
Description: ManagedKubernetesCluster の作成をテストします
Parameters: {}
Resources:
  Vpc:
    Type: ALIYUN::ECS::VPC
    Properties:
      VpcName: mytest
      CidrBlock: 192.168.0.0/16
  VSwitch:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VSwitchName: mytest
      VpcId:
        Ref: Vpc
      ZoneId:
        Fn::Select:
          - '0'
          - Fn::GetAZs:
              Ref: ALIYUN::Region
      CidrBlock: 192.168.1.0/24
  ManagedKubernetesCluster:
    Type: ALIYUN::CS::ManagedKubernetesCluster
    Properties:
      VSwitchIds:
        - Ref: VSwitch
      VpcId:
        Ref: Vpc
      ClusterSpec: ack.pro.small
      LoginPassword: Admin@123!
      Name: mytest
Outputs:
  ClusterId:
    Value:
      Fn::GetAtt:
        - ManagedKubernetesCluster
        - ClusterId
  TaskId:
    Value:
      Fn::GetAtt:
        - ManagedKubernetesCluster
        - TaskId         
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Description": "ManagedKubernetesCluster の作成をテストします",
  "Parameters": {
  },
  "Resources": {
    "Vpc": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "VpcName": "mytest",
        "CidrBlock": "192.168.0.0/16"
      }
    },
    "VSwitch": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "VSwitchName": "mytest",
        "VpcId": {
          "Ref": "Vpc"
        },
        "ZoneId": {
          "Fn::Select": [
            "0",
            {
              "Fn::GetAZs": {
                "Ref": "ALIYUN::Region"
              }
            }
          ]
        },
        "CidrBlock": "192.168.1.0/24"
      }
    },
    "ManagedKubernetesCluster": {
      "Type": "ALIYUN::CS::ManagedKubernetesCluster",
      "Properties": {
        "VSwitchIds": [
          {
            "Ref": "VSwitch"
          }
        ],
        "VpcId": {
          "Ref": "Vpc"
        },
        "ClusterSpec": "ack.pro.small",
        "LoginPassword": "Admin@123!",
        "Name": "mytest"
      }
    }
  },
  "Outputs": {
    "ClusterId": {
      "Value": {
        "Fn::GetAtt": [
          "ManagedKubernetesCluster",
          "ClusterId"
        ]
      }
    },
    "TaskId": {
      "Value": {
        "Fn::GetAtt": [
          "ManagedKubernetesCluster",
          "TaskId"
        ]
      }
    }
  }
}

シナリオ 2:ACK 専用クラスターの作成 (VPC 内)

クイック作成

ROSTemplateFormatVersion: '2015-09-01'
Description:
  zh-cn: 既存の VPC、vSwitch、セキュリティグループで課金方法を設定し、ワーカーノード、ネットワーク設定、モニタリングプラグインを含む Kubernetes クラスターを作成します。
  en: 既存の VPC、vSwitch、セキュリティグループで課金方法を設定し、ワーカーノード、ネットワーク設定、モニタリングプラグインを含む Kubernetes クラスターを作成します。
Parameters:
  PayType:
    Type: String
    Label:
      en: ECS インスタンスの課金タイプ
      zh-cn: ECS インスタンスの課金タイプ
    AssociationProperty: ChargeType
    AssociationPropertyMetadata:
      LocaleKey: InstanceChargeType
    Default: PostPaid
    AllowedValues:
      - PostPaid
      - PrePaid
  PayPeriodUnit:
    Type: String
    Label:
      en: 支払い期間単位
      zh-cn: 支払い期間単位
    AssociationProperty: PayPeriodUnit
    AssociationPropertyMetadata:
      Visible:
        Condition:
          Fn::Not:
            Fn::Equals:
              - ${PayType}
              - PostPaid
    Default: Month
    AllowedValues:
      - Month
      - Year
  PayPeriod:
    Type: Number
    Label:
      en: 期間
      zh-cn: 期間
    AssociationProperty: PayPeriod
    AssociationPropertyMetadata:
      Visible:
        Condition:
          Fn::Not:
            Fn::Equals:
              - ${PayType}
              - PostPaid
    Default: 1
    AllowedValues:
      - 1
      - 2
      - 3
      - 4
      - 5
      - 6
      - 7
      - 8
      - 9
  VpcId:
    Type: String
    Label:
      en: VPC ID
      zh-cn: VPC ID
    AssociationProperty: ALIYUN::ECS::VPC::VPCId
  ZoneId:
    Type: String
    Label:
      en: ゾーン ID
      zh-cn: ゾーン ID
    AssociationProperty: ALIYUN::ECS::Instance:ZoneId
  VSwitchId:
    Type: String
    Label:
      en: VSwitch ID
      zh-cn: VSwitch ID
    AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
    AssociationPropertyMetadata:
      VpcId: ${VpcId}
      ZoneId: ${ZoneId}
  SecurityGroupId:
    Type: String
    Label:
      en: ビジネスセキュリティグループ ID
      zh-cn: ビジネスセキュリティグループ ID
    AssociationProperty: ALIYUN::ECS::SecurityGroup::SecurityGroupId
    AssociationPropertyMetadata:
      VpcId: ${VpcId}
  NumOfNodes:
    Type: Number
    Label:
      zh-cn: ワーカーノード数
      en: ワーカーインスタンス数
    Default: 3
  PodCidr:
    Type: String
    Label:
      zh-cn: Pod ネットワーク CIDR
      en: Pod ネットワーク CIDR
    Description:
      zh-cn: 有効なプライベート CIDR ブロックを入力してください。例として、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 およびそのサブネットがあります。
CIDR ブロックは、VPC の CIDR ブロックや、VPC 内の既存の Kubernetes クラスターの CIDR ブロックと重複することはできません。<font color='blue'><b>この設定はクラスター作成後に変更できません。</font> en: '有効なプライベート CIDR ブロックを入力してください。例として、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 およびそのサブネットがあります。
CIDR ブロックは、VPC の CIDR ブロックや、VPC 内の既存の Kubernetes クラスターの CIDR ブロックと重複することはできません。<font color=''blue''><b>この設定はクラスター作成後に変更できません。</font>' AssociationProperty: ALIYUN::CS::ManagedKubernetesCluster::PodCidr Default: 172.20.0.0/16 ServiceCidr: Type: String Label: zh-cn: サービス CIDR en: サービス CIDR Description: zh-cn: プレフィックス長が 16 から 24 の有効な CIDR ブロックを入力してください。CIDR ブロックは、10.0.0.0/8、172.16.0.0/12、または 192.168.0.0/16 のいずれかのプライベートネットワーク範囲内にある必要があります。
CIDR ブロックは、VPC の CIDR ブロックや、VPC 内の既存の Kubernetes クラスターの CIDR ブロックと重複することはできません。<font color='blue'><b>この設定はクラスター作成後に変更できません。</font> en: 'プレフィックス長が 16 から 24 の有効な CIDR ブロックを入力してください。CIDR ブロックは、10.0.0.0/8、172.16.0.0/12、または 192.168.0.0/16 のいずれかのプライベートネットワーク範囲内にある必要があります。
CIDR ブロックは、VPC の CIDR ブロックや、VPC 内の既存の Kubernetes クラスターの CIDR ブロックと重複することはできません。<font color=''blue''><b>この設定はクラスター作成後に変更できません。</font>' AssociationProperty: ALIYUN::CS::ManagedKubernetesCluster::ServiceCidr Default: 172.21.0.0/20 SnatEntry: Type: Boolean Label: zh-cn: SNAT の設定 en: SNAT の設定 Description: zh-cn: VPC の SNAT を設定します。
クラスター内のリソース (ノードやアプリケーションなど) がパブリックネットワークにアクセスする必要がある場合は、このオプションを選択してください。NAT Gateway が作成され、SNAT ルールが自動的に設定されます。<b><a href='https://www.alibabacloud.com/help/doc-detail/48126.html' target='_blank'><font color='blue'>NAT Gateway の料金</font></a> en: VPC の SNAT を設定します。
クラスター内のリソース (ノードやアプリケーションなど) がパブリックネットワークにアクセスする必要がある場合は、このオプションを選択してください。NAT Gateway が作成され、SNAT ルールが自動的に設定されます。<b><a href='https://www.alibabacloud.com/help/doc-detail/48126.html' target='_blank'><font color='blue'>NAT Gateway の料金</font></a> Default: true EndpointPublicAccess: Type: Boolean Label: en: パブリックアクセス zh-cn: パブリックアクセス Description: en: Elastic IP アドレス (EIP) を使用して API サーバーを公開します。
デフォルトでは、API サーバー用に内部向け Server Load Balancer (SLB) インスタンスが作成されます。このインスタンスを削除すると、API サーバーにアクセスできなくなります。<br><font color='blue'><b>パブリックアクセスを有効にしない場合、パブリックネットワークからクラスター API サーバーにアクセスできません。</font> zh-cn: Elastic IP アドレス (EIP) を使用して API サーバーを公開します。
デフォルトでは、API サーバー用に内部向け Server Load Balancer (SLB) インスタンスが作成されます。このインスタンスを削除すると、API サーバーにアクセスできなくなります。<br><font color='blue'><b>パブリックアクセスを有効にしない場合、パブリックネットワークからクラスター API サーバーにアクセスできません。</font> Default: false CloudMonitorFlag: Type: Boolean Label: zh-cn: モニタリングプラグイン en: モニタリングプラグイン Description: zh-cn: ECS ノードに CloudMonitor エージェントをインストールします。 en: ECS ノードに CloudMonitor エージェントをインストールします。 Default: true WorkerInstanceTypes: Type: CommaDelimitedList AssociationProperty: ALIYUN::ECS::Instance::InstanceType AssociationPropertyMetadata: InstanceChargeType: ${PayPeriod} ZoneId: ${ZoneId} Label: en: インスタンスタイプ zh-cn: インスタンスタイプ WorkerSystemDiskSize: Type: Number Label: zh-cn: ワーカーノードのシステムディスクサイズ en: ワーカーのシステムディスク容量 Description: zh-cn: システムディスクのサイズ (GB)。有効値:40~500。 en: 'システムディスクのサイズ (GB)。有効値:40~500。' Default: 40 MinValue: 40 MaxValue: 500 WorkerSystemDiskCategory: Type: String Label: en: ワーカーのシステムディスクカテゴリ zh-cn: ワーカーノードのシステムディスクカテゴリ AssociationPropertyMetadata: LocaleKey: DiskCategory Default: cloud_essd AllowedValues: - cloud_efficiency - cloud_ssd - cloud_essd LoginPassword: Type: String NoEcho: true Label: en: インスタンスのパスワード zh-cn: インスタンスのパスワード Description: en: パスワードは 8~30 文字の長さで、大文字、小文字、数字、特殊文字の 3 種類以上を含める必要があります。サポートされている特殊文字は ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ です zh-cn: パスワードは 8~30 文字の長さで、大文字、小文字、数字、特殊文字の 3 種類以上を含める必要があります。サポートされている特殊文字は ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ です ConstraintDescription: en: パスワードは 8~30 文字の長さで、大文字、小文字、数字、特殊文字の 3 種類以上を含める必要があります。サポートされている特殊文字は ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ です zh-cn: パスワードは 8~30 文字の長さで、大文字、小文字、数字、特殊文字の 3 種類以上を含める必要があります。サポートされている特殊文字は ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ です AssociationProperty: ALIYUN::ECS::Instance::Password Resources: NodePools: Type: ALIYUN::CS::ClusterNodePool Properties: ClusterId: Ref: ManagedKubernetesCluster NodePoolInfo: Name: default-nodepool ScalingGroup: Period: Ref: PayPeriod PeriodUnit: Ref: PayPeriodUnit InstanceChargeType: Ref: PayType VSwitchIds: - Ref: VSwitchId ZoneIds: - Ref: ZoneId SystemDiskCategory: Ref: WorkerSystemDiskCategory SystemDiskSize: Ref: WorkerSystemDiskSize InstanceTypes: Ref: WorkerInstanceTypes LoginPassword: Ref: LoginPassword Platform: AliyunLinux ImageId: aliyun_3_9_x64_20G_alibase_20231219.vhd KubernetesConfig: Runtime: containerd RuntimeVersion: 1.6.28 Count: Ref: NumOfNodes ManagedKubernetesCluster: Type: ALIYUN::CS::ManagedKubernetesCluster Properties: VpcId: Ref: VpcId VSwitchIds: - Ref: VSwitchId SecurityGroupId: Ref: SecurityGroupId ZoneIds: - Ref: ZoneId ClusterSpec: ack.pro.small ContainerCidr: Ref: PodCidr ServiceCidr: Ref: ServiceCidr LoginPassword: Ref: LoginPassword SnatEntry: Ref: SnatEntry Addons: - Name: flannel Config: '' CloudMonitorFlags: Ref: CloudMonitorFlag ProxyMode: IPVS EndpointPublicAccess: Ref: EndpointPublicAccess Name: Ref: ALIYUN::StackName Outputs: ClusterId: Value: Fn::GetAtt: - ManagedKubernetesCluster - ClusterId TaskId: Value: Fn::GetAtt: - ManagedKubernetesCluster - TaskId WorkerRamRoleName: Value: Fn::GetAtt: - ManagedKubernetesCluster - WorkerRamRoleName Metadata: ALIYUN::ROS::Interface: ParameterGroups: - Parameters: - PayType - PayPeriodUnit - PayPeriod Label: default: en: 課金タイプの設定 zh-cn: 課金タイプの設定 - Parameters: - VpcId - ZoneId - VSwitchId - SecurityGroupId Label: default: zh-cn: インフラストラクチャ設定 (必須) en: インフラストラクチャ設定 (必須) - Parameters: - NumOfNodes - PodCidr - ServiceCidr - SnatEntry - EndpointPublicAccess - CloudMonitorFlag - WorkerInstanceTypes - WorkerSystemDiskSize - WorkerSystemDiskCategory - LoginPassword Label: default: zh-cn: Kubernetes 基本設定 (必須) en: Kubernetes 基本設定 (必須) TemplateTags: - acs:example:ISV Software Deployment:Create ACK Dedicated Cluster (Existing VPC)







{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Description": {
    "zh-cn": "既存の VPC、vSwitch、セキュリティグループで課金方法を設定し、ワーカーノード、ネットワーク設定、モニタリングプラグインを含む Kubernetes クラスターを作成します。",
    "en": "既存の VPC、vSwitch、セキュリティグループで課金方法を設定し、ワーカーノード、ネットワーク設定、モニタリングプラグインを含む Kubernetes クラスターを作成します。"
  },
  "Parameters": {
    "PayType": {
      "Type": "String",
      "Label": {
        "en": "ECS インスタンスの課金タイプ",
        "zh-cn": "ECS インスタンスの課金タイプ"
      },
      "AssociationProperty": "ChargeType",
      "AssociationPropertyMetadata": {
        "LocaleKey": "InstanceChargeType"
      },
      "Default": "PostPaid",
      "AllowedValues": [
        "PostPaid",
        "PrePaid"
      ]
    },
    "PayPeriodUnit": {
      "Type": "String",
      "Label": {
        "en": "支払い期間単位",
        "zh-cn": "支払い期間単位"
      },
      "AssociationProperty": "PayPeriodUnit",
      "AssociationPropertyMetadata": {
        "Visible": {
          "Condition": {
            "Fn::Not": {
              "Fn::Equals": [
                "${PayType}",
                "PostPaid"
              ]
            }
          }
        }
      },
      "Default": "Month",
      "AllowedValues": [
        "Month",
        "Year"
      ]
    },
    "PayPeriod": {
      "Type": "Number",
      "Label": {
        "en": "期間",
        "zh-cn": "期間"
      },
      "AssociationProperty": "PayPeriod",
      "AssociationPropertyMetadata": {
        "Visible": {
          "Condition": {
            "Fn::Not": {
              "Fn::Equals": [
                "${PayType}",
                "PostPaid"
              ]
            }
          }
        }
      },
      "Default": 1,
      "AllowedValues": [
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9
      ]
    },
    "VpcId": {
      "Type": "String",
      "Label": {
        "en": "VPC ID",
        "zh-cn": "VPC ID"
      },
      "AssociationProperty": "ALIYUN::ECS::VPC::VPCId"
    },
    "ZoneId": {
      "Type": "String",
      "Label": {
        "en": "ゾーン ID",
        "zh-cn": "ゾーン ID"
      },
      "AssociationProperty": "ALIYUN::ECS::Instance:ZoneId"
    },
    "VSwitchId": {
      "Type": "String",
      "Label": {
        "en": "VSwitch ID",
        "zh-cn": "VSwitch ID"
      },
      "AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId",
      "AssociationPropertyMetadata": {
        "VpcId": "${VpcId}",
        "ZoneId": "${ZoneId}"
      }
    },
    "SecurityGroupId": {
      "Type": "String",
      "Label": {
        "en": "ビジネスセキュリティグループ ID",
        "zh-cn": "ビジネスセキュリティグループ ID"
      },
      "AssociationProperty": "ALIYUN::ECS::SecurityGroup::SecurityGroupId",
      "AssociationPropertyMetadata": {
        "VpcId": "${VpcId}"
      }
    },
    "NumOfNodes": {
      "Type": "Number",
      "Label": {
        "zh-cn": "ワーカーノード数",
        "en": "ワーカーインスタンス数"
      },
      "Default": 3
    },
    "PodCidr": {
      "Type": "String",
      "Label": {
        "zh-cn": "Pod ネットワーク CIDR",
        "en": "Pod ネットワーク CIDR"
      },
      "Description": {
        "zh-cn": "有効なプライベート CIDR ブロックを入力してください。例として、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 およびそのサブネットがあります。
CIDR ブロックは、VPC の CIDR ブロックや、VPC 内の既存の Kubernetes クラスターの CIDR ブロックと重複することはできません。<font color='blue'><b>この設定はクラスター作成後に変更できません。</font>", "en": "有効なプライベート CIDR ブロックを入力してください。例として、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 およびそのサブネットがあります。
CIDR ブロックは、VPC の CIDR ブロックや、VPC 内の既存の Kubernetes クラスターの CIDR ブロックと重複することはできません。<font color='blue'><b>この設定はクラスター作成後に変更できません。</font>" }, "AssociationProperty": "ALIYUN::CS::ManagedKubernetesCluster::PodCidr", "Default": "172.20.0.0/16" }, "ServiceCidr": { "Type": "String", "Label": { "zh-cn": "サービス CIDR", "en": "サービス CIDR" }, "Description": { "zh-cn": "プレフィックス長が 16 から 24 の有効な CIDR ブロックを入力してください。CIDR ブロックは、10.0.0.0/8、172.16.0.0/12、または 192.168.0.0/16 のいずれかのプライベートネットワーク範囲内にある必要があります。
CIDR ブロックは、VPC の CIDR ブロックや、VPC 内の既存の Kubernetes クラスターの CIDR ブロックと重複することはできません。<font color='blue'><b>この設定はクラスター作成後に変更できません。</font>", "en": "プレフィックス長が 16 から 24 の有効な CIDR ブロックを入力してください。CIDR ブロックは、10.0.0.0/8、172.16.0.0/12、または 192.168.0.0/16 のいずれかのプライベートネットワーク範囲内にある必要があります。
CIDR ブロックは、VPC の CIDR ブロックや、VPC 内の既存の Kubernetes クラスターの CIDR ブロックと重複することはできません。<font color='blue'><b>この設定はクラスター作成後に変更できません。</font>" }, "AssociationProperty": "ALIYUN::CS::ManagedKubernetesCluster::ServiceCidr", "Default": "172.21.0.0/20" }, "SnatEntry": { "Type": "Boolean", "Label": { "zh-cn": "SNAT の設定", "en": "SNAT の設定" }, "Description": { "zh-cn": "VPC の SNAT を設定します。
クラスター内のリソース (ノードやアプリケーションなど) がパブリックネットワークにアクセスする必要がある場合は、このオプションを選択してください。NAT Gateway が作成され、SNAT ルールが自動的に設定されます。<b><a href='https://www.alibabacloud.com/help/doc-detail/48126.html' target='_blank'><font color='blue'>NAT Gateway の料金</font></a>", "en": "VPC の SNAT を設定します。
クラスター内のリソース (ノードやアプリケーションなど) がパブリックネットワークにアクセスする必要がある場合は、このオプションを選択してください。NAT Gateway が作成され、SNAT ルールが自動的に設定されます。<b><a href='https://www.alibabacloud.com/help/doc-detail/48126.html' target='_blank'><font color='blue'>NAT Gateway の料金</font></a>" }, "Default": true }, "EndpointPublicAccess": { "Type": "Boolean", "Label": { "en": "パブリックアクセス", "zh-cn": "パブリックアクセス" }, "Description": { "en": "Elastic IP アドレス (EIP) を使用して API サーバーを公開します。
デフォルトでは、API サーバー用に内部向け Server Load Balancer (SLB) インスタンスが作成されます。このインスタンスを削除すると、API サーバーにアクセスできなくなります。<br><font color='blue'><b>パブリックアクセスを有効にしない場合、パブリックネットワークからクラスター API サーバーにアクセスできません。</font>", "zh-cn": "Elastic IP アドレス (EIP) を使用して API サーバーを公開します。
デフォルトでは、API サーバー用に内部向け Server Load Balancer (SLB) インスタンスが作成されます。このインスタンスを削除すると、API サーバーにアクセスできなくなります。<br><font color='blue'><b>パブリックアクセスを有効にしない場合、パブリックネットワークからクラスター API サーバーにアクセスできません。</font>" }, "Default": false }, "CloudMonitorFlag": { "Type": "Boolean", "Label": { "zh-cn": "モニタリングプラグイン", "en": "モニタリングプラグイン" }, "Description": { "zh-cn": "ECS ノードに CloudMonitor エージェントをインストールします。", "en": "ECS ノードに CloudMonitor エージェントをインストールします。" }, "Default": true }, "WorkerInstanceTypes": { "Type": "CommaDelimitedList", "AssociationProperty": "ALIYUN::ECS::Instance::InstanceType", "AssociationPropertyMetadata": { "InstanceChargeType": "${PayPeriod}", "ZoneId": "${ZoneId}" }, "Label": { "en": "インスタンスタイプ", "zh-cn": "インスタンスタイプ" } }, "WorkerSystemDiskSize": { "Type": "Number", "Label": { "zh-cn": "ワーカーノードのシステムディスクサイズ", "en": "ワーカーのシステムディスク容量" }, "Description": { "zh-cn": "システムディスクのサイズ (GB)。有効値:40~500。", "en": "システムディスクのサイズ (GB)。有効値:40~500。" }, "Default": 40, "MinValue": 40, "MaxValue": 500 }, "WorkerSystemDiskCategory": { "Type": "String", "Label": { "en": "ワーカーのシステムディスクカテゴリ", "zh-cn": "ワーカーノードのシステムディスクカテゴリ" }, "AssociationPropertyMetadata": { "LocaleKey": "DiskCategory" }, "Default": "cloud_essd", "AllowedValues": [ "cloud_efficiency", "cloud_ssd", "cloud_essd" ] }, "LoginPassword": { "Type": "String", "NoEcho": true, "Label": { "en": "インスタンスのパスワード", "zh-cn": "インスタンスのパスワード" }, "Description": { "en": "パスワードは 8~30 文字の長さで、大文字、小文字、数字、特殊文字の 3 種類以上を含める必要があります。サポートされている特殊文字は ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ です", "zh-cn": "パスワードは 8~30 文字の長さで、大文字、小文字、数字、特殊文字の 3 種類以上を含める必要があります。サポートされている特殊文字は ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ です" }, "ConstraintDescription": { "en": "パスワードは 8~30 文字の長さで、大文字、小文字、数字、特殊文字の 3 種類以上を含める必要があります。サポートされている特殊文字は ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ です", "zh-cn": "パスワードは 8~30 文字の長さで、大文字、小文字、数字、特殊文字の 3 種類以上を含める必要があります。サポートされている特殊文字は ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ です" }, "AssociationProperty": "ALIYUN::ECS::Instance::Password" } }, "Resources": { "NodePools": { "Type": "ALIYUN::CS::ClusterNodePool", "Properties": { "ClusterId": { "Ref": "ManagedKubernetesCluster" }, "NodePoolInfo": { "Name": "default-nodepool" }, "ScalingGroup": { "Period": { "Ref": "PayPeriod" }, "PeriodUnit": { "Ref": "PayPeriodUnit" }, "InstanceChargeType": { "Ref": "PayType" }, "VSwitchIds": [ { "Ref": "VSwitchId" } ], "ZoneIds": [ { "Ref": "ZoneId" } ], "SystemDiskCategory": { "Ref": "WorkerSystemDiskCategory" }, "SystemDiskSize": { "Ref": "WorkerSystemDiskSize" }, "InstanceTypes": { "Ref": "WorkerInstanceTypes" }, "LoginPassword": { "Ref": "LoginPassword" }, "Platform": "AliyunLinux", "ImageId": "aliyun_3_9_x64_20G_alibase_20231219.vhd" }, "KubernetesConfig": { "Runtime": "containerd", "RuntimeVersion": "1.6.28" }, "Count": { "Ref": "NumOfNodes" } } }, "ManagedKubernetesCluster": { "Type": "ALIYUN::CS::ManagedKubernetesCluster", "Properties": { "VpcId": { "Ref": "VpcId" }, "VSwitchIds": [ { "Ref": "VSwitchId" } ], "SecurityGroupId": { "Ref": "SecurityGroupId" }, "ZoneIds": [ { "Ref": "ZoneId" } ], "ClusterSpec": "ack.pro.small", "ContainerCidr": { "Ref": "PodCidr" }, "ServiceCidr": { "Ref": "ServiceCidr" }, "LoginPassword": { "Ref": "LoginPassword" }, "SnatEntry": { "Ref": "SnatEntry" }, "Addons": [ { "Name": "flannel", "Config": "" } ], "CloudMonitorFlags": { "Ref": "CloudMonitorFlag" }, "ProxyMode": "IPVS", "EndpointPublicAccess": { "Ref": "EndpointPublicAccess" }, "Name": { "Ref": "ALIYUN::StackName" } } } }, "Outputs": { "ClusterId": { "Value": { "Fn::GetAtt": [ "ManagedKubernetesCluster", "ClusterId" ] } }, "TaskId": { "Value": { "Fn::GetAtt": [ "ManagedKubernetesCluster", "TaskId" ] } }, "WorkerRamRoleName": { "Value": { "Fn::GetAtt": [ "ManagedKubernetesCluster", "WorkerRamRoleName" ] } } }, "Metadata": { "ALIYUN::ROS::Interface": { "ParameterGroups": [ { "Parameters": [ "PayType", "PayPeriodUnit", "PayPeriod" ], "Label": { "default": { "en": "課金タイプの設定", "zh-cn": "課金タイプの設定" } } }, { "Parameters": [ "VpcId", "ZoneId", "VSwitchId", "SecurityGroupId" ], "Label": { "default": { "zh-cn": "インフラストラクチャ設定 (必須)", "en": "インフラストラクチャ設定 (必須)" } } }, { "Parameters": [ "NumOfNodes", "PodCidr", "ServiceCidr", "SnatEntry", "EndpointPublicAccess", "CloudMonitorFlag", "WorkerInstanceTypes", "WorkerSystemDiskSize", "WorkerSystemDiskCategory", "LoginPassword" ], "Label": { "default": { "zh-cn": "Kubernetes 基本設定 (必須)", "en": "Kubernetes 基本設定 (必須)" } } } ], "TemplateTags": [ "acs:example:ISV Software Deployment:Create ACK Dedicated Cluster (Existing VPC)" ] } } }







シナリオ 3:ACK を使用したマイクロサービスの構築

クイック作成

ROSTemplateFormatVersion: '2015-09-01'
Description:
  zh-cn: ACK クラスターを作成し、VPC とセキュリティグループを設定し、マイクロサービスアプリケーションをデプロイし、ノードプールを自動的にスケーリングし、ALB Ingress をセットアップして、サービスアクセス URL を出力します。
  en: ACK クラスターを作成し、VPC とセキュリティグループを設定し、マイクロサービスアプリケーションをデプロイし、ノードプールを自動的にスケーリングし、ALB Ingress をセットアップして、サービスアクセス URL を出力します。
Parameters:
  CommonName:
    Type: String
    Default: microservices-on-ack
  ManagedKubernetesClusterName:
    Type: String
    Label:
      en: ACK マネージドクラスター名
      zh-cn: ACK マネージドクラスター名
    AssociationProperty: AutoCompleteInput
    AssociationPropertyMetadata:
      Length: 5
      Prefix: k8s-hpa-cluster-
      CharacterClasses:
        - Class: lowercase
          min: 1
  ZoneId1:
    Type: String
    AssociationProperty: 'ALIYUN::ECS::Instance::ZoneId'
    AssociationPropertyMetadata:
      ExclusiveTo:
        - ZoneId2
    Label:
      en: アベイラビリティゾーン
      zh-cn: アベイラビリティゾーン 1
  ZoneId2:
    Type: String
    AssociationProperty: 'ALIYUN::ECS::Instance::ZoneId'
    AssociationPropertyMetadata:
      ExclusiveTo:
        - ZoneId1
    Label:
      en: アベイラビリティゾーン
      zh-cn: アベイラビリティゾーン 2
  InstanceType:
    Type: CommaDelimitedList
    AssociationProperty: 'ALIYUN::ECS::Instance::InstanceType'
    AssociationPropertyMetadata:
      InstanceChargeType: PostPaid
      SystemDiskCategory: cloud_essd
      CreateACKClusterParams:
        NetworkPlugin: terway-eniip
    Label:
      en: インスタンスタイプ
      zh-cn: インスタンスタイプ
  InstancePassword:
    NoEcho: true
    Type: String
    Description:
      en: >-
        サーバーのログインパスワード。長さは 8~30 文字で、大文字、小文字、数字、または特殊記号 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ のうち 3 種類を含める必要があります
      zh-cn: >-
        サーバーのログインパスワード。長さは 8~30 文字で、大文字、小文字、数字、または特殊記号 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ のうち 3 種類を含める必要があります
    Label:
      en: インスタンスのパスワード
      zh-cn: インスタンスのパスワード
    ConstraintDescription:
      en: >-
        長さは 8~30 文字で、大文字、小文字、数字、または特殊記号 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ のうち 3 種類を含める必要があります
      zh-cn: '長さは 8~30 文字で、大文字、小文字、数字、または特殊記号 ()`~!@#$%^&*_-+=|{}[]:;''<>,.?/ のうち 3 種類を含める必要があります'
    AssociationProperty: 'ALIYUN::ECS::Instance::Password'
    Default: null
Resources:
  Vpc:
    Type: 'ALIYUN::ECS::VPC'
    Properties:
      CidrBlock: 10.0.0.0/8
      VpcName:
        Fn::Sub: ${CommonName}-vpc
  VSwitch1:
    Type: 'ALIYUN::ECS::VSwitch'
    Properties:
      VpcId:
        Ref: Vpc
      CidrBlock: 10.0.0.0/24
      ZoneId:
        Ref: ZoneId1
      VSwitchName:
        Fn::Sub: ${CommonName}-vsw
  VSwitch2:
    Type: 'ALIYUN::ECS::VSwitch'
    Properties:
      VpcId:
        Ref: Vpc
      CidrBlock: 10.0.1.0/24
      ZoneId:
        Ref: ZoneId2
      VSwitchName:
        Fn::Sub: ${CommonName}-vsw
  SecurityGroup:
    Type: 'ALIYUN::ECS::SecurityGroup'
    Properties:
      VpcId:
        Ref: Vpc
      SecurityGroupName:
        Fn::Sub: ${CommonName}-sg
      SecurityGroupIngress:
        - PortRange: 8080/8080
          SourceCidrIp: 0.0.0.0/0
          IpProtocol: tcp
        - PortRange: 80/80
          SourceCidrIp: 0.0.0.0/0
          IpProtocol: tcp
  AckCluster:
    Type: 'ALIYUN::CS::ManagedKubernetesCluster'
    Properties:
      VpcId:
        Ref: Vpc
      VSwitchIds:
        - Ref: VSwitch1
        - Ref: VSwitch2
      PodVswitchIds:
        - Ref: VSwitch1
        - Ref: VSwitch1
      Name:
        Ref: ManagedKubernetesClusterName
      KubernetesVersion: 1.33.1-aliyun.1
      ServiceCidr: 192.168.0.0/16
      ClusterSpec: ack.pro.small
      LoadBalancerSpec: slb.s2.small
      IsEnterpriseSecurityGroup: true
      SnatEntry: true
      NumOfNodes: 0
      EndpointPublicAccess: true
      Platform: AliyunLinux
      Addons:
        - Name: terway-eniip
          Config: '{"IPVlan":"false","NetworkPolicy":"false","ENITrunking":"false"}'
        - Name: csi-plugin
        - Name: csi-provisioner
        - Name: storage-operator
          Config: '{"CnfsOssEnable":"false","CnfsNasEnable":"false"}'
        - Name: logtail-ds
          Config: '{"IngressDashboardEnabled":"true"}'
        - Name: nginx-ingress-controller
          Disabled: true
        - Name: alb-ingress-controller
          Version: ""
          Config:
            Fn::Sub: >-
              {"albIngress":{"AddressType":"Internet","ZoneMappings":{"${ZoneId1}":["${VSwitch1}"],
              "${ZoneId2}":["${VSwitch2}"]},"CreateDefaultALBConfig":true}}
        - Name: ack-node-local-dns
      ProxyMode: ipvs
      DeleteOptions:
        - ResourceType: ALB
          DeleteMode: delete
        - ResourceType: SLB
          DeleteMode: delete
        - ResourceType: SLS_Data
          DeleteMode: delete
        - ResourceType: SLS_ControlPlane
          DeleteMode: delete
        - ResourceType: PrivateZone
          DeleteMode: delete
  NodePools:
    Type: 'ALIYUN::CS::ClusterNodePool'
    Properties:
      ClusterId:
        Ref: AckCluster
      NodePoolInfo:
          Name: default-nodepool
      ScalingGroup:
        InstanceChargeType: PostPaid
        VSwitchIds:
          - Ref: VSwitch1
          - Ref: VSwitch2
        ZoneIds:
          - Ref: ZoneId1
          - Ref: ZoneId2
        SystemDiskCategory: cloud_essd
        SystemDiskPerformanceLevel: PL0
        SystemDiskSize: 120
        InstanceTypes:
          Ref: InstanceType
        LoginPassword:
          Ref: InstancePassword
        Platform: AliyunLinux
        ImageId: aliyun_3_9_x64_20G_alibase_20231219.vhd
      KubernetesConfig:
        Runtime: containerd
        RuntimeVersion: 1.6.28
      Count: 3
  InstallBackendApp:
    Type: 'ALIYUN::CS::ClusterApplication'
    DependsOn: NodePools
    Properties:
      ClusterId:
        Ref: AckCluster
      YamlContent:
        Fn::Sub: |-
          apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
          kind: Deployment
          metadata:
            name: ecs-ack-test-service-a
            labels:
              app: ecs-ack-test-service-a
          spec:
            replicas: 2
            selector:
              matchLabels:
                app: ecs-ack-test-service-a
            template:
              metadata:
                labels:
                  app: ecs-ack-test-service-a
              spec:
                initContainers:
                  - name: download-jar
                    image: dragonwell-registry.cn-hangzhou.cr.aliyuncs.com/dragonwell/dragonwell:8-alinux
                    command:
                      - "/bin/sh"
                      - "-c"
                      - "curl -o /app/app.jar https://help-static-aliyun-doc.aliyuncs.com/tech-solution/MicroServiceOnAckDemo-1.0.1.jar && echo 'Download jar OK!'"
                    volumeMounts:
                      - name: app-jar
                        mountPath: /app
                containers:
                  - args:
                      - '-DbHost=http://ecs-ack-test-service-b:8080'
                      - '-jar'
                      - '/app/app.jar'
                    command:
                      - java
                    name: ecs-ack-test-service-a
                    image: dragonwell-registry.cn-hangzhou.cr.aliyuncs.com/dragonwell/dragonwell:8-alinux
                    env:
                    - name: APP_MANUAL_DEPLOY
                      value: "false"
                    ports:
                      - containerPort: 8080
                    resources:
                      limits:
                        cpu: '2'
                        ephemeral-storage: 40Gi
                        memory: 2Gi
                      requests:
                        cpu: '1'
                        ephemeral-storage: 20Gi
                        memory: 1Gi
                    volumeMounts:
                      - name: app-jar
                        mountPath: /app
                volumes:
                  - name: app-jar
                    emptyDir: {}
          ---
          apiVersion: v1
          kind: Service
          metadata:
            name: ecs-ack-test-service-a
          spec:
            selector:
              app: ecs-ack-test-service-a
            ports:
              - protocol: TCP
                port: 8080
                targetPort: 8080
          ---
          apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
          kind: Deployment
          metadata:
            name: ecs-ack-test-service-b
            labels:
              app: ecs-ack-test-service-b
          spec:
            replicas: 2
            selector:
              matchLabels:
                app: ecs-ack-test-service-b
            template:
              metadata:
                labels:
                  app: ecs-ack-test-service-b
              spec:
                initContainers:
                  - name: download-jar
                    image: dragonwell-registry.cn-hangzhou.cr.aliyuncs.com/dragonwell/dragonwell:8-alinux
                    command:
                      - "/bin/sh"
                      - "-c"
                      - "curl -o /app/app.jar https://help-static-aliyun-doc.aliyuncs.com/tech-solution/MicroServiceOnAckDemo-1.0.1.jar && echo 'Download jar OK!'"
                    volumeMounts:
                      - name: app-jar
                        mountPath: /app
                containers:
                  - args:
                      - '-DbHost=http://ecs-ack-test-service-b:8080'
                      - '-jar'
                      - '/app/app.jar'
                    command:
                      - java
                    name: ecs-ack-test-service-b
                    image: dragonwell-registry.cn-hangzhou.cr.aliyuncs.com/dragonwell/dragonwell:8-alinux
                    env:
                    - name: APP_MANUAL_DEPLOY
                      value: "false"
                    ports:
                      - containerPort: 8080
                    resources:
                      limits:
                        cpu: '2'
                        ephemeral-storage: 40Gi
                        memory: 2Gi
                      requests:
                        cpu: '1'
                        ephemeral-storage: 20Gi
                        memory: 1Gi
                    volumeMounts:
                      - name: app-jar
                        mountPath: /app
                volumes:
                  - name: app-jar
                    emptyDir: {}
          ---
          apiVersion: v1
          kind: Service
          metadata:
            name: ecs-ack-test-service-b
          spec:
            selector:
              app: ecs-ack-test-service-b
            ports:
              - protocol: TCP
                port: 8080
                targetPort: 8080
  AlbConfig:
    Type: 'ALIYUN::CS::ClusterApplication'
    DependsOn: InstallBackendApp
    Properties:
      ClusterId:
        Ref: AckCluster
      YamlContent:
        Fn::Sub: |-
          apiVersion: alibabacloud.com/v1
          kind: AlbConfig
          metadata:
            name: ecs-ack-test-alb-config
          spec:
            config:
              name: ecs-ack-test-alb
              addressType: Internet
              zoneMappings:
              - vSwitchId: ${VSwitch1}
              - vSwitchId: ${VSwitch2}
            listeners:
              - port: 80
                protocol: HTTP
          ---
          apiVersion: networking.k8s.io/v1
          kind: IngressClass
          metadata:
            name: ecs-ack-test-alb
          spec:
            controller: ingress.k8s.alibabacloud/alb
            parameters:
              apiGroup: alibabacloud.com
              kind: AlbConfig
              name: ecs-ack-test-alb-config
          ---
          apiVersion: networking.k8s.io/v1
          kind: Ingress
          metadata:
            name: ecs-ack-test-alb-ingress
          spec:
            ingressClassName:  ecs-ack-test-alb 
            rules:
             - http:
                paths:
                - path: /a
                  pathType: ImplementationSpecific
                  backend:
                    service:
                      name: ecs-ack-test-service-a
                      port:
                        number: 8080
                - path: /b
                  pathType: ImplementationSpecific
                  backend:
                    service:
                      name: ecs-ack-test-service-b
                      port: 
                        number: 8080
  WaitAlbIngress:
    Type: ALIYUN::ROS::Sleep
    DependsOn: AlbConfig
    Properties:
      CreateDuration: 120
  IngressInfo:
    Type: 'DATASOURCE::CS::ClusterApplicationResources'
    DependsOn: WaitAlbIngress
    Properties:
      ClusterId:
        Ref: AckCluster
      Kind: Ingress
      Namespace: default
      JsonPath: $.items.[0].status.loadBalancer.ingress.[0].hostname
      FirstMatch: true
Outputs:
  UrlServiceA:
    Description:
      zh-cn: A サービスのエンドポイント。
      en: A サービスのエンドポイント。
    Value:
      'Fn::Sub': http://${IngressInfo}/a
  UrlServiceB:
    Description:
      zh-cn: B サービスのエンドポイント。
      en: B サービスのエンドポイント。
    Value:
      'Fn::Sub': http://${IngressInfo}/b
Metadata:
  'ALIYUN::ROS::Interface':
    ParameterGroups:
      - Parameters:
          - SlsProjectName
          - ManagedKubernetesClusterName
          - ZoneId1
          - ZoneId2
          - InstanceType
          - InstancePassword
    TemplateTags:
      - acs:technical-solution:micro:how-to-quickly-build-microservices-using-ack-tech_solu_124
    Hidden:
      - CommonName
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Description": {
    "zh-cn": "ACK クラスターを作成し、VPC とセキュリティグループを設定し、マイクロサービスアプリケーションをデプロイし、ノードプールを自動的にスケーリングし、ALB Ingress をセットアップして、サービスアクセス URL を出力します。",
    "en": "ACK クラスターを作成し、VPC とセキュリティグループを設定し、マイクロサービスアプリケーションをデプロイし、ノードプールを自動的にスケーリングし、ALB Ingress をセットアップして、サービスアクセス URL を出力します。"
  },
  "Parameters": {
    "CommonName": {
      "Type": "String",
      "Default": "microservices-on-ack"
    },
    "ManagedKubernetesClusterName": {
      "Type": "String",
      "Label": {
        "en": "ACK マネージドクラスター名",
        "zh-cn": "ACK マネージドクラスター名"
      },
      "AssociationProperty": "AutoCompleteInput",
      "AssociationPropertyMetadata": {
        "Length": 5,
        "Prefix": "k8s-hpa-cluster-",
        "CharacterClasses": [
          {
            "Class": "lowercase",
            "min": 1
          }
        ]
      }
    },
    "ZoneId1": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::Instance::ZoneId",
      "AssociationPropertyMetadata": {
        "ExclusiveTo": [
          "ZoneId2"
        ]
      },
      "Label": {
        "en": "アベイラビリティゾーン",
        "zh-cn": "アベイラビリティゾーン 1"
      }
    },
    "ZoneId2": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::Instance::ZoneId",
      "AssociationPropertyMetadata": {
        "ExclusiveTo": [
          "ZoneId1"
        ]
      },
      "Label": {
        "en": "アベイラビリティゾーン",
        "zh-cn": "アベイラビリティゾーン 2"
      }
    },
    "InstanceType": {
      "Type": "CommaDelimitedList",
      "AssociationProperty": "ALIYUN::ECS::Instance::InstanceType",
      "AssociationPropertyMetadata": {
        "InstanceChargeType": "PostPaid",
        "SystemDiskCategory": "cloud_essd",
        "CreateACKClusterParams": {
          "NetworkPlugin": "terway-eniip"
        }
      },
      "Label": {
        "en": "インスタンスタイプ",
        "zh-cn": "インスタンスタイプ"
      }
    },
    "InstancePassword": {
      "NoEcho": true,
      "Type": "String",
      "Description": {
        "en": "サーバーのログインパスワード。長さは 8~30 文字で、大文字、小文字、数字、または特殊記号 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ のうち 3 種類を含める必要があります",
        "zh-cn": "サーバーのログインパスワード。長さは 8~30 文字で、大文字、小文字、数字、または特殊記号 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ のうち 3 種類を含める必要があります"
      },
      "Label": {
        "en": "インスタンスのパスワード",
        "zh-cn": "インスタンスのパスワード"
      },
      "ConstraintDescription": {
        "en": "長さは 8~30 文字で、大文字、小文字、数字、または特殊記号 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ のうち 3 種類を含める必要があります",
        "zh-cn": "長さは 8~30 文字で、大文字、小文字、数字、または特殊記号 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ のうち 3 種類を含める必要があります"
      },
      "AssociationProperty": "ALIYUN::ECS::Instance::Password",
      "Default": null
    }
  },
  "Resources": {
    "Vpc": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "CidrBlock": "10.0.0.0/8",
        "VpcName": {
          "Fn::Sub": "${CommonName}-vpc"
        }
      }
    },
    "VSwitch1": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "VpcId": {
          "Ref": "Vpc"
        },
        "CidrBlock": "10.0.0.0/24",
        "ZoneId": {
          "Ref": "ZoneId1"
        },
        "VSwitchName": {
          "Fn::Sub": "${CommonName}-vsw"
        }
      }
    },
    "VSwitch2": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "VpcId": {
          "Ref": "Vpc"
        },
        "CidrBlock": "10.0.1.0/24",
        "ZoneId": {
          "Ref": "ZoneId2"
        },
        "VSwitchName": {
          "Fn::Sub": "${CommonName}-vsw"
        }
      }
    },
    "SecurityGroup": {
      "Type": "ALIYUN::ECS::SecurityGroup",
      "Properties": {
        "VpcId": {
          "Ref": "Vpc"
        },
        "SecurityGroupName": {
          "Fn::Sub": "${CommonName}-sg"
        },
        "SecurityGroupIngress": [
          {
            "PortRange": "8080/8080",
            "SourceCidrIp": "0.0.0.0/0",
            "IpProtocol": "tcp"
          },
          {
            "PortRange": "80/80",
            "SourceCidrIp": "0.0.0.0/0",
            "IpProtocol": "tcp"
          }
        ]
      }
    },
    "AckCluster": {
      "Type": "ALIYUN::CS::ManagedKubernetesCluster",
      "Properties": {
        "VpcId": {
          "Ref": "Vpc"
        },
        "VSwitchIds": [
          {
            "Ref": "VSwitch1"
          },
          {
            "Ref": "VSwitch2"
          }
        ],
        "PodVswitchIds": [
          {
            "Ref": "VSwitch1"
          },
          {
            "Ref": "VSwitch1"
          }
        ],
        "Name": {
          "Ref": "ManagedKubernetesClusterName"
        },
        "KubernetesVersion": "1.33.1-aliyun.1",
        "ServiceCidr": "192.168.0.0/16",
        "ClusterSpec": "ack.pro.small",
        "LoadBalancerSpec": "slb.s2.small",
        "IsEnterpriseSecurityGroup": true,
        "SnatEntry": true,
        "NumOfNodes": 0,
        "EndpointPublicAccess": true,
        "Platform": "AliyunLinux",
        "Addons": [
          {
            "Name": "terway-eniip",
            "Config": "{\"IPVlan\":\"false\",\"NetworkPolicy\":\"false\",\"ENITrunking\":\"false\"}"
          },
          {
            "Name": "csi-plugin"
          },
          {
            "Name": "csi-provisioner"
          },
          {
            "Name": "storage-operator",
            "Config": "{\"CnfsOssEnable\":\"false\",\"CnfsNasEnable\":\"false\"}"
          },
          {
            "Name": "logtail-ds",
            "Config": "{\"IngressDashboardEnabled\":\"true\"}"
          },
          {
            "Name": "nginx-ingress-controller",
            "Disabled": true
          },
          {
            "Name": "alb-ingress-controller",
            "Version": "",
            "Config": {
              "Fn::Sub": "{\"albIngress\":{\"AddressType\":\"Internet\",\"ZoneMappings\":{\"${ZoneId1}\":[\"${VSwitch1}\"], \"${ZoneId2}\":[\"${VSwitch2}\"]},\"CreateDefaultALBConfig\":true}}"
            }
          },
          {
            "Name": "ack-node-local-dns"
          }
        ],
        "ProxyMode": "ipvs",
        "DeleteOptions": [
          {
            "ResourceType": "ALB",
            "DeleteMode": "delete"
          },
          {
            "ResourceType": "SLB",
            "DeleteMode": "delete"
          },
          {
            "ResourceType": "SLS_Data",
            "DeleteMode": "delete"
          },
          {
            "ResourceType": "SLS_ControlPlane",
            "DeleteMode": "delete"
          },
          {
            "ResourceType": "PrivateZone",
            "DeleteMode": "delete"
          }
        ]
      }
    },
    "NodePools": {
      "Type": "ALIYUN::CS::ClusterNodePool",
      "Properties": {
        "ClusterId": {
          "Ref": "AckCluster"
        },
        "NodePoolInfo": {
          "Name": "default-nodepool"
        },
        "ScalingGroup": {
          "InstanceChargeType": "PostPaid",
          "VSwitchIds": [
            {
              "Ref": "VSwitch1"
            },
            {
              "Ref": "VSwitch2"
            }
          ],
          "ZoneIds": [
            {
              "Ref": "ZoneId1"
            },
            {
              "Ref": "ZoneId2"
            }
          ],
          "SystemDiskCategory": "cloud_essd",
          "SystemDiskPerformanceLevel": "PL0",
          "SystemDiskSize": 120,
          "InstanceTypes": {
            "Ref": "InstanceType"
          },
          "LoginPassword": {
            "Ref": "InstancePassword"
          },
          "Platform": "AliyunLinux",
          "ImageId": "aliyun_3_9_x64_20G_alibase_20231219.vhd"
        },
        "KubernetesConfig": {
          "Runtime": "containerd",
          "RuntimeVersion": "1.6.28"
        },
        "Count": 3
      }
    },
    "InstallBackendApp": {
      "Type": "ALIYUN::CS::ClusterApplication",
      "DependsOn": "NodePools",
      "Properties": {
        "ClusterId": {
          "Ref": "AckCluster"
        },
        "YamlContent": {
          "Fn::Sub": "apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1\nkind: Deployment\nmetadata:\n  name: ecs-ack-test-service-a\n  labels:\n    app: ecs-ack-test-service-a\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: ecs-ack-test-service-a\n  template:\n    metadata:\n      labels:\n        app: ecs-ack-test-service-a\n    spec:\n      initContainers:\n        - name: download-jar\n          image: dragonwell-registry.cn-hangzhou.cr.aliyuncs.com/dragonwell/dragonwell:8-alinux\n          command:\n            - \"/bin/sh\"\n            - \"-c\"\n            - \"curl -o /app/app.jar https://help-static-aliyun-doc.aliyuncs.com/tech-solution/MicroServiceOnAckDemo-1.0.1.jar && echo 'Download jar OK!'\"\n          volumeMounts:\n            - name: app-jar\n              mountPath: /app\n      containers:\n        - args:\n            - '-DbHost=http://ecs-ack-test-service-b:8080'\n            - '-jar'\n            - '/app/app.jar'\n          command:\n            - java\n          name: ecs-ack-test-service-a\n          image: dragonwell-registry.cn-hangzhou.cr.aliyuncs.com/dragonwell/dragonwell:8-alinux\n          env:\n          - name: APP_MANUAL_DEPLOY\n            value: \"false\"\n          ports:\n            - containerPort: 8080\n          resources:\n            limits:\n              cpu: '2'\n              ephemeral-storage: 40Gi\n              memory: 2Gi\n            requests:\n              cpu: '1'\n              ephemeral-storage: 20Gi\n              memory: 1Gi\n          volumeMounts:\n            - name: app-jar\n              mountPath: /app\n      volumes:\n        - name: app-jar\n          emptyDir: {}\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: ecs-ack-test-service-a\nspec:\n  selector:\n    app: ecs-ack-test-service-a\n  ports:\n    - protocol: TCP\n      port: 8080\n      targetPort: 8080\n---\napiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1\nkind: Deployment\nmetadata:\n  name: ecs-ack-test-service-b\n  labels:\n    app: ecs-ack-test-service-b\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: ecs-ack-test-service-b\n  template:\n    metadata:\n      labels:\n        app: ecs-ack-test-service-b\n    spec:\n      initContainers:\n        - name: download-jar\n          image: dragonwell-registry.cn-hangzhou.cr.aliyuncs.com/dragonwell/dragonwell:8-alinux\n          command:\n            - \"/bin/sh\"\n            - \"-c\"\n            - \"curl -o /app/app.jar https://help-static-aliyun-doc.aliyuncs.com/tech-solution/MicroServiceOnAckDemo-1.0.1.jar && echo 'Download jar OK!'\"\n          volumeMounts:\n            - name: app-jar\n              mountPath: /app\n      containers:\n        - args:\n            - '-DbHost=http://ecs-ack-test-service-b:8080'\n            - '-jar'\n            - '/app/app.jar'\n          command:\n            - java\n          name: ecs-ack-test-service-b\n          image: dragonwell-registry.cn-hangzhou.cr.aliyuncs.com/dragonwell/dragonwell:8-alinux\n          env:\n          - name: APP_MANUAL_DEPLOY\n            value: \"false\"\n          ports:\n            - containerPort: 8080\n          resources:\n            limits:\n              cpu: '2'\n              ephemeral-storage: 40Gi\n              memory: 2Gi\n            requests:\n              cpu: '1'\n              ephemeral-storage: 20Gi\n              memory: 1Gi\n          volumeMounts:\n            - name: app-jar\n              mountPath: /app\n      volumes:\n        - name: app-jar\n          emptyDir: {}\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: ecs-ack-test-service-b\nspec:\n  selector:\n    app: ecs-ack-test-service-b\n  ports:\n    - protocol: TCP\n      port: 8080\n      targetPort: 8080"
        }
      }
    },
    "AlbConfig": {
      "Type": "ALIYUN::CS::ClusterApplication",
      "DependsOn": "InstallBackendApp",
      "Properties": {
        "ClusterId": {
          "Ref": "AckCluster"
        },
        "YamlContent": {
          "Fn::Sub": "apiVersion: alibabacloud.com/v1\nkind: AlbConfig\nmetadata:\n  name: ecs-ack-test-alb-config\nspec:\n  config:\n    name: ecs-ack-test-alb\n    addressType: Internet\n    zoneMappings:\n    - vSwitchId: ${VSwitch1}\n    - vSwitchId: ${VSwitch2}\n  listeners:\n    - port: 80\n      protocol: HTTP\n---\napiVersion: networking.k8s.io/v1\nkind: IngressClass\nmetadata:\n  name: ecs-ack-test-alb\nspec:\n  controller: ingress.k8s.alibabacloud/alb\n  parameters:\n    apiGroup: alibabacloud.com\n    kind: AlbConfig\n    name: ecs-ack-test-alb-config\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: ecs-ack-test-alb-ingress\nspec:\n  ingressClassName:  ecs-ack-test-alb \n  rules:\n   - http:\n      paths:\n      - path: /a\n        pathType: ImplementationSpecific\n        backend:\n          service:\n            name: ecs-ack-test-service-a\n            port:\n              number: 8080\n      - path: /b\n        pathType: ImplementationSpecific\n        backend:\n          service:\n            name: ecs-ack-test-service-b\n            port: \n              number: 8080"
        }
      }
    },
    "WaitAlbIngress": {
      "Type": "ALIYUN::ROS::Sleep",
      "DependsOn": "AlbConfig",
      "Properties": {
        "CreateDuration": 120
      }
    },
    "IngressInfo": {
      "Type": "DATASOURCE::CS::ClusterApplicationResources",
      "DependsOn": "WaitAlbIngress",
      "Properties": {
        "ClusterId": {
          "Ref": "AckCluster"
        },
        "Kind": "Ingress",
        "Namespace": "default",
        "JsonPath": "$.items.[0].status.loadBalancer.ingress.[0].hostname",
        "FirstMatch": true
      }
    }
  },
  "Outputs": {
    "UrlServiceA": {
      "Description": {
        "zh-cn": "A サービスのエンドポイント。",
        "en": "A サービスのエンドポイント。"
      },
      "Value": {
        "Fn::Sub": "http://${IngressInfo}/a"
      }
    },
    "UrlServiceB": {
      "Description": {
        "zh-cn": "B サービスのエンドポイント。",
        "en": "B サービスのエンドポイント。"
      },
      "Value": {
        "Fn::Sub": "http://${IngressInfo}/b"
      }
    }
  },
  "Metadata": {
    "ALIYUN::ROS::Interface": {
      "ParameterGroups": [
        {
          "Parameters": [
            "SlsProjectName",
            "ManagedKubernetesClusterName",
            "ZoneId1",
            "ZoneId2",
            "InstanceType",
            "InstancePassword"
          ]
        }
      ],
      "TemplateTags": [
        "acs:technical-solution:micro:how-to-quickly-build-microservices-using-ack-tech_solu_124"
      ],
      "Hidden": [
        "CommonName"
      ]
    }
  }
}

その他の例については、「このリソースを含むパブリックテンプレート」をご参照ください。