Kubernetes Engine
Create a Kubernetes cluster and deploy a container.
Kubernetes Engine is a secured and managed Kubernetes service so you can deploy containerized application in an enterprise/production-grade Kubernetes cluster with a click of a button.
Getting Started
Clone
cd $HOME
git clone https://github.com/saturnism/jvm-helloworld-by-example
cd jvm-helloworld-by-example/helloworld-springboot-tomcatBuild
./mvnw packageContainerize
Enable API
Enable the Container Registry API so that you can push container images to Container Registry.
gcloud services enable containerregistry.googleapis.comJib
Use Jib to containerize the application:
PROJECT_ID=$(gcloud config get-value project)
./mvnw compile com.google.cloud.tools:jib-maven-plugin:2.4.0:build \
-Dimage=gcr.io/${PROJECT_ID}/helloworldCreate Cluster
Enable API
gcloud services enable compute.googleapis.com
gcloud services enable container.googleapis.comCreate Cluster
Create a VPC-native Kubernetes Engine cluster.
gcloud container clusters create helloworld-cluster \
--num-nodes 2 \
--enable-ip-alias \
--scopes=cloud-platform \
--network=default \
--machine-type n1-standard-1Cluster Credentials
Kubernetes credentials are automatically retrieved and stored in your $HOME/.kube/config file. If you need to re-retrieve the credentials:
gcloud container clusters get-credentials helloworld-clusterDeploy
PROJECT_ID=$(gcloud config get-value project)
kubectl create deployment helloworld \
--image=gcr.io/${PROJECT_ID}/helloworldCheck that the container is deployed:
kubectl get podsExpose
You can expose this one service using a single Network (L4) Load Balancer:
kubectl create service loadbalancer helloworld --tcp=8080:8080Connect
Find the Load Balancer's External IP address:
kubectl get services helloworldInitially, it may display that the External IP is <pending>.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
helloworld LoadBalancer ... <pending> 8080:32414/TCP ...Re-check until the External IP is assigned.
Then connect with curl:
EXTERNAL_IP=$(kubectl get svc helloworld \
-ojsonpath='{.status.loadBalancer.ingress[0].ip}')
curl http://${EXTERNAL_IP}:8080Learn More
Last updated
Was this helpful?