In Kubernetes, one way to pass configurable data to containers is using environment variable. Below is a pod definition that uses two environment variables.
apiVersion: v1 kind: Pod metadata: name: api spec: containers: - image: com.shekhargulati/api name: api env: - name: DATABASE_NAME value: "mydb" - name: DATASOURCE_URL value: jdbc:mysql://mysql:3306/mydb ports: - containerPort: 8080
As you can see in the above Pod definition, we are using database name mydb
twice. Isn’t it will be awesome if we can use DATABASE_NAME
in the DATASOURCE_URL
?
Kubernetes supports this use case by providing $(VAR)
syntax as shown below.
apiVersion: v1 kind: Pod metadata: name: api spec: containers: - image: com.shekhargulati/api name: api env: - name: DATABASE_NAME value: "mydb" - name: DATASOURCE_URL value: "jdbc:mysql://mysql:3306/$(DATABASE_NAME)" ports: - containerPort: 8080