Huawei Cloud Kubernetes ve CI/CD Süreçleri

Yazılım

Huawei Cloud Kubernetes ve CI/CD Süreçleri

Huawei Cloud Kubernetes ve CI/CD Süreçleri

Bu yazımızda, Huawei Cloud altyapısını kullanarak Kubernetes (CCE) kurulumunu ve CI/CD süreçlerini tecrübe edeceğiz. Basit bir web uygulaması üzerinden uzun bir yolculuğa çıkıyor olacağız. İşe koyulmadan önce, yapacaklarımıza bir göz atalım.

  • Proje oluşturma: İlk adım olarak, basit bir web projesi oluşturacağız. Bu projeyi dockerize edip, Kubernetes Cluster’ına deploy edeceğiz.
  • CI/CD adımları: Kodumuzda bir değişiklik yapıldığında otomatik olarak tetiklenen ve Kubernetes’e yeni podumuzu gönderen bir CI/CD süreci oluşturacağız. Bu süreçte her build edildiğinde gelen son imajı çekeceğiz. İmajlarımızı SWR’de (Huawei Cloud’un kendi Container Registry hizmeti) tutuyor olacağız.
  • Service ve Pod bağlantısı: Çektiğimiz imajı, bir pod ve service ile bağlantılı hale getireceğiz.
  • Ingress ve Cloudflare: Son olarak, Ingress ile bu servisi dış dünyaya açacak ve Cloudflare üzerinden erişilebilir hale getireceğiz.

Kubernetes Cluster Kurulumu CCE (Cloud Container Engine)

Huawei Cloud Console’ da bir K8s Cluster’ ı kurmak için, arama kısmına CCE yazarak erişebiliriz. Daha sonrasında Buy Cluster diyerek ilerleyelim.

1 buy cluster

Bizi bekleyen iki ayrı Cluster mevcut bunlar şu şekilde:

  • CCE Standard Cluster
  • CCE Turbo Cluster

Eğer daha performanslı bir Cluster istiyorsak bizim için ideal seçim Turbo Cluster olacaktır. Fiyat bakımından herhangi bir fark bulunmuyor. Bu yüzden Turbo Cluster ile kuruluma devam ediyoruz.

Aşağıdaki şekilde kurarak ilerliyoruz. Pay-per-use (kullandığın kadar öde) seçeneğiyle kurmamız fiyat bakımından daha uygun olacaktır.

2 cluster

3 cluster

Dilersek Cluster içerisine bazı eklentiler de kurabiliriz. Kurulum bittikten sonra Cluster içerisindeki eklentiler kısmından Ingress kurulumuna aşağıdaki adımlarda tekrardan bakıyor olacağız.

4 cluster

Cluster kuruluyor…

5 cluster

Cluster kuruldu ve çalışıyor.

6 clusterKubernetes Cluster’ a Bağlanmak

Cluster çalışabilir durumda olduğuna göre içerisine erişebilir durumdayız artık. Overview sekmesinden Connection Info bölümüne gelerek kubectl Configure tıklayarak kubeconfig dosyamızı alabilir ve işleyebiliriz. Bunun öncesinde Cluster’ a public şekilde erişebilmek için öncesinde EIP Bind etmemiz gerekli.

7 cluster connection info8 cluster connection bind

Kubeconfig dosyamızı alıp Cluster’ a bağlanalım. Mevcuttaki kubeconfig dosyamı ezmemesi için kubeconfig dosyasını değişken olarak içeriye alıyorum.

9 kubeconfig

Bind ettiğimiz IP ile externalCluster a erişebilir durumdayız. Kubectl komutuyla tüm podlara bakmaya çalıştığımızda, hepsini pending durumda görüyoruz. Çünkü henüz node oluşturulmadı. Şimdi de mevcut Kubernetes Cluster’ ımız için node oluşturalım. Cluster içindeki Cluster sekmesi altından Nodes diyerek Create Node Pool kısmından ilerleyebiliriz.

10 cluster node

10 cluster node 2

 

node oluştu ve podlarımız running duruma geçmeye başladı.

