Bagikan melalui


Gunakan Bridge ke Kubernetes (Visual Studio Code)

Bridge ke Kube memungkinkan Anda menjalankan dan men-debug kode di komputer departemen Anda, sekaligus tetap terhubung ke kluster Kube dengan aplikasi atau layanan Anda yang lain. Dalam panduan ini, Anda akan mempelajari cara menggunakan Bridge ke Kubernetes untuk mengalihkan lalu lintas antara kluster Kubernetes dan kode yang berjalan di komputer pengembangan.

Sebelum Anda mulai

Artikel ini mengasumsikan Anda sudah memiliki kluster sendiri dengan arsitektur layanan mikro dan Anda ingin men-debug salah satu pod di kluster Anda. Jika Anda ingin mempelajari cara menggunakan Bridge ke Kubernetes dengan aplikasi sampel yang ada, lihat Menggunakan Bridge ke Kubernetes dengan sampel. Jika Anda menggunakan layanan Azure Kubernetes dan ingin menggunakan aplikasi sampel yang lebih kompleks, lihat Bridge ke Kubernetes (AKS).

Prasyarat

  • Kluster Kubernetes dengan aplikasi yang ingin Anda debug.
  • Visual Studio Code berjalan di macOS, Linux, dan Windows 10 atau yang lebih baru.

Menyambungkan ke kluster Anda dan menelusuri kesalahan layanan

Ada beberapa cara berbeda untuk memulai proses penelusuran kesalahan dengan Bridge ke Kubernetes. Jika Anda memulai dari ekstensi sumber terbuka Kubernetes tanpa memasang, Bridge ke Kubernetes, buka Memasang dan menggunakan penelusuran kesalahan terowongan lokal. Jika Anda sudah memasang Bridge ke Kubernetes, lanjutkan dengan langkah-langkah berikut:

  1. Di komputer pengembangan Anda, pastikan konteks Anda saat ini diatur ke kluster dan namespace layanan tempat aplikasi Anda berjalan.

  2. Buka ruang kerja untuk aplikasi yang ingin Anda debug di Visual Studio Code. Dalam tampilan ekstensi Kubernetes di bawah Kluster, pastikan kluster dan namespace layanan Anda dipilih. Buka Palet Perintah (CTRL+SHIFT+P atau Cmd+Shift+P di Mac) dan jalankan perintah Bridge to Kubernetes: Konfigurasikan untuk memulai proses konfigurasi.

  3. Pilih layanan Kubernetes yang ingin Anda alihkan ke versi lokal.

    Pilih layanan yang akan disambungkan

    Semua lalu lintas di kluster Kubernetes dialihkan untuk layanan Anda ke versi aplikasi yang berjalan di komputer pengembangan. Bridge to Kubernetes juga merutekan semua lalu lintas keluar dari aplikasi kembali ke kluster Kubernetes Anda.

    Penting

    Anda hanya dapat mengalihkan layanan yang memiliki satu pod.

  4. Setelah memilih layanan, lewati bagian berikutnya dan lanjutkan dengan mengikuti langkah-langkah dalam Mengonfigurasi pen-debug untuk penelusuran kesalahan terowongan lokal dengan Bridge ke Kubernetes.

Memasang dan menggunakan penelusuran kesalahan terowongan lokal

Ikuti langkah-langkah ini untuk mulai menggunakan penelusuran kesalahan terowongan lokal setelah memasang Ekstensi Kubernetes sumber terbuka dan memiliki kluster Kubernetes dengan layanan yang ingin Anda debug. Langkah-langkah di bagian ini akan membawa Anda melalui penginstalan Bridge ke Kubernetes dan memulai proses konfigurasi untuk penelusuran kesalahan terowongan lokal.

Catatan

Ekstensi Kubernetes untuk Visual Studio Code menyediakan titik masuk API yang memungkinkan pembuat ekstensi untuk berkontribusi solusi terowongan lokal lainnya dari Marketplace Visual Studio Code. Bridge ke Kubernetes adalah salah satu kemungkinan implementasi kemampuan Debug Terowongan Lokal.

Ada dua cara untuk mulai menggunakan penelusuran kesalahan terowongan lokal di Visual Studio Code. Cara pertama adalah membuka Palet Perintah (CTRL+SHIFT+P atau Cmd+Shift+P pada Mac) dan ketik Kubernetes: Debug (Local Tunnel).

Cuplikan layar memperlihatkan perintah Debug (Terowongan Lokal) di Visual Studio Code

