Skip to content

指摘 追加課題 運用保守 K8sマニフェスト構成管理 #184

@skwt20

Description

@skwt20

K8sマニフェスト構成管理の必要性

タイトル:現状の課題 (K8sマニフェスト構成管理の必要性)

課題①:単一ファイルで大量リソースの定義をしている

  • 問題点: Deployment、Service、ConfigMap など多数のリソースを1つのマニフェストファイルにまとめて管理している。
  • 起きること: 設定内容の把握や修正が困難になり、変更ミスや影響範囲の見落としが発生しやすくなる。
  • 対応の方向性: リソース種別ごとにマニフェストファイルを分割し、可読性と保守性を向上させる。

課題②:環境間のマニフェスト差分管理が明確でない

  • 問題点: 環境ごとの設定差分が明確に整理されておらず、手動調整やファイルコピーに依存している。
  • 起きること: 環境間の設定ズレや反映漏れが発生しやすく、検証環境と本番環境で挙動が異なるリスクが高まる。
  • 対応の方向性: 環境ごとの差分を整理した構成管理(ディレクトリ分割や Kustomize 等)を採用し、差分管理を明確化する。

課題③:アプリケーション単位・機能単位のリソースが混在している

  • 問題点: アプリケーション単位の構成と機能単位の構成が混在しており、リソースの整理方針が統一されていない。
  • 起きること: 変更時にどのアプリケーションや機能へ影響するのか判断しづらく、意図しない影響を与える可能性がある。
  • 対応の方向性: アプリケーション単位・機能単位でディレクトリを分割し、変更影響範囲を明確にする。

課題④:類似の設定が重複している

  • 問題点: 似類似した設定が複数のマニフェストファイルに重複して記述されている。
  • 起きること: 修正時に複数ファイルを同時に更新する必要があり、修正漏れや運用負荷が増大する。
  • 対応の方向性: 共通設定を整理し、再利用可能な構成(共通ファイル化)にすることで、修正コストを削減する。

解決策

解決策①:ディレクトリ分割

  • アプリケーション単位・機能単位でマニフェストを分離し、構成をシンプルに保つ。
  • 各リソースの責務が明確になり、可読性・保守性が向上する。
  • 小規模〜中規模のプロジェクトに適している。
  • 本プロジェクトの基本構造として採用。

解決策②:Kustomize

  • ベースマニフェストに対して、環境差分(dev / prod など)をパッチで管理
  • YAMLの重複を削減しつつ、Kubernetesネイティブに構成を定義可能
  • 本プロジェクトでは、frontend / backend などのアプリケーションを本方式で管理

解決策③:Helm

  • テンプレート化されたマニフェスト(Helm Chart)を利用して構成を管理
  • values.yaml による設定上書きで柔軟にカスタマイズ可能
  • 本プロジェクトでは、Argo CD や Atlantis などの外部コンポーネント導入に利用

解決策④:Argo CD ApplicationSets

  • 複数環境・複数アプリケーションへのデプロイ定義をまとめて管理
  • Git の状態をもとに自動的に Application を生成
  • GitOps に基づき「構成」と「デプロイ状態」を同期

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions