kubernetes the hard way on PC (５．Client Tools)

#初めに
「[kubernetes the hard way](https://github.com/kelseyhightower/kubernetes-the-hard-way) を PC でやってみる」の５回目、「Client Tools」についてです。（ [目次](https://qiita.com/shimauma_Zzzzz/items/84ecf5c748ceafd05380#%E8%AA%AC%E6%98%8E%E8%A8%98%E4%BA%8B%E7%9B%AE%E6%AC%A1) ）
ようやく kubernetes the hard way の一番最初のところにたどり着きました。

kubernetes the hard way 自体の構成は以下のようになっています。

- Prerequisites
- Installing the Client Tools
- Provisioning Compute Resources
- Provisioning the CA and Generating TLS Certificates
- Generating Kubernetes Configuration Files for Authentication
- Generating the Data Encryption Config and Key
- Bootstrapping the etcd Cluster
- Bootstrapping the Kubernetes Control Plane
- Bootstrapping the Kubernetes Worker Nodes
- Configuring kubectl for Remote Access
- Provisioning Pod Network Routes
- Deploying the DNS Cluster Add-on
- Smoke Test
- Cleaning Up

このうち、 Prerequisites に関しては、Google Cloud Platform の準備の話ですので
割愛します。（第１回目～３回目がそれに相当します）
ただ、 Prerequisites に記載のある  tmux の使い方については知っていても損は無いと思います。

この記事では、 「Installing the Client Tools」　部分について記載します。
- cfssl、cfssljson の導入
- kubectl の導入

cfssl は、暗号化や認証のための TLS 証明書を発行するためのツールです。
kubectl は、kubernetes API server と連携するためのコマンドです。
kubectl は kubernetes を使う上で最もよく使うコマンドになります。

#cfssl、cfssljson の導入

cfssl 自体の最新版は [github の cloudflare / cfssl](https://github.com/cloudflare/cfssl) で開発されています。
リンク先の右側の  Releases を見れば最新版が何か確認できます。 (2020/06時点で 1.4.1) 
Releases のページに、　各プラットフォーム向けにビルドされたものがありますので、それをダウンロードしてくるだけです。
例えば、 cfssl 1.4.1 の Linux AMD64 プラットフォーム向けの URL は以下の通りです。

https://github.com/cloudflare/cfssl/releases/download/v1.4.1/cfssl_1.4.1_linux_amd64

cfssl と cfssljson をパスの通っている /usr/local/bin にダウンロードします。

curl の -o で出力ファイル名を指定し、 -L で URL を指定しています。

```shell-session
root@k8smaster0:~# cd /usr/local/bin

root@k8smaster0:/usr/local/bin# curl -o cfssl -L https://github.com/cloudflare/cfssl/releases/download/v1.4.1/cfssl_1.4.1_linux_amd64
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   634  100   634    0     0   1837      0 --:--:-- --:--:-- --:--:--  1832
100 14.1M  100 14.1M    0     0  3904k      0  0:00:03  0:00:03 --:--:-- 5753k

root@k8smaster0:/usr/local/bin# curl -o cfssljson -L https://github.com/cloudflare/cfssl/releases/download/v1.4.1/cfssljson_1.4.1_linux_amd64
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   638  100   638    0     0   1898      0 --:--:-- --:--:-- --:--:--  1893
100 9272k  100 9272k    0     0  2975k      0  0:00:03  0:00:03 --:--:-- 4910k

```

ダウンロードが完了したら、実行権限を付け、簡単な動作確認を行います。

```shell-session
root@k8smaster0:/usr/local/bin# chmod 755 cfssl*
root@k8smaster0:/usr/local/bin# ls -l
total 23772
-rwxr-xr-x 1 root root 14842064 May  7 13:55 cfssl
-rwxr-xr-x 1 root root  9495504 May  7 13:55 cfssljson
```

バージョンが確認できればOKです。

```shell-session
root@k8smaster0:/usr/local/bin# cfssl version
Version: 1.4.1
Runtime: go1.12.12

root@k8smaster0:/usr/local/bin# cfssljson --version
Version: 1.4.1
Runtime: go1.12.12
```

#kubectl の導入

kubectl の最新版（安定版）のバージョンを確認するには、以下の URL にアクセスします。
https://storage.googleapis.com/kubernetes-release/release/stable.txt
2020/07/05 時点では、 v1.18.5 でした。 （なぜ 1.16 で環境を作ったのか今となっては全くわかりません。。。）

ダウンロードは下記の URL になります。 (バージョンのところを v1.16.9 に変えれば該当のバージョンのものがダウンロードできます）

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.5/bin/linux/amd64/kubectl

```shell-session
root@k8smaster0:/data/kubernetes# curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.16.9/bin/linux/amd64/kubectl
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 40.9M  100 40.9M    0     0  27.8M      0  0:00:01  0:00:01 --:--:-- 27.8M

```

この辺りは、 kubernetes のドキュメントそのままで、各ディストリビューションのパッケージマネージャーを使う方法も
記載されています。
kubectlのインストールおよびセットアップ
https://kubernetes.io/ja/docs/tasks/tools/install-kubectl/

ダウンロード後、実行権限を付けて、 /usr/local/bin にコピーします。
その後、バージョンを確認します。

```shell-session
root@k8smaster0:/data/kubernetes# chmod 755 kubectl
root@k8smaster0:/data/kubernetes# ls -l kubectl
-rwxr-xr-x 1 root root 44027904 May  9 01:23 kubectl

root@k8smaster0:/data/kubernetes# cp kubectl /usr/local/bin

root@k8smaster0:/# kubectl version --client
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.9", GitCommit:"a17149e1a189050796ced469dbd78d380f2ed5ef", GitTreeState:"clean", BuildDate:"2020-04-16T11:44:51Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}

```


---
今回はここまでとして、次回は Provisioning a CA and Generating TLS Certificates の部分を実施します。
証明書部分はやればできるけれど、理解は難しい、という部分なので自分なりに丁寧にやりたいと思います。

← [４．Clone 作成](https://qiita.com/shimauma_Zzzzz/items/533a31d9994856d21e3c)
↑ [目次](https://qiita.com/shimauma_Zzzzz/items/84ecf5c748ceafd05380#%E8%AA%AC%E6%98%8E%E8%A8%98%E4%BA%8B%E7%9B%AE%E6%AC%A1)
→ [６．Certificates](https://qiita.com/shimauma_Zzzzz/items/03d28db24cf9d9830760)

----