Atau, buka penjelajah kluster Kubernetes Anda. Buka sumber daya kluster aktif dan temukan layanan atau pod yang ingin Anda debug, lalu klik kanan pada layanan dan pilih Debug: Local Tunnel.

Pada titik ini, jika Anda tidak memasang ekstensi Visual Studio Code yang menawarkan kemampuan penelusuran kesalahan lokal, Anda akan diarahkan ke Marketplace untuk memilih ekstensi yang menyediakan penelusuran kesalahan lokal. Pilih ekstensi Bridge ke Kubernetes.

Cuplikan layar memperlihatkan menu konteks Debug Terowongan Lokal di Visual Studio Code

Setelah ekstensi Bridge ke Kubernetes dipasang, saat Anda memilih Debug: Local Tunnel, Anda akan melewati langkah penginstalan dan melanjutkan langsung ke langkah berikutnya, Mengonfigurasi pen-debug untuk menelusuri kesalahan terowongan lokal dengan Bridge ke Kubernetes.

Mengonfigurasi pen-debug untuk penelusuran kesalahan terowongan lokal dengan Bridge ke Kubernetes

Langkah pertama dalam mengonfigurasi pen-debug untuk penelusuran kesalahan terowongan lokal adalah Anda diminta untuk memasukkan port TCP yang digunakan aplikasi untuk berjalan secara lokal:

Masukkan nomor port

Pilih konfigurasi peluncuran debug yang biasanya Anda gunakan saat menjalankan aplikasi secara lokal. Jika tidak memiliki konfigurasi peluncuran, biarkan Bridge ke Kubernetes membuatnya, atau pilih untuk tidak membuatnya; dalam hal ini, Anda harus memulai aplikasi atau layanan secara manual. Pelajari selengkapnya di Konfigurasi peluncuran.

Pilih konfigurasi peluncuran debugger

Anda memiliki opsi untuk menjalankan secara terisolasi atau tidak terisolasi. Jika Anda menjalankan secara terisolasi, hanya permintaan Anda yang dirutekan ke proses lokal; pengembang lain dapat menggunakan kluster tanpa terpengaruh. Jika Anda tidak menjalankan secara terisolasi, semua lalu lintas dialihkan ke proses lokal Anda. Untuk informasi selengkapnya tentang opsi ini, lihat Menggunakan kemampuan perutean untuk mengembangkan secara terisolasi.

Pilih isolasi

Pilih ikon Debug di sebelah kiri dan pilih konfigurasi peluncuran Kubernetes yang baru ditambahkan, seperti Luncurkan melalui NPM dengan Kubernetes, di bagian atas. Jika Anda memilih opsi tersebut, konfigurasi peluncuran ini dibuat oleh Bridge ke Kubernetes.

Pilih profil peluncuran debug

Catatan

Anda akan diminta untuk mengizinkan EndpointManager menjalankan file yang ditingkatkan dan memodifikasi host.

Komputer pengembangan Anda terhubung ketika bilah Status Visual Studio Code berubah menjadi oranye dan ekstensi Kubernetes menunjukkan terhubung.

Penelusuran kesalahan dengan Bridge ke Kubernetes

Setelah komputer pengembangan Anda tersambung, lalu lintas akan mulai mengalihkan ke komputer pengembangan untuk layanan yang Anda ganti.

Catatan

Pada peluncuran berikutnya, Anda tidak akan diminta untuk nama layanan, port, tugas peluncuran, atau prosesnya terisolasi atau tidak. Nilai-nilai ini disimpan di .vscode/tasks.json. Untuk mengubah pengaturan ini nanti, buka Palet Perintah (CTRL+SHIFT+P atau Cmd+Shift+P di Mac), dan jalankan perintah Bridge ke Kubernetes: Konfigurasikan. Anda dapat membuka .vscode/launch.json dan .vscode/tasks.json untuk melihat pengaturan konfigurasi spesifik yang ditambahkan Bridge ke Kubernetes ke profil peluncuran Anda.

Jika kluster Anda menggunakan C inti gRPC, sebuah implementasi gRPC yang menggunakan c-ares, maka variabel lingkungan akan ditambahkan ke profil peluncuran Anda, GRPC_DNS_RESOLVER, dengan nilai native. Variabel ini menentukan untuk menggunakan solusi guna menghindari penundaan waktu 2 menit saat menyambungkan. Untuk informasi selengkapnya, lihat Masalah gRPC ini.

Mengatur titik henti

