© 2024 HAFİF BİLGİLER. Created for free using WordPress and Kubio
Bu konu başlığı altında Nginx Ingress Controller hakkında kısa bilgi verilecektir.
Kubernetes üzerinde pod içerisinde container olarak çalışan ve istek kabul eden bir uygulamamız var ise bu uygulamaya bazı durumlarda dışarıdan erişmemiz gerekebilir. Böyle durumlarda Ngınx Ingress Controller yardımımıza koşacaktır. Ngınx Ingress Controller ile mevcut ortamlarımızda bulunan servislere Ingress nesnesi ile erişmemiz sağlayan yapıdır. Bizler Ingress Controller ile Ingress üzerinden yazacağımız kurallar ile uygulalamıza bağlı bulunan servis üzerinden load balancer yapısı ile erişebiliriz. Nginx Ingress Controller(IC) sadece bir pod üzerinde çalışmaktadır. IC bünyesinde yani pod içerisinde bulunan container içerisinde IC Proccess(Nginx ingres ve diğer kaynaklara göre yapılandırır.),Nginx Master Proccess, (Nginx worker proccessin kontrolünü sağlayan yapıdır).Nginx Worker Proccess(Gelen istekleri alır ve service bağlı uygulamalar için loadbalancer yapılmasını sağlar.) Ayrıca bu linkten gerekli bilgileri alabilir ve istek akış şemasını takip edebilirsiniz.
Ayrıca nginx inress controller üzerinden servsilerimize gelen istekleri yönlendirmek üzere Ingress nesnesi tanımlamız gerekir. Bu tanım ile gelen isteklerin nasıl yönlendirileceği ve hangi pathe hangi kurallar ile gideceğini belirleyebiliriz. Ayrıaca Ingress nesnesi tanımladıktan sonra gelen isteklerin nasıl işleneceğine dair bilgiyi aşağıdaki görselde bulabilirsiniz.
Yapacağımız IC(Ingress Controller) kurulumu daemonset olarak çalışacak şekilde kurulacaktır. Bu sayade IC için servis oluşturulmasına gerek kalmadan her worker node üzerinde ingress controller podunun yüklenmesi sağlanacak olup 80 ve 443 portuna gelen istekler otomatik IC podu tarafından karşılanacaktır. Ayrıca kurulum her bir nesnenin oluşturulması şeklinde yapıalacaktır. Daha fazla bilgiyi bu link üzerinden alabilirsiniz.
Adım1:
IC Reposu ilgili sunucuya indirilir ve klasör içerisine girilir.
git clone https://github.com/nginxinc/kubernetes-ingress/
cd kubernetes-ingress/deployments
Adım2:
IC için nesler aşağıdaki adımlar ile oluşturulur.
NameSpace ve service account nesneleri oluşturulur.
kubectl apply -f common/ns-and-sa.yaml
Service Account CR ve CRB nesneleri oluşturulur.
kubectl apply -f rbac/rbac.yaml
kubectl apply -f rbac/ap-rbac.yaml
Ortak nesnelerin oluşturulması sağlanır. Bu nesneler, TLS için secret, configurasyon için ConfigMap ve Ingress Sınıfından oluşmaktadır. Eğer Ingress Class oluşturulmaz ise IC podu hata alacaktır.
kubectl apply -f common/default-server-secret.yaml
kubectl apply -f common/nginx-config.yaml
kubectl apply -f common/ingress-class.yaml
Virtual Server, Virtual Server Route, Transport Server ve Policy nesneleri için CRD(Custom Resource Definition) nesnesi oluşturulur. Ayrıca devamında TCP, UDP loadbalancer ve App Protect(İstege bağlı) modülleri için nesneler oluşturulur.
kubectl apply -f common/crds/k8s.nginx.org_virtualservers.yaml
kubectl apply -f common/crds/k8s.nginx.org_virtualserverroutes.yaml
kubectl apply -f common/crds/k8s.nginx.org_transportservers.yaml
kubectl apply -f common/crds/k8s.nginx.org_policies.yaml
kubectl apply -f common/crds/k8s.nginx.org_globalconfigurations.yaml
kubectl apply -f common/crds/appprotect.f5.com_aplogconfs.yaml
kubectl apply -f common/crds/appprotect.f5.com_appolicies.yaml
kubectl apply -f common/crds/appprotect.f5.com_apusersigs.yaml
Ingress Controller için DaemonSet nesnesi oluşturulur. Ve aşağıdaki şekilde kontrol edilir, eğer deployment olarak oluşturulacak ise buna bağlı şekilde çalışacak servis nesnesinin oluşturulması gerekir. Detaylı bilgiye bu linkten ulaşabilirsiniz.
kubectl apply -f daemon-set/nginx-ingress.yaml
kubectl get pods --namespace=nginx-ingress
Adım3:
Aşağıdaki şekilde test uygulaması oluşturalım ve gerekli denemeleri yapalım.
kubectl create deployment demo-app --image=httpd --port=80
kubectl expose deployment demo-app
kubectl create ingress demo-app --class=nginx --rule=demo-app.<your_api address>.nip.io/*=demo:80
Şimdi ingress için tanımladığımız adress ile kendi tarayıcımızdan istek atalım. Ve sonuca bakalım. Eğer başarılı bir şekilde çalışıyor ise “It Works” yazısını göreceğiz.
kubectl get ing
Şimdi browser üzerinden test edelim.
Görüldüğü üzere ingress başarılı bir şekilde çalışmakta.
CATEGORIES:
Tags:
© 2024 HAFİF BİLGİLER. Created for free using WordPress and Kubio
No responses yet