OpenShiftContainerPlatform4.3,OpenShift

编辑 2
ContainerPlatform4.3 应用程序 在OpenShiftContainerPlatform中创建和管理应用程序 LastUpdated:2020-11-30 OpenShiftContainerPlatform4.3应用程序 在OpenShiftContainerPlatform中创建和管理应用程序 法律通告 Copyright©2020RedHat,Inc. ThetextofandillustrationsinthisdocumentarelicensedbyRedHatunderaCreativeCommonsAttribution–ShareAlike3.0Unportedlicense("CC-BY-SA").AnexplanationofCC-BY-SAisavailableat/licenses/by-sa/3.0/.InordancewithCC-BY-SA,ifyoudistributethisdocumentoranadaptationofit,youmustprovidetheURLfortheoriginalversion. RedHat,asthelicensorofthisdocument,waivestherighttoenforce,andagreesnottoassert,Section4dofCC-BY-SAtothefullestextentpermittedbyapplicablelaw. RedHat,RedHatEnterpriseLinux,theShadowmanlogo,theRedHatlogo,JBoss,OpenShift,Fedora,theInfinitylogo,andRHCEaretrademarksofRedHat,Inc.,registeredintheUnitedStatesandothercountries. Linux®istheregisteredtrademarkofLinusTorvaldsintheUnitedStatesandothercountries. Java®isaregisteredtrademarkofOracleand/oritsaffiliates. XFS®isatrademarkofSiliconGraphicsInternationalCorp.oritssubsidiariesintheUnitedStatesand/orothercountries. MySQL®isaregisteredtrademarkofMySQLABintheUnitedStates,theEuropeanUnionandothercountries. Node.js®isanofficialtrademarkofJoyent.RedHatisnotformallyrelatedtoorendorsedbytheofficialJoyentNode.jsopensourcemercialproject. TheOpenStack®WordMarkandOpenStacklogoareeitherregisteredtrademarks/servicemarksortrademarks/servicemarksoftheOpenStackFoundation,intheUnitedStatesandothercountriesandareusedwiththeOpenStackFoundation'spermission.Wearenotaffiliatedwith,endorsedorsponsoredbytheOpenStackFoundation,orthemunity. Allothertrademarksarethepropertyoftheirrespectiveowners. 摘要 本文档说明如何通过不同方式创建和管理在OpenShiftContainerPlatform上运行的用户置备应用程序实例。
这包括处理项目以及使用OpenServiceBrokerAPI置备应用程序。
目录 目录 第...1.章...项..目....................................................................................................3............. 1.1.处理项目
3 1.2.以其他用户身份创建项目
7 1.3.配置项目创建
8 第...2..章..应..用...程..序..生..命..周..期..管...理.................................................................................1.3............. 2.1.使用DEVELOPER视角创建应用程序 13 2.2.从安装的OPERATOR创建应用程序 15 2.3.使用CLI创建应用程序 18 2.4.使用TOPOLOGY视图查看应用程序组成情况 25 2.5.取消应用程序 33 第...3..章..服...务..代..理..............................................................................................3.4............. 3.1.安装服务目录 34 3.2.安装TEMPLATESERVICEBROKER 35 3.3.置备模板应用程序 37 3.4.卸载TEMPLATESERVICEBROKER 37 3.5.安装OPENSHIFTANSIBLEBROKER 39 3.6.配置OPENSHIFTANSIBLEBROKER 43 3.7.置备服务捆绑包 46 3.8.卸载OPENSHIFTANSIBLEBROKER 47 第...4..章..部...署..................................................................................................4.9............. 4.1.了解DEPLOYMENT和DEPLOYMENTCONFIG 49 4.2.管理部署过程 54 4.3.使用DEPLOYMENTCONFIG策略 60 4.4.使用基于路由的部署策略 69 第...5..章..配..额...................................................................................................7.6............. 5.1.项目的资源配额 76 5.2.跨越多个项目的资源配额 88 第...6..章..监...控..应..用..程..序..的..健...康..状..态...............................................................................9..1............ 6.1.了解健康检查 91 6.2.配置健康检查 92 第...7..章..闲..置...应..用..程..序..........................................................................................9.6............. 7.1.闲置应用程序 96 7.2.取消闲置应用程序 96 第...8..章..修...剪..对..象..以..重..新..声...明..资..源...............................................................................9.8............. 8.1.基本修剪操作 98 8.2.修剪组 98 8.3.修剪部署 98 8.4.修剪构建 99 8.5.修剪镜像 100 8.6.硬修剪REGISTRY 106 8.7.运行CRON任务 109
1 OpenShiftContainerPlatform4.3应用程序
2 第1章项目 第1章项目 1.1.处理项目 通过项目,一个社区用户可以在与其他社区隔离的前提下组织和管理其内容。
注意以openshift-和kube-开始的项目是默认项目。
这些项目托管作为Pod运行的主要组件和其他基础架构组件。
因此,OpenShiftContainerPlatform不允许使用ocnew-project命令创建以openshift-或kube-开始的项目。
集群管理员可以使用ocadmnew-project命令创建这些项目。
1.1.1.使用Web控制台创建项目 如果集群管理员允许,您可以创建新项目。
注意OpenShiftContainerPlatform认为以openshift-和kube-开头的项目是重要的。
因此,OpenShiftContainerPlatform不允许使用web控制台创建以openshift-开头的项目。
流程
1.浏览至Home→Project。

2.点击CreateProject。

3.输入项目详情。

4.点击Create。
1.1.2.在Web控制台中使用Developer视角创建项目 您可以使用OpenShiftContainerPlatformWeb控制台中的Developer视角在集群中创建项目。
注意OpenShiftContainerPlatform认为以openshift-和kube-开头的项目是重要的。
因此,OpenShiftContainerPlatform不允许使用Developer视角创建以openshift-或kube-开头的项目。
集群管理员可以使用ocadmnew-project命令创建这些项目。
先决条件在OpenShiftContainerPlatform中,确保您有适当的角色和权限来创建项目、应用程序和其他工作负载。
流程您可以使用Developer视角创建项目,如下所示:
1.点Project下拉菜单来查看所有可用的项目。
选择CreateProject。

3 OpenShiftContainerPlatform4.3应用程序
2.在CreateProject对话框的Name项中输入一个唯一的名称,如myproject。

3.可选:为项目添加DisplayName和Description详情。

4.点击Create。

5.使用左侧导航面板导航到Project视图,在仪表板中查看您的项目。

6.可选: 在屏幕顶部的Project下拉菜单中选择allprojects列出集群中的所有项目。
使用Details选项卡查看项目详情。
如果您有足够的项目权限,可以使用Projectess选项卡为项目提供或撤销administrator、edit和view权限。
1.1.3.使用CLI创建项目 如果集群管理员允许,您可以创建新项目。
注意OpenShiftContainerPlatform认为以openshift-和kube-开头的项目是重要的。
因此,OpenShiftContainerPlatform不允许使用ocnew-project命令创建以openshift-或kube-开始的项目。
集群管理员可以使用ocadmnew-project命令创建这些项目。
流程
1.运行: $ocnew-project\--description=""--display-name="" 例如:
4 第1章项目 $ocnew-projecthello-openshift\--description="Thisisanexampleproject"\--display-name="HelloOpenShift" 注意系统管理员可能会限制允许创建的项目数量。
达到限值后,需要删除现有项目才能创建新项目。
1.1.4.使用Web控制台查看项目流程
1.浏览至Home→Project。

2.选择要查看的项目。
在此页面上,点击Workloads按钮来查看项目中的工作负载。
1.1.5.使用CLI查看项目查看项目时,只能看到根据授权策略您有权访问的项目。
流程
1.要查看项目列表,请运行:$ocgetprojects2.您可以从当前项目更改到其他项目,以进行CLI操作。
然后,所有操控项目范围内容的后续操作都会使用指定的项目:$ocproject 1.1.6.使用Developer视角为您的项目提供访问权限 您可以使用Developer视角中的Projectess视图来授予或撤销对项目的访问权限。
流程将用户添加到项目,并为用户提供Admin、View或Edit访问权限:
1.在Developer视角中,导航到Advanced→Projectess页面。

2.在Projectess页面中,点Addess以添加新行。

5 OpenShiftContainerPlatform4.3应用程序
3.输入用户名,点Selectarole下拉列表,然后选择适当的角色。

4.点Save。
您还可以使用: Selectarole下拉列表修改现有用户的访问权限。
Removeess图标以完全删除现有用户对项目的访问权限。
注意基于角色的高级访问控制是在Administrator视角的Roles和RolesBinding视图中管理的。
1.1.7.添加到项目流程
1.在Web控制台导航菜单顶部的上下文选择器中,选择Developer。

2.点击+Add3.在页面顶部,选择要添加到的项目的名称。

4.点击添加到项目的方法,然后按照工作流操作。
1.1.8.使用Web控制台检查项目状态流程
1.浏览至Home→Project。

2.选择一个项目来查看其状态。
1.1.9.使用CLI检查项目状态流程
1.运行:$ocstatus
6 第1章项目 此命令提供当前项目的高级概述,以及它的组件和关系。
1.1.10.使用web控制台删除项目 您可以通过OpenShiftContainerPlatformWeb控制台删除一个项目。
注意如果您没有删除项目的权限,DeleteProject选项将无法使用。
流程
1.浏览至Home→Project。

2.找到您要从项目列表中删除的项目。

3.在项目列表的最右侧,从Options菜单中选择DeleteProject。

4.打开DeleteProject界面时,在字段中输入要删除的项目名称。

