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.
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)
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.
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 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
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...