Rövid útmutató: Azure Kubernetes Service- (AKS-) fürt üzembe helyezése a Bicep használatával
Az Azure Kubernetes Service (AKS) egy felügyelt Kubernetes-szolgáltatás, amely lehetővé teszi a fürtök gyors üzembe helyezését és kezelését. Ebben a rövid útmutatóban a következőket hajtja végre:
- AKS-fürt üzembe helyezése a Bicep használatával.
- Többtárolós mintaalkalmazás futtatása mikroszolgáltatások és webes kezelőfelületek egy kiskereskedelmi forgatókönyvet szimuláló csoportjával.
Feljegyzés
Az AKS-fürtök gyors üzembe helyezésének megkezdéséhez ez a cikk a csak kiértékelési célokra alapértelmezett beállításokkal rendelkező fürtök üzembe helyezésének lépéseit tartalmazza. Az éles üzemre kész fürtök üzembe helyezése előtt javasoljuk, hogy ismerkedjen meg az alapszintű referenciaarchitektúrával, és gondolja át, hogyan igazodik az üzleti követelményekhez.
Mielőtt elkezdené
- A rövid útmutató feltételezi, hogy rendelkezik a Kubernetes használatára vonatkozó alapvető ismeretekkel. További információkért tekintse meg az Azure Kubernetes Service (AKS) Kubernetes alapfogalmait.
- Aktív előfizetéssel rendelkező Azure-fiókra van szüksége. Ha nem rendelkezik ilyen fiókkal, hozzon létre ingyenes fiókot.
- A Windows Server-csomópontkészletek létrehozásáról további információt a Windows Server-tárolókat támogató AKS-fürt létrehozása című témakörben talál.
- A Bicep tartományspecifikus nyelv (DSL), amely deklaratív szintaxist használ az Azure-erőforrások üzembe helyezéséhez. Tömör szintaxist és megbízható típusbiztonságot kínál, valamint biztosítja a kódok újrafelhasználhatóságát. A Bicep a legjobb szerzői élményt nyújtja az Azure-beli infrastruktúra-kódmegoldásokhoz.
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
- Ez a cikk az Azure CLI 2.0.64-es vagy újabb verzióját igényli. Az Azure Cloud Shell használata esetén a legújabb verzió már telepítve van.
- Ez a cikk egy meglévő Azure-erőforráscsoportot igényel. Ha létre kell hoznia egyet, használhatja az az group create parancsot.
- Ha Bicep-fájllal szeretne AKS-fürtöt létrehozni, adjon meg egy nyilvános SSH-kulcsot. Ha szüksége van erre az erőforrásra, tekintse meg a következő szakaszt. Ellenkező esetben ugorjon a Bicep-fájl áttekintésére.
- Győződjön meg arról, hogy a fürt létrehozásához használt identitás rendelkezik a megfelelő minimális engedélyekkel. Az AKS-hez való hozzáféréssel és identitással kapcsolatos további részletekért tekintse meg az Azure Kubernetes Service (AKS) hozzáféréssel és identitással kapcsolatos lehetőségeit.
- Egy Bicep-fájl üzembe helyezéséhez írási hozzáférésre van szüksége a létrehozott erőforrásokhoz, és hozzá kell férnie az
Microsoft.Resources/deployments
erőforrástípus összes műveletéhez. Például egy virtuális gép létrehozásához szükség van rá ésMicrosoft.Resources/deployments/*
engedélyekreMicrosoft.Compute/virtualMachines/write
. A szerepkörök és engedélyek listáját megtalálja a Beépített Azure-szerepkörök című cikkben.
SSH-kulcs létrehozása
Nyissa meg a https://shell.azure.com Cloud Shellt a böngészőben.
Hozzon létre egy SSH-kulcspárt az az sshkey create Azure CLI paranccsal vagy a
ssh-keygen
paranccsal.# Create an SSH key pair using Azure CLI az sshkey create --name "mySSHKey" --resource-group "myResourceGroup" # Create an SSH key pair using ssh-keygen ssh-keygen -t rsa -b 4096
További információ az SSH-kulcsok létrehozásáról: SSH-kulcsok létrehozása és kezelése az Azure-ban történő hitelesítéshez.
A Bicep-fájl áttekintése
Az ebben a rövid útmutatóban használt Bicep-fájl az Azure Gyorsindítási sablonokból származik.
@description('The name of the Managed Cluster resource.')
param clusterName string = 'aks101cluster'
@description('The location of the Managed Cluster resource.')
param location string = resourceGroup().location
@description('Optional DNS prefix to use with hosted Kubernetes API server FQDN.')
param dnsPrefix string
@description('Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.')
@minValue(0)
@maxValue(1023)
param osDiskSizeGB int = 0
@description('The number of nodes for the cluster.')
@minValue(1)
@maxValue(50)
param agentCount int = 3
@description('The size of the Virtual Machine.')
param agentVMSize string = 'standard_d2s_v3'
@description('User name for the Linux Virtual Machines.')
param linuxAdminUsername string
@description('Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example \'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm\'')
param sshRSAPublicKey string
resource aks 'Microsoft.ContainerService/managedClusters@2024-02-01' = {
name: clusterName
location: location
identity: {
type: 'SystemAssigned'
}
properties: {
dnsPrefix: dnsPrefix
agentPoolProfiles: [
{
name: 'agentpool'
osDiskSizeGB: osDiskSizeGB
count: agentCount
vmSize: agentVMSize
osType: 'Linux'
mode: 'System'
}
]
linuxProfile: {
adminUsername: linuxAdminUsername
ssh: {
publicKeys: [
{
keyData: sshRSAPublicKey
}
]
}
}
}
}
output controlPlaneFQDN string = aks.properties.fqdn
A Bicep-fájlban definiált erőforrás:
További AKS-mintákért tekintse meg az AKS rövid útmutatósablonok webhelyét.
A Bicep-fájl üzembe helyezése
- Mentse a Bicep-fájlt main.bicep néven a helyi számítógépre.
Fontos
A Bicep-fájl a paramétert clusterName
az aks101cluster sztringre állítja. Ha másik fürtnevet szeretne használni, frissítse a sztringet az előnyben részesített fürtnévre, mielőtt a fájlt a számítógépre menti.
Telepítse a Bicep-fájlt az Azure CLI vagy az Azure PowerShell használatával.
az deployment group create --resource-group myResourceGroup --template-file main.bicep --parameters dnsPrefix=<dns-prefix> linuxAdminUsername=<linux-admin-username> sshRSAPublicKey='<ssh-key>'
Adja meg a következő értékeket a parancsokban:
- DNS-előtag: Adjon meg egy egyedi DNS-előtagot a fürthöz, például a myaksclustert.
- Linux-rendszergazdai felhasználónév: Adjon meg egy felhasználónevet az SSH használatával való csatlakozáshoz, például az azureuserhez.
- SSH RSA nyilvános kulcs: Másolja és illessze be az SSH-kulcspár nyilvános részét (alapértelmezés szerint a ~/.ssh/id_rsa.pub tartalma).
Az AKS-fürt létrehozása eltarthat néhány percig. Várja meg, amíg a fürt sikeresen üzembe lesz helyezve, mielőtt továbblép a következő lépésre.
A Bicep üzembe helyezésének ellenőrzése
Csatlakozás a fürthöz
Kubernetes-fürt kezeléséhez használja a Kubernetes parancssori ügyfelet, a kubectl-et. kubectl
az Azure Cloud Shell használata esetén már telepítve van.
Telepítse
kubectl
helyileg az az aks install-cli paranccsal.az aks install-cli
Konfigurálja
kubectl
a Kubernetes-fürthöz való csatlakozást az az aks get-credentials paranccsal. Ez a parancs letölti a hitelesítő adatokat, és konfigurálja a Kubernetes parancssori felületét a használatukhoz.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Ellenőrizze a fürthöz való kapcsolatot a kubectl get paranccsal. Ez a parancs a fürtcsomópontok listáját adja vissza.
kubectl get nodes
A következő példakimenet az előző lépésekben létrehozott csomópontot mutatja be. Győződjön meg arról, hogy a csomópont állapota kész.
NAME STATUS ROLES AGE VERSION aks-agentpool-41324942-0 Ready agent 6m44s v1.12.6 aks-agentpool-41324942-1 Ready agent 6m46s v1.12.6 aks-agentpool-41324942-2 Ready agent 6m45s v1.12.6
Az alkalmazás üzembe helyezése
Az alkalmazás üzembe helyezéséhez egy jegyzékfájl használatával hozza létre az AKS Store-alkalmazás futtatásához szükséges összes objektumot. A Kubernetes-jegyzékfájl meghatározza a fürt kívánt állapotát, például hogy mely tárolólemezképeket kell futtatni. A jegyzék a következő Kubernetes-üzemelő példányokat és szolgáltatásokat tartalmazza:
- Áruházi előtér: Webalkalmazás az ügyfelek számára termékek megtekintésére és megrendelések leadására.
- Termékszolgáltatás: A termékinformációkat jeleníti meg.
- Rendelési szolgáltatás: Rendeléseket rendel.
- Nyúl MQ: Üzenetsor rendelési üzenetsorhoz.
Feljegyzés
Nem javasoljuk az állapotalapú tárolók( például a Rabbit MQ) futtatását az éles környezetben tartós tárolás nélkül. Ezeket itt az egyszerűség kedvéért használjuk, de olyan felügyelt szolgáltatások használatát javasoljuk, mint az Azure CosmosDB vagy az Azure Service Bus.
Hozzon létre egy fájlt,
aks-store-quickstart.yaml
és másolja a következő jegyzékbe:apiVersion: apps/v1 kind: Deployment metadata: name: rabbitmq spec: replicas: 1 selector: matchLabels: app: rabbitmq template: metadata: labels: app: rabbitmq spec: nodeSelector: "kubernetes.io/os": linux containers: - name: rabbitmq image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine ports: - containerPort: 5672 name: rabbitmq-amqp - containerPort: 15672 name: rabbitmq-http env: - name: RABBITMQ_DEFAULT_USER value: "username" - name: RABBITMQ_DEFAULT_PASS value: "password" resources: requests: cpu: 10m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: rabbitmq-enabled-plugins mountPath: /etc/rabbitmq/enabled_plugins subPath: enabled_plugins volumes: - name: rabbitmq-enabled-plugins configMap: name: rabbitmq-enabled-plugins items: - key: rabbitmq_enabled_plugins path: enabled_plugins --- apiVersion: v1 data: rabbitmq_enabled_plugins: | [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0]. kind: ConfigMap metadata: name: rabbitmq-enabled-plugins --- apiVersion: v1 kind: Service metadata: name: rabbitmq spec: selector: app: rabbitmq ports: - name: rabbitmq-amqp port: 5672 targetPort: 5672 - name: rabbitmq-http port: 15672 targetPort: 15672 type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 1 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: order-service image: ghcr.io/azure-samples/aks-store-demo/order-service:latest ports: - containerPort: 3000 env: - name: ORDER_QUEUE_HOSTNAME value: "rabbitmq" - name: ORDER_QUEUE_PORT value: "5672" - name: ORDER_QUEUE_USERNAME value: "username" - name: ORDER_QUEUE_PASSWORD value: "password" - name: ORDER_QUEUE_NAME value: "orders" - name: FASTIFY_ADDRESS value: "0.0.0.0" resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi initContainers: - name: wait-for-rabbitmq image: busybox command: ['sh', '-c', 'until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;'] resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi --- apiVersion: v1 kind: Service metadata: name: order-service spec: type: ClusterIP ports: - name: http port: 3000 targetPort: 3000 selector: app: order-service --- apiVersion: apps/v1 kind: Deployment metadata: name: product-service spec: replicas: 1 selector: matchLabels: app: product-service template: metadata: labels: app: product-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: product-service image: ghcr.io/azure-samples/aks-store-demo/product-service:latest ports: - containerPort: 3002 resources: requests: cpu: 1m memory: 1Mi limits: cpu: 1m memory: 7Mi --- apiVersion: v1 kind: Service metadata: name: product-service spec: type: ClusterIP ports: - name: http port: 3002 targetPort: 3002 selector: app: product-service --- apiVersion: apps/v1 kind: Deployment metadata: name: store-front spec: replicas: 1 selector: matchLabels: app: store-front template: metadata: labels: app: store-front spec: nodeSelector: "kubernetes.io/os": linux containers: - name: store-front image: ghcr.io/azure-samples/aks-store-demo/store-front:latest ports: - containerPort: 8080 name: store-front env: - name: VUE_APP_ORDER_SERVICE_URL value: "http://order-service:3000/" - name: VUE_APP_PRODUCT_SERVICE_URL value: "http://product-service:3002/" resources: requests: cpu: 1m memory: 200Mi limits: cpu: 1000m memory: 512Mi --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancer
A YAML-jegyzékfájlok lebontásához tekintse meg az üzembe helyezéseket és a YAML-jegyzékeket.
Ha helyileg hozza létre és menti a YAML-fájlt, feltöltheti a jegyzékfájlt az alapértelmezett könyvtárba a CloudShellben a Fájlok feltöltése/letöltése gombra kattintva, majd kiválasztva a fájlt a helyi fájlrendszerből.
Telepítse az alkalmazást a kubectl Apply paranccsal, és adja meg a YAML-jegyzék nevét.
kubectl apply -f aks-store-quickstart.yaml
Az alábbi példakimenet az üzemelő példányokat és szolgáltatásokat mutatja be:
deployment.apps/rabbitmq 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
Az alkalmazás tesztelése
Az alkalmazás futtatásakor egy Kubernetes-szolgáltatás elérhetővé teszi az alkalmazás előtérét az interneten. A folyamat eltarthat pár percig.
Ellenőrizze az üzembe helyezett podok állapotát a kubectl get pods paranccsal. Az összes podot a folytatás előtt készítse
Running
el.kubectl get pods
Ellenőrizze, hogy van-e nyilvános IP-cím az áruházi előtéralkalmazáshoz. Figyelje a folyamatot a kubectl get service paranccsal az
--watch
argumentummal.kubectl get service store-front --watch
A szolgáltatás KÜLSŐ-IP-kimenete
store-front
kezdetben függőben lévőként jelenik meg:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4m
Ha a külső IP-cím függőben lévőről tényleges nyilvános IP-címre változik, állítsa
CTRL-C
le akubectl
figyelés folyamatát.Az alábbi példakimenet a szolgáltatáshoz rendelt érvényes nyilvános IP-címet jeleníti meg:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5m
Nyisson meg egy webböngészőt a szolgáltatás külső IP-címére az Azure Store-alkalmazás működés közbeni megtekintéséhez.
A fürt törlése
Ha nem tervezi végigvezetni az AKS-oktatóanyagot, törölje a felesleges erőforrásokat az Azure-díjak elkerülése érdekében.
Távolítsa el az erőforráscsoportot, a tárolószolgáltatást és az összes kapcsolódó erőforrást az az group delete paranccsal.
az group delete --name myResourceGroup --yes --no-wait
Feljegyzés
Az AKS-fürt egy rendszer által hozzárendelt felügyelt identitással lett létrehozva, amely az ebben a rövid útmutatóban használt alapértelmezett identitásbeállítás. A platform kezeli ezt az identitást, így önnek nem kell manuálisan eltávolítania.
Következő lépések
Ebben a rövid útmutatóban üzembe helyezett egy Kubernetes-fürtöt, majd üzembe helyezett egy egyszerű többtárolós alkalmazást. Ez a mintaalkalmazás csak bemutató célokra készült, és nem képviseli a Kubernetes-alkalmazások ajánlott eljárásait. Az éles AKS-sel való teljes megoldások létrehozásáról az AKS-megoldásokkal kapcsolatos útmutatást talál.
Ha többet szeretne megtudni az AKS-ről, és végig szeretne járni egy teljes kód–üzembe helyezési példán, folytassa a Kubernetes-fürt oktatóanyagával.
Azure Kubernetes Service