Büyütme ile Ölçeklendirme

1. Hedefler

Kustomize, uygulama yapılandırmasını özelleştirmek için şablonsuz bir yöntem sunan ve hazır uygulamaların kullanımını kolaylaştıran bir araçtır. Bu araç, bağımsız bir yardımcı program olarak kullanılabilir ve kubectl apply -k aracılığıyla kubectl'ye entegre edilmiştir. Daha fazla bilgi için kustomize.io adresini ziyaret edin.

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

Bu kurstan sonra:

  • Kustomize komut satırı istemcisini kullanma
  • Ortak öğeleri geçersiz kılma
  • Daha büyük YAML yapılarını yamalama
  • Birden fazla yer paylaşımı katmanı kullanma

2. Çalışma alanınızı hazırlama

  1. Aşağıdaki URL'yi ziyaret ederek Cloud Shell Düzenleyici'yi 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 geçin ve IDE çalışma alanını ayarlayın

cd kustomize-lab && cloudshell workspace .

3. Kustomize komut satırı istemcisini kullanma

Kustomize'ın gücü, temel Kubernetes YAML'lerini özel değerlerle yerleştirme ve değiştirme özelliğinden gelir. Bunu yapmak için Kustomize, dosyaların nerede olduğu ve nelerin geçersiz kılınacağıyla ilgili talimatları içeren bir temel dosya gerektirir. Kustomize, Kubernetes ekosistemine dahildir ve çeşitli yöntemlerle yürütülebilir.

Bu bölümde temel bir Kustomize yapılandırması oluşturacak ve dosyaları bağımsız Kustomize komut satırı istemcisiyle işleyeceksiniz.

  1. Başlamak için temel yapılandırma dosyalarınızı barındıracak bir klasör oluşturursunuz.

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. Temel kustomization.yaml oluşturma

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

kustomization.yaml dosyası oluşturun. Bu dosya, temel kaynak olarak deployment.yaml dosyasını referans alır.

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

bases:

- deployment.yaml

EOF

  1. Temel klasörde kustomize komutunu çalıştırın. Bunu yaptığınızda, henüz herhangi bir varyasyon eklemediğiniz için dağıtım YAML dosyaları herhangi bir değişiklik olmadan oluşturulur.

kustomize build chat-app/base

Bu bağımsız istemci, çıktıyı doğrudan uygulamak için kubectl istemcisiyle birleştirilebilir (aşağıdaki örnekte gösterildiği gibi). Bu işlem, derleme komutunun çıkışını doğrudan kubectl apply komutuna aktarır.

(Çalıştırmayın - Yalnızca referans amaçlı 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 kullanışlıdır.

Alternatif olarak, kustomize, doğrudan kubectl'ye entegre edilmiş araçlarla da yürütülebilir. Aşağıdaki örnekte olduğu gibi.

(Çalıştırmayın - Yalnızca referans amaçlı eklenmiştir)

kubectl apply -k chat-app/base

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

Çalışma alanınız yapılandırıldığına ve Kustomize'ın çalıştığını doğruladığınıza göre artık bazı temel değerleri geçersiz kılabilirsiniz.

Resimler, ad alanları ve etiketler genellikle her uygulama ve ortam için özelleştirilir. Bu alanlar genellikle değiştirildiğinden Kustomize, bunları doğrudan kustomize.yaml içinde tanımlamanıza olanak tanır. Böylece, bu yaygın senaryolar için birçok yama oluşturmanız gerekmez.

Bu teknik, genellikle bir şablonun belirli bir örneğini oluşturmak için kullanılır. Artık yalnızca adı ve ad alanını değiştirerek tek bir temel kaynak grubunu birden fazla uygulamada kullanabilirsiniz.

Bu örnekte, bir ad alanı ve ad öneki ekleyip kustomization.yaml öğenize bazı etiketler ekleyeceksiniz.

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

Aşağıdaki komutları kopyalayıp terminalinizde çalıştırı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ütün.

Bu noktada derlemenin yürütülmesi, ortaya çıkan YAML dosyasının artık hem hizmet hem de dağıtım tanımlarında ad alanını, etiketleri ve önekli adları içerdiğini gösterir.

kustomize build chat-app/base

Çıktının, dağıtım YAML dosyasında bulunmayan etiketler ve ad alanları içerdiğine dikkat edin. Adın chat-app yerine my-chat-app olarak değiştirildiğini de unutmayın.

(Çıkışı kopyalamayın)

kind: Deployment

metadata:

labels:

`app: my-app`

name: my-chat-app

namespace: my-namespace

5. Daha büyük YAML yapılarını yamalama

Kustomize, temel kaynakların üzerine yerleştirilen yamaları uygulama olanağı da 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 aşama 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ı 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 kapsayıcı resim adını içermediğini unutmayın. 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.

Temel kustomization.yaml dosyasını yeniden yazın, ad alanını ve ad önekini kaldırın. Bu dosya, varyasyon içermeyen temel yapılandırmadır. Bu alanlar kısa süre içinde ortam dosyalarına taşınır.

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ı uygulayın

Şimdi de terminalinizde aşağıdaki komutları çalıştırarak geliştirme ve üretim için varyasyonları 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ğini unutmayın. Bu, Kustomize'ın bu dosyaları temel kaynakların üzerine yerleştirmesi gerektiğini gösterir.

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

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 dosyaları yamalamak için kustomize işlemini yürütebilirsiniz.

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

kustomize build chat-app/dev

Çıktıda, temel ve geliştirme yapılandırmalarındaki etiketlerin yanı sıra temel klasördeki kapsayıcı resmi adı ve geliştirme klasörlerindeki ortam değişkeni gibi birleştirilmiş sonuçlar yer alır.

6. Birden fazla yer paylaşımı katmanı kullanma

Birçok kuruluşta uygulama ekiplerini desteklemeye ve platformu yönetmeye yardımcı olan bir ekip bulunur. Bu ekipler genellikle tüm ortamlardaki tüm uygulamalara dahil edilecek belirli ayrıntıları (ör. günlük kaydı aracısı) eklemek ister.

Bu örnekte, tüm uygulamaların dahil edeceği ve hangi ortamda dağıtıldıklarından bağımsız olarak kullanılacak bir shared-kustomize klasörü ve kaynakları oluşturacaksınız.

  1. shared-kustomize klasörünü 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 dosyası oluşturun.

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

bases:

- deployment.yaml

EOF

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

shared-kustomize klasörünün tüm uygulamalarınız için temel olmasını istediğinizden chat-app/base/kustomization.yaml öğenizi, temel olarak shared-kustomize öğesini kullanacak şekilde güncellemeniz gerekir. Ardından, kendi deployment.yaml dosyasını üzerine yamalar. Ardından, ortam klasörleri tekrar yamalanır.

Aşağıdaki komutları kopyalayıp terminalinizde çalıştırın.

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

bases:

- ../../shared-kustomize

commonLabels:

app: chat-app

patches:

- deployment.yaml

EOF

  1. Kustomize'ı çalıştırın ve geliştirme için birleştirilmiş sonuçları görüntüleyin.

kustomize build chat-app/dev

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

(output do not copy)

<pre>

`containers:`

      `- env:`

        `- name: ENVIRONMENT`

          `value: dev`

        `name: chat-app`

      `- image: image`

        `name: app`

      `- image: logging-agent-image`

        `name: logging-agent`

</pre>