11 cluster pods running

pod ve nodeların kontrolü için

kubectl get pods -A

kubectl top pods -A

kubectl get nodes

kubectl top nodes

Cluster tarafı şimdilik bu kadar. Buraya daha sonrasında deploy-service-ingress adımları için tekrar göz atıyor olacağız.

SWR Kurulumu (SowtWare Repository for Container)

SWR içerisinde build aldığımız web uygulamasının imajlarını tutuyor olacağız. Deploy adımında da bu imajları çekiyor olacağız.

Yine arama kısmından, SWR şeklinde aratarak buraya erişebiliriz.12 swr

Daha sonrasında Create Organization diyerek imagelarımızı depolayacağımız bir organizasyon oluşturuyoruz.13 swr organization

Bu organizasyonu daha sonrasında build adımında seçiyor olacağız.

Eğer Docker’ a login olmak istersek, sağ üstteki generate login command butonundan faydalanabiliriz.

CodeArts

CodeArts içerisinde repositorylerimizi tutuyor olacağız. Bu repository daha sonrasında pipeline sürecine dahil olacak. Bunu da CodeArts ın içerisindeki teknolojilerden faydalanarak yapıyor olacağız. CodeArts içerisinde kendi repositorylerimizi oluşturabiliriz veya Github üzerindeki projemizi de içeriye aktarabiliriz.

Bu örnekte, projeyi Github üzerinden çekip, sonrasında işlemlerimize CodeArts üzerinden devam ediyor olacağız. Commit ve Push CodeArts üzerinden gönderilecek.

CodeArts Proje Bağlamak

Console’ dan yine CodeArts’ ı aratarak CodeArts Console’ a erişebiliriz. Burada CodeArts kurulumu yaptıktan sonra Access Service diyerek ilerleyebiliriz.

Create Project diyerek ilerleyelim.14 codearts

New diyerek boş bir proje oluşturup, projemizi isimlendirelim.

Sample seçeneğinde ise build ve deploy örneklerle birlikte geliyor.

15 codearts scrum

16 codearts main

Artık Github üzerinden projemizi içeriye aktarabiliriz. Yukarıdaki görsele göre, Code -> Repo -> Create Repository diyerek ilerleyebiliriz.17 codearts gh

Import adımından sonra, Github linkini içe aktarabilir ve projemizi görüntüleyebiliriz.

18 codearts app

Bu şekilde de projemizi Github ile içeri aktarmış olduk.

CI/CD Pipeline Süreci

Şimdi de Pipeline sürecine göz atalım. Yapacağımız işlemler CI/CD sekmesinden olacak. Sırasıyla aşağıdaki şekilde ilerleyelim.

Build aşaması

CI/CD > Build > Create Task diyerek bir task oluşturalım.

19 build task

Kaynak olarak içe aktardığımız repository’ i seçerek devam ediyoruz. Daha sonrasında Blank Template oluşturup devam edelim. Sonrasında gelen ekranda Add Build Actions diyerek ilerleyelim ve swr şeklinde arattığımızda Build Image and Push to SWR i seçelim. Bu şekilde oluşturmuş olduğumuz organizasyonu (home-swr) bu build içerisine bağlıyor olacağız.

20 build swr

21 swr config

Image Tag olarak SWR tarafına latest göndereceğiz. Deploy adımında ise yine latest imajını çekiyor olacağız.

İçe aktarmış olduğumuz projede devops klasöründe Dockerfile Deploy ve Service dosyaları mevcut. Build ve Deploy adımları için bu dosyalar gerekli. Projeye buradan erişebilirsiniz. Daha sonrasında build adımını Create diyerek oluşturabiliriz.

Deploy aşaması

22 web deploy

Kubernetes Manifest Deployment for CCE adımını seçip ilerliyoruz.

23 web k8s

Cluster ayarlarında ise repository ve manifest dosyamızın yolunu giriyoruz. Ek olarak, cluster ve namespace seçimini yapıp ilerliyoruz.

24 web deploy manifest

Pipeline adımlarını tanımlamak

