Alıştırma - Kubernetes'e mikro hizmet kapsayıcısı dağıtma
Kubernetes kapsayıcıları sizin için çalıştırır. Kubernetes'in bir YAML dosyası aracılığıyla ne gerçekleştirmesini istediğinizi açıklarsınız. Bu alıştırmada, Kubernetes'te arka uç hizmetini dağıtıp çalıştırabilmeniz için dosyayı oluşturma adımları gösterilir.
Önemli
Devam etmeden önce bir Kubernetes uygulamasının yüklü olduğundan emin olmanız gerekir. Kod alanında çalışan k3d uygulamasını kullanacağız. Bu uygulamayı yükleyerek laboratuvarı başlatacağız.
Kubernetes araçlarını ve uygulamasını yükleme
Hem kubectl aracını hem de k3d Kubernetes uygulamasını yüklemeliyiz:
Kod alanında, TERMINAL sekmesine geçin ve önkoşulları yüklemek için şu komutları çalıştırın:
sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl
Ardından Kubernetes paket depolarının imzalama anahtarını indirmek için şu komutları çalıştırın:
sudo mkdir /etc/apt/keyrings curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
Dizinin zaten var olduğunu belirten bir hata alırsanız, komutu ayrı olarak çalıştırın
curl
.Kubernetes deposunu apt yapılandırmanıza ekleyin:
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
Şimdi kubectl aracını yükleyebilirsiniz:
sudo apt-get update sudo apt-get install -y kubectl
Son olarak Kubernetes'in k3d uygulamasını yükleyin ve bir küme oluşturun:
curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash k3d cluster create devcluster --config k3d.yml
Arka uç hizmeti için dağıtım dosyası oluşturma
YaML dosyasıyla Kubernetes'e kapsayıcı dağıtımlarını yönetme dosyası oluşturabilirsiniz. Şimdi arka uç hizmetini dağıtmak için bir dosya oluşturalım.
backend-deploy.yml adlı kod alanının donet-kubernetes klasöründe yeni bir dosya oluşturun.
Aşağıdaki metni dosyaya kopyalayın ve kaydedin.
--- apiVersion: apps/v1 kind: Deployment metadata: name: productsbackend spec: replicas: 1 template: metadata: labels: app: productsbackend spec: containers: - name: productsbackend image: [YOUR DOCKER USER NAME]/productservice:latest ports: - containerPort: 80 env: - name: ASPNETCORE_URLS value: http://*:80 selector: matchLabels: app: productsbackend --- apiVersion: v1 kind: Service metadata: name: productsbackend spec: type: NodePort ports: - port: 80 targetPort: 80 nodePort: 32001 selector: app: productsbackend
Yer tutucuyu
[YOUR DOCKER USER NAME]
gerçek Docker kullanıcı adınız ile değiştirin.
Bu dosya birkaç şey yapar.
İlk bölüm, Kapsayıcının Kubernetes'e dağıtılması için bir dağıtım belirtimi tanımlar. Kapsayıcı görüntüsünün nerede bulunacağı, kapsayıcıda hangi bağlantı noktalarının açıldığı ve bazı ortam değişkenlerinin ayarlandığı tek bir çoğaltma belirtir. Bu ilk bölüm ayrıca kapsayıcıya ve belirtimlere başvurmak için kullanılabilecek etiketleri ve adları tanımlar.
İkinci bölüm, kapsayıcının Kubernetes NodePort hizmeti olarak çalıştığını tanımlar. Bu modülde NodePorts'un tüm ayrıntılarını anlamanız gerekmez. Ancak, hizmeti kümenin dışından test edebilmeniz için bu hizmet türünün bir dış IP adresi ortaya çıkardığını bilmeniz gerekir.
Arka uç mikro hizmetini dağıtma ve çalıştırma
Şimdi mikro hizmeti dağıtıp çalıştıralım.
TERMINAL sekmesinde aşağıdaki komutu çalıştırın:
kubectl apply -f backend-deploy.yml
Bu komut Kubernetes'e oluşturduğumuz dosyayı çalıştırmasını söyler. Docker Hub'dan görüntüyü indirir ve kapsayıcıyı oluşturur.
Komut
kubectl apply
hızlı bir şekilde döndürülüyor. Ancak kapsayıcı oluşturma işlemi biraz zaman alabilir. İlerleme durumunu görüntülemek için aşağıdaki kodu kullanın.kubectl get pods
Sonuçta elde edilen çıktıda, productsbackend içeren bir satırınız ve ardından NAME sütununun altında rastgele karakterler içeren bir dizeniz vardır. Her şey hazır olduğunda, READY sütununun altında 1/1 ve STATUS sütununun altında Çalışıyor bulunur.
Hizmeti test etmek için PORTS sekmesine geçin ve Arka Uç bağlantı noktasının yerel adresinin yakınında yer alan dünya simgesini seçin. Tarayıcı bu adreste yeni bir sekme açar.
Bazı ürünleri sorgulamak için adresi /api/product ile ekleyin ve Enter tuşuna basın. Bazı ürün bilgilerinin JSON biçiminde listelendiğini görmeniz gerekir.
[ { "id": 1, "name": "Solar Powered Flashlight", "description": "A fantastic product for outdoor enthusiasts", "price": 19.99, "imageUrl": "product1.png" }, { "id": 2, "name": "Hiking Poles", "description": "Ideal for camping and hiking trips", "price": 24.99, "imageUrl": "product2.png" }, { "id": 3, "name": "Outdoor Rain Jacket", "description": "This product will keep you warm and dry in all weathers", "price": 49.99, "imageUrl": "product3.png" }, ...
Dağıtım dosyası oluşturma ve ön uç hizmetini çalıştırma
Arka uç hizmeti gibi ön uç için de bir dağıtım dosyası gerekir.
donet-kubernetes klasöründe frontend-deploy.yml adlı yeni bir dosya oluşturun
Aşağıdaki kodu dosyaya yapıştırın:
--- apiVersion: apps/v1 kind: Deployment metadata: name: storefrontend spec: replicas: 1 template: metadata: labels: app: storefrontend spec: containers: - name: storefrontend image: [YOUR DOCKER USER NAME]/storeimage:latest ports: - containerPort: 80 env: - name: ASPNETCORE_URLS value: http://*:80 - name: ProductEndpoint value: http://productsbackend selector: matchLabels: app: storefrontend --- apiVersion: v1 kind: Service metadata: name: storefrontend spec: type: NodePort ports: - port: 80 targetPort: 80 nodePort: 32000 selector: app: storefrontend
Yer tutucuyu
[YOUR DOCKER USERNAME]
gerçek Docker kullanıcı adınız ile değiştirin.Bu dosyanın arka uç mikro hizmeti için oluşturduğumuz dosyaya benzer olduğuna dikkat edin. İki fark vardır:
- Dağıtımın
spec.template.spec.containers.image
değeri altında çalıştırılacak farklı bir kapsayıcı belirtiyoruz. - bölümünün altında
spec.template.spec.containers.env
yeni bir ortam değişkeni vardır. Storefrontend uygulamasındaki kod arka ucu çağırır, ancak tam etki alanı adı (FQDN) belirtmediğimiz için arka uç mikro hizmetinin IP adresini bilmiyoruz, düğümüDeployment
altındametadata.name
belirttiğimiz adı kullanırız. Kubernetes gerisini halleder.
- Dağıtımın
Aşağıdaki komutla kapsayıcıyı Kubernetes'e dağıtın:
kubectl apply -f frontend-deploy.yml
Dağıtımın durumunu görmek için tekrar kullanabilirsiniz
kubectl get pods
. Storefrontend satırı DURUM sütununun altında Çalışıyor olarak görüntülendiğinde, her şey hazır duruma gelir.Ön uç hizmetini test etmek için PORTS sekmesine geçin, ardından Ön Uç bağlantı noktasının yerel adresinin sağındaki dünya simgesini seçin. Tarayıcı giriş sayfasını görüntüler.
Ürünler'i seçin. Katalogda Contoso'nun ürünleri gösterilir.
Bu alıştırmada kapsayıcıların Kubernetes içinde tam olarak nasıl çalışmasını istediğinizi açıklayan bir dağıtım dosyası oluşturdunuz. Ardından Kubernetes'e görüntüyü Docker Hub'dan indirmesini ve kapsayıcıları başlatmasını ayarladınız.