AzureDevOpsGenel

Kubernetes’de SSL-TLS Implementasyonu

Merhaba,
Kubernetes üzerinde çalışan container uygulamalarınıza https ile erişim sağlayabilmek için hazırladığım yönergeleri aşağıdan takip ederek uygulayabilirsiniz.

-Deployment yaml ve Dockerfile dosyalarını Github’dan clonelayabilirsiniz.
https://github.com/onuromertunc/payment

-Ben CI için Azure Devops kullanacağım. Ve Az-Devops repo’suna cloneladım.

Dockerfile build-push taski ile bir container image oluşturdum ve kendi dockerhub repo’ma pushladım.

-Kubernetes console’da payment isimli bir namespace oluşturalım.

ingress.yaml dosyasını create edelim. (nginx ingress kullandım kurulum için)
https://onuromertunc.com/kubernetes-metallb-ingress-kurulum-ve-konfigurasyonu/

-deployment.yaml dosyasını kubectl create -f deployment.yaml komutu ile create edelim.
LoadBalancer tipinde bir service oluşacaktır. Ve podlar, app:payment key value selectorü ile payment service ile match olacaktır. Bu servis ön tarafında yer alan ve yukarıda create ettiğimiz ingress ile match olacaktır. Bizde tarayıcı üzerinden erişim sağlayabileceğiz.

Not: payment.com ile erişim için lütfen C:\Windows\System32\drivers\etc\hosts dosyanıza lb ip adresi ve dns adını eklemeyi unutmayın.

kubectl get all -n payment

-payment.com yazarak uygulamaya erişim sağlayabiliriz. Şu an Not Secure uyarısı veriyor.

-Aşağıdaki komut ile self-signed certificate ve private key oluşturuyoruz.

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=payment.com"


-Kubernetes üzerinde tls.crt vet tls.key dosyalarını içeren bir secret oluşturuyoruz.

kubectl create secret tls payment.com --key tls.key --cert tls.crt

kubectl describe secret payment.com -n payment

-ingress.yaml file üzerinde aşağıdaki eklemeleri yaptık. Ve 443 portu otomatik olarak geldi

-https://payment.com ile giriş yapıyoruz ve test ediyoruz. Self-Signed certified olduğu için üzeri çizgili hata vermesi normal

-curl -k https://payment.com komutu ile cluster dışından erişim mevcut.