Не удалось подключить микросервис к базе данных с помощью k8s.JAVA

Программисты JAVA общаются здесь
Anonymous
Не удалось подключить микросервис к базе данных с помощью k8s.

Сообщение Anonymous »

Я создаю веб-приложение с помощью Spring, масштабируемое с помощью Kubernetes, но Spring не подключается к PostgresSQL, выдавая следующие ошибки:

Код: Выделить всё

Connection to localhost:5432 refused.
Check that the hostname and port are correct and that the postmaster
is accepting TCP/IP connections.
Служба PostgreSQL:

Код: Выделить всё

# This will expose database to other microservices
apiVersion: v1
kind: Service
metadata:
name: postgres-service
labels:
app: postgres
spec:
ports:
- port: 5432
selector:
app: postgres
clusterIP: None
Развертывание PostgreSQL:

Код: Выделить всё

apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-deployment
labels:
app: postgres
spec:
selector:
matchLabels:
app: postgres
template:
metadata:
name: postgres-pod
labels:
app: postgres
spec:
containers:
- name: postgres-container
image: postgres:latest
env:
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: postgres-credentials
key: user
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: postgres-credentials
key: password
- name: POSTGRES_HOST
valueFrom:
configMapKeyRef:
name: postgres-config
key: host
ports:
- containerPort: 5432
name: postgres
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgres-persistent-storage
volumes:
- name: postgres-persistent-storage
persistentVolumeClaim:
claimName: postgres-pv-claim
PostgreSQL PVC:

Код: Выделить всё

# PVC to store the data of db
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-pv-claim
labels:
app: postgres
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi # Modify as needed
Учетные данные PostgreSQL:

Код: Выделить всё

apiVersion: v1
kind: Secret
metadata:
name: postgres-credentials
data:
user: cG9zdGdyZXM=
password: cG9zdGdyZXM=
Конфигурация PostgreSQL:

Код: Выделить всё

apiVersion: v1
kind: ConfigMap
metadata:
name: postgres-config
data:
host: "postgres-service"
Служба микросервиса:

Код: Выделить всё

apiVersion: v1
kind: Service
metadata:
name: task-app-service
spec:
ports:
- protocol: TCP
port: 8081 # Port of the service, user by clients
targetPort: 8081 # Port of the Spring application
selector:
app: task-app
type: LoadBalancer
Развертывание микросервиса:

Код: Выделить всё

apiVersion: apps/v1
kind: Deployment
metadata:
name: task-app-deployment
spec:
replicas: 3
selector:
matchLabels:
app: task-app
template:
metadata:
name: task-pod
labels:
app: task-app
spec:
containers:
- name: task-container
image: renvins/task-app:2.0
ports:
- containerPort: 8081
imagePullPolicy: Always
env:
- name: POSTGRES_HOST
valueFrom:
configMapKeyRef:
name: postgres-config
key: host
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: postgres-credentials
key: user
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: postgres-credentials
key: password
- name: SPRING_DATASOURCE_URL
value: jdbc:postgresql://localhost:5432/stm_db
- name: SPRING_DATASOURCE_USERNAME
value: postgres
- name: SPRING_DATASOURCE_PASSWORD
value: admin
Spring application.yml:

Код: Выделить всё

spring:
sql:
init:
mode: never # Database initialization should typically be performed outside of Spring lifecycle
application:
name: scalable-task-manager-task-app
datasource:
driver-class-name:  org.postgresql.Driver
url: jdbc:postgresql://postgres-service:5432/il_tuo_database
username: ${POSTGRES_USER}
password: ${POSTGRES_PASSWORD}
jpa:
open-in-view: false
hibernate:
ddl-auto: update
naming: # To prevent Hibernate from naming columns
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
properties:
hibernate.temp.use_jdbc_metadata_defaults: false
database-platform: org.hibernate.dialect.PostgreSQLDialect
springdoc:
api-docs:
enabled: true
swagger-ui:
url: /api/swagger.yml
server:
port: 8081
user:
service:
url: http://localhost:8080
Не могу найти проблему, застрял в ней

Подробнее здесь: https://stackoverflow.com/questions/790 ... e-with-k8s

Вернуться в «JAVA»