brew cask install minikube
minikube start
リモートのDockerリポジトリイメージがデフォルトになっているので、ローカルでビルドしたDockerイメージはそのままでは使えない。minikube内部のDockerエンジンに切り替える必要がある。
eval $(minikube docker-env)
これをしてから docker build
kubectl create
などを行う。
また、イメージタグは latest
ではなく固有のものを利用する。そうしないとリモートに探しに行ってしまう模様。
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を取得します。Serviceを作成していることが前提です。
minikube service kube-test --url
なお、Service の Type LoadBalancer は外部依存なので NodePort になります ( External-IP が pending のまま) 。他にも Ingress を使う方法があるっぽいが、 BananaCI 的には Ingress だと GCP ロードバランサを利用することになるのでコスト的に厳しいかもしれないです。
普通に使える。
APIのURLは 192.168.99.100:8443
だった。
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 を構築した環境からコピーしておく。
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