技術書典6で"Go+Docker+CircleCI+GKE+Spinnaker"に関する書籍を販売します。

技術書典6で"Go+Docker+CircleCI+GKE+Spinnaker"に関する書籍を販売します。 技術書典の当日は見本誌を用意するので興味のある方は実際に手にとって内容を確認していただければと思います。

techbookfest.org

前回は以下のサーバサイドアーキテクチャの書籍を出したのですが、 今回はWebアプリケーションのデプロイフローに関する書籍です。

pospome.booth.pm

なぜデプロイフローの書籍を書いたのか?

ここ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 にアクセスする(ドキュメント紹介のみ)
    おわりに