GKEでサクッとアプリを動かす
goのhttpサーバーをサクッとデプロイして動かしたい 手順
Dockerfile作る
docker build
docker push でGCRにイメージをpushする gke cluster 作成
gke deployment 作成
gke service (lb) 作成
Dockerfileの用意 (アプリはGoの3000ポートでリッスンするサーバー) code:Dockerfile
FROM golang:1.14.6-alpine3.12 AS builder
WORKDIR /app
RUN apk upgrade
COPY go.mod go.sum /
RUN go mod download
COPY . .
RUN go build -o main main.go
FROM alpine:3.12
RUN apk upgrade
COPY --from=builder /app/main ./app
EXPOSE 3000
docker build
tagはとりあえずcommit hashにしてる
app_name は適当に
code:sh
docker build -t gcr.io/${PROJECT_ID}/${app_name}:${git rev-parse --short HEAD} .
docker push
app_name は適当に
code:sh
docker push gcr.io/${PROJECT_ID}/${app_name}:${git rev-parse --short HEAD}
gke cluster 作成
cluster_name は適当に
code:sh
gcloud container clusters create ${cluster_name}
gke deployment 作成
gcloudコマンドでもできる
code:deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: main
spec:
replicas: 2
selector:
matchLabels:
app: main
template:
metadata:
labels:
app: main
spec:
containers:
- name: app
image: gcr.io/${PROJECT_ID}/${app_name}:${tag} # ここは適宜置き換える
ports:
- containerPort: 3000
deployment作成
code:sh
kubectl apply -f deployment.yml
gke service(lb) 作成
gcloudコマンドでもできる
code:lb.yml
apiVersion: v1
kind: Service
metadata:
name: main-lb
spec:
selector:
app: main
type: LoadBalancer
ports:
- port: 80
targetPort: 3000
lb作成
code:sh
kubectl apply -f lb.yml
GCPコンソールからLBの外部IPを確認し、アクセスしてみる