Stay organized with collectionsSave and categorize content based on your preferences.
Learn how to create a containerized web app using the Cloud Shell Editor, test
it locally, and then deploy it to a Google Kubernetes Engine (GKE) cluster.
To follow step-by-step guidance for this task directly in the
Cloud Shell Editor, clickGuide me:
If prompted to authorize Cloud Code to use your credentials to
make a Google Cloud API call, clickAuthorize.
Launch theCloud Codemenu from the status bar.
SelectNew Application.
SelectKubernetes applicationas the type of sample app.
From the list of sample Kubernetes apps, selectGo:Hello World.
Select a folder for your app location and then clickCreate New
Application.
Cloud Shell Editor loads your app in a new workspace. After it reloads, your
app is accessible with theexplorer
view.
Test your app in a local cluster
Now that you've created your app, you can run it in a local Kubernetes cluster
in Cloud Shell:
To open a Cloud Shell terminal, clickTerminal>New Terminal.
To start your local minikube cluster, from theterminalcommand prompt, run the following command:
minikubestart
It might take a minute to set up the minikube cluster.
If prompted to authorize Cloud Shell to make Cloud API calls,
clickAuthorize.
After your cluster is set up, a message similar to the following appears:
Done! kubectl is now configured touse "minikube" cluster...
After the local cluster is configured, build and run this app:
Launch theCloud
Codemenu from the status bar.
SelectRun on
Kubernetes.
If prompted, confirm that you want to use the current minikube context.
This process takes a few minutes and you can view the deployment status in
theDevelopment
sessionsview.
Clicking different nodes in the Development sessions view displays log
excerpts pertaining to the selected deployment phase.
After your app finishes building and deploying, find the port forward node
for your service: In the Development sessions view, expandPort Forward URLs>service>go-hello-world-external.
To launch your app, hold the pointer overgo-hello-world-externaland then clickopen_in_newOpen URL.
Edit your app
To understand the Hello World app's components, see the diagram in the app'sreadme.mdfile. At a high level, the app consists of:
A basicgo-hello-worldweb app,main.go,
that returns a templated "It's running!" response to all received requests.
A load balancergo-hello-world-externalservice,hello.service.yaml,
that exposes the app by describing aKubernetes Service.
To modify the app:
Modify yourmain.gofile to print "It's redeployed!". The file saves automatically.
Give your app a minute to finish building and deploying, and monitor your
app's progress as it's rebuilt using theDevelopment
sessionsview.
After your app finishes building and deploying, find the port forward node
for your service: Development sessions > Port Forward URLs > service >go-hello-world-external.
To launch your app, hold the pointer overgo-hello-world-externaland clickopen_in_newOpen URL.
View app logs
To analyze your app while it's running, use the Log Viewer to monitor its logs:
Launch the Log Viewer by opening the command palette (accessible withCtrl/Cmd+Shift+PorView>Command Palette) and then runningCloud Code: View Logs.
This view allows you to filter and navigate the logs for your app.
Specify theDeploymentfilters to view the logs for your app,go-hello-world.
Switch to the tab with your app that shows "It's redeployed!" Reload the
page in the browser and then switch back to the Cloud Shell tab.
To view the newly generated logs in the Log Viewer, clickrefreshRefresh.
Create a Google Kubernetes Engine cluster
To create a new Google Kubernetes Engine cluster to deploy your app to:
ClickCloud
Codeand then expand theKubernetessection.
ClickaddAdd a Cluster to the KubeConfigand then clickGoogle Kubernetes
Enginein theQuick pickmenu.
When prompted to enablecontainer.googleapis.com, clickYes.
Click+ Create a New GKE Cluster.
ChooseStandardas the cluster type.
ClickOpento permit Cloud Shell to open the
Google Cloud console.
In Google Cloud console, use the project you created, set the zone tous-central1-a, and set the cluster name tomy-first-cluster.
ClickCreate. Cluster creation takes a few minutes.
After the cluster is created, in theQuick pickmenu, clickRefresh.
After the name of your new cluster appears in the list, click the cluster
name. Your new cluster is added to the configuration and configured to be the
active context.
Deploy your app to a GKE cluster
To deploy your app to the new cluster:
From theCloud
Codemenu, accessible using the status bar,
selectRun on
Kubernetes.
Confirm your newly created cluster as the context for your app.
Confirm the default option for your image registry.
Give your app a minute to finish building and deploying, and monitor your
app's progress as it's rebuilt using theDevelopment
sessionsview.
After your app finishes building and deploying, find the port forward node
for your service: In the Development sessions view, expandPort Forward URLs>service>go-hello-world-external.
To launch your app, hold the pointer overgo-hello-world-externaland clickopen_in_newOpen URL.
Cleaning up
To delete just the cluster you created for this quickstart:
Hold the pointer over your cluster name and then clickOpen in Google Cloud console.
ClickDeleteand then clickDelete.
To delete your project (and associated resources, including any clusters):
Go to the Projects page in the Google Cloud console:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[],[],null,["# Create and deploy a containerized web app\n\nLearn how to create a containerized web app using the Cloud Shell Editor, test\nit locally, and then deploy it to a Google Kubernetes Engine (GKE) cluster.\n\n*** ** * ** ***\n\nTo follow step-by-step guidance for this task directly in the\nCloud Shell Editor, click **Guide me**:\n\n[Guide me](https://console.cloud.google.com/freetrial?redirectPath=/?walkthrough_id=shell__gke_cloud_code)\n\n*** ** * ** ***\n\nBefore you begin\n----------------\n\n1. In the Google Cloud console, go to the project selector page.\n\n [Go to project selector](https://console.cloud.google.com/projectselector2/home/dashboard)\n2. Select or create a Google Cloud project.\n\n | **Note**: If you don't plan to keep the resources that you create in this procedure, create a project instead of selecting an existing project. After you finish these steps, you can delete the project, removing all resources associated with the project.\n\nCreate your web app\n-------------------\n\nUse the Cloud Shell Editor as your environment for creating your app. The\neditor comes preloaded with the tools needed for Cloud development.\n\nTo create your app:\n\n\n1. Launch the [Cloud Shell Editor](https://ide.cloud.google.com).\n\n2. If prompted to authorize Cloud Code to use your credentials to\n make a Google Cloud API call, click **Authorize**.\n\n3. Launch the **Cloud Code** menu from the status bar.\n\n4. Select **New Application**.\n\n5. Select **Kubernetes application** as the type of sample app.\n\n6. From the list of sample Kubernetes apps, select **Go:Hello World**.\n\n7. Select a folder for your app location and then click **Create New\n Application**.\n\nCloud Shell Editor loads your app in a new workspace. After it reloads, your\napp is accessible with the\nexplorer view.\n\nTest your app in a local cluster\n--------------------------------\n\nNow that you've created your app, you can run it in a local Kubernetes cluster\nin Cloud Shell:\n\n1. To open a Cloud Shell terminal, click **Terminal** \\\u003e **New Terminal**.\n2. To start your local minikube cluster, from the\n terminal\n command prompt, run the following command:\n\n minikube start\n\n It might take a minute to set up the minikube cluster.\n3. If prompted to authorize Cloud Shell to make Cloud API calls,\n click **Authorize**.\n\n After your cluster is set up, a message similar to the following appears: \n\n Done! kubectl is now configured to\n use \"minikube\" cluster...\n\nAfter the local cluster is configured, build and run this app:\n\n1. Launch the **Cloud\n Code** menu from the status bar.\n2. Select **Run on\n Kubernetes**.\n3. If prompted, confirm that you want to use the current minikube context.\n\n This process takes a few minutes and you can view the deployment status in\n the\n **Development\n sessions** view.\n\n Clicking different nodes in the Development sessions view displays log\n excerpts pertaining to the selected deployment phase.\n4. After your app finishes building and deploying, find the port forward node\n for your service: In the Development sessions view, expand\n **Port Forward URLs** \\\u003e **service** \\\u003e\n **go-hello-world-external**.\n\n5. To launch your app, hold the pointer over\n **go-hello-world-external**\n and then click open_in_new **Open URL**.\n\nEdit your app\n-------------\n\nTo understand the Hello World app's components, see the diagram in the app's\n`readme.md`\nfile. At a high level, the app consists of:\n\n- A basic `go-hello-world` web app, `main.go`, that returns a templated \"It's running!\" response to all received requests.\n- A load balancer `go-hello-world-external` service, `hello.service.yaml`, that exposes the app by describing a [Kubernetes Service](https://kubernetes.io/docs/concepts/services-networking/service/).\n\nTo modify the app:\n\n1. Modify your `main.go` file to print \"It's redeployed!\". The file saves automatically.\n2. Give your app a minute to finish building and deploying, and monitor your\n app's progress as it's rebuilt using the\n **Development\n sessions** view.\n\n3. After your app finishes building and deploying, find the port forward node\n for your service: Development sessions \\\u003e Port Forward URLs \\\u003e service \\\u003e\n **go-hello-world-external**.\n\n4. To launch your app, hold the pointer over\n **go-hello-world-external**\n and click **open_in_new** Open URL.\n\nView app logs\n-------------\n\nTo analyze your app while it's running, use the Log Viewer to monitor its logs:\n\n1. Launch the Log Viewer by opening the command palette (accessible with\n `Ctrl`/`Cmd`+`Shift`+`P` or **View** \\\u003e **Command Palette** ) and then running\n **Cloud Code: View Logs**.\n\n This view allows you to filter and navigate the logs for your app.\n2. Specify the\n **Deployment**\n filters to view the logs for your app, `go-hello-world`.\n\n3. Switch to the tab with your app that shows \"It's redeployed!\" Reload the\n page in the browser and then switch back to the Cloud Shell tab.\n\n4. To view the newly generated logs in the Log Viewer, click\n refresh\n **Refresh**.\n\nCreate a Google Kubernetes Engine cluster\n-----------------------------------------\n\nTo create a new Google Kubernetes Engine cluster to deploy your app to:\n\n\n1. Click **Cloud\n Code** and then expand the **Kubernetes** section.\n\n2. Click add\n **Add a Cluster to the KubeConfig** and then click **Google Kubernetes\n Engine** in the **Quick pick** menu.\n\n3. When prompted to enable `container.googleapis.com`, click **Yes**.\n\n4. Click **+ Create a New GKE Cluster**.\n\n5. Choose **Standard** as the cluster type.\n\n6. Click **Open** to permit Cloud Shell to open the\n Google Cloud console.\n\n7. In Google Cloud console, use the project you created, set the zone to\n `us-central1-a`, and set the cluster name to `my-first-cluster`.\n\n8. Click **Create**. Cluster creation takes a few minutes.\n\n9. After the cluster is created, in the **Quick pick** menu, click\n\n **Refresh**.\n\n10. After the name of your new cluster appears in the list, click the cluster\n name. Your new cluster is added to the configuration and configured to be the\n active context.\n\nDeploy your app to a GKE cluster\n--------------------------------\n\nTo deploy your app to the new cluster:\n\n1. From the\n Cloud Code menu, accessible using the status bar,\n select\n **Run on\n Kubernetes**.\n\n2. Confirm your newly created cluster as the context for your app.\n\n3. Confirm the default option for your image registry.\n\n4. Give your app a minute to finish building and deploying, and monitor your\n app's progress as it's rebuilt using the\n **Development\n sessions** view.\n\n5. After your app finishes building and deploying, find the port forward node\n for your service: In the Development sessions view, expand\n **Port Forward URLs** \\\u003e **service** \\\u003e\n **go-hello-world-external**.\n\n6. To launch your app, hold the pointer over\n **go-hello-world-external**\n and click open_in_new **Open URL**.\n\nCleaning up\n-----------\n\nTo delete just the cluster you created for this quickstart:\n\n1. Hold the pointer over your cluster name and then click **Open in Google Cloud console**.\n2. Click **Delete** and then click **Delete**.\n\nTo delete your project (and associated resources, including any clusters):\n\n1. Go to the Projects page in the Google Cloud console:\n\n [Go to the Projects page](https://console.cloud.google.com/project)\n2. Select the project that you created for this quickstart and then click\n **Delete**.\n\n3. Type the project ID to confirm and then click **Shut down**.\n\n This shuts down the project and schedules it for deletion.\n\nWhat's next\n-----------\n\n- Discover the features of the\n [Cloud Shell Editor interface](/shell/docs/editor-overview).\n\n- Read about\n [debugging with the Cloud Shell Editor](/shell/docs/debugging)\n and Cloud Shell Editor's additional support for Kubernetes\n applications.\n\n- [Deploy your applications to ARM64, AMD64, or mixed-architecture GKE clusters](/code/docs/shell/deploy-to-arm-amd-mixed-arch)."]]