<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sara Ford</title>
    <description>The latest articles on DEV Community by Sara Ford (@saraford_goog).</description>
    <link>https://dev.to/saraford_goog</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2069355%2F2b2a077c-307e-4953-8711-64bca5e945c9.jpg</url>
      <title>DEV Community: Sara Ford</title>
      <link>https://dev.to/saraford_goog</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saraford_goog"/>
    <language>en</language>
    <item>
      <title>The Ultimate Cloud Run Guide 2026</title>
      <dc:creator>Sara Ford</dc:creator>
      <pubDate>Mon, 01 Jun 2026 14:31:53 +0000</pubDate>
      <link>https://dev.to/googleai/the-ultimate-cloud-run-guide-2026-54f8</link>
      <guid>https://dev.to/googleai/the-ultimate-cloud-run-guide-2026-54f8</guid>
      <description>&lt;p&gt;At Cloud Next '26, my teammate Wietse and I gave a talk called the Ultimate Guide to Cloud Run. We wanted to provide a comprehensive walkthrough of Cloud Run to experienced developers who know how to ship software, but might be new to Cloud Run.&lt;/p&gt;

&lt;p&gt;This post recaps the Cloud Run fundamentals we went over in our talk. Each segment below has a link to the timestamp in the talk along with examples for you to try at home.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Getting started - deploy a container
&lt;/li&gt;
&lt;li&gt; Autoscaling / audience participation demo
&lt;/li&gt;
&lt;li&gt; How gcloud Works Under the Hood
&lt;/li&gt;
&lt;li&gt; Overview of Cloud Run resources
&lt;/li&gt;
&lt;li&gt; Reliable Rollouts and Preview Links
&lt;/li&gt;
&lt;li&gt; Structured Logging
&lt;/li&gt;
&lt;li&gt; Troubleshooting: "container failed to start on port 8080"
&lt;/li&gt;
&lt;li&gt; Google Cloud Developer Knowledge MCP server
&lt;/li&gt;
&lt;li&gt; How to avoid hard-coded API Keys
&lt;/li&gt;
&lt;li&gt;Ephemeral Disks&lt;/li&gt;
&lt;li&gt;Volume mounts&lt;/li&gt;
&lt;li&gt;VPC Networking&lt;/li&gt;
&lt;li&gt;Two Pricing Models&lt;/li&gt;
&lt;li&gt;Scale-to-zero GPUs&lt;/li&gt;
&lt;li&gt;Deploying an ADK agent&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Prefer to watch the full talk instead? You can &lt;a href="https://youtu.be/ZEuHBOhy_uY" rel="noopener noreferrer"&gt;watch it here&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Getting started - deploy a container
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Where to watch:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/ZEuHBOhy_uY?t=64" rel="noopener noreferrer"&gt;Demo 1 (Nginx) at 1:04&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Code examples:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.cloud.google.com/run/docs/quickstarts/deploy-container?utm_campaign=CDR_0x2e662603_default_b516802488&amp;amp;utm_medium=external&amp;amp;utm_source=blog#deploy-the-sample-container" rel="noopener noreferrer"&gt;deploy the hello sample container&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codelabs.developers.google.com/next26/ultimate-cloud-run-guide?utm_campaign=CDR_0x2e662603_default_b516802488&amp;amp;utm_medium=external&amp;amp;utm_source=blog#1" rel="noopener noreferrer"&gt;deploy nginx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Recap:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://docs.cloud.google.com/run/docs/overview/what-is-cloud-run?utm_campaign=CDR_0x2e662603_default_b516802488&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Cloud Run&lt;/a&gt; is Google Cloud's serverless engine. With Cloud Run you can run any container, on demand, without any infrastructure management. No VMs or clusters to manage.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Hello Cloud Run!
&lt;/h4&gt;

&lt;p&gt;Below is the sample hello container running on Cloud Run. &lt;/p&gt;


&lt;div class="ltag__cloud-run"&gt;
  &lt;iframe height="600px" src="https://hello-540670744329.europe-west1.run.app/"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;


