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 を自動的に作成します。
|
Addons | List | いいえ | はい | Kubernetes クラスターのアドオンプラグインの組み合わせ。 | 値:
詳細については、「Addons のプロパティ」をご参照ください。 |
SecurityHardeningOs | Boolean | いいえ | いいえ | Alibaba Cloud オペレーティングシステムのセキュリティ強化。 | 値:
デフォルト:false。 |
CloudMonitorFlags | Boolean | いいえ | いいえ | CloudMonitor エージェントをインストールします。 | 値:
|
ClusterSpec | String | いいえ | いいえ | ACK マネージドクラスターのタイプ。 | 値:
|
ContainerCidr | String | いいえ | いいえ | コンテナーの CIDR ブロック。 | VPC の CIDR ブロックと競合することはできません。システムが VPC を自動的に作成する場合、デフォルトで 172.16.0.0/16 の CIDR ブロックを使用します。 |
DeletionProtection | Boolean | いいえ | はい | 削除保護を有効にします。 | 有効にすると、クラスターを直接削除できなくなります。有効値:
|
EncryptionProviderKey | String | いいえ | いいえ | Key Management Service (KMS) によって管理されるキー ID。 | このキーはデータディスクを暗号化します。KMS はプロフェッショナルマネージド Kubernetes クラスターでのみ使用してください。 |
EndpointPublicAccess | Boolean | いいえ | いいえ | API サーバーのパブリックネットワークアクセスを有効にします。 | 値:
|
FormatDisk | Boolean | いいえ | いいえ | 既存の ECS インスタンス内に作成されたノードにデータディスクをマウントするかどうかを指定します。 | 値:
|
RrsaConfig | Map | いいえ | いいえ | RRSA 設定。 | 詳細については、「RrsaConfig のプロパティ」をご参照ください。 |
IsEnterpriseSecurityGroup | Boolean | いいえ | いいえ | 高度なセキュリティグループを作成します。 | このパラメーターは、SecurityGroupId が空の場合に有効になります。有効値:
|
KeepInstanceName | Boolean | いいえ | いいえ | クラスターで使用される既存の ECS インスタンスの名前を保持します。 | 値:
|
KeyPair | String | いいえ | いいえ | キーペア名。 | KeyPair または LoginPassword のいずれかを指定します。 |
KubernetesVersion | String | いいえ | はい | クラスターのバージョン。Kubernetes コミュニティのベースラインバージョンと一致します。最新バージョンを選択することを推奨します。 | 最新の 2 つのバージョンのクラスターを作成できます。ACK がサポートする Kubernetes のバージョンについては、「Kubernetes バージョンリリース概要 (オフライン)」をご参照ください。 |
LoadBalancerSpec | String | いいえ | いいえ | SLB インスタンスタイプ。 | 値:
|
LoginPassword | String | いいえ | いいえ | SSH ログインパスワード。 | 長さ:8~30 文字。文字、数字、特殊文字を含める必要があります。サポートされている特殊文字は 説明 LoginPassword または KeyPair のいずれかを指定します。 |
NodeCidrMask | String | いいえ | いいえ | ノードに割り当て可能な IP アドレスの最大数。 | この数値は、指定された Pod の CIDR に依存します。このパラメーターは、クラスターが Flannel プラグインを使用する場合にのみ適用されます。 デフォルト:25。 |
NodeNameMode | String | いいえ | いいえ | ノード名をカスタマイズします。 | ノード名は、プレフィックス + ノード IP アドレスの部分文字列 + サフィックスの 3 つの部分で構成されます。
たとえば、ノード IP アドレスが 192.168.XX.XX、プレフィックスが |
NodePools | List | いいえ | いいえ | ノードプール情報。 | 詳細については、「NodePools のプロパティ」をご参照ください。 |
OsType | String | いいえ | いいえ | オペレーティングシステムのタイプ。 | 値:
|
Platform | String | いいえ | いいえ | オペレーティングシステムのリリースバージョン。 | 値:
|
PodVswitchIds | List | いいえ | いいえ | Pod の vSwitch のリスト。 | 各ノード vSwitch に対して、同じゾーンに少なくとも 1 つの Pod vSwitch を指定します。Pod vSwitch はノード vSwitch と同じにすることはできません。 CIDR ブロックマスクが 19 以下の vSwitch を選択してください。 説明 クラスターリスト (Addons) がネットワークコンポーネントに設定され、Terway ネットワークタイプが使用されている場合、クラスターに PodVswitchIds を指定する必要があります。 |
ProxyMode | String | いいえ | いいえ | kube-proxy モード。 | 値:
|
ResourceGroupId | String | いいえ | はい | クラスターが属するリソースグループ ID。 | なし |
Runtime | Map | いいえ | いいえ | コンテナーランタイム。 | Runtime には、次の 2 つの情報が含まれます。
例: コンテナーランタイムの選択に関する詳細については、「containerd、サンドボックスコンテナー、Docker ランタイムの比較」をご参照ください。 詳細については、「Runtime のプロパティ」をご参照ください。 |
SecurityGroupId | String | いいえ | いいえ | クラスターの ECS インスタンスが属するセキュリティグループ ID。 | なし |
ServiceCidr | String | いいえ | いいえ | サービスの CIDR ブロック。 | VPC の CIDR ブロックまたはコンテナーの CIDR ブロックと競合することはできません。システムが VPC を自動的に作成する場合、デフォルトで 172.19.0.0/20 の CIDR ブロックを使用します。 |
SnatEntry | Boolean | いいえ | いいえ | ネットワークに SNAT が設定されているかどうか。 | 値:
|
SocEnabled | Boolean | いいえ | いいえ | 階層化保護強化を有効にします。 | 値:
|
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 プロジェクト。 | ロギングには既存のプロジェクトを使用するか、システムに自動的に作成させます。自動作成を選択した場合、システムは |
MaintenanceWindow | Map | いいえ | はい | クラスターのメンテナンスウィンドウ設定。 | 詳細については、「MaintenanceWindow のプロパティ」をご参照ください。 |
VSwitchIds | List | はい | いいえ | ワーカーノードにバインドされた vSwitch。 | なし |
ZoneIds | List | いいえ | いいえ | ゾーンのリスト。 | なし |
TimeZone | String | いいえ | いいえ | クラスターのタイムゾーン。 | なし |
IpStack | String | いいえ | いいえ | クラスターの IP プロトコルスタック。 | 値:
|
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 | いいえ | いいえ | 階層化保護強化を有効にします。 | 値:
|
ImageType | String | いいえ | いいえ | オペレーティングシステムのイメージタイプ。 | なし |
InstancePatterns | List | いいえ | いいえ | インスタンスのプロパティ設定。 | 詳細については、「InstancePatterns のプロパティ」をご参照ください。 |
SecurityHardeningOs | Boolean | いいえ | いいえ | Alibaba Cloud OS のセキュリティ強化。 | 値:
デフォルト: |
DesiredSize | Integer | いいえ | いいえ | ノードプール内のノードの希望数。 | なし |
DataDisks | List | いいえ | いいえ | ノードプールのデータディスク設定。 | 詳細については、「DataDisks のプロパティ」をご参照ください。 |
ImageId | String | いいえ | いいえ | カスタムイメージ ID。 | デフォルトでは、システム提供のイメージを使用します。 |
InstanceChargeType | String | いいえ | いいえ | ノードプールノードの課金方法。 | 値:
|
InternetChargeType | String | いいえ | いいえ | パブリック IP アドレスの課金方法。 | 値:
|
InternetMaxBandwidthOut | Integer | いいえ | いいえ | ノードのパブリック IP アドレスの最大アウトバウンド帯域幅。 | 単位:Mbps。 範囲:1~100。 |
IsEnterpriseSecurityGroup | Boolean | いいえ | いいえ | エンタープライズレベルのセキュリティグループを自動的に作成します。 | 値:
|
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 | いいえ | いいえ | ノードのシステムディスクタイプ。 | 値:
|
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 | いいえ | いいえ | データディスクタイプ。 | 値:
|
Encrypted | Boolean | いいえ | いいえ | データディスクを暗号化するかどうかを指定します。 | 値:
|
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 つのポリシーがサポートされます。
|
Labels | List | いいえ | いいえ | ノードのラベル。 | Kubernetes クラスターノードにラベルを追加します。 詳細については、「Labels のプロパティ」をご参照ください。 |
NodeNameMode | String | いいえ | いいえ | ノード名をカスタマイズします。 | ノード名は、プレフィックス + ノード IP アドレスの部分文字列 + サフィックスの 3 つの部分で構成されます。
たとえば、ノード IP アドレスが 192.168.XX.XX、プレフィックスが |
Taints | List | いいえ | いいえ | Taint 設定。 | 詳細については、「Taints のプロパティ」をご参照ください。 |
RrsaConfig の構文
"RrsaConfig":
{
"Enabled": Boolean
}RrsaConfig のプロパティ
プロパティ名 | タイプ | 必須 | 更新を許可 | 説明 | 制約 |
Enabled | Boolean | はい | いいえ | サービスアカウントの RAM ロール (RRSA) 機能を有効にします。 | 値:
|
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 アーキテクチャ。 | 値:
|
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 | いいえ | いいえ | スケジューリングポリシー。 |
|
NodePoolInfo の構文
"NodePoolInfo": {
"Name": String,
"Type": String,
"ResourceGroupId": String
}NodePoolInfo のプロパティ
プロパティ名 | タイプ | 必須 | 更新可能 | 説明 | 制約 |
ResourceGroupId | String | いいえ | はい | ノードプールが属するリソースグループ。 | なし |
Name | String | はい | いいえ | ノードプール名。 | なし |
Type | String | いいえ | いいえ | ノードプールのタイプ。 | 値:
|
MaintenanceWindow の構文
"MaintenanceWindow": {
"Enable": Boolean,
"MaintenanceTime": String,
"Duration": String,
"WeeklyPeriod": String,
"Recurrence": String
}MaintenanceWindow のプロパティ
プロパティ名 | タイプ | 必須 | 更新可能 | 説明 | 制約 |
Duration | String | いいえ | はい | メンテナンス期間。 | 範囲:[1, 24]。単位:時間。 デフォルト:3h。 |
Enable | Boolean | いいえ | はい | メンテナンスウィンドウを有効にします。 | 値:
デフォルト: |
MaintenanceTime | String | いいえ | はい | メンテナンスの開始時刻。 | RFC3339 標準フォーマット。 |
WeeklyPeriod | String | いいえ | はい | メンテナンス期間。 | 複数の値をカンマ (,) で区切ります。有効値:{Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday} デフォルト: |
Recurrence | String | いいえ | はい | メンテナンスウィンドウの繰り返しルール。RFC5545 の繰り返しルール構文を使用して定義されます。 | 現在、FREQ=WEEKLY のみをサポートしています。COUNT または UNTIL の指定はサポートしていません。 |
Tags の構文
"Tags": [
{
"Key": String,
"Value": String
}
]Tags のプロパティ
プロパティ名 | タイプ | 必須 | 更新可能 | 説明 | 制約 |
Key | String | はい | いいえ | タグキー。 | 長さ:1~64 文字。 |
Value | String | はい | いいえ | タグの値。 | 長さ:0~128 文字。 |
Addons の構文
"Addons": [
{
"Version": String,
"Config": String,
"Name": String,
"Disabled": Boolean
}
]Addons のプロパティ
プロパティ名 | タイプ | 必須 | 更新可能 | 説明 | 制約 |
Name | String | はい | いいえ | アドオンプラグイン名。 | なし |
Config | String | いいえ | はい | アドオンプラグインの設定。 | なし |
Disabled | Boolean | いいえ | いいえ | デフォルトのインストールを無効にしますか? | 値:
|
Version | String | いいえ | いいえ | アドオンプラグインのバージョン。 | デフォルトでは最新バージョンを使用します。 |
DeleteOptions の構文
"DeleteOptions": [
{
"DeleteMode": String,
"ResourceType": String
}
]DeleteOptions のプロパティ
プロパティ名 | タイプ | 必須 | 更新可能 | 説明 | 制約 |
DeleteMode | String | いいえ | はい | このリソースタイプの削除ポリシー。 | 値:
|
ResourceType | String | いいえ | はい | リソースタイプ。 | 値:
|
Runtime の構文
"Runtime": {
"Name": String,
"Version": String
}Runtime のプロパティ
プロパティ名 | タイプ | 必須 | 更新可能 | 説明 | 制約 |
Name | String | はい | いいえ | コンテナーランタイム名。 | ACK は、次の 3 つのコンテナーランタイムをサポートしています。
デフォルト: |
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"
]
}
}
}その他の例については、「このリソースを含むパブリックテンプレート」をご参照ください。