Mulai cepat: Membuat kluster privat Azure Kubernetes Service (AKS) Otomatis di jaringan virtual kustom

Berlaku untuk: ✔️ AKS Otomatis

Azure Kubernetes Service (AKS) Otomatis memberikan pengalaman Kubernetes terkelola termampukan bagi pengembang, teknisi DevOps, dan insinyur platform. Ideal untuk aplikasi modern dan AI, AKS Otomatis mengotomatiskan penyiapan dan operasi kluster AKS dan menyematkan konfigurasi praktik terbaik. Pengguna dari tingkat keterampilan apa pun dapat memperoleh manfaat dari keamanan, performa, dan ketergantungan AKS Otomatis untuk aplikasi mereka. AKS Automatic juga mencakup SLA kesiapan pod yang menjamin 99,9% operasi kesiapan pod yang memenuhi syarat akan selesai dalam waktu 5 menit, memastikan infrastruktur yang andal dan pemulihan otomatis untuk aplikasi Anda. Panduan cepat ini mengasumsikan pemahaman dasar tentang konsep Kubernetes. Untuk informasi selengkapnya, lihat konsep inti Kubernetes untuk Azure Kubernetes Service (AKS).

Panduan cepat ini akan mengajarkan Anda untuk:

  • Buat jaringan virtual.
  • Buat identitas terkelola dengan izin melalui jaringan virtual.
  • Sebarkan kluster AKS Otomatis privat di jaringan virtual.
  • Sambungkan ke klaster privat.
  • Jalankan contoh aplikasi multi-kontainer berupa kelompok layanan mikro dan antarmuka web yang mensimulasikan skenario ritel.

Prasyarat

  • Jika Anda tidak memiliki akun Azure, buat akun free.
  • Artikel ini memerlukan Azure CLI versi 2.77.0 atau yang lebih baru. Jika Anda menggunakan Azure Cloud Shell, versi terbaru sudah diinstal di sana. Jika Anda perlu menginstal atau meningkatkan, lihat Install Azure CLI.
  • Identitas kluster dengan Network Contributor penetapan peran bawaan pada subnet server API.
  • Identitas kluster dengan Network Contributor penetapan peran bawaan di jaringan virtual untuk mendukung Penyediaan Otomatis Node.
  • Identitas pengguna yang mengakses kluster dengan Azure Kubernetes Service Cluster User Role dan Azure Kubernetes Service RBAC Writer.
  • Jaringan virtual dengan subnet server API khusus berukuran setidaknya */28 yang didelegasikan ke Microsoft.ContainerService/managedClusters.
    • Jika ada Kelompok Keamanan Jaringan (NSG) yang terpasang pada subnet, pastikan bahwa aturan mengizinkan lalu lintas berikut antara simpul dan server API (API server), Azure Load Balancer dan server API (API server), serta komunikasi pod ke pod.
    • Jika ada Azure Firewall atau metode pembatasan keluaran atau perangkat lainnya, pastikan aturan jaringan keluar yang diperlukan dan FQDN diizinkan.
  • AKS Otomatis akan mengaktifkan Azure Policy pada kluster AKS Anda, tetapi Anda harus mendaftarkan terlebih dahulu penyedia sumber daya Microsoft.PolicyInsights di langganan Anda agar pengalaman lebih lancar. Lihat penyedia dan jenis sumber daya Azure untuk informasi selengkapnya.

Keterbatasan

  • Nodepool sistem kluster AKS Otomatis memerlukan penyebaran di wilayah Azure yang mendukung setidaknya tiga zona ketersediaan, disk OS efemer, dan OS Linux Azure.
  • AKS Otomatis tersedia di wilayah berikut: australiaeast, austriaeast, belgiumcentral, brazilsouth, canadacentral, centralindia, centralus, chilecentral, denmarkeast, eastasia, eastus, eastus2, francecentral, germanywestcentral, indonesiacentral, israelcentral, italynorth, japaneast, japanwest, koreacentral, malaysiawest, mexicocentral, newzealandnorth, northeurope, norwayeast, polandcentral, southafricanorth, southcentralus, southeastasia, spaincentral, swedencentral, switzerlandnorth, uaenorth, uksouth, westeurope, westus2, westus3.
  • Kluster Otomatis AKS memiliki penguncian grup sumber daya node yang telah dikonfigurasi sebelumnya, yang tidak memungkinkan perubahan pada grup sumber daya MC_, mencegah tautan jaringan virtual pada zona Private DNS default. Untuk skenario DNS lintas VNet atau kustom, gunakan jaringan kustom dan DNS privat dengan mengikuti Buat kluster privat Azure Kubernetes Service (AKS) Otomatis dalam jaringan virtual kustom.

