从0开始构建CI-CD持续集成流水线[Openshift]
发表于|更新于
|浏览量:
开始前的话
- 完成一只大象装进冰箱需要几步?
三步: 1. 有一个冰箱;2. 有一只大象;3. 把大象装进冰箱 - 构建CI/CD流水线[Openshift]需要几步?
三步: 1. 有Openshift平台;2. 部署CI/CD流水线应用;3. 启动流水线
文章作者: Michael Pan
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Michael Blog!
相关推荐
2020-05-20
OpenShift-Prometheus使用集群外部Prometheus级联的方法实现多集群统一监控告警
背景大家知道OpenShfit官方通过Prometheus Operator可以快速构建高可用的监控告警平台,它不仅能够收集集群本身的监控指标,还可以通过ServiceMonitor扩展以监控应用自身的指标,实现单集群内部的统一监控。但是生产实践中,我们并不会只采用一个OpenShift部署应用,还会部署非容器应用,在非容器环境下也可能会部署Prometheus来监控相关服务(特别是现在Prometheus已经成为了监控的一个标配),甚至有可能会在不同的网络区部署多个集群,由于不同网络的隔离特性显然一组Prometheus是无法满足所有平台及应用的监控的。这就使得生产中会有很多套Prometheus集群需要管理与维护,查看监控指标也很分散,也就让我们想到必须采用一种办法能够将各处的指标统一收集,实现多集群多Prometheus服务的统一监控。目前实现这种要求的方法主要有两个,一个是通过Prometheus联邦 Federate,另一个是通过Thanos。今天主要介绍集群外部如何使用Prometheus联邦机制收集OpenShift内部Prometheus服务的监控指标。 操作实...
2020-05-20
Openshift-Jenkins共享并支持pipeline
诉求 使用Openshift的pipeline构建流水线,在Openshift上统一管理 使用一个公共的Jenkins,而不需要每个Project下都创建一个新的jenkins。以节约资源 在创建新的项目时,尽量少地改动完成以上的需求 问题openshift默认的BuildConfig如果设置为jenkinsPipelineStrategy策略,将会在当前project下查找jenkins服务,如果没有的话,将会使用master-config中设置的默认jenkins模板所在位置在当前project下创建一个新的jenkins应用,便使用该应用执行相关的pipeline。每个项目都会创建一个新的jenkins。 解决思路 禁用Openshfit默认的JenkinsPipeline机制,不在当前项目下面自动创建Jenkins 在创建一个新的project时,创建名为jenkins的service,同时将它指向公共的Jenkins服务。 同时为了在当前Project界面下能够跳转到jenkins的界面,再创建一个jenkins Route,支持跳转到jenkins进行查看运行日志...

2020-05-20
Openshift自定义Router成倍提升集群性能
为什么要自定义Router Openshift的Router节点其实就是一个Haproxy容器应用,这个已经不是什么秘密了。我们平常使用时,不需要关心Haproxy的配置,因为它的默认配置完全满足绝大多数情况的需求。 但是它的默认配置并没有把最大的性能发挥出来,这时就需要我们对Haproxy的配置进行自定义了。 如果你需要实现一些新的功能,比如说将Mysql通过Router对外提供服务等 怎样自定义Router Router Pod根据haproxy-config模板创建haproxy.conf配置文件,默认文件为/var/lib/haproxy/conf/haproxy-config.template Router Haproxy镜像启动时会根据环境变量TEMPLATE_FILE来选择最终使用的模板文件 向Router Pod中放入自定义的模板文件,并将它的路径传给环境变量TEMPLATE_FILE 模板文件中的相关函数 函数 说明 processEndpointsForAlias(alias ServiceAliasConfig, svc ServiceUni...
2020-05-20
Openshift上搭建NFS-StorageClass,别再说存储使用不方便
动态存储是什么Openshift持久化存储(PV)有两种,一种是静态的,另一种是动态。 静态存储:需要管理员手动创建PV,供PVC挂载调用 动态存储:通过一个称作 Storage Class的对象由存储系统根据PVC的要求自动创建。 StorageClass是什么 StorageClass是Openshfit中的一个资源对象,它主要用于描述请求的存储,并提供按需传递动态预配置存储的参数的方法。 StorageClass对象还可以用作控制不同级别的存储和对存储的访问的管理机制。 有了StorageClass后,管理员无需手动创建PV。Openshift的使用者在创建PVC时只需要指定StorageClass,会自动按照对应的StorageClass配置,调用对应的Dynamic provisioning来创建需要的存储 没有StorageClass时代,如何使用NFS每次需要手动创建PV,一句话:麻烦。 StorageClass时代来了一次配置,永久自动,无需手动创建PV,一句话:方便。 NFS Provisioner原理 新建PVC时,指定为默认驱动,或者指定sto...
2020-05-20
Openshift-HPA(Horizontal-Pod-Autoscaler)自动伸缩过程及算法
1、HPA介绍HPA(Horizontal Pod Autoscaler)是Openshift中的一个非常重要的对象,它定义了系统如何根据收集对应的Pod的状态(CPU/Memory)对DeploymentConfig、ReplicationController对象进行扩容与缩容。 HPA依赖于收集到的Pod资源的使用状态,所以要使HPA生效,Openshift必须安装好cluster metrics应用。 被监控的pod必须设置好了spec.containers.resources.requests属性,HPA才能正常工作。 仅支持CPU/Memory使用率的判断,如果自定义监控项,只能使用经验值,不能使用使用率。 支持对象:DeploymentConfig、ReplicationController、Deployment、Replica Set。 2. HPA伸缩过程及算法 HPA进行伸缩过程 收集该HPA控制下所有Pod最近的cpu使用情况(CPU utilization) 对比在扩容条件里记录的cpu限额(CPUUtilization) 调整实...
2020-05-20
Openshfit上用ConfigMap来自定义Nginx配置
Nginx是最常用的代理软件,也是最常用的WebServer,怎样很方便地在openshift上部署呢?同时又能很方便地对它自定义进行配置?直接使用docker的nginx会有以下问题: 启动时权限问题。默认openshift的应用会使用类似10000100的user_id启用docker,但是官方nginx镜像会使用root启用;还有nginx默认会启用80端口这个也是需要root权限的。 无法动态更新nginx配置。nginx配置在镜像中设置,如果需要更新配置的话,需要重新编译镜像。 应用代码更新。如果用户的代码,如静态代码,版本更新,是否可以不更新镜像,而完成版本的升级? 在Openshift上部署一个nginx应用如何解决以上3个问题。 权限问题 解决办法: 制作专用nginx镜像,1. 更改特殊文件夹的权限为777;2.将默认端口设置为8080default.conf 123456789101112server{ listen 8080; server_name _; location /{ root ...
目录
