Katenary ile docker-compose'u helm chart'a çevirmek

Ali Orhun Akkirman - May 8 '23 - - Dev Community

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)
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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.
Enter fullscreen mode Exit fullscreen mode

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

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .