元の構成なしで既存の Kubernetes サーバーを安全に更新する方法

元の構成なしで既存の Kubernetes サーバーを安全に更新する方法

構成ファイルがなく、helm でセットアップされていない Kubernetes クラスターを渡されました。作成者は、すべてを cmd ラインから作成しただけだと言っています。これは、nginx イングレス コントローラーを備えた単一の API サーバー用の小規模/新しいクラスターです。Kubernetes については十分に理解しており、新しい Web サーバーを追加することはできましたが、さらに深く理解して既存の構成を更新する必要があります。具体的には、nginx コントローラーで Prometheus メトリックを有効にしたいのですが、何も壊したくありません。

クラスターから既存の構成 (デプロイメント、サービスなど) を取得し、変更を加えて適用する標準的な方法はありますか? または、新しい yaml ファイルを作成せずに、既存の構成の個々の部分に更新をパッチする方法はありますか?

現在の構成は次のようにして取得できると理解しています。

kubectl get services -n nginx -o yaml

この出力には、creationTimestamp、uid などの追加フィールドがあり、削除する必要があると思います。または、出力をそのまま yaml ファイルに保存し、変更を加えて Prometheus を有効にしてから、構成をコントローラーに適用し直すことはできますか? kube-created フィールドは無視されますか? 検討すべき別のアプローチはありますか?

次に、これらの構成をリポジトリに保存する必要がありますか、それともこれが通常の方法ですか?

答え1

必要なものはほとんど揃っているようです。考慮すべき点はほんのわずかです:

  • kubectl -n <ns> get <CRD> -o yaml出力には読み取り専用の識別子がいくつか含まれますが、それらの値を保持していても再定義することはできないため、プレーン ファイルとして保持するには適していません。
  • 使用kubectl edit instead
  • これらを任意の VCS に保持するべきか、それともその場で変更を加えるべきかについては、完全にあなた次第です。これについて議論しようとすると、おそらく炎上するでしょう。

関連情報