Hızlı Başlangıç: Azure portalını kullanarak Azure Kubernetes Service (AKS) kümesi dağıtma

Azure Kubernetes Service (AKS), kümeleri hızla dağıtmanızı ve yönetmenizi sağlayan yönetilen bir Kubernetes hizmetidir. Bu hızlı başlangıçta:

  • Azure portalı kullanarak bir AKS kümesi dağıtın.
  • Bir grup mikro hizmet ve web ön ucuyla perakende senaryosu simülasyonu yaparak örnek bir çok kapsayıcılı uygulama çalıştırın.

Not

Aks kümesini hızlı bir şekilde sağlamaya başlamak için, bu makale yalnızca değerlendirme amacıyla varsayılan ayarlarla küme dağıtma adımlarını içerir. Üretime hazır bir kümeyi dağıtmadan önce, iş gereksinimlerinizle nasıl uyumlu olduğunu göz önünde bulundurmak için temel başvuru mimarimizi tanımanızı öneririz.

Başlamadan önce

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

Not

Azure Linux düğüm havuzu genel kullanıma sunuldu (GA). Avantajlar ve dağıtım adımları hakkında bilgi edinmek için bkz . AKS için Azure Linux Container Host'a giriş.

AKS kümesi oluşturma

  1. Azure Portal’ında oturum açın.

  2. Azure portalı giriş sayfasında Kaynak oluştur'u seçin.

  3. Kategoriler bölümünde Kapsayıcılar>Azure Kubernetes Service (AKS) öğesini seçin.

  4. Temel Bilgiler sekmesinde aşağıdaki ayarları yapılandırın:

    • Proje ayrıntıları altında:
      • Abonelik: Bu AKS kümesi için kullanmak istediğiniz Azure aboneliğini seçin.
      • Kaynak grubu: Yeni oluştur'u seçin, myResourceGroup gibi bir kaynak grubu adı girin ve tamam'ı seçin. Test veya değerlendirme amacıyla mevcut bir kaynak grubunu seçebilirsiniz ancak bu kaynakları geçici olarak barındırmak ve üretim veya geliştirme iş yüklerinizi etkilemekten kaçınmak için bir kaynak grubu oluşturmanızı öneririz.
    • Küme ayrıntıları altında:
      • Küme önceden ayarlanmış yapılandırması: Geliştirme/Test'i seçin. Önceden ayarlanmış yapılandırmalar hakkında daha fazla bilgi için bkz . Azure portalında küme yapılandırma ön ayarları.

        Not

        Kümenizi oluştururken Ön ayarları karşılaştır'ı seçip farklı bir seçenek belirleyerek önceden ayarlanmış yapılandırmayı değiştirebilirsiniz. AKS kümesi oluşturma - portal ön ayarı seçeneklerinin ekran görüntüsü.

      • Kubernetes küme adı: myAKSCluster gibi bir küme adı girin.

      • Bölge: Doğu ABD 2 gibi bir bölge seçin.

      • Kullanılabilirlik alanları: Yok'a tıklayın.

      • AKS fiyatlandırma katmanı: Ücretsiz'i seçin.

      • Kalan ayarlar için varsayılan değerleri bırakın ve İleri'yi seçin.

        Azure portalında AKS kümesini yapılandırmayı gösteren ekran görüntüsü.

  5. Düğüm havuzları sekmesinde aşağıdaki ayarları yapılandırın:

    • Düğüm havuzu ekle'yi seçin ve nplinux gibi bir Düğüm havuzu adı girin.

    • Mod: Kullanıcı'ya tıklayın.

    • İşletim sistemi SKU'su: Ubuntu Linux'u seçin.

    • Kullanılabilirlik alanları: Yok'a tıklayın.

    • Azure Spot örneklerini etkinleştir onay kutusunu işaretsiz bırakın.

    • Düğüm boyutu: Boyut seçin'i seçin. VM boyutu seçin sayfasında D2s_v3 ve ardından Seç'i seçin.

    • Kalan ayarlar için varsayılan değerleri bırakın ve Ekle'yi seçin.

      Ubuntu Linux çalıştıran bir düğüm havuzunun nasıl oluşturulacağını gösteren ekran görüntüsü.

  6. Küme yapılandırmasında doğrulamayı çalıştırmak için Gözden geçir + oluştur'u seçin. Doğrulama tamamlandıktan sonra Oluştur'u seçin.

    AKS kümesinin oluşturulması birkaç dakika sürer. Dağıtımınız tamamlandığında Kaynağa git'i seçerek veya AKS kümesi kaynak grubuna göz atıp AKS kaynağını seçerek kaynağınıza gidin.

Kümeye bağlanma

Kubernetes kümelerini yönetmek için Kubernetes komut satırı istemcisini (kubectl) kullanırsınız. kubectl Azure Cloud Shell kullanıyorsanız zaten yüklüdür. Cloud Shell'i bilmiyorsanız Azure Cloud Shell'e Genel Bakış'ı gözden geçirin.

