本文档是一个把你现有的云服务转为 tsuru 服务的实作指南。
为了创立一个服务,你需求为你的服务完成一个设置装备摆设API,当用户创立一个新的实例或绑定一个服务实例到使用顺序时,tsuru 将运用HTTP协议挪用它。
您还需求创立一个YAML文档作为服务清单。我们供给一个号令行Tools来协助您创立此清单和管理您的服务。
要创立你的服务API,你可以用编程言语或框架。在本教程中我们运用 flask.
起首,要确保曾经安装了Python和pip:
$ python --version Python 2.7.2$ pip Usage: pip COMMAND [OPTIONS]pip: error: You must give a command (use "pip help" to see a list of commands)
要晓得怎么安装Python的信息,请参考 Python可下载文档。而怎么安装pip的信息,请参考 pip安装指南。
如今,假设python和pip曾经安装好了,你就能够运用pip安装flask了:
$ pip install flask
flask安装好后,我们就能够创立文件api.py,并填入下面代码,从而完成最小的flask使用:
from flask import Flaskapp = Flask(__name__)@app.route("/")def hello(): return "Hello World!"if __name__ == "__main__": app.run()
要运转这个使用的话,请履行以下号令:
$ python api.py * Running on http://127.0.0.1:5000/
此时,假如你翻开阅读器拜访url: http://127.0.0.1:5000/,你将会看到"Hello World!"。
接下来,你就能够经过 tsuru任务流api完成你所希冀的工具了。
关于新的实例,tsuru 发送一个POST到 /resources,在恳求主体中含有表现服务实例称号的“name”。假如服务实例被成功创立,你的API应当前往201作为形态代码。
让我们创立这个操作的办法:
@app.route("/resources", methods=["POST"])def add_instance(): return "", 201
在绑定操作中,tsuru 经过代表使用顺序主机名的“app-hostname”和“单位主机名”的“unit-hostname” POST /resources/<service_name>/ 。
假如使用顺序成功绑定到实例,你应当在body顶用json格局前往201作为形态代码和在使用顺序情况中导出的变量。
作为一个例子,让我们创立一个办法,它前往一个json,内容是要注入到使用情况中的名为“SOMEVAR”的伪变量。要在flask中做到这一点,您需求导入jsonify办法。
from flask import jsonify @app.route("/resources/<name>", methods=["POST"]) def bind(name): out = jsonify(SOMEVAR="somevalue") return out, 201
在消除绑定操作中,tsuru 经过 DELETE on /resources/<service_name>/hostname/<unit_hostname>/ 来挪用你的服务。
假如使用顺序成功从实例消除了绑定,你应当前往200作为形态代码。
让我们为这个操作创立一个办法:
@app.route("/resources/<name>/hostname/<host>", methods=["DELETE"]) def unbind(name, host): return "", 200
在烧毁操作中, tsuru 经过 DELETE on /resources/<service_name>/ 来挪用你的服务。
假如服务实例被成功删除,你应当前往200作为形态代码
让我们为这个操作创立一个办法:
@app.route("/resources/<name>", methods=["DELETE"]) def remove_instance(name): return "", 200
要反省实例的形态, tsuru 运用 /resources/<service_name>/status 这个 url。假如实例正常,这个 URL 会前往 204。
让我们为这个操作创立一个办法:
@app.route("/resources/<name>/status", methods=["GET"]) def status(name): return "", 204
为我们在flask中开发“伪API”的最初代码是:
from flask import Flask from flask import jsonify app = Flask(__name__) @app.route("/resources/<name>", methods=["POST"]) def bind(name): out = jsonify(SOMEVAR="somevalue") return out, 201 @app.route("/resources/<name>/hostname/<host>", methods=["DELETE"]) def unbind(name, host): return "", 200 @app.route("/resources", methods=["POST"]) def add_instance(): return "", 201 @app.route("/resources/<name>", methods=["DELETE"]) def remove_instance(name, host): return "", 200 @app.route("/resources/<name>/status", methods=["GET"]) def status(name): return "", 204 if __name__ == "__main__": app.run()
你可使用 crane 创立一个清单模板:
$ crane template
这将在以后途径创立有以下内容的 manifest.yaml文件:
id: servicenameendpoint: production: production-endpoint.com test: test-endpoint.com:8080
这个 manifest.yaml 文件被 crane 用来为你的服务定义一个id和一个端点。
用你的服务的信息来更改ID和端点的值:
id: fakeserviceid1endpoint: production: fakeserviceid1.com
要提交你的服务,你可以运转:
$ crane create manifest.yaml本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译任务按照 CC 协议,假如我们的任务有进犯到您的权益,请实时联络我们。
2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务