tsuru.yaml

tsuru.yaml 是位于应用根目录的一个特殊文件。文件名可以是tsuru.yaml或者tsuru.yml。这个文件是用来描述应用的某些方面。目前,它描述了关于部署钩子和部署时健康检查的信息。。下面是使用这个功能的介绍。

部署钩子

tsuru提供了一些部署钩子,如restart:beforerestart:afterbuild。部署钩子允许开发者在一些命令前后运行命令。

下面是如何在tsuru.yaml声明这些钩子的例子:

  1. hooks:
  2. restart:
  3. before:
  4. - python manage.py generate_local_file
  5. after:
  6. - python manage.py clear_local_cache
  7. build:
  8. - python manage.py collectstatic --noinput
  9. - python manage.py compress

tsuru支持下面的钩子:

  • restart:before: 这个钩子会列出单元重启前会运行的所有命令。这些命令在每个单元上运行一次。比如,假设有一个应用部署在两个单元上,同时监听上面的tsuru.yaml文件。python manage.py generate_local_file命令会运行两次,每个单元一次。
  • restart:after: 这个钩子和before-each很像, 但是是在每个单元重启后运行。
  • build: 这个钩子会在镜像生成时,列出部署中运行的命令。

健康检查

你可以在tsuru.yaml中声明健康检查。该检查在部署过程中被调用,只有通过了健康检查,tsuru才会继续部署。如果健康检查失败,tsuru会在路由指向新的单元前退出部署,这样你的应用就永远不会不响应。你可以通过docker:healthcheck:max-time配置应用的最大响应等待时间。

下面是在yaml文件中如何配置健康检查的例子:

  1. healthcheck:
  2. path: /healthcheck
  3. method: GET
  4. status: 200
  5. match: .*OKAY.*
  6. allowed_failures: 0
  • healthcheck:path:在应用中调用的路径。每个单元都会调用这个路径。这是唯一要必须设置的字段,如果没有设置,健康检查会被忽略。
  • healthcheck:method: 这个方法用来发起http请求。缺省是GET。
  • healthcheck:status: 期望请求返回状态码。缺省是200.
  • healthcheck:match: 用来匹配返回的消息体的正则表达式。如果没有设置,消息体不会被读取,只有返回的状态码被检查。这个正则表达式使用Go的语法.匹配\n(s标记)。
  • healthcheck:allowed_failures: 允许的错误次数。当出现的错误次数大于它时,才认为应用不健康。缺省为0。

原文: http://doc.oschina.net/tsuru-paas?t=52829