ドーモ、読者=サン。DTB(どうぶつタワーバトル)面白いですね。まだ未プレイであれば、是非プレイして見て下さい。これがe-Sportsです。
では早速、本題にはいると今回は、Spinnakerを使ってGoogle Kubernetes Engineのクラスタにアプリケーションを継続的デリバリ出来るようにする方法についてご紹介します。Spinnakerは継続的デリバリを行うためのツールです。
今回はこんな感じの継続的デリバリのフローをSpinnakerを使って実現します。
ユーザー(アプリケーション開発者)はレポジトリにPushするだけでアプリケーションがデプロイされます。デプロイ後に今度は、ユーザーが手動でデプロイしたアプリケーションに対して動作確認を行い、問題なければ本番環境のLBを切り替えてデプロイしたアプリケーションをリリースする想定です。
Spinnakerの概要などは今回は紹介しないので、知りたい人は公式を御覧ください。
Spinnaker Concepts
手順
- Container Builderの設定(Docker buildとDocker push)
- Spinnakerのデプロイ
手順としては、大きく分けて2つになります。今回の記事ではSpinnakerのデプロイまでを行い、次の記事でSpinnakerのパイプラインの設定の解説を行う予定です。
Container Builderの設定
Container BuilderではDockerコンテナイメージのビルドとプッシュを行います。設定方法に関しては公式ドキュメントのDockerfileによるクイックスタートを読んで下さい!
Dockerfile によるクイックスタート
ちなみにDockerfileのビルドだけであれば、UIポチポチで設定出来ます!
Spinnakerのデプロイ
Spinnakerをデプロイして、その後に動作確認も兼ねて新しいアプリケーションを作るところまでを行います。アプリケーションはSpinnakerのトップレベルの概念です。
Spinnakerのデプロイ
SpinnakerのデプロイはGCPのCLOUD LAUNCHERを使います。CLOUD LAUNCHERのページからポチポチするだけでGCEにSpinnakerのインスタンスがデプロイされてめっちゃ楽です。
ではデプロイしていきましょう。GCPのコンソールからCloud Launcherのページに移動して、Cloud Launcherの検索窓にspinnakerと入力して、検索結果にSpinnakerにが表示されたらそれをクリックして下さい。
クリックしたら下記の画面に移動するので、COMPUTE ENGINE 上で起動をクリックして下さい。
クリックすると新しいSpinnaker のデプロイというページが表示されます。今回はKubernetesにデプロイしたいので、Kubernetes Enabledにチェックを付けて、Cluster Nameなどを入力して下さい。入力が終わったらデプロイを押してデプロイしましょう。
デプロイが上手く行けば、下記の様な画面が表示されると思います。緑のチェックが付いてあれば成功しています。
ちなみに、ここでデプロイにコケてるとエラーの内容が表示されるのですが、場合によっては何も伝わってこないエラーが表示されるので結構地獄です・・・
Spinnakerのアップデート
2017/12/14現在でCLOUD LAUNCHERで構築するとSpinnakerのGateというソフトが、起動しないことがあるみたいなので、SpinnakerのVMにSSHで入ってSpinnakerのアップデートをしましょう。
手順
- sshでログイン
- apt-get update && apt-get upgrade spinnakerを実行
1. sshでログイン
gcloud compute ssh --project={プロジェクト名} --zone={ゾーン} spinnaker-1
2. apt-get update && apt-get upgrade spinnakerを実行
sudo apt-get update
sudo apt-get upgrade spinnaker
upgradeの時の質問には全部、yで問題ないかと思います。
Spinnakerの画面にアクセス
それでは、Spinnakerのパイプラインの設定を行っていきましょう。まず最初にSSHトンネルを使って先程デプロイしたSpinnakerにブラウザからアクセスします。SSHトンネルはgcloud コマンドを使って行います。コマンドはSpinnakerデプロイ直後に表示されるWebページのSpinnkarを使ってみるのAccessing Spinnaker through SSH Tunnelに表示されているコマンドをコピペしてターミナルで実行して下さい。
コマンド例
gcloud compute ssh --project={プロジェクト名} --zone={ゾーン} spinnaker-1 -- -L 9000:localhost:9000 -L 8084:localhost:8084
コマンドを実行したらブラウザからlocalhost:9000にアクセスしてみて下さい。下記にようなロード画面が表示されるはずです。
新しいアプリケーションを作る
Spinnakerではまず最初にアプリケーションというものを作る必要があります。アプリケーションはSpinnakerのトップレベルの概念で、アプリケーションの中にパイプライン、クラスタ、ロードバランサがあります。
それでは、アプリケーションを作っていきましょう。Spinnakerのトップページから右下のActionsをクリックしてCreate Applicationをクリックして下さい。
クリックするとNew Applicationというページに飛ばされるので必要な情報を入力します。今回は、kubernetesにデプロイするのでCloudProvidersでkubernetesを選択して下さい。
入力が終わったら、Createを押して作成しましょう。
正常にCreateされたら下記のような画面が表示されるはずです!
さいごに
今回はこれで、最後になります。次回の記事でSpinnakerでLBの作成とパイプラインの構築について解説します。