Büyütme ile Ölçeklendirme

1. Hedefler

Kustomize, uygulama yapılandırmasını şablonsuz bir şekilde özelleştirmek için kullanıma hazır uygulamaların kullanımını basitleştiren bir araçtır. Bağımsız bir yardımcı program olarak kullanılabilir ve kubectl apply -k aracılığıyla kubectl'e entegre edilmiştir ve bağımsız bir KSA olarak kullanılabilir. Daha ayrıntılı bilgi için kustomize.io adresini ziyaret edin.

Bu eğiticide, Kustomize'ın temel kavramlarından bazılarını inceleyecek ve bunu uygulamalar ve ortamlardaki varyasyonları yönetmek için kullanacaksınız.

Bu kurstan sonra:

  • kustomize komut satırı istemcisini kullanın
  • Ortak öğeleri geçersiz kıl
  • Daha büyük yaml yapılarına yama uygulayın
  • Birden fazla yer paylaşımı katmanı kullanın

2. Çalışma alanınız hazırlanıyor

  1. Aşağıdaki URL'yi ziyaret ederek Cloud Shell düzenleyicisini açın

https://ide.cloud.google.com

  1. Terminal penceresinde bu eğitim için bir çalışma dizini oluşturun

mkdir kustomize-lab

  1. Dizine girip IDE çalışma alanını ayarlayın

cd kustomize-lab && cloudshell workspace .

3. kustomize komut satırı istemcisini kullanma

kustomize özelliğinin gücü, temel Kubernetes yaml'lerini özel değerlerle yer paylaşımlı olarak kullanabilme ve değiştirebilme özelliğinden gelir. Bu işlemi gerçekleştirmek için dosyaların nerede bulunduğuna ve nelerin geçersiz kılınacağına ilişkin talimatları içeren bir temel dosya gerekir. Kustomize, Kubernetes ekosistemine dahildir ve çeşitli yöntemlerle yürütülebilir.

Bu bölümde bir temel kustomize yapılandırması oluşturup dosyaları tek başına kustomize komut satırı istemcisiyle işleyeceksiniz.

  1. Başlamak için temel yapılandırma dosyalarınızı içerecek bir klasör oluşturacaksınız

mkdir -p chat-app/base

  1. Temel klasörde basit bir Kubernetes deployment.yaml oluşturun

cat <<EOF > chat-app/base/deployment.yaml

kind: Deployment

apiVersion: apps/v1

metadata:

name: app

spec:

template:

`metadata:`

  `name: chat-app`

`spec:`

  `containers:`

  `- name: chat-app`

    `image: chat-app-image`

EOF

  1. kustomization.yaml temelini oluşturun

Özelleştirme, giriş noktası olarak kustomization.yaml adlı bir dosyayı arar. Bu dosya, belirli geçersiz kılma değerlerinin yanı sıra çeşitli temel ve geçersiz kılma dosyalarına referanslar içerir.

Temel kaynak olarak deployment.yaml öğesine referans veren bir kustomization.yaml dosyası oluşturun.

cat <<EOF > chat-app/base/kustomization.yaml

bases:

- deployment.yaml

EOF

  1. Temel klasörde kustomize komutunu çalıştırın. Bu işlem, dağıtım YAML dosyalarının hiçbir değişiklik olmadan çıkışını sağlar. Henüz herhangi bir varyasyon eklemediğiniz için bu, beklenen bir durumdur.

kustomize build chat-app/base

Bu bağımsız istemci, aşağıdaki örnekte gösterildiği gibi çıkışı doğrudan uygulamak için kubectl istemcisiyle birleştirilebilir. Bu işlem, derleme komutunun çıkışının doğrudan kubectl apply komutu içine akışını sağlar.

(Yürütme - Yalnızca referans için eklenmiştir)

kustomize build chat-app/base | kubectl apply -f -

Bu teknik, kustomize istemcisinin belirli bir sürümünün gerekli olduğu durumlarda yararlıdır.

Alternatif olarak kustomize, kubectl'in kendi içinde entegre araç ile yürütülebilir. Aşağıdaki örnekte olduğu gibi.

(Yürütme - Yalnızca referans için eklenmiştir)

kubectl apply -k chat-app/base

4. Ortak öğeleri geçersiz kılma

Çalışma alanınızı yapılandırdığınıza ve kustomize'ın çalıştığını doğruladığınıza göre bazı temel değerleri geçersiz kılmanın zamanı geldi.

Görüntüler, ad alanları ve etiketler, genellikle her bir uygulama ve ortam için özelleştirilir. Kustomize, genellikle değiştirildikleri için bunları doğrudan kustomize.yaml içinde bildirmenize olanak tanıyarak bu yaygın senaryolar için çok sayıda yama oluşturma ihtiyacını ortadan kaldırır.

Bu teknik genellikle bir şablonun belirli bir örneğini oluşturmak için kullanılır. Bir temel kaynak kümesi, artık sadece ad ve ad alanı değiştirilerek birden fazla uygulama için kullanılabilir.

Bu örnekte, kustomization.yaml cihazınıza ad alanı ve ad öneki ekleyip bazı etiketler ekleyeceksiniz.

  1. kustomization.yaml dosyasını, ortak etiketleri ve ad alanlarını içerecek şekilde güncelleyin.

Terminalinizde aşağıdaki komutları kopyalayıp yürütün

cat <<EOF > chat-app/base/kustomization.yaml

bases:

- deployment.yaml

namespace: my-namespace

nameprefix: my-

commonLabels:

app: my-app

EOF

  1. Derleme komutunu yürütme

Derlemenin bu noktada yürütülmesi, elde edilen YAML dosyasının hem hizmet hem de dağıtım tanımlarında artık ad alanı, etiketler ve önekli adları içerdiğini gösterir.

kustomize build chat-app/base

Çıkışın, dağıtım YAML dosyasında bulunmayan etiketleri ve ad alanlarını içerdiğini unutmayın. chat-app olan adın my-chat-app olarak nasıl değiştirildiğine de dikkat edin

(Çıkış kopyalanmaz)

kind: Deployment

metadata:

labels:

`app: my-app`

name: my-chat-app

namespace: my-namespace

5. Daha büyük yaml yapılarına yama uygulama

Özelleştirmek ayrıca temel kaynaklarla yer paylaşımlı olan yamalar uygulama özelliği de sunar. Bu teknik genellikle uygulamalar ve ortamlar arasında değişkenlik sağlamak için kullanılır.

Bu adımda, aynı temel kaynakları kullanan tek bir uygulama için ortam varyasyonları oluşturacaksınız.

  1. Farklı ortamlar için klasörler oluşturarak başlayın

mkdir -p chat-app/dev

mkdir -p chat-app/prod

  1. Aşağıdaki komutla sahne yamasını yazın

cat <<EOF > chat-app/dev/deployment.yaml

kind: Deployment

apiVersion: apps/v1

metadata:

name: app

spec:

template:

`spec:`

  `containers:`

  `- name: chat-app`

    `env:`

    `- name: ENVIRONMENT`

      `value: dev`

EOF

  1. Şimdi aşağıdaki komutla üretim yamasını yazın

cat <<EOF > chat-app/prod/deployment.yaml

kind: Deployment

apiVersion: apps/v1

metadata:

name: app

spec:

template:

`spec:`

  `containers:`

  `- name: chat-app`

    `env:`

    `- name: ENVIRONMENT`

      `value: prod`

EOF

Yukarıdaki yamaların, container görüntüsü adını içermediğine dikkat edin. Bu değer, önceki adımda oluşturduğunuz base/deployment.yaml dosyasında sağlanır. Ancak bu yamalar, geliştirme ve üretim için benzersiz ortam değişkenleri içerir.

  1. Temel dizin için kustomize YAML dosyalarını uygulayın.

Base kustomization.yaml dosyasını yeniden yazın. Bu ad ve ad ön eki, herhangi bir varyasyon içermeyen temel yapılandırma olduğundan bu ön eki kaldırın. Bu alanlar, kısa bir süre içinde ortam dosyalarına taşınacak.

cat <<EOF > chat-app/base/kustomization.yaml

bases:

- deployment.yaml

commonLabels:

