Keycloak on Kubernetes
bu yazımda sektörde çokça tercih edilen opensource IAM çözümü olan keycloak ı kubernetes nasıl yükleneceğini anlattım.

Keycloak nedir?
keycloak, opensource bir Identity and Access Management (IAM) aracı. kullanıcıların ve uygulamaların güvenli bir şekilde authentication ve authorization yapmasını sağlıyor.
Postgresql Configuration
keycloak ı kurmadan önce keycloak ın database olarak kullandığı postgresql için tanımlamalarımızı yapacağız.
işlemler için kullanılacak manfiestleri github repoma koydum oradan ilerleyeceğiz. repoyu clonelayalım.
git clone https://github.com/alperen-selcuk/keycloak-kubernetes.git
keycloak adında namespace create edelim.
kubectl create ns keycloak
daha sonrauser password için bir secret create edelim.
kubectl create secret generic keycloak-db-secret --from-literal=username="your-db-user" --from-literal=password="your-db-password" -n keycloak
daha sonra repo içindeki dosyayı apply edelim.
kubectl apply -f keycloak-kubernetes/db/.

postgrenin ayağa kaltıgını görelim.

şimdi surada keycloak operator kurmakta.
Keycloak Operator
operatoru manifestlerle kuracağız. benim yüklediğim 24.0.2 daha güncel versiyonu da vardır muhtemelen sitesine bakabilirsiniz.
kubectl apply -f https://raw.githubusercontent.com/keycloak/keycloak-k8s-resources/24.0.2/kubernetes/keycloaks.k8s.keycloak.org-v1.yml
kubectl apply -f https://raw.githubusercontent.com/keycloak/keycloak-k8s-resources/24.0.2/kubernetes/keycloakrealmimports.k8s.keycloak.org-v1.yml
kubectl apply -f https://raw.githubusercontent.com/keycloak/keycloak-k8s-resources/24.0.2/kubernetes/kubernetes.yml
CRD ler içinde keycloak gelmiş mi kontrol edelim.

şimdi keycloak kuralım.
Keycloak Installation
eper bir crt ve key iniz varsa keycloakda kullanmak için public domainde kullandığınız onu kullanabilirsiniz. yoksa self signed da yapabilirsiniz.
selfsigned devam edeceğim basitçe olması adına,
openssl req -subj '/CN=keycloak.alperen.com/O=Test Keycloak./C=TR' -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem
ardından bu sertifika ve key i secret olarak ekleyeceğiz.
kubectl create secret tls keycloak-tls --cert certificate.pem --key key.pem -n keycloak

son olarak postgreye bağlanması için aynı user ve secret ile bu sefer keycloak ın kullanacağı bir secret oluşturuyoruz.
kubectl create secret generic keycloak-secret --from-literal=username="your-db-user" --from-literal=password="your-db-password" -n keycloak
bu adımlardan sonra artık repodaki keycloak Kind ile olan yaml i deploy edebiliriz.

bütün podlar Running. artık keycloak a giriş yapabiliriz.
Keycloak a erişmek için service objesini NodePort ya da Loadbalancer yapmamız gerekiyor. patchleyerek yapabiliriz.
kubectl patch service keycloak-service -n keycloak -p '{"spec": {"type": "LoadBalancer"}}'
loadbalancer ın aldığı IP ya da nodeport yaptıysanız Node IP sini host dosyama bu sertifikada verdiğim domain olarak gireceğim. ben AKS kullandığımdan Azure benim loadbalancera IP verecek.

artık keycloak arayüzüne erişebilirim.
work like a charm.

bir sonraki yazımda görüşmek üzere.
h.a.s.