Catatan perev. : Artikel asli ditulis oleh Josh Rosso, seorang arsitek dari VMware yang sebelumnya bekerja untuk perusahaan-perusahaan seperti CoreOS dan Heptio, serta rekan penulis Kubernetes alb-ingress-controller. Penulis membagikan resep kecil, yang dapat sangat berguna untuk insinyur operasi "sekolah tua" yang lebih suka vim bahkan di era cloud pribumi yang menang.
Menulis manifestasi YAML untuk Kubernetes di vim? Sudah menghabiskan banyak waktu untuk mencari tahu di mana bidang selanjutnya harus dalam spesifikasi ini? Atau mungkin Anda akan senang dengan pengingat perbedaanargs
dan cepatcommand
? Ada berita bagus! Vim mudah diikat ke server-yaml-bahasauntuk mendapatkan penyelesaian otomatis, validasi, dan fasilitas lainnya. Di artikel ini, kita akan berbicara tentang cara mengonfigurasi klien server bahasa untuk ini.(Artikel asli juga memiliki video di mana penulis berbicara dan menunjukkan isi materi.)Server bahasa
Server bahasa ( server bahasa) berbicara tentang kemungkinan bahasa pemrograman untuk editor dan IDE, di mana mereka berinteraksi satu sama lain menggunakan protokol khusus - Language Server Protocol (LSP). Ini adalah pendekatan yang hebat: memungkinkan implementasi tunggal untuk menyediakan beberapa editor / IDE data sekaligus. Saya sudah menulis tentang gopl - server bahasa untuk Golang - dan bagaimana bisa digunakan dalam vim . Langkah-langkah untuk mendapatkan pelengkapan otomatis dalam YAML untuk Kubernet serupa.
Agar vim bekerja dengan cara yang dijelaskan, Anda harus menginstal klien server bahasa. Dua metode yang saya tahu adalah LanguageClient-neovim dan coc.vim. Dalam artikel yang akan saya pertimbangkan coc.vim
- ini adalah plugin paling populer saat ini. Anda dapat menginstalnya melalui vim-plug :" Use release branch (Recommend)
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" Or build from source code by use yarn: https://yarnpkg.com
Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'}
Untuk memulai coc
(dan dengan demikian server bahasa-yaml), Anda perlu menginstal node.js yang terinstal:curl -sL install-node.now.sh/lts | bash
Saat coc.vim
dikonfigurasi, instal ekstensi server coc-yaml
dari vim::CocInstall coc-yaml
Terakhir, Anda kemungkinan besar ingin memulai dengan konfigurasi yang coc-vim
disajikan sebagai contoh . Secara khusus, ini mengaktifkan kombinasi <Ctrl> + ruang untuk memanggil pelengkapan otomatis.Mengkonfigurasi penemuan server yaml-bahasa-server
Untuk coc
menggunakan server bahasa-yaml, Anda harus memintanya untuk mengunduh skema dari Kubernetes saat mengedit file YAML. Ini dilakukan dengan mengedit coc-config
::CocConfig
Dalam konfigurasi, Anda perlu menambahkan kubernetes
semua file yaml
. Saya juga menggunakan server bahasa untuk golang
, jadi konfigurasi umum saya terlihat seperti ini:{
"languageserver": {
"golang": {
"command": "gopls",
"rootPatterns": ["go.mod"],
"filetypes": ["go"]
}
},
"yaml.schemas": {
"kubernetes": "/*.yaml"
}
}
kubernetes
- bidang yang disediakan yang menginformasikan server bahasa tentang perlunya mengunduh skema Kubernetes menggunakan URL yang ditentukan dalam konstanta ini . yaml.schemas
dapat diperluas dengan mendukung skema tambahan - untuk detail lebih lanjut, lihat dokumentasi yang relevan .Sekarang Anda dapat membuat file YAML dan mulai menggunakan pelengkapan otomatis. Menekan <Ctrl> + spasi (atau kombinasi lain yang dikonfigurasi dalam vim) akan menampilkan bidang dan dokumentasi yang tersedia sesuai dengan konteks saat ini:
<Ctrl> + space bekerja di sini, karena saya mengonfigurasinya inoremap <silent><expr> <c-space> coc#refresh()
. Jika Anda belum melakukannya, lihat coc.nvim README untuk contoh konfigurasi.Pemilihan Versi API Kubernetes
Pada saat penulisan ini, server yaml-bahasa dikirimkan dengan skema Kubernet 1.14.0. Saya tidak menemukan cara untuk memilih skema secara dinamis, jadi saya membuka masalah GitHub yang sesuai . Untungnya, karena server bahasa ditulis dalam naskah, sangat mudah untuk mengubah versi secara manual. Untuk melakukan ini, cari saja file tersebut server.ts
.Untuk menemukannya di mesin Anda, cukup buka file YAML dengan vim dan temukan prosesnya yaml-language-server
.ps aux | grep -i yaml-language-server
joshrosso 2380 45.9 0.2 5586084 69324 ?? S 9:32PM 0:00.43 /usr/local/Cellar/node/13.5.0/bin/node /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js --node-ipc --node-ipc --clientProcessId=2379
joshrosso 2382 0.0 0.0 4399352 788 s001 S+ 9:32PM 0:00.00 grep -i yaml-language-server
Proses 2380 relevan bagi kami: ini adalah vim yang menggunakannya saat mengedit file YAML.Seperti yang Anda lihat, file tersebut berada di /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js
. Cukup mengeditnya, mengubah nilainya KUBERNETES_SCHEMA_URL
, misalnya, ke versi 1.17.0:
exports.KUBERNETES_SCHEMA_URL = "https://raw.githubusercontent.com/instrumenta/kubernetes-json-schema/master/v1.17.0-standalone-strict/all.json";
Bergantung pada versi yang digunakan, coc-yaml
lokasi variabel dalam kode mungkin berbeda. Perhatikan juga bahwa saya mengubah repositori dari garethr
menjadi instrumenta
. Tampaknya garethr
dia beralih ke sirkuit pendukung di sana.Untuk memverifikasi bahwa perubahan telah berlaku, lihat untuk melihat apakah bidang muncul yang tidak ada sebelumnya [dalam versi Kubernet sebelumnya]. Misalnya, tidak ada startupProbe di sirkuit untuk K8 1.14 :
Ringkasan
Saya harap kesempatan ini membuat Anda senang tidak kurang dari saya. Senang YAML'ing! Pastikan untuk memeriksa repositori ini untuk lebih memahami utilitas yang disebutkan dalam artikel:PS dari penerjemah
Dan ada vikube , vim-kubernetes dan vimkubectl .Baca juga di blog kami: