Hızlı başlangıç: ARM şablonunu kullanarak bir Azure Kubernetes hizmeti (AKS) kümesi dağıtma

Azure Kubernetes hizmeti (AKS), kümelerinizi hızlı bir şekilde dağıtmanıza ve yönetmenize olanak tanıyan bir yönetilen Kubernetes hizmetidir. Bu hızlı başlangıçta şunları yapmanız gerekir:

  • Bir Azure Resource Manager şablonu kullanarak AKS kümesi dağıtın.
  • Kümede bir Web ön ucu ve bir Redsıs örneği ile çok kapsayıcılı bir uygulama çalıştırın.

Azure Vote’a göz atma görüntüsü

ARM şablonu projenizin altyapısını ve yapılandırmasını tanımlayan bir JavaScript Nesne Gösterimi (JSON) dosyasıdır. Bu şablonda, bildirim temelli sözdizimi kullanılır. Bildirim temelli sözdiziminde, dağıtım oluşturmak için programlama komutlarının dizisini yazmadan amaçladığınız dağıtımı ifade edersiniz.

Bu hızlı başlangıç, Kubernetes kavramlarının temel olarak bilindiğini varsayar. Daha fazla bilgi için bkz. Azure Kubernetes hizmeti (AKS) Için Kubernetes temel kavramları.

Ortamınız önkoşulları karşılıyorsa ve ARM şablonlarını kullanma hakkında bilginiz varsa, Azure’a dağıtma düğmesini seçin. Şablon Azure portalda açılır.

Azure’a dağıtma

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Önkoşullar

  • Azure Cloud Shell'Da Bash ortamını kullanın.

    Cloud Shell’i yeni bir pencerede başlatma

  • Dilerseniz CLI başvuru komutlarını çalıştırmak için Azure CLI’yi yükleyebilirsiniz.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Ek oturum açma seçenekleri için bkz. Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantılarını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

  • Bu makale, Azure CLı 'nin sürüm 2.0.61 veya üstünü gerektirir. Azure Cloud Shell kullanılıyorsa, en son sürüm zaten yüklüdür.

  • Kaynak Yöneticisi şablonu kullanarak AKS kümesi oluşturmak için bir SSH ortak anahtarı sağlarsınız. Bu kaynağa ihtiyacınız varsa, aşağıdaki bölüme bakın; Aksi takdirde, şablonu gözden geçirme bölümüne atlayın.

SSH anahtar çifti oluşturma

AKS düğümlerine erişmek için, komutunu kullanarak oluşturduğunuz bir SSH anahtar çifti (public ve Private) kullanarak bağlanırsınız ssh-keygen . Varsayılan olarak, bu dosyalar ~/PST SSH dizininde oluşturulur. Komutun çalıştırılması, ssh-keygen belirtilen konumda zaten mevcut olan tüm SSH anahtar çiftinin üzerine yazar.

  1. https://shell.azure.comTarayıcınızda Cloud Shell açmak için bölümüne gidin.

  2. ssh-keygen komutunu çalıştırın. Aşağıdaki örnek, RSA şifrelemesini ve 2048 bit uzunluğunu kullanarak bir SSH anahtar çifti oluşturur:

    ssh-keygen -t rsa -b 2048
    

SSH anahtarları oluşturma hakkında daha fazla bilgi için bkz. Azure 'da kimlik doğrulaması IÇIN SSH anahtarları oluşturma ve yönetme.

Şablonu gözden geçirme