5.点击Delete。
1.1.11.使用CLI删除项目 当您删除项目时,服务器会将项目状态从Active更新为Terminating。
在最终移除项目前,服务器会清除处于Terminating状态的项目中的所有内容。
项目处于Terminating状态时,您无法将新的内容添加到这个项目中。
可以从CLI或Web控制台删除项目。
流程
1.运行:$ocdeleteproject 1.2.以其他用户身份创建项目 通过身份模拟功能,您可以其他用户的身份创建项目。
1.2.1.API身份模拟(impersonation) 您可以配置对OpenShiftContainerPlatformAPI的请求,使其表现为像是源自于另一用户。
如需更多信息,请参阅es文档中的用户身份模拟。
1.2.2.在创建项目时模拟用户 您可在创建项目请求时模拟其他用户。
由于system:authenticated:oauth是唯一能够创建项目请求的bootstrap组,因此您必须模拟这个组。
流程代表其他用户创建项目请求:
7 OpenShiftContainerPlatform4.3应用程序 $ocnew-project--as=\--as-group=system:authenticated--as-group=system:authenticated:oauth 1.3.配置项目创建 在OpenShiftContainerPlatform中,项目用于对相关对象进行分组和隔离。
使用Web控制台或ocnew-project命令请求创建新项目时,系统会根据可自定义的模板来使用OpenShiftContainerPlatform中的端点置备项目。
作为集群管理员,您可以允许开发人员和服务帐户创建或自助置备其自己的项目,并且配置具体的方式。
1.3.1.关于项目创建 OpenShiftContainerPlatformAPI服务器根据项目模板自动置备新的项目,模板通过集群的项目配置资源中的projectRequestTemplate参数来标识。
如果没有定义该参数,API服务器会创建一个默认模板,该模板将以请求的名称创建项目,并将请求用户分配至该项目的admin角色。
提交项目请求时,API会替换模板中的以下参数:表1.1.默认项目模板参数 参数 描述 PROJECT_NAMEPROJECT_DISPLAYNAMEPROJECT_DESCRIPTIONPROJECT_ADMIN_USERPROJECT_REQUESTING_USER 项目的名称。
必需。
项目的显示名称。
可以为空。
项目的描述。
可以为空。
管理用户的用户名。
请求用户的用户名。
API访问权限将授予具有self-provisioner角色和self-provisioners集群角色绑定的开发人员。
默认情况下,所有通过身份验证的开发人员都可获得此角色。
1.3.2.为新项目修改模板 作为集群管理员,您可以修改默认项目模板,以便使用自定义要求创建新项目。
创建自己的自定义项目模板: 流程
1.以具有cluster-admin特权的用户身份登录。

2.生成默认项目模板:$ocadmcreate-bootstrap-project-template-oyaml>template.yaml
8 第1章项目
3.使用文本编辑器,通过添加对象或修改现有对象来修改生成的template.yaml文件。

4.项目模板必须创建在openshift-config命名空间中。
加载修改后的模板: $occreate-ftemplate.yaml-nopenshift-config
5.使用Web控制台或CLI编辑项目配置资源。
使用Web控制台:i.导航至Administration→ClusterSettings页面。
ii.点击GlobalConfiguration,查看所有配置资源。
iii.找到Project的条目,并点击EditYAML。
使用CLI:i.编辑project.config.openshift.io/cluster资源: $oceditproject.config.openshift.io/cluster
6.更新spec部分,使其包含projectRequestTemplate和name参数,再设置您上传的项目模板的名称。
默认名称为project-request。
带有自定义项目模板的项目配置资源 apiVersion:config.openshift.io/v1kind:Projectmetadata: ...spec: projectRequestTemplate:name:
7.保存更改后,创建一个新项目来验证是否成功应用了您的更改。
1.3.3.禁用项目自助置备 您可以防止经过身份验证的用户组自助置备新项目。
流程
1.以具有cluster-admin特权的用户身份登录。

2.运行以下命令,以查看self-provisioners集群角色绑定用法: $ocdescribeclusterrolebinding.rbacself-provisioners Name:self-provisionersLabels:Annotations:es.io/autoupdate=trueRole: Kind:ClusterRoleName:self-provisioner
9 OpenShiftContainerPlatform4.3应用程序 Subjects:KindNameNamespace----------------Groupsystem:authenticated:oauth 检查self-provisioners部分中的主题。

3.从system:authenticated:oauth组中移除self-provisioner集群角色。
如果self-provisioners集群角色绑定仅将self-provisioner角色绑定至system:authenticated:oauth组,请运行以下命令: $ocpatchclusterrolebinding.rbacself-provisioners-p'{"subjects":null}' 如果self-provisioners集群角色将self-provisioner角色绑定到system:authenticated:oauth组以外的多个用户、组或服务帐户,请运行以下命令: $ocadmpolicy\remove-cluster-role-from-groupself-provisioner\system:authenticated:oauth
4.编辑self-provisioners集群角色绑定,以防止自动更新角色。
自动更新会使集群角色重置为默认状态。
使用CLI更新角色绑定:i.运行以下命令: $oceditclusterrolebinding.rbacself-provisioners ii.在显示的角色绑定中,将es.io/autoupdate参数值设置为false,如下例所示: apiVersion:authorization.openshift.io/v1kind:ClusterRoleBindingmetadata: annotations:es.io/autoupdate:"false" ... 使用单个命令更新角色绑定: $ocpatchclusterrolebinding.rbacself-provisioners-p'{"metadata":{"annotations":{"es.io/autoupdate":"false"}}}'
5.以通过身份验证的用户身份登陆,验证是否无法再自助置备项目: $ocnew-projecttest Errorfromserver(Forbidden):YoumaynotrequestanewprojectviathisAPI. 您可以对此项目请求消息进行自定义,以提供特定于您的组织的更多有用说明。
1.3.4.自定义项目请求消息 10 第1章项目 当无法自助置备项目的开发人员或服务帐户使用Web控制台或CLI提出项目创建请求时,默认返回以下错误消息: YoumaynotrequestanewprojectviathisAPI. 集群管理员可以自定义此消息。
您可以对这个消息进行自定义,以提供特定于您的组织的关于如何请求新项目的信息。
例如: Torequestaproject,contactyoursystemadministratoratprojectname@. Torequestanewproject,fillouttheprojectrequestformlocatedat/openshift-project-request. 自定义项目请求消息: 流程
1.使用Web控制台或CLI编辑项目配置资源。
使用Web控制台:i.导航至Administration→ClusterSettings页面。
ii.点击GlobalConfiguration,查看所有配置资源。
iii.找到Project的条目,并点击EditYAML。
使用CLI:i.以具有cluster-admin特权的用户身份登录。
ii.编辑project.config.openshift.io/cluster资源: $oceditproject.config.openshift.io/cluster
2.更新spec部分,使其包含projectRequestMessage参数,并将值设为您的自定义消息: 带有自定义项目请求消息的项目配置资源 apiVersion:config.openshift.io/v1kind:Projectmetadata: ...spec: projectRequestMessage: 例如: apiVersion:config.openshift.io/v1kind:Projectmetadata: ...spec: projectRequestMessage:Torequestaproject,contactyoursystemadministratoratprojectname@. 11 OpenShiftContainerPlatform4.3应用程序
3.保存更改后,请尝试用无法自助置备项目的开发人员或服务帐户创建一个新项目,以验证是否成功应用了您的更改。
12 第2章应用程序生命周期管理 第2章应用程序生命周期管理 2.1.使用DEVELOPER视角创建应用程序 Web控制台中的Developer视角为您提供了下列选项,以便您从Add视图中创建应用程序和相关服务,并将它们部署到OpenShiftContainerPlatform: FromGit:使用这个选项时,可从Git存储库中导入现有代码库,在OpenShiftContainerPlatform上创建、构建和部署应用程序。
ContainerImage:使用镜像流或registry中的现有镜像,将其部署到OpenShiftContainerPlatform中。
FromCatalog:浏览DeveloperCatalog来选择所需的应用程序、服务或Source-to-Image构建器,并将其添加到您的项目中。
FromDockerfile:从Git存储库导入Dockerfile,以构建和部署应用程序。
YAML:使用编辑器添加YAML或JSON定义,以创建和修改资源。
Database:查看DeveloperCatalog,以选择所需的数据库服务并将其添加到应用程序中。
注意只有集群中安装了OpenShiftServerlessOperator时,才会在Developer中显示Severless选项。
2.1.1.先决条件要使用Developer视角创建应用程序,请确认以下几项:已登录Web控制台。
处于Developer视角。
在项目中拥有适当的角色和权限,可在OpenShiftContainerPlatform中创建应用程序和其他工作负载。
除以上所要求外,要创建无服务器应用程序,请确保:已安装OpenShiftServerlessOperator。
已创建了knative-serving命名空间,并在knative-serving命名空间中创建了一个 13 OpenShiftContainerPlatform4.3应用程序 已创建了knative-serving命名空间,并在knative-serving命名空间中创建了一个KnativeServing资源。
2.1.2.从Git导入代码库来创建应用程序 以下流程逐步指导您使用Developer视角中的ImportfromGit选项来创建应用程序。
使用GitHub中的现有代码库,在OpenShiftContainerPlatform中创建、构建和部署应用程序,如下所示: 流程
1.在Add视图中,点击FromGit以查看Importfromgit表单。

2.在Git部分中,输入您要用来创建应用程序的代码库的Git存储库URL。
例如,输入此示例Node.js应用程序的URL/nodejs-ex。
这个URL随后会被验证。

