Cara Mengakses Aplikasi Kubernetes Jarak Jauh Dengan Port Forwarding Kubectl

  • Post author:
  • Post category:Tutorial

Perlu men-debug aplikasi yang berjalan di dalam cluster Kubernetes Anda? Penerusan port adalah cara untuk terhubung ke Pod yang tidak dapat diakses publik. Anda dapat menggunakan teknik ini untuk memeriksa database, alat pemantauan, dan aplikasi lain yang ingin Anda gunakan secara internal tanpa rute publik. Penerusan port

dibangun ke dalam Kubectl. CLI dapat memulai sesi tunneling yang mengarahkan lalu lintas pada port lokal ke Pod di cluster Kubernetes Anda. Berikut cara menyiapkannya.

Cara Kerja Port Forwarding

Port forwarding adalah sejenis aturan terjemahan alamat jaringan (NAT) yang mengarahkan lalu lintas dari satu jaringan ke jaringan lain. Dalam konteks Kubernetes, permintaan yang tampaknya dihentikan oleh localhost akan dialihkan ke jaringan internal cluster Anda. Penerusan port

hanya beroperasi pada level port. Anda mengarahkan port tertentu seperti 33060 ke port target seperti 3306 di jaringan tujuan. Saat Anda mengirim lalu lintas ke port lokal 33060, lalu lintas akan diteruskan secara otomatis ke port 3306 di ujung jarak jauh.

Teknik ini memungkinkan Anda mengakses beban kerja Kubernetes pribadi yang tidak diekspos oleh NodePort, Ingress, atau LoadBalancer. Anda dapat mengarahkan lalu lintas lokal langsung ke cluster Anda, menghilangkan kebutuhan untuk membuat layanan Kubernetes untuk beban kerja internal Anda. Ini membantu mengurangi permukaan serangan Anda.

Contoh Aplikasi

Sekarang mari kita lihat penerusan port Kubernetes beraksi. Mulailah dengan membuat penerapan dasar yang akan Anda sambungkan menggunakan penerusan porta di bagian berikutnya.

Kami menggunakan Pod database MySQL sebagai contoh realistis kapan Anda mungkin perlu menggunakan teknik ini. Basis data biasanya tidak diekspos secara publik sehingga admin Kubernetes sering menggunakan penerusan porta untuk membuka koneksi langsung.

Buat file YAML untuk penerapan Anda:

apiVersion: apps/v1 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql templat: metadata: label: aplikasi: spesifikasi mysql: wadah: – gambar: mysql:8.0 nama: mysql env: – nama: MYSQL_ROOT_PASSWORD nilai: mysql

Pastikan Anda mengubah nilai variabel lingkungan MYSQL_ROOT_PASSWORD sebelum menggunakan manifes ini dalam produksi. Jalankan kubectl apply untuk membuat penerapan MySQL Anda:

$ kubectl apply -f mysql.yaml deployment.apps/mysql create

Next gunakan perintah get pods untuk memeriksa apakah beban kerja telah dimulai dengan sukses:

$ kubectl get pods 
NAMA STATUS SIAP MULAI ULANG USIA 
mysql-5f54dd5789- t5fzc 1/1 Menjalankan 0 2s

Menggunakan Kubectl ke Port Teruskan ke Kubernetes

Meskipun MySQL sekarang berjalan di cluster Anda, Anda tidak dapat mengaksesnya dari luar. Selanjutnya atur sesi penerusan porta sehingga Anda dapat menggunakan alat instalasi lokal seperti CLI mysql untuk terhubung ke database Anda.

Berikut adalah contoh sederhana:

$ kubectl port-forward deployment/mysql 33060:3306 
Penerusan dari 127.0.0.1:33060 -> 3306 Meneruskan dari [::1]:33060 -> 3306

Koneksi ke port 33060 akan diarahkan ke port 3306 terhadap Pod yang menjalankan penerapan MySQL Anda. Anda sekarang dapat memulai sesi shell MySQL yang menargetkan database Anda di Kubernetes:

$ mysql --host 127.0.0.1 --port 33060 -u root -p 
Masukkan kata sandi: Selamat datang di monitor MySQL. Perintah diakhiri dengan ; atau g. 
ID koneksi MySQL Anda adalah 10 Versi Server: 8.0.29 MySQL Community Server - GPL

Biarkan jendela shell yang menjalankan perintah kubectl port-forward terbuka selama sesi debugging Anda. Penerusan port akan dihentikan saat Anda menekan Ctrl+C atau menutup jendela.

Mengubah Nomor Port Lokal dan Jarak Jauh

Sintaks untuk pengikatan nomor port adalah lokal:jarak jauh. Contoh 33060:3306 di atas memetakan port 33060 di localhost ke 3306 di Pod.

targetMenentukan hanya satu angka, tanpa titik dua, akan menafsirkannya sebagai port lokal dan remote:

$ kubectl port-forward deployment/mysql 3306

Anda dapat biarkan port lokal kosong sebagai gantinya untuk secara otomatis menetapkan port acak:

$ kubectl port-forward deployment/mysql:3306 
Meneruskan dari 127.0.0.1:34923 -> 3306 Meneruskan dari [::1]:34923 -> 3306

Di sini Anda akan menggunakan nomor port 34923 yang dibuat secara acak dengan klien MySQL lokal Anda.

Mengubah Alamat Mendengarkan

Kubectl mengikat port lokal pada alamat 127.0.0.1 (IPv4) dan ::1 (IPv6) secara default. Anda dapat menentukan set IP Anda sendiri sebagai gantinya dengan memberikan flag –address ketika Anda menjalankan perintah port-forward:

# Listen pada dua alamat IPv4 
$ kubectl port-forward deployment/mysql:3306 --address 127.0.0.1,192.168 .0.1

Bendera hanya menerima alamat IP dan kata kunci localhost. Yang terakhir ditafsirkan untuk menyertakan 127.0.0.1 dan ::1, cocok dengan default perintah ketika –address dihilangkan.

Port forwarding adalah teknik yang berguna untuk mengakses aplikasi pribadi di dalam cluster Kubernetes Anda. Kubectl menyalurkan lalu lintas dari jaringan lokal Anda ke port tertentu pada Pod tertentu. Ini adalah mekanisme tingkat rendah yang dapat menangani koneksi TCP apa pun. Penerusan port UDP belum didukung.

Menggunakan sesi penerusan port ad-hoc adalah cara aman untuk men-debug beban kerja yang tidak perlu diekspos secara eksternal. Membuat layanan untuk setiap penerapan baru dapat memungkinkan penyusup dan penyerang menemukan titik akhir yang dimaksudkan untuk dilindungi. Penerusan port di Kubectl memungkinkan Anda terhubung langsung ke aplikasi Anda dengan aman, tanpa harus mengetahui Node yang mereka jalankan.

Itulah berita seputar Cara Mengakses Aplikasi Kubernetes Jarak Jauh Dengan Port Forwarding Kubectl, semoga bermanfaat. Disadur dari HowToGeek.com.