app: chat-app

EOF

  1. Geliştirme dizini için kustomize YAML dosyalarını uygulama

Şimdi terminalinizde aşağıdaki komutları çalıştırarak dev ve prod değişkenlerini uygulayın.

cat <<EOF > chat-app/dev/kustomization.yaml

bases:

- ../base

namespace: dev

nameprefix: dev-

commonLabels:

env: dev

patches:

- deployment.yaml

EOF

Dosyanın patches: bölümünün eklendiğine dikkat edin. Bu, kustomize'ın bu dosyaları temel kaynakların üzerine yerleştirmesi gerektiğini gösterir.

  1. Üretim dizini için kustomize YAML dosyalarını uygulama

cat <<EOF > chat-app/prod/kustomization.yaml

bases:

- ../base

namespace: prod

nameprefix: prod-

commonLabels:

env: prod

patches:

- deployment.yaml

EOF

  1. Dosyaları birleştirmek için kustomize komutunu çalıştırın

Temel ve ortam dosyaları oluşturulduktan sonra temel dosyalara yama uygulamak için kustomize işlemini yürütebilirsiniz.

Birleştirilmiş sonucu görmek için geliştirici için aşağıdaki komutu çalıştırın.

kustomize build chat-app/dev

Çıkışın, temel ve geliştirici yapılandırmalarına ait etiketler, tabandaki kapsayıcı görüntüsü adı ve geliştirici klasörlerindeki ortam değişkeni gibi birleştirilmiş sonuçları içerdiğini unutmayın.

6. Birden fazla bindirme katmanı kullanma

Birçok kuruluşta uygulama ekiplerini desteklemeye ve platformu yönetmeye yardımcı olan bir ekip bulunur. Bu ekipler sıklıkla, tüm ortamlardaki tüm uygulamalara eklenecek, günlük kaydı aracısı gibi belirli ayrıntıları eklemek ister.

Bu örnekte, tüm uygulamalar tarafından ve dağıtıldıkları ortamdan bağımsız olarak dahil edilecek bir shared-kustomize klasörü ve kaynaklar oluşturacaksınız.

  1. shared-kustomize klasörü oluşturun

mkdir shared-kustomize

  1. Paylaşılan klasörde basit bir deployment.yaml oluşturun

cat <<EOF > shared-kustomize/deployment.yaml

kind: Deployment

apiVersion: apps/v1

metadata:

name: app

spec:

template:

`spec:`

  `containers:`

  `- name: logging-agent`

    `image: logging-agent-image`

EOF

  1. Paylaşılan klasörde bir kustomization.yaml oluşturun.

cat <<EOF > shared-kustomize/kustomization.yaml

bases:

- deployment.yaml

EOF

  1. Uygulamanızdaki shared-kustomize klasörüne referans verin

shared-kustomize klasörünün tüm uygulamalarınızın temeli olmasını istediğiniz için shared-kustomize klasörünü temel olarak kullanmak için chat-app/base/kustomization.yaml öğenizi güncellemeniz gerekir. Ardından, bunun üzerine kendi delivery.yaml dosyasına yama uygulayın. Ardından ortam klasörleri, bunların üzerine tekrar yama uygular.

Terminalinizde aşağıdaki komutları kopyalayıp yürütün

cat <<EOF > chat-app/base/kustomization.yaml

bases:

- ../../shared-kustomize

commonLabels:

app: chat-app

patches:

- deployment.yaml

EOF

  1. Kubernetes'i çalıştır ve geliştirici için birleştirilmiş sonuçları görüntüle

kustomize build chat-app/dev

Çıkışın; uygulama tabanı, uygulama ortamı ve shared-kustomize klasörlerinden alınan birleştirilmiş sonuçlar içerdiğini unutmayın. Özellikle, kapsayıcılar bölümünde üç konumun tümünün değerlerini görebilirsiniz.

(çıkış kopyalanmaz)

<pre>

`containers:`

      `- env:`

        `- name: ENVIRONMENT`

          `value: dev`

        `name: chat-app`

      `- image: image`

        `name: app`

      `- image: logging-agent-image`

        `name: logging-agent`

</pre>