技術書典6で"Go+Docker+CircleCI+GKE+Spinnaker"に関する書籍を販売します。 技術書典の当日は見本誌を用意するので興味のある方は実際に手にとって内容を確認していただければと思います。
前回は以下のサーバサイドアーキテクチャの書籍を出したのですが、 今回はWebアプリケーションのデプロイフローに関する書籍です。
なぜデプロイフローの書籍を書いたのか?
ここ1,2年ほど「自分はアプリケーションが動く環境に対する知識がないなー」と思っていました。
Docker,Kubernetes,CI/CDをググりながらイジれはするものの、 自分で環境を構築したことはありませんでした。 正直困ることが少なかったので注力していませんでした。
しかし、アプリケーションの動作環境で何かあったときの"問題解決スキル"が劣化していくのは感じていましたし、 最終的にアプリケーションの運用に支障が出そうだなーと思っていました。
そんななんとなーくモヤモヤした気持ちもあってデプロイフローをテーマに選びました。 次はアプリケーションアーキテクチャの書籍を書ければ良いなーと思っています。
この書籍で学べること
とりあえずGo+Docker+CircleCI+GKE+Spinnakerで雑にアプリケーションをデプロイすることができるようになります。
書籍のレベルとしては入門レベルです。 公式ドキュメントを参照しながらデプロイフローを構築します。 デプロイフローに利用する体系的に学べるので、 自分のようにこれらの技術に対する知識が弱い方にはオススメできます。 特にSpinnakerについてはそれっぽく丁寧に説明している書籍やネット上の情報がないと思うので、 Spinnakerがどんなものか知りたいという人にとってもオススメできます。
この書籍で学べないこと
ここ数ヶ月勉強しただけなので、本番運用を想定したレベルには仕上がっていません。 本番運用に足りない部分もたくさんあると思うので、 書籍を読んだ後にいろいろと調べることになるはずです。
ただ、書籍を読むことで一通りの基礎知識は身につくと思うので、 本番運用に足りない部分を調べる際の効率は上がると思います。
書籍ではGKEについても触れていますが、Kubernetesには触れていません。 そのためKubernetesについては学びたい方はこの書籍以外で学ぶ必要があると思います。
価格
1000円です。
PDFのみ販売
物理本を用意する余裕がありませんでした。 前回と同じくPDFのみ販売します。
Webでの販売
技術書典後にBOOTHで販売しようと思っていますが、 BOOTHで販売する際は一部の内容を削除するかもしれません。 これは技術書典に足を運んでくださった方が何かしらのメリットを得られるようにしたいという気持ちがあるからです。 とはいえ、それほどガッツリ削除する予定はないです。
目次
目次は以下です。
第1章 デプロイフローについて ... 7 第2章 デプロイフローを一通り体験する ... 9 GoでWebサーバを作成する Dockerfileを作成する GitHubリポジトリを作成する CLOUDSDKをセットアップする GCPプロジェクトを作成する CLOUD SDK プロジェクトとゾーンを固定する GCPの各種APIの有効化について プロジェクトに対して課金設定をする GitHubとCircleCIを連携させる GitHubの認証を設定する ジョブを動かす CircleCIからGCRにDockerイメージをpushする CLOUDSDKの認証を設定する ジョブを書く Spinnakerを構築する Spinnakerのインストール方法 Halyardのインストール CloudProviderの設定 Spinnakerを動かす環境を指定する Spinnakerのデータ保存先を設定する Spinnakerをデプロイする Spinnakerにアクセスする Spinnakerでアプリケーションをデプロイする Applicationを作成する LoadBalancerを作成する Pipelineを作成する アプリケーションをデプロイする おわりに 第3章 Spinnakerを使わずにKubernetesにアプリケーションをデプロイする はじめに アプリケーションを動かす Kubernetesのリソースを確認する マニフェストファイルについて おわりに 第4章 CircleCI Tips ... 81 はじめに ローカルマシン上でジョブを実行する コマンドラインツールをインストールする ジョブ定義のバリデーション ジョブを実行する コマンドラインツールの制約 GitHubリポジトリのチェックアウト CircleCIの組み込み環境変数を利用する Workflowによるジョブスケジューリング シーケンシャル実行 ファンイン・ファンアウト実行 承認実行 スケジュール実行 ブランチ名によるフィルター タグ名によるフィルター ジョブ間のデータ共有 キャッシュを利用する おわり 第5章 Spinnaker Tips ... 97~178 はじめに Kubernetes Provider V2 (Manifest Based) を構築する DockerRegistryのAccountは不要 GCE インスタンスに kubectl をインストールする GKEクラスターを作成 GKEクラスターを作成する サービスアカウントを作成する RBACを設定する CloudProviderのアカウントを作成する Kubernetes Provider V2 (Manifest Based) でアプリケーションをデプロイする DockerRegistryの認証について Kubernetes のマニフェストファイルを指定する Docker イメージの push をトリガーにデプロイする Kubernetes のマニフェストファイルを GitHub で管理する GitHubのAccountを作成する マニフェストファイル用の GitHub リポジトリを作成する Spinnaker にて GitHub のマニフェストファイルを参照する ExpectedArtifactsを設定する StackとDetailによるCluster管理について Automated Canary Analysis によるカナリーリリース Spinnaker におけるカナリーリリースの仕組み Stackdriverを設定する HalyardでAutomated Canary Analysis を設定する カナリーリリースのPipelineについて ManualJudgementのPipelineを作成する Pipelineを実行する CanaryConfigを作成する CanaryAnalysisStageを利用する カナリーリリースの動作を確認する アプリケーションに静的 IP アドレスとドメインを設定する Spinnakerトラブルシューティング Spinnakerが起動しない Halyardの設定を確認する GCSのAccountをHalyardに追加できない Pipeline の Deploy(Manifest) に Account が表示されない GitHubのIssueとCommunityを検索する 外部から Spinnaker にアクセスする(ドキュメント紹介のみ) おわりに