Alıştırma - Azure Kubernetes Service kümenize uygulama dağıtma

Tamamlandı

Bu alıştırmada, şirketinizin web sitesini Azure Kubernetes Service'e (AKS) test uygulaması olarak dağıtın. Web sitesi HTML, CSS ve JavaScript temel teknoloji yığınına sahip statik bir web sitesidir. Diğer hizmetler kadar çok istek almaz ve bize dağıtım seçeneklerini test etmek için güvenli bir yol sağlar.

Not

Kaynak kodu daha fazla incelemek istiyorsanız web uygulamasının kodu bu GitHub deposunda kullanılabilir. Ayrıca bu örnek uygulama yalnızca Linux düğüm havuzuna dağıtılır.

Önemli

Bu alıştırmayı tamamlamak için kendi Azure aboneliğinize ihtiyacınız vardır ve ücret ödemeniz gerekebilir. Henüz bir Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Dağıtım bildirimi oluşturma

Uygulamanızı dağıtmak için bir dağıtım bildirimi dosyası oluşturursunuz. Bildirim dosyası dağıtmak istediğiniz kaynağın türünü ve iş yüküyle ilişkili tüm ayrıntıları tanımlamanıza olanak sağlar.

Kubernetes kapsayıcıları podlar olarak adlandırılan ve zeka içermeyen mantıksal yapılarda gruplandırır. Dağıtımlar, uygulamanızı oluşturmak için eksik olan zekayı ekler. Şimdi bir dağıtım dosyası oluşturalım.

  1. Bilgisayarınızda Visual Studio Code gibi bir metin düzenleyicisi kullanın ve aşağıdaki YAML kodunu kopyalayıp deployment.yaml adlı bir dosyaya yapıştırın ve dosyayı kaydedin.

    # deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: contoso-website
    spec:
      selector:
        matchLabels:
          app: contoso-website
      template:
        metadata:
          labels:
            app: contoso-website
        spec:
          nodeSelector:
            kubernetes.io/os: linux
          containers:
            - image: mcr.microsoft.com/mslearn/samples/contoso-website
              name: contoso-website
              resources:
                requests:
                  cpu: 100m
                  memory: 128Mi
                limits:
                  cpu: 250m
                  memory: 256Mi
              ports:
                - containerPort: 80
                  name: http
    
    • Oluşturduğunuz bildirimi ve apiVersionkind öğesini tanımlamak için iki anahtar kullanılır. Bu anahtara hangi değerlerin eklenip eklenmeyenleri hakkında apiVersion daha fazla bilgi için resmi Kubernetes dağıtımları belgelerine bakın.
    • name dağıtımın adıdır. kullanırken dağıtım bilgilerini tanımlamak ve sorgulamak için bunu kullanın kubectl.
    • Şablon tanımı, bildirim dosyasındaki pod bilgilerini tanımlar. Şablon bildirim dosyasında, dağıtım belirtimi bölümünün altına yerleştirilir.
    • Deploymanların podları bulup gruplandırmasını sağlayan labels anahtar.
    • Linux ve Windows düğüm havuzları olan bir AKS kümesinde, dağıtım manifesti örnek uygulamanın podunun Linux kapsayıcılarını çalıştırabilen bir düğümde çalıştırılması için nodeSelector tanımlar. Linux düğümleri Windows kapsayıcılarını çalıştıramaz ve tam tersi de geçerlidir.
    • Bir podun bir veya birden fazla kapsayıcısı olabileceği için containers anahtarı bir kapsayıcı belirtimleri dizisidir. Belirtim, kapsayıcı hakkında bir image, name, resources, portsve diğer önemli bilgileri tanımlar. Çalışan tüm podlar adını contoso-website-<UUID>izler; burada UUID, tüm kaynakları benzersiz olarak tanımlamak için oluşturulan bir kimliktir.
    • Uygulamanın kümeden kullanmasına izin verilen en düşük ve en fazla kaynak miktarını tanımlamak iyi bir uygulamadır. Bu bilgileri belirtmek için resources anahtarını kullanırsınız. Kaynak bölümü, istek olarak en düşük kaynak miktarını ve sınır olarak maksimum kaynak miktarını belirtmenize olanak tanır.
    • Bu kapsayıcının ports anahtarını kullanarak harici olarak açılan bağlantı noktaları. ports anahtarı bir nesne dizisidir; diğer bir deyişle poddaki kapsayıcı birden çok adla birden çok bağlantı noktasını kullanıma sunabilir. Bağlantı noktasını name anahtarı kullanarak adlandırın. Bağlantı noktalarının adlandırılması sayesinde, kullanıma sunulan bağlantı noktasını değiştirirken söz konusu bağlantı noktasına başvuran dosyaları değiştirmeniz gerekmez.
  2. Cloud Shell oturumunuza deployment.yaml dosyasını yüklemek için Dosyaları Yönet ve karşıya yükle'yi seçin.

Bildirimi uygula

  1. Dağıtım bildirimini kümenize göndermek için Cloud Shell’de kubectl apply komutunu çalıştırın.

    kubectl apply -f ./deployment.yaml
    

    Komutun sonucunda aşağıdaki örneğe benzer bir çıkış elde edilmelidir.

    deployment.apps/contoso-website created
    
  2. Dağıtımın başarılı olup olmadığını denetlemek için kubectl get deploy komutunu çalıştırın.

    kubectl get deploy contoso-website
    

    Komutun sonucunda aşağıdaki örneğe benzer bir tablo çıkışı elde edilmelidir.

    NAME              READY   UP-TO-DATE   AVAILABLE   AGE
    contoso-website   1/1     1            1           19s
    
  3. Podun çalışıp çalışmadığını denetlemek için kubectl get pods komutunu çalıştırın.

    kubectl get pods
    

    Komutun sonucunda aşağıdaki örneğe benzer bir tablo çıkışı elde edilmelidir.

    NAME                               READY   STATUS    RESTARTS   AGE
    contoso-website-1c2b3b4b5b-dzsvm   1/1     Running   0          68s