Sdílet prostřednictvím


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.

  1. https://shell.azure.com V prohlížeči otevřete Cloud Shell.

  2. 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

  1. Výběrem následujícího tlačítka se přihlaste k Azure a otevřete šablonu.

    Tlačítko pro nasazení šablony Resource Manageru do Azure

  2. 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).

    Snímek obrazovky se šablonou Resource Manageru pro vytvoření clusteru Azure Kubernetes Service na portálu

  3. 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.

  1. Pomocí příkazu nainstalujte kubectl místně az aks install-cli :

    az aks install-cli
    
  2. Pomocí příkazu nakonfigurujte kubectl připojení ke clusteru az 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
    
  3. 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.
  1. Vytvořte soubor s názvem azure-vote.yaml.

    • Pokud používáte Azure Cloud Shell, můžete tento soubor vytvořit pomocí code, vinebo nano jako kdybyste pracovali na virtuálním nebo fyzickém systému.
  2. 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.

  3. 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.

Snímek obrazovky s přechodem na ukázkovou aplikaci Azure Vote

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.