https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md
https://kubernetes.io/docs/reference/using-api/deprecation-guide/

最近、AKS Kubernetesのバージョンアップを対応しているのですが、進めるに当たって上記、KubernetesのChange LogとBreaking Changeの差分を1年に一回、目grepするのは非常にボリュームが多いのとツラくなります。そこで、Plutoを利用すればManifestやクラスターのapiVersionに対してdeprecatedとremovedを検出することができるので、早速オプションから確認していきましょう。

ちなみにAKSのバージョンアップ手順は以下参考に。

[Azure][Kubernetes]AKSバージョンアップ手順


Pluto

https://github.com/FairwindsOps/pluto

detectManifestや標準出力した結果を検知することができます。 detect-all-in-clusterhelmなどに管理されている全てのクラスターから検知が可能です。なので、Manifestを変更時でコンテナをデプロイ/buildした後に pluto detect を実行、全てのクラスターは定期的にバッチで pluto detect-all-in-cluster  を実行するのが望ましいでしょう。

試しにManifestの networking.k8s.io/v1beta1 に変更すると以下のようにv1.19でdepricatedと出力されます。


GitHub Actions

  • .github/workflows/ci_pluto.yaml

https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs

pluto detect-all-in-clusterはscheduleで毎月1日の10時に実行するようにしました。26行目のLogin to AKSではplutoでdetect-all-in-clusterでstgとprodの環境に認証したいため、matrixを使って単一のジョブ定義で変数を使用して、変数の組み合わせに基づいてそれぞれ複数のジョブ実行するようにしました。結果をteeコマンドで$GITHUB_STEP_SUMMARYに渡すとSummaryが見やすくなると、deprecatedとremovedが出た場合はメンションでSlack通知させると便利です。

[GitHub Actions]結果をSummaryに出す場合

  • common.mk

続いてcommon.mkはMakefileですが、以下のManifestで参照するために、kustomize buildで生成されるyamlファイルに対して、 pluto detectを実行します。ここで毎回エラー出て止まらないようにするために、オプションの --ignore-deprecations --ignore-removals --ignore-unavailable-replacements を追加することで、検知はされますが、リターンコード 0になるのでそのままスルーされます。

  • .github/workflows/deploy_manifest.yaml

あとはデプロイ用のManifestに指定すれば完了です。テストしてみましょう。


確認

  • 検知しない場合

  • 検知した場合


まとめ

「Kubernetesの知識地図」Plutoを知ったので、超便利でありがたや!個人のクラスターにも導入しようと思います。次はkubeconformをCI化してみよう。ところで、Azureの技術ブログは今回初めてです!これは歴史に刻む!

ちなみにCircleCIだとOrbsがあるのでこれで良さそう。

https://circleci.com/developer/ja/orbs/orb/fairwinds/pluto


adachin

1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください