k8s_redis_standalone_1
クバネティス(Kubernetes) 環境で Redis-Standalone 構築 実践ガイド ①
仕様書(YAML) 概要と内容
Redis-Standalone 概要
Redis-Standalone は1つのポッド(Pod) に Redis Master だけを載せます。
1. Redis-Standalone 仕様書(YAML)
クバネティス(Kubernetes) で Redis-Standalone をデプロイするときは設定(Config)、サービス(Service)、 作成(StatefulSet) の役割に分けて3つの YAML ファイルで管理します。
2. デプロイ順に沿ったファイル別の内容説明
🟢 [1段階] Redis 設定: redis-config.yaml
- 種類(kind): ConfigMap
- 名前(metadata:name): redis-config
⚠️ 名前は小文字(a-z)、数字(0-9)、ハイフン(`-`)のみ使うよう厳密に制限します(大文字は使用不可) - ConfigMap 設定ファイルです。ここに設定した指示子で redis.conf ファイルを作ります。
- 既存の圧縮(tar) ファイルにデフォルトで含まれる redis.conf ファイルは使いません。
🧑💻 主な値の説明
- bind * -::* # IP が動的に割り当てられ変更されるため、すべての IP を受けられるように設定します。
韓国インターネット振興院(KISA)[クラウド脆弱性点検ガイド]では、セキュリティ目的で bind 項目に IP を設定するよう求めます。 VM/物理サーバーではそれが正しいですが、クバネティス(Kubernetes) 環境では設定できません。
(公共/金融などプロジェクトでは監査委員に十分説明する必要があります) - protected-mode no # 'bind *' に設定しているため 'yes' にすると外部から接続できません。
セキュリティ違反に見えるかもしれませんが、クバネティス(Kubernetes) には独自のセキュリティがあるので、この設定でも問題ありません。 - daemonize no # 'yes' にしてはいけません。
- requirepass password # 💥password は必ず設定してください。
サーバーや PC がインターネットに繋がっているなら、開発環境でも必ず password を設定してください。
Redis ハッキングは🕵️人(ハッカー)がするのではなく、💻 プログラムが24時間動き続けてハッキングします。
Password がなければ、開発用に数分だけ起動していてもすぐにハッキングされます。
詳しくはこちらを参照してください。 🔗 Redis Hacking
users.acl を設定した場合は 'requirepass' を設定しなくても大丈夫です。 - masterauth password # 必ず設定してください。
- users.acl: 65〜66行の設定です。Password('#0cbc...' 64桁) は別に設定する必要があります。
詳しくはこちらを参照してください。 🔗 ACL
💾 redis-config.yaml を表示
ここに示した値は RedisGate が100サイト以上にインストール/運用する際、90%以上適用した redis.conf 値です。
(maxmemory 値はデータサイズに合わせて調整してください)
💻 物理サーバー/VM の場合は、以下のいくつかの値を修正して使ってください。
- bind 114.x.y.z 127.0.0.1 -::1 -> IP 指定
- protected-mode yes
- port -> default 💥6379 port はハッキングの主要ターゲットです。必ず別のポートを使ってください。
- daemonize yes
- dir /app/redis -> pidfile、logfile などもこの dir に置きます
- aclfile /app/redis/users.acl -> ユーザー別に権限付与が可能: 使用推奨
- #maxmemory <bytes> -> コメントアウト(default)
① Redis 専用サーバーの場合はシステムメモリの50%〜90%まで指定します
② メモリに余裕があるなら: システムメモリが16GBで Redis 使用メモリが1〜2GBなら (現実的には)無理に設定しなくてもよい
③ 💥 Redis がシステムメモリを使い切ると OS(Linux) が Redis プロセスを kill します。
🟢 [2段階] サービス(Service) 設定: redis-service.yaml
- 種類(kind): Service
- 名前(metadata:name): redis-service
⚠️ 名前は小文字(a-z)、数字(0-9)、ハイフン(`-`)のみ使うよう厳密に制限します(大文字は使用不可)
- Service 設定ファイルです。
ポッド(Pod) の IP が変わっても固定ドメイン名(FQDN:Full Qualified Domain Name) で
個別 Redis にアクセスできるよう、あらかじめネットワーク住所録を作る役割です。
🧑💻 主な値の説明
- clusterIP: None # 📍'None' に設定(個別ポッド(Pod) DNS 単独識別用)
- port: 18504 # Redis ポート
💾 redis-service.yaml を表示
🟢 [3段階] Redis ポッド(Pod) 作成仕様書: redis-statefulset.yaml
Redis ポッド(Pod)(replicas, initContainers, memory, pvc(disk volume))作成仕様書ファイルです。
- 種類(kind): StatefulSet
- 名前(metadata:name): redis
⚠️ 名前は小文字(a-z)、数字(0-9)、ハイフン(`-`)のみ使うよう制限します(大文字は使用不可)
この名前で redis-0,1,2 のように数字を付けてポッド(Pod) 名を付けます。
ポッド(Pod) 名と serviceName を使って、次のように FQDN(Full Qualified Domain Name) を作ります。
redis-0.redis-service.default.svc.cluster.local
Redis ごとに固有の FQDN 名で、Redis 間または Redis と App 間で通信できます。
IP が変わると、変わった IP を FQDN に接続(設定)します。
🧑💻 主な値の説明
- configMap: name: redis-config (1段階の Redis 設定と接続)
- serviceName: redis-service (2段階の Service と接続)
- replicas: 1 # Redis ポッド(Pod) を1つ作成
- image: redis:8.8.2 # 2026年08月17日(月) に発表されたバージョン 8.8.2 を使用
- imagePullPolicy: IfNotPresent # ローカルイメージを使用
- command スクリプト: 1段階 ConfigMap の設定ファイルコピーと動的設定
- volumeMounts: mountPath: /data: Redis が使用/管理するすべてのファイル
(redis.conf, users.acl, aof files など) を保存します。
💾 redis-statefulset.yaml を表示
🧑💻 initContainers: command: スクリプト説明
- ① ConfigMap から読み取り専用 redis.conf を書き込み可能な /data へコピー
Redis は 'config rewrite' 命令で conf ファイルを書き直すこともでき、 重要イベント発生時に conf ファイルへ記録されます。 そのため redis.conf ファイルは read-write 可能な dir に置く必要があります。
- ② users.acl ファイルのコピー
🧑💻 containers: command: スクリプト説明
- ③ .bashrc ファイルに使いやすい alias をいくつか指定
'--color=auto' を指定すると、ファイル名が次のように色分けされます。
dir file: redis-sentinel-model
exec file: cluster_create.sh
tar file: file redis-8.8.2.tar
- ④ redis.tar ファイルの基準時刻は UTC(英国)です。韓国時間(host OS time)に変更します。
➡ 準備できたので、ポッド(Pod) を作成しに行きましょう。
| << K8s Sidecarパターン テスト ③ | K8s Redis-Standalone ② >> |
|---|