Penting

AKS Otomatis mencoba memilih ukuran komputer virtual secara dinamis untuk kumpulan simpul system berdasarkan kapasitas yang tersedia dalam langganan. Pastikan langganan Anda memiliki kuota untuk 16 vCPU dari salah satu ukuran berikut di wilayah tempat Anda menyebarkan kluster ke: 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, atau Standard_D4alds_v5. Anda dapat view kuota untuk keluarga VM tertentu dan mengirimkan permintaan peningkatan kuota melalui portal Azure. Jika Anda memiliki pertanyaan tambahan, pelajari lebih lanjut melalui dokumen pemecahan masalah.

Tentukan variabel

Tentukan variabel berikut yang akan digunakan dalam langkah-langkah berikutnya.

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)

Membuat grup sumber daya

Grup sumber daya Azure adalah grup logis tempat sumber daya Azure disebarkan dan dikelola.

Mmebuat grup sumber daya menggunakan perintah buat grup az.

az group create -n ${RG_NAME} -l ${LOCATION}

Contoh output berikut menyerupai pembuatan grup sumber daya yang berhasil:

{
  "id": "/subscriptions/<guid>/resourceGroups/automatic-rg",
  "location": "eastus",
  "managedBy": null,
  "name": "automatic-rg",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

Membuat jaringan virtual

Buat jaringan virtual menggunakan az network vnet create perintah . Buat subnet server API dan subnet kluster menggunakan perintah az network vnet subnet create.

Saat menggunakan jaringan virtual kustom dengan AKS Otomatis, Anda harus membuat dan mendelegasikan subnet server API untuk Microsoft.ContainerService/managedClusters, yang memberikan izin layanan AKS untuk menyuntikkan pod server API dan penyeimbang muatan internal ke subnet tersebut. Anda tidak dapat menggunakan subnet untuk beban kerja lain, tetapi Anda dapat menggunakannya untuk beberapa kluster AKS yang terletak di jaringan virtual yang sama. Ukuran subnet server API minimum yang didukung adalah /28.

Peringatan

Kluster AKS mencadangkan setidaknya 9 IP di ruang alamat subnet. Kehabisan alamat IP dapat mencegah penskalaan server API dan menyebabkan pemadaman server 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

Aturan grup keamanan jaringan

Semua lalu lintas dalam jaringan virtual diizinkan secara default. Tetapi jika Anda menambahkan aturan Network Security Group (NSG) untuk membatasi lalu lintas antara subnet yang berbeda, pastikan bahwa aturan keamanan NSG mengizinkan jenis komunikasi berikut:

Tujuan Sumber Protokol Pelabuhan Gunakan
APIServer Subnet CIDR Subnet Kluster PKT 443 dan 4443 Diperlukan untuk mengaktifkan komunikasi antara Node dan server API.
APIServer Subnet CIDR Azure Load Balancer PKT 9988 Diperlukan untuk mengaktifkan komunikasi antara Azure Load Balancer dan server API. Anda juga dapat mengaktifkan semua komunikasi antara Azure Load Balancer dan CIDR Subnet API Server.
Simpul CIDR Node CIDR Semua Protokol Semua Port Diperlukan untuk mengaktifkan komunikasi antara Simpul.
CIDR Node Pod CIDR Semua Protokol Semua Port Diperlukan untuk Perutean lalu lintas layanan.
Pod CIDR Pod CIDR Semua Protokol Semua Port Diperlukan untuk komunikasi antar Pod dan dari Pod ke Service, termasuk komunikasi DNS.

Membuat identitas terkelola dan memberinya izin di jaringan virtual

Buat identitas terkelola menggunakan az identity create perintah dan ambil ID utama. Tetapkan peran Kontributor Jaringan pada jaringan virtual ke identitas terkelola az role assignment create menggunakan perintah .

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

Membuat kluster AKS Otomatis privat di jaringan virtual kustom

Untuk membuat kluster AKS Otomatis privat, gunakan perintah az aks create . Perhatikan penggunaan --enable-private-cluster bendera.

Nota

Anda dapat merujuk ke dokumentasi kluster privat untuk mengonfigurasi opsi tambahan seperti menonaktifkan FQDN publik kluster dan mengonfigurasi zona DNS privat.

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

Setelah beberapa menit, perintah selesai dan kembalikan informasi berformat JSON tentang kluster.

Menyambungkan ke kluster

Ketika kluster AKS Otomatis dibuat sebagai kluster privat, titik akhir server API tidak memiliki alamat IP publik. Untuk mengelola server API, misalnya melalui kubectl, Anda perlu terhubung melalui komputer yang memiliki akses ke jaringan virtual Azure kluster. Ada beberapa opsi untuk membangun konektivitas jaringan ke kluster privat:

Membuat komputer virtual di jaringan virtual yang sama dengan kluster AKS adalah opsi term mudah. ExpressRoute dan VPN menambahkan biaya dan memerlukan kompleksitas jaringan tambahan. Peering jaringan virtual mengharuskan Anda merencanakan rentang CIDR jaringan Anda untuk memastikan tidak ada rentang yang tumpang tindih. Lihat Opsi untuk menyambungkan ke kluster privat untuk informasi selengkapnya.

Untuk mengelola kluster Kube, gunakan klien baris perintah Kube, kubectl. kubectl sudah diinstal jika Anda menggunakan Azure Cloud Shell. Untuk menginstal kubectl secara lokal, jalankan perintah az aks install-cli . Kluster Otomatis AKS dikonfigurasi dengan Microsoft Entra ID untuk kontrol akses berbasis peran (RBAC) Kubernetes .

Saat Anda membuat kluster menggunakan Azure CLI, pengguna Anda diperuntukkan peran bawaan untuk Azure Kubernetes Service RBAC Cluster Admin.

Konfigurasikan kubectl untuk terhubung ke kluster Kubernetes menggunakan perintah az aks get-credentials. Perintah ini mengunduh kredensial dan mengonfigurasi CLI Kubernetes untuk menggunakannya.

az aks get-credentials --resource-group ${RG_NAME} --name ${CLUSTER_NAME}

Verifikasi koneksi ke kluster menggunakan perintah kubectl get. Perintah ini menampilkan daftar node kluster.

kubectl get nodes

Contoh output berikut menunjukkan bagaimana Anda diminta untuk masuk.

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.

Setelah Anda masuk, output sampel berikut menunjukkan kumpulan simpul sistem terkelola. Pastikan status simpul siap.

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

Membuat jaringan virtual

File Bicep ini mendefinisikan jaringan virtual.

@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)

