Bagikan melalui


Cara kerja Bridge to Kubernetes

Nota

Bridge to Kubernetes akan dihentikan pada 30 April 2025. Untuk detail tentang penghentian dan alternatif sumber terbuka, silakan lihat masalah GitHub .

Bridge ke Kubernetes adalah alat pengembangan berulang untuk menulis aplikasi layanan mikro yang menargetkan Kubernetes. Ekstensi Bridge to Kubernetes tersedia untuk Visual Studio dan Visual Studio Code (VS Code).

Bridge ke Kubernetes memungkinkan Anda untuk menjalankan dan men-debug kode di komputer pengembangan Anda. Komputer tersebut masih terhubung ke kluster Kubernetes anda dengan aplikasi atau layanan lainnya. Jika Anda memiliki arsitektur layanan mikro besar dengan banyak layanan dan database yang saling bergantung, mereplikasi dependensi tersebut pada komputer pengembangan Anda bisa sulit. Membangun dan menyebarkan kode ke kluster Kubernetes untuk setiap perubahan kode bisa lambat, memakan waktu, dan sulit.

Bridge ke Kubernetes membuat koneksi antara komputer pengembangan dan kluster Anda. Pendekatan ini menghindari harus membangun dan menyebarkan kode Anda ke kluster Anda. Anda dapat menguji dan mengembangkan layanan Anda dalam konteks, yang terhubung ke kluster Anda. Pendekatan ini memungkinkan Anda untuk men-debug tanpa membuat konfigurasi Docker atau Kubernetes lagi.

Bridge ke Kubernetes mengalihkan lalu lintas antara kluster Kubernetes yang terhubung dan komputer pengembangan Anda. Kode dan layanan lokal di kluster Kubernetes Anda dapat berkomunikasi seolah-olah mereka berada di kluster Kubernetes yang sama.

Bridge to Kubernetes memungkinkan Anda mereplikasi variabel lingkungan dan volume yang dipasang di kluster Kubernetes ke komputer pengembangan. Akses ke variabel lingkungan dan volume yang dipasang memungkinkan Anda untuk mengerjakan kode Anda tanpa harus mereplikasi dependensi tersebut.

Persyaratan

Nota

Bridge ke Kubernetes tidak berfungsi dengan kluster Docker for Desktop Kubernetes. Untuk menggunakan Bridge ke Kubernetes, Anda memerlukan salah satu konfigurasi berikut:

  • Visual Studio Code dengan ekstensi Bridge to Kubernetes terinstal.
  • Visual Studio 2019 versi 16.7 atau yang lebih baru yang berjalan pada Windows 10 atau yang lebih baru. Pastikan bahwa ASP.NET dan pengembangan web beban kerja diinstal. Instal Bridge ke Ekstensi Kubernetes.

Anda dapat menggunakan Bridge ke Kubernetes untuk membuat koneksi ke kluster Kubernetes Anda. Koneksi ini mengalihkan lalu lintas ke dan dari pod yang ada di kluster ke komputer pengembangan Anda.

Nota

Saat menggunakan Bridge ke Kubernetes, Anda diminta untuk memasukkan nama layanan yang akan dialihkan ke komputer pengembangan Anda. Opsi ini adalah cara mudah untuk mengidentifikasi pod untuk pengalihan. Semua pengalihan antara kluster Kubernetes dan komputer pengembangan Anda terkait dengan sebuah pod. Untuk informasi selengkapnya, lihat Membuat layanan tersedia.

Di Visual Studio Code, Bridge to Kubernetes mendukung semua bahasa selama Anda dapat menjalankannya secara lokal. Di Visual Studio, Bridge to Kubernetes mendukung .NET Core. Bridge to Kubernetes tidak mendukung .NET Framework di Visual Studio karena memerlukan dukungan simpul Windows.

Peringatan

Bridge to Kubernetes hanya ditujukan untuk digunakan dalam skenario pengembangan dan pengujian. Ini tidak dimaksudkan atau kompatibel untuk digunakan dengan kluster produksi atau layanan langsung yang sedang aktif digunakan.

Untuk fitur saat ini dan rencana mendatang, lihat peta strategi Bridge ke Kubernetes.

Membuat koneksi

Ketika Bridge to Kubernetes membuat koneksi ke kluster Anda, dibutuhkan tindakan berikut:

  • Meminta Anda untuk mengonfigurasi layanan agar menggantikan pada kluster Anda, menetapkan port pada komputer pengembangan Anda untuk digunakan oleh kode Anda, dan menetapkan tugas peluncuran untuk kode Anda sebagai tindakan satu kali.
  • Mengganti kontainer dalam pod pada kluster dengan kontainer agen jarak jauh yang mengalihkan lalu lintas ke komputer pengembangan Anda.
  • Menjalankan kubectl port-forward pada komputer pengembangan Anda untuk meneruskan lalu lintas dari komputer pengembangan Anda ke agen jarak jauh yang berjalan di kluster Anda.
  • Mengumpulkan informasi lingkungan dari kluster Anda menggunakan agen jarak jauh. Informasi lingkungan ini mencakup variabel lingkungan, layanan yang terlihat, pemasangan volume, dan pemasangan rahasia.
  • Menyiapkan lingkungan di Visual Studio sehingga layanan di komputer pengembangan Anda dapat mengakses variabel yang sama seolah-olah berjalan pada kluster.
  • Memperbarui file host Anda untuk memetakan layanan pada kluster Anda ke alamat IP lokal di komputer pengembangan Anda. Host dan entri file ini memungkinkan kode yang berjalan di komputer pengembangan Anda untuk mengirim permintaan ke layanan lain yang berjalan di kluster Anda. Untuk memperbarui file host , Bridge to Kubernetes memerlukan akses administrator di komputer pengembangan Anda.
  • Mulai menjalankan dan men-debug kode Anda di komputer pengembangan Anda. Jika perlu, Bridge to Kubernetes membebaskan port yang diperlukan pada komputer pengembangan Anda dengan menghentikan layanan atau proses yang saat ini menggunakan port tersebut.

Menggunakan Bridge ke Kubernetes

Setelah Anda membuat koneksi ke kluster Anda, jalankan dan debug kode secara asli di komputer Anda, tanpa kontainerisasi. Kode berinteraksi dengan kluster Anda. Setiap lalu lintas jaringan yang diterima agen jarak jauh dialihkan ke port lokal yang ditentukan selama koneksi. Kode anda yang berjalan secara asli dapat menerima dan memproses lalu lintas tersebut. Variabel lingkungan, volume, dan rahasia dari kluster Anda tersedia untuk kode yang berjalan di komputer pengembangan Anda.

Bridge to Kubernetes menambahkan entri file host dan penerusan port ke komputer pengembang Anda. Kode Anda dapat mengirim lalu lintas jaringan ke layanan yang berjalan di kluster Anda menggunakan nama layanan dari kluster Anda. Lalu lintas tersebut akan diteruskan ke layanan yang berjalan di kluster Anda. Lalu lintas dirutekan antara komputer pengembangan dan kluster Anda sepanjang waktu Anda terhubung.

Selain itu, Bridge to Kubernetes menyediakan cara untuk mereplikasi variabel lingkungan dan file yang dipasang yang tersedia untuk pod di kluster anda di komputer pengembangan melalui file KubernetesLocalProcessConfig.yaml. Anda juga dapat menggunakan file ini untuk membuat variabel lingkungan dan pemasangan volume baru.

Nota

Selama durasi koneksi ke kluster, ditambah 15 menit, Bridge ke Kubernetes menjalankan proses yang disebut EndpointManager dengan izin admin di komputer lokal Anda.

Anda dapat men-debug secara paralel, dengan beberapa layanan. Luncurkan sebanyak instans Visual Studio yang diperlukan sesuai dengan jumlah layanan yang ingin Anda debug. Pastikan layanan Anda mendengarkan di port yang berbeda di tingkat lokal. Konfigurasikan dan lakukan pemecahan masalah secara terpisah. Isolasi tidak didukung dalam skenario ini.

