関連サイト
本書の関連ページが用意されています。
内容紹介
Kubernetesを活用したアプリケーションライフサイクルの自動化ノウハウを解説。
近年、アプリケーションの実行環境として“Kubernetes”を採用している企業が急速に増えています。Kubernetes上でのコンテナ開発は、これまでのアプリケーション開発とは大きく異なるため、どこから手を付けていけばよいのかと不安に感じている方も少なくありません。こうした状況を踏まえ、本書では、1つのアプリケーションライフサイクルの実装を通して「いかに少ない労力で開発プロセスを運用し続けるか」という改善案を提示します。
単にコンテナを導入し、Kubernetesを活用するだけでは運用負担の軽減や、迅速なサービス展開といったビジネスメリットを得るのは簡単ではありません。継続的インテグレーションや継続的デリバリの実装にとどまらず、開発プロセスに関わる開発者やレビューアの役割を見直す必要があります。本書ではこの点にも焦点を当て、ツールの使い方以上に、クラウドネイティブな開発プロセスの変化を理解し、実践しながらアプリケーションライフサイクルの改善ノウハウを解説します。
書誌情報
- 著者: 北山 晋吾
- 発行日: 2021-10-19 (紙書籍版発行日: 2021-10-19)
- 最終更新日: 2021-10-19
- バージョン: 1.0.0
- ページ数: 400ページ(PDF版換算)
- 対応フォーマット: PDF
- 出版社: インプレス
対象読者
サーバー管理者、サーバー提案SE、システムインテグレータ、Linuxサーバー保守担当者技術レベル:中級。
著者について
北山 晋吾
EC事業のインフラ運用やベンダーでのシステムインテグレーション業務を経て、現在はレッドハット株式会社に勤務。エンタープライズ向けのKubernetes管理ツールであるRed Hat OpenShiftのソリューションアーキテクトとして、ソリューション戦略企画やコンサルティングを行っている。また、仕事の傍らMBAを取得し、ユーザー/ベンダーの業務経験と経営の視点を活かしながら業務に邁進している。なお、オープンソース界隈を中心とするコミュニティ活動を趣味としており、業務か否かを問わずOpenShift User Groupを始めとするコミュニティ運営や登壇を生きがいに楽しんでいる。本書の他にも、『Ansible実践ガイド』『GitLab実践ガイド』(インプレス)を始めとする書籍なども執筆。エンタープライズの世界にも、オープンソースへの取り組みが普及することを夢に、日々情報発信できるよう努めている。
目次
はじめに
- 読者ターゲット
- 本書に関する諸注意本書の構成
- 本書の実行環境
- 本書で使用するコード
第1章 開発プロセスの運用変化
- 1-1 開発プロセスの自動化と標準化
- 1-1-1 アプリケーションライフサイクル
- 1-1-2 開発プロセス改善の効果
- 1-1-3 既存の開発プロセスの課題
- 1-1-4 Kubernetes 導入における開発プロセス
- 1-2 運用の可搬性
- 1-2-1 Kubernetes 前提の実装
- 1-2-2 パイプラインやジョブの標準仕様
- 1-3 まとめ
第2章 クラウドネイティブ開発に向けた環境準備
- 2-1 クラウドネイティブな環境
- 2-1-1 Cloud Native Trail Map
- 2-1-2 Tekton と Argo プロジェクト
- 2-1-3 Git リポジトリとコンテナレジストリ
- 2-1-4 デプロイメント環境
- 2-2 Kubernetes クラスタの準備
- 2-2-1 GKE クラスタの事前設定
- 2-2-2 GKE クラスタの構築
- 2-3 Git リポジトリの準備
- 2-3-1 GitLab.com のアカウント登録
- 2-3-2 GitLab.com のプロジェクト作成
- 2-3-3 Git リポジトリの権限分離
- 2-3-4 Git リポジトリのブランチ戦略
- 2-4 マイクロサービスのデプロイ
- 2-4-1 BookInfo の概要
- 2-4-2 BookInfo のデプロイ
- 2-4-3 BookInfo の外部接続確認
- 2-5 まとめ
第3章 Tekton Pipelines の概要
- 3-1 Tekton Pipelines のカスタムリソース
- 3-1-1 Task / Pipeline
- 3-1-2 TaskRun / PipelineRun
- 3-2 Tekton Pipelines の導入
- 3-2-1 Tekton Pipelines のアーキテクチャ
- 3-2-2 Tekton Pipelines のインストール
- 3-2-3 Task の動作確認
- 3-3 Task の詳細設定
- 3-3-1 Steps フィールド
- 3-3-2 Workspaces フィールド
- 3-3-3 Parameters フィールド
- 3-3-4 Results フィールド
- 3-3-5 Sidecar フィールド
- 3-4 まとめ
第4章 継続的インテグレーションのパイプライン
- 4-1 パイプラインの構成
- 4-1-2 Tekton Hub の活用
- 4-2 ソースコードの取得
- 4-2-1 Tekton Pipelines の認証
- 4-2-2 Git Clone の実行
- 4-3 アプリケーションビルド
- 4-3-1 Gradle のビルド概要
- 4-3-2 Gradle の Build 実行
- 4-4 マニフェストチェック
- 4-4-1 マニフェストチェックの概要
- 4-4-2 Conftest の実行
- 4-5 コンテナビルド
- 4-5-1 コンテナビルドの概要
- 4-5-2 Kaniko の実行
- 4-6 コンテナイメージスキャン
- 4-6-1 コンテナイメージスキャンの概要
- 4-6-2 Trivy の実行
- 4-7 コンテナデプロイ
- 4-7-1 デプロイメントの認証
- 4-7-2 kubectl の実行
- 4-8 パイプラインの実施
- 4-8-1 パイプラインの詳細
- 4-8-2 パイプラインの実行
- 4-9 まとめ
第5章 イベント駆動のパイプライン実行
- 5-1 Tekton Triggers のカスタムリソース
- 5-1-2 EventListener
- 5-2 Tekton Triggers の導入
- 5-2-1 Tekton Triggers のアーキテクチャ
- 5-2-2 Tekton Triggers のインストール
- 5-2-3 Ingress Controllers の設定
- 5-3 アプリケーションソースコードの更新
- 5-3-1 開発時のパイプライン実行の流れ
- 5-3-2 Tekton Triggers のオブジェクト詳細
- 5-3-3 アプリケーションソースコード更新の実装
- 5-4 マニフェストリポジトリの更新
- 5-4-1 マニフェスト更新時のパイプライン実行の流れ
- 5-4-2 マニフェストリポジトリ更新の実装
- 5-5 まとめ
第6章 Argo CD の概要
- 6-1 デプロイメントの自動化
- 6-1-1 継続的インテグレーションと継続的デリバリの分離
- 6-1-2 GitOps の構成パターン
- 6-1-3 Argo CD の特徴
- 6-2 Argo CD のカスタムリソース
- 6-2-1 Application
- 6-2-2 AppProject
- 6-3 Argo CD の導入
- 6-3-1 Argo CD のアーキテクチャ
- 6-3-2 Argo CD のインストール
- 6-4 アプリケーションデプロイメント
- 6-4-1 デプロイメント構成
- 6-4-2 AppProject[stg-bookinfo] の登録
- 6-4-3 Application 登録
- 6-5 まとめ
第7章 継続的デリバリのデプロイメント
- 7-1 Kustomize の概要
- 7-1-1 デプロイメントの環境差異を補完する
- 7-1-2 Kustomize によるマニフェスト管理
- 7-2 マニフェストの同期
- 7-2-1 自動同期ポリシー
- 7-2-2 同期の実行順序
- 7-2-3 同期の依存関係
- 7-3 機密情報の管理
- 7-3-1 GitOps の Secret 管理
- 7-3-2 External Secrets の概要
- 7-3-3 Workload Identity の導入
- 7-3-4 External Secrets の利用
- 7-4 マニフェストのデプロイ
- 7-4-1 継続的デリバリと継続的デプロイメント
- 7-4-2 本番環境へのデプロイメント
- 7-5 まとめ
第8章 継続的デリバリのリリース
- 8-1 リリースの自動化
- 8-1-1 デプロイメント戦略
- 8-1-2 リリースにおけるテスト
- 8-2 Argo Rollouts のカスタムリソース
- 8-2-1 Rollout
- 8-2-2 AnalysisTemplate
- 8-3 Argo Rollouts の導入
- 8-3-1 Argo Rollouts のアーキテクチャ
- 8-3-2 Argo Rollouts のインストール
- 8-4 アプリケーションリリース
- 8-4-1 Deployment から Rollout への移行
- 8-4-2 Deployment リソースの置き換え
- 8-4-3 Deployment リソースの呼び出し
- 8-4-4 アプリケーションライフサイクル
- 8-5 まとめ