Simpan file Bicep virtualNetwork.bicep ke komputer lokal Anda.

Penting

File Bicep mengatur param vnetName ke aksAutomaticVnet, param addressPrefix ke 172.19.0.0/16, apiServerSubnetPrefix param ke 172.19.0.0/28, dan apiServerSubnetPrefix param ke 172.19.1.0/24. Jika Anda ingin menggunakan nilai yang berbeda, pastikan untuk memperbarui string ke nilai pilihan Anda.

Sebarkan file Bicep menggunakan Azure CLI.

az deployment group create --resource-group <resource-group> --template-file virtualNetwork.bicep

Semua lalu lintas dalam jaringan virtual diizinkan secara default. Tetapi jika Anda menambahkan aturan Network Security Group (NSG) untuk membatasi lalu lintas antara subnet yang berbeda, pastikan bahwa aturan keamanan NSG mengizinkan jenis komunikasi berikut:

Tujuan Sumber Protokol Pelabuhan Gunakan
APIServer Subnet CIDR Subnet Kluster PKT 443 dan 4443 Diperlukan untuk mengaktifkan komunikasi antara Node dan server API.
APIServer Subnet CIDR Azure Load Balancer PKT 9988 Diperlukan untuk mengaktifkan komunikasi antara Azure Load Balancer dan server API. Anda juga dapat mengaktifkan semua komunikasi antara Azure Load Balancer dan CIDR Subnet API Server.

Buat identitas terkelola

File Bicep ini menentukan identitas terkelola yang ditetapkan pengguna.

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

Simpan file Bicep uami.bicep ke komputer lokal Anda.

Penting

File Bicep mengatur param uamiName ke aksAutomaticUAMI. Jika Anda ingin menggunakan nama identitas yang berbeda, pastikan untuk memperbarui string ke nama pilihan Anda.

Sebarkan file Bicep menggunakan Azure CLI.

az deployment group create --resource-group <resource-group> --template-file uami.bicep

Menetapkan peran Kontributor Jaringan melalui jaringan virtual

