今回は「Kubernetes上に 単独 Redis サーバーを構築する方法」についてまとめます。
概要
単独サーバーとして Redis を動作させる構成を作っていきます。 冗長構成はとっていないので落ちたら止まります…が、基本構成の学習にはシンプルなほうが良いのでまずは単独サーバーで構築を行っていきます
構築
Secret
Redis の パスワード は最大512文字まで指定できるので512文字でランダム文字列を作成します。
-
パスワードファイルを作成
OpenSSL を利用してランダムなパスワード文字列を作成します。 デフォルト指定する base64 オプションだと 約3割り増し の文字列生成されるので、改行削除して先頭512文字をパスワードとして利用します。
openssl rand -base64 512 | tr -d '\r\n' | cut -c 1-512 > redis-password
-
KubernetesにSecreetリソースを作成
kubectl create secret generic redis-secret --from-file=redis-password
もし作成されていることを確認したいのであれば以下のコマンドで確認します。
kubectl get secrets
Pod
構築の方法はいろいろ考えられます。 ConfigMap を使う方法が真っ先に思い浮かぶのですが…単純に組み込むと ReadOnly になってしまってうまく動作しません。 initContainer と PersistentVolume ないし emptyDir 使えば回避できますが…複雑なので今回はやめておきます。 今回は簡単な方法として、Redis設定ファイル(redis.conf)をシェル内で作成する方法をとりました。
-
マニュフェストファイル作成
redis-pod.yml
apiVersion: 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
-
リソース作成
kubectl apply -f redis-pod.yml
動作確認は以下のコマンドで行います。
kubectl get pods
確認
-
RedisサーバーのIPアドレス確認
[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)して起動します。
[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 の値を指定します。/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 の フォロー」 お願いします!!