Using Bitnami's Valkey chart

使用 Bitnami 的 Valkey Helm Chart

2024-07-09 · Rafael Ríos Saavedra

Valkey 是一种高性能的键/值数据存储,支持缓存、消息队列等工作负载,并支持多种数据类型,包括字符串、数字、哈希、位图等。Valkey 可以以独立模式或集群模式运行,以实现复制和高可用性。

Bitnami 为许多流行的开源应用程序提供了安全、最新且易于部署的 Helm Chart。

本篇博客将引导您如何部署和使用 Bitnami Valkey Helm Chart

假设与先决条件

在开始部署之前,请确保您满足以下先决条件:

部署 Bitnami 打包的 Valkey Helm Chart

以下部分将介绍配置部署、获取和部署 Bitnami 打包的 Valkey Helm Chart,以及获取其外部 IP 地址以访问服务的步骤。

获取和部署 Bitnami 打包的 Valkey Helm Chart

您可以从开源的 Bitnami 应用目录中部署社区版 Bitnami 打包的 Valkey Helm Chart。此外,如果您拥有企业版 Tanzu 应用目录的访问权限,也可以从那里进行部署。

通过 Bitnami 应用目录部署 Helm Chart 的开源版本

要在其命名空间中部署 Helm Chart,请运行以下命令:

$ kubectl create namespace valkey
$ helm install myvalkey oci://registry-1.docker.io/bitnamicharts/valkey --set auth.enabled=true --set auth.password=test_pwd --namespace valkey

通过 Tanzu 应用目录部署 Helm Chart 的企业版本

以下步骤描述了如何浏览 Tanzu 应用目录并获取在集群中部署 Valkey 的说明。此示例展示了一个使用 Ubuntu 22 作为基础操作系统镜像构建的 Valkey Helm Chart,但您可以根据需要自定义 Helm Chart。

  1. 导航至 app-catalog.vmware.com,并使用您的 VMware 账户登录您的目录。Tanzu Library
  2. 在“我的应用程序”部分,搜索 Valkey 并请求将其添加到您的目录。它支持 Photon、Ubuntu、RHEL UBI 和 Debian Linux 发行版。在下一个屏幕上,您将找到在集群中部署 Helm Chart 的说明。请确保您的集群已启动并正在运行。
  3. 执行 kubectl cluster-info,然后运行您将在“Consume your Helm chart”部分找到的命令。

Tanzu Application Catalog

Bitnami Package Content

此后,部署 Helm Chart 的步骤将与以下部分中描述的部署其社区版本的步骤相同。

获取外部 IP 地址并登录 Valkey

等待部署完成,并检查所有 myvalkey Pod 是否处于“Running”状态。

$ kubectl get pods,svc -n valkey
NAME                      READY   STATUS    RESTARTS   AGE
pod/myvalkey-master-0     1/1     Running   0          4m41s
pod/myvalkey-replicas-0   1/1     Running   0          4m41s
pod/myvalkey-replicas-1   1/1     Running   0          3m59s
pod/myvalkey-replicas-2   1/1     Running   0          3m32s

NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/myvalkey-headless   ClusterIP   None            <none>        6379/TCP   4m41s
service/myvalkey-master     ClusterIP   10.110.225.33   <none>        6379/TCP   4m41s
service/myvalkey-replicas   ClusterIP   10.98.176.69    <none>        6379/TCP   4m41s

使用 Valkey 的 CLI 客户端连接

要连接到服务器,您可以部署一个客户端 Pod。

$ export VALKEY_PASSWORD=test_pwd
$ kubectl run --namespace valkey valkey-client --restart='Never'  --env VALKEY_PASSWORD=$VALKEY_PASSWORD  --image docker.io/bitnami/valkey:7.2.5-debian-12-r5 --command -- sleep infinity

现在您已准备好附加到 Pod 并使用 CLI 客户端与服务器交互。

$ kubectl exec --tty -i valkey-client --namespace valkey -- bash
$ REDISCLI_AUTH="$VALKEY_PASSWORD" valkey-cli -h myvalkey-master
myvalkey-master:6379> set test_key "test_value"
OK
myvalkey-master:6379> get test_key
"test_value"

