KubernetesのYAMLマニフェストでフォーマッターを利用したい

スポンサーリンク

はじめに

KubernetesのYAML形式のマニフェストをVSCodeで記述する際に、フォーマッターを利用できるように設定していきたいと思います。

結論として、現状では設定したい内容が実現できなかったので、フォーマッターの利用は諦めています。

YAML

YAMLファイルのフォーマッターを利用する場合は、下記の拡張が利用可能です。Kubernetesのシンタックスもサポートしているので便利です。

YAML - Visual Studio Marketplace
ExtensionforVisualStudioCode-YAMLLanguageSupportbyRedHat,withbuilt-inKubernetessyntaxsupport

他にもオートコンプリートやバリデーションが可能になります。

フォーマッターの設定

フォーマッターの設定はsettings.jsonに下記を追加すれば利用できます。

  "[yaml]": {
    "editor.defaultFormatter": "redhat.vscode-yaml",
  },
  "yaml.format.enable": true,

上記の設定をしなくても利用可能ですが、別のファイル形式でフォーマッターを使っている場合などはYAMLファイルのフォーマッターの指定をしていた方が安心かと思います。

ハッシュの中の配列のインデントについて

これでYAMLのフォーマッターは利用できるのですが、Kubernetesの公式ドキュメントでの書き方では、下記のようにハッシュの中の配列を記述する際にインデントしないようにしています。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx # インデントされていない
        image: nginx:1.14.2
        ports:
        - containerPort: 80 # インデントされていない

しかし、下記のissueでも議論されていますが、現状(2022/5/1現在)ではフォーマッターがインデントしてしまいます。

Add Config for Array Indentation Spacing · Issue #172 · redhat-developer/vscode-yaml
I'mworkingwithJekyllforGitHubPages,whichusestheRubygemforparsingYAML.ThisgemprefersthisspacinginArrays:---simple_val:Testing1object_val:sub_object_val:Testing2a...

PRまでは作成されているようですが、そこで更新が止まっているようです。

結局...

結局、インデントしたくなかったためフォーマッターは無効化することにしました。

  "yaml.format.enable": false,

そのうち、機能が追加されたら利用しようかと思います。

参考

タイトルとURLをコピーしました