Bu hızlı başlangıçta kullanılan şablon Azure Hızlı Başlangıç şablonlarından alınmıştır.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.4.412.5873",
      "templateHash": "14640985186631737095"
    }
  },
  "parameters": {
    "clusterName": {
      "type": "string",
      "defaultValue": "aks101cluster",
      "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,
      "maxValue": 1023,
      "minValue": 0,
      "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,
      "maxValue": 50,
      "minValue": 1,
      "metadata": {
        "description": "The number of nodes for the cluster."
      }
    },
    "agentVMSize": {
      "type": "string",
      "defaultValue": "Standard_D2s_v3",
      "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'"
      }
    }
  },
  "functions": [],
  "resources": [
    {
      "type": "Microsoft.ContainerService/managedClusters",
      "apiVersion": "2020-09-01",
      "name": "[parameters('clusterName')]",
      "location": "[parameters('location')]",
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "dnsPrefix": "[parameters('dnsPrefix')]",
        "agentPoolProfiles": [
          {
            "name": "agentpool",
            "osDiskSizeGB": "[parameters('osDiskSizeGB')]",
            "count": "[parameters('agentCount')]",
            "vmSize": "[parameters('agentVMSize')]",
            "osType": "Linux",
            "mode": "System"
          }
        ],
        "linuxProfile": {
          "adminUsername": "[parameters('linuxAdminUsername')]",
          "ssh": {
            "publicKeys": [
              {
                "keyData": "[parameters('sshRSAPublicKey')]"
              }
            ]
          }
        }
      }
    }
  ],
  "outputs": {
    "controlPlaneFQDN": {
      "type": "string",
      "value": "[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('clusterName'))).fqdn]"
    }
  }
}

Daha fazla AKS örneği için bkz. aks hızlı başlangıç şablonları sitesi.

Şablonu dağıtma

  1. Azure 'da oturum açmak ve bir şablonu açmak için aşağıdaki düğmeyi seçin.

    Azure’a dağıtma

  2. Aşağıdaki değerleri seçin veya girin.

    Bu hızlı başlangıçta, Işletim sistemi disk boyutu GB, Aracı sayısı, Aracı VM boyutu, Işletim sistemi türü ve Kubernetes sürümü için varsayılan değerleri bırakın. Aşağıdaki şablon parametreleri için kendi değerlerinizi sağlayın:

    • Abonelik: bir Azure aboneliği seçin.
    • Kaynak grubu: Yeni oluştur' u seçin. Kaynak grubu için Myresourcegroup gibi benzersiz bir ad girin ve ardından Tamam' ı seçin.
    • Konum: Doğu ABD gibi bir konum seçin.
    • Küme adı: aks kümesi Için Myakscluster gibi benzersiz bir ad girin.
    • DNS ön eki: kümeniz için myakscluster gibi benzersiz bir DNS öneki girin.
    • Linux Yöneticisi Kullanıcı adı: SSH kullanarak bağlanmak için azureuser gibi bir Kullanıcı adı girin.
    • Ssh rsa ortak anahtarı: SSH anahtar çiftin genel bölümünü kopyalayıp yapıştırın (varsayılan olarak, ~/. ssh/id_rsa. pub içeriğini).

    Portalda Azure Kubernetes hizmet kümesi oluşturmak için şablon Kaynak Yöneticisi

  3. Gözden geçir + Oluştur’u seçin.

AKS kümesinin oluşturulması birkaç dakika sürer. Sonraki adıma geçmeden önce kümenin başarılı bir şekilde dağıtılmasını bekleyin.

Dağıtımı doğrulama

Kümeye bağlanma

Bir Kubernetes kümesini yönetmek için Kubernetes komut satırı istemcisini ( kubectl) kullanın. kubectl Azure Cloud Shell kullanıyorsanız, zaten yüklüdür.

  1. kubectl Az aks install-cli komutunu kullanarak yerel olarak yükler:

    az aks install-cli
    
  2. kubectl Az aks Get-Credentials komutunu kullanarak Kubernetes kümenize bağlanacak şekilde yapılandırın. Bu komut, kimlik bilgilerini indirir ve Kubernetes CLı 'yi bunları kullanacak şekilde yapılandırır.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. Kubectl Get komutunu kullanarak kümenizin bağlantısını doğrulayın. Bu komut, küme düğümlerinin bir listesini döndürür.

    kubectl get nodes
    

    Çıktı, önceki adımlarda oluşturulan düğümleri gösterir. Tüm düğümlerin durumunun hazırlanmaya çalıştığından emin olun:

    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
    