3.可选:点ShowAdvancedGitOptions来添加详情,例如:gitReference,指向特定的分支、标签或提交中的代码,以用于构建应用程序。
ContextDir,指定要用来构建应用程序的应用程序源代码的子目录。
SourceSecret,创建一个具有用来从私有存储库拉取源代码的凭证的SecretName。

4.在Builder部分,当验证URL后,会检测到一个适当的构建器镜像,由一个星号指示,并自动选择。
对于/nodejs-exGitURL,默认选择Node.js构建器镜像。
如果需要,您可以使用BuilderImageVersion下拉列表来更改版本。

5.在General部分中:a.在Application字段中输入应用程序组别的唯一名称,例如myapp。
确保应用程序名称在命名空间中具有唯一性。
b.系统会基于Git存储库的URL自动填充Name字段,以标识为此应用程序创建的资源。
注意资源名称必须在命名空间中具有唯一性。
如果遇到错误,请修改资源名称。

6.在Resources部分,选择:Deployment,以纯es风格方式创建应用程序。
DeploymentConfig,创建OpenShift风格的应用程序。
KnativeService,创建微服务。
注意只有集群中安装了ServerlessOperator时,Importfromgit表单中才会显示KnativeService部分。
如需进一步了解详细信息,请参阅有关安装OpenShiftServerless的文档。

7.AdvancedOptions部分中默认选中Createaroutetotheapplication,以便您可以使用公开的 14 第2章应用程序生命周期管理
7.AdvancedOptions部分中默认选中Createaroutetotheapplication,以便您可以使用公开的URL访问应用程序。
如果不想通过公共路由公开您的应用程序,可以清除此复选框。

8.可选:可以使用以下高级选项进一步自定义应用程序:路由点击Routing链接,以执行以下操作:自定义路由的主机名。
指定路由器监控的路径。
从下拉列表中选择流量的目标端口。
选中SecureRoute复选框来保护您的路由。
从相应的下拉列表中,选择所需的TLS终止类型,并设置非安全流量的策略。
对于无服务器应用程序,KnativeService管理以上所有路由选项。
但在需要时,您可以自定义流量的目标端口。
如果不指定目标端口,则使用默认端口8080。
构建和部署配置点击BuildConfiguration和DeploymentConfiguration链接,以查看对应的配置选项。
其中一些选项默认选中;您可以通过添加必要的触发器和环境变量来进一步自定义。
对于无服务器应用程序,DeploymentConfiguration选项不会显示,因为Knative配置资源为您的部署维护所需的状态,而不是由DeploymentConfig来维护。
扩展点击Scaling链接,以定义您要初始部署的应用程序的Pod数或实例数。
对于无服务器应用程序,可以: autoscaler可设置的Pod数设定上限和下限。
如果不指定下限,则默认为零。
定义给定时间上每个应用程序实例所需的并发请求数的软限值。
它是自动扩展的推荐配置。
如果不指定,它将使用集群配置中指定的值。
定义给定时间上每个应用程序实例的并发请求数的硬限值。
这在修订模板中进行配置。
如果不指定,则默认为集群配置中指定的值。
资源限值点击ResourceLimit链接,设置容器在运行时保证或允许使用的CPU和Memory资源的数量。
标签点击Labels链接,为您的应用程序添加自定义标签。

9.点击Create,以创建应用程序并在Topology视图中查看其构建状态。
2.2.从安装的OPERATOR创建应用程序 Operators是打包、部署和管理es应用程序的方法。
您可以使用集群管理员安装的Operator在OpenShiftContainerPlatform上创建应用程序。
本指南为开发人员介绍如何使用OpenShiftContainerPlatformWeb控制台从已安装的Operator中创建应用程序。
其他资源 15 OpenShiftContainerPlatform4.3应用程序参阅Operators指南来进一步了解Operators如何工作以及如何将OperatorLifecycleManager集成到OpenShiftContainerPlatform中。
2.2.1.使用Operator创建etcd集群 本流程介绍了如何通过由OperatorLifecycleManager(OLM)管理的etcdOperator来新建一个etcd集群。
先决条件 OpenShiftContainerPlatform4.3集群访问权限管理员已在集群范围内安装了etcdOperator。
流程
1.针对此流程在OpenShiftContainerPlatformWeb控制台中新建一个项目。
本示例所用项目名为my-etcd。

2.导航至Operators→InstalledOperators页面。
由集群管理员安装到集群且可供使用的Operator将以ClusterServiceVersions(CSV)列表形式显示在此处。
CSV用于启动和管理由Operator提供的软件。
提示使用以下命令从CLI获得该列表: $ocgetcsv3.进入InstalledOperators页面,点击Copied,然后点击etcdOperator查看更多详情和可用操 作: 图2.1.etcdOperator概述 16 图2.1.etcdOperator概述 第2章应用程序生命周期管理 正如ProvidedAPI下所示,该Operator提供了三类新资源,包括一种用于etcdCluster的资源(EtcdCluster资源)。
这些对象的工作方式类似于内置的原生es对象(如Deployments或ReplicaSets),但包含特定于管理etcd的逻辑。

4.新建etcd集群:a.在etcdClusterAPI方框中,点击CreateNew。
b.在下一页上,您可对EtcdCluster对象的最小起始模板进行任何修改,比如集群大小。
现 在,点击Create即可完成。
点击后即可触发Operator启动Pod、Services和新etcd集群的其他组件。

5.单击Resources选项卡,可以看到您的项目现在包含很多由Operator自动创建和配置的资源。
图2.2.etcdOperator资源 17 OpenShiftContainerPlatform4.3应用程序图2.2.etcdOperator资源 验证已创建了支持您从项目中的其他Pod访问数据库的es服务。

6.给定项目中具有edit角色的所有用户均可创建、管理和删除应用程序实例(本例中为etcd集 群),这些实例由已在项目中创建的Operator以自助方式管理,就像云服务一样。
如果要赋予其他用户这一权利,项目管理员可使用以下命令添加角色: $ocpolicyadd-role-to-useredit-n现在您有了一个etcd集群,当Pod运行不畅,或在集群中的节点之间迁移时,该集群将对故障做出反应并重新平衡数据。
最重要的是,具有适当访问权限的集群管理员或开发人员现在可以轻松地通过其应用程序使用数据库。
2.3.使用CLI创建应用程序 您可以使用OpenShiftContainerPlatformCLI,从包含源代码或二进制代码、镜像和模板的组件创建OpenShiftContainerPlatform应用程序。
由new-app创建的对象集合取决于作为输入传递的工件,如输入源存储库、镜像或模板。
2.3.1.从源代码创建应用程序 您可以使用new-app命令,从本地或远程Git存储库中的源代码创建应用程序。
new-app命令会创建一个构建配置,其本身会从您的源代码中创建一个新的应用程序镜像。
new-app命令通常还会创建用来部署新镜像的部署配置,以及为运行您的镜像的部署提供负载均衡访问的服务。
OpenShiftContainerPlatform会自动检测要使用Pipeline还是Source构建策略,如果进行Source构 18 第2章应用程序生命周期管理 OpenShiftContainerPlatform会自动检测要使用Pipeline还是Source构建策略,如果进行Source构建,则还检测适当的语言构建器镜像。
2.3.1.1.本地从本地目录中的Git存储库创建应用程序: $ocnew-app/ 注意如果使用本地Git存储库,该存储库必须具有一个名为origin的远程源,指向可由OpenShiftContainerPlatform集群访问的URL。
如果没有可识别的远程源,运行newapp命令将创建一个二进制构建。
2.3.1.2.远程从远程Git存储库创建新应用程序: $ocnew-app/cakephp-ex从私有远程Git存储库创建应用程序: $ocnew-app/youruser/yourprivaterepo--source-secret=yoursecret 注意如果使用私有远程Git存储库,您可以使用--source-secret标志指定一个现有源克隆secret,此secret将注入到BuildConfig中以访问存储库。
您可以通过指定--context-dir标志来使用源代码存储库的子目录。
从远程Git存储库和上下文子目录创建应用程序: $ocnew-app/s2i-ruby-container.git\--context-dir=2.0/test/puma-test-app 另外,在指定远程URL时,您可以通过在URL末尾附加#来指定要使用的Git分支:$ocnew-app/openshift/ruby-hello-world.git#beta4 2.3.1.3.构建策略检测在创建新应用程序时,如果源存储库的根目录或指定上下文目录中存在Jenkinsfile,则OpenShiftContainerPlatform会生成Pipeline构建策略。
否则,它会生成Source构建策略。
通过将--strategy标志设为pipeline或source,即可覆盖构建策略。
$ocnew-app/home/user/code/myapp--strategy=docker 注意 19 OpenShiftContainerPlatform4.3应用程序 注意oc命令要求包含构建源的文件在远程Git存储库中可用。
对于所有Source构建,您必须使用gitremote-v。
2.3.1.4.语言检测如果使用Source构建策略,new-app会尝试根据存储库根目录或指定上下文目录中是否存在特定的文件,确定要使用的语言构建器: 表2.1.new-app检测的语言 语言 文件 project.json、*.csproj jee pom.xml nodejs app.json、package.json perl cpanfile、index.pl php composer.json、index.php python requirements.txt、setup.py ruby Gemfile、Rakefile、config.ru scala build.sbt golang Godeps、main.go 检测了语言后,new-app
会在OpenShiftContainerPlatform服务器上搜索具有与所检测语言匹配的suppors注解的镜像流标签,或与所检测语言的名称匹配的镜像流。
如果找不到匹配项,new-app会在DockerHubregistry中搜索名称上与所检测语言匹配的镜像。
您可以通过指定镜像(镜像流或容器规格)和存储库(以~作为分隔符),来覆盖构建器用于特定源存储库的镜像。
请注意,如果进行这一操作,就不会执行构建策略检测和语言检测。
例如,使用myproject/my-ruby镜像流以及位于远程存储库中的源: $ocnew-appmyproject/my-ruby~/openshift/ruby-hello-world.git 使用`openshift/ruby-20-centos7:latest`容器镜像流以及本地存储库中的源: $ocnew-appopenshift/ruby-20-centos7:latest~/home/user/code/my-ruby-app 注意 20 第2章应用程序生命周期管理 注意语言检测需要在本地安装Git客户端,以便克隆并检查您的存储库。
如果Git不可用,您可以使用语法指定要与存储库搭配使用的构建器镜像,以避免语言检测步骤。
调用-i要求new-app尝试克隆repository,从而能判断其工件类型;如果Git不可用,此操作会失败。
调用-i--code要求new-app克隆repository,从而能判断image应用作源代码的构建器,还是另外部署(使用数据库镜像时)。
2.3.2.从镜像创建应用程序 您可以从现有镜像部署应用程序。
镜像可以来自OpenShiftContainerPlatform服务器中的镜像流、特定registry中的镜像或本地Docker服务器中的镜像。
new-app命令尝试确定传递给它的参数中指定的镜像类型。
但是,您可以使用--docker-image或-i|-image参数明确告知new-app镜像是容器镜像或镜像流。
注意如果指定本地Docker存储库中的镜像,必须确保同一镜像可供OpenShiftContainerPlatform节点使用。
2.3.2.1.DockerHubMySQL镜像从DockerhubMySQL镜像创建应用程序,例如: $ocnew-appmysql 2.3.2.2.私有registry中的镜像使用私有registry中的镜像创建应用程序时,请指定完整容器镜像规格: $ocnew-appmyregistry:5000/example/myimage 2.3.2.3.现有镜像流和可选镜像流标签从现有镜像流和可选镜像流标签创建应用程序: $ocnew-appmy-stream:v1 2.3.3.从模板创建应用程序 您可以使用之前存储的模板或模板文件创建应用程序,方法是将模板名称指定为参数。
例如,您可以存储一个示例应用程序模板,并使用它来创建应用程序。
从存储的模板创建应用程序,例如: $occreate-fexamples/sample-app/application-template-stibuild.json$ocnew-appruby-helloworld-sample 21 OpenShiftContainerPlatform4.3应用程序要直接使用本地文件系统中的模板,而不先将它保存到OpenShiftContainerPlatform中,请使用-f|-file参数。
例如:$ocnew-app-fexamples/sample-app/application-template-stibuild.json 2.3.3.1.模板参数 在基于模板创建应用程序时,请使用-p|--param参数来设置模板定义的参数值: $ocnew-appruby-helloworld-sample\-pADMIN_USERNAME=admin-pADMIN_PASSWORD=mypassword 您可以将参数保存到文件中,然后在实例化模板时通过--param-file来使用该文件。
如果要从标准输入中读取参数,请使用--param-file=-: $cathelloworld.paramsADMIN_USERNAME=adminADMIN_PASSWORD=mypassword$ocnew-appruby-helloworld-sample--param-file=helloworld.params$cathelloworld.params|ocnew-appruby-helloworld-sample--param-file=- 2.3.4.修改应用程序创建 new-app命令生成用于构建、部署和运行所创建应用程序的OpenShiftContainerPlatform对象。
通常情况下,这些对象是在当前项目中创建的,并分配有从输入源存储库或输入镜像中获得的名称。
但是,您可以使用new-app修改这种行为。
表2.2.new-app输出对象 对象 描述 BuildConfig 为命令行中指定的每个源存储库创建一个BuildConfig。
BuildConfig指定要使用的策略、源位置和构建输出位置。
ImageStreams 对于BuildConfig,通常创建两个ImageStreams。
其一代表输入镜像。
进行Source构建时,这是构建器镜像。
进行Docker构建时,这是FROM镜像。
其二代表输出镜像。
如果容器镜像指定为new-app的输入,那么也会为该镜像创建镜像流。
DeploymentConfig 创建一个DeploymentConfig来部署构建的输出或指定的镜像。
对于生成的DeploymentConfig中包含的容器,new-app命令为容器中指定的所有Docker卷创建emptyDir卷。
Service new-app命令会尝试检测输入镜像中公开的端口。
它使用编号最小的已公开端口来生成公开该端口的服务。
若要公开其他端口,只需在new-app完成后使用ocexpose命令生成其他服务。
其他 根据模板,可在实例化模板时生成其他对象。
2.3.4.1.指定环境变量从模板、源或镜像生成应用程序时,您可以在运行时使用-e|--env参数将环境变量传递给应用程序容器: 22 第2章应用程序生命周期管理 $ocnew-appopenshift/postgresql-92-centos7\-ePOSTGRESQL_USER=user\-ePOSTGRESQL_DATABASE=db\-ePOSTGRESQL_PASSWORD=password 这些变量可使用--env-file参数从文件中读取: $catpostgresql.envPOSTGRESQL_USER=userPOSTGRESQL_DATABASE=dbPOSTGRESQL_PASSWORD=password$ocnew-appopenshift/postgresql-92-centos7--env-file=postgresql.env 另外,也可使用--env-file=-在标准输入上给定环境变量: $catpostgresql.env|ocnew-appopenshift/postgresql-92-centos7--env-file=- 注意在new-app处理过程中创建的任何BuildConfig对象,都不能使用通过-e|--env或-env-file参数传递的环境变量进行更新。
2.3.4.2.指定构建环境变量从模板、源或镜像生成应用程序时,您可以在运行时使用--build-env参数将环境变量传递给构建容器: $ocnew-appopenshift/ruby-23-centos7\--build-envHTTP_PROXY=:1337/\--build-envGEM_HOME=~/.gem 这些变量可使用--build-env-file参数从文件中读取: $catruby.envHTTP_PROXY=:1337/GEM_HOME=~/.gem$ocnew-appopenshift/ruby-23-centos7--build-env-file=ruby.env 另外,也可使用--build-env-file=-在标准输入上给定环境变量: $catruby.env|ocnew-appopenshift/ruby-23-centos7--build-env-file=- 2.3.4.3.指定标签从源、镜像或模板生成应用程序时,您可以使用-l|--label参数为创建的对象添加标签。
借助标签,您可以轻松地集中选择、配置和删除与应用程序关联的对象。
$ocnew-app/openshift/ruby-hello-world-lname=hello-world 2.3.4.4.查看输出但不创建 要查看运行new-app命令的空运行,您可以使用-o|--output参数及yaml或json值。
然后,您可以使 23 OpenShiftContainerPlatform4.3应用程序 要查看运行new-app命令的空运行,您可以使用-o|--output参数及yaml或json值。
然后,您可以使用输出结果预览创建的对象,或将其重定向到可以编辑的文件。
满意之后,您可以使用occreate创建OpenShiftContainerPlatform对象。
将new-app工件输出到文件中,编辑工件,再创建工件: $ocnew-app/openshift/ruby-hello-world\-oyaml>myapp.yaml $vimyapp.yaml$occreate-fmyapp.yaml 2.3.4.5.使用其他名称创建对象new-app创建的对象通常命名自用于生成它们的源存储库或镜像。
您可以通过在命令中添加--name标志来设置生成的对象名称: $ocnew-app/openshift/ruby-hello-world--name=myapp 2.3.4.6.在另一项目中创建对象通常,new-app会在当前项目中创建对象。
不过,您可以使用-n|--namespace参数在另一项目中创建对象: $ocnew-app/openshift/ruby-hello-world-nmyproject 2.3.4.7.创建多个对象new-app命令允许创建多个应用程序,为new-app指定多个参数便可实现。
命令行中指定的标签将应用到单一命令创建的所有对象。
环境变量应用到从源或镜像创建的所有组件。
从源存储库和DockerHub镜像创建应用程序: $ocnew-app/openshift/ruby-hello-worldmysql 注意如果以独立参数形式指定源代码存储库和构建器镜像,new-app会将构建器镜像用作源代码存储库的构建器。
如果这不是您的用意,请使用~分隔符为源指定所需的构建器镜像。
2.3.4.8.在单个Pod中对镜像和源进行分组new-app命令允许在一个Pod中一起部署多个镜像。
要指定哪些镜像要分组在一起,请使用+分隔符。
也可使用--group命令行参数来指定应分组在一起的镜像。
要将源存储库中构建的镜像与其他镜像一起分组,请在组中指定其构建器镜像: $ocnew-appruby+mysql 将通过源构建的镜像和外部镜像一起部署: $ocnew-app\ruby~/openshift/ruby-hello-world\mysql\ 24 --group=ruby+mysql 第2章应用程序生命周期管理 2.3.4.9.搜索镜像、模板和其他输入要搜索镜像、模板和ocnew-app命令的其他输入,使用--search和--list。
例如,查找包含PHP的所有镜像或模板: $ocnew-app--searchphp 2.4.使用TOPOLOGY视图查看应用程序组成情况 Web控制台的Developer视角中有一个Topology视图,它以可视化方式展示项目中的所有应用程序、它们的构建状态,以及关联的组件和服务。
2.4.1.先决条件 要在Topology视图中查看应用程序并与之交互,请确保: 已登录Web控制台。
处于Developer视角。
在项目中拥有适当的角色和权限,可在OpenShiftContainerPlatform中创建应用程序和其他工作负载。
您已使用Developer视角在OpenShiftContainerPlatform上创建并部署了应用程序。