Konfigurasi tambahan

File KubernetesLocalProcessConfig.yaml memungkinkan Anda mereplikasi variabel lingkungan dan file yang dipasang yang tersedia untuk pod di kluster Anda. Saat Anda menggunakan Visual Studio, file KubernetesLocalConfig.yaml harus berada di direktori yang sama dengan file proyek untuk layanan. Untuk informasi selengkapnya, lihat Mengonfigurasi Bridge ke Kubernetes.

Menggunakan fitur perutean untuk mengembangkan perangkat lunak dalam lingkungan terisolasi

Secara default, Bridge ke Kubernetes mengalihkan semua lalu lintas untuk layanan ke komputer pengembangan Anda. Sebagai gantinya, Anda dapat menggunakan kemampuan perutean untuk mengalihkan hanya permintaan dari subdomain ke komputer pengembangan Anda. Kemampuan perutean ini memungkinkan Anda menggunakan Bridge ke Kubernetes untuk berkembang dalam isolasi dan menghindari gangguan lalu lintas lain di kluster Anda.

Animasi berikut menunjukkan dua pengembang yang bekerja pada kluster yang sama dalam isolasi:

Animasi menunjukkan isolasi, dengan dua pengembang bekerja dengan kluster yang sama.

Saat Anda mengaktifkan fitur bekerja dalam isolasi, Bridge to Kubernetes akan melakukan hal-hal berikut selain menyambungkan ke kluster Kubernetes Anda:

  • Memverifikasi bahwa kluster Kubernetes tidak mengaktifkan Azure Dev Spaces.
  • Mereplikasi layanan yang Anda pilih dalam kluster pada namespace yang sama dan menambahkan label routing.visualstudio.io/route-from=SERVICE_NAME serta anotasi routing.visualstudio.io/route-on-header=kubernetes-route-as=GENERATED_NAME.
  • Mengonfigurasi dan memulai manajer routing di namespace yang sama pada kluster Kubernetes. Manajer routing menggunakan pemilih label untuk mencari label routing.visualstudio.io/route-from=SERVICE_NAME dan anotasi routing.visualstudio.io/route-on-header=kubernetes-route-as=GENERATED_NAME saat mengonfigurasi routing di namespace Anda.

Nota

Bridge to Kubernetes memeriksa apakah Azure Dev Spaces diaktifkan pada kluster Kubernetes Anda. Ini meminta Anda untuk menonaktifkan Azure Dev Spaces sebelum Anda dapat menggunakan Bridge ke Kubernetes.

Manajer perutean melakukan tindakan berikut ketika mulai beroperasi:

  • Menduplikasi semua ingress, termasuk ingress load balancer, yang ditemukan di dalam namespace dengan menggunakan GENERATED_NAME untuk subdomain.
  • Membuat pod envoy untuk setiap layanan yang terkait dengan penggunaan ingress yang duplikasi dengan subdomain GENERATED_NAME.
  • Membuat pod Envoy lain untuk layanan yang sedang Anda kerjakan dalam isolasi. Konfigurasi ini memungkinkan permintaan yang menggunakan subdomain akan diarahkan ke komputer pengembangan Anda.
  • Mengatur aturan perutean untuk setiap pod envoy agar dapat menangani layanan dengan subdomain.

Diagram berikut menunjukkan kluster Kubernetes sebelum Bridge ke Kubernetes terhubung ke kluster Anda:

Diagram kluster tanpa Bridge ke Kubernetes.

Diagram berikut menunjukkan kluster yang sama dengan Bridge ke Kubernetes yang diaktifkan dalam mode isolasi. Di sini, Anda dapat melihat layanan duplikat dan pod envoy yang mendukung pengaturan rute secara terisolasi.

Diagram kluster dengan Bridge ke Kubernetes diaktifkan.

Ketika kluster menerima permintaan dengan subdomain GENERATED_NAME, kluster menambahkan header kubernetes-route-as=GENERATED_NAME ke permintaan. Pod envoy menangani perutean permintaan ke layanan yang sesuai dalam kluster. Untuk permintaan ke layanan yang sedang dikerjakan dalam isolasi, kluster mengalihkan permintaan ke komputer pengembangan Anda oleh agen jarak jauh.

Ketika kluster menerima permintaan tanpa subdomain GENERATED_NAME, kluster tidak menambahkan header ke permintaan. Pod envoy menangani perutean permintaan ke layanan yang sesuai dalam kluster. Untuk permintaan layanan yang sedang diganti, pod merutekannya ke layanan asli alih-alih agen jarak jauh.

Penting

Setiap layanan pada kluster Anda harus meneruskan header kubernetes-route-as=GENERATED_NAME saat membuat permintaan tambahan. Misalnya, ketika serviceA menerima permintaan, itu kemudian membuat permintaan untuk serviceB sebelum mengembalikan respons. Dalam contoh ini, serviceA perlu meneruskan header kubernetes-route-as=GENERATED_NAME dalam permintaannya untuk serviceB. Beberapa bahasa, seperti ASP.NET, mungkin memiliki metode untuk menangani penyebaran header.

Saat Anda memutuskan sambungan dari kluster, secara default, Bridge to Kubernetes akan menghapus semua pod envoy dan layanan yang diduplikasi.

Nota

Penyebaran dan layanan manajer perutean tetap berjalan di namespace Anda. Untuk menghapus penyebaran dan layanan, jalankan perintah berikut untuk namespace Anda.

kubectl delete deployment routingmanager-deployment -n NAMESPACE
kubectl delete service routingmanager-service -n NAMESPACE

Diagnostik dan pengelogan

Saat menggunakan Bridge ke Kubernetes untuk terhubung ke kluster, komputer Anda mencatat diagnostik. Ini menyimpannya di direktori TEMP komputer pengembangan Anda di folder Bridge to Kubernetes.

Otorisasi RBAC Kubernetes

Kubernetes menyediakan Kontrol Akses Berbasis Peran (RBAC) untuk mengelola izin bagi pengguna dan grup. Untuk informasi, lihat dokumentasi Kubernetes. Anda dapat mengatur izin untuk kluster yang diaktifkan RBAC dengan membuat file YAML dan menggunakan kubectl untuk menerapkannya ke kluster.

Untuk mengatur izin pada kluster, buat atau ubah file YAML seperti permissions.yml. Gunakan namespace Anda untuk <namespace> dan pengguna dan grup yang memerlukan akses.

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: bridgetokubernetes-<namespace>
  namespace: development
subjects:
  - kind: User
    name: jane.w6wn8.k8s.ginger.eu-central-1.aws.gigantic.io
    apiGroup: rbac.authorization.k8s.io
  - kind: Group
    name: dev-admin
    apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: admin
  apiGroup: rbac.authorization.k8s.io

Terapkan izin dengan menggunakan perintah berikut:

kubectl -n <namespace> apply -f <yaml file name>

Keterbatasan

Bridge to Kubernetes memiliki batasan berikut:

  • Sebuah pod mungkin hanya memiliki satu kontainer yang berjalan di pod tersebut agar Bridge ke Kubernetes berhasil terhubung.
  • Saat ini, Pod Bridge to Kubernetes harus berupa kontainer Linux. Kontainer Windows tidak didukung.
  • Bridge to Kubernetes memerlukan izin akses tingkat tinggi untuk beroperasi di komputer pengembangan Anda guna mengedit file hosts Anda.
  • Bridge ke Kubernetes tidak dapat digunakan pada kluster dengan Azure Dev Spaces diaktifkan.

Langkah berikutnya

Untuk mulai menggunakan Bridge to Kubernetes untuk menghubungkan komputer pengembangan lokal Anda ke kluster Anda, lihat Gunakan Bridge to Kubernetes (VS) atau Gunakan Bridge to Kubernetes (VS Code).