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

OCI DevOps ではじめる CI/CD ~コンテナアプリケーション開発における CI/C...

OCI DevOps ではじめる CI/CD ~コンテナアプリケーション開発における CI/CD 編~

Edge Tech+ 2023 資料

oracle4engineer

November 17, 2023
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. Copyright © 2023, Oracle and/or its affiliates 2 Profile Name

    • Yutaka Ichikawa/市川 豊 Belong • Solutions Architect Role • Principal Cloud Solution Engineer SNS • X/GitHub/Qiita:cyberblack28 Blog • https://cyberblack28.hatenablog.com/ Materials • https://speakerdeck.com/cyberblack28/ Community • Oracle Cloud Hangout Cafe #ochacafe • CloudNative Days Tokyo #cndt #o11y2022 Certified • Certified Kubernetes Administrator • Certified Kubernetes Application Developer • Certified Kubernetes Security Specialist • Kubernetes and Cloud Native Associate Publications 12/11-12 ハイブリッド開催 https://event.cloudnativedays.jp/cndt2023
  2. Copyright © 2023, Oracle and/or its affiliates 3 ThinkIT +

    Oracle Cloud Hangout Café Oracle Cloud Hangout Café ダイジェスト • 第1回「CI/CD最新事情」 2023年1月 • 第2回「マイクロサービスの認証・認可とJWT」 2023年2月 • 第3回「Kubernetes Operator 超入門」 2023年3月 • 第4回「Kubernetes のセキュリティ」 2023年4月 • 第5回「実験!カオスエンジニアリング」 2023年5月 • 第6回「Service Mesh がっつり入門!」 2023年6月 https://thinkit.co.jp/article/20858
  3. Copyright © 2023, Oracle and/or its affiliates 4 ThinkIT +

    Oracle Cloud Hangout Café Oracle Cloud Hangout Café ダイジェスト • 第1回「Kubernetes 超入門」 2023年12月 • 第2回「IaC のベストプラクティス」 2023年1月 • 第3回「Kubernetesのネットワーク」 2023年2月 • 第4回「Pythonで作るAPIサーバー」 2023年3月 • 第5回「Observability 再入門」 2023年4月 • 第6回「Kubernetes のオートスケーリング」 2023年5月 第二弾 連載開始
  4. Copyright © 2023, Oracle and/or its affiliates 5 1. CI/CD

    とは? • CI/CD おさらい • CI(継続的インテグレーション)とは? • CD(継続的デリバリー)とは? • CD(継続的デリバリー)と CD(継続的 デプロイ) • CD/CD の導入におけるメリット • CI/CD の導入における困難 Agenda 2. コンテナアプリケーション開発における CI/CD • CIOps Push 型 • GitOps Pull 型 • ツールの傾向 • CI/CD 導入の目的 2. OCI DevOps で実現する CI/CD • OCI DevOps 概要 • OCI DevOps CI • OCI DevOps CD • OCI DevOps Demo • 参考情報
  5. Copyright © 2023, Oracle and/or its affiliates 7 CI/CD とは?

    CI/CD おさらい CI = Continuous Integration = 継続的インテグレーション ソースコードの更新を契機にビルド、テストが進行して、アプリケーションがデプロイされるまでの工程が自動化された パイプライン ソースコードの修正を コードリポジトリに コミット/プッシュ CI/CD パイプラインによる ビルド、テスト、デプロイ CD = Continuous Delivery (or Deployment) = 継続的デリバリー(デプロイ)
  6. Copyright © 2023, Oracle and/or its affiliates 8 CI/CD とは?

    CI(継続的インテグレーション)とは? アプリケーション開発に必要となるビルド、テスト、成果物(アーティファクト)の保存までの工程を自動化して、継 続的に行われる状態にすること • ソースコードの変更(更新)を契機に自動的にテストが開始されて、ソースコードの品質を担保 • ソースコードの変更(更新)を契機にアプリケーションビルド、アプリケーションテスト、コンテナイメージビルド、コンテナ イメージレジストリへの格納(プッシュ) CI 環境を整備することで、早期バグの発見による品質向上、検証時間の短縮によるリリーススピード向上、開発者 が開発に集中できる環境でより良い開発サイクルを実現。 (etc.)
  7. Copyright © 2023, Oracle and/or its affiliates 9 CI/CD とは?

    CD(継続的デリバリー)とは? CI(継続的インテグレーション)によって生み出された成果物(アーティファクト)を、実際の環境(ステージングや プロダクション)へ自動的に配置すること • CI で生成された成果物をステージングやプロダクション環境へ反映 • CI でコンテナレジストリに格納したコンテナイメージを Kubernetes クラスタへ反映 CD 環境を整備することで、エンドユーザに影響を与えることなく、高頻度、安定かつ安全にアプリケーションのリリー スを実現。 (etc.)
  8. Copyright © 2023, Oracle and/or its affiliates 10 CI/CD とは?

    CD(継続的デリバリー)と CD(継続的デプロイ) CD(継続的デリバリー)は、CI(継続的インテグレーション)によって生み出された成果物(アーティファクト)を実際 の環境に配置する過程で、人による判断・承認プロセスを導入 CD(継続的デプロイ)は、CI(継続的インテグレーション)によって生み出された成果物(アーティファクト)を実際の 環境に配置する過程で、人による判断・承認プロセスが無く、ノンストップ
  9. Copyright © 2023, Oracle and/or its affiliates 11 CI/CD とは?

    CI/CD の導入におけるメリット • リリースサイクルの短縮により、市場ニーズに早く対応できる • テスト工程が組まれていることにより、アプリケーションの品質を担保できる • 各工程が自動化されたパイプラインのため、全体的な工数削減を見込める • 開発者は開発ロジックに集中できるため、開発効率の向上を見込める 最終的には、早く正確により良いサービスを提供できることにより、エンドユーザ様の満足度、企業競争力や収益の 向上につながる。
  10. Copyright © 2023, Oracle and/or its affiliates 12 CI/CD とは?

    CI/CD の導入における困難 • CI/CD 環境の構築、運用に乗せるまでは試行錯誤 • 多種多様で豊富な CI/CD ツールの技術選定 • コストの検討 • 定期的な CI/CD 環境のメンテナス 導入において、時間やコストも要するが、長い目で見たときにその分のメリットをどう見込むかが鍵 (etc.)
  11. Copyright © 2023, Oracle and/or its affiliates 14 コンテナアプリケーション開発における CI/CD

    CIOps Push 型 ソースコードが更新されるたびにCIパイプラインが稼働して、アプリケーションテスト、コンテナイメージビルド、コンテナイメー ジプッシュ、CDパイプラインによるデプロイ。 コードをソースコードリポジトリにコミッ ト/プッシュ CIパイプラインによる テスト、ビルド、 イメージプッシュ Developer Code Repository CI/CD Pipeline Operator Infrastructure Engineer コンテナプラットフォーム へのデプロイ Code Dockerfile manifest Build Run イメージ レジストリ Ship イメージ 共有 CI CD
  12. Copyright © 2023, Oracle and/or its affiliates 15 コンテナアプリケーション開発における CI/CD

    CIOps Push 型 CIOps におけるセキュリティリスクと管理の煩雑化 Dev/Staging/Prod CI/CD Container Image Registry Code & Config Repository Developer Read/Write Read Read/Write Read Read/Write apply Image Pull Kubernetes クラスタが増えるたびにセキュリ ティ含めた設定や権限管理も増えるため、 管理が煩雑となる。。 Kubernetes クラスタ外部での権限管理となるため、セキュリティリスクがある。。 K8s API
  13. Copyright © 2023, Oracle and/or its affiliates 16 コンテナアプリケーション開発における CI/CD

    GitOps Pull型 Kubernetes クラスタ内に配置された GitOps オペレーターが Config リポジトリを定期的にポーリングして、更新を検知 して更新内容を Kubernetes クラスタに反映する仕組み。 ① Code Change & Git Push ② Image Build & Test & Image Push Developer Code Repository CI Pipeline Operator Infrastructure Engineer コンテナープラット フォームへのデプロイ イメージ共有 Code Dockerfile manifest Build Run Ship Config Repository ③ Pull Request ④ Pull Request Merge イメージ レジストリ ⑤ Polling & Sync GitOps オペレター CI CD
  14. Copyright © 2023, Oracle and/or its affiliates 17 コンテナアプリケーション開発における CI/CD

    GitOps Pull型 CIOps の課題を解消 Code と Config のリポジトリを分けることで、相互の影響を回避および境界線の明確化。特権ユーザの認証情報を外 部に持つ必要が無く、API を外部に公開する必要もない。 CI Pipeline Container Image Registry Dev/Staging/Prod Code Repository Developer Read Config Repository GitOps Operator apply Read/Write Read Code と Config のリポジトリを 分けることで相 互の影響を回避 できて、境界線 が明確。 認証情報を外部に持つ必要がないため、 クラスタが増えても管理しやすい。 K8S API Read/Write Read Read Read/Write Image Pull Read/Write
  15. Copyright © 2023, Oracle and/or its affiliates 18 コンテナアプリケーション開発における CI/CD

    GitOps Pull型 CIOps の課題を解消 マニフェスト専用の Git リポジトリ上のマニフェストファイルの内容と実環境の状態が同一。マニフェストを Git 管理すること で、履歴管理、ロールバック対応などが柔軟に行える。再現性を保証。 CI Pipeline Container Image Registry Code Repository Developer Config Repository Dev Staging Prod manifest Equal マニフェストファイルの内容と稼働している Kubernetes クラスタ状態が同一。 Git 管理により履歴管理、ロールバックも容易。
  16. Copyright © 2023, Oracle and/or its affiliates 19 コンテナアプリケーション開発における CI/CD

    GitOps Pull型 GitOps のメリット • マニフェストファイルをGit管理 デプロイ先に対して「誰が、何時、何」を変更したのか(変更差分)を履歴で追える デプロイ先をいつでも前の状態に戻すこと(ロールバック)ができる プルリクエストによるレビュー・マージプロセスを通すことで組織ガバナンスを適用できる • 自動化 手動コマンドによるヒューマンエラーの排除 運用コストの軽減
  17. Copyright © 2023, Oracle and/or its affiliates 20 コンテナアプリケーション開発における CI/CD

    ツールの傾向 CI ツール CircleCI、TravisCI、GitHub Actions、GitLab Runner など、これまでも利用され続けている CI ツールと GitOps ツールを組み合わせるケース。 Kubernetes の CustomResource としてパイプラインを定義(Kubernetes マニフェスト)できる、Kubernetes- native な CI を実現できる TEKTON や Argo Workflows と GitOps ツールを組み合わせるケース。
  18. Copyright © 2023, Oracle and/or its affiliates 21 コンテナアプリケーション開発における CI/CD

    ツールの傾向 GitOps ツール Cloud Native 関連のカンファレンスやコミュニティイベントでよく取り上げられている GitOps ツール。
  19. Copyright © 2023, Oracle and/or its affiliates 22 コンテナアプリケーション開発における CI/CD

    CI/CD 導入の目的 コンテナの可搬性(Portability)とスピード(Agility)を持ち合わせ、 品質および生産性の高いアプリケーション開発を実現 リリースサイクルを速め、 エンドユーザに最高品質のサービスを提供 これまで時間やコストを要していた箇所の改善、 より良いビジネスロジックに時間やコストを傾ける エンドユーザ様の満足度、企業収益の向上につなげる
  20. Copyright © 2023, Oracle and/or its affiliates 23 コンテナアプリケーション開発における CI/CD

    CI/CD 導入の目的 クラウドネイティブにおけるコンテナアプリケーション開発は、銀の弾丸ではない 実際に開発するアプリケーションの特性、組織体制、チーム体制、コスト、教育など 基盤・開発・運用の観点からしっかりと見据えて適材適所に検討する必要がある
  21. Copyright © 2023, Oracle and/or its affiliates 25 OCI DevOps

    で実現する CI/CD OCI DevOps 概要 OCI上でソフトウェアをビルド、テスト、およびデプロイして、開発ライフサイクルの各フェーズを自動化 Bare Metal Compute Container Engine For Kubernetes Virtual Machine Functions 環境管理 デプロイメント・パイプライン アーティファクト管理 Fully-managed OCI DevOps デプロイ ロールバック ビルド・パイプライン OCI DevOps OCIR & Artifact Registry
  22. Copyright © 2023, Oracle and/or its affiliates 26 OCI DevOps

    で実現する CI/CD OCI DevOps 概要 コード 管理 ビルド 成果物 管理 デプロイ End to End の開発・運用プロセス コード管理、ビルド・パイプライン、 成果物 管理、デプロイメント・パイプラインから構成 される各機能を用いた、一気通貫の開発・ 運用プロセスを実現 幅広い環境に対応 アーティファクトサービスと連携、実行環 境を問わず、幅広い環境へのデプロイ を実現 Bare Metal Compute & Virtual Machine OKE Functions OCIR Artifact Registry 環境管理 アーティファクト管理 OCI DevOpsのサービスとしての価 格は無料 価格無料 (*コード・リポジトリのストレージ、およびビルドのためのコン ピュートは別途必要) 一気通貫の開発・運用プロセス、幅広いリリース環境、コスト削減
  23. Copyright © 2023, Oracle and/or its affiliates 27 OCI DevOps

    で実現する CI/CD OCI DevOps 概要 OCI DevOps の IAM ポリシーを利用して、各ユーザの権限を制御 Environment Build Pipeline Deployment Pipeline Artifact Developer SRE Infrastructure Engineer 開発、ビルド、テスト DevOps 環境の構築 DevOps 環境の運用/管理(監視含む) アプリケーションデプロイの承認など Code Repository OCI Observability Services cooperation https://docs.oracle.com/ja-jp/iaas/Content/devops/using/devops_iampolicies.htm
  24. Copyright © 2023, Oracle and/or its affiliates 28 OCI DevOps

    で実現する CI/CD OCI DevOps CI OCI DevOps における CI(継続的インテグレーション) Code Repository Build Pipeline Artifact デプロイメント・パイプライン接続 OCIR/Artifact Registryにアーティファクトの配布 アプリケーションテスト DEPLOY DELIVER TEST BUILD CODE ビルド・パイプライン コードリポジトリ アプリケーションビルド/コンテナイメージビルド Gitリポジトリによるソースコード管理
  25. Copyright © 2023, Oracle and/or its affiliates 29 OCI DevOps

    で実現する CI/CD OCI DevOps CI OCI 環境にプライベートリポジトリを構築してセキュアかつ効率的にソースコードの管理を実現 Code Repository • 独自のプライベートコードリポジトリの作成 • GitHub/GitLab/Bitbucket クラウドなどの外部コードリポジトリとのミラー接続可能 • OCI DevOps のトリガー機能を利用することで、ビルド・パイプラインとのイベントドリブンな連携が可能 CODE
  26. Copyright © 2023, Oracle and/or its affiliates 30 OCI DevOps

    で実現する CI/CD OCI DevOps CI OCI の Artifact Registry と OCIR との連携によるアーティファクト管理 • コンテナイメージをセキュアに管理する OCIR ( Oracle Container Image Registry ) • ソフトウェア開発パッケージを格納、共有および管理する Artifact Registry OCIR Artifact Registry OCI DevOpsと連携して、パイプラインにおいてアーティファクトの格納、共有、配布の自動化を実現 Artifact
  27. Copyright © 2023, Oracle and/or its affiliates 31 OCI DevOps

    で実現する CI/CD OCI DevOps CI ソフトウェアビルド、テスト、アーティファクト配布の自動化を実現するビルド・パイプライン OCI DevOps のビルド・パイプラインでは、ステージという単位で組み合わせながら、パイプラインを GUI ベースに構築 Build Pipeline DEPLOY DELIVER TEST BUILD • 「マネージド・ビルド」というテンプレートからステージを作成 • マネージド・ビルド・ランナーという仮想マシンが起動して、その中でアプリ ケーションのビルド、テストを実施する仕組み • マネージド・ビルド・ランナーで実行するワークフローは、 「 build_spec.yaml 」に定義して登録 「アーティファクトの配信」というテンプレートからステージを作成 して、配信する OCIR、 Artifact Registry を設定 「デプロイメントのトリガー」というテンプレートからステージを作成 して、デプロイメント・パイプラインとの連携を設定
  28. Copyright © 2023, Oracle and/or its affiliates 32 OCI DevOps

    で実現する CI/CD OCI DevOps CI ステージ単位にテンプレートを利用して、簡単にビルド・パイプラインを構築 「ステージの追加」、「パラレル・ステージの追加」を選択して、テンプレートに沿ってステージを作成 Build Pipeline
  29. Copyright © 2023, Oracle and/or its affiliates 33 OCI DevOps

    で実現する CI/CD OCI DevOps CI ステージ単位にテンプレートを利用して、簡単にビルド・パイプラインを構築 Build Pipeline TEST BUILD DELIVER DEPLOY build_spec.yaml OCIR Artifact Registry Deployment Pipeline 事 前 に セ ッ ト ア ッ プ し て テ ン プ レ ー ト か ら 登 録
  30. Copyright © 2023, Oracle and/or its affiliates 34 OCI DevOps

    で実現する CI/CD OCI DevOps CI ビルド、テスト、アーティファクト生成まで一連のワークフローを専用ファイルで管理 Build Pipeline マネージド・ビルド・ランナーは、「build_spec.yaml」に定義されたワークフローを仮想マシン内で実行
  31. Copyright © 2023, Oracle and/or its affiliates 35 OCI DevOps

    で実現する CI/CD OCI DevOps CI ビルドからデプロイメント・パイプライン連携までの流れを可視化 Build Pipeline build_spec.yamlで定義したワークフローの実行結果 各ステージの実行結果 各 ス テ ー ジ の 実 行 ロ グ
  32. Copyright © 2023, Oracle and/or its affiliates 36 OCI DevOps

    で実現する CI/CD OCI DevOps CI OCI DevOpsのトリガー機能を利用して、コードリポジトリへのイベントをトリガーにビルド・パイプラインを自動実行 Build Pipeline Code Repository 外部接続機能を利用することで、GitHub、GitLab、Bitbucketクラウド、Oracle Visual Builder Studioとの連携も可 能 ※2023年11月時点 Run Build・Pipeline Git push OCI DevOps Code Repository Oracle Visual Builder Studio
  33. Copyright © 2023, Oracle and/or its affiliates 37 OCI DevOps

    で実現する CI/CD OCI DevOps CI イベントドリブンな連携を実現するトリガー機能 Build Pipeline Code Repository コード・リポジトリのタイプによってトリガー可能なイベントが異なる 2023年11月時点 コード・リポジトリ トリガー可能なイベント 備考 • Push Pull Request 機能は、開発のロードマップに 予定されている(2023年11月時点) • Push • Pull request (created, updated, merged, reopened) • Push • Merge request (created, updated, merged, reopened) GitLab, GitLab Server • Push • Pull request (created, updated, merged) Bitbucket Cloud, Bitbucket Server • Push • Pull request (created, updated, merged) OCI Code Repository Visual Builder
  34. Copyright © 2023, Oracle and/or its affiliates 38 OCI DevOps

    で実現する CI/CD OCI DevOps CD • デプロイ先の指定(Compute,OKE,Functions) • デプロイにおける承認管理 • デプロイ戦略(Bule/Green Deployment & カナリアリリース) • 関数の呼び出し Deployment Pipeline DEPLOY デプロイメント・パイプライン Environment
  35. Copyright © 2023, Oracle and/or its affiliates 39 OCI DevOps

    で実現する CI/CD OCI DevOps CD OCI DevOps と連携して、OCI のベアメタル、仮想マシン、Kubernetes、FaaS プラットフォームへのデプロイ自動化を 実現 Bare Metal Compute Container Engine For Kubernetes Virtual Machine Functions デプロイ先となる幅広いプラットフォームの環境管理 Environment
  36. Copyright © 2023, Oracle and/or its affiliates 40 OCI DevOps

    で実現する CI/CD OCI DevOps CD OCI DevOps のデプロイメント・パイプラインでは、ステージという単位で組み合わせながら、パイプラインを GUI ベースに 構築 承認プロセスや幅広いリリース環境にデプロイを実現するデプロイメント・パイプライン • 「承認」テンプレートから、人による承認プロセスを実施するス テージを作成 • 「OKE」、「Compute」、「Functions」のテンプレートからデプロ イ先を指定するステージを作成 DEPLOY Deployment Pipeline
  37. Copyright © 2023, Oracle and/or its affiliates 41 OCI DevOps

    で実現する CI/CD OCI DevOps CD 「ステージの追加」、「パラレル・ステージの追加」を選択して、テンプレートに沿ってステージを作成 ステージ単にテンプレートを利用して、簡単にデプロイメント・パイプラインを構築 Deployment Pipeline
  38. Copyright © 2023, Oracle and/or its affiliates 42 OCI DevOps

    で実現する CI/CD OCI DevOps CD 各テンプレートを選択して、テンプレートの内容に従ってデプロイメント・パイプラインを構築 ステージ単にテンプレートを利用して、簡単にデプロイメント・パイプラインを構築 VM & BM Compute Functions OKE,Compute,Functionsへ のデプロイ先を指定できるテン プレート 承認プロセス追加できるテンプ レート Functionsで作成した関数を 呼び出しを設定できるテンプ レート ワークフロー内で一時停 止を追加できるテンプレー ト バックエンドIPの2つのセット間 でトラフィックをルーティングでき るテンプレート OKE デプロイメント・パイプラインでカ スタム・コマンドを実行できるテ ンプレート 凡例 Deployment Pipeline
  39. Copyright © 2023, Oracle and/or its affiliates 43 OCI DevOps

    で実現する CI/CD OCI DevOps CD 「シェル・コマンドの実行」で実行できるデフォルトのコマンド(2023年11月時点) ステージ単にテンプレートを利用して、簡単にデプロイメント・パイプラインを構築 https://docs.oracle.com/ja-jp/iaas/Content/devops/using/shellruntime_details.htm Deployment Pipeline
  40. Copyright © 2023, Oracle and/or its affiliates 44 OCI DevOps

    で実現する CI/CD OCI DevOps CD コンピュート・インスタンス・グループへのデプロイでは、デプロイメント構成ファイルにアーティファクトのデプロイ先やデプロイ時に実行するコマンドを定義して、デ プロイメント・パイプラインから実行可能。 デプロイメント構成ファイルの利用によるコンピュート・インスタンス・グループへのデプロイ管理を効率化 version: 1.0 component: deployment runAs: root env: variables: version: ${appVersion} files: # This section is to define how the files in the artifact shall # be put on the compute instance - source: / destination: /tmp/genericArtifactDemo steps: # This section is to define the scripts that each step shall run on the instance after file copy. - stepType: Command name: Install Apache Web Server command: /tmp/genericArtifactDemo/install_dependencies.sh runAs: root timeoutInSeconds: 600 - stepType: Command name: Stop Web Server command: /tmp/genericArtifactDemo/stop.sh runAs: root timeoutInSeconds: 60 - stepType: Command name: Install New Version of Software command: /tmp/genericArtifactDemo/install.sh runAs: root timeoutInSeconds: 60 - stepType: Command name: Start Web Server command: /tmp/genericArtifactDemo/start.sh runAs: root timeoutInSeconds: 60 • ターゲット・コンピュート・インスタンスに格納するアプリケーショ ン・パッケージとその場所を指定 • アプリケーションのデプロイに必要なステップを指定 • デプロイメントに必要なユーザー定義変数または組込みの環 境変数を指定 OCI Documents https://docs.oracle.com/ja-jp/iaas/Content/devops/using/deployment_specs.htm Deployment Pipeline
  41. Copyright © 2023, Oracle and/or its affiliates 45 OCI DevOps

    で実現する CI/CD OCI DevOps CD 人による判断を必要とする場合は、承認/却下を選択できるテンプレートを利用 Deployment Pipeline ビルド・パイプラインの処理完了後、デプロイメント・パイプラインが起動、承認ステージ手動によるデプロイ判断
  42. Copyright © 2023, Oracle and/or its affiliates 46 OCI DevOps

    で実現する CI/CD OCI DevOps CD デプロイ戦略として、Blue-Green デプロイ、カナリア・リリースに対応 Deployment Pipeline Container Engine for Kubernetes(OKE)および Compute インスタンス環境への Blue-Green デプロイ、カナリ ア・リリースを実現 Environment Bare Metal Compute Container Engine For Kubernetes Virtual Machine Artifact Code Repository Deployment Pipeline: CD Build Pipeline: CI Blue-Greenデプロイ カナリア・リリース Developer OCI DevOps
  43. Copyright © 2023, Oracle and/or its affiliates 47 OCI DevOps

    で実現する CI/CD OCI DevOps CD 最小限のダウンタイムと即時のロールバック機能を提供する Blue-Green デプロイ Deployment Pipeline Blue-Green デプロイ(例: OKE) Blue Green カスタム関数を利用してデプロイ前に Green 環境(ネームスペース)のアプリ ケーションを検証可能 手動承認による Blue 環境 (ネームスペース)へのトラフィッ ク・シフト OKE デプロイメントでは、トラ フィックをルーティングするために NGINX イングレス・コントロー ラを設定 Green 環境(ネームス ペース)へトラフィックシ フト https://docs.oracle.com/ja-jp/iaas/Content/devops/using/deploy_bgstrategy.htm
  44. Copyright © 2023, Oracle and/or its affiliates 48 OCI DevOps

    で実現する CI/CD OCI DevOps CD Blue/Green Deploy Deployment Pipeline
  45. Copyright © 2023, Oracle and/or its affiliates 49 OCI DevOps

    で実現する CI/CD OCI DevOps CD Blue/Green Deploy Deployment Pipeline
  46. Copyright © 2023, Oracle and/or its affiliates 50 OCI DevOps

    で実現する CI/CD OCI DevOps CD Blue/Green Deploy Deployment Pipeline
  47. Copyright © 2023, Oracle and/or its affiliates 51 OCI DevOps

    で実現する CI/CD OCI DevOps CD アプリケーションの新しいバージョンを一部のユーザーに段階的にリリースするカナリア・リリース Deployment Pipeline カナリア・リリース(例 : OKE) カスタム関数を利用して、デプロイ前にカナリア環境 (ネームスペース)でアプリケーション検証可能 OKE デプロイメントでは、トラフィックをルーティングす るために NGINX イングレス・コントローラを設定 検証成功後、本番環境(ネームスペース)の一部の トラフィックがカナリア環境(ネームスペース)にシフト 手動承認後、本番環境(ネームスペース) に検証済みのアプリケーションがデプロイされる https://docs.oracle.com/ja-jp/iaas/Content/devops/using/deploy_canarystrategy.htm
  48. Copyright © 2023, Oracle and/or its affiliates 52 OCI DevOps

    で実現する CI/CD OCI DevOps CD Deployment Pipeline Canary Deploy
  49. Copyright © 2023, Oracle and/or its affiliates 53 OCI DevOps

    で実現する CI/CD OCI DevOps CD Deployment Pipeline • OCI DevOps Documents https://docs.oracle.com/ja-jp/iaas/Content/devops/using/home.htm • OCI DevOps Release Note https://docs.oracle.com/en-us/iaas/releasenotes/services/devops/ • Sample Source of Demo https://github.com/oracle-japan/devops-deploy-strategy
  50. Copyright © 2023, Oracle and/or its affiliates 54 OCI DevOps

    で実現する CI/CD OCI DevOps Demo 環境構築後、コード変更とGit Pushをトリガーに、一連のパイプラインを自動実行、OKEクラスタにサンプルコンテナアプ リケーションがデプロイを確認
  51. Copyright © 2023, Oracle and/or its affiliates 55 OCI DevOps

    で実現する CI/CD OCI DevOps Demo Oracle Container Engine for Kubernetesを利用して、3ノードのKubernetesクラスタを構築 1.OKE セットアップ
  52. Copyright © 2023, Oracle and/or its affiliates 56 OCI DevOps

    で実現する CI/CD OCI DevOps Demo OCI Notifications と連携して、登録したメールアドレスに OCI DevOps から通知を受け取ることができるようにする 2. OCI Notifications セットアップ
  53. Copyright © 2023, Oracle and/or its affiliates 57 OCI DevOps

    で実現する CI/CD OCI DevOps Demo OCI DevOps は、プロジェクト単位で管理するため、最初にプロジェクトを作成 3.プロジェクト
  54. Copyright © 2023, Oracle and/or its affiliates 58 OCI DevOps

    で実現する CI/CD OCI DevOps Demo OCI DevOps から OKE クラスタにアプリケーションのデプロイを行うために、OKE クラスタを登録 4.環境
  55. Copyright © 2023, Oracle and/or its affiliates 59 OCI DevOps

    で実現する CI/CD OCI DevOps Demo 独自のプライベート・コードリポジトリを OCI DevOps 上に作成 5.コード・リポジトリ
  56. Copyright © 2023, Oracle and/or its affiliates 60 OCI DevOps

    で実現する CI/CD OCI DevOps Demo ビルドパイプラインでビルドしたコンテナイメージを格納するコンテナイメージレジストリのセットアップと OCI DevOps から OKE クラスタにデプロイする際に利用するマニフェストをアーティファクトレジストリに登録 6.アーティファクト
  57. Copyright © 2023, Oracle and/or its affiliates 61 OCI DevOps

    で実現する CI/CD OCI DevOps Demo アーティファクト・レジストリと連携して、 OKE クラスタにアプリケーションを自動デプロイするためのパイプラインを作成 7.デプロイメント・パイプライン
  58. Copyright © 2023, Oracle and/or its affiliates 62 OCI DevOps

    で実現する CI/CD OCI DevOps Demo コードリポジトリからソースをダウンロードして、コンテナイメージビルド、コンテナイメージを OCIR に格納、デプロイメント・パ イプライン連携という一連の流れをビルド・パイプラインとして作成 8.ビルド・パイプライン
  59. Copyright © 2023, Oracle and/or its affiliates 63 OCI DevOps

    で実現する CI/CD OCI DevOps Demo ソースコードを変更して、コードリポジトリへの「git push」コマンド実行をトリガーに、これまで作成してきた「ビルド・パイプラ イン」、「デプロイメント・パイプライン」が自動で稼働して、OKE クラスタにアプリケーションがデプロイ可能にする 9.トリガー
  60. Copyright © 2023, Oracle and/or its affiliates 64 OCI DevOps

    で実現する CI/CD OCI DevOps Demo 実際にソースコードを変更して、「git push」をトリガーにOKEクラスタへの自動デプロイを実行 10.パイプラインの実行 / 11.デプロイの確認
  61. Copyright © 2023, Oracle and/or its affiliates 65 OCI DevOps

    で実現する CI/CD OCI DevOps Demo Demo
  62. Copyright © 2023, Oracle and/or its affiliates 66 OCI DevOps

    で実現する CI/CD OCI DevOps Demo サンプルアプリケーションのソースコード、環境構築テキストは、以下を参照 https://github.com/oracle-japan/oracle-developer-days-2021-ocidevops-hol GitHub Tutorial https://oracle-japan.github.io/ocitutorials/cloud-native/devops-for-commons https://oracle-japan.github.io/ocitutorials/cloud-native/devops-for-beginners-oke/ Oracle Cloud Infrastructure(OCI) DevOps 事前準備 Oracle Cloud Infrastructure(OCI) DevOps ことはじめ - OKE編 -
  63. Copyright © 2023, Oracle and/or its affiliates 67 OCI DevOps

    で実現する CI/CD 参考情報 CI/CD や Workflow については、Oracle Cloud Hangout Café でもテーマとしてあります! CI/CD 最新事情 ワークフローツールで楽々 Job 管理 https://developer.oracle.com/ja/community/japan-events/cloud-hangout-cafe.html 過去のセッション資料および動画アーカイブサイト Season 4 Season 6
  64. Copyright © 2023, Oracle and/or its affiliates 68 OCI DevOps

    で実現する CI/CD 参考情報 Tekton、Argo CD を使用して Kubernetes 環境への CI/CD について書かれた良書!
  65. Copyright © 2023, Oracle and/or its affiliates 69 • 第1章

    コンテナの世界に飛び込む前に • 第2章 コンテナアプリケーション開発に必要なソフトウェア • 第3章 コンテナアプリケーション開発のライフサイクル Build・Ship・Run • 第4章 コンテナオーケストレーション • 第5章 Kubernetes でコンテナアプリケーションを動かすまで • 第6章 ローカル開発の準備 • 第7章 コンテナアプリケーションにおける CI/CD 解説動画 (https://onl.sc/XJm16m8) 解説資料 (https://onl.sc/hjuqfdU) OCI DevOps で実現する CI/CD 参考情報
  66. Copyright © 2023, Oracle and/or its affiliates 70 12/11-12 ハイブリッド開催

    https://event.cloudnativedays.jp/cndt2023 有明セントラルタワーホール & カンファレンス + オンライン #CNDT2023 参加費無料