GCP上の2つのK8Sクラスタの設定差異をdiffで確認する
はじめに
既存の GKE ( Google Kubernetes Engine )クラスタが 2 つありました。
両者とも前任者が手作業で作成していましたが、すでに設定に乖離があることが想定されていました。
乖離を埋めるために、両者にどれだけの違いがあるのか確認しておきたいと思いました。
差異を確認するために工夫した方法を掲載します。
検証環境
$ uname -moi
x86_64 MacBookPro16,1 Darwin
$ bash -version | head -n 1
GNU bash, version 5.1.8(1)-release (x86_64-apple-darwin20.3.0)
$ diff --version | head -n 2
diff (GNU diffutils) 2.8.1
Copyright (C) 2002 Free Software Foundation, Inc.
GCP 上の K8S クラスタの設定を抜き出す
GCP 上の Kubernetes クラスタの設定を抜き出すために、 gcloud
コマンドが利用できます。
例えば以下のような環境に Kubernetes クラスタが作成されていたとします。
- プロジェクト ID :
GCP_MY_PROJECT_ID
- ゾーン名 :
asia_northeast1_b
- Kubernetes クラスタ名 :
GCP_MY_CLUSTER_NAME
この Kubernetes クラスタの設定を抜き出すには、以下のコマンドを実行します。
$ gcloud container clusters describe \
--project GCP_MY_PROJECT_ID \
--zone asia-northeast1-b \
GCP_MY_CLUSTER_NAME > cluster-a-info.yaml
ファイルは YAML 形式で出力されます。
環境が2つあれば、リダイレクト先のファイルをそれぞれ cluster-a-info.yaml
、 cluster-b-info.yaml
のように別のものに分けて出力しておきます。
YAML ファイルの要素をソート
出力された YAML ファイルをそのまま diff
すると、大量に差分が出てきてしまいます。
YAML の各属性情報がソートされていないためです。
YAML の属性情報をソートするために、 yaml-sorter
というコマンドが便利です。
過去に取り上げているので詳細はそちらを参照ください。
$ yaml-sorter -i cluster-a-info.yaml
$ yaml-sorter -i cluster-b-info.yaml
差分を確認
最後に 2 つのファイルを diff
します。
$ diff cluster-a-info.yaml cluster-b-info.yaml
単純に diff
してもいいですが、僕は Vim が使い慣れているので Vim の機能である vimdiff
コマンドを使いました。
$ vimdiff cluster-a-info.yaml cluster-b-info.yaml
差分が左右に表示され、見やすいです。
結構、設定の違いがありますね(汗)
ひとこと
yaml-sorter
は YAML 形式のマニフェストファイルや設定ファイルなどを pretty するにも便利かと思います。
ディスカッション
コメント一覧
まだ、コメントがありません