Vim αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš YAML αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes

αž…αŸ†αžŽαžΆαŸ†αŸ” αž”αž€αž”αŸ’αžšαŸ‚αŸ– αž’αžαŸ’αžαž”αž‘αžŠαžΎαž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαžŠαŸ„αž™ Josh Rosso αžŠαŸ‚αž›αž‡αžΆαžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αžšαž“αŸ… VMware αžŠαŸ‚αž›αž–αžΈαž˜αž»αž“αž’αŸ’αžœαžΎαž€αžΆαžšαž“αŸ…αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αžŠαžΌαž…αž‡αžΆ CoreOS αž“αž·αž„ Heptio αž αžΎαž™αž€αŸαž‡αžΆαžŸαž αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž“αŸƒ Kubernetes alb-ingress-controller αž•αž„αžŠαŸ‚αžšαŸ” αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αžšαžΌαž”αž˜αž“αŸ’αžαžαžΌαž…αž˜αž½αž™αžŠαŸ‚αž›αž’αžΆαž…αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαž·αžŸαŸ’αžœαž€αžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš "αžŸαžΆαž›αžΆαž…αžΆαžŸαŸ‹" αžŠαŸ‚αž›αž…αžΌαž›αž…αž·αžαŸ’αž vim αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αž™αž»αž‚αžŸαž˜αŸαž™αž“αŸƒαž–αž–αž€αžŠαŸ‚αž›αž˜αžΆαž“αž‡αŸαž™αž‡αŸ†αž“αŸ‡αž€αŸαžŠαŸ„αž™αŸ”

Vim αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš YAML αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes

αž€αžΆαžšαžŸαžšαžŸαŸαžš YAML manifests αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes αž€αŸ’αž“αž»αž„ vim? αž…αŸ†αžŽαžΆαž™β€‹αž–αŸαž›β€‹αžšαžΆαž”αŸ‹β€‹αž˜αŸ‰αŸ„αž„β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž–αŸ’αž™αžΆαž™αžΆαž˜β€‹αžšαž€β€‹αž˜αžΎαž›β€‹αžαžΆβ€‹αžαžΎβ€‹αž€αž“αŸ’αž›αŸ‚αž„β€‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αž‚αž½αžšβ€‹αž“αŸ…β€‹αž€αž“αŸ’αž›αŸ‚αž„β€‹αžŽαžΆβ€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž”αž‰αŸ’αž‡αžΆαž€αŸ‹β€‹αž“αŸαŸ‡? αž¬αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž’αŸ’αž“αž€αž“αžΉαž„αž–αŸαž‰αž…αž·αžαŸ’αžαž€αŸ’αž“αž»αž„αž€αžΆαžšαžšαŸ†αž›αžΉαž€αž™αŸ‰αžΆαž„αž†αžΆαž”αŸ‹αžšαž αŸαžŸαž’αŸ†αž–αžΈαž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆ args ΠΈ command? αž˜αžΆαž“αžŠαŸ†αžŽαžΉαž„αž›αŸ’αž’! Vim αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ… yaml-language-serverαžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αžŸαž»αž–αž›αž—αžΆαž– αž“αž·αž„αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžαŸ†αž‘αžΎαž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαž—αžΆαžŸαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž“αŸαŸ‡αŸ”

(αž’αžαŸ’αžαž”αž‘αžŠαžΎαž˜αž•αž„αžŠαŸ‚αžšαŸ” αžαžΎαž˜αžΆαž“αžœαžΈαžŠαŸαž’αžΌαž‘αŸ?αžŠαŸ‚αž›αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž“αž·αž™αžΆαž™ αž“αž·αž„αž”αž„αŸ’αž αžΆαž‰αžαŸ’αž›αžΉαž˜αžŸαžΆαžšαž“αŸƒαžŸαž˜αŸ’αž—αžΆαžšαŸˆαŸ” )

αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž—αžΆαžŸαžΆ

αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž—αžΆαžŸαžΆ (αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž—αžΆαžŸαžΆ) αž“αž·αž™αžΆαž™β€‹αž’αŸ†αž–αžΈβ€‹αžŸαž˜αžαŸ’αžαž—αžΆαž–β€‹αž“αŸƒβ€‹αž—αžΆαžŸαžΆβ€‹αžŸαžšαžŸαŸαžšβ€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž‘αŸ…β€‹αž’αŸ’αž“αž€β€‹αž€αŸ‚β€‹αžŸαž˜αŸ’αžšαž½αž› αž“αž·αž„ IDE αžŠαŸ‚αž›β€‹αž–αž½αž€αž‚αŸβ€‹αž’αŸ’αžœαžΎβ€‹αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜β€‹αž‡αžΆαž˜αž½αž™β€‹αž‚αŸ’αž“αžΆβ€‹αžŠαŸ„αž™β€‹αž”αŸ’αžšαžΎβ€‹αž–αž·αž’αžΈαž€αžΆαžšβ€‹αž–αž·αžŸαŸαžŸ - αž–αž·αž’αžΈαžŸαžΆαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž—αžΆαžŸαžΆ (αž’αž·αž›αž’αŸαžŸαž—αžΈ) αŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŠαŸαž›αŸ’αž’αž˜αž½αž™ αž–αŸ’αžšαŸ„αŸ‡αžœαžΆαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž˜αž½αž™αžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αžαž›αŸ‹αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαž›αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αž·αž–αž“αŸ’αž’/IDEs αž‡αžΆαž…αŸ’αžšαžΎαž“αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™αŸ” αžαŸ’αž‰αž»αŸ†β€‹αž˜αžΆαž“β€‹αžšαž½αž…αž αžΎαž™ αž”αžΆαž“αžŸαžšαžŸαŸαžš αž’αŸ†αž–αžΈ gopls - αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž—αžΆαžŸαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Golang - αž“αž·αž„αžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„ αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜. αž‡αŸ†αž αžΆαž“αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαž”αŸ†αž–αŸαž‰αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸ…αž€αŸ’αž“αž»αž„ YAML αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes αž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαŸ”

Vim αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš YAML αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes

αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™ vim αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαžΆαž˜αžšαž”αŸ€αž”αžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆ αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαžŠαŸ†αž‘αžΎαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž—αžΆαžŸαžΆαŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž–αžΈαžšαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αžŠαžΉαž„αž‚αžΊ LanguageClient-neovim ΠΈ coc.vim. αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž–αž·αž…αžΆαžšαžŽαžΆ coc.vim - αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αžŠαŸαž–αŸαž‰αž“αž·αž™αž˜αž”αŸ†αž•αž»αžαž“αŸ…αž–αŸαž›αž“αŸαŸ‡αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αžŠαŸ†αž‘αžΎαž„αžœαžΆαž”αžΆαž“αžαžΆαž˜αžšαž™αŸˆ 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'}

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ coc (αž αžΎαž™αžŠαžΌαž…αŸ’αž“αŸαŸ‡ yaml-language-server) αž“αžΉαž„αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αžŠαŸ†αž‘αžΎαž„ node.jsαŸ–

curl -sL install-node.now.sh/lts | bash

αž“αŸ…αž–αŸαž› coc.vim αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αžŠαŸ†αž‘αžΎαž„αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ coc-yaml αž–αžΈ vimαŸ–

:CocInstall coc-yaml

Vim αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš YAML αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes

αž‡αžΆαž…αž»αž„αž€αŸ’αžšαŸ„αž™ αž’αŸ’αž“αž€αž‘αŸ†αž“αž„αž‡αžΆαž…αž„αŸ‹αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ coc-vim, αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰ αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ. αž‡αžΆαž–αž·αžŸαŸαžŸαžœαžΆαž’αŸ’αžœαžΎαž±αŸ’αž™αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαžŸαž€αž˜αŸ’αž˜ + αž…αž“αŸ’αž›αŸ„αŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαž αŸ…αž€αžΆαžšαž”αŸ†αž–αŸαž‰αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ”

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž€αžΆαžšαžšαž€αžƒαžΎαž‰ yaml-language-server

ថអ 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 αž αžΎαž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αŸ’αžšαžΎαž€αžΆαžšαž”αŸ†αž–αŸαž‰αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ” αž€αžΆαžšαž…αž»αž… + αž…αž“αŸ’αž›αŸ„αŸ‡ (αž¬αž”αž“αŸ’αžŸαŸ†αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αŸ’αž“αž»αž„ vim) αž‚αž½αžšαžαŸ‚αž”αž„αŸ’αž αžΆαž‰αžœαžΆαž› αž“αž·αž„αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αžŠαŸ„αž™αž™αŸ„αž„αžαžΆαž˜αž”αžšαž·αž”αž‘αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αŸ–

Vim αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš YAML αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes
αž’αŸ’αžœαžΎαž€αžΆαžšαž“αŸ…αž‘αžΈαž“αŸαŸ‡ + αžŠαž€αžƒαŸ’αž›αžΆαž–αŸ’αžšαŸ„αŸ‡αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ inoremap <silent><expr> <c-space> coc#refresh(). αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αž·αž“αž‘αžΆαž“αŸ‹αž”αžΆαž“αž’αŸ’αžœαžΎαžšαžΏαž„αž“αŸαŸ‡αž‘αŸαžŸαžΌαž˜αž˜αžΎαž› coc.nvim README αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž€αžΆαžšβ€‹αž€αŸ†αžŽαžαŸ‹β€‹αž§αž‘αžΆαž αžšαžŽαŸαŸ”

αž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž€αŸ†αžŽαŸ‚ Kubernetes API

αžαžΆαž˜αž€αžΆαžšαžŸαžšαžŸαŸαžšαž“αŸαŸ‡ αž―αž€αžŸαžΆαžš yaml-language-server αžŠαžΉαž€αž‡αž‰αŸ’αž‡αžΌαž“αž‡αžΆαž˜αž½αž™αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸ Kubernetes 1.14.0 αŸ” αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžœαž·αž’αžΈαžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαžαžΆαž˜αžœαž“αŸ’αžαž‘αŸ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αžΎαž€ αž”αž‰αŸ’αž αžΆ GitHub αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαŸ”. αž‡αžΆαžŸαŸ†αžŽαžΆαž„αž›αŸ’αž’ αžŠαŸ„αž™αžŸαžΆαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž—αžΆαžŸαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž‡αžΆαž’αž€αŸ’αžŸαžšαžœαžΆαž™αž’αž€αŸ’αžŸαžš αžœαžΆαž–αž·αžαž‡αžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αŸ†αžŽαŸ‚αžŠαŸ„αž™αžŠαŸƒαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžŸαŸ’αžœαŸ‚αž„αžšαž€αž―αž€αžŸαžΆαžš 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 αž˜αž·αž“αž˜αžΆαž“αž‘αŸαŸ” startupProbe:

Vim αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš YAML αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes

αžŸαž„αŸ’αžαŸαž”

αžαŸ’αž‰αž»αŸ†β€‹αžŸαž„αŸ’αžƒαžΉαž˜β€‹αžαžΆβ€‹αž±αž€αžΆαžŸβ€‹αž“αŸαŸ‡β€‹αž“αžΉαž„β€‹αž’αŸ’αžœαžΎβ€‹αž±αŸ’αž™β€‹αž’αŸ’αž“αž€β€‹αž–αŸαž‰β€‹αž…αž·αžαŸ’αžβ€‹αžŠαžΌαž…β€‹αžŠαŸ‚αž›β€‹αžœαžΆβ€‹αž”αžΆαž“β€‹αž’αŸ’αžœαžΎβ€‹αž±αŸ’αž™β€‹αžαŸ’αž‰αž»αŸ†β€‹αŸ” αžšαžΈαž€αžšαžΆαž™ YAMLing! αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΆαž€αžŠαžαžΆαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžƒαŸ’αž›αžΆαŸ†αž„αž‘αžΆαŸ†αž„αž“αŸαŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαž™αž›αŸ‹αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αž”αžΆαžŸαŸ‹αž’αŸ†αž–αžΈαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αŸ–

PS αž–αžΈαž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚

αž αžΎαž™αž˜αžΆαž“αž•αž„αžŠαŸ‚αžšαŸ” αžœαžΈαž‚αž»αž”αŸ, vim-kubernetes ΠΈ vimkubectl.

αžŸαžΌαž˜αž’αžΆαž“αž•αž„αžŠαŸ‚αžšαž“αŸ…αž›αžΎαž”αŸ’αž›αž€αŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ–

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