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.