Tanzu for Valkey on Kubernetes 3.1をインストールしてみます。今回はPrivate Network上のMicroK8sにインストールします。

目次

Tanzu for Valkey on Kubernetes Docker Registryのアクセストークン取得

Broadcom Supportにログインして、Tanzu for Valkey on KubernetesのページからDockerレジストリのトークンを取得します。

image

次のコマンドで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に現れる各種イメージをリロケートします。各イメージのバージョンはアクセストークンが表示されたダイアログの下に表示されます。

image

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インスタンスの作成状況を確認します。STATUSRunningになるまで待ちます。

$ 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に接続できたら、setgetコマンドで動作確認を行います。

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の動作確認はまた今度。

Found a mistake? Update the entry.
Share this article: