Loading
BLOG 開発者ブログ

2018年12月11日

初めてのSpinnaker 〜継続的デリバリー(CD)の実現〜(第一弾)

クラウドによるシステム開発が主流になってきた現在、
開発速度は加速し、アプリケーションの開発からデプロイといったフローにも速度が求められるようになってきました。
このような現状の中、継続的インテグレーション(CI)や継続的デリバリー(CD)といった手法・考え方が重要になっています。

しかし、「実際にどうやってCDを実現しようか」という悩みを持った開発者は多いと思います。
今回は、このような問題に対して、

  • 「継続的デリバリーの実現を助けるツール」であるSpinnaker

を簡単に紹介するとともに、第一歩として、GCP(Google Cloud Platform)上にSpinnkerを配置し、触れるようにしていこうと思います。

この記事は アイソルート Advent Calendar 11日目の記事です。
こんにちは。
モバイルソリューショングループのimai.kです。

 

Spinnakerとは

Spinnakerは、マルチクラウドに対応した継続的デリバリーのプラットフォームです。
これだけでは分かりづらいので例をあげると、Spinnakerを使用して以下のようなことが実現できます。

  • Blue-Green Deployment
  • Canary Release
  • デプロイする前に承認フローを設ける
  • etc…

これらをプロジェクト内で運用できるようにするため、正しく環境構築することは難易度が高く、コストのかかる作業でしょう。

Spinnakeのメリットは、こういったムズカシイ部分を任せ、正しく・素早く環境構築できることだと思います。

と、、紹介はこれくらいにして、
早速、Spinnakerを触れるようにしていきましょう。


環境構築

今回はSpinnakerの環境構築を行うため、公式のチュートリアルをまるっと進めていきます。


行うこと(概要)

  • Spinnakerを展開するため、GCE(Google Compute Engine)上にHalyardというツールを展開します。
  • Halyardを使用し、SpinnakerをGKE(Google Kubernetes Engine)上に展開します。


準備

まず、GCPリソースをコマンドラインから操作するために、gcloudコマンドを使用できる状態にしてください。

gcloudコマンドが使用できるようになったら、以下のように初期設定を済ませてください。


GKE クラスタの作成

GCPコンソール上で、GKEクラスタを作成しましょう。

この際、「以前の認証を有効にする」にチェックをつけておいてください。それ以外はデフォルト設定で問題ありません。

Google APIの有効化

以下のAPIを有効化してください。


サービスアカウントの作成

Halyardが動くGCEインスタンス用に、サービスアカウントを作成します。

あとでSpinnakerがGCS(Google Cloud Storage)、GCR(Google Container Registry)にアクセスするためのサービスアカウントを作成します。


HalyardホストVM(GCEインスタンス)の作成

Halyardが動作するGCEインスタンスを作成します。

しばらく待つと、インスタンスが立ち上がります。

立ち上がったインスタンスにSSHしましょう。

ここから先は、SSHしたGCEインスタンス上でコマンドを実行していきましょう。

Halyardのインストール

さて、GCEインスタンスにHalyardをインストールしていきます。

その前に、、

Halyardは後の手順でGKE上にSpinnakerを展開しますが、Kubernetesクラスタを操作するために、kubectlをインストールしておく必要があります。

次に、Halyardをインストールします。


GCPリソースアクセスに必要な認証情報の設定


HalyardにSpinnakerの設定を行います

Spinnakerを使用するために、Halyardに設定を入れます。


最後に、SpinnakerをGKEクラスタにデプロイします

Spinnakerがデプロイされたら、HalyardからSpinnakerに接続を行います。

ここまで行うと、自身のPCからSpinnakerにアクセスできるようになります。

まとめと「次回」について

ここまでで、Spinnakerを触れる状態になりました。

次回(アイソルート Advent Calendar 25日目の記事)は、実際にパインプラインの設定から簡単なアプリケーションのデプロイまでを実践していこうと思います。

明日は watanabe.t さんの FirebaseのCI/CDに爆速で入門する です。