$ oc new-app /<path to source code>
您可以使用AWS上的Red Hat OpenShift服务CLI从包含源代码或二进制代码、镜像和模板的组件创建AWS上的Red Hat OpenShift服务应用。
new-app
创建的对象集取决于作为输入传递的工件:源代码仓库、镜像或模板。
使用new-app
命令,您可以从本地或远程Git仓库中的源代码创建应用。
new-app
命令创建一个构建配置,该配置本身会从您的源代码创建一个新的应用镜像。new-app
命令通常还会创建一个Deployment
对象来部署新镜像,以及一个服务来提供对运行您镜像的部署的负载均衡访问。
AWS上的Red Hat OpenShift服务会自动检测应该使用流水线、源代码或Docker构建策略,在源代码构建的情况下,会检测合适的语言构建器镜像。
要从本地目录中的Git仓库创建应用:
$ oc new-app /<path to source code>
如果您使用本地Git仓库,则该仓库必须有一个名为 |
要从远程Git仓库创建应用:
$ oc new-app https://github.com/sclorg/cakephp-ex
要从私有的远程Git仓库创建应用:
$ oc new-app https://github.com/youruser/yourprivaterepo --source-secret=yoursecret
如果您使用的是私有的远程Git仓库,可以使用 |
您可以通过指定--context-dir
标志来使用源代码仓库的子目录。要从远程Git仓库和上下文子目录创建应用:
$ oc new-app https://github.com/sclorg/s2i-ruby-container.git \
--context-dir=2.0/test/puma-test-app
此外,在指定远程URL时,您可以通过在URL末尾添加#<branch_name>
来指定要使用的Git分支。
$ oc new-app https://github.com/openshift/ruby-hello-world.git#beta4
AWS上的Red Hat OpenShift服务会通过检测某些文件来自动确定要使用的构建策略。
在创建新应用时,如果源代码仓库的根目录或指定的上下文目录中存在Jenkinsfile,AWS上的Red Hat OpenShift服务将生成一个流水线构建策略。
|
在创建新应用时,如果源代码仓库的根目录或指定的上下文目录中存在Dockerfile,AWS上的Red Hat OpenShift服务将生成一个Docker构建策略。
如果未检测到Jenkinsfile和Dockerfile,AWS上的Red Hat OpenShift服务将生成一个源代码构建策略。
通过将--strategy
标志设置为docker
、pipeline
或source
来覆盖自动检测到的构建策略。
$ oc new-app /home/user/code/myapp --strategy=docker
|
如果您使用源代码构建策略,new-app
将尝试通过仓库的根目录或指定的上下文目录中某些文件的存在来确定要使用的语言构建器。
语言 | 文件 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
检测到语言后,new-app
会在AWS上的Red Hat OpenShift服务服务器上搜索具有与检测到的语言匹配的supports
批注的镜像流标签,或与检测到的语言名称匹配的镜像流。如果找不到匹配项,new-app
会在Docker Hub注册表中搜索基于名称与检测到的语言匹配的镜像。
您可以通过指定镜像(镜像流或容器规范)和带有~
分隔符的仓库来覆盖特定源代码仓库使用的构建器镜像。请注意,如果这样做,则不会执行构建策略检测和语言检测。
例如,要将myproject/my-ruby
镜像流与远程仓库中的源代码一起使用:
$ oc new-app myproject/my-ruby~https://github.com/openshift/ruby-hello-world.git
要将openshift/ruby-20-centos7:latest
容器镜像流与本地仓库中的源代码一起使用:
$ oc new-app openshift/ruby-20-centos7:latest~/home/user/code/my-ruby-app
语言检测需要本地安装Git客户端,以便可以克隆和检查您的仓库。如果Git不可用,您可以通过使用
|
您可以从现有镜像部署应用。镜像可以来自AWS上的Red Hat OpenShift服务服务器中的镜像流、特定注册表中的镜像或本地Docker服务器中的镜像。
new-app
命令尝试确定传递给它的参数中指定的镜像类型。但是,您可以使用 --docker-image
参数显式告诉 new-app
镜像是容器镜像,或者使用 -i|--image-stream
参数指定镜像流。
如果您指定来自本地 Docker 仓库的镜像,则必须确保 Red Hat OpenShift Service on AWS 集群节点上也可用相同的镜像。 |
您可以通过指定模板名称作为参数,从先前存储的模板或模板文件创建应用程序。例如,您可以存储一个示例应用程序模板并使用它来创建应用程序。
将应用程序模板上传到您当前项目的模板库。以下示例将应用程序模板从名为 examples/sample-app/application-template-stibuild.json
的文件上传。
$ oc create -f examples/sample-app/application-template-stibuild.json
然后通过引用应用程序模板创建一个新的应用程序。在这个例子中,模板名称是 ruby-helloworld-sample
$ oc new-app ruby-helloworld-sample
要通过引用本地文件系统中的模板文件来创建新的应用程序,而无需先将其存储在 Red Hat OpenShift Service on AWS 中,请使用 -f|--file
参数。例如
$ oc new-app -f examples/sample-app/application-template-stibuild.json
当基于模板创建应用程序时,使用 -p|--param
参数设置模板定义的参数值
$ oc new-app ruby-helloworld-sample \
-p ADMIN_USERNAME=admin -p ADMIN_PASSWORD=mypassword
您可以将参数存储在一个文件中,然后在实例化模板时使用 --param-file
使用该文件。如果您想从标准输入读取参数,请使用 --param-file=-
。以下是一个名为 helloworld.params
的示例文件
ADMIN_USERNAME=admin
ADMIN_PASSWORD=mypassword
在实例化模板时引用文件中的参数
$ oc new-app ruby-helloworld-sample --param-file=helloworld.params
new-app
命令生成 Red Hat OpenShift Service on AWS 对象,这些对象构建、部署和运行创建的应用程序。通常,这些对象在当前项目中创建,并分配从输入源存储库或输入镜像派生的名称。但是,使用 new-app
,您可以修改此行为。
对象 | 描述 |
---|---|
|
为命令行中指定的每个源存储库创建一个 |
|
对于 |
|
创建 |
|
|
其他 |
根据模板,在实例化模板时可以生成其他对象。 |
从模板、源或镜像生成应用程序时,可以使用 -e|--env
参数在运行时将环境变量传递给应用程序容器
$ oc new-app openshift/postgresql-92-centos7 \
-e POSTGRESQL_USER=user \
-e POSTGRESQL_DATABASE=db \
-e POSTGRESQL_PASSWORD=password
也可以使用 --env-file
参数从文件中读取变量。以下是一个名为 postgresql.env
的示例文件
POSTGRESQL_USER=user
POSTGRESQL_DATABASE=db
POSTGRESQL_PASSWORD=password
从文件中读取变量
$ oc new-app openshift/postgresql-92-centos7 --env-file=postgresql.env
此外,可以通过使用 --env-file=-
从标准输入提供环境变量。
$ cat postgresql.env | oc new-app openshift/postgresql-92-centos7 --env-file=-
作为 |
从模板、源或镜像生成应用程序时,可以使用 --build-env
参数在运行时将环境变量传递给构建容器
$ oc new-app openshift/ruby-23-centos7 \
--build-env HTTP_PROXY=http://myproxy.net:1337/ \
--build-env GEM_HOME=~/.gem
也可以使用 --build-env-file
参数从文件中读取变量。以下是一个名为 ruby.env
的示例文件
HTTP_PROXY=http://myproxy.net:1337/
GEM_HOME=~/.gem
从文件中读取变量
$ oc new-app openshift/ruby-23-centos7 --build-env-file=ruby.env
此外,可以通过使用 --build-env-file=-
从标准输入提供环境变量。
$ cat ruby.env | oc new-app openshift/ruby-23-centos7 --build-env-file=-
从源代码、镜像或模板生成应用程序时,可以使用 -l|--label
参数向创建的对象添加标签。标签使您可以轻松地集体选择、配置和删除与应用程序关联的对象。
$ oc new-app https://github.com/openshift/ruby-hello-world -l name=hello-world
要查看运行 new-app
命令的预演,可以使用带有 yaml
或 json
值的 -o|--output
参数。然后,您可以使用输出预览创建的对象,或将其重定向到您可以编辑的文件。满意后,您可以使用 oc create
创建 Red Hat OpenShift Service on AWS 对象。
要将 new-app
工件输出到文件,请运行以下命令
$ oc new-app https://github.com/openshift/ruby-hello-world \
-o yaml > myapp.yaml
编辑文件
$ vi myapp.yaml
通过引用文件创建一个新的应用程序
$ oc create -f myapp.yaml
new-app
创建的对象通常以用于生成它们的源存储库或镜像命名。您可以通过向命令添加 --name
标志来设置生成的对象的名称
$ oc new-app https://github.com/openshift/ruby-hello-world --name=myapp
通常情况下,new-app
会在当前项目中创建对象。但是,您可以使用 -n|--namespace
参数在不同的项目中创建对象
$ oc new-app https://github.com/openshift/ruby-hello-world -n myproject
new-app
命令允许通过向 new-app
指定多个参数来创建多个应用程序。命令行中指定的标签适用于单个命令创建的所有对象。环境变量适用于从源代码或镜像创建的所有组件。
从源代码仓库和 Docker Hub 镜像创建应用程序
$ oc new-app https://github.com/openshift/ruby-hello-world mysql
如果源代码仓库和构建器镜像作为单独的参数指定, |
new-app
命令允许将多个镜像一起部署到单个 Pod 中。要指定要一起分组的镜像,请使用 +
分隔符。--group
命令行参数也可用于指定应一起分组的镜像。要将从源代码仓库构建的镜像与其他镜像分组,请在组中指定其构建器镜像。
$ oc new-app ruby+mysql
将从源代码构建的镜像和外部镜像一起部署
$ oc new-app \
ruby~https://github.com/openshift/ruby-hello-world \
mysql \
--group=ruby+mysql
要搜索 oc new-app
命令的镜像、模板和其他输入,请添加 --search
和 --list
标志。例如,要查找所有包含 PHP 的镜像或模板
$ oc new-app --search php
要在使用 oc new-app
时设置导入模式,请添加 --import-mode
标志。此标志可以附加 Legacy
或 PreserveOriginal
,分别为用户提供使用单个子清单或所有清单创建镜像流的选项。
$ oc new-app --image=registry.redhat.io/ubi8/httpd-24:latest --import-mode=Legacy --name=test
$ oc new-app --image=registry.redhat.io/ubi8/httpd-24:latest --import-mode=PreserveOriginal --name=test