2.4.2.查看应用程序拓扑 您可以使用Developer视角中的左侧导航面板进入Topology视图。
创建应用程序后,您会自动定向到Topology视图,从中可查看应用程序Pod状态,快速访问公共URL上的应用程序,访问源代码以进行修改,以及查看上一次构建的状态。
您可以缩放视图来查看特定应用程序的更多详情。
无服务器应用程序显示有Knative符号( )。
注意 无服务器应用程序需要一些时间才能加载并显示在Topology视图中。
创建无服务器应用程序时,首先会创建一个服务资源,然后创建一个修订。
之后,进行部署并将其显示在Topology视图中。
如果它是唯一的工作负载,可能会重定向到Add页面。
部署了修订后,无服务器应用程序就会显示在Topology视图中。
Pod的状态或阶段由不同的颜色和工具提示来表示:Running(),NotReady( Failed(),Pending(),eeded(的更多信息,请参阅es文档。
),Terminating( ),orUnknown( ),Warning(),).如需有关Pod状态 创建应用程序并部署镜像后,其状态会显示为Pending。
构建应用程序后,它会显示为Running。
25 OpenShiftContainerPlatform4.3应用程序 应用程序资源名称附有代表不同类型资源对象的指示符,如下所示:DC:DeploymentConfigsD:DeploymentSS:StatefulSetDS:Daemonset 2.4.3.与应用程序和组件交互 Web控制台的Developer视角中的Topology视图提供了如下可与应用程序和组件交互的选项:点OpenURL()查看通过公共URL上路由公开的应用程序。
点击EditSourcecode可访问您的源代码并进行修改。
注意只有使用FromGit、FromCatalog和FromDockerfile选项创建了应用程序时,此功能才可用。
如果在集群中安装了EclipseCheOperator,则会创建一个Che工作区(),并定向到工作区编辑源代码。
如果没有安装,您将定向到托管您的源代码的Git存储库()。
光标悬停在Pod左下方图标上,可查看最新构建的名称及其状态。
应用程序构建的状态表示为New(),Pending(),Running(),Completed()、Failed()和Canceled()。
使用屏幕右上角列出的Shortcuts菜单来浏览Topology视图中的组件。
使用ListView图标查看所有应用程序的列表,并使用TopologyView图标切回到Topology视图。
26 第2章应用程序生命周期管理 2.4.4.扩展应用程序Pod以及检查构建和路由 Topology视图在Overview面板中提供所部署组件的详情。
您可以使用Overview和Resources选项卡来缩放应用程序Pod,以及检查构建状态、服务和路由等,如下所示: 点击组件节点,以查看右侧的Overview面板。
使用Overview选项卡可以:使用向上和向下箭头缩放Pod,手动增加或减少应用程序的实例数。
对于无服务器应用程序,Pod数在空闲时会自动缩减为零,而且能根据频道流量扩展。
检查应用程序的Labels、Annotations和Status。
点击Resources选项卡可以:查看所有Pod列表,查看其状态,访问日志,还能点击Pod来查看Pod详情。
查看构建及其状态,访问日志,并在需要时启动新的构建。
查看组件所使用的服务和路由。
对于无服务器应用程序,Resources选项卡提供用于该组件的版本、路由和配置的有关信息。
2.4.5.对应用程序中的多个组件进行分组 您可以使用Add页面在项目中添加多个组件或服务,还可使用Topology页面对应用程序组中的应用程序和资源进行分组。
以下流程将MongoDB数据库服务添加到具有Node.js组件的现有应用程序中。
先决条件确保您已使用Developer视角在OpenShiftContainerPlatform上创建并部署了Node.js应用程序。
流程
1.在您的项目中创建并部署MongoDB服务,如下所示:a.在Developer视角中,导航到Add视图,再选择Database选项来查看DeveloperCatalog,其包含的多个选项可作为组件或服务添加到应用程序中。
b.点击MongoDB选项以查看该服务的详情。
c.点击InstantiateTemplate查看使用MongoDB服务的详情自动填充的模板,然后点击Create来创建服务。

2.在左侧导航面板中,点击Topology以查看项目中部署的MongoDB服务。

3.要将MongoDB服务添加到现有应用程序组中,请选择mongodbPod并将其拖到应用程序中;MongoDB服务会添加到现有应用程序组中。

4.拖动组件并将其添加到应用程序组中时,会自动将所需的标签添加到组件。
点击MongoDB服务节点,可看到标签es.io/part-of=myapp已添加到Overview面板中的Labels部分。
27 OpenShiftContainerPlatform4.3应用程序 另外,您还可以在应用程序中添加组件,如下所示:
1.要将MongoDB服务添加到应用程序中,请点击mongodbPod以查看右侧的Overview面板。

2.点击面板右上角的Actions下拉菜单,再选择EditApplicationGrouping。

3.在EditApplicationGrouping对话框中,点击SelectanApplication下拉列表,再选择适当的应用程序组。

4.点击Save以查看添加到应用程序组中的MongoDB服务。
要从应用程序组中删除组件,您可以选择组件并使用Shift+拖动操作将组件从应用程序组中拖出。
2.4.6.在应用程序内和应用程序间连接组件 除了对一个应用程序中的多个组件进行分组外,还可以使用Topology视图来相互连接组件。
您可以使用绑定连接器或视觉连接器来连接组件。
只有当目标节点是Operator支持的服务时,才可以在组件之间建立绑定连接。
为了表示这种情况,当您将箭头拖到这样的目标节点上时,会出现Createabindingconnector工具提示。
当应用程序使用绑定连接器连接到服务时,会创建一个ServiceBindingRequest。
然后,ServiceBindingOperator控制器会使用一个中间的Secret将所需的绑定数据注入应用程序Deployment中作为环境变量。
请求成功后,会重新部署应用程序以在连接的组件间建立交互。
视觉连接器只在组件之间建立视觉连接,描述连接意图。
没有建立组件之间的交互。
如果目标节点不是一个Operator支持的服务,当您将箭头拖到目标节点上时,将会显示Createavisualconnector工具提示。
2.4.6.1.在组件之间创建视觉连接您可以使用可视连接器来描述连接应用程序组件的意图。
28 第2章应用程序生命周期管理此流程介绍了在MongoDB服务与Node.js应用程序间创建可视连接的示例。
先决条件 确保您已使用Developer视角创建并部署了Node.js应用程序。
确保已使用Developer视角创建并部署了MongoDB服务。
流程
1.光标悬停到MongoDB服务上,节点上出现悬浮的箭头。

2.点击箭头并将它拖向Node.js组件,使它与MongoDB服务连接。

3.点击MongoDB服务以查看Overview面板。
在Annotations部分,点击编辑图标,即可看到 Key=app.openshift.io/connects-to和Value=nodejs-ex注解已添加到该服务。
29 OpenShiftContainerPlatform4.3应用程序 同样,您可以创建其他应用程序和组件,并在它们之间建立连接。
2.4.6.2.在组件之间创建绑定连接重要 30 第2章应用程序生命周期管理 重要 服务绑定只是一个技术预览功能。
红帽产品服务等级协议(SLA)不支持技术预览功能,且可能无法完成。
红帽不推荐在生产环境中使用它们。
这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的详情,请参阅/support/offerings/techpreview/。
注意 目前,只有几个特定的Operator(如etcd和PostgresSQLDatabase)的Operator服务实例可以绑定。
您可以与Operator支持的组件建立绑定连接。
此流程介绍了在PostgreSQL数据库服务和Node.js应用程序间创建绑定连接的示例。
要创建与PostgreSQLDatabaseOperator支持的服务的绑定连接,需要首先使用后端的OperatorSource将红帽提供的PostgreSQLDatabaseOperator添加到OperatorHub,然后安装Operator。
先决条件 确保您已使用Developer视角创建并部署了Node.js应用程序。
确保已从OperatorHub安装ServiceBindingOperator。
流程
1.创建一个后端的OperatorSource将红帽提供的PostgresSQLOperator添加到OperatorHub。
提供支持的OperatorSource会在secret、ConfigMap、状态和spec属性中公开绑定信息。
a.在Add视图中,点击YAML选项查看ImportYAML屏幕。
b.添加以下YAML文件以应用OperatorSource: apiVersion:/v1kind:OperatorSourcemetadata:name:db-operatorsnamespace:openshift-marketplacespec:type:appregistryendpoint:rregistryNamespace:pmacik c.点击Create在集群中创建OperatorSource。

2.安装红帽提供的PostgreSQLDatabaseOperator:a.在控制台的Administrator视角中,进入Operators→OperatorHub。
b.在Database类别中,选择PostgreSQLDatabaseOperator并安装它。

3.为应用程序创建数据库(DB)实例:a.切换到Developer视角,并确保您处于适当的项目中。
31 OpenShiftContainerPlatform4.3应用程序 b.在Add视图中,点击YAML选项查看ImportYAML屏幕。
c.在编辑器中添加服务实例YAML,并点击Create部署该服务。
服务YAML将如以下示例所 示:apiVersion:postgresql.baiju.dev/v1alpha1kind:Databasemetadata:name:db-demonamespace:test-projectspec:image:docker.io/postgresimageName:postgresdbName:db-demo DB实例现在部署在Topology视图中。

4.在Topology视图中,将鼠标悬停在Node.js组件上可看到节点上悬浮的箭头。

5.点击箭头并拖向db-demo-postgresql服务,以便与Node.js应用程序进行绑定连接。
一个 ServiceBindingRequest被创建,ServiceBindingOperator控制器会将DB连接信息注入应用程序Deployment中作为环境变量。
请求成功后,会重新部署应用程序并建立连接。
2.4.7.用于Topology视图的标签和注解 Topology使用下列标签和注解:节点中显示的图标 节点中的图标是通过使用app.openshift.io/runtime标签(随后是es.io/name标签)查找匹配图标来定义的。
这种匹配是通过预定义的图标集合来完成的。
到源代码编辑器或源的链接app.openshift.io/vcs-uri注解用于创建源代码编辑器的链接。
节点连接器app.openshift.io/connects-to注解用于连接节点。
应用程序分组es.io/part-of=标签用于对应用程序、服务和组件进行分组。
如需了解OpenShiftContainerPlatform应用程序必须使用的标签和注解,请参阅OpenShift应用程序的 32 第2章应用程序生命周期管理如需了解OpenShiftContainerPlatform应用程序必须使用的标签和注解,请参阅OpenShift应用程序的标签和注解指南。
2.5.取消应用程序 您可以删除项目中创建的应用程序。
2.5.1.使用Developer视角删除应用程序 您可以使用Developer视角中的Topology视图删除应用程序及其所有关联组件:
1.点击您要删除的应用程序,即可看到包含应用程序资源详情的侧面板。

2.点击面板右上角显示的Actions下拉菜单,然后选择DeleteApplication即可看到确认对话框。

3.输入应用程序的名称,并点Delete将其删除。
您还可以在要删除的应用程序上点鼠标右键,并点DeleteApplication删除它。
33 OpenShiftContainerPlatform4.3应用程序 第3章服务代理 3.1.安装服务目录 重要OpenShiftContainerPlatform4中已弃用服务目录。
OperatorFramework和OperatorLifecycleManager(OLM)提供了等效和更好的功能。
3.1.1.关于服务目录 在开发基于微服务的应用程序以在云原生平台中运行时,可以通过许多方式置备不同的资源并共享其协调、凭证和配置,具体取决于服务供应商和平台。
为了给开发人员提供更加顺畅的体验,OpenShiftContainerPlatform包含服务目录(servicecatalog),这是es的OpenServiceBrokerAPI(OSBAPI)实施。
用户可以将部署在OpenShiftContainerPlatform中的应用程序与广泛的服务代理连接。
服务目录允许集群管理员使用单一API规格集成多个平台。
OpenShiftContainerPlatformWeb控制台显示服务目录中由服务代理提供的集群服务类,让用户能够发现并实例化服务以用于其应用程序。
因此,服务用户可从使用不同供应商的不同类型的服务简易性和一致性中受益,而服务供应商则可得益于通过一个集成点来访问多个平台。
默认情况下,OpenShiftContainerPlatform4中不安装服务目录。
3.1.2.安装服务目录 如果计划使用OpenShiftAnsibleBroker或TemplateServiceBroker中的任何服务,您必须完成以下步骤来安装服务目录。
OpenShiftContainerPlatform中默认为服务目录的API服务器和控制器管理器创建自定义资源,但最初的managementState为Removed。
要安装服务目录,必须将这些资源的managementState更改为Managed。
流程
1.启用服务目录API服务器。
a.使用以下命令来编辑服务目录API服务器资源。
$oceditservicecatalogapiservers b.在spec下,将managementState字段设置为Managed: spec:logLevel:NormalmanagementState:Managed c.保存文件以应用更改。
Operator会安装服务目录API服务器组件。
自OpenShiftContainerPlatform4起,此组件安装到openshift-service-catalog-apiserver命名空间中。
34 第3章服务代理
2.启用服务目录控制器管理器。
a.使用以下命令来编辑服务目录控制器管理器资源。
$oceditservicecatalogcontrollermanagers b.在spec下,将managementState字段设置为Managed:spec:logLevel:NormalmanagementState:Managed c.保存文件以应用更改。
Operator会安装服务目录控制器管理器组件。
自OpenShiftContainerPlatform4起,此组件安装到openshift-service-catalog-controller-manager命名空间中。
3.2.安装TEMPLATESERVICEBROKER 您可以安装TemplateServiceBroker来访问它提供的模板应用程序。
重要OpenShiftContainerPlatform4中已弃用TemplateServiceBroker。
OperatorFramework和OperatorLifecycleManager(OLM)提供了等效和更好的功能。
3.2.1.先决条件 安装服务目录 3.2.2.关于TemplateServiceBroker TemplateServiceBroker将服务目录可见性引入到OpenShiftContainerPlatform初始发行版本起附带的默认InstantApp和Quickstart模板TemplateServiceBroker还能以服务形式提供针对其编写OpenShiftContainerPlatform模板的任何对象,无论是来自红帽、集群管理员或用户,还是第三方供应商。
默认情况下,TemplateServiceBroker显示openshift项目中全局可用的对象。
也可以将其配置为观察集群管理员选择的任何其他项目。
默认情况下,OpenShiftContainerPlatform4中不安装TemplateServiceBroker。
3.2.3.安装TemplateServiceBrokerOperator 先决条件已安装服务目录。
流程以下流程使用Web控制台安装TemplateServiceBrokerOperator。

1.创建命名空间。
a.在Web控制台中导航至Administration→Namespaces,再点击CreateNamespace。
35 OpenShiftContainerPlatform4.3应用程序 b.在Name字段中,输入openshift-template-service-broker并点击Create。
注意命名空间必须以openshift-开头。

2.导航到Operators→OperatorHub页面。
验证是否已选中openshift-template-service-broker项目。

3.选择TemplateServiceBrokerOperator。

4.阅读Operator的信息并点击Install。

5.检查默认选择并点击Subscribe。
接下来,需要启动TemplateServiceBroker,以便访问它提供的模板应用程序。
3.2.4.启动TemplateServiceBroker 在安装TemplateServiceBrokerOperator后,可以按照以下流程启动TemplateServiceBroker。
先决条件已安装服务目录。
已安装TemplateServiceBrokerOperator。
流程
1.在Web控制台中导航到Operators→InstalledOperators,再选择openshift-templateservice-broker项目。

2.选择TemplateServiceBrokerOperator。

3.在ProvidedAPIs下,点击TemplateServiceBroker的CreateNew。

4.检查默认YAML并点击Create。

5.验证是否已启动TemplateServiceBroker。
在TemplateServiceBroker启动后,可以通过导航到Catalog→DeveloperCatalog并选中ServiceClass复选框来查看可用的模板应用程序。
请注意,可能需要等几分钟后模板服务代理才会启动,并且模板应用程序可供使用。
如果还没有看到这些服务类,您可以检查以下项目的状态:TemplateServiceBrokerPod状态在openshift-template-service-broker项目的Workloads→Pods页面中,验证名称开头为apiserver-的Pod的状态是否为Running并且就绪状态是否为Ready。
集群服务代理状态在Catalog→BrokerManagement→ServiceBrokers页面中,验证templateservice-broker服务代理的状态是否为Ready。
服务目录控制器管理器Pod日志 36 第3章服务代理 在openshift-service-catalog-controller-manager项目的Workloads→Pods页面中,检查各个Pod的日志,并验证是否看到一个含有essfullyfetchedcatalogentriesfrombroker消息的日志条目。
3.3.置备模板应用程序 3.3.1.置备模板应用程序 以下流程置备一个由TemplateServiceBroker提供的PostgreSQL模板应用程序示例。
先决条件已安装服务目录。
已安装TemplateServiceBroker。
流程
1.创建一个项目。
a.在Web控制台中,导航到Home→Project并点击CreateProject。
b.在Name字段中输入test-postgresql,再点击Create。

2.创建服务实例。
a.导航到Catalog→DeveloperCatalog页面。
b.选择PostgreSQL(Ephemeral)模板应用程序,再点击CreateServiceInstance。
c.检查默认选择项并设置任何其他必要的字段,然后点击Create。
d.前往Catalog→ProvisionedServices,再验证postgresql-ephemeral服务实例是否已安装并具有Ready状态。
您可以在Home→Events页面中查看进度。
片刻之后,您应该会看到postgresqlephemeral的一个事件,其含有“Theinstancewasprovisionedessfully”消息。

3.创建服务绑定。
a.在ProvisionedServices页面中,依次点击postgresql-ephemeral和CreateServiceBinding。
b.检查默认服务绑定名称,再点击Create。
这会使用提供的名称为绑定创建一个新secret。

4.检查创建的secret。
a.导航到Workloads→Secrets,再验证是否创建了一个名为postgresql-ephemeral的secret。
b.点击postgresql-ephemeral,再查看Data部分中用于绑定到其他应用程序的键值对。
3.4.卸载TEMPLATESERVICEBROKER 如果您不再需要访问TemplateServiceBroker提供的模板应用程序,可以卸载该代理程序。
37 OpenShiftContainerPlatform4.3应用程序 重要OpenShiftContainerPlatform4中已弃用TemplateServiceBroker。
OperatorFramework和OperatorLifecycleManager(OLM)提供了等效和更好的功能。
3.4.1.卸载TemplateServiceBroker 以下流程使用Web控制台卸载TemplateServiceBroker及其Operator。
警告如果集群中存在从TemplateServiceBroker置备的服务,请不要卸载此代理程序,否则您在尝试管理该服务时可能会遇到错误。
先决条件已安装TemplateServiceBroker。
流程此流程假定您在openshift-template-service-broker项目中安装了TemplateServiceBroker。

1.卸载TemplateServiceBroker。
a.导航到Operators→InstalledOperators,再从下拉菜单中选择openshift-templateservice-broker项目。
b.点击TemplateServiceBrokerOperator。
c.选择TemplateServiceBroker选项卡。
d.点击template-service-broker。
e.在Actions下拉菜单中,选择DeleteTemplateServiceBroker。
f.点击确认弹出窗口中的Delete按钮。
TemplateServiceBroker现已卸载,稍后模板应用程序也会从DeveloperCatalog中移除。

