Back to blog
Jul 05, 2024
4 min read

Deploy an App on a Cluster in GKE

Using gcloud command to deploy an App on a Cluster in GKE(Google Kubernetes Engine)

Launch Cloud Shell

In this tutorial you will use Cloud Shell, which is a shell environment for managing resources hosted on Google Cloud.

Cloud Shell comes preinstalled with the Google Cloud CLI and kubectl command-line tool. The gcloud CLI provides the primary command-line interface for Google Cloud, and kubectl provides the primary command-line interface for running commands against Kubernetes clusters.

img01

Set default project by typing this command:

gcloud config set project PROJECT_ID

Replace PROJECT_ID with your project ID.

img02 img03

Create a GKE cluster

A cluster consists of at least one cluster control plane machine and multiple worker machines called nodes. Nodes are Compute Engine virtual machine (VM) instances that run the Kubernetes processes necessary to make them part of the cluster. You deploy applications to clusters, and the applications run on the nodes.

Create an Autopilot cluster named hello-cluster:

gcloud container clusters create-auto hello-cluster --location=us-central1

img04 img05

Get authentication credentials for the cluster

After creating your cluster, you need to get authentication credentials to interact with the cluster:

gcloud container clusters get-credentials hello-cluster --location us-central1

This command configures kubectl to use the cluster you created.

img06

Deploy an application to the cluster

Now that you have created a cluster, you can deploy a containerized application to it. For this quickstart, you can deploy our example web application, hello-app.

GKE uses Kubernetes objects to create and manage your cluster’s resources. Kubernetes provides the Deployment object for deploying stateless applications like web servers. Service objects define rules and load balancing for accessing your application from the internet.

Create the Deployment

To run hello-app in your cluster, you need to deploy the application by running the following command:

kubectl create deployment hello-server \ --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0

This Kubernetes command, kubectl create deployment, creates a Deployment named hello-server. The Deployment’s Pod runs the hello-app container image.

In this command:

—image specifies a container image to deploy. In this case, the command pulls the example image from an Artifact Registry repository,

us-docker.pkg.dev/google-samples/containers/gke/hello-app. :1.0

indicates the specific image version to pull. If you don’t specify a version, the image with the default tag latest is used.

Expose the Deployment

After deploying the application, you need to expose it to the internet so that users can access it. You can expose your application by creating a Service, a Kubernetes resource that exposes your application to external traffic.

To expose your application, run the following kubectl expose command:

kubectl expose deployment hello-server \
--type LoadBalancer \
--port 80 \
--target-port 8080

Passing in the —type LoadBalancer flag creates a Compute Engine load balancer for your container.

The —port flag initializes public port 80 to the internet and the —target-port flag routes the traffic to port 8080 of the application.

Inspect and view the application

  1. Inspect the running Pods by using kubectl get pods:
kubectl get pods

You should see one hello-server Pod running on your cluster.

  1. Inspect the hello-server Service by using kubectl get service:
kubectl get service hello-server

From this command’s output, copy the Service’s external IP address from the EXTERNAL-IP column.

  1. View the application from your web browser by using the external IP address with the exposed port: http://EXTERNAL_IP

img07

You have just deployed a containerized web application to GKE.

img08

Congratulations! 👍

Toutes nos félicitations! 👍

Clean up

To avoid incurring charges to your Google Cloud account for the resources used on this page, follow these steps.

  1. Delete the application’s Service by running kubectl delete:
kubectl delete service hello-server

This command deletes the Compute Engine load balancer that you created when you exposed the Deployment.

  1. Delete your cluster by running gcloud container clusters delete:
gcloud container clusters delete hello-cluster --location us-central1

img09

img10