tsuru.yaml
tsuru.yaml 是位于应用根目录的一个特殊文件。文件名可以是tsuru.yaml
或者tsuru.yml
。这个文件是用来描述应用的某些方面。目前,它描述了关于部署钩子和部署时健康检查的信息。。下面是使用这个功能的介绍。
部署钩子
tsuru提供了一些部署钩子,如restart:before
,restart:after
和build
。部署钩子允许开发者在一些命令前后运行命令。
下面是如何在tsuru.yaml声明这些钩子的例子:
hooks:
restart:
before:
- python manage.py generate_local_file
after:
- python manage.py clear_local_cache
build:
- python manage.py collectstatic --noinput
- python manage.py compress
tsuru支持下面的钩子:
restart:before
: 这个钩子会列出单元重启前会运行的所有命令。这些命令在每个单元上运行一次。比如,假设有一个应用部署在两个单元上,同时监听上面的tsuru.yaml
文件。python manage.py generate_local_file命令会运行两次,每个单元一次。restart:after
: 这个钩子和before-each很像, 但是是在每个单元重启后运行。build
: 这个钩子会在镜像生成时,列出部署中运行的命令。
健康检查
你可以在tsuru.yaml中声明健康检查。该检查在部署过程中被调用,只有通过了健康检查,tsuru才会继续部署。如果健康检查失败,tsuru会在路由指向新的单元前退出部署,这样你的应用就永远不会不响应。你可以通过dockermax-time
配置应用的最大响应等待时间。
下面是在yaml文件中如何配置健康检查的例子:
healthcheck:
path: /healthcheck
method: GET
status: 200
match: .*OKAY.*
allowed_failures: 0
healthcheck:path
:在应用中调用的路径。每个单元都会调用这个路径。这是唯一要必须设置的字段,如果没有设置,健康检查会被忽略。healthcheck:method
: 这个方法用来发起http请求。缺省是GET。healthcheck:status
: 期望请求返回状态码。缺省是200.healthcheck:match
: 用来匹配返回的消息体的正则表达式。如果没有设置,消息体不会被读取,只有返回的状态码被检查。这个正则表达式使用Go的语法
和.
匹配\n
(s
标记)。healthcheck:allowed_failures
: 允许的错误次数。当出现的错误次数大于它时,才认为应用不健康。缺省为0。