Difference between revisions of "Minikube: akses apps"
Onnowpurbo (talk | contribs) (Created page with "Sumber: https://minikube.sigs.k8s.io/docs/handbook/accessing/ Accessing apps How to access applications running within minikube There are two major categories of services in...") |
Onnowpurbo (talk | contribs) |
||
(12 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
− | |||
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 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 | 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 | 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 | kubectl expose deployment hello-minikube1 --type=NodePort --port=8080 | ||
− | + | Cek Node Port | |
$ kubectl get svc | $ kubectl get svc | ||
Line 44: | Line 52: | ||
minikube service hello-minikube1 --url | minikube service hello-minikube1 --url | ||
− | |||
− | service output | + | 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 | $ 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 | ||
− | + | 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 | 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 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 | ||
− | 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. |
− | tunnel output | + | |
− | + | ====contoh tunnel output==== | |
+ | 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 | ||
− | + | Membuat Kubernetes service dengan type LoadBalancer | |
kubectl expose deployment hello-minikube1 --type=LoadBalancer --port=8080 | kubectl expose deployment hello-minikube1 --type=LoadBalancer --port=8080 | ||
− | + | 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 | ||
− | + | 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 | 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== | ==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