Alıştırma - Azure Kubernetes Service kümenize uygulama dağıtma
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.
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ındaapiVersiondaha fazla bilgi için resmi Kubernetes dağıtımları belgelerine bakın. -
namedağıtımın adıdır. kullanırken dağıtım bilgilerini tanımlamak ve sorgulamak için bunu kullanınkubectl. - Ş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
labelsanahtar. - 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
nodeSelectortanı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
containersanahtarı bir kapsayıcı belirtimleri dizisidir. Belirtim, kapsayıcı hakkında birimage,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
resourcesanahtarı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
portsanahtarını kullanarak harici olarak açılan bağlantı noktaları.portsanahtarı 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ınameanahtarı 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.
- Oluşturduğunuz bildirimi ve
Cloud Shell oturumunuza deployment.yaml dosyasını yüklemek için Dosyaları Yönet ve karşıya yükle'yi seçin.
Bildirimi uygula
Dağıtım bildirimini kümenize göndermek için Cloud Shell’de
kubectl applykomutunu çalıştırın.kubectl apply -f ./deployment.yamlKomutun sonucunda aşağıdaki örneğe benzer bir çıkış elde edilmelidir.
deployment.apps/contoso-website createdDağıtımın başarılı olup olmadığını denetlemek için
kubectl get deploykomutunu çalıştırın.kubectl get deploy contoso-websiteKomutun 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 19sPodun çalışıp çalışmadığını denetlemek için
kubectl get podskomutunu çalıştırın.kubectl get podsKomutun 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