DEV Community

Ali Orhun Akkirman for Açıklab

Posted on

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

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

Top comments (0)