如何解决$ {DB_HOST}:在Minikube集群中部署Spring MVC应用程序时,名称无法解析
与Spring Boot的application.properties配置配合得很好,但是当我将Spring MVC与XML配置配合使用时,会失败。
登录到应用程序时,通信链接失败。
MySQL部署:
apiVersion: v1
kind: Service
metadata:
name: employeecare-db # DNS name
labels:
app: employeecare-db
tier: database
spec:
ports:
- port: 3306
targetPort: 3306
selector: # mysql Pod Should contain same labels
app: employeecare-db
tier: database
clusterIP: None # We Use DNS,Thus ClusterIP is not relevant
---
# Define a 'Persistent Voulume Claim'(PVC) for Mysql Storage,dynamically provisioned by cluster
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim # name of PVC essential for identifying the storage data
labels:
app: employeecare-db
tier: database
spec:
accessModes:
- ReadWriteOnce #This specifies the mode of the claim that we are trying to create.
resources:
requests:
storage: 1Gi #This will tell kubernetes about the amount of space we are trying to claim.
---
# Configure 'Deployment' of mysql server
apiVersion: apps/v1
kind: Deployment
metadata:
name: employeecare-db
labels:
app: employeecare-db
tier: database
spec:
selector: # mysql Pod Should contain same labels
matchLabels:
app: employeecare-db
tier: database
strategy:
type: Recreate
template:
metadata:
labels: # Must match 'Service' and 'Deployment' selectors
app: employeecare-db
tier: database
spec:
containers:
- image: mysql:5.7 # image from docker-hub
args:
- "--ignore-db-dir=lost+found" # Workaround for https://github.com/docker-library/mysql/issues/186
name: employeecare-db
env:
- name: MYSQL_ROOT_PASSWORD # Setting Root Password of mysql From a 'Secret'
valueFrom:
secretKeyRef:
name: secret-mysql-root # Name of the 'Secret'
key: password # 'key' inside the Secret which contains required 'value'
- name: MYSQL_USER # Setting USER username on mysql From a 'Secret'
valueFrom:
secretKeyRef:
name: secret-mysql-user
key: username
- name: MYSQL_PASSWORD # Setting USER Password on mysql From a 'Secret'
valueFrom:
secretKeyRef:
name: secret-mysql-user
key: password
- name: MYSQL_DATABASE # Setting Database Name from a 'ConfigMap'
valueFrom:
configMapKeyRef:
name: configmap-mysql
key: name
ports:
- containerPort: 3306
name: mysql
volumeMounts: # Mounting voulume obtained from Persistent Volume Claim
- name: mysql-persistent-storage
mountPath: /var/lib/mysql #This is the path in the container on which the mounting will take place.
volumes:
- name: mysql-persistent-storage # Obtaining 'vloume' from PVC
persistentVolumeClaim:
claimName: mysql-pv-claim
春季部署:
kind: Service
apiVersion: v1
metadata:
name: employeecare-app
labels:
name: employeecare-app
spec:
ports:
- nodePort: 30164
port: 8080
targetPort: 8080
protocol: TCP
selector:
app: employeecare-app
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: employeecare-app
spec:
selector:
matchLabels:
app: employeecare-app
replicas: 3
template:
metadata:
labels:
app: employeecare-app
spec:
containers:
- name: employeecare-app
image: 100598/employeecare:1.0
ports:
- containerPort: 8080
env: # Setting Enviornmental Variables
- name: DB_HOST # Setting Database host address from configMap
valueFrom:
configMapKeyRef:
name: configmap-mysql # name of configMap
key: host
- name: DB_NAME # Setting Database name from configMap
valueFrom:
configMapKeyRef:
name: configmap-mysql
key: name
- name: DB_USERNAME # Setting Database username from Secret
valueFrom:
secretKeyRef:
name: secret-mysql-user # Secret Name
key: username
- name: DB_PASSWORD # Setting Database password from Secret
valueFrom:
secretKeyRef:
name: secret-mysql-user
key: password
ConfigMap和秘密:
apiVersion: v1
kind: ConfigMap
metadata:
name: configmap-mysql
data:
host: employeecare-db
name: EMPLOYEECARE
apiVersion: v1
kind: Secret
metadata:
name: secret-mysql-root
data:
password: cm9vdA==
apiVersion: v1
kind: Secret
metadata:
name: secret-mysql-user
data:
username: cm9oaXQ=
password: MTIzNA==
注意:我正在使用带有XML配置的Spring MVC。下面是我的数据库配置
<!-- Docker DB Configs -->
<beans:bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<beans:property name="driverClassName"
value="com.mysql.cj.jdbc.Driver" />
<beans:property name="url"
value="jdbc:mysql://${DB_HOST}/${DB_NAME}?useSSL=true" />
<beans:property name="username" value="${DB_USERNAME}" />
<beans:property name="password" value="${DB_PASSWORD}" />
</beans:bean>
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。