Uygulamayı çalıştırma

Bir Kubernetes bildirim dosyası , hangi kapsayıcı görüntülerinin çalıştırılacağı gibi kümenin istenen durumunu tanımlar.

Bu hızlı başlangıçta, Azure oy uygulamasınıçalıştırmak için gerekli tüm nesneleri oluşturmak için bir bildirim kullanacaksınız. Bu bildirim iki Kubernetes dağıtımıiçerir:

  • Örnek Azure oyunu Python uygulamaları.
  • Redsıs örneği.

İki Kubernetes hizmeti de oluşturulur:

  • Redsıs örneği için bir iç hizmet.
  • Azure oy uygulamasına internet 'ten erişmek için bir dış hizmet.
  1. azure-vote.yaml adlı bir dosya oluşturun.

    • Azure Cloud Shell kullanırsanız, bu dosya kullanılarak vi veya nano bir sanal veya fiziksel sistemde çalışırken oluşturulabilir.
  2. Aşağıdaki YAML tanımına kopyalayın:

    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
    
  3. Kubectl Apply komutunu kullanarak uygulamayı dağıtın ve YAML bildiriminizde adı belirtin:

    kubectl apply -f azure-vote.yaml
    

    Çıktıda başarıyla oluşturulan dağıtımlar ve hizmetler gösterilmektedir:

    deployment "azure-vote-back" created
    service "azure-vote-back" created
    deployment "azure-vote-front" created
    service "azure-vote-front" created
    

Uygulamayı test edin

Uygulama çalıştığında, bir Kubernetes hizmeti, uygulamanın ön ucuna internet 'e koyar. Bu işlemin tamamlanması birkaç dakika sürebilir.

Kubectl Get Service komutunu bağımsız değişkeniyle kullanarak ilerlemeyi izleyin --watch .

kubectl get service azure-vote-front --watch

Hizmetin dış IP çıkışı azure-vote-front Başlangıçta Beklemede olarak gösterilir.

NAME               TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
azure-vote-front   LoadBalancer   10.0.37.27   <pending>     80:30572/TCP   6s

Dış IP adresi bekliyor durumundan gerçek ortak IP adresine değiştiğinde, CTRL-C izleme işlemini durdurmak için kullanın kubectl . Aşağıdaki örnek çıktıda, hizmete atanmış geçerli bir genel IP adresi gösterilmektedir:

azure-vote-front   LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m

Azure oy uygulamasını çalışırken görmek için, hizmetinizin dış IP adresine bir Web tarayıcısı açın.

Azure Vote’a göz atma görüntüsü

Kaynakları temizleme

Azure ücretlerinden kaçınmak için gereksiz kaynaklarınızı temizleyin. az group delete komutunu kullanarak kaynak grubunu, kapsayıcı hizmetini ve ilgili tüm kaynakları kaldırabilirsiniz.

az group delete --name myResourceGroup --yes --no-wait

Not

Kümeyi sildiğinizde, AKS kümesi tarafından kullanılan Azure Active Directory hizmet sorumlusu kaldırılmaz. Hizmet sorumlusunu kaldırma adımları için bkz. AKS hizmet sorumlusuyla ilgili önemli noktalar ve silme.

Yönetilen bir kimlik kullandıysanız, kimlik platform tarafından yönetilir ve kaldırma gerektirmez.

Kodu alma

Önceden var olan kapsayıcı görüntüleri, bu hızlı başlangıçta bir Kubernetes dağıtımı oluşturmak için kullanıldı. İlgili uygulama kodu, Dockerfile ve Kubernetes bildirim dosyası GitHub kullanılabilir.

Sonraki adımlar

Bu hızlı başlangıçta bir Kubernetes kümesi dağıttınız ve daha sonra çok kapsayıcılı bir uygulama dağıttınız. AKS kümeniz için Kubernetes web panosuna erişin .

AKS hakkında daha fazla bilgi ve dağıtım örneği için tam kod açıklaması için Kubernetes küme öğreticisine geçin.