Hello World App by Spring Boot deployed to GKE with Cloud Build
This project describes how to deploy Spring App to GKE using CI/CD pipeline by Cloud Build.
FROM gradle:6.5.0-jdk11 as build
COPY --chown=gradle:gradle . /home/gradle/src
WORKDIR /home/gradle/src
RUN gradle assemble --no-daemon
FROM openjdk:11.0.5-jre-slim-buster
COPY --from=build /home/gradle/src/build/libs/*.jar /app.jar
:
:
hello-gke is app-name and repository-name.
$ gcloud config get-value project
$ gcloud builds submit --tag gcr.io/<GOOGLE_PROJECT_ID>/hello-gke <DOCKERFILE_DIRECTORY>
hello-gke-cluster is GKE cluster name.
$ gcloud container clusters create <GKE_CLUSTER_NAME> \
--num-nodes 1 \
--scopes cloud-platform \
--enable-stackdriver-kubernetes \
--enable-ip-alias \
--zone us-central1-c
kubeconfig entry$ gcloud container clusters get-credentials <CLUSTER_NAME> --zone us-central1-c
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-gke-deployment
spec:
selector:
matchLabels:
app: hello-gke
replicas: 1
template:
metadata:
labels:
app: hello-gke
spec:
containers:
- name: hello-gke-app
image: gcr.io/GOOGLE_CLOUD_PROJECT/hello-gke:latest
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: hello-gke
spec:
type: NodePort
selector:
app: hello-gke
ports:
- protocol: TCP
port: 8080
targetPort: 8080
apiVersion: v1
kind: Service
metadata:
name: hello-gke-loadbalancer
spec:
type: LoadBalancer
selector:
app: hello-gke
ports:
- protocol: TCP
port: 80
targetPort: 8080
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: hello-gke-ingress
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: hello-gke
servicePort: 8080
$ kubectl apply -f spring/kubernetes/deployment.yml
$ kubectl apply -f spring/kubernetes/service.yml
$ kubectl apply -f spring/kubernetes/ingress.yml
hello-gke is source-repository-name.
$ gcloud source repos create <REPOSITRY_NAME>
$ git config credential.'https://source.developers.google.com'.helper gcloud.sh
$ git remote add google https://source.developers.google.com/p/(gcloud config get-value project)/r/$_flag_repository
$ git push google master
$ gcloud projects add-iam-policy-binding (gcloud config get-value project) --member serviceAccount:<CLOUDBUILD_SA> --role roles/container.admin
$ gcloud projects add-iam-policy-binding (gcloud config get-value project) --member serviceAccount:<CLOUDBUILD_SA> --role roles/source.writer
Released under the MIT license
Content type
Image
Digest
Size
88.5 MB
Last updated
over 6 years ago
docker pull shinyay/spring-hello-gke