Tanzu for Valkey on Kubernetes 3.3のHelm Chartをリロケートしてインストールするメモ
Tanzu for Valkey on Kubernetes 3.3をインストールしてみます。今回はPrivate Network上のK3sにインストールします。
目次
Tanzu for Valkey on Kubernetes Docker Registryのアクセストークン取得
https://support.broadcom.com にログインして、"My Downloads"ページにアクセスし、"Registry Tokens"ボタンをクリック。

"Generate Registry Token"ボタンをクリックして、"Submit"ボタンをクリック。

生成されたトークンの"Copy Token"ボタンをクリックし、トークンをクリップボードにコピーします。

次のコマンドでtanzu-valkey.packages.broadcom.comにログインします。認証情報を自分のものに置き換えてください。
BC_SUPPORT_USERNAME=your-email@example.com
BC_SUPPORT_PASSWORD=eyJ2ZX*************************************
docker login tanzu-valkey.packages.broadcom.com -u ${BC_SUPPORT_USERNAME} -p ${BC_SUPPORT_PASSWORD}
今回はコンテナイメージをPrivate Network上のSelf HostedなContainer Registry (ここではregistry.example.com)にリロケートして使用します。
リロケート先はPrivate Network上でないとEULAに違反する恐れがあるので気をつけてください。
Helm ChartとコンテナイメージをContainer Registryへリロケート
次のコマンドでリロケート先のContainer Registryにログインします。認証情報は自分のものに置き換えてください。
REGISTRY_HOSTNAME=registry.example.com
REGISTRY_USERNAME=your-username
REGISTRY_PASSWORD=your-password
docker login ${REGISTRY_HOSTNAME} -u ${REGISTRY_USERNAME} -p ${REGISTRY_PASSWORD}
リロケートにはimgpkgを使用します。imgpkgがインストールされていない場合は、公式ドキュメントを参照してインストールしてください。
imgpkg copy -i tanzu-valkey.packages.broadcom.com/tanzu-valkey-helm:3.3.0 --to-repo ${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-helm
リロケート後のHelm Chartにアクセスして設定可能なvaluesを確認します。
$ helm show values oci://${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-helm --version 3.3.0
kubernetesClusterDomain: cluster.local
imagePullSecretName: jfrog-secret
operator:
image:
repository: tanzu-valkey.packages.broadcom.com/tanzu-valkey-container/tanzu-valkey-operator
tag: 3.3.0
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 1
memory: 1Gi
instanceRepo: tanzu-valkey.packages.broadcom.com/tanzu-valkey-container/tanzu-valkey-instances
authRepo: tanzu-valkey.packages.broadcom.com/tanzu-valkey-container/tanzu-valkey-auth
persistenceRepo: tanzu-valkey.packages.broadcom.com/tanzu-valkey-container/tanzu-valkey-persistence
commanderRepo: tanzu-valkey.packages.broadcom.com/tanzu-valkey-container/tanzu-valkey-commander
modulesRepo: tanzu-valkey.packages.broadcom.com/tanzu-valkey-container/tanzu-valkey-modules
exporterRepo: tanzu-valkey.packages.broadcom.com/tanzu-valkey-container/tanzu-valkey-exporter
enableSecurityContext: true
valuesに現れる各種イメージをリロケートします。各イメージのバージョンはドキュメントに記載されています。
imgpkg copy -i tanzu-valkey.packages.broadcom.com/tanzu-valkey-container/tanzu-valkey-operator:3.3.0 --to-repo ${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-operator
imgpkg copy -i tanzu-valkey.packages.broadcom.com/tanzu-valkey-container/tanzu-valkey-instances:3.3.0-valkey-9.0.0 --to-repo ${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-instances
imgpkg copy -i tanzu-valkey.packages.broadcom.com/tanzu-valkey-container/tanzu-valkey-auth:1.1.1 --to-repo ${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-auth
imgpkg copy -i tanzu-valkey.packages.broadcom.com/tanzu-valkey-container/tanzu-valkey-persistence:1.2.1 --to-repo ${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-persistence
imgpkg copy -i tanzu-valkey.packages.broadcom.com/tanzu-valkey-container/tanzu-valkey-commander:1.2.1 --to-repo ${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-commander
imgpkg copy -i tanzu-valkey.packages.broadcom.com/tanzu-valkey-container/tanzu-valkey-modules:1.0.1 --to-repo ${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-modules
imgpkg copy -i tanzu-valkey.packages.broadcom.com/tanzu-valkey-container/tanzu-valkey-exporter:1.0.1 --to-repo ${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-exporter
imgpkg copy -i tanzu-valkey.packages.broadcom.com/tanzu-valkey-container/tanzu-valkey-connector:1.1.0 --to-repo ${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-connector
Tanzu for Valkey on Kubernetes 3.3のインストール
Valkey Operatorをインストールするためのvaluesファイルを作成します。リロケート先のContainer Registryの情報に置き換えてください。
cat <<EOF > valkey-values.yaml
---
operator:
image:
repository: ${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-operator
tag: 3.3.0
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 0.1
memory: 128Mi
instanceRepo: ${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-instances
authRepo: ${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-auth
persistenceRepo: ${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-persistence
commanderRepo: ${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-commander
modulesRepo: ${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-modules
exporterRepo: ${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-exporter
enableSecurityContext: true
---
EOF
Valkey Operatorをインストールします。valkey-systemという名前空間を作成し、Container Registryにアクセスするためのイメージプルシークレット(デフォルトでjfrog-secret)を作成してからHelm Chartをインストールします。
kubectl create namespace valkey-system
kubectl create secret docker-registry jfrog-secret \
--docker-server=${REGISTRY_HOSTNAME} \
--docker-username=${REGISTRY_USERNAME} \
--docker-password=${REGISTRY_PASSWORD} \
--namespace=valkey-system
次のコマンドでValkey Operatorをインストールします。
helm upgrade --install -n valkey-system valkey oci://${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-helm --version 3.3.0 --wait -f valkey-values.yaml
インストールが完了したら、次のコマンドでインストール状況を確認します。
$ helm list -n valkey-system
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
valkey valkey-system 1 2026-02-17 13:04:20.759669 +0900 JST deployed tanzu-valkey-helm-3.3.0 3.3.0
次のコマンドでValkey OperatorのPodが起動していることを確認します。
$ kubectl get pod -n valkey-system
NAME READY STATUS RESTARTS AGE
valkey-operator-7bb47d4ffd-6pjnm 1/1 Running 0 28s
利用可能なカスタムリソースを確認します。
$ kubectl api-resources --api-group=data.tanzu.vmware.com
NAME SHORTNAMES APIVERSION NAMESPACED KIND
redistovalkeymigrations redistovkmigr data.tanzu.vmware.com/v1 true RedisToValkeyMigration
valkeybackuplocations vkbkpl data.tanzu.vmware.com/v1 true ValkeyBackupLocation
valkeybackups vkbkp data.tanzu.vmware.com/v1 true ValkeyBackup
valkeybackupschedules vkbkpsch data.tanzu.vmware.com/v1 true ValkeyBackupSchedule
valkeyclusterbackups vkclrbkp data.tanzu.vmware.com/v1 true ValkeyClusterBackup
valkeyclusters vkclr data.tanzu.vmware.com/v1 true ValkeyCluster
valkeycommanders vkcom data.tanzu.vmware.com/v1 true ValkeyCommander
valkeyrdbtoaofs vkrdbtoaof data.tanzu.vmware.com/v1 true ValkeyRdbToAof
valkeyreplications vkrep data.tanzu.vmware.com/v1 true ValkeyReplication
valkeyrestores vkres data.tanzu.vmware.com/v1 true ValkeyRestore
valkeys vk data.tanzu.vmware.com/v1 true Valkey
valkeysentinels vksen data.tanzu.vmware.com/v1 true ValkeySentinel
valkeyversions vkver data.tanzu.vmware.com/v1 false ValkeyVersion
valkeyversionupgrades vkverupgr data.tanzu.vmware.com/v1 true ValkeyVersionUpgrade
利用可能なValkeyのバージョンを確認します。
$ kubectl get valkeyversions
NAME VERSION OPERATOR_VERSION
valkey-7.2.10 7.2.10 3.3.0
valkey-7.2.11 7.2.11 3.3.0
valkey-7.2.5 7.2.5 3.3.0
valkey-7.2.6 7.2.6 3.3.0
valkey-7.2.7 7.2.7 3.3.0
valkey-7.2.8 7.2.8 3.3.0
valkey-7.2.9 7.2.9 3.3.0
valkey-8.0.0 8.0.0 3.3.0
valkey-8.0.1 8.0.1 3.3.0
valkey-8.0.2 8.0.2 3.3.0
valkey-8.0.3 8.0.3 3.3.0
valkey-8.0.4 8.0.4 3.3.0
valkey-8.0.5 8.0.5 3.3.0
valkey-8.0.6 8.0.6 3.3.0
valkey-8.1.0 8.1.0 3.3.0
valkey-8.1.1 8.1.1 3.3.0
valkey-8.1.2 8.1.2 3.3.0
valkey-8.1.3 8.1.3 3.3.0
valkey-8.1.4 8.1.4 3.3.0
valkey-9.0.0 9.0.0 3.3.0
Valkey 9.0.0の詳細を確認します。
$ kubectl get valkeyversion valkey-9.0.0 -oyaml
apiVersion: data.tanzu.vmware.com/v1
kind: ValkeyVersion
metadata:
annotations:
meta.helm.sh/release-name: valkey
meta.helm.sh/release-namespace: valkey-system
creationTimestamp: "2026-02-17T04:04:22Z"
generation: 1
labels:
app.kubernetes.io/managed-by: Helm
name: valkey-9.0.0
resourceVersion: "7145001"
uid: 58f61066-87d3-406a-8230-740f46a60368
spec:
images:
auth: registry.example.com/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-auth:1.1.1
commander: registry.example.com/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-commander:1.2.1
exporter: registry.example.com/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-exporter:1.0.1
instance: registry.example.com/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-instances:3.3.0-valkey-9.0.0
modules: registry.example.com/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-modules:1.0.1
persistence: registry.example.com/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-persistence:1.2.1
operatorVersion: 3.3.0
version: 9.0.0
今回は9.0.0のイメージしかリロケートしていないので、9.0.0以外を使うとイメージをPullできずに失敗するでしょう。必要であれば次のように全バージョンをリロケートしてください。
imgpkg copy -i tanzu-valkey.packages.broadcom.com/tanzu-valkey-container/tanzu-valkey-instances:3.3.0-valkey-9.0.0 --to-repo ${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-instances
Tanzu for Valkey on Kubernetes 3.1ではValkeyのサンプル設定ファイルが提供されているので、これを利用してValkeyインスタンスを作成します。次のコマンドでサンプル設定ファイルをダウンロードして展開します。必要に応じて参照してください。
curl -sL0 https://packages.broadcom.com/artifactory/tanzu-valkey/tanzu-valkey-container/valkey-samples-3.3.0.tar.gz -u ${BC_SUPPORT_USERNAME}:${BC_SUPPORT_PASSWORD} | tar -xzvf -
Valkeyインスタンスの作成と動作確認
シングルノードのValkeyインスタンスを作成するための設定ファイルを作成します。
cat <<EOF > demo-valkey.yaml
---
apiVersion: data.tanzu.vmware.com/v1
kind: Valkey
metadata:
name: demo-valkey
namespace: demo
spec:
valkeyVersion:
name: valkey-9.0.0
resources:
instance:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 0.5
memory: 512Mi
kubernetesConfig:
imagePullSecrets:
- name: jfrog-secret
valkeySecret:
name: valkey-secret
key: valkey-password
---
EOF
Valkeyインスタンスを作成するための名前空間を作成し、Container RegistryにアクセスするためのイメージプルシークレットとValkeyのパスワードを格納するシークレットを作成します。valkey-passwordの値は自分の好きなパスワードに置き換えてください。
kubectl create namespace demo
kubectl create secret docker-registry jfrog-secret \
--docker-server=${REGISTRY_HOSTNAME} \
--docker-username=${REGISTRY_USERNAME} \
--docker-password=${REGISTRY_PASSWORD} \
--namespace=demo
kubectl -n demo create secret generic valkey-secret \
--from-literal=valkey-password=YourStrongPassw0rd
Valkeyインスタンスを作成します。
kubectl apply -f demo-valkey.yaml
Valkeyインスタンスの作成状況を確認します。STATUSがRunningになるまで待ちます。
$ kubectl get valkey -n demo
NAME STATUS VERSION AGE
demo-valkey Running valkey-9.0.0 59s
$ kubectl get pod,svc -n demo -l app=demo-valkey
NAME READY STATUS RESTARTS AGE
pod/demo-valkey-0 1/1 Running 0 66s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/demo-valkey-headless ClusterIP None <none> 6379/TCP 66s
Port Forwardingでローカルの6379ポートをValkey Serviceの6379ポートに転送します。
kubectl port-forward -n demo svc/demo-valkey-headless 6379:6379
別のターミナルでredis-cliを使用してValkeyに接続し、動作確認を行います。YourStrongPassw0rdは先ほど設定したValkeyのパスワードに置き換えてください。
redis-cli -h localhost -p 6379 -a YourStrongPassw0rd
Valkeyに接続できたら、setとgetコマンドで動作確認を行います。
localhost:6379> set foo 100
OK
localhost:6379> get foo
"100"
Spring Bootアプリケーションからの接続確認
次のサンプルアプリケーションを使用して、Spring BootアプリケーションからValkeyに接続できることを確認します。
git clone https://github.com/making/demo-redis
cd demo-redis
./mvnw clean package -DskipTests
Valkeyに接続するためのパラメータを指定してアプリケーションを起動します。YourStrongPassw0rdは先ほど設定したValkeyのパスワードに置き換えてください。
java -jar target/demo-redis-0.0.1-SNAPSHOT.jar --spring.data.redis.host=localhost --spring.data.redis.port=6379 --spring.data.redis.password=YourStrongPassw0rd
アプリケーションが起動したら、別のターミナルで次のコマンドを実行して動作確認を行います。
$ curl "http://localhost:8080?key=foo"
100
$ curl "http://localhost:8080?key=foo" -H "Content-Type: text/plain" -d Hello
$ curl "http://localhost:8080?key=foo"
Hello
Spring BootアプリケーションのKubernetesへのデプロイ
Spring BootアプリケーションをKubernetesにデプロイし、Valkeyに接続できることを確認します。
デモアプリをK8s上にデプロイするために、https://github.com/stakater/application の汎用的なHelm Chartを使用します。
helm repo add stakater https://stakater.github.io/stakater-charts
次のvaluesファイルを作成します。lan.ik.amは自分のドメインに置き換えてください。
cat <<EOF > demo-redis-values.yaml
---
applicationName: demo-redis
deployment:
image:
repository: ghcr.io/making/demo-redis
tag: jvm
pullPolicy: Always
ports:
- name: http
containerPort: 8080
protocol: TCP
env:
spring.data.redis.host:
value: demo-valkey-headless.demo.svc.cluster.local
spring.data.redis.port:
value: "6379"
spring.data.redis.password:
valueFrom:
secretKeyRef:
name: valkey-secret
key: valkey-password
resources:
limits:
cpu:
memory: 768Mi
requests:
cpu:
memory: 768Mi
livenessProbe:
enabled: true
httpGet:
path: /actuator/health/liveness
port: 8080
scheme: HTTP
readinessProbe:
enabled: true
httpGet:
path: /actuator/health/readiness
port: 8080
scheme: HTTP
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: false
runAsNonRoot: true
runAsUser: 1002
seccompProfile:
type: RuntimeDefault
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchLabels:
app.kubernetes.io/part-of: demo-redis
topologyKey: kubernetes.io/hostname
weight: 1
ingress:
enabled: true
annotations:
cert-manager.io/cluster-issuer: letsencrypt
hosts:
- host: demo-redis.lan.ik.am
paths:
- path: /
pathType: Prefix
tls:
- hosts:
- demo-redis.lan.ik.am
secretName: demo-redis-tls
---
EOF
Helm Chartを使用してアプリケーションをデプロイします。
helm upgrade --install demo-redis stakater/application -n demo -f demo-redis-values.yaml --wait
アプリケーションが起動したら、次のコマンドを実行して動作確認を行います。
$ curl "https://demo-redis.lan.ik.am?key=foo"
100
$ curl "https://demo-redis.lan.ik.am?key=foo" -H "Content-Type: text/plain" -d "Hello from K8s"
$ curl "https://demo-redis.lan.ik.am?key=foo"
Hello from K8s
とりあえず、ここまで。
Valkey SentinelやValkey Clusterの動作確認はまた今度。