Vim مع دعم YAML لـ Kubernetes

ملحوظة. ترجمة.: تمت كتابة المقالة الأصلية بواسطة جوش روسو، وهو مهندس معماري في VMware والذي عمل سابقًا في شركات مثل CoreOS وHeptio، وهو أيضًا المؤلف المشارك لـ Kubernetes alb-ingress-controller. يشارك المؤلف وصفة صغيرة يمكن أن تكون مفيدة جدًا لمهندسي عمليات "المدرسة القديمة" الذين يفضلون الحيوية حتى في عصر السحابة الأصلية المنتصرة.

Vim مع دعم YAML لـ Kubernetes

كتابة بيانات YAML لـ Kubernetes في vim؟ هل أمضيت ساعات لا حصر لها في محاولة معرفة أين يجب أن يكون الحقل التالي في هذه المواصفات؟ أو ربما ستقدر تذكيرًا سريعًا بالفرق args и command؟ هناك أخبار جيدة! من السهل الارتباط بـ Vim خادم لغة yamlللحصول على الإكمال التلقائي والتحقق من الصحة ووسائل الراحة الأخرى. سنتحدث في هذه المقالة عن كيفية إعداد عميل خادم اللغة لهذا الغرض.

(المقالة الأصلية أيضًا هل يوجد فيديو، حيث يتحدث المؤلف ويوضح محتويات المادة.)

خادم اللغة

خوادم اللغة (خوادم اللغة) تحدث عن إمكانيات لغات البرمجة للمحررين و IDEs، حيث يتفاعلون مع بعضهم البعض باستخدام بروتوكول خاص - بروتوكول خادم اللغة (لسب). يعد هذا أسلوبًا رائعًا لأنه يسمح بتنفيذ واحد لتوفير البيانات للعديد من المحررين/بيئات التطوير المتكاملة في وقت واحد. فعلت مسبقا писал حول gopls - خادم اللغة الخاص بـ Golang - وكيف يمكن استخدامه فيه همة. تتشابه خطوات الحصول على الإكمال التلقائي في YAML لـ Kubernetes.

Vim مع دعم YAML لـ Kubernetes

لكي يعمل vim بالطريقة الموضحة، ستحتاج إلى تثبيت عميل خادم اللغة. الطريقتان اللتان أعرفهما هما LanguageClient-neovim и coc.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

Vim مع دعم YAML لـ Kubernetes

وأخيرًا، ستحتاج على الأرجح إلى البدء بالتكوين coc-vim، قدم كمثال. على وجه الخصوص، فإنه ينشط الجمع +مساحة لاستدعاء الإكمال التلقائي.

إعداد الكشف عن خادم لغة yaml

أن coc يمكن استخدام خادم لغة yaml، ويجب أن يُطلب منه تحميل المخطط من 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 والبدء في استخدام الإكمال التلقائي. الضغط +مساحة (أو أي مجموعة أخرى تم تكوينها في vim) يجب أن تعرض الحقول والوثائق المتاحة وفقًا للسياق الحالي:

Vim مع دعم YAML لـ Kubernetes
يعمل هنا +مسافة لأنني قمت بتكوينها inoremap <silent><expr> <c-space> coc#refresh(). إذا لم تكن قد فعلت هذا، راجع التمهيدي coc.nvim للحصول على مثال التكوين.

تحديد إصدار Kubernetes API

حتى كتابة هذه السطور، يأتي خادم لغة yaml مزودًا بمخططات Kubernetes 1.14.0. لم أجد طريقة لتحديد المخطط ديناميكيًا، لذلك قمت بفتحه قضية جيثب المقابلة. لحسن الحظ، نظرًا لأن خادم اللغة مكتوب بخط الآلة الكاتبة، فمن السهل جدًا تغيير الإصدار يدويًا. للقيام بذلك، فقط ابحث عن الملف 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 لم يكن هناك startProbe:

Vim مع دعم YAML لـ Kubernetes

ملخص

آمل أن هذه الفرصة تسعدك بقدر ما أسعدتني. ياملنغ سعيد! تأكد من مراجعة هذه المستودعات لفهم الأدوات المساعدة المذكورة في المقالة بشكل أفضل:

PS من المترجم

وهناك com.vikube, vim-kubernetes и vimkupectl.

اقرأ أيضًا على مدونتنا:

المصدر: www.habr.com

إضافة تعليق