Cloud Shell kullanıyorsanız, Azure portalının >_ üst kısmındaki düğmeyle açın. PowerShell'i yerel olarak kullanıyorsanız komutuyla Azure'a bağlanın Connect-AzAccount . Azure CLI'yı yerel olarak kullanıyorsanız komutuyla Azure'a bağlanın az login .

  1. komutunu kullanarak Kubernetes kümenize bağlanacak şekilde az aks get-credentials yapılandırınkubectl. Bu komut kimlik bilgilerini indirir ve Kubernetes CLI'yi bunları kullanacak şekilde yapılandırmaktadır.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Kullanarak küme düğümlerinin listesini döndürmek için kullanarak kubectl get kümenize bağlantıyı doğrulayın.

    kubectl get nodes
    

    Aşağıdaki örnekte önceki adımlarda oluşturulan tek düğüm gösterilmiştir. Düğüm durumunun Hazır olduğundan emin olun.

    NAME                                STATUS   ROLES   AGE       VERSION
    aks-nodepool1-31718369-0   Ready    agent    6m44s   v1.15.10
    

Uygulamayı dağıtma

AKS Store uygulamasını çalıştırmak için gereken tüm nesneleri oluşturmak için bir bildirim dosyası kullanırsınız. Kubernetes bildirim dosyası, hangi kapsayıcı görüntülerinin çalıştırıldığı gibi kümenin istenen durumunu tanımlar. Bildirim aşağıdaki Kubernetes dağıtımlarını ve hizmetlerini içerir:

Azure Store örnek mimarisinin ekran görüntüsü.

  • Mağaza ön: Müşterilerin ürünleri görüntülemesi ve sipariş vermesi için web uygulaması.
  • Ürün hizmeti: Ürün bilgilerini gösterir.
  • Sipariş hizmeti: Sipariş verir.
  • Rabbit MQ: Sipariş kuyruğu için ileti kuyruğu.

Not

Üretim için kalıcı depolama olmadan Rabbit MQ gibi durum bilgisi olan kapsayıcıları çalıştırmanızı önermiyoruz. Bunlar burada kolaylık sağlamak için kullanılır, ancak Azure CosmosDB veya Azure Service Bus gibi yönetilen hizmetleri kullanmanızı öneririz.

  1. Cloud Shell'de bir düzenleyici açın ve adlı aks-store-quickstart.yamlbir dosya oluşturun.

  2. Aşağıdaki bildirimi düzenleyiciye yapıştırın:

    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
    

    YAML bildirim dosyalarının dökümü için bkz . Dağıtımlar ve YAML bildirimleri.

    YAML dosyasını yerel olarak oluşturur ve kaydederseniz, Dosyaları Karşıya Yükle/İndir düğmesini seçip yerel dosya sisteminizden dosyayı seçerek bildirim dosyasını CloudShell'deki varsayılan dizininize yükleyebilirsiniz.

  3. komutunu kullanarak uygulamayı dağıtın kubectl apply ve YAML bildiriminizin adını belirtin:

    kubectl apply -f aks-store-quickstart.yaml
    

    Aşağıdaki örnek çıktı dağıtımları ve hizmetleri gösterir:

    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
    

Uygulamayı test etme

Uygulama çalıştırıldığında Kubernetes hizmeti, uygulamanın ön ucunu İnternet'te kullanıma sunar. Bu işlemin tamamlanması birkaç dakika sürebilir.

  1. komutunu kullanarak kubectl get pods dağıtılan podların durumunu denetleyin. Devam etmeden önce tüm podların olduğundan Running emin olun.

    kubectl get pods
    
  2. Uygulamanın genel IP adresini store-front denetleyin. bağımsız değişkeniyle komutunu kubectl get service kullanarak ilerleme durumunu --watch izleyin.

    kubectl get service store-front --watch
    

    Hizmetin EXTERNAL-IP çıkışı store-front başlangıçta beklemede olarak gösterilir:

    NAME          TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
    store-front   LoadBalancer   10.0.100.10   <pending>     80:30025/TCP   4h4m
    

    EXTERNAL-IP adresi bekleme durumundan gerçek bir genel IP adresine geçtikten kubectl sonra izleme işlemini durdurmak için kullanınCTRL-C.

    Aşağıdaki örnek çıktıda hizmete atanmış geçerli bir genel IP adresi gösterilmektedir:

    NAME          TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)        AGE
    store-front   LoadBalancer   10.0.100.10   20.62.159.19   80:30025/TCP   4h5m
    
  3. Azure Store uygulamasının çalıştığını görmek için hizmetinizin dış IP adresine bir web tarayıcısı açın.

    AKS Store örnek uygulamasının ekran görüntüsü.

Küme silme

AKS öğretici serisine geçmeyi planlamıyorsanız, Azure ücretlerinden kaçınmak için gereksiz kaynakları temizleyin.

  1. Azure portalında AKS kümesi kaynak grubunuz gidin.

  2. Kaynak grubunu sil'i seçin.

  3. Silinecek kaynak grubunun adını girin ve Sil'i> seçin.

    Not

    AKS kümesi, sistem tarafından atanan yönetilen kimlikle oluşturulmuştur. Bu kimlik platform tarafından yönetilir ve kaldırılması gerekmez.

Sonraki adımlar

Bu hızlı başlangıçta bir Kubernetes kümesi dağıttınız ve ardından basit bir çok kapsayıcılı uygulama dağıttınız. Bu örnek uygulama yalnızca tanıtım amaçlıdır ve Kubernetes uygulamaları için en iyi yöntemlerin tümünü temsil etmez. Üretim için AKS ile tam çözüm oluşturma yönergeleri için bkz . AKS çözümü kılavuzu.

AKS hakkında daha fazla bilgi edinmek ve eksiksiz bir koddan dağıtım örneğine gitmek için Kubernetes kümesi öğretici serisine geçin.