taxin's notes

読書、勉強メモ etc.

Kubernetes the hard way (GCP版) #1~2 (事前準備~ツールのインストール)

Kubernetesの学習の中で手をつけれていなかったKubernetes the hard way(GCP版)を最近完走しました。(AWSなど別のクラウド版のHard Wayも試す予定なのでGCP版と記載しています)

約1日かけてハンズオンを実施した後に内容を復習して、ある程度目処がついたのでブログ記事にしてまとめていきます。

Kubernetes The Hard wayを始めたきっかけ

Kubernetes Meetup Noviceの運営メンバーで「Kubernetes the hard wayは一度はやっておかないと...」という話になったのがきっかけです。
個々人でハンズオンを実施するのも面白くないので、予定を合わせて一緒にハンズオンを実施することになりました。(もくもく会的な感じでやりました)

余談ですが、今回はこのカフェでハンズオンをしていました。
(ご飯も美味しいのでおすすめです。自宅から近かったら間違いなくヘビロテしてる...)

www.google.com

きっかけはこんな感じですが、個人的には他にも下記のようなモチベーションがありました。

Kubernetes The Hard wayとは?

KubernetesクラスタGCP上に構築するというハンズオンです。
単にGKEクラスタを作成するのではなく、GCEのインスタンスクラスタに必要なコンポーネントを導入・設定してKubernetesクラスタを組むというものです。

Kubernetesクラスタに必要なコンポーネント(e.g. api-server, etcd...)の導入から行うので、クラスタ内部の仕様の理解にはもってこいのハンズオンです。

github.com

日本語版のレポジトリもあります。
英訳等の負担を少なくしてハンズオンを実施したい場合はこちらもおすすめです。

github.com

環境

下記のような環境でハンズオンを進めました。

  • MacOS:Mojave(v10.14.6)
  • Kubectl:v1.17.2
  • zsh / iTerm2 (結局tmuxは使いませんでした)

後述しますが、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のインストールを行います。

cloud.google.com

今回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を作成できるので、より簡潔に証明書の作成ができると感じました。

qiita.com

自分はパッケージマネージャーとしてHomebrewを利用しているため、brewコマンドでインストールを行いました。

brew install cfssl

kubectlのインストール

Kubectlに関してはインストール済みなので、手順としてはスキップしています。
(インストールする場合は、こちらもHomebrewでインストールを行うと思います。)

brew install kubectl

kubernetes.io

Chap1〜Chap2の内容を簡単にまとめました。
なるべく間が空かないように、次のチャプターの記事も書いていこうと思います。