Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kubernetes における宣言的なリソースデリバリーの実践

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Kubernetes における宣言的なリソースデリバリーの実践

Avatar for Shota Suzuki

Shota Suzuki

June 11, 2021
Tweet

More Decks by Shota Suzuki

Other Decks in Technology

Transcript

  1. 自己紹介/会社紹介 鈴木 祥太 (@sshota0809) • SRE チーム所属 ◦ B2B 向け

    SaaS Product を横串で担当 • 最近 Kubernetes の Gateway API に興味を持っています 株式会社ユーザベース • 「経済情報で、世界を変える」のミッション 提供サービス: 経済情報 プラット フォーム ソーシャル 経済 メディア スタートアップ情報 プラットフォーム B2Bマーケティング プラットフォーム etc...
  2. 弊社プロダクトの CD における課題 dev#1 dev#2 prd#1 prd#2 ・・・ ・・・ templateファイル

    (Deployment/etc...) 変数ファイル (e2e/dev/prd) envsubst Kubernetes のコンテキスト情報 をパイプラインの中で選択し kubectl コマンドによりデプロイ 1. お手製シェルによるマニフェスト生成 • 変数ファイルに環境ごとの変数を設定 • envsubst でテンプレートファイルに変数を埋め込んで マニフェスト生成 ◦ envsubst はシンプルだがやれることが限られる 2. Kubernetes コンテキストを意識するデプロイ • どのクラスタにデプロイするか(どのコンテキストを使う か)はパイプラインにパラメータとしてユーザが渡す ◦ 潜在的なオペミスのリスク ◦ Jenkins サーバ上でコンテキストを管理する必要性 3. リソースのデプロイが手続き的 • パイプライン内部で kubectl コマンドを利用してデプロイ ◦ どのクラスタにどのアプリがデプロイされているの かは宣言的に管理されていない ▪ 規模が大きくなるにつれて運用が辛くなる
  3. envsubst によるマニフェスト作成 ... export HOST=hoge ... apiVersion: networking.istio.io/v1alpha3 kind: VirtualService

    metadata: name: test namespace: test spec: hosts: - ${HOST}.com ... apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: test namespace: test spec: hosts: - hoge.com ... = +
  4. GitOps による宣言的なリソースデリバリー dev#1 dev#2 prd#1 prd#2 ・・・ ・・・ templateファイル (Deployment/etc...)

    変数ファイル (e2e/dev/prd) 1. helm によるテンプレート管理 • リッチなテンプレートエンジンによる柔軟性の高さ 2. Kubernetes コンテキスト情報をパイプラインから排除 • どのクラスタにリソースがデプロイされるか ArgoCD が保持 ◦ ArgoCD の設定ファイル自身も CRD によって宣言的に 管理される ◦ Kubernetes のコンテキスト情報を管理する必要無し 3. リソースのデプロイが宣言的 • GitOps による Single Source of Truth の実現 ◦ クラスタにどのようなリソースがデプロイされている かすべてリポジトリ内に定義されている ArgoCD が Deploy された クラスタ
  5. まとめ 1. envsubst を利用した独自のマニフェスト生成 + 手続き的なデリバリーに課題感 2. helm + ArgoCD

    を利用した GitOps 化を実施 3. 柔軟性の高いテンプレートエンジン + 宣言的なデリバリーを実現