Katenary uygulaması, elinizde bulunan bir "docker-compose" dosyasını Helm Chart'a çevirip, Helm Kubernetes paket yöneticisi ile kurulabilmesini sağlar. Katenary uygulaması açık kaynak kodlu bir uygulama olup golang dili ile yazılmıştır.
Katenary kurulumu
Basitçe Katenary kurmak için aşağıdaki komutu çalıştırmanız yeterlidir. Uygulamayı kullanabilmek için Kubernetes ortamına gereksinim yoktur.
sh <(curl -sSL https://raw.githubusercontent.com/metal3d/katenary/master/install.sh)
docker-compose'u Helm'e çevirme
Elinizde bir docker-compose.yml dosyası olduğunu varsayarsak tek bir komut ile ilgili docker-compose dosyası Helm yapısına dönüşmektedir.
katenary convert -c docker-compose.yml -o ./charts
Yukarıdaki komut ile docker-compose.yml bulunan dizinde charts isminde bir klasör oluşturarak içeriğinde loglarda görülebileceği gibi servis ve deployment yapılandırmalarını içermektedir. İlgili komutu çalıştırdığınızda aşağıdaki gibi olumlu bir çıktı olmasını beklemekteyiz.
Do you really want to continue? [y/N]: y
📦 Generating deployment for ornekuygulama
📦 Generating deployment for redis
⚡ Generate volume values core for container named ornekuygulama in deployment ornekuygulama
⚡ Generate volume values certs for container named ornekuygulama in deployment ornekuygulama
📦 Generating deployment for db
🔌 Generating service for ornekuygulama
📦 Generating deployment for ornekiki
⚡ Generate volume values db for container named db in deployment db
🔌 Generating service for db
Bu şekilde olumlu olmayan durumlarda çeşitli docker-compose yapılandırma ayarının eksik olduğu gibi bilgiler dönerek sizi ilgili bilgileri doldurmanızı teşvik etmektedir.
Helm chart klasörü içeriği
Bu şekilde oluşan klasör içerisinde "Chart.yaml" ve "values.yaml" dosyası ve "templates" klasörü bulunmaktadır.
templates klasörü içerisinde servis, pvc ve deployment yapılandırma ayarları bulunmaktadır. Kubernetes üzerinde sistemin ayağa kalkması için önemli dosyalardır.
Chart.yaml dosyası içerisinde, Helm Chart paketi için temel bazı içerikler otomatik oluşmaktadır ve yaklaşık olarak aşağıdaki gibidir:
# Katenary command line: katenary convert -c docker-compose.yml -o ./charts
apiVersion: v2
appVersion: 0.0.1
description: A helm chart for ornekuygulama
name: ornekuygulama
type: application
version: 0.1.0
values.yaml dosyası içerisinde, kubernetes ortamı ayağa kalkarken gerekli olan değişkenleri tutmaktadır. Bunlar servis ve deploymenlar için; hem ortam değişkenleri, hem repository ve imaj bilgileri, hem dosya storage bilgileri olabilmektedir.
Helm Chart dosyası oluşturma
Helm Chart klasöründen dosya oluşturabilmek için Chart.yaml dosyasının olduğu yerde aşağıdaki komut ile bir kontrol yapılabilir. Bunun için öncelikle Helm'in de yüklü olması gerekmektedir. Bu durum için Kubernetes ortamı kurulu olması gerekmemekte, sadece Helm yüklü olması yeterlidir.
helm lint
Bu komutla temel düzeyde bir paket kontrolü sağlanmaktadır. Örneğin bu komut ile ikon bilgisinin eksik olduğunu aşağıdaki şekilde dönerek, sorun olmadığını belirtmektedir.
==> Linting .
[INFO] Chart.yaml: icon is recommended
1 chart(s) linted, 0 chart(s) failed
Sonrasında bir üst dizine (Chart.yaml'ın bulunduğu dizinin üst dizini) yani klasörün olduğu dizine çıkarak helm package komutu uygulanabilir.
cd ../
helm package ornekuygulama
Bu adım sonrasında aşağıdaki gibi Helm Chart oluşmaktadır.
Successfully packaged chart and saved it to: /PATH/charts/ornekuygulama-0.1.0.tgz
Elle Helm Chart kurulumu
Oluşan dosya Kubernetes ortamına entegre helm yapısı üzerinde aşağıdaki gibi kurulabilmektedir.
helm install releaseismi ornekuygulama-0.1.0.tgz
Helm kurulumu sonrası aşağıdaki gibi bir çıktı beklemekteyiz.
NAME: releaseismi
LAST DEPLOYED: Sun May X 14:05:07 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Congratulations,
Your application is now deployed. This may take a while to be up and responding.
"Başkalarının yaptıklarına söylediklerine ve düşündüklerine aldırış etmeyen, sadece iyi bir insan olmak için kendi yaptıklarıyla ilgilenen bir insan ne çok zaman kazanır."
Marcus Aurelius - Kendime...