Tanzu for Valkey on Kubernetes 3.1をインストールしてみます。今回はPrivate Network上のMicroK8sにインストールします。
目次
- Tanzu for Valkey on Kubernetes Docker Registryのアクセストークン取得
- Helm ChartとコンテナイメージをContainer Registryへリロケート
- Tanzu for Valkey on Kubernetes 3.1のインストール
- Valkeyインスタンスの作成と動作確認
- Spring Bootアプリケーションからの接続確認
- Spring BootアプリケーションのKubernetesへのデプロイ
Tanzu for Valkey on Kubernetes Docker Registryのアクセストークン取得
Broadcom Supportにログインして、Tanzu for Valkey on KubernetesのページからDockerレジストリのトークンを取得します。

次のコマンドで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 (ここではharbor.lan.ik.am)にリロケートして使用します。
リロケート先はPrivate Network上でないとEULAに違反する恐れがあるので気をつけてください。
Helm ChartとコンテナイメージをContainer Registryへリロケート
次のコマンドでリロケート先のContainer Registryにログインします。認証情報は自分のものに置き換えてください。
REGISTRY_HOSTNAME=harbor.lan.ik.am
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.1.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.1.0
kubernetesClusterDomain: cluster.local
imagePullSecretName: jfrog-secret
operator:
image:
repository: tanzu-valkey.packages.broadcom.com/tanzu-valkey-container/tanzu-valkey-operator
tag: 3.1.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.1.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.1.0-valkey-8.1.3 --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-instances:3.1.0-valkey-sentinel-8.1.3 --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.0 --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.0 --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.0 --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.0 --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.0 --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.0.0 --to-repo ${REGISTRY_HOSTNAME}/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-connector
Tanzu for Valkey on Kubernetes 3.1のインストール
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.1.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にアクセスするためのイメージプルシークレットを作成してから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.1.0 --wait -f valkey-values.yaml
インストールが完了したら、次のコマンドでインストール状況を確認します。
$ helm list -n valkey-system
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
valkey valkey-system 1 2025-09-16 15:23:30.145007 +0900 JST deployed tanzu-valkey-helm-3.1.0 3.1.0
次のコマンドでValkey OperatorのPodが起動していることを確認します。
$ kubectl get pod -n valkey-system
NAME READY STATUS RESTARTS AGE
valkey-operator-6d4d9ff4d6-gsq2p 1/1 Running 0 48s
利用可能なカスタムリソースを確認します。
$ 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.1.0
valkey-7.2.5 7.2.5 3.1.0
valkey-7.2.6 7.2.6 3.1.0
valkey-7.2.7 7.2.7 3.1.0
valkey-7.2.8 7.2.8 3.1.0
valkey-7.2.9 7.2.9 3.1.0
valkey-8.0.0 8.0.0 3.1.0
valkey-8.0.1 8.0.1 3.1.0
valkey-8.0.2 8.0.2 3.1.0
valkey-8.0.3 8.0.3 3.1.0
valkey-8.0.4 8.0.4 3.1.0
valkey-8.1.0 8.1.0 3.1.0
valkey-8.1.1 8.1.1 3.1.0
valkey-8.1.2 8.1.2 3.1.0
valkey-8.1.3 8.1.3 3.1.0
Valkey 8.1.3の詳細を確認します。
$ kubectl get valkeyversion valkey-8.1.3 -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: "2025-09-16T06:23:34Z"
generation: 1
labels:
app.kubernetes.io/managed-by: Helm
name: valkey-8.1.3
resourceVersion: "26199867"
uid: 626408c8-b1a5-4119-b963-fd77bd8d02cf
spec:
images:
auth: harbor.lan.ik.am/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-auth:1.1.0
commander: harbor.lan.ik.am/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-commander:1.2.0
exporter: harbor.lan.ik.am/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-exporter:1.0.0
instance: harbor.lan.ik.am/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-instances:3.1.0-valkey-8.1.3
modules: harbor.lan.ik.am/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-modules:1.0.0
persistence: harbor.lan.ik.am/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-persistence:1.2.0
sentinel: harbor.lan.ik.am/tanzu-valkey/tanzu-valkey-container/tanzu-valkey-instances:3.1.0-valkey-sentinel-8.1.3
operatorVersion: 3.1.0
version: 8.1.3
今回は8.1.3のイメージしかリロけーとしていないので、8.1.3以外を使うとイメージをPullできずに失敗するでしょう。
Tanzu for Valkey on Kubernetes 3.1ではValkeyのサンプル設定ファイルが提供されているので、これを利用してValkeyインスタンスを作成します。次のコマンドでサンプル設定ファイルをダウンロードして展開します。必要に応じて参照してください。
curl -sL0 https://packages.broadcom.com/artifactory/tanzu-valkey/tanzu-valkey-container/valkey-samples-3.1.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-8.1.3
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-8.1.3 47s
$ kubectl get pod,svc -n demo -l app=demo-valkey
NAME READY STATUS RESTARTS AGE
pod/demo-valkey-0 1/1 Running 0 92s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/demo-valkey-headless ClusterIP None <none> 6379/TCP 92s
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
(0.56s)
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:
projectcontour.io/tls-cert-namespace: projectcontour
hosts:
- host: demo-redis.lan.ik.am
paths:
- path: /
pathType: Prefix
tls:
- hosts:
- demo-redis.lan.ik.am
secretName: default-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の動作確認はまた今度。