gashirar's blog

ウイスキーがすき/美味しいものがすき/k8sがすき

IntelliJ IDEAのKubernetes Pluginが便利だったので紹介する

はじめに

KubernetesのManifestはIntelliJ IDEAで書くことが多く、JetBrainsから提供されているKubernetes Pluginを使っている。
今まではちょっと補完されればいいかな程度で使っていたのだが、調べてみるといろいろ機能があって便利なことがわかったのでそれを共有したい。

環境

Kubernetes Pluginでできること

YAMLを書く

まずはYAMLを書くところから。
JSONでもある程度は対応しているが、YAMLで書くことがほとんどだと思うので割愛)

Vanilla編

パラメータを補完する

下記はKubernetes公式ドキュメントから引っ張ってきたDeploymentの例。

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

ここにlivenessProbeの設定を加えてみる。

f:id:gashirar:20200501164830g:plain
補完

カーソルを合わせた状態でctl+spaceを押すと、設定可能なパラメータが表示されるので適宜選んでいけばよい。

ライブテンプレートでひな形を作る

Live Template機能でDeploymentを作ってみる。

f:id:gashirar:20200501165727g:plain
kdep

Pluginからは下記4つのResource Live Templateが提供されている。
必要に応じてカスタマイズできるので、自分がよく使う設定などをいれておくのも◎。

  • kcm(ConfigMap)
  • kdep(Deployment)
  • kpod(Pod)
  • kser(Service)
  • kres(Generic Resource)

ドキュメントを見る

カーソルを合わせることでQuick Documentが表示される。

f:id:gashirar:20200501171144p:plain

CRDのパラメータを補完する

CRDについては、事前に登録しておくことで補完が効くようになる。
今回は例としてIstioのVirtualServiceでやってみる。

まずは登録するCRD自体を取得。
今回はgithubにあるVirtualServiceのCRDをコピペしてLocalに保存しておいた。

そしてCRDの登録。

f:id:gashirar:20200501170922p:plain

登録後はDeploymentの時と同じように補完が効くようになる。

f:id:gashirar:20200501170557p:plain
CRD

Helm編

(自分があまりHelmを使いこなせていないのでさっくり行きます)

ひな形を作る

ディレクトリを指定して右クリックNewHelm Chartを選択すると諸々作成。

f:id:gashirar:20200501171336p:plain

Templateを展開する

Template Fileを指定して右クリックKubernetesHelm Templateを選択すると、Templateの状態とRenderingされた状態とが同時に表示される。かっこいい。

f:id:gashirar:20200501172854p:plain

Lintをかける

ディレクトリを指定して右クリックKubernetesHelm Lintを選択するとChartのチェック。

helm lint helloWorld
==> Linting helloWorld
[INFO] Chart.yaml: icon is recommended

1 chart(s) linted, 0 chart(s) failed

アイコンつけてね、とのこと。

依存関係を解決する

requirements.yamlがあるディレクトリを指定して右クリックKubernetesHelm Dependency Updateを選択すると依存ChartをUpdate。

Kustomize編

(Kustomize関連の機能は自分が調べたところだとあまり多くない印象。ほかにあれば教えてください)

ファイル名を補完する

f:id:gashirar:20200501171756p:plain

クラスタを覗く

書くときの機能は何となく知っていたのだが、実はKubernetesクラスタにつなげてクラスタの状態も確認できる。
Service Tool Window(Alt+8)でKubernetesクラスタの状態をみてみよう。

Resourceを見る

Workloads ResourceやNetowork Resourceなどが表示される。

f:id:gashirar:20200501172208p:plain

個別の項目をクリックすると、下記のような情報が表示される。

f:id:gashirar:20200501172308p:plain

個別の項目をダブルクリックすると、YAMLとして表示される。 これが結構便利。

f:id:gashirar:20200501172421p:plain

コンテナのログを見る

個別のPodを右クリックし、Show Logを選択すると、コンテナのログが表示される。

f:id:gashirar:20200501172556p:plain

クラスタに適用する

左上の緑▶からapplyできる。(右クリックからでも可)

f:id:gashirar:20200501173108p:plain

参考

plugins.jetbrains.com

所感

YAMLの補完はもちろんのこと、個人的にはKubernetesクラスタ上のResourceのYAMLがすぐに見られるのが結構うれしい。
今まではkubectl get pod <pod> -o yaml | vim -みたいなことを毎回やってた。

もともとPHPを書いたりJavaScriptと戯れたりJavaを眺めたりといろいろな言語を行ったり来たりしていたのでIntellJ IDEA Ultimateを購入したのだがやっぱ便利だ。
みんなIntelliJ IDEA Ultimate買うと捗るよ。

samuraism.com