&lt;p&gt;Don't have a container? It's all good! You can deploy from your source code. See section 3 - How gcloud Works Under the Hood&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Autoscaling / audience participation demo
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Where to watch:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://youtu.be/ZEuHBOhy_uY?t=370" rel="noopener noreferrer"&gt;Demo 2 watch at 6:10&lt;/a&gt; Each audience member who scans the QR code gets their own container&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Discussion:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/ZEuHBOhy_uY?t=1693" rel="noopener noreferrer"&gt;Discussion from talk at 28:13&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Docs:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.cloud.google.com/run/docs/about-instance-autoscaling?utm_campaign=CDR_0x2e662603_default_b516802488&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Instance Autoscaling&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Recap:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Minimum Instances:&lt;/strong&gt; You can configure minimum instances to keep containers pre-warmed, eliminating "cold start" latency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maximum Instances:&lt;/strong&gt; Set a hard limit on scaling to act as a budget safeguard and protect backend databases from being overwhelmed.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. How gcloud Works Under the Hood
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Where to watch
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/ZEuHBOhy_uY?t=593" rel="noopener noreferrer"&gt;Demo 3 at 9:54&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Code examples:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://cloud.google.com/run/docs/quickstarts/build-and-deploy/deploy-go-service?utm_campaign=CDR_0x2e662603_default_b516802488&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Quickstart: Build and deploy a Go web app to Cloud Run&lt;/a&gt; (or one of the other buildpack-supported languages)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codelabs.developers.google.com/next26/ultimate-cloud-run-guide?utm_campaign=CDR_0x2e662603_default_b516802488&amp;amp;utm_medium=external&amp;amp;utm_source=blog#2" rel="noopener noreferrer"&gt;deploy from source example from talk&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Recap:&lt;/strong&gt; When you type the simple command &lt;code&gt;gcloud run deploy&lt;/code&gt; to deploy from source, gcloud performs the following steps for you:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Upload:&lt;/strong&gt; Your local directory is safely uploaded to a secure Google Cloud Storage (GCS) bucket.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build:&lt;/strong&gt; Cloud Build takes over. If you have a Dockerfile, it runs a docker build. If not, it uses open-source &lt;strong&gt;Buildpacks&lt;/strong&gt; to automatically detect your language and compile a container image.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Store:&lt;/strong&gt; The completed container image is pushed to &lt;strong&gt;Artifact Registry&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create:&lt;/strong&gt; Cloud Run spins up a new &lt;strong&gt;Revision&lt;/strong&gt; (a read-only, immutable copy of your container and its settings).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Migrate:&lt;/strong&gt; Once the new revision passes its &lt;strong&gt;startup probe&lt;/strong&gt; (confirming it is healthy), Cloud Run seamlessly migrates 100% of web traffic over to it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But what about other resources besides services...&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Overview of Cloud Run resources
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Where to watch
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/ZEuHBOhy_uY?t=217" rel="noopener noreferrer"&gt;Discussion in talk at 3:38&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Code examples:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.cloud.google.com/run/docs/create-jobs?utm_campaign=CDR_0x2e662603_default_b511157057&amp;amp;utm_medium=external&amp;amp;utm_source=blog#job" rel="noopener noreferrer"&gt;deploy a job&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.cloud.google.com/run/docs/deploy-worker-pools?utm_campaign=CDR_0x2e662603_default_b511157057&amp;amp;utm_medium=external&amp;amp;utm_source=blog#worker-pool" rel="noopener noreferrer"&gt;deploy a worker pool&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.cloud.google.com/run/docs/quickstarts/functions/deploy-functions-console?utm_campaign=CDR_0x2e662603_default_b511157057&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;deploy a function&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Recap:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Services:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; Best for web applications, APIs, and microservices.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Features:&lt;/em&gt; Automatically scales instances up or down based on incoming traffic. Includes out-of-the-box HTTPS, traffic splitting, and support for WebSockets, gRPC, and HTTP/2.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Jobs:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; Best for tasks that run to completion and do not require an active web endpoint.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Features:&lt;/em&gt; Runs for up to 7 days. Excellent for data processing, database migrations, or night-run scripts. You can parallelize a large job into multiple concurrent tasks.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codelabs.developers.google.com/?text=cloud+run+jobs&amp;amp;utm_campaign=CDR_0x2e662603_default_b516802488&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;more Jobs codelab examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Worker Pools:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; Best for continuous background tasks.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Features:&lt;/em&gt; Always-on instances that actively pull for work (e.g., listening to a message queue). Scaling is handled manually.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codelabs.developers.google.com/?text=cloud+run+worker+pools&amp;amp;utm_campaign=CDR_0x2e662603_default_b516802488&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;more Worker Pools codelab examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Functions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; Best for single-purpose pieces of code (e.g., responding to a file upload event).&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Features:&lt;/em&gt; Supports popular runtimes like Python, Node.js, Go, and Java. No Dockerfile is required; Google automatically builds the container for you from source.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codelabs.developers.google.com/?text=cloud+run+functions&amp;amp;utm_campaign=CDR_0x2e662603_default_b516802488&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;more Functions codelab examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Reliable Rollouts and Preview Links
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Where to watch
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/ZEuHBOhy_uY?t=610" rel="noopener noreferrer"&gt;Demo 3 con't from talk: 10:10&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Demo 4 from talk &lt;a href="https://youtu.be/ZEuHBOhy_uY?t=767" rel="noopener noreferrer"&gt;part 1 at 12:48&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Demo 4 from talk &lt;a href="https://youtu.be/ZEuHBOhy_uY?t=985" rel="noopener noreferrer"&gt;part 2 at 16:25&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Code example:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://codelabs.developers.google.com/next26/ultimate-cloud-run-guide?utm_campaign=CDR_0x2e662603_default_b516802488&amp;amp;utm_medium=external&amp;amp;utm_source=blog#3" rel="noopener noreferrer"&gt;gradual rollouts and preview links codelab&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Recap:&lt;/strong&gt; Cloud Run versioning relies on &lt;strong&gt;immutable&lt;/strong&gt; revisions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Downtime Updates:&lt;/strong&gt; The new version scales up fully &lt;em&gt;before&lt;/em&gt; traffic begins migrating over.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rollbacks:&lt;/strong&gt; If a bug gets into production, you can rollback traffic to any healthy, previous revision.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Preview Links (Traffic Tags):&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Instead of auto-deploying to the public, you can pin production traffic to your stable revision&lt;/li&gt;
&lt;li&gt;Apply a "traffic tag" to your latest test revision&lt;/li&gt;
&lt;li&gt;This generates a private preview URL (e.g., &lt;code&gt;https://latest---[your-service].run.app&lt;/code&gt;) where you can test changes.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. Structured Logging
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Where to watch
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/ZEuHBOhy_uY?t=897" rel="noopener noreferrer"&gt;Discussion in talk at 14:58&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Recap:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No logging libraries required:&lt;/strong&gt; To log, simply write standard text directly to &lt;code&gt;stdout&lt;/code&gt; or &lt;code&gt;stderr&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Structured Logging:&lt;/strong&gt; Write your logs in JSON format. This allows you to easily run queries in Cloud Logging for custom fields (such as &lt;code&gt;jsonPayload.user_id = "12345"&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  7. Troubleshooting container failed to start on port 8080
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Where to watch
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/ZEuHBOhy_uY?t=927" rel="noopener noreferrer"&gt;Discussion in talk: 15:28&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Code example:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Deploy hello container but set port to 8081 🙂&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Recap:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;How to troubleshoot the &lt;em&gt;"The container failed to start on port 8080"&lt;/em&gt; error:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;This means that Cloud Run couldn't start the container. This could be for many reasons.&lt;/li&gt;
&lt;li&gt;First scroll up in the logs to search for startup code crashes.&lt;/li&gt;
&lt;li&gt;Verify your code is actually listening on the port designated by the &lt;code&gt;PORT&lt;/code&gt; environment variable.&lt;/li&gt;
&lt;li&gt;If your app loads large machine learning models, move database connections or loading actions out of the immediate container startup scope to prevent timeouts.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  8. Google Cloud Developer Knowledge MCP server (in public preview)
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Where to watch
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/ZEuHBOhy_uY?t=1197" rel="noopener noreferrer"&gt;Discussion at 19:58&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Example:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://codelabs.developers.google.com/next26/ultimate-cloud-run-guide?utm_campaign=CDR_0x2e662603_default_b516802488&amp;amp;utm_medium=external&amp;amp;utm_source=blog#4" rel="noopener noreferrer"&gt;Codelab for Developer Knowledge MCP server&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Recap:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Great for keeping your agent up to date past its data training date.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Looking for other MCP use cases?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;use the &lt;a href="https://docs.cloud.google.com/run/docs/use-cloud-run-mcp?utm_campaign=CDR_0x2e662603_default_b511157057&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Cloud Run MCP server&lt;/a&gt; to deploy your apps&lt;/li&gt;
&lt;li&gt;host your &lt;a href="https://docs.cloud.google.com/run/docs/host-mcp-servers?utm_campaign=CDR_0x2e662603_default_b511157057&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;own MCP server&lt;/a&gt; on Cloud Run

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://codelabs.developers.google.com/codelabs/cloud-run/how-to-deploy-a-secure-mcp-server-on-cloud-run?utm_campaign=CDR_0x2e662603_default_b511157057&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;How to deploy a secure MCP server on Cloud Run | Google Codelabs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codelabs.developers.google.com/codelabs/cloud-run/use-mcp-server-on-cloud-run-with-an-adk-agent?utm_campaign=CDR_0x2e662603_default_b511157057&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Build and deploy an ADK agent that uses an MCP server on Cloud Run | Google Codelabs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  9. How to avoid hard-coded API Keys
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Where to watch
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/ZEuHBOhy_uY?t=1389" rel="noopener noreferrer"&gt;Discussion in talk at 23:10&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/ZEuHBOhy_uY?t=1502" rel="noopener noreferrer"&gt;Demo secret manager at 25:03&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Code examples:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/how-to-develop-and-test-your-cloud-functions-locally?e=48754805&amp;amp;utm_campaign=CDR_0x2e662603_default_b511157057&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;blog post on local development and ADC&lt;/a&gt; (works the same for Cloud Run)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codelabs.developers.google.com/codelabs/cloud-run/upload-serve-images-storage-firestore-fastapi?utm_campaign=CDR_0x2e662603_default_b511157057&amp;amp;utm_medium=external&amp;amp;utm_source=blog#0" rel="noopener noreferrer"&gt;How to upload and serve images using Cloud Storage, Firestore and Cloud Run | Google Codelabs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codelabs.developers.google.com/next26/ultimate-cloud-run-guide?utm_campaign=CDR_0x2e662603_default_b511157057&amp;amp;utm_medium=external&amp;amp;utm_source=blog#5" rel="noopener noreferrer"&gt;how to use secret manager&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Recap:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Application Default Credentials (ADC):&lt;/strong&gt; Google client libraries automatically search for local credentials to handle authentication to Google's APIs for you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Run Identity:&lt;/strong&gt; Assign a dedicated &lt;strong&gt;Service Account&lt;/strong&gt; to your Cloud Run service. The client libraries will automatically request credentials from the metadata server to access APIs (like Firestore or Gemini).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Localhost Development:&lt;/strong&gt; Run &lt;code&gt;gcloud auth login application-default&lt;/code&gt; on your machine. Local client libraries will securely use your personal developer identity (e.g. &lt;code&gt;gcloud auth list&lt;/code&gt;) or use &lt;code&gt;--impersonate-service-account &amp;lt;service-account&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secret manager:&lt;/strong&gt; For when you absolutely need to save keys. Store database passwords or third-party API keys securely. You can mount them into Cloud Run directly as environment variables or volume mounts (or use the secret manager client library)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  10. Ephemeral Disks
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Where to watch
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/ZEuHBOhy_uY?t=1681" rel="noopener noreferrer"&gt;Discussion in talk: 28:02&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Code example:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.cloud.google.com/run/docs/configuring/services/ephemeral-disk?utm_campaign=CDR_0x2e662603_default_b516802488&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Configure an ephemeral disk for Cloud Run services&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Recap:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ephemeral Disks:&lt;/strong&gt; Local, high-speed temporary storage. It lives and dies with the container instance and allows you to process large scratch files without consuming your system's active RAM memory.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  11. Volume mounts
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Where to watch
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/ZEuHBOhy_uY?t=1661" rel="noopener noreferrer"&gt;Discussion in talk: 27:42&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Code example:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/run/docs/configuring/services/cloud-storage-volume-mounts?utm_campaign=CDR_0x2e662603_default_b516802488&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Configure Cloud Storage volume mounts for Cloud Run services | Google Cloud Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Recap:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Storage Volume Mounts:&lt;/strong&gt; Mount a Cloud Storage bucket or an NFS network file system directly as if it were a local directory.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  12. VPC Networking
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Where to watch
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/ZEuHBOhy_uY?t=1743" rel="noopener noreferrer"&gt;Discussion &amp;amp; Demo in talk: 29:04&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Code example:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://codelabs.developers.google.com/next26/ultimate-cloud-run-guide?hl=en&amp;amp;utm_campaign=CDR_0x2e662603_default_b516802488&amp;amp;utm_medium=external&amp;amp;utm_source=blog#6" rel="noopener noreferrer"&gt;VPC networking codelab&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Recap:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Direct VPC Egress:&lt;/strong&gt; Send outbound traffic directly into your internal Google Cloud VPC network. No Serverless VPC Access connector required.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secure Private Backends:&lt;/strong&gt; You have two options:

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Option 1 (IAM Authentication):&lt;/em&gt; Require authentication and grant the &lt;code&gt;run.invoker&lt;/code&gt; role to your frontend's service account.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Option 2 (VPC Routing):&lt;/em&gt; Configure your backend to exclusively accept traffic originating from your VPC network.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  13. Two Pricing Models
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Where to watch
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/ZEuHBOhy_uY?t=1994" rel="noopener noreferrer"&gt;Discussion in talk: 33:14&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Recap:
&lt;/h4&gt;

&lt;p&gt;Cloud Run offers two pricing models so you can optimize your spending.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Request-based pricing&lt;/strong&gt; (default)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pay for container instance time (CPU and memory)&lt;/li&gt;
&lt;li&gt;No charge for idle instances (instances that are not handling requests)&lt;/li&gt;
&lt;li&gt;CPU is slowed down during idle&lt;/li&gt;
&lt;li&gt;There's a fee per request&lt;/li&gt;
&lt;li&gt;Minimum instances are charged a lot* less than the full rate when idle&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Instance-based pricing&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pay for container instance time (CPU and memory), &lt;strong&gt;also when idle&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Idle instances and minimum instances are charged at full rate&lt;/li&gt;
&lt;li&gt;Idle instances shut down after a maximum of 15 minutes&lt;/li&gt;
&lt;li&gt;No per-request fee&lt;/li&gt;
&lt;li&gt;Pay less* for instance time when compared with request-based pricing&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;* &lt;em&gt;See &lt;a href="https://cloud.google.com/run/pricing?utm_campaign=CDR_0x2e662603_default_b516802488&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Cloud Run Pricing docs page&lt;/a&gt; for more details&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Cloud Run continuously analyzes your actual traffic patterns and will automatically recommend switching to Instance-based if it will save you money.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feyjbtfem65e2tvahml63.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feyjbtfem65e2tvahml63.png" alt="Pricing comparison chart between Request-based and Instance-based" width="512" height="331"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  14. Scale-to-Zero GPUs
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Where to watch
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/ZEuHBOhy_uY?t=2117" rel="noopener noreferrer"&gt;Discussion in talk: 35:18&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Code examples:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://codelabs.developers.google.com/?text=cloud+run+gpu&amp;amp;utm_campaign=CDR_0x2e662603_default_b516802488&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;getting started GPUs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Recap:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Cloud Run fully supports scale-to-zero GPUs.&lt;/li&gt;
&lt;li&gt;Access &lt;strong&gt;NVIDIA L4&lt;/strong&gt; and the &lt;strong&gt;NVIDIA RTX PRO 6000 Blackwell&lt;/strong&gt; chips&lt;/li&gt;
&lt;li&gt;Used for fine-tuning models via Cloud Run Jobs, or hosting lightweight open-source models like Google's Gemma.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  15. Deploying an ADK agent
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Where to watch
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/ZEuHBOhy_uY?t=2132" rel="noopener noreferrer"&gt;Demo in talk: 35:32&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Code examples:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://codelabs.developers.google.com/next26/ultimate-cloud-run-guide?hl=en&amp;amp;utm_campaign=CDR_0x2e662603_default_b516802488&amp;amp;utm_medium=external&amp;amp;utm_source=blog#7" rel="noopener noreferrer"&gt;ADK agent getting started&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Docs:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/adk?utm_campaign=CDR_0x2e662603_default_b516802488&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Gemini Enterprise Agent Platform - ADK&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cloud</category>
      <category>google</category>
      <category>serverless</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
