Difference between revisions of "Minikube: akses apps"

From OnnoWiki
Jump to navigation Jump to search
 
(11 intermediate revisions by the same user not shown)
Line 2: Line 2:
  
  
Accessing apps
 
 
How to access applications running within minikube
 
How to access applications running within minikube
 
There are two major categories of services in Kubernetes:
 
There are two major categories of services in Kubernetes:
 +
 +
Berikut adalah cara mengakses aplikasi yang berjalan di dalam minikube.
 +
Ada dua kategori utama layanan di Kubernetes:
  
 
* NodePort
 
* NodePort
 
* LoadBalancer
 
* LoadBalancer
  
minikube supports either. Read on!
+
minikube mendukung ke dua-nya.
  
 
==NodePort access==
 
==NodePort access==
A NodePort service is the most basic way to get external traffic directly to your service. NodePort, as the name implies, opens a specific port, and any traffic that is sent to this port is forwarded to the service.
 
  
Getting the NodePort using the service command
+
NodePort service adalah cara paling dasar untuk mendapatkan lalu lintas eksternal langsung ke service tersebit. NodePort, seperti namanya, membuka port tertentu, dan lalu lintas apa pun yang dikirim ke port ini diteruskan ke service yang dimaksud.
We also have a shortcut for fetching the minikube IP and a service’s NodePort:
+
 
 +
===Mendapatkan NodePort menggunakan perintah service===
 +
 
 +
Kita memiliki jalan pintas untuk mengambil IP minikube dan NodePort service:
  
 
  minikube service <service-name> --url
 
  minikube service <service-name> --url
  
Using minikube service with tunnel
+
===Menggunakan minikube service dengan tunnel===
The network is limited if using the Docker driver on Darwin, Windows, or WSL, and the Node IP is not reachable directly.
 
  
Running minikube on Linux with the Docker driver will result in no tunnel being created.
+
Jaringan terbatas jika menggunakan driver Docker di Darwin, Windows, atau WSL, dan IP Node tidak dapat dijangkau secara langsung.
 +
Menjalankan minikube di Linux dengan driver Docker tidak akan membuat tunnel.
 +
Service dari NodePort dapat di akses melalui perintah,
  
Services of type NodePort can be exposed via the minikube service <service-name> --url command. It must be run in a separate terminal window to keep the tunnel open. Ctrl-C in the terminal can be used to terminate the process at which time the network routes will be cleaned up.
+
minikube service <service-name> --url  
  
===Example of NodePort===
+
Itu harus dijalankan di window terminal yang terpisah agar tunnel tetap terbuka. Ctrl-C di terminal dapat digunakan untuk menghentikan proses saat rute jaringan akan clean up.
Create a Kubernetes deployment
+
 
 +
===Contoh NodePort===
 +
 
 +
Membuat Kubernetes deployment
  
 
  kubectl create deployment hello-minikube1 --image=kicbase/echo-server:1.0
 
  kubectl create deployment hello-minikube1 --image=kicbase/echo-server:1.0
  
Create a Kubernetes service type NodePort
+
Membuat Kubernetes service type NodePort
  
 
  kubectl expose deployment hello-minikube1 --type=NodePort --port=8080
 
  kubectl expose deployment hello-minikube1 --type=NodePort --port=8080
  
Check Node Port
+
Cek Node Port
  
 
  $ kubectl get svc
 
  $ kubectl get svc
Line 44: Line 52:
  
 
  minikube service hello-minikube1 --url
 
  minikube service hello-minikube1 --url
minikube service hello-minikube1 --url runs as a process, creating a tunnel to the cluster. The command exposes the service directly to any program running on the host operating system.
 
  
service output example
+
minikube service hello-minikube1 --url run sebagai proses, membuat tunnel ke cluster. Perintah tersebut membuka service secara langsung ke program apapun yang jalan di sistem operasi host.
Check ssh tunnel in another terminal
+
 
 +
====contoh service output====
 +
 
 +
