Rychlý start: Nasazení hostitele kontejneru Azure Linux pro cluster AKS pomocí šablony ARM
Začínáme s hostitelem kontejnerů Azure Linux pomocí šablony Azure Resource Manageru (ARM) k nasazení clusteru Azure Linux Container Host. Po instalaci požadavků vytvoříte pár klíčů SSH, zkontrolujete šablonu, nasadíte šablonu a ověříte ji a pak nasadíte aplikaci.
Šablona Azure Resource Manageru je soubor JSON (JavaScript Object Notation), který definuje infrastrukturu a konfiguraci projektu. Tato šablona používá deklarativní syntaxi. Popíšete zamýšlené nasazení, aniž byste museli psát posloupnost programovacích příkazů pro vytvoření nasazení.
Požadavky
-
Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v rychlém startu pro Azure Cloud Shell – Bash.
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 Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
Pokud ještě nemáte nainstalovaný kubectl, nainstalujte ho prostřednictvím Azure CLI nebo
az aks install-cli
postupujte podle pokynů pro upstream.Pokud chcete vytvořit cluster AKS pomocí šablony Resource Manageru, zadejte veřejný klíč SSH. Pokud tento prostředek potřebujete, přečtěte si následující část; v opačném případě přejděte do části Kontrola šablony .
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 chcete nasadit soubor Bicep nebo šablonu ARM, musíte mít přístup k zápisu pro prostředky, které nasazujete, a přístup ke všem operacím s prostředky typu Microsoft.Resources/deployments. Například k nasazení virtuálního počítače musíte mít oprávnění Microsoft.Compute/virtualMachines/write a Microsoft.Resources/deployments/*. Seznam rolí a oprávnění najdete v tématu Předdefinované role Azure.
Vytvoření páru klíčů SSH
Pro přístup k uzlům AKS se připojíte pomocí páru klíčů SSH (veřejný a privátní), který vygenerujete pomocí ssh-keygen
příkazu. Ve výchozím nastavení jsou tyto soubory vytvořeny v adresáři ~/.ssh . Spuštěním ssh-keygen
příkazu přepíšete všechny páry klíčů SSH se stejným názvem, který už v daném umístění existuje.
https://shell.azure.com V prohlížeči otevřete Cloud Shell.
Spusťte příkaz
ssh-keygen
. Následující příklad vytvoří pár klíčů SSH pomocí šifrování RSA a bitové délky 4096:ssh-keygen -t rsa -b 4096
Další informace o vytváření klíčů SSH najdete v tématu Vytvoření a správa klíčů SSH pro ověřování v Azure.
Kontrola šablony
Následující nasazení používá šablonu ARM ze šablon Azure Pro rychlý start.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"parameters": {
"clusterName": {
"type": "string",
"defaultValue": "azurelinuxakscluster",
"metadata": {
"description": "The name of the Managed Cluster resource."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "The location of the Managed Cluster resource."
}
},
"dnsPrefix": {
"type": "string",
"metadata": {
"description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN."
}
},
"osDiskSizeGB": {
"type": "int",
"defaultValue": 0,
"minValue": 0,
"maxValue": 1023,
"metadata": {
"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."
}
},
"agentCount": {
"type": "int",
"defaultValue": 3,
"minValue": 1,
"maxValue": 50,
"metadata": {
"description": "The number of nodes for the cluster."
}
},
"agentVMSize": {
"type": "string",
"defaultValue": "Standard_DS2_v2",
"metadata": {
"description": "The size of the Virtual Machine."
}
},
"linuxAdminUsername": {
"type": "string",
"metadata": {
"description": "User name for the Linux Virtual Machines."
}
},
"sshRSAPublicKey": {
"type": "string",
"metadata": {
"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'"
}
},
"osType": {
"type": "string",
"defaultValue": "Linux",
"allowedValues": [
"Linux"
],
"metadata": {
"description": "The type of operating system."
}
},
"osSKU": {
"type": "string",
"defaultValue": "AzureLinux",
"allowedValues": [
"AzureLinux",
"Ubuntu"
],
"metadata": {
"description": "The Linux SKU to use."
}
}
},
"resources": [
{
"type": "Microsoft.ContainerService/managedClusters",
"apiVersion": "2021-03-01",
"name": "[parameters('clusterName')]",
"location": "[parameters('location')]",
"properties": {
"dnsPrefix": "[parameters('dnsPrefix')]",
"agentPoolProfiles": [
{
"name": "agentpool",
"mode": "System",
"osDiskSizeGB": "[parameters('osDiskSizeGB')]",
"count": "[parameters('agentCount')]",
"vmSize": "[parameters('agentVMSize')]",
"osType": "[parameters('osType')]",
"osSKU": "[parameters('osSKU')]",
"storageProfile": "ManagedDisks"
}
],
"linuxProfile": {
"adminUsername": "[parameters('linuxAdminUsername')]",
"ssh": {
"publicKeys": [
{
"keyData": "[parameters('sshRSAPublicKey')]"
}
]
}
}
},
"identity": {
"type": "SystemAssigned"
}
}
],
"outputs": {
"controlPlaneFQDN": {
"type": "string",
"value": "[reference(parameters('clusterName')).fqdn]"
}
}
}
Pokud chcete přidat Azure Linux do existující šablony ARM, musíte přidat "osSKU": "AzureLinux"
a "mode": "System"
nastavit agentPoolProfiles
apiVersion na verzi 2021-03-01 nebo novější ("apiVersion": "2021-03-01"
).
Nasazení šablony
Výběrem následujícího tlačítka se přihlaste k Azure a otevřete šablonu.
Vyberte nebo zadejte následující hodnoty.
Pro účely tohoto rychlého startu ponechte výchozí hodnoty pro velikost disku operačního systému GB, počet agentů, velikost virtuálního počítače agenta, typ operačního systému a verzi Kubernetes. Zadejte vlastní hodnoty pro následující parametry šablony:
- Předplatné: Vyberte předplatné Azure.
- Skupina prostředků: Vyberte Vytvořit nový. Zadejte jedinečný název skupiny prostředků, například testAzureLinuxResourceGroup, a pak zvolte OK.
- Umístění: Vyberte umístění, například USA – východ.
- Název clusteru: Zadejte jedinečný název clusteru AKS, například testAzureLinuxCluster.
- Předpona DNS: Zadejte jedinečnou předponu DNS pro váš cluster, například myAzureLinuxCluster.
- Uživatelské jméno správce Linuxu: Zadejte uživatelské jméno pro připojení pomocí SSH, například azureUser.
- Veřejný klíč SSH RSA: Zkopírujte a vložte veřejnou část páru klíčů SSH (ve výchozím nastavení obsah ~/.ssh/id_rsa.pub).
Vyberte Zkontrolovat a vytvořit.
Vytvoření clusteru Azure Linux Container Host trvá několik minut. Než přejdete k dalšímu kroku, počkejte, než se cluster úspěšně nasadí.
Ověření nasazení
Připojení ke clusteru
Ke správě clusteru Kubernetes použijte klienta příkazového řádku Kubernetes kubectl.
Pomocí příkazu nainstalujte
kubectl
místněaz aks install-cli
:az aks install-cli
Pomocí příkazu nakonfigurujte
kubectl
připojení ke clusteruaz aks get-credentials
Kubernetes. Tento příkaz stáhne přihlašovací údaje a nakonfiguruje rozhraní příkazového řádku Kubernetes tak, aby je používalo.az aks get-credentials --resource-group testAzureLinuxResourceGroup --name testAzureLinuxCluster
Pomocí příkazu ověřte připojení ke clusteru
kubectl get
. Tento příkaz vrátí seznam uzlů clusteru.kubectl get nodes
Následující příklad výstupu ukazuje tři uzly vytvořené v předchozích krocích. Ujistěte se, že je stav uzlu připravený:
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
Nasazení aplikace
Soubor manifestu Kubernetes definuje požadovaný stav clusteru, například které image kontejneru se mají spustit.
V tomto rychlém startu pomocí manifestu vytvoříte všechny objekty potřebné ke spuštění aplikace Azure Vote. Tento manifest zahrnuje dvě nasazení Kubernetes:
- Ukázkové aplikace Azure Vote Python.
- Instance Redis.
Vytvoří se také dvě služby Kubernetes:
- Interní služba instance Redis.
- Externí služba pro přístup k aplikaci Azure Vote z internetu.
Vytvořte soubor s názvem
azure-vote.yaml
.- Pokud používáte Azure Cloud Shell, můžete tento soubor vytvořit pomocí
code
,vi
nebonano
jako kdybyste pracovali na virtuálním nebo fyzickém systému.
- Pokud používáte Azure Cloud Shell, můžete tento soubor vytvořit pomocí
Zkopírujte následující definici YAML:
apiVersion: apps/v1 kind: Deployment metadata: name: azure-vote-back spec: replicas: 1 selector: matchLabels: app: azure-vote-back template: metadata: labels: app: azure-vote-back spec: nodeSelector: "kubernetes.io/os": linux containers: - name: azure-vote-back image: mcr.microsoft.com/oss/bitnami/redis:6.0.8 env: - name: ALLOW_EMPTY_PASSWORD value: "yes" resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi ports: - containerPort: 6379 name: redis --- apiVersion: v1 kind: Service metadata: name: azure-vote-back spec: ports: - port: 6379 selector: app: azure-vote-back --- apiVersion: apps/v1 kind: Deployment metadata: name: azure-vote-front spec: replicas: 1 selector: matchLabels: app: azure-vote-front template: metadata: labels: app: azure-vote-front spec: nodeSelector: "kubernetes.io/os": linux containers: - name: azure-vote-front image: mcr.microsoft.com/azuredocs/azure-vote-front:v1 resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi ports: - containerPort: 80 env: - name: REDIS value: "azure-vote-back" --- apiVersion: v1 kind: Service metadata: name: azure-vote-front spec: type: LoadBalancer ports: - port: 80 selector: app: azure-vote-front
Rozpis souborů manifestu YAML najdete v tématu Nasazení a manifesty YAML.
Nasaďte aplikaci pomocí příkazu kubectl apply a zadejte název manifestu YAML:
kubectl apply -f azure-vote.yaml
Následující příklad vypadá podobně jako výstup zobrazující úspěšně vytvořená nasazení a služby:
deployment "azure-vote-back" created service "azure-vote-back" created deployment "azure-vote-front" created service "azure-vote-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.
Sledujte průběh pomocí příkazu kubectl get service s argumentem --watch
.
kubectl get service azure-vote-front --watch
Výstup EXTERNAL-IP pro azure-vote-front
službu se zpočátku zobrazí jako čekající.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Jakmile se externí IP adresa změní z čekání na skutečnou kubectl
veřejnou IP adresu, použijte CTRL-C
k zastavení procesu sledování. Následující příklad výstupu ukazuje platnou veřejnou IP adresu přiřazenou službě:
azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Pokud chcete vidět aplikaci Azure Vote v akci, otevřete webový prohlížeč na externí IP adresu vaší služby.
Odstranění clusteru
Pokud nebudete pokračovat v následujících kurzech, abyste se vyhnuli poplatkům za Azure, vyčistíte všechny nepotřebné prostředky. az group delete
Pomocí příkazu odeberte skupinu prostředků a všechny související prostředky.
az group delete --name testAzureLinuxCluster --yes --no-wait
Další kroky
V tomto rychlém startu jste nasadili cluster Azure Linux Container Host. Další informace o hostiteli kontejnerů Azure Linux a projděte si kompletní příklad nasazení a správy clusteru, pokračujte kurzem azure Linux Container Host.