OpenShift 4 - 多云管理(2) - 部署应用
《OpenShift / RHEL / DevSecOps 汇总目录》
本文在 OpenShift 4.10 + RHACM 环境中进行验证。
文章目录
- RHACM 是如何部署应用的
- 向被管集群部署应用
- 参考
RHACM 是如何部署应用的
RHACM 使用如下一些概念来统一管理应用生命周期。
- Application:组成一个应用的所有 Kubernetes 资源。
- Channel:获取应用部署资源的渠道,RHACM 支持 Git,Helm 和对象存储。
- PlacementRule:定义应用部署的目标集群。
- Subscription:绑定 Channel 和 PlacementRule。
向被管集群部署应用
我们可以使用 RHACM 中的 Applications 在多云环境统一部署应用。RHACM 除了本身支持应用生命周期管理外,还支持通过集成 ArgoCD 和 Ansible 部署应用和管理应用生命周期。
- 先在 RHACM 控制台中为一个被管 OpenShift 集群(ocp4perf1)添加 “environment=dev” 的标签。
- 执行命令,创建 Channel 指向应用 Git 源。
$ cat << EOF | oc apply -f -
---
apiVersion: apps.open-cluster-management.io/v1
kind: Channel
metadata:name: webserver-appnamespace: webserver-acm
spec:type: Gitpathname: https://github.com/michaelkotelnikov/rhacm-workshop
EOF
- 创建 PlacementRule,它基于 environment=dev 的标签选择部部署的目标集群。
$ cat << EOF | oc apply -f -
---
apiVersion: apps.open-cluster-management.io/v1
kind: PlacementRule
metadata:name: dev-clustersnamespace: webserver-acm
spec:clusterConditions:- type: ManagedClusterConditionAvailablestatus: "True"clusterSelector:matchLabels:environment: dev
EOF
- 创建 Subscription,它绑定 PlacementRule 和 Channel。
$ cat << EOF | oc apply -f -
---
apiVersion: apps.open-cluster-management.io/v1
kind: Subscription
metadata:name: webserver-app-devnamespace: webserver-acmlabels:app: webserver-appannotations:apps.open-cluster-management.io/github-path: 04.Application-Lifecycle/exercise-application/application-resourcesapps.open-cluster-management.io/git-branch: dev
spec:channel: webserver-acm/webserver-appplacement:placementRef:kind: PlacementRulename: dev-clusters
EOF
- 创建 Application,并通过 “app: webserver-app” 标签和 Subscription 关联起来。
$ cat << EOF | oc apply -f -
---
apiVersion: app.k8s.io/v1beta1
kind: Application
metadata:name: webserver-appnamespace: webserver-acm
spec:componentKinds:- group: apps.open-cluster-management.iokind: Subscriptiondescriptor: {}selector:matchExpressions:- key: appoperator: Invalues:- webserver-app
EOF
在创建完可以在 RHACS 控制台的 Applications 中看到 webserver-app 应用。
(可选)以上 Application、Channel、Subscription 等对象也可在 RHACM 界面上进行配置。
进入名为 webserver-app 的 Application,可以在下方的 Resource Topology 中看到 Application、Subscription、Placement 和 OpenShift 集群的关系。由于在 Placement 中使用 environment: dev 的标签,并且 ocp4perf1 集群有 environment: dev 的标签,因此可以看到应用运行在 ocp4perf1 集群上。
在 ocp4perf1 被管集群中可以看到部署的应用资源。
$ oc get all -n webserver-acm
NAME READY STATUS RESTARTS AGE
pod/webserver-86447cb946-d4kg7 1/1 Running 0 15mNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/webserver ClusterIP 172.30.162.216 <none> 8080/TCP 15mNAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/webserver 1/1 1 1 15mNAME DESIRED CURRENT READY AGE
replicaset.apps/webserver-86447cb946 1 1 1 15mNAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
route.route.openshift.io/webserver webserver-webserver-acm.apps.cluster-jh4rb.jh4rb.sandbox1343.opentlc.com /application.html webserver 8080-tcp edge None
- 创建新的 PlacementRule 和 Subscription。新的 PlacementRule 部署集群目标是 environment: production 标签。
$ cat << EOF | oc apply -f -
---
apiVersion: apps.open-cluster-management.io/v1
kind: PlacementRule
metadata:name: prod-clustersnamespace: webserver-acm
spec:clusterConditions:- type: ManagedClusterConditionAvailablestatus: "True"clusterSelector:matchLabels:environment: production
EOF$ cat << EOF | oc apply -f -
---
apiVersion: apps.open-cluster-management.io/v1
kind: Subscription
metadata:name: webserver-app-prodnamespace: webserver-acmlabels:app: webserver-appannotations:apps.open-cluster-management.io/github-path: 04.Application-Lifecycle/exercise-application/application-resources
spec:channel: webserver-acm/webserver-appplacement:placementRef:kind: PlacementRulename: prod-clusters
EOF
- 再次查看这个 Application 的部署拓扑,可以看到 Subscription 图标有错误。其中 Cluster deploy status 错误提示没有找到名为 prod-clusters 的 PlacementRule 对应的集群。
- 为一个被管集群添加 environment=production 标签。
- 然后在 Application 中选择 “Deploy application resources only on clusters matching specified labels”,并按照下图添加 environment=production 的标签。
- 在 Application 的 Resource topology 中确认应用已经通过 PlacementRule 找到并部署到名为 local-cluster 的集群了。
- 最后确认在名为 local-cluster 的集群中 webserver-acm 的项目中已经有部署好的应用了。
$ oc get all -n webserver-acm
NAME READY STATUS RESTARTS AGE
pod/webserver-5b94b86d86-t65kg 1/1 Running 0 3m40sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/webserver ClusterIP 172.30.189.119 <none> 8080/TCP 3m40sNAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/webserver 1/1 1 1 3m40sNAME DESIRED CURRENT READY AGE
replicaset.apps/webserver-5b94b86d86 1 1 1 3m40sNAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
route.route.openshift.io/webserver webserver-webserver-acm.apps.cluster-gwdv8.gwdv8.sandbox518.opentlc.com /application.html webserver 8080-tcp edge NoneNAME TYPE VERSION OWNER READY AGE
application.app.k8s.io/webserver-app 72m
参考
https://access.redhat.com/documentation/zh-cn/red_hat_advanced_cluster_management_for_kubernetes/2.4/html-single/applications/index
OpenShift 4 - 多云管理(2) - 部署应用相关推荐
- OpenShift 4 - 多云管理(1) - 安装 RHACM、导入已有集群、配置观察功能
<OpenShift / RHEL / DevSecOps 汇总目录> 本文在 OpenShift 4.10 + RHACM 2.4 环境中进行验证. 文章目录 什么是 RHACM 安装 ...
- 多云管理行政管理规范需求_征服多云管理的6种工具
多云管理行政管理规范需求 当云到达时,程序员和运营团队的生活发生了变化. 无需等待数周,数月甚至有时超过一年的时间来购买和配置新硬件,服务器云使您只需单击一次或单击三下即可在几秒钟内启动并运行一个新创 ...
- 征服多云管理的6种工具
当云到达时,程序员和运营团队的生活发生了变化. 无需等待数周,数月甚至有时超过一年的时间来购买和配置新硬件,服务器云使您只需单击一次或单击三下,即可在几秒钟内启动并运行一个新创意. las,每一次伟大 ...
- 多云管理平台助力企业数字化转型
1.行业发展趋势 随着云计算的快速发展和应用,很多企业都完成了IT基础设施上云的工作.企业将安全要求高的业务部署在私有云中,将需要通过互联网访问的业务部署在公有云上,为了实现容灾.业务高可用,避免单一 ...
- 从“上云”到“云管理”,中国首个多云管理平台评估标准有何妙处
在多云成为新常态的背景下,多云管理平台(MCMP)的建设也逐渐成为当前企业关注的重点话题之一.然而,国内多云管理平台市场尚处于早期阶段,市场的良性发展亟待行业标准的规范. 多云管理市场崛起,尚缺行业标 ...
- Spinnaker:云原生多云环境持续部署的未来这样玩!
Gartner的报告指出,到2020年,将有50%的传统老旧应用会以云原生的方式被改造,到2022年,云原生和容器化的普及率将达到75%. 随着2020 KubeCon线上大会的结束,我们发现企业拥抱 ...
- 高效多云管理做到这点就够!
随着多云成为常态, 「解决云资源浪费问题」 成为 IT 关注的首要问题. 怎样让多云管理变得简单.及时和准确? ? 首先,你需要全面.清晰地了解应用程序的使用情况 ,采用混合云让企业能够兼顾「本地」和 ...
- 2019可信云云计算开源产业大会:腾讯云TStack获多云管理认证及多项殊荣
7月2日-3日,工信部指导,中国信息通信研究院主办的2019年可信云大会与2019年云计算开源产业大会顺利召开.继通过可信云·开源解决方案.混合云解决方案等认证后,腾讯云TStack凭借强大的多云管理 ...
- 企业选择 多云管理平台 六大注意事项
企业选择 多云管理平台 六大注意事项 1.是否足够简单,学习曲线有多长 2.是否可实现自动化环境部署,日常运维作业等一系列操作? 3.是否可以管理全异构的云环境,支持主流公有云厂商的云资源? 4.是否 ...
最新文章
- flat在java中的含义_java – 在flatingBy中使用flatMap的优雅方法
- JMeter脚本获取变量名、检验字符串值
- WindowsForm 计算器
- Android 解锁屏启动过程
- DataGridView编辑后立即更新到数据库的两种方法
- 阿里达摩院自主研发AI芯片 布局“中国芯”
- java 规则引擎roolie_【智能决策引擎】规则引擎介绍
- 数据库 | 远程连接centos7上数据库
- ubuntu 修改ip后,老ip仍然存在的问题
- 智慧景区管理系统提升游客服务体验
- 用IDM快速下载百度云文件
- Tar的详细用法(转自Linux伊甸园)_拔剑-浆糊的传说_新浪博客
- ipv6的127位掩码如何表示_详解IP地址、子网掩码、网络号、主机号、网络地址、主机地址...
- 3D家居设计展示系统
- 使用经典的基本播放命令和 MML 创建 MIDI 文件
- 新版“大伦敦规划”中的交通发展策略
- 用友U9【SV】服务
- 口令订单红包V1.1.3公众号源码,增加关注多久后才能使用口令与领取红包功能
- CSS入门五:文本样式;字体颜色:英文字母,十六进制,RGB;文本颜色,字间距,行间距,对齐方式;下划线、上划线…,文本阴影,字母大小写,首行缩进
- 如何用photoshop输出html网页(转)
热门文章
- c语言怎么实现模块化vc,原创:在C语言中大概实现VC++中的CArray部分功能的两种方法...
- 2021甘肃平凉高考成绩查询,甘肃省教育考试院:2021年甘肃高考查分入口、查分系统...
- python getopt_python 5种 statsPython中的getopt函数使用详解
- php 最长公共子串,PHP实现求解最长公共子串思路方法
- php怎么获取栏目,thinkphp获取栏目和文章当前位置的方法
- 蚁群算法python_想要学习启发式算法?推荐你看看这个价值极高的开源项目
- python几种排序_Python实现几种排序算法
- ctypes python 结构体_Python 中 ctypes 的使用
- APP移动购物界面设计灵感
- UI设计素材模板|社交新媒体,可编辑套件