• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Jaranguda

Belajar Mengajar

  • Home
  • Sponsor/Jasa
  • Tentang

Membuka Akses ke Kubernetes dengan Ingress

Last Updated on 22 August 2021 By tommy Leave a Comment

Setelah selesai deploy aplikasi di Kubernetes, pertanyaan selanjutnya bagaimana cara untuk mengakses kubernetes dari Internet. Kubernetes punya fitur yang bernama Ingress, yang digunakan untuk mengelola akses dari luar ke dalam cluster, baik untuk load balancing ataupun SSL termination.

– helm
– kubectl
– kubernetes 1.20+

Disini akan dibahas cara mengakses Elasticsearch dan Kibana dari luar Kubernetes atau bisa dibilang internet, agar bisa diakses oleh semua orang. Cara install Elasticsearch dan kibana, sudah pernah dibahas sebelumnya.

1. Nginx Ingress

nginx disini digunakan sebagai reverse proxy. ingress-nginx ini dikelola oleh komunitas kubernetes berbeda dengan ingress yang dikelola oleh Nginx Inc.

Tambahkan repo ingress-nginx dengan menjalankan

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
# update repo
helm repo update

install ingress-nginx dengan helm chart

helm install ingress-nginx ingress-nginx/ingress-nginx

Public IP yang akan didapat disini, bergantung dari tempat anda menginstall Kubernetes, baik GKE, AWS EKS dan lain sebagainya.
Lihat IP Public

kubectl --namespace default get services -w ingress-nginx-controller

Public IP ini yang akan digunakan di DNS.

public ip load balancer kubernetes

Dari contoh sebelumnya kita menggunakan dua services
1. elasticsearch port 9200
2. kibana port 5601
masing-masing domain menggunakan subdomain sesuai dengan nama servicenya. Maka buat deployment untuk ingress seperti dibawah ini nginx-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - host: elastic.cluster.jaranguda.com
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: elasticsearch
            port:
              number: 9200
  - host: kibana.cluster.jaranguda.com
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: kibana
            port:
              number: 5601

deploy dengan

kubectl apply -f nginx-ingress.yaml

Cek status deployment

kubectl get ingress
# contoh output
nginx-ingress   <none>   elastic.cluster.jaranguda.com,kibana.cluster.jaranguda.com   172.104.xx.xx   80, 443   22h

2. Setting DNS

Karena kita menggunakan subdomain untuk tiap service yang ingin di expose ke Internet, maka kita harus membuat wildcard untuk dns, pada contoh diatas adalah

*.cluster.jaranguda.com IN A 172.104.xx.xx

setting dns wildcard

dns propagation (perubahan dns dikenali) ini bisa berlangsung sampai satu jam, tergantung dari DNS Provider yang anda gunakan. Disini saya menggunkaan Cloudflare, propagation berlangsung setelah kurang lebih 2 menit.

3. Setting SSL

Tahap ini opsional, disini kita tidak menggunakan cert-manager yang banyak digunakan oleh admin Kubernetes. Tetapi menggunakan

Generate wildcard SSL dengan acme.sh

acme.sh --issue -d cluster.jaranguda.com -d *.cluster.jaranguda.com --dns dns_cf

untuk mendapatkan tls.crt base64 dalam satu baris

# tls.key
cat  ~/.acme.sh/cluster.jaranguda.com/cluster.jaranguda.com.key | base64 -w0
# tls.crt
cat  ~/.acme.sh/cluster.jaranguda.com/fullchain.cer | base64 -w0

copy output dari perintah diatas, disesuaikan dengan data dibawah ini, ingat harus dalam satu baris
buat file jaranguda-ssl.yaml yang berisi

apiVersion: v1
kind: Secret
metadata:
  name: jaranguda-tls
  namespace: default
data:
  tls.crt: (base64 satu baris) 
  tls.key: (base64 satu baris)
type: kubernetes.io/tls

deploy dengan

kubectl apply -f jaranguda-ssl.yaml

terakhir ubah deployment ingress-nginx menjadi

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  tls:
  - hosts:
      - elastic.cluster.jaranguda.com
      - kibana.cluster.jaranguda.com
    secretName: jaranguda-tls
  rules:
  - host: elastic.cluster.jaranguda.com
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: elasticsearch
            port:
              number: 9200
  - host: kibana.cluster.jaranguda.com
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: kibana
            port:
              number: 5601

aplikasikan perubahan tersebut dengan

kubectl apply -f nginx-ingress.yaml

lalu akses salah satu domain
kibana kubernetes ssl

selain dari browser, bisa juga ditest dengan curl

curl -s -L  -I  http://kibana.cluster.jaranguda.com

http (port 80) otomatis diarahkan ke https (port 443)
http redirected to https

Tulisan menarik lainnya

  • Convert Markdown ke HTML dengan PHP

    Convert/Konversi dari markdwon ke HTML dengan PHP sangat mudah dengan bantuan library Parsedown. Kita akan…

  • Blok Akses ke Apache Web Server

    Contoh kita akan memblokir akses ke apache dari semua IP kecuali IP yang sudah di…

  • Menampilkan data MySQL ke Table dengan PHP

    Tutorial kali ini adalah cara Menampilkan data MySQL ke Table HTML dengan script PHP. Berikut…

  • Membuka dan Menutup Port dengan iptables di Linux

    Untuk alasan keamanan kita perlu untuk membuka dan menutup port di komputer ataupun server yang…

Filed Under: Linux

Reader Interactions

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Primary Sidebar

Pencarian

Tanya Jawab tentang DevOps SRE CPE, gabung di https://t.me/devopsindonesia

Terbaru

  • Cara Menonaktifkan Pager di macOS
  • Cara Mengupdate Nama Apple silicon-as-a-Service Scaleway
  • Cara Force Delete Namespace di Kubernetes
  • Install PHP MariaDB di Mac Monterey
  • MacOS Minta Install Git

Komentar

  • Ari on Cara Mematikan SSID Molecool Balifiber
  • kiki anarki on Mengambil Data dari Situs BPJS Ketenagakerjaan dengan PHP cURL
  • musgan on Password Router Huawei HG8245H5 Indihome
  • ghabily on Mengambil Informasi Router Alcatel Lucent G-241W-A dengan PHP
  • nea on Mencari urutan angka yang hilang di PHP

Tulisan Populer

  • Password Router Huawei HG8245H5 Indihome 1.1m views
  • Password Terbaru ZTE F609 Indihome 784k views
  • Password Superadmin Huawei HG8245A 314.2k views
  • Cara Setting Manual Modem GPON ZTE F609 Indihome 272.2k views
  • Cara Setting Wireless ZTE F609 Indihome 256.1k views
  • Mengaktifkan Port LAN di Huawei HG8245 Indihome 169.1k views
  • Akses UseeTV Indihome via Wireless ZTE F609 156.5k views
  • Kemana Menghilangnya Saldo BCA 50 ribu 150.3k views
  • Cara Reset Password ZTE F609 Indihome 147.2k views
  • Cara Setting DHCP Server Modem/Router ZTE F609 112.9k views

Kategori

  • Delphi
  • dll
  • Gambas
  • Internet
  • Java
  • Lazarus
  • Linux
  • PHP
  • Review
  • Teknologi

Sponsor

kadal.id
carakami.com
kuotabisa.com
Untuk jadi sponsor, hubungi kita lewat halaman sponsor
© 2021. Jaranguda
  • Linux
  • PHP
  • Internet
  • Teknologi
  • Delphi
  • Gambas
  • Java