目次

まえがき

本書のコンセプト
タイトルの意味
対象読者
環境

第1章 Kubernetesの検証準備

1.1 事前準備
1.2 ローカル検証ツールの比較
1.3 kind
1.4 k3d
1.5 第1章のまとめ

第2章 Kubernetesの設定例

2.1 Kubernetesコンポーネントのおさらい
2.2 kindとkubeadmによる検証
2.3 第2章のまとめ

第3章Kubernetesのマニフェスト管理

3.1 マニフェスト管理ツール
3.2 Secretの安全な管理方法

第4章 Admission Webhook 入門

4.1 拡張の選択肢
4.2 Admission Webhookの実装の選択肢
4.3 kubewebhookからつかむAdmission Webhook
4.4 GatekeeperではじめるAdmission Webhook
4.5 第4章のまとめ

第5章 終わりに

5.1 kind上で検証する意義
5.2 最新の情報収集手段

あとがき

お礼

まえがき

 本書をお手に取っていただき、ありがとうございます。

本書のコンセプト

 近年、Kubernetesをはじめとした、クラウドネイティブアプリケーションの周辺技術が、盛り上がりを見せています。またその中で、Kubernetes初級者を対象とした入門書籍や記事が広く出版・公開されており、2020年現在では、開発者がGetting Startするには困らない環境が整ってきています。

 しかしながら、入門を終えた方向け、かつ管理者向けの情報は、まだまだ相対的に数が少ない状況です。本書では、Kubernetes管理者の方が、次のステップに進む際の助けとなるような情報を提供することを目的にしています。

タイトルの意味

 タイトルは、一学期(Kubernetesの入門)を終えた方に、二学期(実運用をはじめとした次のステップ)に移る前に一読していただきたい内容を詰め込んだという意図で、「夏休みのしおり」とネーミングしました。

対象読者

 本書では、主に以下を満たす方を対象としています。

 ・Kubernetesの入門を終えている

  ─Deployment、Serviceなど基本的なリソースのハンズオンは終えている

  ─kube-apiserver、kube-schedulerなどKubernetesコンポーネントの大まかな構成は把握している

 ・情報システムの管理者である

環境

 本書で取り扱っているOSやツール等のバージョンを以下に列記します。

 ・macOS: Catalina

 ・Kubernetes

  ─1章: 1.18.2 1

  ─2章以降: 1.16.4 2

 ・k3s: v1.17.0+k3s.13

 ・kind: 0.8.1

 ・k3d: v1.5.1

 ・Gatekeeper: v3.1.0-beta.7

1. kind 0.8.1 のデフォルト

2. 執筆当時の各ソフトウェアの対応状況を考慮。なお、一部の項除く

3. k3d v1.5.1 のデフォルト

第1章 Kubernetesの検証準備

 本章では、Kubernetesの検証環境を整えていきます。こちらで紹介するツールは、2章以降のハンズオンでも利用しますので、本章を先に読み進めておく事をおすすめします。

1.1 事前準備

 本書では、各ハンズオンで利用するCLIツールの多くを、asdf-vmというツールを利用してインストールします。asdf-vmとは、CLIツール用の汎用的なバージョンマネージャーです。こちらのツールを利用すると、terraformやGitHubの公式CLIをはじめとしたツール類を複数バージョン共存させた状態で、柔軟に切り替えながら使用することができます。

 今回は、Macへのインストールを前提に解説しますが、他のOSの依存パッケージ・asdf-vmのインストール手順については、公式ドキュメント1を参考にしてください。

 まず最初に、asdf-vmの依存パッケージを、Homebrewを利用してインストールします。

$ brew install coreutils curl git

 次に、asdf-vmの本体をインストールします。asdf-vmのインストールオプションとしては、次のふたつが用意されています。

 ・Git

 ・Homebrew

 しかし、Homebrewでインストールした場合は、asdf updateという、asdf-vm自体をセルフアップデートするコマンドを利用できないため、Gitを用いてインストールします。

$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.7.8

 インストールが完了したら、各Shell用の設定ファイルにasdf-vm用の設定を追加します。今回は、MacOSのCatalinaから標準になるzshを前提に、~/.zshrcに以下を追記します。

リスト1.1: ~/.zshrc

# asdf本体
  . $HOME/.asdf/asdf.sh
  # asdfのサブコマンドの補完用設定
  fpath=(${ASDF_DIR}/completions $fpath)
  autoload -Uz compinit
  compinit

 追記した後は再度ログインするか、あるいはsourceなどのコマンドで~/.zshrcを読み直します。その後、以下のようにasdf versionでバージョンが確認できれば、asdf-vmは正常にインストールされています。

$ asdf version

v0.7.8-4a3e3d6

1.2 ローカル検証ツールの比較

 Kubernetesには、ローカルで手軽に検証環境を構築するツール/手法が存在しています。以下は一例です。

 ・kind

  ─Kubernetes in Dockerの略

  ─Dockerコンテナ上でKubernetesクラスターを構築

  ─マルチノード対応

 ・k3d

  ─k3s in Dockerの略

  ─軽量Kubernetesであるk3sのクラスターを構築

  ─マルチノード対応

 ・Minikube

  ─VirtualBox等をドライバーにして、Kubernetesの検証環境を構築

  ─ドライバーとしてDockerの指定も可能(Experimental)2

 ・MicroK8s

  ─Canonical社が提供している軽量Kubernetes

  ─Kubernetes Dashboardといったオフィシャルなものから、IstioやJaegerなどのエコシステムまで、豊富なアドオンが提供されている

 ・Docker for Mac

  ─最近のバージョンから、Kubernetesが同梱されている

 ここで、管理者がKubernetes検証を行う上で必要になってくる要素を考えると、次のような要件が浮かび上がります。

 ・マルチノード対応されていること

  ─Kubernetesのスケジューリングをはじめとした動作確認に必須

 ・環境の作成・破棄が容易であること

 今回はこれらの要件を満たし、かつ宣言的にクラスター構築が可能なkindに焦点を当てて解説します。また、対比として、類似ツールであるk3dについても説明します。

 どちらもDockerコンテナ上にクラスターを展開するツールであるため、事前にDockerをインストール3しておきましょう。

1. asdf-vm 公式サイト https://asdf-vm.com/

2. https://minikube.sigs.k8s.io/docs/reference/drivers/docker/

3. 公式サイト https://docs.docker.com/get-docker/

試し読みはここまでです。
この続きは、製品版でお楽しみください。