今回は「Kubernetes上に 単独 Redis サーバーを構築する方法」についてまとめます。
概要
単独サーバーとして Redis を動作させる構成を作っていきます。 冗長構成はとっていないので落ちたら止まります…が、基本構成の学習にはシンプルなほうが良いのでまずは単独サーバーで構築を行っていきます
構築
Secret
Redis の パスワード は最大512文字まで指定できるので512文字でランダム文字列を作成します。
-
パスワードファイルを作成
OpenSSL を利用してランダムなパスワード文字列を作成します。 デフォルト指定する base64 オプションだと 約3割り増し の文字列生成されるので、改行削除して先頭512文字をパスワードとして利用します。
1openssl rand -base64 512 | tr -d '\r\n' | cut -c 1-512 > redis-password
-
KubernetesにSecreetリソースを作成
1kubectl create secret generic redis-secret --from-file=redis-password
もし作成されていることを確認したいのであれば以下のコマンドで確認します。
1 | kubectl get secrets |
Pod
構築の方法はいろいろ考えられます。 ConfigMap を使う方法が真っ先に思い浮かぶのですが…単純に組み込むと ReadOnly になってしまってうまく動作しません。 initContainer と PersistentVolume ないし emptyDir 使えば回避できますが…複雑なので今回はやめておきます。 今回は簡単な方法として、Redis設定ファイル(redis.conf)をシェル内で作成する方法をとりました。
-
マニュフェストファイル作成
redis-pod.yml
123456789101112131415161718192021222324252627282930313233343536373839404142apiVersion: v1
kind: Pod
metadata:
name: redis
namespace: default
labels:
app: redis
ver: "0.0.1"
env: staging
spec:
containers:
- name: redis
image: redis:5.0.5-alpine3.10
command:
- "/bin/sh"
- "-c"
args:
- |
cat <<-EOF > /etc/redis.conf
########### NETWORK ##########
bind 0.0.0.0
port 6379
########### GENERAL ##########
daemonize no
logfile ""
########## SECURITY ##########
requirepass ${REDIS_PASSWORD}
##### MEMORY MANAGEMENT ######
maxmemory 100mb
maxmemory-policy allkeys-lru
EOF
redis-server /etc/redis.conf
env:
- name: "REDIS_PASSWORD"
valueFrom:
secretKeyRef:
name: redis-secret
key: redis-password
-
リソース作成
1kubectl apply -f redis-pod.yml
動作確認は以下のコマンドで行います。
1 | kubectl get pods |
確認
-
RedisサーバーのIPアドレス確認
123[root@k8s-master ~]# kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
redis 1/1 Running 0 11m 10.244.1.119 k8s-node02 <none> <none>
-
デバッグ用のPod起動
ポッド名は「redis-debug」、イメージは「Redisサーバーと同じもの(= redis:5.0.5-alpine3.10)」、再起動はさせず終了時に削除を指定(--restart=Never --rm)して起動します。
123[root@k8s-master ~]# kubectl run -it redis-debug --image=redis:5.0.5-alpine3.10 --restart=Never --rm -- sh
If you don't see a command prompt, try pressing enter.
/data #
-
Redisサーバーに接続して動作確認
接続先(
-h
オプションへ渡すIP)は 1 で確認した IP を指定します。 パスワードはSecret作成時に作った redis-password の値を指定します。123456789/data # redis-cli -h 10.244.1.119
10.244.1.121:6379> auth xxxxxxxxx
OK
10.244.1.121:6379> set key1 Hello
OK
10.244.1.121:6379> get key1
"Hello"
10.244.1.121:6379> keys
1) "key1"
今回は「Kubernetes上に 単独 Redis サーバーを構築する方法」についてまとめました。 参考になったでしょうか? 本記事がお役に立っていると嬉しいです!!
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!