| Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
| GitOpsの核となるアイデア – 1/2 • Single Source of Truth – Gitリポジトリ上のコードによって、インフラとアプリケーションの状態が決定する • 状態の差分検出とconversion – 実行環境がSingle Source of Truthとの差分を検出して自律的に状態を変える – 環境の差分が解消されない場合は、アラートを上げる 実行環境 差分検出 装置 ✓ アプリ x 3 ✓ データストア x 2 ✓ ネットワークはアプリ→ データストアを許可 ✓ …etc 自環境に 差分を反映 (conversion) Single Source of Truth (manifest)
| GitOpsの考え方に基づくCI/CDパイプライン • 環境への変更適用はSingle Source of Truthを介して行われる Single Source of Truthを中心としたパイプラインを構成 差分検出装置 conversion Ops PR: 運用操作 CIツール コンテナレジストリ PR:環境別のmanifestの作成・適用 アプリケーションコード Single Source of Truth (manifest) Dev コードをプッシュ > docker push 差分検出装置 Production Staging 差分検出装置 development
| GitOpsのメリット • 環境の状態の保証 従来型のCI/CDの課題を解決 差分検出装置 conversion Ops PR: 運用操作 CIツール コンテナレジストリ PR:アプリの更新 アプリケーションコード Single Source of Truth (manifest) Dev コードをプッシュ > docker push クラスターの状態はSingle Source of Truth によって決定される 差分検出装置 Production Staging 差分検出装置 development
| GitOpsでの開発 – リリースのフロー • もう少し詳しくGitOpsの環境を表現した図 Single Source of Truth テンプレート 環境毎のmanifest master release 差分検出装置 Staging 差分検出装置 Production build test docker push create manifest Dev
| GitOpsでの開発 – リリースのフロー • featureブランチをPushするとテストを実行 Single Source of Truth テンプレート 環境毎のmanifest master release 差分検出装置 Staging 差分検出装置 Production build test docker push create manifest Dev feature-xxx コードをプッシュ
| GitOpsでの開発 – リリースのフロー • releaseにマージするとimageのPushとmanifestの更新PRを発行 Single Source of Truth テンプレート 環境毎のmanifest master release 差分検出装置 Staging 差分検出装置 Production build test docker push create manifest Dev feature-xxx コードをプッシュ v1.0-release-xxxxx PR
| GitOpsでの開発 – リリースのフロー • manifestを更新するとその内容が環境(staging)に反映される Single Source of Truth テンプレート 環境毎のmanifest master release 差分検出装置 Staging 差分検出装置 Production build test docker push create manifest Dev v1.0-release-xxxxx feature-xxx merge PR
| GitOpsでの開発 – リリースのフロー • stagingでの確認が完了したらmasterにマージ。あとは一緒 Single Source of Truth テンプレート 環境毎のmanifest master release 差分検出装置 Staging 差分検出装置 Production build test docker push create manifest Dev feature-xxx コードをプッシュ v1.0-release-xxxxx PR v1.0-master-xxxxx
| GitOpsでの開発 – リリースのフロー • 今度はproductionにmanifestの更新が反映される Single Source of Truth テンプレート 環境毎のmanifest master release 差分検出装置 Staging 差分検出装置 Production build test docker push create manifest Dev feature-xxx merge PR v1.0-release-xxxxx v1.0-master-xxxxx
| Single Source of Truthにテンプレートエンジンを利用する • Single Source of Truthでテンプレートエンジンを使うモチベーション – 環境毎のmanifestを別々に作成するのはつらい。共通化できるところはしたい – テンプレートでは現状の構成を把握しにくいので、テンプレートから作ったrawなmanifestも 管理しておく – 運用オペレーションのI/Fにもなるので、オペレーションのやり易さも考慮したい manifestのバリエーションを生成する機能がGitOpsと高相性 差分検出装置 conversion 差分検出装置 Production Staging 差分検出装置 Development Single Source of Truth テンプレート 環境毎のmanifest
| GitOpsにおけるHelmの使い方(例) • クライアント側でmanifest生成を完結する方法を利用 – Chartから環境毎のValueを当てはめたmanifestを生成 – クラスターが自分に対応するmanifestをみて、デリバリーをおこなう Chart / Valueとそこから生成したmanifestをSingle Source of Truthとして扱う 差分検出装置 conversion 差分検出装置 Production Staging 差分検出装置 Development Single Source of Truth ChartとValue 環境毎のmanifest > helm template
| デモの構成 Single Source of Truth テンプレート 環境毎のmanifest master release 差分検出装置 Namaspace:Production build test docker push create manifest Dev Namaspace:Staging cowweb-gitops hhayakaw/cowweb
| Safe Harbor Statement The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.