My Note

自己理解のためのブログ

GKEでコンテナ ( Nginx-Proxy + Go )を動かす

やること

  • GKEクラスタを作成以下の前ブログで作成済み

yhidetoshi.hatenablog.com

  • Deploymentを作成
    • imageは自身のDocker Hubから取得

yhidetoshi.hatenablog.com

  • Serviceを作成
    • imageは自身のDocker Hubから取得

Nodeの確認

$ kubectl get nodes

NAME                                           STATUS    ROLES     AGE       VERSION
gke-dev-cluster-1-default-pool-fb10b043-739n   Ready     <none>    25m       v1.11.7-gke.12
gke-dev-cluster-1-default-pool-fb10b043-mt09   Ready     <none>    25m       v1.11.7-gke.12
gke-dev-cluster-1-default-pool-fb10b043-ws9l   Ready     <none>    25m       v1.11.7-gke.12

DeploymentでPodとコンテナを作成する

■ sample-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: echo
  labels:
    app: echo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: echo
  template:
    metadata:
       labels:
         app: echo
    spec:
      containers:
      - name: nginx
        image: hyajima/docker_golang_nginx:latest
        ports:
         - containerPort: 80
      - name: echo
        image: hyajima/golang_echo:latest
        ports:
        - containerPort: 8080

$ kubectl apply -f sample-deploy.yaml

deployment.apps/echo created

リソースを確認する

$ kubectl get pod,replicaset,deployment --selector app=echo

NAME                        READY     STATUS    RESTARTS   AGE
pod/echo-857fd889bc-tsvzl   2/2       Running   0          1m

NAME                                    DESIRED   CURRENT   READY     AGE
replicaset.extensions/echo-7b8d64d78f   0         0         0         7m
replicaset.extensions/echo-857fd889bc   1         1         1         1m

NAME                         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deployment.extensions/echo   1         1         1            1           7m

サービスを作成する

■ sample-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: frontend
spec:
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: echo
  type: LoadBalancer

$ kubectl apply -f sample-service.yaml

$ kubectl get service

kubectl get service
NAME         TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)        AGE
frontend     LoadBalancer   10.27.254.67   104.198.X.X      80:31813/TCP   1h
kubernetes   ClusterIP      10.27.240.1    <none>           443/TCP        2h

■ 動作確認

$ curl 104.198.X.X

> Hello Docker!!