SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

GitOpsで実現する継続的デリバリー

「PipeCD」で始める継続的デリバリー~GitOpsとプログレッシブデリバリーの実践

GitOpsで実現する継続的デリバリー 第3回

PipeCDを使ったGitOpsによる継続的デリバリー

 PipeCDを使いGitOpsによる継続的デリバリーを構築し体験してみましょう。まず今回構築するソフトウェアデリバリーの全体像を見てください。

全体像
全体像

 GitHub Actionsで継続的インテグレーションをし、PipeCDで継続的デリバリーをします。Hello Appリポジトリはアプリケーションコードを管理するリポジトリです。このリポジトリではプルリクエスト(PR)を出すとビルドとテストが走ります。PRが承認されmainブランチにマージされるとDockerイメージを作成し、GitHub Packages Container registry(GHCR)[注2]に作成したイメージをプッシュします。Hello App Configリポジトリはアプリケーションの設定を管理するリポジトリです。このリポジトリではデプロイするアプリケーションのイメージタグなどが記述されているKubernetesのManifestファイルを管理しています。GitOpsではアプリケーションコードを管理するリポジトリとアプリケーションの設定を管理するリポジトリを分けるのが良いプラクティスです。

 PCで動くKubernetesクラスターではpipecd、piped、dev、prodという4つのネームスペースが存在します。pipedネームスペースではPipedエージェントが動作していて、Hello App Configリポジトリの変更を監視しています。変更があれば、pipecdネームスペースで動作するPipeCDコントロールプレーンに通知します。そしてdevネームスペースやprodネームスペースにHello Appをデプロイします。この時、Hello App Configリポジトリで記載されたバージョンでDockerイメージを取得してHello Appが起動します。デプロイの様子はコントロールプレーンで提供されるPipeCD Web UIから確認します。

 今回はKubernetesやHelm、GitHub Actions、サンプルアプリケーションのコードに関しての説明は省きます。

 [注2] GitHub Packagesの機能として提供されるコンテナレジストリです。

事前準備

 事前に以下の準備が必要です。

 [注3] Docker Desktopは2021年9月より、個人利用、教育機関、非商用のオープンソースプロジェクトのみ無料です。

コントロールプレーンの構築

 PipeCDのコントロールプレーンを手元のPCで動くKubernetesクラスター上に構築していきます[注4]。次のコマンドを実行しmanifestsリポジトリをクローンしてください。

$ git clone -b v0.16.0 https://github.com/pipe-cd/manifests.git
$ cd manifests

 manifestsリポジトリにはPipeCDを試すための設定ファイルがあります[注5]。次のコマンドでPipeCDコントロールプレーンをインストールします[注6]

$ helm -n pipecd install pipecd ./manifests/pipecd --dependency-update --create-namespace \
  --values ./quickstart/control-plane-values.yaml

 PipeCD Web UIにアクセスするために次のコマンドを実行します。

$ kubectl -n pipecd port-forward svc/pipecd 8080

 ブラウザからhttp://localhost:8080/にアクセスできることを確認してください。次のような画面が表示されます。

ログイン画面
ログイン画面

 Project Nameにquickstartと入力し、CONTINUE→ボタンを押してください。Usernameにhello-pipecd、Passwordにもhello-pipecdと入力しLOGINボタンを押すとPipeCDのWeb UIへログインができます。

 以上でコントロールプレーンの構築を終わります。次にアプリケーションのデプロイを実行するpipedをインストールします。

 [注4] PipeCDは複数プロジェクトで利用できる設計なので、実際に運用する時はコントロールプレーンを管理する専用の組織がいると良いでしょう。

 [注5] ファイルストアとしてGCSやAWS S3も使えます。

 [注6] クラスター上にファイルストアとしてMINEOが、データベースとしてMySQLが起動するため、PC再起動などで全ての設定が消えることに注意してください。

次のページ
PipeCDを使ったGitOpsによる継続的デリバリー

この記事は参考になりましたか?

GitOpsで実現する継続的デリバリー連載記事一覧

もっと読む

この記事の著者

安井 岳(株式会社サイバーエージェント)(ヤスイ ガク)

 サイバーエージェントに中途入社し、社内基盤である継続的インテグレーションシステムの開発と運用に従事。現在は社内基盤のフィーチャーフラグ・ABテストシステムの開発と組織のデリバリーパフォーマンスの向上を支援する活動がメイン。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/14811 2021/10/18 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー