บันทึก. แปล: บทความต้นฉบับเขียนโดย Josh Rosso สถาปนิกของ VMware ซึ่งเคยทำงานในบริษัทต่างๆ เช่น CoreOS และ Heptio และยังเป็นผู้เขียนร่วมของ Kubernetes alb-ingress-controller ผู้เขียนแบ่งปันสูตรอาหารเล็กๆ น้อยๆ ที่อาจมีประโยชน์มากสำหรับวิศวกรฝ่ายปฏิบัติการ "แบบเก่า" ที่ชื่นชอบ vim แม้ในยุคที่ชาวพื้นเมืองบนคลาวด์ได้รับชัยชนะก็ตาม
การเขียน YAML ปรากฏสำหรับ Kubernetes เป็นกลุ่ม? ใช้เวลานับไม่ถ้วนในการพยายามคิดว่าฟิลด์ถัดไปควรอยู่ที่ไหนในข้อกำหนดนี้ หรือบางทีคุณอาจจะประทับใจกับการเตือนความจำอย่างรวดเร็วถึงความแตกต่าง args
и command
? มีข่าวดี! Vim เชื่อมโยงได้ง่าย
(บทความต้นฉบับก็เช่นกัน
เซิร์ฟเวอร์ภาษา
เซิร์ฟเวอร์ภาษา (เซิร์ฟเวอร์ภาษา) พูดคุยเกี่ยวกับความสามารถของภาษาการเขียนโปรแกรมให้กับบรรณาธิการและ IDE ซึ่งพวกเขาโต้ตอบกันโดยใช้โปรโตคอลพิเศษ -
เพื่อให้ vim ทำงานในลักษณะที่อธิบายไว้ คุณจะต้องติดตั้งไคลเอ็นต์เซิร์ฟเวอร์ภาษา สองวิธีที่ฉันรู้คือ coc.vim
- นี่คือปลั๊กอินที่ได้รับความนิยมมากที่สุดในขณะนี้ คุณสามารถติดตั้งได้ผ่านทาง
" 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'}
สำหรับการเริ่มต้น coc
(และด้วยเหตุนี้เซิร์ฟเวอร์ yaml) จะต้องติดตั้ง node.js:
curl -sL install-node.now.sh/lts | bash
เมื่อ coc.vim
กำหนดค่าแล้ว ให้ติดตั้งส่วนขยายเซิร์ฟเวอร์ coc-yaml
จากกลุ่ม:
:CocInstall coc-yaml
สุดท้ายนี้ คุณมักจะต้องการเริ่มต้นด้วยการกำหนดค่า coc-vim
, นำเสนอ
การตั้งค่าการตรวจจับเซิร์ฟเวอร์ yaml-ภาษา
ที่ coc
สามารถใช้ yaml-Language-server ได้ โดยจะต้องขอให้โหลดสคีมาจาก Kubernetes เมื่อแก้ไขไฟล์ YAML ทำได้โดยการแก้ไข coc-config
:
:CocConfig
ในการกำหนดค่าคุณจะต้องเพิ่ม kubernetes
สำหรับไฟล์ทั้งหมด yaml
. ฉันยังใช้เซิร์ฟเวอร์ภาษาสำหรับ golang
ดังนั้นการกำหนดค่าทั่วไปของฉันจะเป็นดังนี้:
{
"languageserver": {
"golang": {
"command": "gopls",
"rootPatterns": ["go.mod"],
"filetypes": ["go"]
}
},
"yaml.schemas": {
"kubernetes": "/*.yaml"
}
}
kubernetes
— ช่องสงวนที่บอกให้เซิร์ฟเวอร์ภาษาดาวน์โหลดสคีมา Kubernetes จาก URL ที่กำหนดไว้ yaml.schemas
สามารถขยายเพื่อรองรับโครงร่างเพิ่มเติมได้ - ดูรายละเอียดเพิ่มเติมที่
ตอนนี้คุณสามารถสร้างไฟล์ YAML และเริ่มใช้การเติมข้อความอัตโนมัติได้ กำลังกด +ช่องว่าง (หรือชุดค่าผสมอื่นที่กำหนดค่าเป็นกลุ่ม) ควรแสดงฟิลด์และเอกสารที่มีอยู่ตามบริบทปัจจุบัน:
ทำงานที่นี่ +space เพราะฉันกำหนดค่าไว้ inoremap <silent><expr> <c-space> coc#refresh()
. หากคุณยังไม่ได้ทำสิ่งนี้ให้ดู
การเลือกเวอร์ชัน Kubernetes API
ในขณะที่เขียนบทความนี้ yaml-Language-server มาพร้อมกับ Kubernetes 1.14.0 schema ฉันไม่พบวิธีเลือกสคีมาแบบไดนามิก ดังนั้นฉันจึงเปิดขึ้นมา server.ts
.
หากต้องการตรวจจับมันบนเครื่องของคุณ เพียงเปิดไฟล์ YAML ด้วย vim แล้วค้นหากระบวนการด้วย 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
สำหรับเรา กระบวนการ 2380 มีความเกี่ยวข้อง: เป็นสิ่งที่ vim ใช้ในการแก้ไขไฟล์ YAML
อย่างที่คุณเห็นไฟล์นั้นอยู่ในนั้น /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js
. เพียงแก้ไขโดยการเปลี่ยนค่า KUBERNETES_SCHEMA_URL
ตัวอย่างเช่น สำหรับเวอร์ชัน 1.17.0:
// old 1.14.0 schema
//exports.KUBERNETES_SCHEMA_URL = "https://raw.githubusercontent.com/garethr/kubernetes-json-schema/master/v1.14.0-standalone-strict/all.json";
// new 1.17.0 schema in instrumenta repo
exports.KUBERNETES_SCHEMA_URL = "https://raw.githubusercontent.com/instrumenta/kubernetes-json-schema/master/v1.17.0-standalone-strict/all.json";
ขึ้นอยู่กับรุ่นที่ใช้ coc-yaml
ตำแหน่งของตัวแปรในโค้ดอาจแตกต่างกันไป โปรดทราบว่าฉันเปลี่ยนที่เก็บจาก garethr
บน instrumenta
. ดูเหมือนว่า garethr
เปลี่ยนไปใช้วงจรรองรับที่นั่น
หากต้องการตรวจสอบว่าการเปลี่ยนแปลงมีผลหรือไม่ ให้ดูว่ามีช่องที่ไม่มีมาก่อน [ใน Kubernetes เวอร์ชันก่อนหน้า] หรือไม่ ตัวอย่างเช่นในไดอะแกรมสำหรับ K8s 1.14 ไม่มี
สรุป
ฉันหวังว่าโอกาสนี้จะทำให้คุณพอใจมากเท่ากับฉัน มีความสุข YAMLing! อย่าลืมตรวจสอบที่เก็บข้อมูลเหล่านี้เพื่อทำความเข้าใจโปรแกรมอรรถประโยชน์ที่กล่าวถึงในบทความให้ดียิ่งขึ้น:
- coc-เป็นกลุ่ม:
https://github.com/neoclide/coc.nvim ; - coc-yaml:
https://github.com/neoclide/coc-yaml .
ปล.จากผู้แปล
และก็ยังมี
อ่านเพิ่มเติมในบล็อกของเรา:
- «
kubebox และ shell อื่นๆ สำหรับ Kubernetes "; - «
ตัวช่วยคอนโซลสำหรับการทำงานกับ Kubernetes ผ่าน kubectl '
ที่มา: will.com