title | description | sidebar_label | id |
---|---|---|---|
Okteto Variables |
Okteto Variables allows you to save application configuration in Okteto and automatically inject them during deployment time |
Variables |
okteto-variables |
import Image from "@theme/Image";
Application configuration should be passed at deployment time, not hardcoded in your code.
Okteto variables help you save application configuration in Okteto and automatically inject it during deployment time.
There are a few different ways to leverage variables. In short:
- You can define variables manually in the manifest or in the Okteto UI
- There are some default variables built in to the Okteto platform
- All variables used in the Okteto manifest are automatically expanded
- All variables are injected as runtime environment variables in the execution of your
deploy
anddestroy
scripts
We will cover each of these behaviors in more detail below.
Okteto supports manual definition of variables, offering significant flexibility in configuration. These user-defined variables are separate from Okteto's default, built-in variables. We recommend creating variables in the following order of preference:
- Local variables
- Deploy time variables
- Catalog variables
- User variables (in settings)
- Admin variables
Note: Variables will be overridden by those above them in this list. For example, local variables will override admin variables.
You can create and delete your Okteto Variables from the Variables
section in the Settings
view of the Okteto dashboard:
To create a new variable, click on the Add Variable button, and provide a name and a value. The value will be masked once the variable is created.
To delete an existing variable, click on the Delete button on the right. You'll have to confirm your choice before the variable is deleted. Deleted variables can't be recovered, so be careful when doing this.
You can create dynamic endpoints for external resources within your Okteto environment using $OKTETO_ENV
. You can define $variables
, assign them to OKTETO_ENV
, and make those variables available in other sections (e.g. deploy
, destroy
) of the Okteto manifest or to generate dynamic endpoints for external resources.
The example below demonstrates adding variables to $OKTETO_ENV
in the deploy
section and then accessing those variables in a sample destroy
section:
deploy:
hashicorp/terraform:1.4
commands:
- name: Create AWS infrastructure
command: |
set -e
resourceName="${OKTETO_NAMESPACE}-oktacoshop"
region=$AWS_REGION
terraform apply -input=false -var "bucket_name=$resourceName" -var "queue_name=$resourceName" -var "region=$region" -auto-approve
s3Dashboard="https://s3.console.aws.amazon.com/s3/buckets/${resourceName}"
# ... shortened for brevity
{
echo "$resourceName"
echo "$region"
echo "OKTETO_EXTERNAL_S3_ENDPOINTS_BUCKET_URL=$s3Dashboard"
echo "S3_BUCKET_NAME=$resourceName"
} >> "$OKTETO_ENV"
destroy:
image: hashicorp/terraform:1.4
commands:
- name: Delete the AWS infrastructure
command: |
set -e
# omitted for brevity
terraform apply -input=false -var "bucket_name=${S3_BUCKET_NAME}" -var "queue_name=$resourceName" -var "region=$region" -auto-approve --destroy
These are automatically expanded and can be referenced in your Okteto manifest’s deploy
/destroy
sections either directly (within the manifest) or in external files (e.g. a Makefile
):
OKTETO_DOMAIN
: The domain where Okteto exposes your application endpoints.OKTETO_NAMESPACE
: The namespace where your application is installed.OKTETO_USERNAME
: Your username in Okteto.OKTETO_REGISTRY_URL
: The URL of the Okteto Registry.OKTETO_GIT_BRANCH
: The name of the Git branch being deployed.OKTETO_GIT_COMMIT
: The SHA1 hash of the last commit of the branch.
Reference images defined in the build
section of the Okteto manifest using the following environment variables:
OKTETO_BUILD_(IMAGE)_IMAGE
: Full image reference.OKTETO_BUILD_(IMAGE)_REGISTRY
: Registry URL where the image was pushed.OKTETO_BUILD_(IMAGE)_REPOSITORY
: Name of the image that was pushed.OKTETO_BUILD_(IMAGE)_SHA
: Latest tag and SHA of the image.
For instance, with a build section like:
build:
hello-world:
context: .
Okteto will generate environment variables such as:
OKTETO_BUILD_HELLO_WORLD_IMAGE
: registry.okteto.example.com/cindy/hello-world@sha256:xxxOKTETO_BUILD_HELLO_WORLD_REGISTRY
: registry.okteto.example.comOKTETO_BUILD_HELLO_WORLD_REPOSITORY
: cindy/hello-worldOKTETO_BUILD_HELLO_WORLD_SHA
: f56119a37b@sha256:xxx
Note: If an
image
name includes '-', it will be replaced by '_' in the corresponding environment variables.
Reference variables defined by your dependencies using the following pattern:
OKTETO_DEPENDENCY_<dependency>_VARIABLE_<variable>
: The value of a variable of a dependency.
For example, if you have a dependency in your Okteto Manifest:
dependencies:
database:
repository: https://github.com/okteto/my-database
variables:
USERNAME: okteto
wait: true
And the repository has this Okteto Manifest:
deploy:
- echo "PASSWORD=1234" >> $OKTETO_ENV
Reference the variables in your Okteto Manifest deploy section like this:
dependencies:
database:
repository: https://github.com/okteto/my-database
variables:
USERNAME: okteto
wait: true
deploy:
- echo ${OKTETO_DEPENDENCY_DATABASE_VARIABLE_USERNAME}
- echo ${OKTETO_DEPENDENCY_DATABASE_VARIABLE_PASSWORD}
Note: USERNAME has a static value, and PASSWORD is dynamically generated.
Okteto provides a list of variables that serve as feature flags for some of the features we release in our product. Below is a list of those variables that you can use to leverage these newer and experimental features:
OKTETO_SMART_BUILDS_ENABLED
: enables the "smart builds" feature that uses a hash of the build context to determine if an image needs to be rebuilt or can be pulled from the registry. This can accelerate build times.OKTETO_COMPOSE_VOLUME_AFFINITY_ENABLED
:OKTETO_KUBERNETES_TIMEOUT
:OKTETO_HOME
:OKTETO_FORCE_REMOTE
:OKTETO_FOLDER
:OKTETO_REMOTE_CLI_IMAGE
:
Okteto Variables are automatically injected in your Okteto CLI commands as environment variables.
Follow this tutorial for a sample using Okteto Variables when deploying your application.