2.卸载TemplateServiceBrokerOperator。
a.在Operators→InstalledOperators页面中,滚动页面或在Filterbyname中输入关键字以查找TemplateServiceBrokerOperator,然后点击它。
b.在OperatorDetails页面的右侧,从Actions下拉菜单中选择UninstallOperator。
c.如果要删除所有安装相关组件,则在看到RemoveOperatorSubscription窗口提示时,勾选pletelyremovetheOperatorfromtheselectednamespace复选框。
该操作将删除CSV,继而删除与Operator相关的Pod、Deployment、CRD和CR。
d.选择Remove。
此Operator将停止运行,并且不再接收更新。
集群中不再安装TemplateServiceBrokerOperator。
38 第3章服务代理 卸载TemplateServiceBroker后,用户将不再能够访问TemplateServiceBroker提供的模板应用程序。
3.5.安装OPENSHIFTANSIBLEBROKER 您可以安装OpenShiftAnsibleBroker,以访问它所提供的服务捆绑包。
重要OpenShiftContainerPlatform4中已弃用OpenShiftAnsibleBroker。
OperatorFramework和OperatorLifecycleManager(OLM)提供了等效和更好的功能。
3.5.1.先决条件 安装服务目录 3.5.2.关于OpenShiftAnsibleBroker OpenShiftAnsibleBroker是OpenServiceBroker(OSB)API的一种实施,可以管理Ansibleplaybook捆绑包(APB)定义的应用程序。
APB提供了一个在OpenShiftContainerPlatform中定义和发布容器应用程序的方法,它包括构建到带有Ansible运行时的容器镜像中的一系列Ansibleplaybook。
APB利用Ansible创建可自动完成复杂部署的标准机制。
OpenShiftAnsibleBroker遵循以下基本工作流:
1.用户使用OpenShiftContainerPlatformWeb控制台从服务目录请求可用应用程序列表。

2.服务目录从OpenShiftAnsibleBroker请求可用应用程序列表。

3.OpenShiftAnsibleBroker与定义的容器镜像registry通信,以了解有哪些APB可用。

4.用户发出置备特定APB的请求。

5.OpenShiftAnsibleBroker通过调用APB上的置备方法来履行用户的置备请求。
默认情况下,OpenShiftContainerPlatform4中不安装OpenShiftAnsibleServiceBroker。
3.5.2.1.Ansibleplaybook捆绑包Ansibleplaybook捆绑包(APB)是一种轻量级应用程序定义,可让您利用Ansible角色和playbook中的现有投入。
APB使用含有指定playbook的简单目录来执行OSBAPI操作,比如置备和绑定。
apb.yml文件中定义的元数据包含部署过程中要使用的一系列必要和可选参数。
其他资源Ansibleplaybook捆绑包存储库 3.5.3.安装OpenShiftAnsibleServiceBrokerOperator 先决条件已安装服务目录。
39 OpenShiftContainerPlatform4.3应用程序 流程以下流程使用Web控制台安装OpenShiftAnsibleServiceBrokerOperator。

1.创建命名空间。
a.在Web控制台中导航至Administration→Namespaces,再点击CreateNamespace。
b.在Name字段中输入openshift-ansible-service-broker,在Labels字段中输入openshift.io/cluster-monitoring=true,然后点击Create。
注意命名空间必须以openshift-开头。

2.创建集群角色绑定。
a.导航到Administration→RoleBindings,再点击CreateBinding。
b.对于BindingType,选择Cluster-wideRoleBinding(ClusterRoleBinding)。
c.对于RoleBinding,在Name字段中输入ansible-service-broker。
d.对于Role,选择admin。
e.对于Subject,选择Serviceount选项,再选择openshift-ansible-service-broker命名空间,然后在SubjectName字段中输入openshift-ansible-service-broker-operator。
f.点击Create。

3.创建用于连接RedHatContainerCatalog的secret。
a.导航到Workloads→Secrets。
验证是否已选中openshift-ansible-service-broker项目。
b.点击Create→Key/ValueSecret。
c.输入asb-registry-auth作为SecretName。
d.添加名为username的Key和值为RedHatContainerCatalog用户名的Value。
e.点击AddKey/Value,再添加名为password的Key和值为RedHatContainerCatalog密码的Value。
f.点击Create。

4.导航到Operators→OperatorHub页面。
验证是否已选中openshift-ansible-service-broker项目。

5.选择OpenShiftAnsibleServiceBrokerOperator。

6.阅读Operator的信息并点击Install。

7.检查默认选择并点击Subscribe。
接下来,必须启动OpenShiftAnsibleBroker,以便能访问它所提供的服务捆绑包。
3.5.4.启动OpenShiftAnsibleBroker 40 第3章服务代理 安装OpenShiftAnsibleServiceBrokerOperator后,可以按照以下流程启动OpenShiftAnsibleBroker。
先决条件 已安装服务目录。
已安装OpenShiftAnsibleServiceBrokerOperator。
流程
1.在Web控制台中导航到Operators→InstalledOperators,再选择openshift-ansibleservice-broker项目。

2.选择OpenShiftAnsibleServiceBrokerOperator。

3.在ProvidedAPIs下,点击AutomationBroker的CreateNew。

4.在提供的默认YAML里的spec字段中添加以下内容: registry:-name:type:url:https://registry.redhat.ioauth_type:secretauth_name:asb-registry-auth 这将引用安装OpenShiftAnsibleServiceBrokerOperator时创建的secret,该secret允许您连接到RedHatContainerCatalog。

5.设置其他OpenShiftAnsibleBroker配置选项,再点击Create。

6.验证OpenShiftAnsibleBroker是否已启动。
在OpenShiftAnsibleBroker启动后,您可以通过导航到Catalog→DeveloperCatalog并选中ServiceClass复选框来查看可用的服务捆绑包。
请注意,可能需要等几分钟后OpenShiftAnsibleBroker才会启动,并且服务捆绑包可供使用。
如果还没有看到这些服务类,您可以检查以下项目的状态: OpenShiftAnsibleBrokerPod状态在openshift-ansible-service-broker项目的Workloads→Pods页面中,验证名称开头为asb-的Pod的状态是否为Running并且就绪状态是否为Ready。
集群服务代理状态在Catalog→BrokerManagement→ServiceBrokers页面中,验证ansible-servicebroker服务代理的状态是否为Ready。
服务目录控制器管理器Pod日志在openshift-service-catalog-controller-manager项目的Workloads→Pods页面中,检查各个Pod的日志,并验证是否看到一个含有essfullyfetchedcatalogentriesfrombroker消息的日志条目。
3.5.4.1.OpenShiftAnsibleBroker配置选项 41 OpenShiftContainerPlatform4.3应用程序 您可以为OpenShiftAnsibleBroker设置以下选项。
表3.1.OpenShiftAnsibleBroker配置选项 YAML键 描述 默认值 brokerName 用于标识代理实例的名称。
ansible-servicebroker brokerNamespace 代理所处的命名空间。
openshift-ansibleservice-broker brokerImage 用于代理的完全限定镜像。
docker.io/ansiblepla
ybookbundle/originansible-servicebroker:v4.0 brokerImagePullPolicy 用于代理镜像本身的拉取策略。
IfNotPresent brokerNodeSelector用于代理部署的节点选择器字符串。
'' registries 代理registry的yaml列表,指定允许用户配置的、代理用于从中发现并提供APB镜像的registry。
请参阅默认registries数组。
logLevel 代理日志的日志级别。
info apbPullPolicy APBPod的拉取策略。
IfNotPresent sandboxRole 赋予用于执行APB的服务帐户的角色。
edit keepNamespace 是否在APB完成后(不论结果如何)删除为运行APB而创建的临时命名空间。
false keepNamespaceOnError 是否在APB完成后(仅当结果为错误时)删除为运行APB而创建的临时命名空间。
false bootstrapOnStartup代理是否应该在启动时运行它的bootstrap例程。
true refreshInterval 代理bootstrap刷新其APB清单的时间间隔。
600s launchApbOnBind 试验性:切换对绑定操作执行APB的代理。
false autoEscalate 代理是否应该在运行APB时提升用户的权限。
这通常保留为false,因为代理执行原始用户授权来确保该用 户具有授予APB沙盒的权限。
false outputRequest 是否输出代理接收的低级HTTP请求。
false 42 registries的默认数组 -type:name:url:https://registry.redhat.iowhite_list:-".*-apb$"auth_type:secretauth_name:asb-registry-auth 第3章服务代理 3.6.配置OPENSHIFTANSIBLEBROKER 重要OpenShiftContainerPlatform4中已弃用OpenShiftAnsibleBroker。
OperatorFramework和OperatorLifecycleManager(OLM)提供了等效和更好的功能。
3.6.1.配置OpenShiftAnsibleBroker 以下流程自定义OpenShiftAnsibleBroker的设置。
先决条件已安装并启动OpenShiftAnsibleBroker。
流程此流程假定您已将ansible-service-broker用作OpenShiftAnsibleBroker的名称以及它所安装到的项目的名称。

1.在Web控制台中导航到Operators→InstalledOperators,再选择ansible-service-broker项目。

2.选择OpenShiftAnsibleServiceBrokerOperator。

3.在AutomationBroker选项卡中,选择ansible-service-broker。