Cek ssh tunnel di terminal lain
  
 
  $ ps -ef | grep docker@127.0.0.1
 
  $ ps -ef | grep docker@127.0.0.1
 
  ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -N docker@127.0.0.1 -p 55972 -i /Users/FOO/.minikube/machines/minikube/id_rsa -L TUNNEL_PORT:CLUSTER_IP:TARGET_PORT
 
  ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -N docker@127.0.0.1 -p 55972 -i /Users/FOO/.minikube/machines/minikube/id_rsa -L TUNNEL_PORT:CLUSTER_IP:TARGET_PORT
  
Try in your browser
+
Coba menggunakan browser. Buka di browser pastikan tidak ada proxy yang di set,
 +
 
 +
http://127.0.0.1:TUNNEL_PORT
  
Open in your browser (ensure there is no proxy set)
+
===Mendapatkan NodePort menggunakan kubectl===
  
http://127.0.0.1:TUNNEL_PORT
+
VM minikube diekspos ke sistem host melalui alamat IP host-only, yang dapat diperoleh dengan perintah ip minikube. Semua layanan bertipe NodePort dapat diakses melalui alamat IP tersebut, di NodePort.
 +
Untuk menentukan NodePort untuk layanan kita, kita dapat menggunakan perintah kubectl seperti ini (perhatikan bahwa nodePort dimulai dengan huruf kecil n di keluaran JSON):
  
Getting the NodePort using kubectl
+
kubectl get service <service-name> --output='jsonpath="{.spec.ports[0].nodePort}"'
The minikube VM is exposed to the host system via a host-only IP address, that can be obtained with the minikube ip command. Any services of type NodePort can be accessed over that IP address, on the NodePort.
 
  
To determine the NodePort for your service, you can use a kubectl command like this (note that nodePort begins with lowercase n in JSON output):
+
===Meningkatkan NodePort range===
  
kubectl get service <service-name> --output='jsonpath="{.spec.ports[0].nodePort}"'
+
Secara default, minikube hanya membuka port 30000-32767. Jika ini tidak berhasil, kita dapat menyesuaikan range dengan menggunakan:
Increasing the NodePort range
 
By default, minikube only exposes ports 30000-32767. If this does not work for you, you can adjust the range by using:
 
  
 
  minikube start --extra-config=apiserver.service-node-port-range=1-65535
 
  minikube start --extra-config=apiserver.service-node-port-range=1-65535
  
This flag also accepts a comma separated list of ports and port ranges.
+
Flag ini juga menerima daftar port dan range port yang dipisahkan koma.
  
 
==LoadBalancer access==
 
==LoadBalancer access==
A LoadBalancer service is the standard way to expose a service to the internet. With this method, each service gets its own IP address.
 
  
Using minikube tunnel
+
LoadBalancer service adalah cara standar untuk memexpose service ke internet. Dengan metode ini, setiap service mendapatkan IP address-nya sendiri.
Services of type LoadBalancer can be exposed via the minikube tunnel command. It must be run in a separate terminal window to keep the LoadBalancer running. Ctrl-C in the terminal can be used to terminate the process at which time the network routes will be cleaned up.
+
 
 +
===Menggunakan minikube tunnel===
 +
 
 +
Service bertipe LoadBalancer dapat diakses melalui perintah minikube tunnel. Itu harus dijalankan di window terminal terpisah agar LoadBalancer tetap berjalan. Ctrl-C di terminal dapat digunakan untuk menghentikan proses saat rute jaringan akan di clear up.
  
===Example of LoadBalancer===
+
===Contoh LoadBalancer===
Run the tunnel in a separate terminal
 
  
It will ask for a password.
+
Jalankan tunnel di terminal terpisah
 +
Itu akan meminta password.
  
 
  minikube tunnel
 
  minikube tunnel
  
minikube tunnel runs as a process, creating a network route on the host to the service CIDR of the cluster using the cluster’s IP address as a gateway. The tunnel command exposes the external IP directly to any program running on the host operating system.
+
minikube tunnel berjalan sebagai sebuah proses, membuat rute jaringan pada host ke layanan CIDR cluster menggunakan alamat IP cluster sebagai gateway. Perintah tunnel membuka IP eksternal langsung ke program apa pun yang berjalan di sistem operasi host.
 +
 
  
