成熟的柠檬 · 吉林在小红书上着急求爆改! | ...· 4 月前 · |
飞奔的杯子 · java.lang.NoSuchMethod ...· 5 月前 · |
天涯 · netty系列:聊聊Netty中的超时处理与 ...· 6 月前 · |
卖萌的沙发 · RJ3150 | RuggedJet ...· 7 月前 · |
苦恼的伤疤 · C#、C++、Java、Python选择哪个 ...· 7 月前 · |
Increase visibility into IT operations to detect and resolve technical issues before they impact your business.
Learn More Go to InsightsEngage with our Red Hat Product Security team, access security updates, and ensure your environments are not exposed to any known security vulnerabilities. Product Security Center
Keep your systems secure with Red Hat's specialized responses to security vulnerabilities. View Responses
本指南面向应用程序开发人员,提供设置和配置工作站在 OpenShift Container Platform 云环境中开发和部署应用程序的说明。这包括帮助开发人员的详细说明和示例: 创建新应用程序 监控并配置项目 使用模板生成配置 管理构建,包括构建策略选项和 Webhook 定义部署,包括部署策略 创建和管理路由 创建和配置 secret 集成外部服务,如数据库和 SaaS 端点 使用探测检查应用程序的健康状态
OpenShift Container Platform 专为构建和部署应用程序而设计。根据开发过程中涉及的 OpenShift Container Platform 量,您可以选择: 专注于 OpenShift Container Platform 项目中的开发,使用它从头开始构建应用,然后持续开发和管理其生命周期,或者 使应用程序(如二进制、容器镜像、源代码)已在单独的环境中开发,并将其部署到 OpenShift Container Platform。
您可以直接使用 OpenShift Container Platform 从头开始开始应用程序的开发。在规划此类型的开发过程中请考虑以下步骤:
您的应用程序有什么作用?
将在什么编程语言中开发?
访问 OpenShift Container Platform
OpenShift Container Platform 应该由您自己或您所在机构的管理员安装。
使用您的编辑器或选择的 IDE,创建一个应用程序的基本框架。它应该足以告知 OpenShift Container Platform
是什么应用程序
。
将代码推送到您的 Git 存储库。
Generate
使用
oc new-app
命令
创建基本应用程序
。OpenShift Container Platform 生成构建和部署配置。
开始开发您的应用程序代码。
确保您的应用构建成功。
继续在本地开发和管理您的代码。
将您的代码推送到 Git 存储库。
是否需要额外的配置?更多相关信息,请参阅
开发人员指南
。
您可以通过多种方法验证您的应用程序。您可以将更改推送到应用程序的 Git 存储库,并使用 OpenShift Container Platform 重建并重新部署应用程序。另外,您可以使用
rsync
热部署将代码更改同步到正在运行的 pod。
另一种可能的应用程序开发策略是在本地开发,然后使用 OpenShift Container Platform 部署您完全开发的应用程序。如果计划已有应用程序代码,请使用以下步骤,然后在完成后构建并部署到 OpenShift Container Platform 安装中:
您的应用程序有什么作用?
将在什么编程语言中开发?
使用您的编辑器或您选择的 IDE 开发您的应用程序代码。
本地构建并测试应用程序代码。
将您的代码推送到 Git 存储库。
访问 OpenShift Container Platform
OpenShift Container Platform 应该由您自己或您所在机构的管理员安装。
Generate
使用
oc new-app
命令
创建基本应用程序
。OpenShift Container Platform 生成构建和部署配置。
确保已在以上 Generate 步骤中构建和部署的应用程序在 OpenShift Container Platform 上成功运行。
继续开发应用程序代码,直到您对此结果很满意。
在 OpenShift Container Platform 中重新构建您的应用程序,以接受任何新推送的代码。
是否需要额外的配置?更多相关信息,请参阅
开发人员指南
。
您可以使用 OpenShift CLI 或 Web 控制台,从包括源代码或二进制代码、镜像和/或模板在内的组件创建一个新的 OpenShift Container Platform 应用程序。
您可以使用
new-app
命令从本地或远程 Git 存储库中的源代码创建应用程序。
使用本地目录中的 Git 存储库创建应用程序:
$ oc new-app /path/to/source/code
如果使用本地 Git 存储库,该存储库应具有一个名为
origin
的远程源,指向 OpenShift Container Platform 集群可访问的 URL。如果没有 recognized remote,
new-app
将创建一个
二进制构建
。
使用远程 Git 存储库创建应用程序:
$ oc new-app https://github.com/sclorg/cakephp-ex
使用私有远程 Git 存储库创建应用程序:
$ oc new-app https://github.com/youruser/yourprivaterepo --source-secret=yoursecret
如果使用私有远程 Git 存储库,您可以使用
--source-secret
标志指定一个现有的
source clone secret
,该 secret 将注入到
BuildConfig
中以访问存储库。
您可以通过指定
--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
new-app
命令将创建一个
构建配置
,它本身会从您的源代码中创建一个新的应用程序
镜像
。
new-app
命令通常还会创建用于部署新镜像的
部署配置
,以及为运行您的镜像的部署提供负载均衡访问的
服务
。
OpenShift Container Platform 会自动
检测
是否应使用
Docker
、
Pipeline
或
Source
构建策略
,如果进行
Source
构建,则
检测相应的语言构建器镜像
。
构建策略检测
在创建新应用程序时,如果源存储库的根目录或指定上下文目录中存在
Jenkinsfile
,则 OpenShift Container Platform 会生成
Pipeline
构建策略。否则,如果找到
Dockerfile
,OpenShift Container Platform 会生成
Docker
构建策略
。否则,它会生成
Source
构建策略
。
您可以通过将
--strategy
标志设置为
docker
、
pipeline
或
source
来覆盖构建策略。
$ oc new-app /home/user/code/myapp --strategy=docker
oc
命令要求包含构建源的文件在远程 Git 存储库中可用。对于所有 Source 构建,您必须使用
git remote -v
。
如果使用
Source
构建策略,
new-app
会尝试根据存储库根目录或指定上下文目录中是否存在特定文件来确定要使用的语言构建器:
表 2.1.
new-app
检测的语言
语言 | 文件 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
$ 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 不可用,您可以使用
2.2.2.2. 从镜像创建应用程序
您可以从现有镜像部署应用程序。镜像可以来自 OpenShift Container Platform 服务器中的镜像流、特定 registry 或
Docker Hub registry
中的镜像,或本地 Docker 服务器中的镜像。
$ oc new-app mysql 要使用私有 registry 中的镜像创建应用程序,请指定完整容器镜像规格: $ oc new-app myregistry:5000/example/myimage 2.2.2.3. 从模板创建应用程序您可以通过将 模板名称 指定为参数,从之前存储的模板或模板文件创建应用程序。例如,您可以存储一个 示例应用程序模板 ,并使用它来创建应用程序。 从存储的模板创建应用程序: $ oc create -f examples/sample-app/application-template-stibuild.json $ oc new-app ruby-helloworld-sample
要直接使用本地文件系统中的模板,而不先将它保存到 OpenShift Container Platform 中,请使用
$ oc new-app -f examples/sample-app/application-template-stibuild.json
在基于
模板
创建应用程序时,请使用
$ oc new-app ruby-helloworld-sample \ -p ADMIN_USERNAME=admin -p ADMIN_PASSWORD=mypassword
您可以将参数保存到文件中,然后在实例化模板时通过
$ cat helloworld.params ADMIN_USERNAME=admin ADMIN_PASSWORD=mypassword $ oc new-app ruby-helloworld-sample --param-file=helloworld.params $ cat helloworld.params | oc new-app ruby-helloworld-sample --param-file=- 2.2.2.4. 进一步修改应用程序创建
表 2.2.
2.2.2.4.1. 指定环境变量
从
模板
、
源
或
镜像
生成应用程序时,您可以在运行时使用
$ oc new-app openshift/postgresql-92-centos7 \ -e POSTGRESQL_USER=user \ -e POSTGRESQL_DATABASE=db \ -e POSTGRESQL_PASSWORD=password
这些变量可使用
$ cat postgresql.env POSTGRESQL_USER=user POSTGRESQL_DATABASE=db POSTGRESQL_PASSWORD=password $ oc new-app openshift/postgresql-92-centos7 --env-file=postgresql.env
另外,也可使用
$ cat postgresql.env | oc new-app openshift/postgresql-92-centos7 --env-file=-
如需更多信息,请参阅
管理环境变量
。
在
2.2.2.4.2. 指定构建环境变量
从
模板
、
源
或
镜像
生成应用程序时,您可以在运行时使用
$ oc new-app openshift/ruby-23-centos7 \ --build-env HTTP_PROXY=http://myproxy.net:1337/ \ --build-env GEM_HOME=~/.gem
这些变量可使用
$ cat ruby.env HTTP_PROXY=http://myproxy.net:1337/ GEM_HOME=~/.gem $ oc new-app openshift/ruby-23-centos7 --build-env-file=ruby.env
另外,也可使用
$ cat ruby.env | oc new-app openshift/ruby-23-centos7 --build-env-file=- 2.2.2.4.3. 指定标签
从
源
、
镜像
或
模板生成
应用程序时,您可以使用
$ oc new-app https://github.com/openshift/ruby-hello-world -l name=hello-world 2.2.2.4.4. 查看输出(不创建)
要查看要创建的
$ oc new-app https://github.com/openshift/ruby-hello-world \ -o yaml > myapp.yaml $ vi myapp.yaml $ oc create -f myapp.yaml 2.2.2.4.5. 使用不同名称创建对象
$ oc new-app https://github.com/openshift/ruby-hello-world --name=myapp 2.2.2.4.6. 在不同的项目中创建对象
通常,
$ oc new-app https://github.com/openshift/ruby-hello-world -n myproject 2.2.2.4.7. 创建多个对象
$ oc new-app https://github.com/openshift/ruby-hello-world mysql
注意
如果以独立参数形式指定源代码存储库和构建器镜像,
2.2.2.4.8. 在单个 Pod 中对镜像和源进行分组
$ oc new-app ruby+mysql 将通过源构建的镜像和外部镜像一起部署: $ oc new-app \ ruby~https://github.com/openshift/ruby-hello-world \ mysql \ --group=ruby+mysql 2.2.2.4.9. 搜索镜像、模板和其他输入
要搜索镜像、模板和
$ oc new-app --search php 2.2.3. 使用 Web 控制台创建应用程序
kind: "ImageStream"
apiVersion: "v1"
metadata:
name: "ruby"
creationTimestamp: null
spec:
dockerImageRepository: "registry.redhat.io/openshift3/ruby-20-rhel7"
tags:
name: "2.0"
annotations:
description: "Build and run Ruby 2.0 applications"
iconClass: "icon-ruby"
tags: "builder,ruby" 1
supports: "ruby:2.0,ruby"
version: "2.0"
2.3. 在跨环境中提升应用程序2.3.1. 概述应用程序提升意味着通过各种运行时环境迁移应用程序,通常具有更高程度的成熟度。例如,应用程序可能会在开发环境中启动,然后提升到暂存环境以进一步进行测试,然后才会出现在生产环境中。随着应用中引入的变化,再次更改将在开发中开始,并在 stage 和生产环境中推广。 当今的"应用程序"不仅仅是使用 Java、Perl 和 Python 等编写的源代码。现在,它比静态 Web 内容、集成脚本或应用特定运行时的相关配置更多。它不仅仅是由那些语言特定运行时使用的应用程序特定存档。 在 OpenShift Container Platform 及其 Kubernetes 和 Docker 的组合部分中,额外的应用程序工件包括: 带有大量元数据和相关工具的 容器镜像 。 注入容器的 环境变量 以供应用程序使用。 API 对象 (也称为资源定义);请参阅 OpenShift Container Platform 的 核心概念 ,它: 注入到容器中供应用使用。 OpenShift Container Platform 如何管理容器和 pod。 在 OpenShift Container Platform 中如何推广应用程序,这个主题将: 详细阐述引入到应用程序定义中的这些新工件。 描述您可以为应用程序提升管道分离不同的环境。 讨论用于管理这些新工件的方法和工具。 提供将各种概念、构建、方法和工具应用到应用程序提升的示例。 2.3.2. 应用程序组件2.3.2.1. API 对象对于 OpenShift Container Platform 和 Kubernetes 资源定义(新向应用程序清单引入的项目),这些 API 对象有几个关键设计点,在考虑应用程序提升主题时,需要重新查看这些 API 对象。 首先,作为在 OpenShift Container Platform 文档中突出显示的,每个 API 对象可以通过 JSON 或 YAML 来表达,从而可以通过传统的源控制和脚本管理这些资源定义。 另外,API 对象也被设计为设计为存在部分对象,用于指定系统所需状态,其他部分则反映了系统的状态或当前状态。这可以被认为为输入和输出。以 JSON 或 YAML 格式表示的输入部分,特别是作为源控制管理(SCM)工件自然而符合的项目。 请记住,API 对象的输入或规格部分可以全面静态或动态,该变量在实例化时 可以通过模板处理替换 。 与 API 对象相关的结果是,其表达式用作 JSON 或 YAML 文件,您可以将应用程序的配置视为代码。 可以说,几乎所有 API 对象都可能会被视为您的机构的应用程序工件。下面是与部署和管理应用程序最常见相关的对象:
2.3.2.2. 镜像如前所述,容器镜像现在是应用程序的工件。事实上,新应用工件、镜像和管理是应用程序提升的关键部分。在某些情况下,镜像可能会封装整个应用,应用提升流程则专门管理镜像。 镜像通常不在 SCM 系统中管理,因为应用二进制文件不在以前的系统中。但是,就像使用二进制、可安装工件和相应的存储库(如 RPM、RPM 存储库或 Nexus)一样,与 SCM 相同的语义一样。因此,与 SCM 类似的镜像管理构建和术语发生: 镜像 registry == SCM 服务器 镜像存储库 == SCM 存储库 当镜像位于 registry 中时,需要确保 registry 中存在适当的镜像,这些镜像可从需要运行该镜像代表的应用程序的环境中访问。 应用程序定义通常抽象到镜像流的引用,而不是直接引用镜像。这意味着镜像流将是组成应用程序组件的另一个 API 对象。有关镜像流的详情,请参阅 核心概念 。 2.3.2.3. 概述现在,在 OpenShift Container Platform 内应用程序推广应用程序工件、镜像和 API 对象的应用程序工件已包括在 OpenShift Container Platform 中,您在提升管道的不同阶段运行应用程序的 行为 是接下来讨论的。 2.3.3. 部署环境在这种情况下,部署环境描述了在 CI/CD 管道的特定阶段运行应用程序的不同空间。典型环境包括 开发 、 测试 、 stage 和 生产 ,例如:环境边界可以以不同的方式定义,例如: 通过单一项目中的标签和唯一命名。 通过集群中的不同项目。 通过不同的集群。 它取决于您的组织是否全部利用了所有三个产品。 2.3.3.1. 注意事项通常,您会在部署环境结构时考虑以下 heuristics: 共享您的提升流程的不同阶段的资源量允许 隔离您的提升流程的不同阶段需要多少 如何集中位置(或地理位置分散的)促销流程的不同阶段 另外,一些重要的提醒有关 OpenShift Container Platform 集群和项目与镜像 registry 的关系: 同一集群中的多个项目可以访问同一镜像流。 多个集群可以访问同一外部 registry。 只有 OpenShift Container Platform 内部镜像 registry 通过路由公开时,集群才可以共享 registry。 2.3.3.2. 概述定义了部署环境后,可以实施管道中的下线阶段的提升流程。构造这些提升流实施的方法和工具是下一个讨论点。 2.3.4. 方法和工具
从根本上而言,应用程序提升是一种将上述应用程序组件从一个环境移至另一个环境的过程。以下小节概述了可用于手动移动各种组件的工具,然后再讨论用于自动化应用程序提升的完整解决方案。
构建和部署过程中都提供了很多插入点。它们在
2.3.4.1. 管理 API 对象
在单一环境中定义的资源将导出为 JSON 或 YAML 文件内容,以准备将其导入到新环境中。因此,当您通过应用程序管道提升 API 对象时,作为 JSON 或 YAML 的表达式作为工作单元。
2.3.4.1.1. 导出 API 对象状态
API 对象规格应该被
2.3.4.1.2. 导入 API 对象状态2.3.4.1.2.1. 初始创建
当应用程序第一次出现在新环境中时,使用 JSON 或 YAML 来表达 API 对象规格,并运行
2.3.4.1.2.2. 迭代修改
最初建立各种暂存环境后,在提升周期开始并且应用程序从阶段移到 stage 后,对应用程序的更新会包括修改作为应用程序一部分的 API 对象。这些 API 对象中的更改是可激活的,因为它们代表 OpenShift Container Platform 系统的配置。这种变化的动机包括:
衡量暂存环境之间的环境差异。
验证应用支持的各种场景。
API 对象传输到下一阶段的环境可以通过
2.3.4.2. 管理镜像和镜像流OpenShift Container Platform 中的镜像也通过一系列 API 对象进行管理。但是,管理镜像是应用程序提升的核心,讨论这些工具和 API 对象最直接关联镜像保证了单独讨论。存在手动和自动化的形式,可帮助您管理镜像提升(通过管道传播镜像)。 2.3.4.2.1. 移动镜像
注意
有关管理镜像的所有详细信息,请参阅 管理镜像 主题。 2.3.4.2.1.1. 当暂存环境共享 registry 时
当暂存环境共享相同的 OpenShift Container Platform registry 时,例如它们都在同一个 OpenShift Container Platform 集群中,则有两个操作,代表在应用程序提升管道的不同 stage 间
移动
镜像:
首先,与
2.3.4.2.1.2. 当 Staging 环境使用不同的 registry 时
当 staging 环境使用不同的 OpenShift Container Platform registry 时,会进行更高级的使用。
访问内部 registry
会详细介绍这些步骤,但总体来说您可以:
使用
2.3.4.2.2. 部署
无论是更改底层应用程序镜像还是配置应用程序的 API 对象,部署通常需要提取升级的更改。如果应用程序的镜像改变(例如,由于
2.3.4.2.3. 使用 Jenkins 自动化促销流
在了解了应用程序的组件后,在提升环境以及移动组件所需的步骤时需要在环境间进行移动后,您可以开始编配和自动化工作流。OpenShift Container Platform 提供了一个 Jenkins 镜像和插件来解决此问题。
使用镜像
(image)中详细介绍了 OpenShift Container Platform Jenkins 镜像,其中包括有助于 Jenkins 集成 Jenkins 和 Jenkins Pipelines 的 OpenShift Container Platform 以插件集。另外,
Pipeline 构建策略
有助于集成 Jenkins Pipelines 和 OpenShift Container Platform。所有这些侧重于启用 CI/CD 的各个方面,包括应用程序提升。
在手动执行应用程序提升步骤外,应该考虑 OpenShift Container Platform 提供的与 Jenkins 相关的功能:
OpenShift Container Platform 提供了一个 Jenkins 镜像,它被定制来大大简化 OpenShift Container Platform 集群中的部署。
Jenkins 镜像包含 OpenShift Pipeline 插件,它为实施提升工作流提供构建块。这些构建块包括 Jenkins 任务触发作为镜像流更改,以及在这些作业中触发构建和部署。
采用 OpenShift Container Platform Jenkins Pipeline 构建策略的
2.3.4.2.4. Promotion Caveats2.3.4.2.4.1. API 对象参考
API 对象可以引用其他对象。这种情况的一个常见用途是具有引用镜像流的
2.3.4.2.4.2. 镜像 Registry 参考镜像流指向镜像存储库,以指明它们所代表的镜像源。当镜像流从一个环境移到另一个环境时,务必要考虑 registry 和存储库引用是否还应更改: 如果使用不同的镜像 registry 来在测试环境和生产环境之间断言隔离。 如果使用不同的镜像存储库来分隔测试和生产就绪的镜像。 如果其中任何一个情况是,在从源环境复制到目标环境时,必须修改镜像流,以便其解析为正确的镜像。这还执行 Scenarios 和 Examples 中描述的步骤,将镜像从一个 registry 和 repository 复制到另一个。 2.3.4.3. 概述此时定义了以下内容: 组成已部署应用程序的新应用程序工件。 将应用程序提升活动与 OpenShift Container Platform 提供的工具和概念关联。 OpenShift Container Platform 和 CI/CD 管道引擎 Jenkins 之间的集成。 将应用程序提升流的示例放在 OpenShift Container Platform 中,是本主题的最后一步。 2.3.5. 场景和示例在 Docker、Kubernetes 和 OpenShift Container Platform 生态系统中定义了新的应用程序工件组件,本节介绍了如何使用 OpenShift Container Platform 提供的机制和工具在环境之间提升这些组件。 镜像是组成应用程序的组件的主要工件。采用该内部环境并将其扩展至应用程序提升、核心、基本应用程序提升模式是映像提升,其中工作单元是镜像。大多数应用程序促销方案通过提升管道管理和传播镜像。 仅仅通过管道管理和传播镜像的简单场景。随着推广方案的范围广泛,其他应用程序工件(特别是 API 对象)都包含在通过管道进行管理和传播的项目清单中。 本主题介绍了一些有关使用手动和自动化方法来提升镜像以及 API 对象的特定示例。但请注意以下设置应用程序提升管道的环境。 2.3.5.1. 为提升设置
完成应用程序初始修订的开发后,下一步是打包应用程序的内容,以便您可以转移到提升管道的后续暂存环境。
首先,将您查看的所有 API 对象作为传输进行分组,并为它们应用通用
labels: promotion-group: <application_name>
如前文所述,
$ oc login <source_environment>
$ oc project <source_project>
$ oc get -o yaml --export dc,is,svc,route,secret,sa -l promotion-group=<application_name> > export.yaml
$ oc login <target_environment>
$ oc new-project <target_project> 1
$ oc create -f export.yaml
2.3.5.2. 可重复提升流程
在为您的管道进行另一个暂存环境的初始设置后,通过提升管道验证应用程序的每个迭代可以启动一组可重复的步骤。每次源环境中的镜像或 API 对象改变时会执行这些基本步骤:
移动更新的镜像 → Move updated API 对象 → Apply 环境特定自定义
通常,第一步是将与应用程序关联的镜像的任何更新提升到管道中的下一阶段。如上面所述,提升镜像的关键差异化是 OpenShift Container Platform registry 是否在暂存环境间共享。
如果 registry 共享,则只利用
$ oc tag <project_for_stage_N>/<imagestream_name_for_stage_N>:<tag_for_stage_N> <project_for_stage_N+1>/<imagestream_name_for_stage_N+1>:<tag_for_stage_N+1> 如果没有共享 registry,您可以在登录到源和目标 registry 时利用每个提升管道 registry 的访问令牌,相应地拉取、标记和推送应用程序镜像: 登录到源环境 registry: $ docker login -u <username> -e <any_email_address> -p <token_value> <src_env_registry_ip>:<port> 拉取应用程序的镜像: $ docker pull <src_env_registry_ip>:<port>/<namespace>/<image name>:<tag> 将应用程序的镜像标记到目标 registry 的位置,根据需要更新命名空间、名称和标签,以符合目标暂存环境: $ docker tag <src_env_registry_ip>:<port>/<namespace>/<image name>:<tag> <dest_env_registry_ip>:<port>/<namespace>/<image name>:<tag> 登录到目标暂存环境 registry: $ docker login -u <username> -e <any_email_address> -p <token_value> <dest_env_registry_ip>:<port> 将镜像推送到其目的地: $ docker push <dest_env_registry_ip>:<port>/<namespace>/<image name>:<tag>
提示
要从外部 registry 自动导入镜像的新版本,
$ oc login <source_environment> $ oc project <source_project> $ oc get -o yaml --export dc,is,svc,route,secret,sa -l promotion-group=<application_name> > export.yaml $ oc login <target_environment> $ oc <target_project>
更新它们,而不是简单地在新环境中创建资源。您可以按照几种不同的方式实现:
更保守的方法是使用
$ oc apply -f export.yaml --dry-run=true
如果满意,则实际运行
$ oc apply -f export.yaml
$ oc replace -f export.yaml
与
$ oc set env <api_object_type>/<api_object_ID> <env_var_name>=<env_var_value>
oc rollout
命令或上方
Deployments
部分中讨论的其他机制之一来触发更新的应用程序的新部署。
2.3.5.3. 使用 Jenkins 可重复提升过程
用于 OpenShift Container Platform 的
Jenkins Docker 镜像
中定义的
OpenShift Sample
作业是一个在 Jenkins 构造中 OpenShift Container Platform 中的镜像提升示例。本示例的设置位于
OpenShift Origin 源存储库中
。
这个示例包括:
使用
Jenkins 作为 CI/CD 引擎
。
将
OpenShift Pipeline 插件用于 Jenkins
。此插件提供了
第 3 章 身份验证3.1. Web 控制台身份验证从位于 <master_public_addr>:8443 的浏览器访问 Web 控制台时 ,您会自动重定向到登录页面。 查看可用于访问 Web 控制台的 浏览器版本和操作系统 。 您可以在此页面中提供您的登录凭证,以获取令牌来发出 API 调用。登录后,您可以使用 Web 控制台 导航到项目。 3.2. CLI 身份验证
您可以在命令行中使用 CLI 命令
$ oc login
命令的交互式流可帮助您使用提供的凭证建立到 OpenShift Container Platform 服务器的会话。如果没有提供成功登录到 OpenShift Container Platform 服务器所需的信息,命令会根据需要提示用户输入。
配置
会自动保存,然后用于后续命令。
$ oc login [-u=<username>] \ [-p=<password>] \ [-s=<server>] \ [-n=<project>] \ [--certificate-authority=</path/to/file.crt>|--insecure-skip-tls-verify] 下表描述了这些通用选项: 表 3.1. 常见 CLI 配置选项
|