Download your own Cartridge

来源:互联网 发布:gta5没网络怎么不能玩 编辑:程序博客网 时间:2024/05/17 06:10

原文:https://www.openshift.com/developers/download-cartridges

翻译水平有限,并只做个人参考,由于没使用online版本的,所以翻译了一部分


PS:使用git上的OpenShift Cartridge,如果有现成的话,直接引用metadata/manifest.yml的raw文件到coding anything的url上即可


在OpenShift中,cartridge不限制于我们提供的和安全维护栈。你也能够在自己的应用上随意部署自己的cartridge,提供一个广阔的技术支持。为了部署这些定制的cartridge,你只需要在控制台中或命令行里简单地提供cartridge manifest的URL就行了。OpenShift将会自动下载安装这个cartridge。

 

Cartridges是如何被下载的

任何的OpenShiftCartridge都能够被转换为可下载的cartridge。OpenShift接受一个从你的cartridge manifest中提供的URL(一个包含如何运行你的cartridge的YML格式的文档)和期望manifest中指向cartridge真实内同的URL。只要这个cartridge被安装,这些内容便会下载到你的应用中。

下面给出一个manifest的例子(以Go语言为例):

Name: go

Display-Name: Go1.1

Version:"1.1"

...

这个manifest的资源版本没有提供一个Source-Url属性,这意味着OpenShift不可能下载和安装这个cartridge。为了更正它,我们将会为manifest记录一个指向Git仓库的新版本:

Name: go
Display-Name: Go 1.1
Version: "1.1"
Source-Url: git@github.com:smarterclayton/openshift-go-cart.git
...  

当你通过RHC工具来安装你的cartridge的时候,OpenShift将会识别URL作为一个Git仓库标识。

rhc create-app goapp https://github.com/smarterclayton/openshift-go-cart/blob/master/metadata/manifest.yml

我们将从你的Git仓库下载最新的内容到gear中。

善于观察的读者会发现这个方法的局限——不改变manifest.yml文件我无法对这个Git仓库建立分支和直接工作在副本上。大体上,直接将Source-url写死在文件中是不好的,因为它会阻止你在其他地方不部署你的仓库。另外,你可以使用最近版本的代码,不过会另分支(branches)与标识(tags)使用困难。围绕这个问题,我们已经介绍一对工具,利用OpenShift开放托管平台让你容易地安装和运行资源版本的cartridge。

Cartridge开发工具包(CDK)

开发一个cartridge牵涉到如何去建立一个OpenShift能够访问的cartridge与主机。CDK是一个运行在OpenShift上并在它Git仓库里面存储你的cartridge资源的应用,服务于你的cartridge的建立与版本维护。

你可以在OpenShift Online上创建你自己的CDK,并把Gocartridge的源代码包放入:

rhc create-app mycart http://cdk-claytondev.rhcloud.com --from-code="git://github.com/smarterclayton/openshift-go-cart.git"

这命令将会为CDK下载并安装作为可安装的cartridge最近版本的源代码。这堆源代码将作为一个Go cartridge的分支。一旦你创建了应用,便可以在浏览器上访问:

http://mycart-mydomain.rhcloud.com

你将会看到这个cartridge的提交列表并可以通过在分支之间转换来获得cartridge URL。随便复制一个manifest URL来建立cartridge。你并且可以通过URL把你的应用编程可以下载的cartridge,这将会获取你master分支的最近版本。

更多CDK详情可以看https://github.com/smarterclayton/openshift-cdk-cart

Cartridge映射器

如果你只是想在Github上下载并运行你的cartridge,在OpenShift上有一个简单的应用运行方法,能够获取manifest并自动添加Source-url。这个映射器被放在cartreflect-claytondev.rhcloud.com(墙外)并接受一个Git仓库和项目名字。例如,访问:

http://cartreflect-claytondev.rhcloud.com/github/smarterclayton/openshift-go-cart

你将会见到manifest.yml的内容,外加一个在最后一行的Source-url。映射器会获取你的manifest内容并确定正确的URL,默认为master分支:

Source-Url: https://github.com/smarterclayton/openshift-go-cart/archive/master.zip

你现在能如下直接安装cartridge:

rhc create-app goapp "http://cartreflect-claytondev.rhcloud.com/github/smarterclayton/openshift-go-cart"

如果你想安装一个特定的分支,标识或提交,只需添加commit参数

rhc create-app goapp "http://cartreflect-claytondev.rhcloud.com/github/smarterclayton/openshift-go-cart?commit=d48e5b19333bcc8500cb11aef08eed457da7b9f8"

更多详情看https://github.com/smarterclayton/cartridge-reflector

下载cartridges的限制

为了避免被恶意用户滥用,OpenShift服务队它将下载的manifest设置了限制。你的manifest必须符合以下条件:

l  能够通过http或https从服务器获取

l  小于20K大小

l  获得的内容必须小于2次的重定向

l  下载必须小于10秒

另外,每个应用最多只能有5个可下载的cartridge