Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Začněte se službou Azure Container Linux (ACL) pro AKS nasazením clusteru AKS pomocí Azure CLI.
V tomto rychlém startu se naučíte:
- Vytvořte cluster AKS pomocí ACL pro AKS.
- Nasaďte cluster pomocí Azure CLI.
- Spusťte ukázkovou vícekontenerovou aplikaci se skupinou mikroslužeb a webových front-endů, které simulují scénář maloobchodního prodeje.
Note
Tento článek obsahuje postup nasazení clusteru s výchozím nastavením pouze pro účely vyhodnocení. Před nasazením clusteru připraveného pro produkční prostředí doporučujeme seznámit se s naší referenční architekturou podle směrného plánu a zvážit, jak je v souladu s vašimi obchodními požadavky.
Important
Pokud používáte Azure Container Linux (ACL) v AKS, zkontrolujte následující aspekty a omezení:
- ACL je všeobecně dostupná počínaje verzí AKS 1.34.
- ACL vyžaduje Trusted Launch se službami Secure Boot a vTPM. Varianty bez důvěryhodného spuštění nejsou k dispozici.
- ACL na platformě Arm64 vyžaduje SKU založené na platformě Cobalt (v6), aby byla podporována kompatibilita s funkcí Trusted Launch.
-
NodeImageaNonejsou jedinými podporovanými kanály upgradu operačního systému.UnmanagedaSecurityPatchnejsou kompatibilní s seznamem ACL kvůli neměnném/usradresáři. - Streamování artefaktů se nepodporuje.
- Pod Sandboxing není podporován.
- Důvěrné virtuální počítače (CVM) se nepodporují.
- Virtuální počítače generace 1 se nepodporují.
Předpoklady
Tento rychlý start předpokládá základní znalosti konceptů Kubernetes. Další informace najdete v tématu Základní koncepty Kubernetes pro Službu Azure Kubernetes Service (AKS).
Pokud nemáte účet Azure, vytvořte si bezplatný účet před tím, než začnete.
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Začínáme s Azure Cloud Shellem.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Docker.
- Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu
az login. Chcete-li dokončit proces ověřování, postupujte podle kroků zobrazených ve vašem terminálu. Další možnosti přihlášení najdete v tématu Ověřování v Azure pomocí Azure CLI. - Když budete vyzváni, nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Použití a správa rozšíření pomocí Azure CLI.
- Potřebujete Azure CLI verze 2.86.0 nebo novější. Spuštěním
az versionvyhledejte nainstalované verze a závislé knihovny. Pokud chcete upgradovat na nejnovější verzi, spusťteaz upgrade.
- Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu
Ujistěte se, že identita, kterou používáte k vytvoření clusteru, má odpovídající minimální oprávnění. Další informace o přístupu a identitě pro AKS najdete v tématu Možnosti přístupu a identit pro Službu Azure Kubernetes Service (AKS).
Pokud máte více Azure předplatných, vyberte příslušné ID předplatného, ve kterém se mají prostředky fakturovat pomocí příkazu
az account set. Další informace najdete v tématu Správa předplatných Azure – Azure CLI.V závislosti na vašem předplatném Azure možná budete muset požádat o navýšení kvóty vCPU. Další informace najdete v tématu Zvýšení kvót vCPU pro skupiny virtuálních strojů.
Registrace požadovaných poskytovatelů prostředků
Možná budete muset zaregistrovat požadované poskytovatele prostředků, například Microsoft.ContainerService ve vašem předplatném Azure.
Kontrola stavu registrace
Pomocí příkazu zkontrolujte stav az provider show registrace.
az provider show --namespace Microsoft.ContainerService --query registrationState
Registrace poskytovatele prostředků
V případě potřeby pomocí příkazu Microsoft.ContainerService zaregistrujte poskytovatele prostředků az provider register.
az provider register --namespace Microsoft.ContainerService
Definování proměnných prostředí
Během tohoto rychlého startu definujte následující proměnné prostředí k použití. Pokud chcete, můžete hodnoty nahradit vlastními názvy.
export RESOURCE_GROUP="myAKSResourceGroup"
export REGION="westus"
export CLUSTER_NAME="myAKSCluster"
Vytvoření skupiny zdrojů
Skupina prostředků Azure je logická skupina, ve které se nasazují a spravují prostředky Azure. Při vytváření skupiny prostředků se zobrazí výzva k zadání umístění. Toto umístění je umístění úložiště metadat vaší skupiny prostředků a místo, kde se vaše prostředky spouští v Azure, pokud během vytváření prostředků nezadáte jinou oblast.
Vytvořte skupinu prostředků pomocí příkazu az group create.
az group create \
--name $RESOURCE_GROUP \
--location $REGION
Příklad výstupu:
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myAKSResourceGroup",
"location": "westus",
"managedBy": null,
"name": "myAKSResourceGroup",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
Vytvoření clusteru AKS
Vytvořte cluster AKS pomocí příkazu az aks create. Parametr --os-sku AzureContainerLinux konfiguruje systémový fond uzlů tak, aby jako operační systém uzlů používal ACL. Následující příklad vytvoří cluster s jedním uzlem a povolí spravovanou identitu přiřazenou systémem:
az aks create \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--os-sku AzureContainerLinux \
--node-count 1 \
--generate-ssh-keys
Note
Když vytvoříte nový cluster, AKS automaticky vytvoří druhou skupinu prostředků pro uložení prostředků AKS. Další informace najdete v tématu Proč se v AKS vytvářejí dvě skupiny prostředků?
Připojení ke clusteru
Pro správu Kubernetes clusteru použijte příkazový řádkový klient Kubernetes, kubectl.
kubectl už je nainstalovaný, pokud používáte Azure Cloud Shell. Pokud chcete nainstalovat kubectl místně, použijte az aks install-cli příkaz.
Nakonfigurujte
kubectlpro připojení ke svému Kubernetes clusteru pomocí příkazuaz aks get-credentials. Tento příkaz stahuje přihlašovací údaje a konfiguruje Kubernetes CLI pro jejich použití.az aks get-credentials \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAMEOvěřte připojení k vašemu clusteru pomocí příkazu
kubectl get. Tento příkaz vrátí seznam uzlů clusteru.kubectl get nodes
Nasazení aplikace
K nasazení aplikace použijete soubor manifestu k vytvoření všech objektů potřebných ke spuštění aplikace AKS Store. Soubor manifestu Kubernetes definuje požadovaný stav clusteru, například které image kontejneru se mají spustit. Manifest zahrnuje následující nasazení a služby Kubernetes:
- Store front: Webová aplikace pro zákazníky k zobrazení produktů a objednávání.
- Produktová služba: Zobrazuje informace o produktu.
- Služba objednávek: Vyřizuje objednávky.
-
RabbitMQ: Fronta zpráv pro frontu objednávek.
Note
Nedoporučujeme spouštět stavové kontejnery, například RabbitMQbez trvalého úložiště pro produkční prostředí. Používáme ji zde pro zjednodušení, ale doporučujeme používat spravované služby, jako je Azure Cosmos DB nebo Azure Service Bus.
Vytvořte soubor s názvem aks-store-quickstart.yaml a zkopírujte ho v následujícím manifestu:
apiVersion: apps/v1 kind: StatefulSet metadata: name: rabbitmq spec: serviceName: rabbitmq 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 startupProbe: httpGet: path: /health port: 3000 failureThreshold: 5 initialDelaySeconds: 20 periodSeconds: 10 readinessProbe: httpGet: path: /health port: 3000 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 3000 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 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 env: - name: AI_SERVICE_URL value: "http://ai-service:5001/" resources: requests: cpu: 1m memory: 1Mi limits: cpu: 2m memory: 20Mi readinessProbe: httpGet: path: /health port: 3002 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 3002 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 --- 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 startupProbe: httpGet: path: /health port: 8080 failureThreshold: 3 initialDelaySeconds: 5 periodSeconds: 5 readinessProbe: httpGet: path: /health port: 8080 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 3 livenessProbe: httpGet: path: /health port: 8080 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancerRozpis souborů manifestu YAML najdete v tématu Nasazení a manifesty YAML.
Pokud soubor YAML vytvoříte a uložíte místně, můžete soubor manifestu nahrát do výchozího adresáře v Cloud Shellu tak, že vyberete tlačítko Nahrát/Stáhnout soubory a vyberete soubor z místního systému souborů.
Nasaďte aplikaci pomocí
kubectl applypříkazu a zadejte název manifestu YAML.kubectl apply -f aks-store-quickstart.yamlNásledující příklad výstupu ukazuje nasazení a služby:
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
Testování aplikace
Když se aplikace spustí, služba Kubernetes zveřejní front-end aplikace na internetu. Dokončení tohoto procesu může trvat několik minut.
Pomocí příkazu zkontrolujte stav nasazených podů
kubectl get pods. Než budete pokračovat, ujistěte se, že všechny pody jsouRunning.kubectl get podsZkontrolujte veřejnou IP adresu aplikace
store-front. Sledujte průběh pomocíkubectl get servicepříkazu s argumentem--watch.kubectl get service store-front --watchVýstup EXTERNAL-IP pro
store-frontslužbu se zpočátku zobrazuje jako čekající:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4mJakmile se externí IP adresa změní z čekání na skutečnou
CTRL-Cveřejnou IP adresu, použijtekubectlk zastavení procesu sledování.Následující příklad výstupu ukazuje platnou veřejnou IP adresu přiřazenou službě:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5mOtevřete webový prohlížeč na externí IP adresu vaší služby, abyste viděli aplikaci Azure Store v akci.
Odstranění clusteru
Pokud nechcete projít kurzem AKS, vyčistěte nepotřebné prostředky, abyste se vyhnuli účtování poplatků za Azure.
Pomocí příkazu az group delete odeberte skupinu prostředků, službu kontejneru a všechny související prostředky.
az group delete --name $RESOURCE_GROUP
Cluster AKS byl vytvořen se spravovanou identitou přiřazenou systémem, což je výchozí možnost identity použitá v tomto rychlém startu. Platforma spravuje tuto identitu, takže ji nemusíte ručně odstraňovat.
Související obsah
V tomto rychlém startu jste nasadili cluster AKS s ACL pro AKS pomocí Azure CLI. Další informace o Azure Container Linux (ACL) pro AKS najdete zde: Azure Container Linux (ACL) for Azure Kubernetes Service (AKS).