Я развернул в IBM Cloud базу данных MySQL и приложение Spring Boot с Kubernetes. База данных MySQL имеет развертывание и службу, но она не должна быть доступна снаружи, поэтому я дал ему IP-адрес кластера. Но приложение Spring балансирует нагрузку, потому что оно должно быть видно клиентам. Мой источник данных MySQL не работал, что я пишу в своем источнике данных spring. В локальном случае я пишу там просто localhost, но в облаке это не работает? Кто-нибудь знает, как это работает?
Deployment file:
apiVersion: apps/v1
kind: Deployment
metadata:
name: db
enviroment: test
spec:
selector:
matchLabels:
app: mysql
enviroment: test
strategy:
type: Recreate
template:
metadata:
labels:
app: mysql
enviroment: test
spec:
containers:
- image: de.icr.io/test/mysql:5.7
name: db
env:
- name: MYSQL_ROOT_PASSWORD
value: ************
- name: MYSQL_USER
value: ********
- name: MYSQL_PASSWORD
value: ***********
- name: MYSQL_DATABASE
value: *******
ports:
- containerPort: 3306
name: db
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mypvc
persistentVolumeClaim:
claimName: mysql-pv-claim
Это мои услуги:
apiVersion: v1
kind: Service
metadata:
name: mysqlservices
spec:
ports:
- port: 3306
protocol: TCP
targetPort: 3306
selector:
app: mysql
enviroment: test
Я знаю, что вам не понадобится мой постоянный том, но я отправлю его.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc
labels:
billingType: "monthly"
region: eu-de
zone: Frankfurt
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 20Gi
storageClassName: ibmc-file-bronze
И, наконец, источник данных Spring Boot. Я не знаю, что я напишу в URL-адресе для соединения.
<bean id = "dataSource"
class = "org.springframework.jdbc.datasource.DriverManagerDataSource"
primary = "true">
<property name = "driverClassName"
value = "com.mysql.jdbc.Driver" />
<property name = "url"
value = "jdbc:mysql://db/nlfb?useSSL=false" />
<property name = "username" value = "*****" />
<property name = "password" value = "******" />
</bean>
с уважением и благодарностью за вашу помощь.
Поделитесь своими файлами yaml. Служба mysql доступна с именем службы внутри кластера (поскольку тип службы mysql — clusterIP).




Вы должны использовать имя службы Kubernetes Deployments. Что связано с конкретным развертыванием, т.е. если ваше имя службы db и оно размещено в пространстве имен dev, вам нужно написать dev.db