tunnel output example
+
====contoh tunnel output====
Create a Kubernetes deployment
+
Membuat Kubernetes deployment
  
 
  kubectl create deployment hello-minikube1 --image=kicbase/echo-server:1.0
 
  kubectl create deployment hello-minikube1 --image=kicbase/echo-server:1.0
  
Create a Kubernetes service with type LoadBalancer
+
Membuat Kubernetes service dengan type LoadBalancer
  
 
  kubectl expose deployment hello-minikube1 --type=LoadBalancer --port=8080
 
  kubectl expose deployment hello-minikube1 --type=LoadBalancer --port=8080
  
Check the external IP
+
Cek external IP
  
 
  kubectl get svc
 
  kubectl get svc
Line 102: Line 115:
 
  hello-minikube1  LoadBalancer  10.96.184.178  10.96.184.178  8080:30791/TCP  40s
 
  hello-minikube1  LoadBalancer  10.96.184.178  10.96.184.178  8080:30791/TCP  40s
 
   
 
   
Note that without minikube tunnel, Kubernetes will show the external IP as “pending”.
+
Catatan tanpa minikube tunnel, Kubernetes akan memperlihatkan external IP sebagai “pending”.
  
Try in your browser
+
Coba di Browser. Bukan browser (pastikan tidak ada proxt)
  
Open in your browser (ensure there is no proxy set)
+
http://REPLACE_WITH_EXTERNAL_IP:8080
  
http://REPLACE_WITH_EXTERNAL_IP:8080
+
Setiap layanan akan memperoleh external IP masing-masing.
  
Each service will get its own external IP.
+
===DNS resolution (experimental)===
  
DNS resolution (experimental)
+
Jika kita menggunakan macOS, perintah tunnel juga memungkinkan resolusi DNS untuk service Kubernetes dari host.
If you are on macOS, the tunnel command also allows DNS resolution for Kubernetes services from the host.
 
  
NOTE: docker driver doesn’t support DNS resolution
+
CATATAN: driver docker tidak mendukung resolusi DNS
  
===Cleaning up orphaned routes===
+
===Membersihkan route yang menggantung===
If the minikube tunnel shuts down in an abrupt manner, it may leave orphaned network routes on your system. If this happens, the ~/.minikube/tunnels.json file will contain an entry for that tunnel. To remove orphaned routes, run:
 
  
minikube tunnel --cleanup
+
Jika minikube tunnel mati secara tiba-tiba, itu mungkin meninggalkan rute jaringan tanpa induk di sistem Anda. Jika ini terjadi, file ~/.minikube/tunnels.json akan berisi entri untuk tunnel tersebut. Untuk menghapus rute yang menggantung, jalankan:
  
NOTE: --cleanup flag’s default value is true.
+
  minikube tunnel --cleanup
  
Avoiding password prompts
+
CATATAN: --cleanup flag mempunyai nilai default true.
Adding a route requires root privileges for the user, and thus there are differences in how to run minikube tunnel depending on the OS. If you want to avoid entering the root password, consider setting NOPASSWD for “ip” and “route” commands:
 
  
https://superuser.com/questions/1328452/sudoers-nopasswd-for-single-executable-but-allowing-others
+
===Menghindari permintaan password===
  
Access to ports <1024 on Windows requires root permission
+
Menambahkan rute memerlukan hak akses root untuk pengguna, dan dengan demikian ada perbedaan dalam cara menjalankan minikube tunnel tergantung pada OS. Jika Anda ingin menghindari memasukkan password root, pertimbangkan untuk menset NOPASSWD untuk perintah "ip" dan "route":
If you are using Docker driver on Windows, there is a chance that you have an old version of SSH client you might get an error like - Privileged ports can only be forwarded by root. or you might not be able to access the service even after minikube tunnel if the access port is less than 1024 but for ports greater than 1024 works fine.
 
  
In order to resolve this, ensure that you are running the latest version of SSH client. You can install the latest version of the SSH client on Windows by running the following in a Command Prompt with an Administrator Privileges (Requires chocolatey package manager)
+
https://superuser.com/questions/1328452/sudoers-nopasswd-for-single-executable-but-allowing-others
  
choco install openssh
+
===Akses ke port <1024 di Windows memerlukan izin root===
  
The latest version (OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5) which is available on Windows 10 by default doesn’t work. You can track the issue with this over here - https://github.com/PowerShell/Win32-OpenSSH/issues/1693
+
Jika Anda menggunakan driver Docker di Windows, ada kemungkinan Anda memiliki klien SSH versi lama, Anda mungkin mendapatkan kesalahan seperti - Port istimewa hanya dapat di-forward oleh root. atau Anda mungkin tidak dapat mengakses layanan bahkan setelah diberikan perintah minikube tunnel jika port akses <1024 tetapi untuk port >1024 berfungsi dengan baik.
  
 +
Untuk mengatasi ini, pastikan Anda menjalankan klien SSH versi terbaru. Anda dapat menginstal versi terbaru klien SSH di Windows dengan menjalankan perintah berikut di Command Prompt dengan Hak Istimewa Administrator (Memerlukan manajer paket coklat)
  
 +
  choco instal openssh
  
 +
Versi terbaru (OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5) yang tersedia di Windows 10 secara default tidak berfungsi. Anda dapat melacak masalah dengan ini di - https://github.com/PowerShell/Win32-OpenSSH/issues/1693
  
 
==Referensi==
 
==Referensi==

Latest revision as of 08:51, 8 May 2023

Sumber: https://minikube.sigs.k8s.io/docs/handbook/accessing/


How to access applications running within minikube There are two major categories of services in Kubernetes:

Berikut adalah cara mengakses aplikasi yang berjalan di dalam minikube. Ada dua kategori utama layanan di Kubernetes:

  • NodePort
  • LoadBalancer

minikube mendukung ke dua-nya.

NodePort access

NodePort service adalah cara paling dasar untuk mendapatkan lalu lintas eksternal langsung ke service tersebit. NodePort, seperti namanya, membuka port tertentu, dan lalu lintas apa pun yang dikirim ke port ini diteruskan ke service yang dimaksud.

Mendapatkan NodePort menggunakan perintah service

Kita memiliki jalan pintas untuk mengambil IP minikube dan NodePort service:

minikube service <service-name> --url

Menggunakan minikube service dengan tunnel

Jaringan terbatas jika menggunakan driver Docker di Darwin, Windows, atau WSL, dan IP Node tidak dapat dijangkau secara langsung. Menjalankan minikube di Linux dengan driver Docker tidak akan membuat tunnel. Service dari NodePort dapat di akses melalui perintah,

minikube service <service-name> --url 

Itu harus dijalankan di window terminal yang terpisah agar tunnel tetap terbuka. Ctrl-C di terminal dapat digunakan untuk menghentikan proses saat rute jaringan akan clean up.

Contoh NodePort

Membuat Kubernetes deployment

kubectl create deployment hello-minikube1 --image=kicbase/echo-server:1.0

Membuat Kubernetes service type NodePort

kubectl expose deployment hello-minikube1 --type=NodePort --port=8080

Cek Node Port

$ kubectl get svc
NAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
hello-minikube1   NodePort    10.100.238.34   <none>        8080:31389/TCP   3s

Run service tunnel

minikube service hello-minikube1 --url

minikube service hello-minikube1 --url run sebagai proses, membuat tunnel ke cluster. Perintah tersebut membuka service secara langsung ke program apapun yang jalan di sistem operasi host.

contoh service output

Cek ssh tunnel di terminal lain

$ ps -ef | grep docker@127.0.0.1
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -N docker@127.0.0.1 -p 55972 -i /Users/FOO/.minikube/machines/minikube/id_rsa -L TUNNEL_PORT:CLUSTER_IP:TARGET_PORT

Coba menggunakan browser. Buka di browser pastikan tidak ada proxy yang di set,

http://127.0.0.1:TUNNEL_PORT

Mendapatkan NodePort menggunakan kubectl

VM minikube diekspos ke sistem host melalui alamat IP host-only, yang dapat diperoleh dengan perintah ip minikube. Semua layanan bertipe NodePort dapat diakses melalui alamat IP tersebut, di NodePort. Untuk menentukan NodePort untuk layanan kita, kita dapat menggunakan perintah kubectl seperti ini (perhatikan bahwa nodePort dimulai dengan huruf kecil n di keluaran JSON):

kubectl get service <service-name> --output='jsonpath="{.spec.ports[0].nodePort}"'

Meningkatkan NodePort range

Secara default, minikube hanya membuka port 30000-32767. Jika ini tidak berhasil, kita dapat menyesuaikan range dengan menggunakan:

minikube start --extra-config=apiserver.service-node-port-range=1-65535

Flag ini juga menerima daftar port dan range port yang dipisahkan koma.

LoadBalancer access

LoadBalancer service adalah cara standar untuk memexpose service ke internet. Dengan metode ini, setiap service mendapatkan IP address-nya sendiri.

Menggunakan minikube tunnel

Service bertipe LoadBalancer dapat diakses melalui perintah minikube tunnel. Itu harus dijalankan di window terminal terpisah agar LoadBalancer tetap berjalan. Ctrl-C di terminal dapat digunakan untuk menghentikan proses saat rute jaringan akan di clear up.

Contoh LoadBalancer

Jalankan tunnel di terminal terpisah Itu akan meminta password.

minikube tunnel

minikube tunnel berjalan sebagai sebuah proses, membuat rute jaringan pada host ke layanan CIDR cluster menggunakan alamat IP cluster sebagai gateway. Perintah tunnel membuka IP eksternal langsung ke program apa pun yang berjalan di sistem operasi host.


contoh tunnel output

Membuat Kubernetes deployment

kubectl create deployment hello-minikube1 --image=kicbase/echo-server:1.0

Membuat Kubernetes service dengan type LoadBalancer

kubectl expose deployment hello-minikube1 --type=LoadBalancer --port=8080

Cek external IP

kubectl get svc
$ kc get svc
NAME              TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)          AGE
hello-minikube1   LoadBalancer   10.96.184.178   10.96.184.178   8080:30791/TCP   40s

Catatan tanpa minikube tunnel, Kubernetes akan memperlihatkan external IP sebagai “pending”.

Coba di Browser. Bukan browser (pastikan tidak ada proxt)

http://REPLACE_WITH_EXTERNAL_IP:8080

Setiap layanan akan memperoleh external IP masing-masing.

DNS resolution (experimental)

Jika kita menggunakan macOS, perintah tunnel juga memungkinkan resolusi DNS untuk service Kubernetes dari host.

CATATAN: driver docker tidak mendukung resolusi DNS

Membersihkan route yang menggantung

Jika minikube tunnel mati secara tiba-tiba, itu mungkin meninggalkan rute jaringan tanpa induk di sistem Anda. Jika ini terjadi, file ~/.minikube/tunnels.json akan berisi entri untuk tunnel tersebut. Untuk menghapus rute yang menggantung, jalankan:

 minikube tunnel --cleanup

CATATAN: --cleanup flag mempunyai nilai default true.

Menghindari permintaan password

Menambahkan rute memerlukan hak akses root untuk pengguna, dan dengan demikian ada perbedaan dalam cara menjalankan minikube tunnel tergantung pada OS. Jika Anda ingin menghindari memasukkan password root, pertimbangkan untuk menset NOPASSWD untuk perintah "ip" dan "route":

https://superuser.com/questions/1328452/sudoers-nopasswd-for-single-executable-but-allowing-others

Akses ke port <1024 di Windows memerlukan izin root

Jika Anda menggunakan driver Docker di Windows, ada kemungkinan Anda memiliki klien SSH versi lama, Anda mungkin mendapatkan kesalahan seperti - Port istimewa hanya dapat di-forward oleh root. atau Anda mungkin tidak dapat mengakses layanan bahkan setelah diberikan perintah minikube tunnel jika port akses <1024 tetapi untuk port >1024 berfungsi dengan baik.

Untuk mengatasi ini, pastikan Anda menjalankan klien SSH versi terbaru. Anda dapat menginstal versi terbaru klien SSH di Windows dengan menjalankan perintah berikut di Command Prompt dengan Hak Istimewa Administrator (Memerlukan manajer paket coklat)

 choco instal openssh

Versi terbaru (OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5) yang tersedia di Windows 10 secara default tidak berfungsi. Anda dapat melacak masalah dengan ini di - https://github.com/PowerShell/Win32-OpenSSH/issues/1693

Referensi

Pranala Menarik