まえがき
第1章 Kubernetesの検証準備
第2章 Kubernetesの設定例
第3章Kubernetesのマニフェスト管理
第4章 Admission Webhook 入門
第5章 終わりに
あとがき
本書をお手に取っていただき、ありがとうございます。
近年、Kubernetesをはじめとした、クラウドネイティブアプリケーションの周辺技術が、盛り上がりを見せています。またその中で、Kubernetes初級者を対象とした入門書籍や記事が広く出版・公開されており、2020年現在では、開発者がGetting Startするには困らない環境が整ってきています。
しかしながら、入門を終えた方向け、かつ管理者向けの情報は、まだまだ相対的に数が少ない状況です。本書では、Kubernetes管理者の方が、次のステップに進む際の助けとなるような情報を提供することを目的にしています。
タイトルは、一学期(Kubernetesの入門)を終えた方に、二学期(実運用をはじめとした次のステップ)に移る前に一読していただきたい内容を詰め込んだという意図で、「夏休みのしおり」とネーミングしました。
本書では、主に以下を満たす方を対象としています。
・Kubernetesの入門を終えている
─Deployment、Serviceなど基本的なリソースのハンズオンは終えている
─kube-apiserver、kube-schedulerなどKubernetesコンポーネントの大まかな構成は把握している
・情報システムの管理者である
本章では、Kubernetesの検証環境を整えていきます。こちらで紹介するツールは、2章以降のハンズオンでも利用しますので、本章を先に読み進めておく事をおすすめします。
本書では、各ハンズオンで利用する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に以下を追記します。
# 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
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しておきましょう。