Lewati ke konten utama

IP Publik untuk Akses ke Aplikasi Kubernetes di Dewacloud

Cert-Manager Installation

Dalam posting ini kami ingin menunjukkan bagaimana mengekspos aplikasi melalui sebuah alamat IP publik yang terhubung ke salah satu node dari lingkungan cluster Kubernetes di Jelastic PaaS. Ini dapat dilakukan dengan dua cara yang mungkin - menghubungkan IP ke Dedicated Load Balancer atau ke node K8s Worker.

Dedicated Load Balancer untuk Akses Aplikasi

1. Pertama-tama, instal cluster Kubernetes dari Jelastic marketplace dan deploy aplikasi. Sebagai contoh, kami akan menggunakan Jakarta EE Cargo Tracker.

2. Klik Change Environment Topology di sebelah cluster Kubernetes Anda. Di jendela yang terbuka, tambahkan node Dedicated Load Balancer dan lampirkan alamat IP publik ke node tersebut.

Public IP for Access to Kubernetes

Di sini kami menggunakan node load balancer NGINX, tetapi Anda bisa memilih yang lain yang tersedia (HAProxy, LS Web ADC, Varnish). Setelah topologi diubah, tampak seperti berikut:

Kubernetes Let's Encrypt Kubernetes Worker IP

3. Setelah itu, buat A record untuk domain kustom menggunakan alamat IP yang ditambahkan pada langkah sebelumnya. Misalnya, cargo-tracker.jele.website.

Kubernetes Ingress

4. Sekarang Anda bisa mengikat domain kustom ke cluster K8s dan mengajukan permintaan untuk menerbitkan sertifikat Let’s Encrypt SSL yang terpercaya untuk mengamankan lalu lintas aplikasi.

  • Pergi ke Add-Ons load balancer dan temukan Let’s Encrypt Free SSL.
public ip on kubernetes load balancer
  • Masukkan nama domain kustom yang sudah kami buat dan terapkan.
Kubernetes Default Application

Sekarang aplikasi Cargo Tracker tersedia menggunakan nama domain kustom https://cargo-tracker.jele.website dan lalu lintas dienkripsi dengan sertifikat Let’s Encrypt SSL yang valid.

Alamat IP Publik Node Pekerja Kubernetes untuk Akses Aplikasi

Mari kita lihat cara lain untuk membuat aplikasi tersedia di luar cluster Kubernetes. Intisari dari metode ini adalah untuk membuatnya dapat diakses langsung melalui alamat IP publik yang terhubung ke salah satu node pekerja.

Kubernetes Custom Domain

Mari kita lanjutkan di cluster yang sama dengan aplikasi Cargo Tracker yang telah di-deploy.

1. Klik Change Environment Topology dan tambahkan alamat IP publik ke node pekerja.

public ip on kubernetes worker

2. Buat A record untuk pemetaan domain kustom ke alamat IP yang baru ditambahkan. Gunakan nama domain berbeda dari yang digunakan pada bab sebelumnya. Misalnya: cargo-tracker-worker.jele.website.

3. Kemudian, pergi ke add-ons dari node Control Plane dan instal Certificate Manager. Bersamaan dengan kontroler cert-manager akan diinstal controller ingress NGINX dengan tipe layanan LoadBalancer. Ini akan menahan IP yang terhubung ke node pekerja, dan akan melayani sumber daya kelas ingress “nginx-cert”.

Kubernetes Dedicated LoadBalancer

4. Masukkan nama domain kustom dan terapkan.

Kubernetes Cluster Topology

5. Setelah instalasi, add-on menginstal aplikasi tes helloworld-cert. Mari kita hapus sumber daya yang digunakan:

$ kubectl delete deploy hello-cert-manager

$ kubectl delete svc hello-cert-manager

$ kubectl delete ing helloworld-cert
Kubernetes Domain Certificate

6. Akhirnya, buat sumber daya ingress cargo-tracker-worker yang akan menghentikan lalu lintas SSL aplikasi dan menangani routing ke layanan cargo-tracker. Misalnya cargo-tracker-worker-ingress.yaml:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cargo-tracker-worker
namespace: default
annotations:
kubernetes.io/ingress.class: nginx-cert
cert-manager.io/cluster-issuer: "letsencrypt-prod"
kubernetes.io/tls-acme: "true"
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/affinity-mode: "persistent"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
spec:
tls:
- hosts:
- cargo-tracker-worker.jele.website
secretName: external-domain-tls
rules:
- host: cargo-tracker-worker.jele.website
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: cargo-tracker
port:
number: 80
$ kubectl apply -f cargo-tracker-worker-ingress.yaml

7. Setelah membuat ingress, sertifikat Let's Encrypt SSL akan diterbitkan secara otomatis untuk nama domain ini dengan Certificate Manager. Tunggu sebentar dan periksa ketersediaan aplikasi dengan nama domain kustom: https://cargo-tracker-worker.jele.website.

Selamat! Anda telah berhasil mengekspos aplikasi Anda dengan dua cara yang berbeda dan oleh karena itu, Anda seharusnya melihat dua ingresses:

  • cargo-tracker - melayani lalu lintas aplikasi yang mengalir melalui alamat IP publik dari load balancer khusus
  • cargo-tracker-worker - melayani lalu lintas aplikasi yang mengalir langsung melalui alamat IP publik yang terhubung ke node pekerja K8s
Kuberenetes Cert-Manager Certificate