论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
在 Kubernetes 中运行 Locust 与 Selenium:安装 Chrome ...
在 Kubernetes 中运行 Locust 与 Selenium:安装 Chrome 和 ChromeDriver ...
铁佛
论坛元老
|
2024-10-27 08:24:31
|
显示全部楼层
|
阅读模式
楼主
主题
1028
|
帖子
1028
|
积分
3084
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
在现代软件开发中,性能和用户体验是至关重要的,而负载测试和自动化测试可以资助我们实现这一目标。在本文中,我们将讨论怎样在 Kubernetes 环境中运行 Locust 和 Selenium,并具体先容怎样安装 Chrome 和 ChromeDriver。
1. Dockerfile 配置
首先,我们必要创建一个 Dockerfile,以构建一个包罗 Locust 和 Selenium 的 Docker 镜像。以下是 Dockerfile 的内容:
FROM locustio/locust:2.31.3
# 设置 Chrome 的版本
ENV CHROME_VERSION 130.0.6723.69
USER root
RUN apt-get update -qq -y && \
apt-get install -y wget unzip && \
apt-get install -y \
libasound2 \
libatk-bridge2.0-0 \
libgtk-4-1 \
libnss3 \
xdg-utils && \
wget -q -O chrome-linux64.zip https://storage.googleapis.com/chrome-for-testing-public/$CHROME_VERSION/linux64/chrome-linux64.zip && \
unzip chrome-linux64.zip && \
rm chrome-linux64.zip && \
mv chrome-linux64 /opt/chrome/ && \
ln -s /opt/chrome/chrome /usr/local/bin/ && \
wget -q -O chromedriver-linux64.zip https://storage.googleapis.com/chrome-for-testing-public/$CHROME_VERSION/linux64/chromedriver-linux64.zip && \
unzip -j chromedriver-linux64.zip chromedriver-linux64/chromedriver && \
rm chromedriver-linux64.zip && \
mv chromedriver /usr/local/bin/
# 设置 Chrome 的配置和缓存目录
ENV XDG_CONFIG_HOME=/tmp/.chromium
ENV XDG_CACHE_HOME=/tmp/.chromium
COPY . .
RUN pip install -r requirements.txt
复制代码
表明
基础镜像
:利用 locustio/locust 作为基础镜像。
安装依赖
:更新包管理器并安装必要的库,以确保 Chrome 和 ChromeDriver 正常运行。
下载和安装 Chrome 和 ChromeDriver
:从
Google 的存储库
下载 Chrome 和 ChromeDriver。
配置目录
:通过环境变量设置 Chrome 的配置和缓存目录,这一步非常重要。若未设置正确,可能会在 Kubernetes 中出现权限问题,具体参考
puppeteer-sharp
requirements.txt 示例
locust=2.31.3
selenium==4.21.0
复制代码
2. Chrome 选项配置
在利用 Selenium 时,我们必要为 Chrome 配置一些选项,以确保它能够在无头模式下正常工作。以下是获取 Chrome 选项的代码示例:
import platform
from selenium import webdriver
def is_running_in_linux():
return platform.system() == 'Linux'
def get_chrome_options():
is_in_linux = is_running_in_linux()
options_custom = webdriver.ChromeOptions()
# Linux 下的 Chrome 选项
if is_in_linux:
options_custom.add_argument("--headless") # 无头模式
options_custom.add_argument('--disable-gpu') # 禁用 GPU 加速
options_custom.add_argument("--no-sandbox") # 禁用沙箱模式
else:
options_custom.add_argument("--start-maximized") # 启动时最大化窗口
# 其他通用选项
options_custom.add_argument("--disable-dev-shm-usage") # 解决资源限制问题
options_custom.add_argument("--ignore-ssl-errors=yes") # 忽略 SSL 错误
options_custom.add_argument("--disable-cache") # 禁用缓存
return options_custom
复制代码
表明
操作系统检测
:根据当前操作系统选择得当的 Chrome 选项。
无头模式
:在 Linux 环境中利用无头模式,以便在没有图形界面的环境下运行 Chrome。
禁用沙箱
:在 Kubernetes 环境中,禁用沙箱模式可以避免潜在的权限问题。
3. Locust 用户定义
下面是一个简单的 Locust 用户示例,利用 Selenium 控制 Chrome 访问特定页面:
from locust import User, task
class GetUrl(User):
customdriver = None
def on_start(self):
self.customdriver = webdriver.Chrome(options=get_chrome_options())
@task
def load_page(self):
self.customdriver.get("http://example.com") # 根据需要替换为实际 URL
复制代码
表明
用户定义
:创建一个继承自 User 的类,利用 Selenium 控制 Chrome。
启动时操作
:在用户启动时初始化 customdriver。
任务定义
:在 load_page 方法中执行实际的页面加载操作。
4. Kubernetes 部署
完成 Dockerfile 和代码后,可以将其构建为 Docker 镜像,并在 Kubernetes 中部署。以下是一个基本的 Kubernetes YAML 配置示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: locust
spec:
replicas: 1
selector:
matchLabels:
app: locust
template:
metadata:
labels:
app: locust
spec:
containers:
- name: locust
image: your-docker-image:latest
ports:
- containerPort: 8089
env:
- name: XDG_CONFIG_HOME
value: /tmp/.chromium # 设置 Chrome 的配置目录
- name: XDG_CACHE_HOME
value: /tmp/.chromium # 设置 Chrome 的缓存目录
---
apiVersion: v1
kind: Service
metadata:
name: locust-service
spec:
type: NodePort
ports:
- port: 8089
targetPort: 8089
selector:
app: locust
复制代码
表明
Deployment
:定义 Locust 的 Deployment,指定容器镜像和服务端口。
Service
:创建一个 Service,使外部能够访问 Locust Web 界面。
结论
通过以上步骤,我们乐成在 Kubernetes 中运行了 Locust 和 Selenium,并安装了 Chrome 和 ChromeDriver。确保配置正确的环境变量和 Chrome 选项,可以大大提高在 Kubernetes 环境中的稳定性。如果您有更多需求,可以根据项目标具体环境进行扩展和调整。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
铁佛
论坛元老
这个人很懒什么都没写!
楼主热帖
Visual Studio 2022 安装低版本的 .Net ...
R语言使用dplyr包的arrange函数对dataf ...
Apifox:节省研发团队的每一分钟 ...
手把手教你入门Python中的Web开发框架 ...
身为一个测试工程师只会点点点?我劝您 ...
通过cookie和localstorage实现数据持久 ...
.net6下使用DotnetZip解压文件,中文出 ...
.Net Core 5.x Api开发笔记 -- Swagger ...
实现华为多屏协同--非华为电脑下载12.0 ...
反射(一)-常用方法及加载资源文件 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
移动端开发
Mysql
云原生
分布式数据库
程序人生
.Net
Oracle
前端开发
网络安全
快速回复
返回顶部
返回列表