本日も乙

ただの自己満足な備忘録。

商業誌版「Spinnaker入門」刊行によせて

技術書典7 で「Spinnaker入門」という同人誌を頒布させていただきました。物理本約100部*1に加え BOOTH で50部以上の購入がありました。ありがとうございます。

この度ご縁がありまして、商業誌として販売されました!Amazon など多くのサイトで購入可能となっています。

nextpublishing.jp

同人誌との違い

商業誌は同人誌をベースに加筆・修正などをしてクオリティ高く仕上がっています。

1. 加筆

商業誌版では第8章と第9章を加筆しました。

第1章 Spinnakerとは
第2章 Spinnakerのインストール
第3章 Google Kubernetes Engine のデプロイ
第4章 Google App Engineのデプロイ
第5章 Canary Release
第6章 Amazon EKSにSpinnakerをインストール
第7章 Jenkinsとの連携
第8章 GCPにおけるGitOps継続的デリバリー
第9章 AWSにおけるGitOps継続的デリバリー
付録A GCPアカウントの作成
付録B AWSアカウントの作成、初期設定

第8章「GCPにおけるGitOps継続的デリバリー」は GCP の各種サービス(Cloud Source Repositories、Cloud Build、GCR)とSpinnaker を連携して GitOps による継続的デリバリーパイプラインを構築し、GKE にデプロイする方法について書かれています。

GitOps とは、Git を起点とした CI/CD ワークフローを行う方法で、Git Push を起点に CI/CD が実行されます。GCP に慣れていない人でも手を動かして理解できます。

第9章「AWSにおけるGitOps継続的デリバリー」は8章のAWS版です。CodeCommit、CodePipeline、CodeBuild、ECR といったAWSサービスと Spinnaker を連携して GitOps によって EKS にデプロイします。

この2つの章は実践編という位置づけで Spinnaker を読者の CI/CD 環境に組み込むヒントになれば幸いです。

2. 表紙がカッコいい

同人誌版は私が Keynote で作成したもので素人丸出しでした。商業誌ははこしろさんというプロのイラストレーターが描いてくれました。

私が「直線的でカッコいい」「ヨット」「近未来的」という抽象的なキーワードから膨らませていただいて、プロはすごいと感服しました。

3. 修正

誤字脱字の修正に加え、Spinnaker のバージョンを執筆当時の最新(1.17.0)にしています。

また、第6章「Amazon EKSにSpinnakerをインストール」で同人誌版は PC に Docker コンテナをたててコマンドを実行していましたが、商業誌版は AWS Cloud9 というクラウドの統合開発環境(IDE)からコマンド実行するように変えました。Cloud 9 によって OS を気にすることなく、Docker を入れることなく設定と構築ができるようになりました。

目次

詳細の目次を見たい人はこちらに記載しました。目次からぼんやりと内容がわかるかもしれません。

第 1 章 Spinnaker とは
    1.1 アプリケーションの管理
    1.2 アプリケーションへのデプロイ
    1.3 デプロイ戦略
        1.3.1 Blue/Green Deployment
        1.3.2 Canary Release
    1.4 パイプラインの例
    1.5 アーキテクチャ
    1.6 まとめ
第2章 Spinnakerのインストール
    2.1 GCPプロジェクトの作成
    2.2 Spinnakerをセットアップする
    2.3 Google OAuthでセキュアにアクセスする
    2.4 Halyardのインストール
    2.5 リソースの削除
    2.6 まとめ
第3章 Google Kubernetes Engine のデプロイ
    3.1 キャッシュの強制更新
    3.2 Dockerレジストリーの設定
    3.3 Applicationの作成
    3.4 Guestbookのデプロイ
    3.5 パイプラインの作成
    3.6 アーティファクトの設定
    3.7 トリガーの設定
    3.8 デプロイステージの設定
    3.9 パイプラインの実行
    3.10 ロールバック
    3.11 リソースの削除
    3.12 まとめ
