一、接着上文
本文讲述如何把上文制作好的docker镜像部署到K8S,会涉及以下部分:
- 健康检测
- 应用程序的配置
- 应用程序的端口
- 日志路径
二、健康检测
1、健康状态
从官方的docker-compose.yml可以得知其健康检测方法
curl http://localhost:5175/api/status
{"data":{"chat_link":"","display_in_currency":true,"email_verification":false,"footer_html":"","github_client_id":"","github_oauth":false,"lark_client_id":"","logo":"","quota_per_unit":500000,"server_address":"http://localhost:3000","start_time":1712719277,"system_name":"One API","top_up_link":"","turnstile_check":false,"turnstile_site_key":"","version":"","wechat_login":false,"wechat_qrcode":""},"message":"","success":true}
2、deployment.yaml 增加探针
这里的{{ PORT }} 是你应用监听的端口号。
#########################################
readinessProbe:
exec:
command: ["sh", "-c", "wget -q -O - http://127.0.0.1:{{ PORT }}/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $2}'"]
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 3
failureThreshold: 3
startupProbe:
exec:
command: ["sh", "-c", "wget -q -O - http://127.0.0.1:{{ PORT }}/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $2}'"]
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 3
failureThreshold: 22
#########################################
三、应用程序的配置
当然,你可以直接在环境变量里配置明文,但不建议!
1、新建Secret(保密字典)
- mysql数据库连接地址SQL_DSN
- redis连接地址REDIS_CONN_STRING
- session密钥SESSION_SECRET
2、deployment.yaml环境变量引用secret配置
# 修改前
env:
- name: SQL_DSN
value: "oneapi:123456@tcp(db:3306)/one-api"
- name: REDIS_CONN_STRING
value: "redis://redis"
- name: SESSION_SECRET
value: "random_string"
# 修改后
env:
- name: SQL_DSN
valueFrom:
secretKeyRef:
name: one-api-conf
key: sql-dsn
- name: REDIS_CONN_STRING
valueFrom:
secretKeyRef:
name: one-api-conf
key: redis-conn-string
- name: SESSION_SECRET
valueFrom:
secretKeyRef:
name: one-api-conf
key: session-secret
四、应用程序的端口
one-api程序的默认端口是3000,一般我们都会需要进行变更。
不同的部署策略,则有不同的方案。
1、docker-compose部署
详见下面的command: --port 5175,指定程序启动的端口号为5175。
version: '3.4'
services:
one-api:
image: "xxx/one-api:1.0.0"
container_name: one-api
command: --port 5175
2、k8s deploymeng.yaml
通过args传入程序启动的端口号
containers:
- args:
- '--port'
- '5175'
五、日志路径
默认的存储路径:/data/logs
oneapi-20240410.log日志内容:
程序启动进程 one-api在根目录下:
六、总结
访问地址: http://{ip}:{port} (port就是上文指定的端口号)
至此,对开源项目one-api的k8s容器化部署就完成了。