ローカルでビルドしたimageをminikubeで使う
kubernetes$ minikube version
minikube version: v0.25.0
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.2", GitCommit:"5fa2db2bd46ac79e5e00a4e6ed24191080aa463b", GitTreeState:"clean", BuildDate:"2018-01-18T21:11:08Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"darwin/amd64"}
$ kubectl config current-context
minikube
$ minikube status
minikube: Running
cluster: Running
kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.100
dockerコマンドがminikube VM内で動いているdocker daemonを参照するようにする。
$ minikube docker-env
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/sambaiz/.minikube/certs"
$ eval $(minikube docker-env)
$ docker info --format '{{json .Name}}'
"minikube"
ビルドするDockerfile。nginxが立ち上がるだけ。
FROM nginx
何もタグを付けない(:latest)とcreate時にDockerレジストリからpullしにいって失敗してしまうため、タグ付きでビルドする。
$ docker build -t my/myapp:1.0 .
$ docker images my/myapp
my/myapp 1.0 3f8a4339aadd 5 weeks ago 108 MB
deploymentとservice。
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: my-app
labels:
app: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my/myapp:1.0
ports:
- containerPort: 80
apiVersion: v1
kind: Service
metadata:
name: my-app
labels:
app: my-app
spec:
type: NodePort
ports:
- port: 80
nodePort: 30001
selector:
app: my-app
$ kubectl create -f deployment.yml
$ kubectl create -f service.yml
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-app-5f8c46bf95-xjvrg 1/1 Running 0 11s
ビルドしたimageでpodが動いていることを確認。
$ curl $(minikube service my-app --url)
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...