Robotframework + selenium2library 实现 Headless 模式的 Web 功能测试

今天来点小技巧凑个数。 感谢健哥提供的 Hello world 样本。

之前因为做一些 CI/CD 的尝试,做了个要你命三千一样的 Jenkins 镜像(docker pull dustise/jenkins),其中包含了 Maven、Sornar Scanner、Robot Framework 以及 Git/Subversion、Kubectl 等一系列的相关工具。

一旦用起来,测试的兄弟发现了个大问题,基于 selenium2library 的页面功能测试无法完成了,回头一想,镜像里面压根没有浏览器,怎么可能执行浏览器测试呢。

安装

首先就要安装浏览器了,我这里选择了 FireFox。

apt-get install -y firefox

为了让 selenium2library 能够同 FireFox 互动,还需要 geckodriver 的支持,这个软件提供了 WebDriver 协议所需的 HTTP API,能够和 FireFox 这样的 Gecko 浏览器进行通信。

监控随想,业务和迭代

其实我不知道我在说啥

These services are built around business capabilities and independently deployable by fully automated deployment machinery.

< Microservices > By Matin fowler

如 Matin 大爷所言,微服务的两个重要特征:面向业务和自动化。随着微服务架构的普及和深入,每一个线上业务都是由为数众多的独立运行的微服务协作完成的。加之容器、云计算等技术的引进使用,自动化工具链也加入战团,这一切情况的叠加,使得一个具体业务的整个生命周期所涉及的 IT 资产数量不断膨胀,并且微服务化带来的快速变更,原有的按照网域、按照应用类型等监控 Screen 的定义方式越来越难跟上业务需求,运维监控这一分支的技术工作成为背锅侠的风险越来越大。

目前见过的几个的监控方式,有几个共同点:

Grafana 的新瓶,Zabbix 的酒

zabbix-grafana

近期声名鹊起的 Grafana,终于拉了年老色衰的 Zabbix 一把,提供了 Zabbix 数据源插件,让 Zabbix 得以改头换面(画外音:洒家这下有机会上大屏幕了吧?)闲话少叙,言归正传:

安装

这里采用 Docker Hub 中的 Grafana Latest 镜像直接运行 Grafana:

Kompose: Docker-compose 到 Kubernetes 的迁移工具

Docker 给了开发者以巨大的帮助。让每个人都能够从 Docker Registry 启动一个打包好的 Docker 应用。为了对付多容器应用, Docker 开发了 Docker-compose (也就是 Compose)。Compose 借助 yaml 格式的描述文件来定义一个多容器应用,然后就可以用一个简单的 docker-compose up 来启动这一应用中的多个容器。然而,Compose 只能够在本地或者 Docker Swarm 集群中运行。 那如果我们需要在 Swarm 之外运行怎么办?比如 Kubernetes?

Ingress Planner + InGraph 解救多重苦手

Tags: 

Enl: @dustise

玩多重最怕什么?不会规划!

规划好了呢?只是第一步,还要钥匙,走位,顺序,方向。。

这里介绍两个工具,从连接规划,到其他问题一口气在显示器前全部解决,彻底释放大脑压力。

Ingress Planner

这个网站从 IITC 中获取数据,并能够辅助进行多重进行过程中的统计和计算。

使用这一网站之前有如下先决条件需要达成:

接下来,进入 Ingress Planner 网站,授权使用 Google Drive 之后,就进入了这一工具的页面了。

我又污染 Github 了!

镜像的清理

最近一直忙些不靠谱的玩意,意外的发现, Docker 和 DevOps 的苟合之后,没有计划生育的结果就是镜像的极度膨胀,兄弟团队每天上百次的构建,让他们可怜的存储条件无法镜像爆炸的后果,因此就有了这俩工具。

两个工具分别用于清理 Docker 的本地镜像以及私库镜像,Github 地址:

  • https://github.com/fleeto/clear-registry-image
  • https://github.com/fleeto/clear-docker-image

基本思路就是把镜像/私库的信息保存在 sqlite 的内存表之中,利用配置文件中保存的 sql 条件对其进行过滤,并进行后续的删除等工作。

之所以没有采用 request 之类而是用的原始的命令行方式,主要是考虑降低部署依赖。

Kubernetes 中的 StorageClass 和动态卷供给

存储是容器运行环境的重要一环,Kubernetes 提供了一些用于存储管理的基础能力。动态卷供给是一个 Kubernetes 独有的功能,这一功能允许按需创建存储卷。在没有这种能力之前,集群管理员需要打电话给他们的云或者存储提供者来创建新的存储卷,成功以后再创建 PersistentVolume 对象,才能够在 Kubernetes 中使用。动态卷供给能力让管理员不必进行预先创建存储卷,而是随用户需求进行创建。这一特性在 1.2 版本中处于 α 阶段,在 版本 1.4 中提升为 β。这一版本提高了动态卷的弹性和可用性。

针对资源紧缺处理方式的配置

如何在资源紧缺的情况下,保证 Node 的稳定性,是 Kubelet 需要面对的一个重要的问题。尤其对于内存和磁盘这种不可压缩的资源,紧缺就相当于不稳定。

Jenkins:乘着 Kubernetes 的翅膀

Jenkins 不但提供了用于构建、推送 Docker 镜像的插件,更提供了利用 Kubernetes 运行构建集群的能力。本文将利用一个简单的 Hello world 项目,来展示 Jenkins 的这一特性。

Kubernetes 部署安全最佳实践

编者按:本文作者是来自 Aqua Security 的 Amir Jerbi 和 Michael Cherny,他们以大量的案例和经验为基础,总结并描述了 Kubernetes 部署中的最佳安全实践。

Kubernetes 提供了很多能够提高应用安全的方法。要进行这些配置,就要掌握 Kubernetes 的相关知识,同时也要清楚的了解安全需求。这里我们关注的安全内容集中在容器的生命周期上:构建、传输以及运行,并且针对 Kubernetes 进行了特别的裁剪。我们自己的 SaaS 就是运行在 Google Cloud Platform 上的 Kubernetes 中,已经采用了这些最佳实践。

下面是我们对于安全部署 Kubernetes 应用的一些建议。

确保镜像无漏洞

运行带有漏洞的容器会让你的环境身处险境。只要运行中的系统的所有组件都不存在已知漏洞,就能够避免很多被攻击的机会。

页面