File Bicep ini mendefinisikan penetapan peran melalui jaringan virtual.

@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
  }
}

Simpan file Bicep roleAssignments.bicep ke komputer lokal Anda.

Penting

File Bicep mengatur param vnetName ke aksAutomaticVnet. Jika Anda menggunakan nama jaringan virtual yang berbeda, pastikan untuk memperbarui string ke nama jaringan virtual pilihan Anda.

Sebarkan file Bicep menggunakan Azure CLI. Anda perlu memberikan ID prinsipal identitas pengguna yang ditetapkan.

az deployment group create --resource-group <resource-group> --template-file roleAssignments.bicep \
--parameters uamiPrincipalId=<user assigned identity prinicipal id>

Membuat kluster AKS Otomatis privat di jaringan virtual kustom

File Bicep ini mendefinisikan kluster Otomatis AKS.

Nota

Anda dapat merujuk ke dokumentasi kluster privat untuk mengonfigurasi opsi tambahan seperti menonaktifkan FQDN publik kluster dan mengonfigurasi zona DNS privat.

@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}': {}
    }
  }
}

Simpan file Bicep aks.bicep ke komputer lokal Anda.

Penting

File Bicep mengatur param clusterName ke aksAutomaticCluster. Jika Anda menginginkan nama kluster yang berbeda, pastikan untuk memperbarui string ke nama kluster pilihan Anda.

Sebarkan file Bicep menggunakan Azure CLI. Anda perlu memberikan ID sumber daya subnet server API, ID sumber daya subnet kluster, dan ID prinsipal identitas yang ditetapkan pengguna.

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>

Menyambungkan ke kluster

Ketika kluster AKS Otomatis dibuat sebagai kluster privat, titik akhir server API tidak memiliki alamat IP publik. Untuk mengelola server API, misalnya melalui kubectl, Anda perlu terhubung melalui komputer yang memiliki akses ke jaringan virtual Azure kluster. Ada beberapa opsi untuk membangun konektivitas jaringan ke kluster privat:

Membuat komputer virtual di jaringan virtual yang sama dengan kluster AKS adalah opsi term mudah. Express Route dan VPN menambah biaya dan memerlukan kompleksitas jaringan tambahan. Peering jaringan virtual mengharuskan Anda merencanakan rentang CIDR jaringan Anda untuk memastikan tidak ada rentang yang tumpang tindih. Lihat Opsi untuk menyambungkan ke kluster privat untuk informasi selengkapnya.

Untuk mengelola kluster Kube, gunakan klien baris perintah Kube, kubectl. kubectl sudah diinstal jika Anda menggunakan Azure Cloud Shell. Untuk menginstal kubectl secara lokal, jalankan perintah az aks install-cli . Kluster Otomatis AKS dikonfigurasi dengan Microsoft Entra ID untuk kontrol akses berbasis peran (RBAC) Kubernetes .

Penting

Saat membuat kluster menggunakan Bicep, Anda perlu menetapkan salah satu peran bawaan seperti Azure Kubernetes Service RBAC Reader, Azure Kubernetes Service RBAC Writer, Azure Kubernetes Service RBAC Admin, atau Azure Kubernetes Service RBAC Cluster Admin kepada pengguna Anda, dilingkupkan ke kluster atau namespace tertentu, misalnya menggunakan az role assignment create --role "Azure Kubernetes Service RBAC Cluster Admin" --scope <AKS cluster resource id> --assignee user@contoso.com. Pastikan juga pengguna Anda memiliki peran bawaan Azure Kubernetes Service Cluster User untuk dapat menjalankan az aks get-credentials, lalu mendapatkan kubeconfig kluster AKS Anda menggunakan perintah az aks get-credentials.

Konfigurasikan kubectl untuk terhubung ke kluster Kubernetes menggunakan perintah az aks get-credentials. Perintah ini mengunduh kredensial dan mengonfigurasi CLI Kubernetes untuk menggunakannya.

az aks get-credentials --resource-group <resource-group> --name <cluster-name>

Verifikasi koneksi ke kluster menggunakan perintah kubectl get. Perintah ini menampilkan daftar node kluster.

kubectl get nodes

Contoh output berikut menunjukkan bagaimana Anda diminta untuk masuk.

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.

Setelah Anda masuk, output sampel berikut menunjukkan kumpulan simpul sistem terkelola. Pastikan status simpul siap.

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

Menyebarkan aplikasi

Untuk menyebarkan aplikasi, Anda menggunakan file manifes untuk membuat semua objek yang diperlukan untuk menjalankan aplikasi AKS Store. File manifes Kubernetes menentukan keadaan kluster yang diinginkan, seperti image kontainer mana yang akan dijalankan. Manifes mencakup penyebaran dan layanan Kubernetes berikut:

Screenshot arsitektur sampel Azure Store.

  • Simpan depan: Aplikasi web bagi pelanggan untuk melihat produk dan melakukan pemesanan.
  • Layanan produk: Menampilkan informasi produk.
  • Layanan pemesanan: Penempatan pesanan.
  • Rabbit MQ: Antrean pesan untuk pesanan.

Nota

Kami tidak menyarankan untuk menjalankan kontainer stateful, seperti Rabbit MQ, tanpa penyimpanan persisten untuk produksi. Kontainer ini digunakan di sini untuk kesederhanaan, tetapi sebaiknya gunakan layanan terkelola, seperti Azure Cosmos DB atau Azure Service Bus.

  1. Buat namespace aks-store-demo untuk menyebarkan sumber daya Kubernetes.

    kubectl create ns aks-store-demo
    
  2. Sebarkan aplikasi menggunakan perintah kubectl apply ke dalam namespace aks-store-demo. File YAML yang menentukan penyebaran berada di GitHub.

    kubectl apply -n aks-store-demo -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/aks-store-ingress-quickstart.yaml
    

    Contoh output berikut menunjukkan penyebaran dan layanan:

    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
    

Uji aplikasi

Ketika aplikasi berjalan, layanan Kubernetes mengekspos front end aplikasi ke internet. Diperlukan beberapa menit untuk menyelesaikan proses ini.

  1. Periksa status pod yang telah dideploy menggunakan perintah kubectl get pods. Pastikan semua pod berada dalam keadaan Running sebelum melanjutkan. Jika ini adalah beban kerja pertama yang Anda sebarkan, mungkin perlu beberapa menit agar penyediaan otomatis simpul membuat kumpulan simpul untuk menjalankan pod.

    kubectl get pods -n aks-store-demo
    
  2. Periksa alamat IP publik untuk aplikasi tampilan depan toko. Pantau kemajuan menggunakan perintah kubectl get service dengan argumen --watch.

    kubectl get ingress store-front -n aks-store-demo --watch
    

    Output ADDRESS untuk layanan store-front pada awalnya tampil kosong.

    NAME          CLASS                                HOSTS   ADDRESS        PORTS   AGE
    store-front   webapprouting.kubernetes.azure.com   *                      80      12m
    
  3. Setelah ALAMAT berubah dari kosong ke alamat IP publik yang sebenarnya, gunakan CTRL-C untuk menghentikan kubectl proses tontonan.

    Contoh output berikut menunjukkan alamat IP publik yang valid yang ditetapkan ke layanan:

    NAME          CLASS                                HOSTS   ADDRESS        PORTS   AGE
    store-front   webapprouting.kubernetes.azure.com   *       4.255.22.196   80      12m
    
  4. Buka browser web ke alamat IP eksternal ingress Anda untuk melihat aplikasi Azure Store beraksi.

    Cuplikan layar aplikasi sampel AKS Store.

Menghapus kluster

Jika Anda tidak berencana untuk melalui tutorial AKS, bersihkan sumber daya yang tidak perlu untuk menghindari biaya Azure. Jalankan perintah az group delete untuk menghapus grup sumber daya, layanan kontainer, dan semua sumber daya terkait.

az group delete --name <resource-group> --yes --no-wait

Nota

Kluster AKS dibuat dengan identitas terkelola yang ditetapkan pengguna. Jika Anda tidak memerlukan identitas tersebut lagi, Anda dapat menghapusnya secara manual.

Langkah berikutnya

Dalam panduan mulai cepat ini, Anda telah menyebarkan kluster Kubernetes privat dengan menggunakan AKS Otomatis di dalam jaringan virtual kustom dan kemudian menyebarkan aplikasi multi-kontainer sederhana untuk kluster tersebut. Aplikasi sampel ini hanya untuk tujuan demo dan tidak mewakili semua praktik terbaik untuk aplikasi Kubernetes. Untuk panduan tentang membuat solusi lengkap dengan AKS untuk produksi, lihat panduan solusi AKS.

Untuk mempelajari selengkapnya tentang AKS Otomatis, lanjutkan ke pengenalan.