第4章 Google App Engineのデプロイ
    4.1 Google App Engineプロバイダの設定
    4.2 Google Cloud Storageトリガーの設定
    4.3 Applicationの作成
    4.4 パイプラインの作成
        4.4.1 アーティファクトの設定
        4.4.2 トリガーの設定
        4.4.3 Deploy to App Engine
        4.4.4 Split Traffic 50%/50%
        4.4.5 Validate Release
        4.4.6 Enable Release
        4.4.7 Wait
        4.4.8 Destroy Server Group
    4.5 パイプラインの実行
    4.6 まとめ
第5章 Canary Release
    5.1 Canary Releaseの有効化
    5.2 Canaryの設定
    5.3 パイプラインの作成
        5.3.1 Find Baseline Version
        5.3.2 Deploy Baseline
        5.3.3 Deploy Canary
        5.3.4 Canary Analysis
        5.3.5 Deploy to Production
        5.3.6 Delete Baseline
        5.3.7 Delete Canary
        5.3.8 Successful deployment
    5.4 パイプラインの実行
    5.5 リソースの削除
    5.6 まとめ
第6章 Amazon EKSにSpinnakerをインストール
    6.1 全体像
    6.2 AWS Cloud9の設定
    6.2.1 AWS Cloud9 の認証設定
    6.3 コマンドラインツールのインストール
        6.3.1 Halyard(hal)
        6.3.2 eksctl
        6.3.3 kubectl
        6.3.4 aws-iam-authenticator
    6.4 EKS クラスタの作成
    6.5 EKS用のkubeconfigを作成
    6.6 Kubernetes の設定
    6.7 Halyardの設定
    6.8 EKSワーカーノードの作成
    6.9 Spinnakerのデプロイ
    6.10 ロードバランサの作成
    6.11 リソースの削除
    6.12 まとめ
第7章 Jenkinsとの連携
    7.1 Jenkinsのインストール
    7.2 Jenkinsの設定
    7.3 Halyardの設定
    7.4 ステージの設定
    7.5 パイプラインの実行
    7.6 まとめ
第8章 GCPにおけるGitOps継続的デリバリー
    8.1 Cloud Source Repositories の設定
    8.2 Cloud Build の設定
    8.3 Spinnaker による Google Container Registry トリガーの設定
    8.4 アプリケーションの作成
    8.5 パイプラインの作成
    8.6 デプロイステージの設定
    8.7 デプロイ
    8.8 まとめ
第 9 章 AWS における GitOps 継続的デリバリー
    9.1 AWS CodeCommit の設定
        9.1.1 SSH 接続するための設定
        9.1.2 AWS CodeCommit で Git リポジトリーを作成
    9.2 AWS CodeBuild の設定
        9.2.1 buildspec.yml の作成
        9.2.2 ビルドプロジェクトの作成
    9.3 Amazon ECRの設定
    9.4 AWS CodePipeline の設定
    9.5 AWS パイプラインの動作チェック
    9.6 Spinnaker による Amazon ECR トリガーの設定
    9.7 アプリケーションの作成
    9.8 Spinnaker パイプラインの作成
    9.9 デプロイステージの設定
    9.10 デプロイ
    9.11 リソースの削除
    9.12 まとめ
付録A GCPアカウントの作成
    A.1 Google アカウントの作成
    A.2 マネジメントコンソールにアクセス
    A.3 無料トライアルの登録
付録B AWSアカウントの作成、初期設定
    B.1 AWS アカウントの作成
    B.2 作業用の IAM ユーザーの作成
    B.3 多要素認証(MFA)の設定
    B.4 IAM ユーザーでログイン

最後に

技術書典8(応援祭)の執筆や私の怠け癖*2のせいで大変ではあったものの、私が書いたものが商業誌として世に出るのはとても大きな喜びです。自分の本を書いてみたいという昔からの夢が叶いました。

こうして出版となったのは技術書典という素晴らしいイベントと購入してくださった方々、商業誌刊行のご依頼をいただいたインプレスR&Dの山城さん、表紙をデザインしてくださったはこしろさん、本のレビューや感想をくださった方々のおかげです。この場を借りてお礼申し上げます。

せっかく刊行したのに誰も買ってくれなかったら寂しいので、ぜひ読んでみてください!Twitter やブログなどで感想をツイートしていただけるととても嬉しいです*3

*1:正確には見本誌を除いた98部

*2:追い込まれないとやらない悪い癖

*3:エゴサーチしているので見つけたら喜んで反応します