適用対象: ✔️ AKS Automatic
Azure Kubernetes Service (AKS) Automatic は、開発者、DevOps エンジニア、プラットフォーム エンジニアにとって最も簡単なマネージド Kubernetes エクスペリエンスを提供します。 最新の AI アプリケーションに最適な AKS Automatic は、AKS クラスターのセットアップと操作を自動化し、ベスト プラクティスの構成を埋め込みます。 あらゆるスキル レベルのユーザーが、アプリケーションに対する AKS Automatic のセキュリティ、パフォーマンス、信頼性の恩恵を受けることができます。 AKS Automatic には、5 分以内に 99.9% の適格なポッド準備操作が完了することを保証するポッドの準備 SLA も含まれています。これにより、アプリケーションの信頼性の高い自己復旧インフラストラクチャが保証されます。 このクイックスタートは、Kubernetes の基本的な概念を理解していることを前提としています。 詳細については、Azure Kubernetes Service (AKS) の
このクイックスタートでは、次の方法について説明します。
- 仮想ネットワークを作成します。
- 仮想ネットワーク経由のアクセス許可を持つマネージド ID を作成します。
- 仮想ネットワークにプライベート AKS 自動クラスターをデプロイします。
- プライベート クラスターに接続します。
- マイクロサービスのグループと、小売シナリオをシミュレートする Web フロントエンドを使用して、サンプルのマルチコンテナー アプリケーションを実行します。
[前提条件]
- Azure アカウントがない場合は、free アカウントを作成します。
- この記事では、バージョン 2.77.0 以降のAzure CLIが必要です。 Azure Cloud Shellを使用している場合は、最新バージョンが既にインストールされています。 インストールまたはアップグレードする必要がある場合は、「Install Azure CLIを参照してください。
- API サーバー サブネット上に
Network Contributor組み込みロールの割り当てを持つクラスター ID。 -
Network Contributorをサポートするために、仮想ネットワークに 組み込みのロール割り当てを持つクラスター ID。 -
Azure Kubernetes Service Cluster User RoleとAzure Kubernetes Service RBAC Writerを使用してクラスターにアクセスするユーザー ID。 -
*/28に委任された、少なくともMicrosoft.ContainerService/managedClustersサイズの専用 API サーバー サブネットを持つ仮想ネットワーク。- サブネットにネットワーク セキュリティ グループ (NSG) が接続されている場合は、ルールがノードと API サーバー間、Azure Load Balancer と API サーバー間、およびポッド間の通信のトラフィックを許可していることを確認してください。
- Azure Firewallまたはその他の送信制限方法またはアプライアンスがある場合は、要求された送信ネットワーク規則と FQDN が許可されていることを確認します。
- AKS Automatic はあなたの AKS クラスターでAzure Policy を有効化しますが、よりスムーズな運用のために、サブスクリプションにおいて
Microsoft.PolicyInsightsリソース プロバイダーを事前登録しておく必要があります。 詳細については、「Azure リソース プロバイダーと種類を参照してください。
制限事項
- AKS 自動クラスターのシステム ノードプールは、少なくとも 3 つの可用性ゾーン、エフェメラル OS ディスク、Azure Linux OS をサポートする Azure リージョンにデプロイする必要があります。
- AKS Automatic は次のリージョンで利用可能です:
australiaeast、austriaeast、belgiumcentral、brazilsouth、canadacentral、centralindia、centralus、chilecentral、denmarkeast、eastasia、eastus、eastus2、francecentral、germanywestcentral、indonesiacentral、israelcentral、italynorth、japaneast、japanwest、koreacentral、malaysiawest、mexicocentral、newzealandnorth、northcentralus、northeurope、norwayeast、polandcentralsouthafricanorth、southcentralus、southeastasia、spaincentral、swedencentral、switzerlandnorth、uaenorth、uksouth、westeurope、westus、westus2、westus3。 - AKS 自動クラスターには、node リソース グループのロックダウンが事前に構成されています。これにより、MC_ リソース グループへの変更が許可されないため、既定の Private DNS ゾーンでの仮想ネットワーク リンクが防止されます。 クロス VNet またはカスタム DNS シナリオの場合は、カスタム仮想ネットワークにプライベート Azure Kubernetes Service (AKS)自動クラスターを作成>
に従って、カスタム ネットワークとプライベート DNS を使用します。
Von Bedeutung
AKS Automatic は、サブスクリプションで使用可能な容量に基づいて、 system ノード プールの仮想マシン サイズを動的に選択しようとします。 クラスターをデプロイするリージョンで、次のいずれかのサイズに対して 16 vCPU のクォータがサブスクリプションにあることを確認します。Standard_D4lds_v5、Standard_D4ads_v5、Standard_D4ds_v5、Standard_D4d_v5、Standard_D4d_v4、Standard_DS3_v2、Standard_DS12_v2、Standard_D4alds_v6、Standard_D4lds_v6、または Standard_D4alds_v5。
特定の VM ファミリのクォータを確認し、Azure ポータルからクォータの引き上げ要求を送信できます。
その他の質問がある場合は、 トラブルシューティング のドキュメントを参照してください。
変数の定義
以降の手順で使用する次の変数を定義します。
RG_NAME=automatic-rg
VNET_NAME=automatic-vnet
CLUSTER_NAME=automatic
IDENTITY_NAME=automatic-uami
LOCATION=eastus
SUBSCRIPTION_ID=$(az account show --query id -o tsv)
リソース グループを作成する
Azure リソース グループ は、Azureリソースがデプロイおよび管理される論理グループです。
az group create コマンドを使用して、リソース グループを作成します。
az group create -n ${RG_NAME} -l ${LOCATION}
リソース グループが正常に作成された場合は、次のサンプル出力のようになります。
{
"id": "/subscriptions/<guid>/resourceGroups/automatic-rg",
"location": "eastus",
"managedBy": null,
"name": "automatic-rg",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null
}
仮想ネットワークを作成する
az network vnet create コマンドを使用して、仮想ネットワークを作成します。
az network vnet subnet create コマンドを使用して、API サーバー サブネットとクラスター サブネットを作成します。
AKS Automatic でカスタム仮想ネットワークを使用する場合は、API サーバー サブネットを作成して Microsoft.ContainerService/managedClusters に委任する必要があります。このサブネットには、API サーバー ポッドと内部ロード バランサーを挿入するアクセス許可が AKS サービスに付与されます。 このサブネットは他のワークロードには使用できませんが、同じ仮想ネットワーク内にある複数の AKS クラスターに対して使用できます。 サポートされる API サーバーのサブネットの最小サイズは /28 です。
Warnung
AKS クラスターによって、サブネットのアドレス空間に少なくとも 9 つの IP が予約されます。 IP アドレスが不足すると、API サーバーのスケーリングが妨げられ、API サーバーが停止する可能性があります。
az network vnet create --name ${VNET_NAME} \
--resource-group ${RG_NAME} \
--location ${LOCATION} \
--address-prefixes 172.19.0.0/16
az network vnet subnet create --resource-group ${RG_NAME} \
--vnet-name ${VNET_NAME} \
--name apiServerSubnet \
--delegations Microsoft.ContainerService/managedClusters \
--address-prefixes 172.19.0.0/28
az network vnet subnet create --resource-group ${RG_NAME} \
--vnet-name ${VNET_NAME} \
--name clusterSubnet \
--address-prefixes 172.19.1.0/24
ネットワーク セキュリティ グループ ルール
既定では、仮想ネットワーク内のすべてのトラフィックが許可されます。 ただし、異なるサブネット間のトラフィックを制限するネットワーク セキュリティ グループ (NSG) 規則を追加した場合は、NSG セキュリティ規則で次の種類の通信が許可されていることを確認します。
| 行き先 | 情報源 | プロトコル | 港 / ポート | 用途 |
|---|---|---|---|---|
| APIServer サブネット CIDR | クラスター サブネット | TCP | 443 と 4443 | ノードと API サーバーの間の通信を有効にするために必要です。 |
| APIServer サブネット CIDR | Azure Load Balancer | TCP | 9988 | Azure Load Balancerと API サーバー間の通信を有効にするために必要です。 また、Azure Load Balancerと API Server サブネット CIDR の間のすべての通信を有効にすることもできます。 |
| ノード CIDR | ノード CIDR | すべてのプロトコル | すべてのポート | ノード間の通信を有効にするために必要です。 |
| ノード CIDR | ポッド CIDR | すべてのプロトコル | すべてのポート | サービス トラフィック ルーティングに必要です。 |
| ポッド CIDR | ポッド CIDR | すべてのプロトコル | すべてのポート | ポッドからポッド、およびポッドからサービスへのトラフィック (DNS を含む) に必要です。 |
マネージド ID を作成し、仮想ネットワークに対するアクセス許可を付与する
az identity create コマンドを使用してマネージド ID を作成し、プリンシパル ID を取得します。
コマンドを使用して、仮想ネットワークのaz role assignment createロールをマネージド ID に割り当てます。
az identity create \
--resource-group ${RG_NAME} \
--name ${IDENTITY_NAME} \
--location ${LOCATION}
IDENTITY_PRINCIPAL_ID=$(az identity show --resource-group ${RG_NAME} --name ${IDENTITY_NAME} --query principalId -o tsv)
az role assignment create \
--scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}" \
--role "Network Contributor" \
--assignee-object-id "${IDENTITY_PRINCIPAL_ID}" \
--assignee-principal-type ServicePrincipal
カスタム仮想ネットワークにプライベート AKS 自動クラスターを作成する
プライベート AKS 自動クラスターを作成するには、 az aks create コマンドを使用します。
--enable-private-cluster フラグの使用に注意してください。
注
プライベート クラスターのドキュメントを参照して、クラスターのパブリック FQDN の無効化やプライベート DNS ゾーンの構成などの追加オプションを構成できます。
az aks create \
--resource-group ${RG_NAME} \
--name ${CLUSTER_NAME} \
--location ${LOCATION} \
--apiserver-subnet-id "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}/subnets/apiServerSubnet" \
--vnet-subnet-id "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}/subnets/clusterSubnet" \
--assign-identity "/subscriptions/${SUBSCRIPTION_ID}/resourcegroups/${RG_NAME}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/${IDENTITY_NAME}" \
--sku automatic \
--enable-private-cluster \
--no-ssh-key
数分後、コマンドが完了し、クラスターに関する情報が JSON 形式で返されます。
クラスターに接続する
AKS 自動クラスターがプライベート クラスターとして作成されると、API サーバー エンドポイントにはパブリック IP アドレスがありません。 たとえば、kubectl 経由で API サーバーを管理するには、クラスターのAzure仮想ネットワークにアクセスできるマシン経由で接続する必要があります。 プライベート クラスターへのネットワーク接続を確立するには、いくつかの選択肢があります。
-
az vm createフラグを指定した--vnet-nameコマンドを使用して、AKS 自動クラスターと同じ仮想ネットワークに仮想マシンを作成します。 - 別の仮想ネットワークで仮想マシンを使用し、 仮想ネットワーク ピアリングを設定します。
- Express Route または VPN 接続を使用します。
- プライベート エンドポイント接続を使用します。
AKS クラスターと同じ仮想ネットワーク内に仮想マシンを作成するのが最も簡単なオプションです。 ExpressRoute と VPN はコストを増やし、ネットワークの複雑さを増やす必要があります。 仮想ネットワーク ピアリングを利用する場合、重複する範囲がないようにネットワーク CIDR 範囲を計画する必要があります。 詳細については、 プライベート クラスターに接続するためのオプション を参照してください。
Kubernetes クラスターを管理するには、Kubernetes のコマンドライン クライアントである kubectl を使います。 Azure Cloud Shellを使用する場合、kubectl は既にインストールされています。
kubectl をローカルにインストールするには、az aks install-cli コマンドを実行します。 AKS 自動クラスターは、Kubernetes ロールベースのアクセス制御 (RBAC) 用に
Azure CLIを使用してクラスターを作成すると、ユーザーには組み込みロールが割り当てられますAzure Kubernetes Service RBAC Cluster Admin。
kubectl コマンドを使用して、Kubernetes クラスターに接続するように を構成します。 このコマンドは、資格情報をダウンロードし、それを使用するように Kubernetes CLI を構成します。
az aks get-credentials --resource-group ${RG_NAME} --name ${CLUSTER_NAME}
kubectl get コマンドを使用して、ご利用のクラスターへの接続を確認します。 このコマンドでは、クラスター ノードの一覧が返されます。
kubectl get nodes
次の出力例は、ログインを求められる方法を示しています。
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
ログインすると、次のサンプル出力にマネージド システム ノード プールが表示されます。 ノードの状態が [Ready] であることを確認してください。
NAME STATUS ROLES AGE VERSION
aks-nodepool1-13213685-vmss000000 Ready agent 2m26s v1.28.5
aks-nodepool1-13213685-vmss000001 Ready agent 2m26s v1.28.5
aks-nodepool1-13213685-vmss000002 Ready agent 2m26s v1.28.5
仮想ネットワークを作成する
このBicep ファイルは、仮想ネットワークを定義します。
@description('The location of the managed cluster resource.')
param location string = resourceGroup().location
@description('The name of the virtual network.')
param vnetName string = 'aksAutomaticVnet'
@description('The address prefix of the virtual network.')
param addressPrefix string = '172.19.0.0/16'
@description('The name of the API server subnet.')
param apiServerSubnetName string = 'apiServerSubnet'
@description('The subnet prefix of the API server subnet.')
param apiServerSubnetPrefix string = '172.19.0.0/28'
@description('The name of the cluster subnet.')
param clusterSubnetName string = 'clusterSubnet'
@description('The subnet prefix of the cluster subnet.')
param clusterSubnetPrefix string = '172.19.1.0/24'
// Virtual network with an API server subnet and a cluster subnet
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-09-01' = {
name: vnetName
location: location
properties: {
addressSpace: {
addressPrefixes: [ addressPrefix ]
}
subnets: [
{
name: apiServerSubnetName
properties: {
addressPrefix: apiServerSubnetPrefix
}
}
{
name: clusterSubnetName
properties: {
addressPrefix: clusterSubnetPrefix
}
}
]
}
}
output apiServerSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, apiServerSubnetName)
output clusterSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, clusterSubnetName)
Bicep ファイル virtualNetwork.bicep をローカル コンピューターに保存します.
Von Bedeutung
Bicep ファイルは、vnetName パラメーターを aksAutomaticVnet に設定し、addressPrefix パラメーターを 172.19.0.0/16 に設定し、apiServerSubnetPrefix パラメーターを 172.19.0.0/28 に設定し、そして apiServerSubnetPrefix パラメーターを 172.19.1.0/24 に設定します。 別の値を使用する場合は、文字列を希望の値に更新してください。
Azure CLIを使用してBicep ファイルをデプロイします。
az deployment group create --resource-group <resource-group> --template-file virtualNetwork.bicep
既定では、仮想ネットワーク内のすべてのトラフィックが許可されます。 ただし、異なるサブネット間のトラフィックを制限するネットワーク セキュリティ グループ (NSG) 規則を追加した場合は、NSG セキュリティ規則で次の種類の通信が許可されていることを確認します。
| 行き先 | 情報源 | プロトコル | 港 / ポート | 用途 |
|---|---|---|---|---|
| APIServer サブネット CIDR | クラスター サブネット | TCP | 443 と 4443 | ノードと API サーバーの間の通信を有効にするために必要です。 |
| APIServer サブネット CIDR | Azure Load Balancer | TCP | 9988 | Azure Load Balancerと API サーバー間の通信を有効にするために必要です。 また、Azure Load Balancerと API Server サブネット CIDR の間のすべての通信を有効にすることもできます。 |
マネージド ID の作成
このBicep ファイルは、ユーザー割り当てマネージド ID を定義します。
param location string = resourceGroup().location
param uamiName string = 'aksAutomaticUAMI'
resource userAssignedManagedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
name: uamiName
location: location
}
output uamiId string = userAssignedManagedIdentity.id
output uamiPrincipalId string = userAssignedManagedIdentity.properties.principalId
output uamiClientId string = userAssignedManagedIdentity.properties.clientId
Bicep ファイルuami.bicepをローカルコンピューターに保存します。
Von Bedeutung
Bicep ファイルは、uamiName パラメーターを aksAutomaticUAMI に設定します。 別の ID 名を使用する場合は、文字列を優先する名前に更新してください。
Azure CLIを使用してBicep ファイルをデプロイします。
az deployment group create --resource-group <resource-group> --template-file uami.bicep
仮想ネットワーク経由でネットワーク共同作成者ロールを割り当てる
このBicep ファイルは、仮想ネットワーク経由のロールの割り当てを定義します。
@description('The name of the virtual network.')
param vnetName string = 'aksAutomaticVnet'
@description('The principal ID of the user assigned managed identity.')
param uamiPrincipalId string
// Get a reference to the virtual network
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-09-01' existing ={
name: vnetName
}
// Assign the Network Contributor role to the user assigned managed identity on the virtual network
// '4d97b98b-1d4f-4787-a291-c67834d212e7' is the built-in Network Contributor role definition
// See: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles/networking#network-contributor
resource networkContributorRoleAssignmentToVirtualNetwork 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(uamiPrincipalId, '4d97b98b-1d4f-4787-a291-c67834d212e7', resourceGroup().id, virtualNetwork.name)
scope: virtualNetwork
properties: {
roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', '4d97b98b-1d4f-4787-a291-c67834d212e7')
principalId: uamiPrincipalId
}
}
ローカルコンピュータに Bicep ファイル roleAssignments.bicep を保存します。
Von Bedeutung
Bicep ファイルは、vnetName パラメーターを aksAutomaticVnet に設定します。 別の仮想ネットワーク名を使用した場合は、文字列を希望の仮想ネットワーク名に更新してください。
Azure CLIを使用してBicep ファイルをデプロイします。 ユーザー割り当て ID のプリンシパル ID を指定する必要があります。
az deployment group create --resource-group <resource-group> --template-file roleAssignments.bicep \
--parameters uamiPrincipalId=<user assigned identity prinicipal id>
カスタム仮想ネットワークにプライベート AKS 自動クラスターを作成する
このBicep ファイルは、AKS 自動クラスターを定義します。
注
プライベート クラスターのドキュメントを参照して、クラスターのパブリック FQDN の無効化やプライベート DNS ゾーンの構成などの追加オプションを構成できます。
@description('The name of the managed cluster resource.')
param clusterName string = 'aksAutomaticCluster'
@description('The location of the managed cluster resource.')
param location string = resourceGroup().location
@description('The resource ID of the API server subnet.')
param apiServerSubnetId string
@description('The resource ID of the cluster subnet.')
param clusterSubnetId string
@description('The resource ID of the user assigned managed identity.')
param uamiId string
/// Create the private AKS Automatic cluster using the custom virtual network and user assigned managed identity
resource aks 'Microsoft.ContainerService/managedClusters@2024-03-02-preview' = {
name: clusterName
location: location
sku: {
name: 'Automatic'
}
properties: {
agentPoolProfiles: [
{
name: 'systempool'
mode: 'System'
count: 3
vnetSubnetID: clusterSubnetId
}
]
apiServerAccessProfile: {
subnetId: apiServerSubnetId
enablePrivateCluster: true
}
networkProfile: {
outboundType: 'loadBalancer'
}
}
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'${uamiId}': {}
}
}
}
ローカル コンピューターに Bicep ファイル aks.bicep を保存します。
Von Bedeutung
Bicep ファイルは、clusterName パラメーターを aksAutomaticCluster に設定します。 別のクラスター名が必要な場合は、文字列を希望のクラスター名に更新してください。
Azure CLIを使用してBicep ファイルをデプロイします。 API サーバーのサブネット リソース ID、クラスター サブネット リソース ID、ユーザー割り当て ID を指定する必要があります。
az deployment group create --resource-group <resource-group> --template-file aks.bicep \
--parameters apiServerSubnetId=<API server subnet resource id> \
--parameters clusterSubnetId=<cluster subnet resource id> \
--parameters uamiPrincipalId=<user assigned identity prinicipal id>
クラスターに接続する
AKS 自動クラスターがプライベート クラスターとして作成されると、API サーバー エンドポイントにはパブリック IP アドレスがありません。 たとえば、kubectl 経由で API サーバーを管理するには、クラスターのAzure仮想ネットワークにアクセスできるマシン経由で接続する必要があります。 プライベート クラスターへのネットワーク接続を確立するには、いくつかの選択肢があります。
-
az vm createフラグを指定した--vnet-nameコマンドを使用して、AKS 自動クラスターと同じ仮想ネットワークに仮想マシンを作成します。 - 別の仮想ネットワークで仮想マシンを使用し、 仮想ネットワーク ピアリングを設定します。
- Express Route または VPN 接続を使用します。
- プライベート エンドポイント接続を使用します。
AKS クラスターと同じ仮想ネットワーク内に仮想マシンを作成するのが最も簡単なオプションです。 Express Route と VPN にはコストがかかり、ネットワークがさらに複雑になります。 仮想ネットワーク ピアリングを利用する場合、重複する範囲がないようにネットワーク CIDR 範囲を計画する必要があります。 詳細については、 プライベート クラスターに接続するためのオプション を参照してください。
Kubernetes クラスターを管理するには、Kubernetes のコマンドライン クライアントである kubectl を使います。 Azure Cloud Shellを使用する場合、kubectl は既にインストールされています。
kubectl をローカルにインストールするには、az aks install-cli コマンドを実行します。 AKS 自動クラスターは、Kubernetes ロールベースのアクセス制御 (RBAC) 用に
Von Bedeutung
Bicepを使用してクラスターを作成する場合は、組み込みロールのいずれかをユーザーに割り当て、クラスターまたは特定の名前空間にスコープを設定する必要があります。例: Azure Kubernetes Service RBAC Readerを使用。 また、ユーザーが Azure Kubernetes Service Cluster User 組み込みロールを持っていることを確認して、az aks get-credentials を実行し、az aks get-credentials コマンドを使用して AKS クラスターの kubeconfig を取得できるようにします。
kubectl コマンドを使用して、Kubernetes クラスターに接続するように を構成します。 このコマンドは、資格情報をダウンロードし、それを使用するように Kubernetes CLI を構成します。
az aks get-credentials --resource-group <resource-group> --name <cluster-name>
kubectl get コマンドを使用して、ご利用のクラスターへの接続を確認します。 このコマンドでは、クラスター ノードの一覧が返されます。
kubectl get nodes
次の出力例は、ログインを求められる方法を示しています。
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
ログインすると、次のサンプル出力にマネージド システム ノード プールが表示されます。 ノードの状態が [Ready] であることを確認してください。
NAME STATUS ROLES AGE VERSION
aks-nodepool1-13213685-vmss000000 Ready agent 2m26s v1.28.5
aks-nodepool1-13213685-vmss000001 Ready agent 2m26s v1.28.5
aks-nodepool1-13213685-vmss000002 Ready agent 2m26s v1.28.5
アプリケーションをデプロイする
アプリケーションをデプロイするには、マニフェスト ファイルを使用して、AKS ストア アプリケーションの実行に必要なすべてのオブジェクトを作成します。 Kubernetes のマニフェスト ファイルでは、どのコンテナー イメージを実行するかなど、クラスターの望ましい状態を定義します。 マニフェストには、次の Kubernetes のデプロイとサービスが含まれています。
- ネットショップ: 顧客が製品を見て注文するための Web アプリケーション。
- 製品サービス: 製品情報が表示されます。
- 注文サービス: 注文を行います。
- Rabbit MQ: 注文キューのメッセージ キュー。
注
運用環境の永続ストレージを使用せずに Rabbit MQ などのステートフル コンテナーを実行することはお勧めしません。 ここでは、わかりやすくするためにこれらのコンテナーを使用しますが、Azure Cosmos DBやAzure Service Busなどのマネージド サービスを使用することをお勧めします。
Kubernetes リソースをデプロイする名前空間
aks-store-demoを作成します。kubectl create ns aks-store-demokubectl apply コマンドを使ってアプリケーションを
aks-store-demo名前空間にデプロイします。 デプロイを定義する YAML ファイルは、GitHubにあります。kubectl apply -n aks-store-demo -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/aks-store-ingress-quickstart.yaml次のサンプル出力は、デプロイとサービスを示しています。
statefulset.apps/rabbitmq created configmap/rabbitmq-enabled-plugins created service/rabbitmq created deployment.apps/order-service created service/order-service created deployment.apps/product-service created service/product-service created deployment.apps/store-front created service/store-front created ingress/store-front created
アプリケーションをテストする
アプリケーションが実行されると、Kubernetes サービスによってアプリケーション フロント エンドがインターネットに公開されます。 このプロセスが完了するまでに数分かかることがあります。
kubectl get pods コマンドを使って、デプロイされたポッドの状態を確認します。 続行する前に、すべてのポッドを
Runningの状態にします。 これが初めてデプロイするワークロードである場合、ノード自動プロビジョニングによってポッドを実行するためのノード プールが作成されるまでに数分かかることがあります。kubectl get pods -n aks-store-demoストア フロント アプリケーションのパブリック IP アドレスを確認します。 kubectl get service コマンドと
--watch引数を使用して、進行状況を監視します。kubectl get ingress store-front -n aks-store-demo --watchサービスの
store-front出力は、最初は空と表示されます。NAME CLASS HOSTS ADDRESS PORTS AGE store-front webapprouting.kubernetes.azure.com * 80 12mADDRESS が空白から実際のパブリック IP アドレスに変更されたら、
CTRL-Cを使ってkubectl監視プロセスを停止します。次のサンプル出力は、サービスに割り当てられている有効なパブリック IP アドレスを示しています。
NAME CLASS HOSTS ADDRESS PORTS AGE store-front webapprouting.kubernetes.azure.com * 4.255.22.196 80 12mイングレスの外部 IP アドレスに対して Web ブラウザーを開き、Azure ストア アプリの動作を確認します。
クラスターを削除する
AKS チュートリアルを実行する予定がない場合は、不要なリソースをクリーンアップしてAzure料金を回避します。 az group delete コマンドを実行して、リソース グループ、コンテナー サービス、すべての関連リソースを削除します。
az group delete --name <resource-group> --yes --no-wait
注
AKS クラスターは、ユーザー割り当てマネージド ID を使用して作成されました。 その ID が不要な場合は、手動で削除できます。
次のステップ
このクイック スタートでは、カスタム仮想ネットワーク内に AKS Automatic を使用してプライベート Kubernetes クラスターをデプロイし、それに単純なマルチコンテナー アプリケーションをデプロイしました。 このサンプル アプリケーションはデモ専用であり、Kubernetes アプリケーションのすべてのベスト プラクティスを表すわけではありません。 実稼動用に AKS を使用した完全なソリューションを作成するうえでのガイダンスについては、AKS ソリューション ガイダンスに関する記事を参照してください。
AKS Automatic の詳細については、概要に進んでください。