Kubernetes Ingress ?

halil bozan
3 min readOct 19, 2018

--

Merhabalar bugün sizlere kubernetes üzerinde bir kurallar bütünü olan ingress’den bahsedeceğim. Yani;

Ingress gelen isteklerin servislerimize erişebilmesine izin veren bir kurallar bütünüdür. Aynı zamanda load balance trafiği, virtual hosting, externally-reachable URLs(dışarıdan erişilebilen URL’ler) gibi hizmetleri bize sunmak için yapılandırılabilir.

Ingress Controller

Ingress controller teknik olarak genellikle reverse proxying yapabilen sistemler olabilir. En yaygın olarak kullanılanı nginxdir. AWS ve GKE(google kubernetes engine ) gibi cloud platformlarda yaratmış olduğumuz her kubernetes ingress varlığı farklı bir servis olan load balancer içerisinde yaratılmaktadır. Bu sebeple cloud ortamında ingress controller’dan faydalanmamız gerekir.

Nginx Ingress Controller

Şimdi sizlerle bir projemizdede tecrübe ettiğimiz Nginx Ingress Controller hakkında konuşacağız. Clusterımız içerisindeki trafiğimizi dışarıya yönlendirmek için nginx ingress controllerımızı yapılandıracağız.

Servisimizi Yaratalım…

Dışarıya expose edeceğimiz ve NodePort servis tipi olarak belirttiğimiz uygulamamız için gerekli olan kaynakları yaratalım.

Yukarıda deploy edeceğimiz uygulamamızın servis ve deployment kaynaklarını yaratıyoruz ve ardından dışarıya public edebilmek için ConfigMapimizi belirterek nginx ingress controller oluşturmamız gerekiyor.

Öncelikle bir ConfigMap yaratmamız gerekiyor. Bir configmap yaratırken configmap dosyası içinde komut satırı argümentleri, değişkenler, port bilgileri veya diğer bir çok veri olabilir.

Yukarıda bir nginx configmap oluşturduk.Normal nginx conf dosyamızda yazan location ayarımızı yaml formatında belirttik.

Daha sonra yönetici kullanıcının deployment, namespace veya servislerimiz gibi kaynaklarımıza erişimi ve rolleri için ihtiyacımıza göre ServiceAccount oluşturabiliriz.

Not: Burada uygulamamızın ihtiyacına göre ServiceAccount veya ConfigMap gibi kaynaklarımızı kullanabiliriz.

Şimdi artık nginx için deployment ve servisimizi oluşturma zamanı geldi. Oluşturduğumuz ConfigMap kaynaklarını da deployment tarafında belirtip gerekli container bilgilerini vermeliyiz.

En son uygulamamız için ve nginx tarafı için oluşturduğumuz deployment ve servis dosyalarımızı oluşturacağımız ingress’de belirterek uygulamamızı dışarıya public etmiş olacağız.

Yukarıda var olan servislerimiz için gelen isteklerin nasıl karşılanacağını belirttiğimiz bir ingress kaynağı belirttik. Bu oluşturduğumuz ingress kaynakları ile uygulamamızın trafiğini gerekli path bilgilerini vererek dışarıya yönledirmiş olduk.

Başka bir yazımızda görüşmek dileği ile esenlikle kalın …

KAYNAKÇA

--

--