Atur titik henti dengan F9 atau pilih Jalankan lalu Alihkan Titik Henti.

Buka aplikasi sampel dengan membuka URL publik. Ketika kode Anda mencapai titik henti, kode tersebut akan terbuka di pen-debug. Untuk melanjutkan layanan, tekan Ctrl+F5 atau pilih Jalankan lalu Lanjutkan. Kembali ke browser dan verifikasi bahwa Anda melihat gambar tempat penampung untuk sepeda.

Memperbarui aplikasi Anda

Saat Anda membuat perubahan kode secara lokal, apakah kode tersebut terlihat oleh orang lain yang menggunakan kluster bergantung pada apakah Anda menjalankannya secara terisolasi atau tidak. Jika menjalankannya secara terisolasi, Anda dapat membuat perubahan yang tidak memengaruhi pengguna lain.

Edit kode Anda, simpan perubahan, dan tekan Ctrl+Shift+F5 (⇧⌘F5 di Mac) atau pilih Jalankan lalu Mulai Ulang Penelusuran Kesalahan. Setelah terhubung kembali, refresh browser dan validasi perubahan Anda.

Pilih Jalankan lalu Hentikan Penelusuran Kesalahan atau tekan Shift+F5 untuk menghentikan debugger.

Catatan

Secara default, menghentikan tugas penelusuran kesalahan juga memutus sambungan komputer pengembangan dari kluster Kubernetes Anda. Anda dapat mengubah perilaku ini dengan mencari Bridge ke Kubernetes: Putuskan Sambungan Setelah Penelusuran Kesalahan di pengaturan Visual Studio Code dan menghapus pemeriksaan di samping Putuskan sambungan secara otomatis saat penelusuran kesalahan berhenti. Setelah memperbarui pengaturan ini, komputer pengembangan akan tetap tersambung ketika Anda berhenti dan memulai penelusuran kesalahan. Untuk memutuskan sambungan komputer pengembangan dari kluster, klik pada ekstensi Bridge to Kubernetes pada bilah status lalu pilih Putuskan sambungan sesi saat ini.

Konfigurasi tambahan

Bridge to Kubernetes dapat menangani lalu lintas perutean dan mereplikasi variabel lingkungan tanpa konfigurasi tambahan. Jika Anda perlu mengunduh file apa pun yang dipasang ke kontainer di kluster Kubernetes, seperti file ConfigMap, Anda dapat membuat KubernetesLocalProcessConfig.yaml untuk mengunduh file tersebut ke komputer pengembangan. Untuk informasi selengkapnya, lihat Mengonfigurasi Bridge to Kubernetes.

Jika Anda menggunakan kluster AKS yang menggunakan identitas terkelola, fitur keamanan yang disediakan oleh ID Microsoft Entra, lihat Menggunakan identitas terkelola dengan Bridge ke Kubernetes untuk informasi tentang cara mengonfigurasi Bridge ke Kubernetes untuk skenario ini.

Menggunakan pengelogan dan diagnostik

Output pengelogan ditulis ke jendela Bridge ke Kubernetes setelah komputer pengembangan terhubung ke kluster Kubernetes Anda.

Klik bilah Status Kubernetes dan pilih Tampilkan informasi diagnostik koneksi. Perintah ini mencetak entri DNS dan variabel lingkungan saat ini dalam output pengelogan.

Selain itu, Anda dapat menemukan log diagnostik di direktori Bridge to Kubernetes di direktori TEMP komputer pengembangan. Di Windows 10, ada di %TEMP%\Bridge to Kubernetes. Di Mac, direktori TEMP dapat ditemukan dengan menjalankan echo $TMPDIR dari jendela terminal. Di Linux, terletak di /tmp/Bridge to Kubernetes.

Berjalan dalam mode isolasi

Menggunakan Bridge to Kubernetes, Anda juga dapat menyiapkan versi terisolasi dari layanan yang sedang Anda kerjakan, yang berarti bahwa orang lain yang menggunakan kluster tidak akan terpengaruh oleh perubahan Anda. Mode isolasi ini dicapai dengan merutekan permintaan Anda ke salinan setiap layanan yang terpengaruh, tetapi merutekan semua lalu lintas lainnya secara normal. Untuk mengakses URL titik akhir lokal untuk aplikasi yang terisolasi, luncurkan pen-debug dalam mode isolasi, buka menu Kubernetes pada bilah status, dan pilih entri titik akhir. Anda dapat menemukan lebih banyak informasi tentang cara kerja perutean dalam mode isolasi di Cara Kerja Bridge ke Kubernetes.

Penyebaran header

Untuk menggunakan Bridge ke Kubernetes seperti yang dirancang, Anda perlu memastikan untuk menyebarluaskan header Bridge ke Kubernetes dari permintaan masuk ke permintaan apa pun yang dibuat layanan Anda ke layanan lain di kluster. Terlepas dari bahasa, semua API permintaan HTTP menyediakan beberapa cara khusus kerangka kerja untuk melakukan ini. Misalnya, untuk kode .NET di C#, Anda dapat menggunakan kode yang mirip seperti yang berikut:

var request = new HttpRequestMessage();
request.RequestUri = new Uri("http://mywebapi/api/values/1");
if (this.Request.Headers.ContainsKey("kubernetes-route-as"))
{
    // Propagate the dev space routing header
    request.Headers.Add("kubernetes-route-as", this.Request.Headers["kubernetes-route-as"] as IEnumerable<string>);
}
var response = await client.SendAsync(request);

Catatan

Agar tidak memengaruhi kode di setiap permintaan, Anda dapat membuat kelas yang mewarisi dari System.Net.Http.DelegatingHandler dan mengambil-alih metode SendAsync dengan kode yang mirip dengan contoh sebelumnya. Anda dapat menemukan kode menggunakan teknik ini di web; salah satu contohnya adalah Menyebarkan "kubernetes-route-as" dengan benar di Bridge ke Kubernetes.

Untuk layanan Node.js, Anda dapat menggunakan kode yang mirip dengan yang berikut ini, diambil dari sampel todo-app di repositori Bridge to Kubernetes:

    server.get("/api/stats", function (req, res) {
        var options = {
            host: process.env.STATS_API_HOST,
            path: '/stats',
            method: 'GET'
        };
        const val = req.get('kubernetes-route-as');
        if (val) {
            console.log('Forwarding kubernetes-route-as header value - %s', val);
            options.headers = {
                'kubernetes-route-as': val
            }
        }
        var req = http.request(options, function(statResponse) {
            res.setHeader('Content-Type', 'application/json');
            var responseString = '';
            //another chunk of data has been received, so append it to `responseString`
            statResponse.on('data', function (chunk) {
                responseString += chunk;
            });
            statResponse.on('end', function () {
                res.send(responseString);
            });
        });

        req.on('error', function(e) {
            console.log('problem with request: ' + e.message);
          });

          req.end();
    });

Berkomunikasi dengan layanan lain

Ketika Anda berkomunikasi dengan layanan lain di kluster Kubernetes yang sama, misalnya dengan permintaan HTTP, biasanya Anda menggunakan nama layanan yang dikodekan secara permanen di URL untuk permintaan tersebut, tetapi tidak akan berfungsi dalam beberapa skenario, seperti saat menggunakan SSH, WSL, dan Codespaces jarak jauh. Artikel ini menjelaskan cara menggunakan variabel lingkungan layanan Kubernetes untuk menentukan URL koneksi pada skenario ini.

Pemecahan Masalah

Jika Anda mendapatkan kesalahan ini saat mengaktifkan ekstensi Bridge to Kubernetes:

"Gagal memperbarui dependensi: jumlah maksimum percobaan ulang terlampaui"

Pertama, coba lagi aktivasi menggunakan tombol. Jika berulang kali tidak berhasil, lihat https://github.com/microsoft/mindaro/issues/32.

Ketika Anda menggunakan Bridge ke Kubernetes dalam sesi SSH jarak jauh, jika EndpointManager gagal, kemungkinan masalahnya Bridge ke Kubernetes tidak dapat mengubah file host karena masalah izin. Untuk mengaktifkan SSH jarak jauh atau berjalan sebagai pengguna yang tidak ditingkatkan, Anda harus memperbarui kode untuk menggunakan variabel lingkungan layanan Kubernetes, dan mengonfigurasi Visual Studio Code untuk menggunakannya, seperti yang dijelaskan dalam topik Variabel lingkungan layanan.

Langkah berikutnya

Pelajari selengkapnya tentang Bridge to Kubernetes di Cara kerja Bridge to Kubernetes.

Jika Anda perlu men-debug beberapa layanan secara paralel, lihat Men-debug beberapa layanan secara bersamaan.

Informasi tentang fitur yang saat ini didukung dan peta strategi yang akan datang untuk Bridge ke Kubernetes dapat ditemukan di Peta strategi Bridge ke Kubernetes.