4.在YAML选项卡中,在spec字段中添加或更新所有OpenShiftAnsibleBroker配置选项。
例如: spec:keepNamespace:truesandboxRole:edit
5.点击Save以应用这些更改。
3.6.1.1.OpenShiftAnsibleBroker配置选项您可以为OpenShiftAnsibleBroker设置以下选项。
表3.2.OpenShiftAnsibleBroker配置选项 43 OpenShiftContainerPlatform4.3应用程序 YAML键brokerName 描述用于标识代理实例的名称。
默认值ansible-servicebroker brokerNamespace 代理所处的命名空间。
openshift-ansibleservice-broker brokerImage 用于代理的完全限定镜像。
docker.io/ansiblepla
ybookbundle/originansible-servicebroker:v4.0 brokerImagePullPolicy 用于代理镜像本身的拉取策略。
IfNotPresent brokerNodeSelector用于代理部署的节点选择器字符串。
'' registries 代理registry的yaml列表,指定允许用户配置的、代理用于从中发现并提供APB镜像的registry。
请参阅defaultregistriesarray。
logLevel 代理日志的日志级别。
info apbPullPolicy APBPod的拉取策略。
IfNotPresent sandboxRole 赋予用于执行APB的服务帐户的角色。
edit keepNamespace 是否在APB完成后(不论结果如何)删除为运行APB而创建的临时命名空间。
false keepNamespaceOnError 是否在APB完成后(仅当结果为错误时)删除为运行APB而创建的临时命名空间。
false bootstrapOnStartup代理是否应该在启动时运行它的bootstrap例程。
true refreshInterval 代理bootstrap刷新其APB清单的时间间隔。
600s launchApbOnBind 试验性:切换对绑定操作执行APB的代理。
false autoEscalate 代理是否应该在运行APB时提升用户的权限。
这通常保留为false,因为代理执行原始用户授权来确保该用 户具有授予APB沙盒的权限。
false outputRequest 是否输出代理接收的低级HTTP请求。
false registries的默认数组-type: 44 name:url:https://registry.redhat.iowhite_list:-".*-apb$"auth_type:secretauth_name:asb-registry-auth 第3章服务代理 3.6.2.为OpenShiftAnsibleBroker配置监控 若要让Prometheus监控OpenShiftAnsibleBroker,您必须创建以下资源来为Prometheus授予权限,以便其访问安装有OpenShiftAnsibleBroker的命名空间。
先决条件 已安装OpenShiftAnsibleBroker。
注意 此流程假定您已将OpenShiftAnsibleBroker安装到openshift-ansible-servicebroker命名空间中。
流程
1.创建角色。
a.导航到Administration→Roles,再点击CreateRole。
b.在编辑器中,用以下内容替换YAML: apiVersion:rbac.authorization.k8s.io/v1kind:Rolemetadata: name:prometheus-k8snamespace:openshift-ansible-service-brokerrules:-apiGroups:-""resources:-services-endpoints-podsverbs:-get-list-watch c.点击Create。

2.创建角色绑定。
a.导航到Administration→RoleBindings,再点击CreateBinding。
b.对于BindingType,选择NamespaceRoleBinding(RoleBinding)。
c.对于RoleBinding,在Name字段中输入prometheus-k8s,并在Namespace字段中输入 45 OpenShiftContainerPlatform4.3应用程序 c.对于RoleBinding,在Name字段中输入prometheus-k8s,并在Namespace字段中输入openshift-ansible-service-broker。
d.对于Role,选择prometheus-k8s。
e.对于Subject,选择Serviceount选项,选择openshift-monitoring命名空间,然后在 SubjectName字段中输入prometheus-k8s。
f.点击Create。
Prometheus现在有权访问OpenShiftAnsibleBroker指标。
3.7.置备服务捆绑包 3.7.1.置备服务捆绑包 以下流程置备一个由OpenShiftAnsibleBroker提供的PostgreSQL服务捆绑包(APB)示例。
先决条件已安装服务目录。
已安装OpenShiftAnsibleBroker。
流程
1.创建一个项目。
a.在Web控制台中,导航到Home→Project并点击CreateProject。
b.在Name字段中输入test-postgresql-apb,再点击Create。

2.创建服务实例。
a.导航到Catalog→DeveloperCatalog页面。
b.选择PostgreSQL(APB)服务捆绑包,再点击CreateServiceInstance。
c.检查默认选择项并设置任何其他必要的字段,然后点击Create。
d.前往Catalog→ProvisionedServices,再验证dh-postgresql-apb服务实例是否已安装并具有Ready状态。
您可以在Home→Events页面中查看进度。
片刻之后,您应该会看到dh-postgresql-apb的一个事件,其含有“Theinstancewasprovisionedessfully”消息。

3.创建服务绑定。
a.在ProvisionedServices页面中,依次点击dh-postgresql-apb和CreateServiceBinding。
b.检查默认服务绑定名称,再点击Create。
这会使用提供的名称为绑定创建一个新secret。

4.检查创建的secret。
a.导航到Workloads→Secrets,再验证是否创建了一个名为dh-postgresql-apb的secret。
46 第3章服务代理 b.点击dh-postgresql-apb,再查看Data部分中用于绑定到其他应用程序的键值对。
3.8.卸载OPENSHIFTANSIBLEBROKER 如果不再需要访问OpenShiftAnsibleBroker所提供的服务捆绑包,可以卸载该代理程序。
重要OpenShiftContainerPlatform4中已弃用OpenShiftAnsibleBroker。
OperatorFramework和OperatorLifecycleManager(OLM)提供了等效和更好的功能。
3.8.1.卸载OpenShiftAnsibleBroker 以下流程使用Web控制台卸载OpenShiftAnsibleBroker及其Operator。
警告如果集群中存在从OpenShiftAnsibleBroker置备的服务,请不要卸载此代理程序,否则您在尝试管理该服务时可能会遇到错误。
先决条件已安装OpenShiftAnsibleBroker。
流程此流程假定您已将OpenShiftAnsibleBroker安装到openshift-ansible-service-broker项目中。

1.卸载OpenShiftAnsibleBroker。
a.导航到Operators→InstalledOperators,再从下拉菜单中选择openshift-ansibleservice-broker项目。
b.点击OpenShiftAnsibleServiceBrokerOperator。
c.选择AutomationBroker选项卡。
d.点击ansible-service-broker。
e.在Actions下拉菜单中,选择DeleteAutomationBroker。
f.点击确认弹出窗口中的Delete按钮。
OpenShiftAnsibleBroker现已卸载,稍后服务捆绑包也会从DeveloperCatalog中移除。

2.卸载OpenShiftAnsibleServiceBrokerOperator。
a.在Operators→InstalledOperators页面中,滚动页面或在Filterbyname中输入关键字以查找OpenShiftAnsibleServiceBrokerOperator,然后点击它。
b.在OperatorDetails页面的右侧,从Actions下拉菜单中选择UninstallOperator。
c.如果要删除所有安装相关组件,则在看到RemoveOperatorSubscription窗口提示时,勾 47 OpenShiftContainerPlatform4.3应用程序c.如果要删除所有安装相关组件,则在看到RemoveOperatorSubscription窗口提示时,勾选pletelyremovetheOperatorfromtheselectednamespace复选框。
该操作将删除CSV,继而删除与Operator相关的Pod、Deployment、CRD和CR。
d.选择Remove。
此Operator将停止运行,并且不再接收更新。
集群中不再安装OpenShiftAnsibleServiceBrokerOperator。
卸载OpenShiftAnsibleBroker后,用户将无法再访问OpenShiftAnsibleBroker提供的服务捆绑包。
48 第4章部署 第4章部署 4.1.了解DEPLOYMENT和DEPLOYMENTCONFIG OpenShiftContainerPlatform中的Deployment和DeploymentConfig是API对象,提供两种既相似又不同的方法来细致地管理常见的用户应用程序。
由以下独立API对象组成: DeploymentConfig或Deployment,各自将应用程序特定组件的所需状态描述为Pod模板。
DeploymentConfig涉及一个或多个ReplicationController,其包含DeploymentConfig状态的时间点记录,作为Pod模板。
同样,Deployment涉及一个或多个ReplicaSet,即ReplicationController的后续。
一个或多个Pod,代表应用程序某一特定版本的实例。
4.1.1.部署构建块 Deployment和DeploymentConfig各自通过使用原生esAPI对象ReplicaSet和ReplicationController来启用,作为构建块。
用户不必操控ReplicationController、ReplicaSet,或者DeploymentConfig或Deployment拥有的Pod。
部署系统可确保正确传播更改。
提示如果现有部署策略不适用于您的用例,而且必须在部署的生命周期内执行手动步骤,那么应考虑创建自定义部署策略。
以下部分详细介绍了这些对象。
4.1.1.1.ReplicationControllerReplicationController确保任何时候都运行指定数量的Pod副本。
如果Pod退出或被删除,ReplicationController会做出反应,实例化更多Pod来达到定义的数量。
同样,如果运行中的数量超过所需的数目,它会根据需要删除相应数量的Pod,使其与定义的数量相符。
ReplicationController配置包括: 所需的副本数(可在运行时调整)。
创建复制Pod时要使用的Pod定义。
用于标识受管Pod的选择器。
选择器是分配给由ReplicationController管理的Pod的一组标签。
这些标签包含在ReplicationController实例化的Pod定义中。
ReplicationController使用选择器来决定已在运行的Pod实例数量,以便根据需要进行调整。
ReplicationController不负责根据负载或流量执行自动扩展,也不进行跟踪。
相反,这需要由外部自动缩放器调整其副本数。
以下是ReplicationController的示例定义: apiVersion:v1 49 OpenShiftContainerPlatform4.3应用程序 kind:ReplicationControllermetadata: name:frontend-1spec: replicas:11selector:2 name:frontendtemplate:3 metadata:labels:

标签: #文件 #文件夹 #打不开 #文件管理 #cf #雪铁龙 #跳箱 #caterpillar