Aynı şekilde şimdi de Pipeline sekmesine girip Create Pipeline diyerek, repomuzu seçip ilerliyoruz.

Daha sonrasında job ekleyip build ve deploy adımlarını çağırıyor olacağız.

25 pipeline

Stage_1 adımı için + Job diyerek ilerleyelim. Bu bizim Build adımımız olacak. Add diyerek devam edelim.

26 build stage

Oluşturmuş olduğumuz task ı build için seçiyoruz.

27 build job

Build adımımız tamamlandı. Şimdi de Deploy adımına göz atalım. Yine aynı işlemleri yapacağız fakat bu sefer, Job olarak Deploy seçeceğiz ve task olarak oluşturduğumuz buildi ekleyeceğiz.

28 build deploy

Deploy adımımız da tamamlandığına göre artık pipeline hazır durumda. Save diyerek işlemlerimize devam edelim. Pipeline sekmesine gelerek pipelineımızı artık çalıştırabilir durumdayız.

29 run pipeline

30 running pipeline

31 success pipeline

Pipeline başarıyla çalıştı. Şimdi Cluster ve SWR tarafını kontrol edelim.

32 pods

33 swr image

Cluster ve SWR tarafına da yayınlayabildiğimize göre şimdi de kodumuzda değişiklik olduğunda, pipeline otomatik olarak tetiklensin.

Pipeline Otomatik Tetikleme

Pipeline ayarlarına girip -> Execution Plan Code commit seçeneğini seçip devam edelim. Kaydedip kodumuzda değişiklik yaparsak pipeline bu sefer otomatik olarak tetiklenecek.

34 pipeline commit

Kubernetes Deploy-Service-Ingress

Uygulamamızı da Kubernetes Cluster’ ına gönderebildiğimize göre artık service ve ingress adımlarına göz atabiliriz. Bunlara bakmadan önce proje içerisinden seçtiğimiz deploy dosyasından da bahsedelim. Bu deploy.yaml dosyasıyla uygulamamızı k8s tarafına deploy edebilidik.

  • K8s pod ve service bağlantısı

Uygulamamızı ingress altında çalıştırmadan önce podumuzu bir service ile bağlayalım. svc.yaml dosyasına da buradan erişebilirsiniz.

35 svc

Oluşturduğumuz service ClusterIP şeklinde çalışıyor olacak. Daha sonra oluşturmuş olduğumuz Ingress altında bu service çalışacak.

  • Ingress kurulumu

Ingress kurulumu için manuel kurulum da yapabiliriz fakat Huawei Cloud panelinde eklentiler kısmından otomatik olarak ekleme yapabiliriz. Console üzerinden oluşturmuş olduğumuz CCE içerisine girelim. Cluster sekmesi altından Add-ons içerisine girip NGINX Ingress Controller yüklemesini yapalım.

36 ingress

Ingress için bir Load Balancer oluşturup devam ediyoruz.

37 ingress install

38 ingress ip 1

Public Ingress IP adresine artık sahibiz. Projemizdeki ingress dosyasını kubernetes içerisinde apply ederek devam edelim. Daha sonrasında yönlendirdiğimiz domain için Cloudflare da tanımlama yapalım ve Ingress IP adresini de Cloudflare’ a tanımlayalım.

41 ingress def

Cloudflare

Ingress kurulumumuzu ve k8s tarafında ayarlarımızı da tamamladığımıza göre artık Cloudflare ile bağlantımızı sağlayabiliriz.

Cloudflare proje oluşturma39 cloudflare

Domain adresimizi girip, Continue seçeneği ile ilerleyelim.

Cloudflare nameserver değerlerinin domain sağlayıcısında kayıtlı olması gerekli.

40 cloudflare dns 1

Diğer adımları da tamamlayarak ilerleyelim.

Web sitemiz artık yayında.

42 last 1

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Fill out this field
Fill out this field
Lütfen geçerli bir e-posta adresi yazın.

Yeni
Sosyal Medya
Instagram
YouTube
Instagram
YouTube
Bu yazıyı beğendin mi? Arkadaşlarınla paylaş!
Benzer İçerikler: