Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。
Copy Chart---> Config ---> Release
Copy Program // 程序包名称
--meta.yaml // 描述了关联关系、资源需求(端口)、bns端口、日志切分策略
--config.yaml // 配置描述,包括默认值、类型和描述信息
+--hooks // hook目录
--install // 服务安装部署hook
--config-change // 配置变更hook
--start // 起服务hook
--stop // 停服务hook
--upgrade // 服务升级hook
--relation-change // 关联变更hook
--relation-join // 加入关联hook
--...... // 其他hook
Copy name: twemproxy
requires:
- name: cache
interface: memcache
- name: gutter
interface: memcache
- name: mcq
interface: redis
provides:
- name: stats
interface: ncstats
ports:
- port
- stats_port
- supervisord_port
bns:
ports:
main: port
stats: stats_port
logrotate:
/home/work/log/: 4
/home/work/odp/log/: 3
/home/work/odp/log/*/: 4
control_cmd: cd /home/work/odp/webserver/ && sh loadnginx.sh reload
Copy options:
verbosity:
default: 5
description: "set logging level (default: 5, min: 0, max: 11)"
type: int
mbuf:
default: 16384
description: "set size of mbuf chunk in bytes (default: 16384 bytes)"
type: int
timeout:
default: 50
description: "set timeout in msec that we wait for to establish a connection for receive a response"
type: int
server_retry_timeout:
default: 2000
description: "set timeout value in msec to wait for before retrying on a temporarily ejected server"
type: int
server_failure_limit:
default: 3
description: "set the number of consecutive failures on a server that would lead to it being temporarily ejected"
type: int
Copy 部署新实例:
----------------------> status(none)
(1) 创建 container
创建 container 失败时,status 为 none
----------------------> status(allocated)
(2) 拉取 program, 拉取 program 失败时,unit 状态为 allocated
----------------------> status(deployed)
(3) 执行 hook
1> env-install
2> install
3> config-changed
4> start
----------------------> status(installed)
(4) 通知上下游
auth changed
relation change, 通知上下游组件
----------------------> status(ready)
(5) 执行 检查
----------------------> status(running)
状态机:
+-------------------add-----------------------+ +-recover-+
| V V |
none—>allocated—>deployed—>installed—>ready->running---->dead---->removed
| ^ | ^
+--kill--+ +--delete--+
创建 unit 时 hook 的执行顺序是 env-install->install->config-changed->start
Copy +-------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| program | varchar(64) | NO | MUL | NULL | |
| name | varchar(64) | NO | | NULL | |
| owner | varchar(64) | NO | | NULL | |
| categories | varchar(64) | NO | | NULL | |
| summary | varchar(512) | NO | | NULL | |
| description | varchar(512) | NO | | NULL | |
| peers | varchar(2048) | NO | | NULL | |
| provides | varchar(2048) | NO | | NULL | |
| requires | varchar(2048) | NO | | NULL | |
| ports | varchar(1024) | YES | | NULL | |
| extra | varchar(1024) | YES | | NULL | |
| version | varchar(32) | NO | | NULL | |
| create_time | int(11) | NO | | NULL | |
| update_time | int(11) | YES | | NULL | |
+-------------+---------------+------+-----+---------+----------------+
Copy *************************** 1113. row ***************************
id: 1137
program: twemproxy
name: twemproxy
owner:
categories:
summary:
description:
peers: []
provides: [{"name":"stats","interface":"ncstats"}]
requires: [{"name":"cache","interface":"memcache"},{"name":"cachedb","interface":"memcache"},{"name":"gutter","interface":"memcache"},{"name":"gutterdb","interface":"memcache"},{"name":"mcq","interface":"redis"}]
ports: ["port","stats_port","supervisord_port"]
extra: {"bns":{"ports":{"main":"port","stats":"stats_port"}},"module":{"type":"fileserver","src":"\/home\/work\/nfs_client\/mnt\/online\/program\/twemproxy\/2.0.0.22\/twemproxy.tar.gz"},"scm_modules":[],"commit_log":""}
version: 2.0.0.22
create_time: 1571324344
update_time: 0
*************************** 1114. row ***************************
id: 1138
program: twemcache
name: twemcache
owner:
categories:
summary:
description:
peers: []
provides: [{"name":"cache","interface":"memcache"}]
requires: []
ports: ["port","supervisord_port"]
extra: {"bns":{"ports":{"main":"port"}},"module":{"type":"fileserver","src":"\/home\/work\/nfs_client\/mnt\/online\/program\/twemcache\/1.0.8.17\/twemcache.tar.gz"},"scm_modules":[],"commit_log":""}
version: 1.0.8.17
create_time: 1571325623
update_time: 0
*************************** 1115. row ***************************
id: 1139
program: redis
name: redis
owner:
categories:
summary:
description:
peers: []
provides: [{"name":"db","interface":"redis"}]
requires: []
ports: ["port","supervisord_port"]
extra: {"bns":{"ports":{"main":"port"}},"module":{"type":"fileserver","src":"\/home\/work\/nfs_client\/mnt\/online\/program\/redis\/1.1.5.27\/redis.tar.gz"},"scm_modules":[],"commit_log":""}
version: 1.1.5.27
create_time: 1571327508
update_time: 0
*************************** 1116. row ***************************
id: 1140
program: neworker
name: neworker
owner:
categories:
summary:
description:
peers: []
provides: [{"name":"stats","interface":"http"}]
requires: [{"name":"upstream","interface":"redis"},{"name":"downstream","interface":"memcache"}]
ports: ["stats_port","supervisord_port"]
extra: {"bns":{"ports":{"main":"stats_port"}},"module":{"type":"fileserver","src":"\/home\/work\/nfs_client\/mnt\/online\/program\/neworker\/4.0.0.6\/neworker.tar.gz"},"scm_modules":[],"commit_log":""}
version: 4.0.0.6
create_time: 1571328999
update_time: 0
*************************** 1117. row ***************************
id: 1141
program: neworker
name: neworker
owner:
categories:
summary:
description:
peers: []
provides: [{"name":"stats","interface":"http"}]
requires: [{"name":"upstream","interface":"redis"},{"name":"downstream","interface":"memcache"}]
ports: ["stats_port","supervisord_port"]
extra: {"bns":{"ports":{"main":"stats_port"}},"module":{"type":"fileserver","src":"\/home\/work\/nfs_client\/mnt\/online\/program\/neworker\/4.0.0.7\/neworker.tar.gz"},"scm_modules":[],"commit_log":""}
version: 4.0.0.7
create_time: 1571329268
update_time: 0
Copy
user
| |
| program | service/unit
| |
+-------------------|-----------------+ +yiqiu---V----------+
| +baicang----------V---------------+ | | |
| | | <---------+ group/service/unit|
| +-------+-------------------+-----+ | +-------------------+
| | | |
| | | |
| +wuxing-V------+ +storage-V-----+ |
| | | | s3/fs | |
| +--------------+ +--------------+ |
+-------------------------------------+
Copy --program program name
--src ftp address or output path
--version program version
--commit-log program commit log
Copy --service service name, a service is a set of units
--program program which build on the service
--version program version
--pool machine pool. [common]
--resource-type service deploy resource type [default]
--disk-type service deploy disk type [home/ssd/disk/hdfs/etc]
架构图中如果有很多模块,需要对各个模块的功能进行简要介绍;
(有了数据库+接口+流程,别的同学拿到详设文档,基本也能够搞定了)
简要的交互可用文字说明,复杂的交互建议使用流程图,交互图或其他图形进行说明