Im trying to append a system environment in to a database connection string.
I got a kubernetes cluster running with minikube, where a pod is running with mysql image and has a service with ClusterIP, and another pod running my backend java application using a service with LoadBalancer.
I want to refer to the environment variable that is being made for the service by kubernetes, and im not sure if im doing it properly. When i refer to the environment variable SERVICENAME_SERVICE_HOST in my spring application, i get the ip address. However it seems to fail to set the jdbc url in my application.yaml . Im suspecting that i am not concatinating the environment variable properly as it worked fine when i used localhost instead of environment variable when both pods used LoadBalancer and shared the same service in kubernetes.
Please excuse me if the problem is poorly explained. il provide more files/snippets if required
My application.yaml file:
spring:
jpa:
hibernate:
ddl-auto: update
show-sql: true
datasource:
url: "jdbc:mysql://${SQL_SERVICE_SERVICE_HOST}:3306/peopledb?createDatabaseIfNotExist=true"
username: root
password: "${MYSQL_ROOT_PASSWORD}"
driver-class-name: com.mysql.cj.jdbc.Driver
deployment/service for kubernetes:
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
selector:
app: backend
ports:
- protocol: TCP
port: 8080
targetPort: 8080
name: backend
type: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:
name: sql-service
spec:
selector:
app: mysql
ports:
- port: 3306
targetPort: 3306
name: mysql
type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend-deployment
spec:
replicas: 1
selector:
matchLabels:
app: backend
template:
metadata:
labels:
app: backend
spec:
containers:
- name: backend
image: <imagelink redacted>
ports:
- containerPort: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-deployment
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:latest
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "mysecret"