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

スポンサーリンク

はじめに

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

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

YAML

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

YAML - Visual Studio Marketplace
Extension for Visual Studio Code - YAML Language Support by Red Hat, with built-in Kubernetes syntax support

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

フォーマッターの設定

フォーマッターの設定は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'm working with Jekyll for GitHub Pages, which uses the Ruby gem for parsing YAML. This gem prefers this spacing in Arrays: --- simple_val: Testing 1 objec...

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

結局...

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

  "yaml.format.enable": false,

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

参考

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