DockerをMacにインストールしてKubernetes Dashboardにアクセスしたメモ

勉強のためにDockerとKubernetesをMac上にインストールしてみました。
どがつく素人なのでお気付きの点があればご指摘いただけると大変ありがたいです。


#やること
DockerおよびKubernetesをMacにインストールし、Kubernetes Dashboardにアクセスするところまでやってみます。

#参考にした記事

https://qiita.com/Ricordanza/items/8aa0b65f140d483feaa3
https://qiita.com/h-sakano/items/79bb15f7a0661e141c75

#Dockerのインストール
ここからDocker Desktop (Mac)をインストール
https://store.docker.com/editions/community/docker-ce-desktop-mac
インストールにあたり、Sign upが必要でした。登録してあげるか・・・

ダウンロードができたら、Docker.dmgを開いて指示通りにインストールを進めます。

アプリを開いて、右上のdockerアイコンからPreferenceを開きます。
![スクリーンショット 2019-02-08 16.28.33.png](https://qiita-image-store.s3.amazonaws.com/0/350898/9715b6b4-82ab-675e-b09b-135db489f3b6.png)
おっと・・・食べログ開いているのが見えてしまいましたね・・・

Kubernetesのタブで「enable Kubernetes」にチェックを入れ、Applyします。
![スクリーンショット 2019-02-08 16.29.26.png](https://qiita-image-store.s3.amazonaws.com/0/350898/841b81a3-0352-3c08-4ac5-490f82b1944b.png)

画面に従ってInstallを進めます。

「Installation complete!」
がでできました！やったね！

#動作確認

続いてターミナルで動作確認をします。

まず起動の確認をします。

```terminal
$ kubectl config get-contexts
CURRENT   NAME                 CLUSTER                      AUTHINFO             NAMESPACE
*         docker-for-desktop   docker-for-desktop-cluster   docker-for-desktop 
```

続いてnodeの確認

```terminal
$ kubectl get nodes
NAME                 STATUS    ROLES     AGE       VERSION
docker-for-desktop   Ready     master    20m       v1.10.11
```
podの確認

```terminal
$ kubectl get po --all-namespaces
NAMESPACE     NAME                                         READY     STATUS    RESTARTS   AGE
docker        compose-74649b4db6-gk78h                     1/1       Running   0          20m
docker        compose-api-6ddbbd49bb-plkqd                 1/1       Running   0          20m
kube-system   etcd-docker-for-desktop                      1/1       Running   0          20m
kube-system   kube-apiserver-docker-for-desktop            1/1       Running   0          20m
kube-system   kube-controller-manager-docker-for-desktop   1/1       Running   0          20m
kube-system   kube-dns-86f4d74b45-6pk5f                    3/3       Running   0          20m
kube-system   kube-proxy-wxh6k                             1/1       Running   0          20m
kube-system   kube-scheduler-docker-for-desktop            1/1       Running   0          20m
```
うんうん

#kubernetes-dashboardのインストール
していきましょう
以下のURLのinstallation通りにインストールすると最新のものを使えて安心安全ですね！
https://github.com/kubernetes/dashboard/releases

```terminal
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml


secret "kubernetes-dashboard-certs" created
serviceaccount "kubernetes-dashboard" created
role.rbac.authorization.k8s.io "kubernetes-dashboard-minimal" created
rolebinding.rbac.authorization.k8s.io "kubernetes-dashboard-minimal" created
deployment.apps "kubernetes-dashboard" created
service "kubernetes-dashboard" created
```
動いているか確認しましょう

```terminal
$ kubectl get deployments,replicasets,pods,service --all-namespaces -o wide --selector=k8s-app=kubernetes-dashboard
```
dashboardのSTATUSがRunningになっているか確認しましょう

```terminal
NAMESPACE     NAME                                         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE       CONTAINERS             IMAGES                                          SELECTOR
kube-system   deployment.extensions/kubernetes-dashboard   1         1         1            1           23s       kubernetes-dashboard   k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1   k8s-app=kubernetes-dashboard

NAMESPACE     NAME                                                    DESIRED   CURRENT   READY     AGE       CONTAINERS             IMAGES                                          SELECTOR
kube-system   replicaset.extensions/kubernetes-dashboard-669f9bbd46   1         1         1         23s       kubernetes-dashboard   k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1   k8s-app=kubernetes-dashboard,pod-template-hash=2259566802

NAMESPACE     NAME                                        READY     STATUS    RESTARTS   AGE       IP         NODE
kube-system   pod/kubernetes-dashboard-669f9bbd46-skmj5   1/1       Running   0          23s       10.1.0.6   docker-for-desktop

NAMESPACE     NAME                           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE       SELECTOR
kube-system   service/kubernetes-dashboard   ClusterIP   10.103.154.163   <none>        443/TCP   23s       k8s-app=kubernetes-dashboard
```
うんうん

#ダッシュボードにアクセス
ここまでできたらサービスを立ち上げてみましょう

```terminal
$ kubectl proxy
```
立ち上げたら以下のURLにアクセスしてみます・・・
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

おっと、何やら認証を求められますね？![スクリーンショット 2019-02-08 16.55.56.png](https://qiita-image-store.s3.amazonaws.com/0/350898/6860714c-04a1-2c69-12cc-c135c8365a4b.png)
ここで権限の情報を見てみましょう

```terminal
$ kubectl -n kube-system get secret
NAME                                             TYPE                                  DATA      AGE
attachdetach-controller-token-ccjnx              kubernetes.io/service-account-token   3         1h
bootstrap-signer-token-7szpc                     kubernetes.io/service-account-token   3         1h
bootstrap-token-cawlk6                           bootstrap.kubernetes.io/token         7         1h
certificate-controller-token-4gtmk               kubernetes.io/service-account-token   3         1h
clusterrole-aggregation-controller-token-966np   kubernetes.io/service-account-token   3         1h
cronjob-controller-token-6zxb9                   kubernetes.io/service-account-token   3         1h
daemon-set-controller-token-9w9wg                kubernetes.io/service-account-token   3         1h
default-token-6lkvx                              kubernetes.io/service-account-token   3         1h
deployment-controller-token-2hsb6                kubernetes.io/service-account-token   3         1h
disruption-controller-token-qk857                kubernetes.io/service-account-token   3         1h
endpoint-controller-token-lpjqd                  kubernetes.io/service-account-token   3         1h
generic-garbage-collector-token-vgpc4            kubernetes.io/service-account-token   3         1h
horizontal-pod-autoscaler-token-f6xst            kubernetes.io/service-account-token   3         1h
job-controller-token-67xp9                       kubernetes.io/service-account-token   3         1h
kube-dns-token-8w495                             kubernetes.io/service-account-token   3         1h
kube-proxy-token-96lwg                           kubernetes.io/service-account-token   3         1h
kubernetes-dashboard-certs                       Opaque                                0         4m
kubernetes-dashboard-key-holder                  Opaque                                2         41m
kubernetes-dashboard-token-cxzth                 kubernetes.io/service-account-token   3         4m
namespace-controller-token-mr5rw                 kubernetes.io/service-account-token   3         1h
node-controller-token-h5h2x                      kubernetes.io/service-account-token   3         1h
persistent-volume-binder-token-vp7b5             kubernetes.io/service-account-token   3         1h
pod-garbage-collector-token-hgb7q                kubernetes.io/service-account-token   3         1h
pv-protection-controller-token-hbrn9             kubernetes.io/service-account-token   3         1h
pvc-protection-controller-token-99fxc            kubernetes.io/service-account-token   3         1h
replicaset-controller-token-brq4b                kubernetes.io/service-account-token   3         1h
replication-controller-token-xrkvj               kubernetes.io/service-account-token   3         1h
resourcequota-controller-token-q9ckn             kubernetes.io/service-account-token   3         1h
service-account-controller-token-qs45v           kubernetes.io/service-account-token   3         1h
service-controller-token-26llj                   kubernetes.io/service-account-token   3         1h
statefulset-controller-token-p26mt               kubernetes.io/service-account-token   3         1h
token-cleaner-token-x4bm9                        kubernetes.io/service-account-token   3         1h
ttl-controller-token-2jlcq                       kubernetes.io/service-account-token   3         1h
```
deployment-controllerの権限でログインしてみましょう

```terminal
#上記のリストからdeployment-controllerを探し出して指定する

$ kubectl -n kube-system describe secret deployment-controller-token-2hsb6 
Name:         deployment-controller-token-2hsb6
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name=deployment-controller
              kubernetes.io/service-account.uid=7aae99f8-2b66-11e9-886e-025000000001

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  11 bytes
token:      #ここにtokenが現れる
```
ここで現れたtokenを先ほどの認証画面で入れてあげます
![スクリーンショット 2019-02-08 17.05.05.png](https://qiita-image-store.s3.amazonaws.com/0/350898/66e77c31-f422-3e0b-3116-0d92413ecf75.png)
ログインできましたね！！！！

今日はここまでです〜〜！