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

CloudNative CICD in OpenShift Commons Japan

CloudNative CICD in OpenShift Commons Japan

2020/12/10 「OpenShift Commons Gathering Japan 2020」
で利用した資料です。
動画もありますので、よかったら見てください。
https://www.youtube.com/watch?v=WsR3YZfdNZg&list=PLaR6Rq6Z4IqeNLyWM4J_IyOgSofhJ-RAo&index=14

#openshift #ArgoCD #Tekton
**OpenShift Commons Gathering Japan 2020
https://www.redhat.com/en/explore/openshift/commons-gathering-ja

Shingo.Kitayama

December 10, 2020
Tweet

More Decks by Shingo.Kitayama

Other Decks in Technology

Transcript

  1. バリューストリームのプロセス ローカル開発 継続的インテグレーション 継続的デプロイメント どこでも同じ環境で開発 ガバナンスの徹底 失敗しないデプロイ 自動化されたビルドとテストを実行する ことによって、小さな単位で影響範囲を 修正し、品質の高い成果物を生成する。

    ソフトウェアのデプロイやリリースプロセス 全体を自動化することで、人の手を介さ ずに同様のデプロイを行う 開発者が繰り返し開発や修正を繰り返 す上で、使い慣れた環境で、開発を継 続し続ける。
  2. と 任意の環境 物理 コンテナ で利用可能 環境に特化 ツールのインストールと保守運用が必要 パイプラインの実行に ツールは不要 ツールの利用は共有

    プラグイン構成とバージョンに縛られる ツールの利用は独立 各パイプラインは独立な構成 アップデートのタイミングに制約 パイプライン構成タスクのバージョンは パイプライン毎に独立 設定は ツールごとに固有 設定は
  3. はいくつかのコンポーネントで構成されていま すが、 ですべて管理さ れます。 ・ パイプラインを構築するためのビルディングブ ロックとして機能します。 ・ イベントに基づいてパイプラインをインスタンス化する 機能です。

    ・ 用の ベースのグラフィカル・イン ターフェースです。 は、 リソースに基づくクラウドネイティ ブ ソリューションです。 ビルディングブロックを使用することで、 実装の詳細を抽象化でき、複数のプラット フォームにわたる展開を自動化します。 パイプラインを定義するための を 提供します。
  4. の定義 apiVersion: tekton.dev/v1alpha1 kind: Task metadata: name: mvn-build spec: inputs:

    resources: - name: source type: git outputs: resources: - name: source type: git steps: - name: build image: maven:3.6.0-jdk-8-slim command: - /usr/bin/mvn args: - package - name: test image: maven:3.6.0-jdk-8-slim command: - /usr/bin/mvn args: - verify コマンドの実行単位。実行コンテナ イメージと実行コマンドを定義する。 複数の によって構成される作 業の定義を行う。 は として構成され、各 はコンテナとして実行される。
  5. apiVersion: tekton.dev/v1alpha1 kind: TaskRun metadata: name: mvn-build-taskrun spec: taskRef: kind:

    Task name: mvn-build inputs: resources: - name: source resourceSpec: type: git params: - name: url value: https://github.com/siamaksade/mapit-spring.git の定義 インスタンス作成 参照 を実行するためのリソース。事前 に定義しておいたリソース、トリガーの 情報、および引数などを渡します。 ・ を として実行 ・ 定義を で参照 ・ へ渡される入力値 など ・実行の状態などを管理
  6. の定義 kind: Pipeline metadata: name: petclinic-deploy-pipeline spec: resources: - name:

    app-git type: git - name: app-image type: image tasks: - name: build taskRef: name: s2i-java-8 resources: inputs: - name: source resource: app-git outputs: - name: image resource: app-image - name: deploy taskRef: name: openshift-client runAfter: - build params: - name: ARGS value: "rollout latest spring-petclinic" 実行したい一連の の流れを定義 する。 ・実行すべき の順序を定義 ・実行時パラメータ ・ のリトライ回数の指定 ・ の実行条件 ・ 間データ共有 ・テンプレートとしての再利用
  7. の定義 apiVersion: tekton.dev/v1alpha1 kind: PipelineRun metadata: name: petclinic-deploy-pipelinerun spec: pipelineRef:

    name: petclinic-deploy-pipeline trigger: type: manual resources: - name: app-git resourceRef: name: petclinic-git - name: app-image resourceRef: name: petclinic-image インスタンス作成 参照 を実行するためのリソース。 事前に定義しておいたリソース、トリ ガーの情報、および引数などを渡しま す。 ・各 の を生成し、 を 実行 ・各 は任意の ノードで実行 ・ 経由で共有データ用の を提供
  8. は コミュニティと協力して、 と の共有と再利用の簡素化に取り組んでいます。 は、 と に関する詳細情報 を提供します。 これによって、開発者が や

    の実装の 詳細を知らなくても、 を構築することを支援します。 では、こ れらの一部を「 」にて提供しています。
  9. ・ 指定されたターゲット環境へのアプリケーションの自 動展開 ・ 複数の構成管理 テンプレートツール( 、 、 、 、

    )のサポート ・ 複数のクラスタ管理およびデプロイ機能 ・ 統合 ( 、 、 、 、 、 、 、 ) ・ アプリケーションのロールバック機能 ( デプロイ、 デプロイ) ・ アプリケーションリソースのヘルスチェック ・ 構成ドリフトの検出と可視化 ・ 統合( 、 、 ) ・ 自動化のための は、 を基盤とした ソリューションです。 は、 リポジトリで定義されたアプリ ケーション定義と構成を継続的に監視し、それ らの構成情報と、クラスター上のライブ状態と 比較するコントローラーとして実装されます。
  10. 複数環境におけるデプロイ方法 環境ごとに異なる構成 接続や の切り替えなど を行うための構成管理ツール で活用できる独 自テンプレートで、 から 操作できます。 リポジトリ内のマニフェストを

    テンプレート化することで、 変数を活用できます。 などのクラスタ実行に必要な リソース定義がパッケージ化 されます。これによってアッ プデートやロールバックなど が行えます。 に組み込まれたパッ ケージツールです。 テンプレートの に対して、 各環境毎に変更する設定を 記述したパッチを当てること で、一つの を出力しま す。
  11. 時代の と のあり方 アプリケーション ソースコード リポジトリ マニフェスト リポジトリ 継続的インテグレーション 継続的デプロイメント

    運用をツールに任せることで 継続的インテグレーションと継続的デリバリの役割 権限 を分離する