📖 Scenario: You are deploying a simple web application on Google Cloud Platform (GCP). The app needs to use environment variables to store configuration values and secrets to keep sensitive data safe.Using environment variables and secrets helps keep your app secure and flexible, just like keeping your house keys safe and only sharing them with trusted people.
🎯 Goal: Set up environment variables and secrets for a GCP Cloud Run service. You will create environment variables for non-sensitive data and use Google Secret Manager to securely provide sensitive data to the service.
📋 What You'll Learn
Create a Cloud Run service configuration dictionary named cloud_run_service with a container named webapp.
Add an environment variable APP_MODE with value production to the container.
Create a secret environment variable DB_PASSWORD referencing the secret named db_password_secret from Google Secret Manager.
Add the secret environment variable to the container's environment variables.
💡 Why This Matters
🌍 Real World
Using environment variables and secrets is a common practice to keep configuration and sensitive data secure and separate from code in cloud deployments.
💼 Career
Cloud engineers and developers often configure environment variables and secrets to manage app settings and credentials securely in production environments.
Progress0 / 4 steps
1
Create initial Cloud Run service configuration
Create a dictionary called cloud_run_service with a key containers that holds a list with one dictionary. This dictionary should have a key name set to webapp and an empty list for env.
GCP
Hint
Think of cloud_run_service as a box holding your app's settings. Inside, you have a list of containers. Each container has a name and a list of environment variables.
2
Add a non-secret environment variable
Add an environment variable dictionary with name set to APP_MODE and value set to production to the env list of the container named webapp inside cloud_run_service.
GCP
Hint
Environment variables are key-value pairs. Add one with key APP_MODE and value production inside the container's env list.
3
Create a secret environment variable reference
Create a dictionary called secret_env_var with name set to DB_PASSWORD and valueFrom set to a dictionary with key secretKeyRef. This secretKeyRef dictionary should have name set to db_password_secret and key set to latest.
GCP
Hint
Secrets are referenced differently. Use valueFrom with secretKeyRef to point to the secret's name and key.
4
Add the secret environment variable to the container
Append the secret_env_var dictionary to the env list of the container named webapp inside cloud_run_service.
GCP
Hint
Use the append() method to add the secret environment variable to the container's env list.
Practice
(1/5)
1. What is the main purpose of environment variables in a Google Cloud application?
easy
A. To permanently save user data in the cloud
B. To create virtual machines automatically
C. To encrypt all data sent over the network
D. To store configuration values that the app can use at runtime
Solution
Step 1: Understand environment variables
Environment variables hold configuration values like API URLs or feature flags that apps read when running.
Step 2: Eliminate distractor options
Permanent data storage, network encryption, and VM creation are unrelated to environment variables.
Final Answer:
To store configuration values that the app can use at runtime -> Option D
Quick Check:
Environment variables = config values [OK]
Hint: Environment variables hold settings your app reads [OK]
Common Mistakes:
Confusing environment variables with data storage
Thinking environment variables encrypt data
Mixing environment variables with cloud resource creation
2. Which of the following is the correct way to set an environment variable named API_KEY with value 12345 in a Google Cloud Run service YAML?
easy
A. env:
- name: API_KEY
value: '12345'
B. environment_variables:
API_KEY: 12345
C. variables:
API_KEY = '12345'
D. set_env:
API_KEY: '12345'
Solution
Step 1: Recall Cloud Run YAML env syntax
Cloud Run uses the env list with name and value keys to set environment variables.
Step 2: Check options for correct YAML format
env:
- name: API_KEY
value: '12345' matches the correct syntax. Other options use incorrect keys or formats not supported by Cloud Run.
Final Answer:
env:
- name: API_KEY
value: '12345' -> Option A
Quick Check:
Cloud Run env uses name and value keys [OK]
Hint: Look for 'env' with name and value keys in YAML [OK]
Common Mistakes:
Using incorrect keys like environment_variables or variables
Assigning values with '=' instead of colon
Not using a list for env variables
3. Given this Python code snippet running in a Google Cloud Function:
import os
api_key = os.getenv('API_KEY')
print(f"Key: {api_key}")
If the environment variable API_KEY is not set, what will be printed?
medium
A. Key: API_KEY
B. Key:
C. Key: None
D. Error: Environment variable not found
Solution
Step 1: Understand os.getenv behavior
When the environment variable is missing, os.getenv returns None by default.
Step 2: Analyze the print output
The f-string converts None to the string 'None', so the output is 'Key: None'.
Final Answer:
Key: None -> Option C
Quick Check:
Missing env var returns None [OK]
Hint: os.getenv returns None if variable missing [OK]
Common Mistakes:
Assuming empty string is returned
Expecting an error to be raised
Thinking variable name is printed
4. You deployed a Cloud Run service that uses a secret from Secret Manager, but the service fails to access the secret. Which is the most likely cause?
medium
A. The Cloud Run service account lacks permission to access the secret
B. The secret value is empty
C. The environment variable name is misspelled in the code
D. The secret was created in a different Google Cloud project
Solution
Step 1: Check permissions for Secret Manager access
Cloud Run uses a service account that must have Secret Manager access roles to read secrets.
Step 2: Evaluate other options
While empty secret values, misspelled variable names, or secrets in different projects can cause issues, the most common cause is missing permissions blocking secret access.
Final Answer:
The Cloud Run service account lacks permission to access the secret -> Option A
Quick Check:
Missing permissions block secret access [OK]
Hint: Check service account permissions first [OK]
Common Mistakes:
Ignoring IAM roles for service accounts
Assuming secret value is always the problem
Not verifying project alignment for secrets
5. You want to securely provide a database password to a Google Cloud Run service without hardcoding it. Which approach follows best practices?
hard
A. Hardcode the password in the Cloud Run service YAML file
B. Store the password in Secret Manager and mount it as an environment variable in Cloud Run
C. Save the password in a public Google Cloud Storage bucket and read it at runtime
D. Send the password as a query parameter in API requests
Solution
Step 1: Identify secure secret storage
Google Secret Manager is designed to store sensitive info like passwords securely.
Step 2: Use environment variables for app access
Mounting secrets as environment variables in Cloud Run keeps secrets out of code and config files.
Step 3: Evaluate other options
Hardcoding, public storage, or sending passwords in URLs expose secrets and are insecure.
Final Answer:
Store the password in Secret Manager and mount it as an environment variable in Cloud Run -> Option B
Quick Check:
Secret Manager + env vars = secure best practice [OK]
Hint: Use Secret Manager and env vars, never hardcode secrets [OK]
Common Mistakes:
Hardcoding secrets in config files
Using public storage for sensitive data
Exposing secrets in URLs or logs
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.