Docker & K8s
Docker
注意
Yearning安装包内已含有Dockerfile文件,可直接进行build打包成镜像
Yearning 从v2.0.4版本开始支持环境变量传参
容器启动时可通过环境变量的方式传入数据库地址。
如下所示
1. docker run -d -it -p8000:8000 -e MYSQL_USER=root -e MYSQL_ADDR=10.0.0.3:3306 -e MYSQL_PASSWORD=123123 -e MYSQL_DB=Yearning chaiyd/yearning
K8s
k8s部署参考K8S | 部署 Yearning SQL 审核平台
open in new window
Secret
1. apiVersion: v1
2. kind: Secret
3. metadata:
4. name: db-conf
5. namespace: yearning
6. type: Opaque # 使用的是generic类型
7. data: # 这里配置的是数据库的相关信息,使用base64加密输入:
8. addr: cm9vdAweqw==
9. user: cm9vdAweqw==
10. pass: cm9vdAweqw==
11. data: WWVhcm5pbmc= # echo -n 'Yearning' | base64
Service
1. apiVersion: v1
2. kind: Service
3. metadata:
4. labels:
5. app: yearning
6. name: yearning
7. namespace: yearning
8. spec:
9. ports:
10. - port: 80 # svc内部端口,通过clusterIP访问
11. protocol: TCP
12. targetPort: 8000 # 镜像内服务的端口
13. selector: # 标签选择器,与deployment中的标签保持一致
14. app: yearning
15. type: NodePort # Service类型
Ingress
1. apiVersion: networking.k8s.io/v1
2. kind: Ingress
3. metadata:
4. name: yearing
5. namespace: zheng
6. spec:
7. rules:
8. # 需要在本地机器的hosts文件中添加配置:192.168.111.111 www.yearning.com
9. - host: www.yearning.com
10. http:
11. paths:
12. - path: /
13. pathType: Prefix
14. backend:
15. service:
16. name: yearning
17. port:
18. number: 80
Deployment
1. apiVersion: apps/v1 # API版泵
2. kind: Deployment # 资源类型
3. metadata: # 元数据
4. labels: # 标签
5. app: SQL-Review
6. name: yearning # deployment的名字
7. namespace: yearning # 所属命名空间
8. spec:
9. replicas: 3 # 副本数
10. selector: # 选择器,选择针对谁做
11. matchLabels:
12. app: yearning
13. template: # 镜像的模板
14. metadata: # 元数据
15. labels: # 标签
16. app: yearning
17. spec:
18. containers: # 容器信息
19. - image: 192.168.189.111/project/yearning # 容器镜像
20. name: yearning # 容器的名字
21. imagePullPolicy: IfNotPresent # 镜像的下载策略
22. env: # 容器中的变量
23. - name: MYSQL_ADDR
24. valueFrom:
25. secretKeyRef: # 存储的变量信息
26. name: db-conf
27. key: addr
28. - name: MYSQL_USER
29. valueFrom:
30. secretKeyRef:
31. name: db-conf
32. key: user
33. - name: MYSQL_PASSWORD
34. valueFrom:
35. secretKeyRef:
36. name: db-conf
37. key: pass
38. - name: MYSQL_DB
39. valueFrom:
40. secretKeyRef:
41. name: db-conf
42. key: data
43. ports: # 定义容器中的端口信息
44. - containerPort: 8000
45. name: web
46. protocol: TCP
47. readinessProbe: # 就绪检查
48. httpGet:
49. path: /
50. port: web
51. scheme: HTTP
52. initialDelaySeconds: 25
53. periodSeconds: 2
54. livenessProbe: # 存活检查
55. httpGet:
56. path: /
57. port: web
58. scheme: HTTP
59. initialDelaySeconds: 30
60. periodSeconds: 2
61. resources: # 资源限制
62. requests:
63. cpu: 200m
64. memory: 1Gi
65. limits:
66. cpu: 250m
67. memory: 2Gi
