在Azure Kubernetes Windows容器中使用PowerShell测试Redis SSL连接

引言

https://stackoverflow.com/a/55615885
https://community.chocolatey.org/packages/redis
https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-windows/

在复杂的云原生环境中,确保各组件间的连接至关重要。本文将分享一个在Azure Kubernetes Service (AKS) 的Windows容器中测试Redis SSL连接的曲折历程,最终找到了一个出人意料的简单解决方案。

项目背景

我们的项目是一个基于ASP.NET的Sitecore应用,部署在Azure Kubernetes Service的Windows容器中。整个系统包含多个组件:

  • 1个CM(Content Management)Pod
  • 4个CD(Content Delivery)Pod
  • 1个Redis Pod
  • 1个Solr Pod
  • 其他辅助服务

我们计划将内部的Redis服务迁移到Azure Redis服务,这需要我们验证新的连接是否正常工作。

挑战与尝试

初始方案:redis-cli

最直观的测试方法是使用redis-cli,但我们很快发现Windows容器环境带来的限制:

  1. 无法直接安装redis-cli
  2. 官方文档建议在Windows WSL中安装,但Windows容器显然不支持WSL

替代方案的探索

PowerShell模块

我们尝试了一些PowerShell模块来测试Redis连接:

遗憾的是,这些方案要么安装困难,要么无法成功连接。

利用现有Linux容器

我们的Redis Pod是基于Linux的,已预装了redis-cli。然而:

  1. 版本较旧(4.0.14),不支持--tls参数
  2. 可以测试非SSL端口(6379),但SSL端口(6380)连接失败
  3. 尝试升级redis-cli因权限问题而失败

Python脚本方案

考虑到有人使用Python测试Redis连接,我们尝试在Windows容器中安装Python:

Invoke-WebRequest https://www.python.org/ftp/python/3.9.5/python-3.9.5-amd64.exe -OutFile python-3.9.5.exe

但这个尝试也以失败告终,出现了意料之外的网络错误。

柳暗花明:Chocolatey的惊喜

在多次失败后,我们想起之前曾通过Chocolatey成功安装了Vim。抱着试一试的心态,我们尝试安装Redis:

choco install redis

出乎意料的是,这个命令竟然成功了!不仅如此,它还安装了最新版本(7.4.1)的redis-cli。这个发现令人兴奋不已,因为它提供了一个在Windows容器中轻松获取redis-cli的方法。

最终解决方案

有了redis-cli,我们终于可以进行全面的连接测试:

  1. 测试非SSL端口:
redis-cli -h <host> -p 6379 -a <password>
  1. 测试SSL端口:
redis-cli --tls --insecure -h <host> -p 6380 -a <password>

注意:SSL连接需要额外的--tls--insecure参数。

结语

这次经历让我们认识到,在复杂的容器环境中,有时最简单的解决方案可能被忽视。Chocolatey作为Windows的包管理器,在容器环境中展现出了惊人的实用性。

对于需要在Windows容器中测试Redis连接的开发者,我们强烈推荐尝试使用Chocolatey安装redis-cli。这不仅简化了安装过程,还确保了你能获得最新版本的工具。

希望这篇文章能为遇到类似问题的同仁提供帮助,让你在Azure Kubernetes的Windows容器中更轻松地管理和测试Redis连接。

评论

还没有人评论,抢个沙发吧...

Viagle Blog

欢迎来到我的个人博客网站