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
- Aşağıdaki URL'yi ziyaret ederek Cloud Shell düzenleyicisini açın
https://ide.cloud.google.com
- Terminal penceresinde bu eğitim için bir çalışma dizini oluşturun
mkdir kustomize-lab
- 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.
- 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
- 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
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
- 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.
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
- 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.
- Farklı ortamlar için klasörler oluşturarak başlayın
mkdir -p chat-app/dev
mkdir -p chat-app/prod
- 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
- Ş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.
- 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
- 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.
- Ü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
- 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.
- shared-kustomize klasörü oluşturun
mkdir shared-kustomize
- 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
- Paylaşılan klasörde bir kustomization.yaml oluşturun.
cat <<EOF > shared-kustomize/kustomization.yaml
bases:
- deployment.yaml
EOF
- 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
- 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>