Kubernetesの学習の中で手をつけれていなかったKubernetes the hard way(GCP版)を最近完走しました。(AWSなど別のクラウド版のHard Wayも試す予定なのでGCP版と記載しています)
約1日かけてハンズオンを実施した後に内容を復習して、ある程度目処がついたのでブログ記事にしてまとめていきます。
Kubernetes The Hard wayを始めたきっかけ
Kubernetes Meetup Noviceの運営メンバーで「Kubernetes the hard wayは一度はやっておかないと...」という話になったのがきっかけです。
個々人でハンズオンを実施するのも面白くないので、予定を合わせて一緒にハンズオンを実施することになりました。(もくもく会的な感じでやりました)
余談ですが、今回はこのカフェでハンズオンをしていました。
(ご飯も美味しいのでおすすめです。自宅から近かったら間違いなくヘビロテしてる...)
きっかけはこんな感じですが、個人的には他にも下記のようなモチベーションがありました。
- Kubernetesの各コンポーネントと全体像を復習したい
- コンポーネント同士の関係性(各コンポーネントに持たせる設定情報も含む)を整理したい
- Kubernetesのセキュリティ(クライアント証明書による認証 etc.)やネットワーク周りなどの理解を深めたい
Kubernetes The Hard wayとは?
KubernetesのクラスタをGCP上に構築するというハンズオンです。
単にGKEでクラスタを作成するのではなく、GCEのインスタンスにクラスタに必要なコンポーネントを導入・設定してKubernetesのクラスタを組むというものです。
Kubernetesクラスタに必要なコンポーネント(e.g. api-server, etcd...)の導入から行うので、クラスタ内部の仕様の理解にはもってこいのハンズオンです。
日本語版のレポジトリもあります。
英訳等の負担を少なくしてハンズオンを実施したい場合はこちらもおすすめです。
環境
下記のような環境でハンズオンを進めました。
後述しますが、kubectlのバージョンによってはハンズオンの中でコマンドの実行結果が正常に取得できない部分があるので注意が必要です。
(v1.17.2では、クライアントPCからkubectl get component status
を実行しても出力結果が正常に出力できません。)
github.com
前置きが長くなりましたが、ここからハンズオンの内容に入っていきます。
Chap1. prerequisites(前提条件)
GCPでは初学者向けに$300分の無料枠が用意されているので、そちらを利用します。
作成したリソース類を長期間放置しなければ、ハンズオンを実施しても無料枠の範囲に余裕で収まるはずです。
(自分の場合は 02/29(土)〜 03/02(月)までの3日間で約2300円程度のコストがかかっていました。)
Google Cloud SDKのインストール
MacOS版のドキュメントに従って、SDKのインストールを行います。
今回SDKを初めてインストールしたので、gcloud init
コマンドで初期設定を行い自身のGoogleアカウントでログインしておきます。
次にハンズオンの記載通りに、デフォルトのリージョン(us-west1
)とゾーン(us-west1-c
)を指定して、プロジェクトの作成状況とコマンドの設定を確認します。
> gcloud projects list PROJECT_ID NAME PROJECT_NUMBER k8s-hardway-20200229 k8s-hardway-20200229 xxxxx ... > gcloud config list [compute] region = us-west1 zone = us-west1-c [core] account = ... disable_usage_reporting = False project = k8s-hardway-20200229
Chap2. installing the Client Tools(ツールのインストール)
ハンズオンではcfssl(cfssljson)とkubectlを利用するため、それらもインストールしておきます。
cfssl(cfssljson)のインストール
cfsslの説明箇所に... be used to provision a PKI Infrastructure
と書いてあり、意味を汲み取るのに少し苦労しました。
cfsslはTLS証明書やrootCA証明書などPKIに必要なものを一括で用意できる(=PKI Infrastructureをプロビジョニングできる)ツールです。
Chap4でcfsslを利用してTLS証明書の作成を行うので、その部分の記事でPKI関連の話もまとめようと思います。
opensslでも対応できそうですが、cfsslの方はjson形式でCSRを作成できるので、より簡潔に証明書の作成ができると感じました。
自分はパッケージマネージャーとしてHomebrewを利用しているため、brewコマンドでインストールを行いました。
brew install cfssl
kubectlのインストール
Kubectlに関してはインストール済みなので、手順としてはスキップしています。
(インストールする場合は、こちらもHomebrewでインストールを行うと思います。)
brew install kubectl
Chap1〜Chap2の内容を簡単にまとめました。
なるべく間が空かないように、次のチャプターの記事も書いていこうと思います。