minikubeをMacにインストールする

GKEのkubernetesを利用したアプリの開発用に、
ローカルのVM上でsingle-nodeで稼働するkubernetes環境のminikubeをインストールします。

一部を除き基本的に下記公式リンクの手順のままです。
https://kubernetes.io/docs/getting-started-guides/minikube/



#環境
MacOS 10.12.6 (Sierra)
VirtualBox 5.1.28

# 楽されたい方
公式にはありませんが下記手順で（minikubeインストールまで）が一度にできるようです。
バージョン等気にしない&とりあえずの方は下記をどうぞ。

```
brew update && brew install kubectl && brew cask install docker minikube virtualbox
```


#VirtualBoxインストール
minikubeが稼働するVM用にVirtualBoxをインストールします。

https://qiita.com/Manjiii/items/5546cde1ecf532cf2082
と同じようにhomebrewでインストールしました。

```
brew cask install virtualbox
```

#Dockerインストール
https://www.docker.com/
からインストール。

もしくはbrew caskでインストール

```
brew cask install docker
```
お好みで。


#kubectlインストール
kubernetesのコマンドラインツールであるkubectlをインストールします。
下記に環境毎のインストール方法が記載されています。
https://kubernetes.io/docs/tasks/tools/install-kubectl/


私は上記の中の手動で自由に更新できる、下記方法でstableの最新バージョンをインストールしました。
(結構頻繁にバージョン上がってるようです)

```
#最新版取得
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/darwin/amd64/kubectl

#権限追加
chmod +x ./kubectl

#配置
sudo mv ./kubectl /usr/local/bin/kubectl
```

#minikubeインストール
公式手順のページからリンクされているGithub上にインストール方法が記載されています。
https://github.com/kubernetes/minikube/releases

Mac用の方法は下記コマンドになります。

```
curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.23.0/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
```

#minikube動作確認

##起動
minikubeを起動します。

```
#お作法でバージョン確認
minikube version

#起動
minikube start
```
##デモ用のアプリを動かしてみる
https://kubernetes.io/docs/getting-started-guides/minikube/
にコメントの追加と多少のいじっただけで記載されているものほぼそのままです。

```
#　デモ用のイメージを取得して動かす
kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.4 --port=8080
deployment "hello-minikube" created


#　外からアクセスできるようにする
kubectl expose deployment hello-minikube --type=NodePort
service "hello-minikube" exposed


#　podの情報を取得する
kubectl get pod


#　起動まで時間がかかるのでpodのstatusがRunningになるまで待つ
NAME                              READY     STATUS              RESTARTS   AGE
hello-minikube-3383150820-vctvh   1/1       ContainerCreating   0          3s
#↓
NAME                              READY     STATUS    RESTARTS   AGE
hello-minikube-3383150820-vctvh   1/1       Running   0          13s


#　動いているserviceを確認

minikube service list

|-------------|----------------------|-----------------------------|
|  NAMESPACE  |         NAME         |             URL             |
|-------------|----------------------|-----------------------------|
| default     | kubernetes           | No node port                |
| default     | hello-minikube       | http://192.168.99.100:XXXXX |
| kube-system | kube-dns             | No node port                |
| kube-system | kubernetes-dashboard | http://192.168.99.100:30000 |
|-------------|----------------------|-----------------------------|

# curlで叩いてみる
curl $(minikube service hello-minikube --url)
# 結果がつらつらとでれば成功
CLIENT VALUES:
client_address=192.168.99.1
command=GET
real path=/
...

```

# 管理画面を開いてみる
ブラウザで、上記サービスの中で出ている、
「kubernetes-dashboard」のURLを叩くと管理画面が見ることができます。
http://192.168.99.100:30000


## デモアプリの削除とminikube停止
```
#　デモアプリをminikubeから削除する
kubectl delete deployment hello-minikube

#　minikubeを止める
minikube stop

```


#参考URL
getting-started-guides
https://kubernetes.io/docs/getting-started-guides/minikube/