Openshift-F5集成(续)——实现灰度发布
上篇:Openshift-F5集成(南北流量走F5)中介绍了如何实现使用F5替换掉Openshift中的Route,但是它的可控性是弱的。本篇则通过手动创建VS及iRule来实现更强的流量控制,实现识别客户端IP来访问相应的服务。 为什么要使用灰度发布 什么是灰度发布灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。ABtest就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。 灰度发布的价值使用灰度发布可以在产品正式上线前针对特定一些目标用户进行开放,获得这些目标用户的反馈,及早发现问题,修复问题,完善产品的不足。如果发现新的版本价值不大,能够及早更换思路,避免产品直接上线后产生不好的影响。 Openshift Route自带的灰度发布功能 Openshift Route自带的灰度发布,是通过Route下“挂载”两个或两个以上Service,并调整各个Service的权值进行控制流量的分布。 例如...
Openshift-GitLab安装及使用Nodeport支持ssh访问
部署Gitlab 创建gitlab项目 1oc new-project gitlab 创建cicd serviceaccount 1$ oc create serviceaccount cicd -n gitlab 导入Gitlab模板 12wget https://gitee.com/xhua/OpenshiftOneClick/raw/3.11/openshift-templates/gitlab-template.yamloc create -f openshift-template.json -n openshift 创建持久化存储(如果没有pv的情况下) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384$ cat gitlab-pv.yamlapiVersion: v1items:- ap...
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) 调整实...
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进行查看运行日志...
Openshift-Network-QoS——Pod网络控制
Pod网络(速)控制的必要性高速公路上,当流量大时,如果汽车仍然不限制速度的话,将会很容易发生车祸,我们都会自觉地减速缓慢通过,只有减速才能安全行驶。在平台的集群中也是一样,一台主机上会有大量容器运行,容器相当于高速速上的汽车,对外的网络通信都使用主机出口这条高速路,如果某(几)个容器突然访问流量大增,而且没有作任何网络限速,会占用了主机的网络,严重影响其它容器的网络,进而影响其它业务。 前提 Openshift打开多租户网络模式修改/etc/origin/master/master-config.yaml将networkPluginName设置为redhat/openshift-ovs-multitenant 12345... hostSubnetLength: 9 networkPluginName: redhat/openshift-ovs-multitenant serviceNetworkCIDR: 172.30.0.0/16... 如果已存在的集群,切换网络策略,请参考Openshift网络插件动态切换 为Pod添...
Openshift-Route证书HTTPS配置
后台应用为http服务Termination Type: EdgeInsecure Traffic: Allow 后台应用为https服务Termination Type: PassthroughInsecure Traffic: None
Openshift-Nginx-Router替换默认Haproxy-Router
什么是Router Router在Openshift集群的一个不可非常重要的组件,它作为外部请求访问集群内部资源的入口,为Openshift上的应用提供边缘负载均衡。 Router可以为应用提供HTTP和websocket流量的负载均衡,同时支持HTTPS连接。Openshift上有一个特殊的资源叫Route,通过它可以方便地配置Router。 Openshift集群默认使用Haproxy应用作为Router的实现,它通过容器的形式运行在相应的Node上,同时Router Pod网络使用的宿主机的网络,即hostNetwork=true。 除了Haproxy,我们还可以使用Nginx来实现Router,这也是本文的重点。 不管是Haproxy还是Nginx方案都是使用了软件负载均衡器,还可以使用F5等硬件负载均衡器来替换Router,达到性能的提升。 Nginx Router与默认Router比较 如何替换Openshift默认Router卸载当前Router 用system:admin登录集群 1$ oc login -u system:admin 选择default...
Openshift-Service不仅仅能负载Pod,它还能负载VM等外部服务
Service是Openshift最核心的概念,它可以为一组具有相同功能的Pod提供一个统一的入口,并且将请求负载均衡分发到后端的各个Pod应用上。同时Service在集群下的IP是不变的,保证了请求的可靠性。 Service仅仅只能负载一组Pod吗?No。它还可以对接VM的服务,甚至是物理机的服务。 Service负载Pod 1234567891011121314apiVersion: v1kind: Servicemetadata: name: nginxspec: selector: app: nginx type: NodePort ports: - port: 8080 name: nginx protocol: TCP targetPort: 8080 nodePort: 38080 selector:Label选择器,将选择指定Label的Pod作为被负载Pod type:Service的类型,指定Service的访问方式,默认为ClusterIP。 ClusterIP:虚拟的服务IP地址,该IP...
Openshift-Web-Console自定义界面
什么是Openshift WebConsole Openshift WebConsole是Openshift提供的一个web界面端,类似到Kubernetes的Dashboard。很多操作都可以在WebConsole端去处理与显示。 部署完成Openshift后,会有一个openshift-web-console的project,在这个project中有一个openshift-web-console应用,该应用便是Openshift WebConsole。 自定义Openshift WebConsole原理Openshift WebConsole前端使用的是Google的AngularJS技术,并且它在设置的时候提供了扩展的入口。WebConsole在应用启动时会去读取configmap(webconsole-config)中的配置,而webconsole-config的配置中可以设置导入的自定义css与js文件。 12345678......extensions: properties: {} scriptURLs: - https://www.e...
Openshift-gitlab-redmine-testlink集成
Gitlab:使用Git作为代码管理工具,并在此基础上搭建起来的web服务。Redmine:项目管理和bug跟踪工具。TestLink:基于web的测试用例管理系统,主要功能是测试用例的创建、管理和执行,并且还提供了一些简单的统计功能。Redmine作为项目问题及bug收集汇总的地方,gitlab及testlink通过调用redmine的api进行对问题进行更新。那第它们之间是怎么配置的呢?下面就一起来配置下。 Redmine部署与插件安装相关配置在github项目:https://github.com/xhuaustc/redmine-openshift Dockerfile中更新了docker-entrypoint.sh文件,更新了数据库的编码(mysql: utf8mb4 ) 创建镜像 12$ docker build -t harbor.local.com/public/redmine .$ docker push harbor.local.com/public/redmine 在openshift上创建新的项目 创建工程 1$ oc new-project...
