文章目录
部署mysql
编写mysql的yaml
可以使用
echo -n MTIzNDU2Nw== | base64 --decode
解密
可以使用echo 1234567 | base64
对字符串加密
apiVersion: v1
kind: Namespace
metadata:
name: dev
labels:
name: dev
--
apiVersion: v1
data:
password: MTIzNDU2Nw==
kind: Secret
metadata:
name: mysql-root-password
namespace: dev
type: Opaque
--
# 定义mysql的Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: mysql
name: mysql
namespace: dev
spec:
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql:8.0
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-root-password
key: password
# 如果你不想使用secret对象保存mysql登录密码,可以直接使用下面的方式指定,简单粗暴未尝不可
#value: "123456"
ports:
- containerPort: 3306
volumeMounts:
- name: mysqlvolume
mountPath: /var/lib/mysql
volumes:
- name: mysqlvolume
hostPath:
path: /data/mysql-clz/data
type: DirectoryOrCreate
---
#定义mysql的Service
apiVersion: v1
kind: Service
metadata:
labels:
app: svc-mysql
name: svc-mysql
namespace: dev
spec:
selector:
app: mysql
type: NodePort
ports:
- port: 3306
protocol: TCP
targetPort: 3306
nodePort: 31234 #指定暴露的端口
测试
我们就可以通过连接工具来连接刚才部署的mysql服务
部署mq
编写mq的yaml
可以使用`echo -n UEA4OHcwcmQ= | base64 --decode` 解密 可以使用 `echo admin | base64` 对字符串加密
** 使用下面的yaml
文件创建mq
服务**
---
kind: Secret
apiVersion: v1
metadata:
name: mq-secret
namespace: dev
data:
pass: UEA4OHcwcmQ=
user: YWRtaW4=
type: Opaque
---
# 定义mysql的Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: rabbitmq
namespace: dev
labels:
app: rabbitmq
spec:
replicas: 1
selector:
matchLabels:
app: rabbitmq
template:
metadata:
creationTimestamp: null
labels:
app: rabbitmq
spec:
volumes:
- name: host-time
hostPath:
path: /etc/localtime
type: ''
containers:
- name: rabbitmq
image: '10.10.10.62:6000/rabbitmq:3-management'
ports:
- name: tcp-5672
containerPort: 5672
protocol: TCP
- name: http-15672
containerPort: 15672
protocol: TCP
env:
- name: RABBITMQ_DEFAULT_USER
valueFrom:
secretKeyRef:
name: mq-secret
key: user
- name: RABBITMQ_DEFAULT_PASS
valueFrom:
secretKeyRef:
name: mq-secret
key: pass
volumeMounts:
- mountPath: /bitnami/redis/data
name: data
volumes:
- name: data
hostPath:
path: /data/redis-clz/data
type: DirectoryOrCreate
---
#定义mq的Service
apiVersion: v1
kind: Service
metadata:
labels:
app: rabbitmq
name: rabbitmq
namespace: dev
spec:
ports:
- name: 5672-5672
port: 5672
protocol: TCP
targetPort: 5672
- name: 15672-15672
port: 15672
protocol: TCP
targetPort: 15672
selector:
app: rabbitmq
type: NodePort
部署redis
编写redis的yaml
通过下面的yaml
文件创建redis
服务
---
kind: ConfigMap
apiVersion: v1
metadata:
name: redis-config
namespace: default
labels:
app: redis
data:
redis.conf: |-
dir /data
port 6379
bind 0.0.0.0
appendonly yes
protected-mode no
requirepass 123
pidfile /data/redis-6379.pid
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
namespace: dev
labels:
app: redis
spec:
replicas: 1
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: 10.10.10.62:6000/redis:5.0.7
command:
- "sh"
- "-c"
- "redis-server /usr/local/etc/redis/redis.conf"
ports:
- containerPort: 6379
resources:
limits:
cpu: 1000m
memory: 1024Mi
requests:
cpu: 1000m
memory: 1024Mi
livenessProbe:
tcpSocket:
port: 6379
initialDelaySeconds: 300
timeoutSeconds: 1
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
readinessProbe:
tcpSocket:
port: 6379
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
volumeMounts:
- name: data
mountPath: /data
- name: config
mountPath: /usr/local/etc/redis/redis.conf
subPath: redis.conf
volumes:
- name: data
persistentVolumeClaim:
claimName: pvc-redis
- name: config
configMap:
name: redis-config
- name: sys
hostPath:
path: /sys
---
apiVersion: v1
kind: Service
metadata:
labels:
app: redis
name: redis
namespace: dev
spec:
ports:
- name: 6379-6379
port: 6379
protocol: TCP
targetPort: 36379
selector:
app: redis
type: NodePort
部署业务服务
下面是服务之外服务的部署方法,这里面又分了二种情况:一是只需要暴露端口的服务,二是同时暴露端口和映射数据卷的服务。
1.只需要暴露端口的服务的部署
这类服务的部署可参考下面的yaml文件,只需要进行简单的修改即可。
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: gateway # Deployment的标签
name: gateway # Deployment的名称
namespace: luckyun-react #名称空间,根据自己当前部署的情况进行修改
spec:
replicas: 1
selector:
matchLabels:
app: gateway #选择包含标签app:gateway的资源
template:
metadata:
labels:
app: gateway #Pod的标签,上面的selector即选择包含标签app:gateway的Pod
spec:
containers:
# 环境变量,配置同Rancher
- env:
- name: SPRING_PROFILES_ACTIVE
value: test
- name: EUREKA_PORT
value: "32520"
- name: EUREKA_HOST
value: 10.10.10.113
# 该服务使用的镜像
image: 10.10.10.62:6000/com-luckyun-gateway-admin:2.6.9-RELEASE
imagePullPolicy: IfNotPresent
name: gateway
---
apiVersion: v1
kind: Service
metadata:
labels:
app: gateway #Service 自己的标签
name: gateway #Service 的名称
namespace: luckyun-react #名称空间,根据自己当前部署的情况进行修改
spec:
ports:
- name: 31006-31006
port: 31006
protocol: TCP
targetPort: 31006 #通过任意节点的 31006 端口访问 Service
selector:
app: gateway #选择包含标签 app:gateway 的 Pod
type: NodePort
2.既要暴露端口,又要挂载数据卷的服务的部署
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: report # Deployment的标签
name: report # Deployment的名称
namespace: luckyun-react #名称空间,根据自己当前部署的情况进行修改
spec:
replicas: 1
selector:
matchLabels:
app: report #选择包含标签app:report的资源
template:
metadata:
labels:
app: report #Pod的标签,上面的selector即选择包含标签app:report的Pod
spec:
containers:
# 环境变量,配置同Rancher
- env:
- name: SPRING_PROFILES_ACTIVE
value: test
- name: EUREKA_PORT
value: "32520"
- name: EUREKA_HOST
value: 10.10.10.113
image: 10.10.10.62:6000/com-luckyun-report-admin:1.1.5-CESHI-3
imagePullPolicy: IfNotPresent
name: report
# 数据卷挂载
volumeMounts:
- mountPath: /data/upload_temp # 容器路径
name: data # 数据卷名称
volumes:
- name: data # 数据卷名称
hostPath:
path: /data/app/test-luckyun-v2/upload_temp # 映射的主机目录
type: DirectoryOrCreate # 数据卷类型
---
apiVersion: v1
kind: Service
metadata:
labels:
app: report
name: report
namespace: luckyun-react
spec:
ports:
- name: 31008-31008
port: 31008
protocol: TCP
targetPort: 31008
selector:
app: report
type: NodePort