Azure AKS集群部署Zalenium Helm Chart失败求助
从你的Pod日志来看,部署失败主要有两个关键问题:目录权限不足和Kubernetes API Server SSL证书验证失败,下面分别给出针对性的解决方案:
1. 解决/home/seluser/videos目录权限问题
日志里的Permission denied错误是因为Zalenium容器运行的seluser用户没有该目录的写入权限,你可以通过以下方式修复:
方案:添加InitContainer修改目录权限
在Helm Chart的values.yaml中,给Zalenium的hub容器添加一个InitContainer,提前修改目录权限:
hub: initContainers: - name: fix-permissions image: alpine:3.18 command: ["sh", "-c", "chown -R 1200:1200 /home/seluser/videos"] volumeMounts: - name: videos mountPath: /home/seluser/videos
这个InitContainer会在主容器启动前,把videos目录的所有者改为Zalenium默认使用的seluser(UID/GID通常为1200),确保主容器拥有写入权限。
2. 解决Kubernetes API Server SSL证书验证失败问题
日志中的SSLPeerUnverifiedException是因为AKS的K8s API Server证书的Subject Alternative Name(SAN)只包含了IP地址10.0.0.1,没有包含kubernetes.default.svc域名,导致Zalenium内置的fabric8客户端无法通过主机名验证。针对这个问题,有两个可行方案:
方案1:升级Zalenium版本(推荐)
你当前使用的Zalenium版本搭配的fabric8客户端可能不兼容旧版本AKS的证书配置。尝试升级到较新的Zalenium Helm Chart版本(比如v3.141.59c或更高),新版本通常已经适配了AKS的证书验证逻辑,或者提供了更灵活的配置项来规避这个问题。
方案2:禁用SSL证书验证(临时应急)
如果暂时无法升级Zalenium,可以在部署时添加环境变量,让fabric8客户端跳过SSL主机名验证:
在values.yaml中添加:
hub: extraEnv: - name: KUBERNETES_SKIP_TLS_VERIFY value: "true" - name: JAVA_OPTS value: "-Dokhttp3.hostnameVerifier=org.apache.http.conn.ssl.NoopHostnameVerifier"
这个配置会强制Zalenium的Kubernetes客户端跳过证书和主机名的验证,虽然能快速解决问题,但会降低安全性,仅建议在测试环境使用。
额外提示
你的AKS集群使用的是K8s 1.9.6,这个版本已经非常老旧(官方早已停止支持),不仅存在安全漏洞,还可能和很多新版本的应用(包括Zalenium)存在兼容性问题。如果条件允许,建议尽快升级AKS集群到官方支持的稳定版本(比如1.24+),从根本上避免这类兼容性问题。
内容的提问来源于stack exchange,提问作者bramvdk

