Skip to content

Instantly share code, notes, and snippets.

@zaru
Last active March 21, 2020 07:37
Show Gist options
  • Save zaru/ae1d3294415fedbaec614137125e01c6 to your computer and use it in GitHub Desktop.
Save zaru/ae1d3294415fedbaec614137125e01c6 to your computer and use it in GitHub Desktop.
minikube 導入ドキュメント

インストールと起動

brew cask install minikube
minikube start

ローカルDockerイメージを使う方法

リモートのDockerリポジトリイメージがデフォルトになっているので、ローカルでビルドしたDockerイメージはそのままでは使えない。minikube内部のDockerエンジンに切り替える必要がある。

eval $(minikube docker-env)

これをしてから docker build kubectl create などを行う。

また、イメージタグは latest ではなく固有のものを利用する。そうしないとリモートに探しに行ってしまう模様。

minikubeに切り替える

kubectl の向き先を minikube に切り替えます。

kubectl config use-context minikube

なお、クラスタ一覧は下記コマンドで取得できます。

kubectl config  get-clusters

クラスタのIPなどは下記コマンドで取得できる。

kubectl cluster-info

Kubernetes master is running at https://192.168.99.100:8443

IPを取得する

デプロイしたアプリにアクセスするためにIPを取得します。Serviceを作成していることが前提です。

minikube service kube-test --url

なお、Service の Type LoadBalancer は外部依存なので NodePort になります ( External-IP が pending のまま) 。他にも Ingress を使う方法があるっぽいが、 BananaCI 的には Ingress だと GCP ロードバランサを利用することになるのでコスト的に厳しいかもしれないです。

REST API

普通に使える。

APIのURLは 192.168.99.100:8443 だった。

ExternalIP

curl https://example.com/api/v1/namespaces/default/services/{service name} \
  --header "Authorization: Bearer $TOKEN" \
  --insecure | jq ".status"

通常のサービスであれば上記APIでIngressのIPが取得できる。

minikubeの場合は ExternalIP はないので、ポートだけ取得する。

curl https://192.168.99.100:8443/api/v1/namespaces/default/services/{service name} \
  --header "Authorization: Bearer $TOKEN" \
  --insecure | jq ".spec.ports[0]"

他の環境から minikube に接続する

もろもろの証明書は minikube を構築した環境からコピーしておく。

kubectl config set-cluster minikube --server=https://192.168.99.100:8443 --certificate-authority=/root/.minikube/ca.crt
kubectl config set-credentials minikube --certificate-authority=/root/.minikube/ca.crt --client-key=/root/.minikube/client.key --client-certificate=/root/.minikube/client.crt
kubectl config set-context minikube --cluster=minikube --user=minikube
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment