Unduhan yang berhasil di terminal kontainer adalah bukti nyata tentang lingkungan terminal itu. Itu tidak mengatakan apa pun tentang proses editor, penginstal ekstensi, atau biner yang diambil ekstensi setelahnya. Menyalin variabel proxy di antara ketiganya mengubah satu permintaan yang gagal menjadi seharian penuh penyuntingan yang tidak berkaitan.

Dua lingkungan biasanya berbeda tepat pada satu hal. Menemukan hal itu lebih cepat daripada membaca dokumentasi proxy dua kali.

Proses mana yang membuat permintaan gagal

Tiga permintaan dapat gagal selama satu pemasangan, dan masing-masing punya identitas jaringan sendiri. Editor meminta metadata dan URL paket kepada Marketplace, lalu mengunduh paket. Baru setelah itu host ekstensi menjalankan kode yang mungkin mengambil server bahasa atau biner sendiri. Tahap mana yang rusak menentukan proses mana yang perlu proxy, dan permukaan galat jarang menyebut tahapnya.

Terminal yang berfungsi membuktikan kontainer dapat menjangkau internet, bukan bahwa editor dapat. Baca log ekstensi untuk URL terakhir yang dicobanya. Host yang disebut di sana mengidentifikasi proses dan kebijakan yang berlaku untuknya.

Editor lokal dan kontainer jarak jauh adalah dua lingkungan

Di ruang kerja jarak jauh, ekstensi berjalan di sisi yang dinyatakan jenisnya. Ekstensi antarmuka tetap di editor lokal, dan ekstensi ruang kerja berjalan di kontainer. Proxy yang diatur di satu tidak terlihat oleh yang lain, dan pembangunan ulang membuat lingkungan kontainer dari berkas konfigurasinya, bukan dari apa yang Anda ekspor di shell. Pemisahan itu menjelaskan mengapa ekstensi yang sama terpasang di laptop dan gagal di proyek yang sama lewat SSH.

Baca lokasi pemasangan sebelum menyunting apa pun. Saat log melaporkan pemasangan jarak jauh, lingkungan kontainerlah yang penting.

Letakkan proxy di tempat permintaan dimulai

Untuk Dev Container yang benar-benar membutuhkan proxy HTTP, variabelnya berada di konfigurasi kontainer agar pembangunan ulang mereproduksinya. Fragmen di bawah mengaturnya untuk lingkungan itu. Alamat pengganti mewakili gateway Anda sendiri, dan pengecualian bukan tambahan opsional.

"containerEnv": {
  "HTTP_PROXY": "http://proxy.corp.example:8080",
  "HTTPS_PROXY": "http://proxy.corp.example:8080",
  "NO_PROXY": "localhost,127.0.0.1,.internal.example"
}

Nama variabel menjelaskan protokol tujuan, jadi nilai HTTPS_PROXY boleh dimulai dengan http secara sah. Terapkan perubahan lewat jalur pembangunan ulang yang didukung, dan pertahankan pengecualian, karena proxy yang mencegat host internal merusak layanan yang dibutuhkan kontainer.

Pisahkan kegagalan kepercayaan dari keterjangkauan

Proxy yang terhubung lalu mengembalikan galat verifikasi sertifikat telah mencapai tahap yang lebih lanjut daripada yang menolak koneksi. Kegagalan pertama menginginkan materi kepercayaan yang disetujui organisasi terpasang di lingkungan yang melakukan permintaan. Yang kedua menginginkan alamat dan port yang dapat dijangkau. Memperlakukan keduanya sebagai satu masalah menghasilkan perbaikan yang tidak berfungsi untuk keduanya.

Menonaktifkan verifikasi, atau menjalankan editor dengan hak istimewa, bukan perbaikan untuk proxy yang hilang atau rantai kepercayaan yang tidak ada. Keduanya menukar galat yang terlihat dengan yang diam. Coba lagi ekstensi yang sama setelah itu dan catat URL berikutnya yang gagal.

env | grep -iE '^(http|https|no)_proxy='
code --install-extension ms-python.python --force

Catat sisi ruang kerja mana yang menghasilkan URL itu. Catatan singkat yang menyebut tahap, host, dan sisi lebih bernilai daripada daftar pengaturan yang diubah seseorang, karena catatan itulah yang dapat direproduksi orang berikutnya.

Artikel terkait