Hi,
I have a microservice which needs postgresql for database. When I am trying to connect microservice with postgresql without adding consul annotations connection was successfull. But when I add consul annotations to microservice and postgresql deployment files, connection refused. Can you please help me to solve the issue.
Postgres.yaml
---
apiVersion: v1
kind: Service
metadata:
name: postgres
labels:
app: postgres
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
selector:
app: postgres
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: postgres
automountServiceAccountToken: true
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
spec:
replicas: 1
selector:
matchLabels:
service: postgres
app: postgres
template:
metadata:
labels:
service: postgres
app: postgres
annotations:
# prometheus.io/scrape: "true"
# prometheus.io/port: "9102"
consul.hashicorp.com/connect-inject: "true"
spec:
serviceAccountName: postgres
containers:
- name: postgres
image: hashicorpdemoapp/product-api-db:v0.0.22
ports:
- containerPort: 5432
env:
- name: POSTGRES_DB
value: products
- name: POSTGRES_USER
value: postgres
- name: POSTGRES_PASSWORD
value: password
# only listen on loopback so only access is via connect proxy
args: ["-c", "listen_addresses=127.0.0.1"]
volumeMounts:
- mountPath: "/var/lib/postgresql/data"
name: "pgdata"
volumes:
- name: pgdata
emptyDir: {}
Microservice.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: onboarding-service
labels:
app: onboarding-service
spec:
replicas: 1
selector:
matchLabels:
app: onboarding-service
template:
metadata:
annotations:
consul.hashicorp.com/connect-inject: 'true'
labels:
app: onboarding-service
spec:
serviceAccountName: onboarding-service
containers:
- image: onboarding-service:latest
name: onboarding-service
ports:
- containerPort: 5400
name: http-port01
- containerPort: 5450
name: http-port02
- containerPort: 5451
name: http-port03
---
kind: Service
apiVersion: v1
metadata:
name: onboarding-service
labels:
app: onboarding-service
spec:
selector:
app: onboarding-service
type: ClusterIP
ports:
- name: port01
port: 5400
targetPort: 5400
- name: port02
port: 5450
targetPort: 5450
- name: port03
port: 5451
targetPort: 5451
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: onboarding-service
automountServiceAccountToken: true
---
apiVersion: consul.hashicorp.com/v1alpha1
kind: ServiceIntentions
metadata:
name: postgres
namespace: consul
spec:
destination:
name: postgres
sources:
- name: onboarding-service
action: allow
Error: ERR app/options/data.go:68 > error in creating postgres connection, error: dial tcp 10.103.109.83:5432: connect: connection refused error=“dial tcp 10.103.109.83:5432: connect: connection refused” app=onboarding_service host=onboarding-service-678cfff8c-lqj8h
Note: I have added postgresql connection in microservice config file.