使用 Python 环境

下一个示例解释了如何使用 Python 脚本连接到 Valkey。要运行该脚本,首先需要提供一个 Python 环境并安装 Python 的 Redis 包。

$ kubectl run -it  python-redis --image=bitnami/python -- bash
root@python-redis:/app# pip install redis
Collecting redis
Downloading redis-5.0.6-py3-none-any.whl.metadata (9.3 kB)
Downloading redis-5.0.6-py3-none-any.whl (252 kB)
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 252.0/252.0 kB 942.1 kB/s eta 0:00:00
Installing collected packages: redis
Successfully installed redis-5.0.6

现在您已准备好运行脚本。

root@python-redis:/app# python
Python 3.12.4 (main, Jun  7 2024, 04:30:17) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import redis
>>> creds_provider = redis.UsernamePasswordCredentialProvider("", "test_pwd")
>>> user_connection = redis.Redis(host="myvalkey-master.valkey", port=6379, credential_provider=creds_provider)
>>>
>>> user_connection.ping()
True
>>>
>>> user_connection.set('foo_key', 'bar')
True
>>>
>>> user_connection.get('foo_key')
b'bar'
>>>
>>> user_connection.hset('user-session:123', mapping={
...     'name': 'John',
...     "surname": 'Smith',
...     "company": 'Redis',
...     "age": 29
... })
4
>>>
>>> user_connection.hgetall('user-session:123')
{b'name': b'John', b'surname': b'Smith', b'company': b'Redis', b'age': b'29'}

将 Valkey 用作 WordPress 的缓存

Valkey 也可以作为 WordPress 部署的对象缓存。以下步骤将向您展示如何设置此场景。

首先,需要为 WordPress 部署创建配置,在本例中,设置了 Valkey 的参数和站点管理员的用户凭据。

$ cat > settings.yaml <<EOF
wordpressPassword: "wp_pwd"
wordpressExtraConfigContent: |
  define( 'WP_REDIS_HOST', 'myvalkey-master.valkey' );
  define( 'WP_REDIS_PORT', 6379 );
  define( 'WP_REDIS_PASSWORD', 'test_pwd' );
  define( 'WP_REDIS_PREFIX', 'wp_redis' );
EOF

一旦您有了设置参数,就可以在其命名空间中部署 WordPress 了。

$ kubectl create namespace wordpress
$ helm install mywp bitnami/wordpress -f settings.yaml --namespace wordpress

等待部署完成并检查服务是否已分配外部 IP

$ kubectl get svc --namespace wordpress
NAME                   TYPE         CLUSTER-IP     EXTERNAL-IP  PORT(S)         AGE
service/mywp-mariadb   ClusterIP    10.106.11.191  <none>       3306/TCP                    74s
service/mywp-wordpress LoadBalancer 10.100.136.181 192.168.49.50   80:31116/TCP,443:31119/TCP   74s

使用外部 IP 访问管理页面,并使用之前设置的凭据登录。

您将能够看到 WordPress 管理员 UI,您可以在其中搜索 Redis Object Cache 插件,然后安装并激活它。启用后,等待一些指标出现。

Redis Object Cache Metrics

这只是 Valkey 功能的冰山一角。此后,您可以轻松地将 Valkey 集成到您的项目中。

支持和资源

Bitnami 打包的 Valkey 提供社区版本(通过 Bitnami GitHub 仓库)和企业版本(Tanzu 应用目录)。通过这篇博客文章了解这两个目录之间的差异。

要解决您可能遇到的 Bitnami 社区版包的问题——包括部署支持、操作支持和错误修复——请在 Bitnami Helm chartscontainers GitHub 仓库中提出问题。此外,如果您想为目录做出贡献,请随时向我们发送拉取请求,团队将进行检查并指导您完成成功的合并过程。

如果您对了解更多关于 Tanzu 应用目录的通用信息感兴趣,请查看产品网页