diff --git a/.gitignore b/.gitignore index 77cf855b7..25969db13 100644 --- a/.gitignore +++ b/.gitignore @@ -29,7 +29,7 @@ tmp/ bin/ output/ _output/ -deployments/charts/generated-configs/ +kubernetes/charts/generated-configs/ ### OpenIM Config ### .env @@ -37,7 +37,7 @@ config/config.yaml config/notification.yaml ### OpenIM deploy ### -deployments/openim-server/charts +kubernetes/openim-server/charts # files used by the developer .idea.md diff --git a/build/build.sh b/build/build.sh new file mode 100644 index 000000000..349152748 --- /dev/null +++ b/build/build.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +CYAN='\033[0;36m' +GREEN='\033[0;32m' +YELLOW='\033[0;33m' +RED='\033[0;31m' +NO_COLOR='\033[0m' + +BASE_DIR="$(cd "$(dirname "$0")" && pwd)" +IMAGE_DIR="$BASE_DIR/images" + +if [[ ! -d "$IMAGE_DIR" ]]; then + echo -e "${RED}dir $IMAGE_DIR not exist!${NO_COLOR}" + exit 1 +fi + +for dir in "$IMAGE_DIR"/*/; do + [[ -d "$dir" ]] || continue + + name="$(basename "$dir")" + dockerfile="$dir/Dockerfile" + + if [[ -f "$dockerfile" ]]; then + echo -e "${CYAN}Building ${name}:test...${NO_COLOR}" + build_context="${dir}../../../" + if docker build -t "${name}:test" -f "$dockerfile" "$build_context"; then + echo -e "${GREEN}Successfully built ${name}:test${NO_COLOR}" + else + echo -e "${RED}Failed to build ${name}:test${NO_COLOR}" + fi + else + echo -e "${YELLOW}Skipping ${name}: Dockerfile not found${NO_COLOR}" + fi +done \ No newline at end of file diff --git a/deployments/deploy/docker-secret.yml b/deployments/deploy/docker-secret.yml deleted file mode 100644 index 58caa682d..000000000 --- a/deployments/deploy/docker-secret.yml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: docker-secret - namespace: default -type: kubernetes.io/dockerconfigjson -data: - # { - # "auths": { - # "your.registry.com": { - # "username": "username", - # "password": "psw", - # "email": "openim@example.com", - # "auth": "dXNlcm5hbWU6cHN3" - # } - # } - #} - # Base64 encoded .docerconfigjson content - .dockerconfigjson: "ewogICJhdXRocyI6IHsKICAgICJ5b3VyLnJlZ2lzdHJ5LmNvbSI6IHsKICAgICAgInVzZXJuYW1lIjogInVzZXJuYW1lIiwKICAgICAgInBhc3N3b3JkIjogInBzdyIsCiAgICAgICJlbWFpbCI6ICAgICJvcGVuaW1AZXhhbXBsZS5jb20iLAogICAgICAiYXV0aCI6ICAgICAiZFhObGNtNWhiV1U2Y0hOMyIKICAgIH0KICB9Cn0=" \ No newline at end of file diff --git a/deployments/deploy/minio-secret.yml b/deployments/deploy/minio-secret.yml deleted file mode 100644 index 3ea09a19f..000000000 --- a/deployments/deploy/minio-secret.yml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: openim-minio-secret -type: Opaque -data: - minio-root-user: cm9vdA== # Base64 encoded "root" - minio-root-password: b3BlbklNMTIz # Base64 encoded "openIM123" diff --git a/deployments/deploy/mongo-secret.yml b/deployments/deploy/mongo-secret.yml deleted file mode 100644 index c3c10af24..000000000 --- a/deployments/deploy/mongo-secret.yml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: openim-mongo-secret -type: Opaque -data: - mongo_openim_username: b3BlbklN # base64 for "openIM", this user credentials need in authSource database. - mongo_openim_password: b3BlbklNMTIz # base64 for "openIM123" diff --git a/deployments/Readme.md b/kubernetes/Readme.md similarity index 100% rename from deployments/Readme.md rename to kubernetes/Readme.md diff --git a/deployments/deploy/openim-config.yml b/kubernetes/deploy/configmap/openim-config.yml similarity index 100% rename from deployments/deploy/openim-config.yml rename to kubernetes/deploy/configmap/openim-config.yml diff --git a/deployments/deploy/openim-api-deployment.yml b/kubernetes/deploy/deployments/openim-api-deployment.yml similarity index 100% rename from deployments/deploy/openim-api-deployment.yml rename to kubernetes/deploy/deployments/openim-api-deployment.yml diff --git a/deployments/deploy/openim-api-service.yml b/kubernetes/deploy/deployments/openim-api-service.yml similarity index 100% rename from deployments/deploy/openim-api-service.yml rename to kubernetes/deploy/deployments/openim-api-service.yml diff --git a/deployments/deploy/openim-crontask-deployment.yml b/kubernetes/deploy/deployments/openim-crontask-deployment.yml similarity index 100% rename from deployments/deploy/openim-crontask-deployment.yml rename to kubernetes/deploy/deployments/openim-crontask-deployment.yml diff --git a/deployments/deploy/openim-msggateway-deployment.yml b/kubernetes/deploy/deployments/openim-msggateway-deployment.yml similarity index 100% rename from deployments/deploy/openim-msggateway-deployment.yml rename to kubernetes/deploy/deployments/openim-msggateway-deployment.yml diff --git a/deployments/deploy/openim-msggateway-service.yml b/kubernetes/deploy/deployments/openim-msggateway-service.yml similarity index 100% rename from deployments/deploy/openim-msggateway-service.yml rename to kubernetes/deploy/deployments/openim-msggateway-service.yml diff --git a/deployments/deploy/openim-msgtransfer-deployment.yml b/kubernetes/deploy/deployments/openim-msgtransfer-deployment.yml similarity index 85% rename from deployments/deploy/openim-msgtransfer-deployment.yml rename to kubernetes/deploy/deployments/openim-msgtransfer-deployment.yml index 3b2c7d3d6..43e6fbe2b 100644 --- a/deployments/deploy/openim-msgtransfer-deployment.yml +++ b/kubernetes/deploy/deployments/openim-msgtransfer-deployment.yml @@ -12,10 +12,9 @@ spec: labels: app: openim-msgtransfer-server spec: - imagePullSecrets: - - name: docker-secret containers: - name: openim-msgtransfer-container + # image: openim/openim-msgtransfer:v3.8.3 image: openim-msgtransfer:test env: - name: CONFIG_PATH @@ -35,6 +34,11 @@ spec: secretKeyRef: name: openim-mongo-secret key: mongo_openim_password + - name: IMENV_KAFKA_USERNAME + valueFrom: + secretKeyRef: + name: openim-kafka-secret + key: kafka-username - name: IMENV_KAFKA_PASSWORD valueFrom: secretKeyRef: diff --git a/deployments/deploy/openim-msgtransfer-service.yml b/kubernetes/deploy/deployments/openim-msgtransfer-service.yml similarity index 100% rename from deployments/deploy/openim-msgtransfer-service.yml rename to kubernetes/deploy/deployments/openim-msgtransfer-service.yml diff --git a/deployments/deploy/openim-push-deployment.yml b/kubernetes/deploy/deployments/openim-push-deployment.yml similarity index 82% rename from deployments/deploy/openim-push-deployment.yml rename to kubernetes/deploy/deployments/openim-push-deployment.yml index 480491a3d..e26d257b8 100644 --- a/deployments/deploy/openim-push-deployment.yml +++ b/kubernetes/deploy/deployments/openim-push-deployment.yml @@ -12,10 +12,9 @@ spec: labels: app: push-rpc-server spec: - imagePullSecrets: - - name: docker-secret containers: - name: push-rpc-server-container + # image: openim/openim-push:v3.8.3 image: openim-push:test env: - name: CONFIG_PATH @@ -25,6 +24,11 @@ spec: secretKeyRef: name: openim-redis-secret key: redis-password + - name: IMENV_KAFKA_USERNAME + valueFrom: + secretKeyRef: + name: openim-kafka-secret + key: kafka-username - name: IMENV_KAFKA_PASSWORD valueFrom: secretKeyRef: diff --git a/deployments/deploy/openim-push-service.yml b/kubernetes/deploy/deployments/openim-push-service.yml similarity index 100% rename from deployments/deploy/openim-push-service.yml rename to kubernetes/deploy/deployments/openim-push-service.yml diff --git a/deployments/deploy/openim-rpc-auth-deployment.yml b/kubernetes/deploy/deployments/openim-rpc-auth-deployment.yml similarity index 100% rename from deployments/deploy/openim-rpc-auth-deployment.yml rename to kubernetes/deploy/deployments/openim-rpc-auth-deployment.yml diff --git a/deployments/deploy/openim-rpc-auth-service.yml b/kubernetes/deploy/deployments/openim-rpc-auth-service.yml similarity index 100% rename from deployments/deploy/openim-rpc-auth-service.yml rename to kubernetes/deploy/deployments/openim-rpc-auth-service.yml diff --git a/deployments/deploy/openim-rpc-conversation-deployment.yml b/kubernetes/deploy/deployments/openim-rpc-conversation-deployment.yml similarity index 100% rename from deployments/deploy/openim-rpc-conversation-deployment.yml rename to kubernetes/deploy/deployments/openim-rpc-conversation-deployment.yml diff --git a/deployments/deploy/openim-rpc-conversation-service.yml b/kubernetes/deploy/deployments/openim-rpc-conversation-service.yml similarity index 100% rename from deployments/deploy/openim-rpc-conversation-service.yml rename to kubernetes/deploy/deployments/openim-rpc-conversation-service.yml diff --git a/deployments/deploy/openim-rpc-friend-deployment.yml b/kubernetes/deploy/deployments/openim-rpc-friend-deployment.yml similarity index 100% rename from deployments/deploy/openim-rpc-friend-deployment.yml rename to kubernetes/deploy/deployments/openim-rpc-friend-deployment.yml diff --git a/deployments/deploy/openim-rpc-friend-service.yml b/kubernetes/deploy/deployments/openim-rpc-friend-service.yml similarity index 100% rename from deployments/deploy/openim-rpc-friend-service.yml rename to kubernetes/deploy/deployments/openim-rpc-friend-service.yml diff --git a/deployments/deploy/openim-rpc-group-deployment.yml b/kubernetes/deploy/deployments/openim-rpc-group-deployment.yml similarity index 100% rename from deployments/deploy/openim-rpc-group-deployment.yml rename to kubernetes/deploy/deployments/openim-rpc-group-deployment.yml diff --git a/deployments/deploy/openim-rpc-group-service.yml b/kubernetes/deploy/deployments/openim-rpc-group-service.yml similarity index 100% rename from deployments/deploy/openim-rpc-group-service.yml rename to kubernetes/deploy/deployments/openim-rpc-group-service.yml diff --git a/deployments/deploy/openim-rpc-msg-deployment.yml b/kubernetes/deploy/deployments/openim-rpc-msg-deployment.yml similarity index 85% rename from deployments/deploy/openim-rpc-msg-deployment.yml rename to kubernetes/deploy/deployments/openim-rpc-msg-deployment.yml index ebe8ec66f..db0abb590 100644 --- a/deployments/deploy/openim-rpc-msg-deployment.yml +++ b/kubernetes/deploy/deployments/openim-rpc-msg-deployment.yml @@ -12,10 +12,9 @@ spec: labels: app: msg-rpc-server spec: - imagePullSecrets: - - name: docker-secret containers: - name: msg-rpc-server-container + # image: openim/openim-rpc-msg:v3.8.3 image: openim-rpc-msg:test env: - name: CONFIG_PATH @@ -35,6 +34,11 @@ spec: secretKeyRef: name: openim-mongo-secret key: mongo_openim_password + - name: IMENV_KAFKA_USERNAME + valueFrom: + secretKeyRef: + name: openim-kafka-secret + key: kafka-username - name: IMENV_KAFKA_PASSWORD valueFrom: secretKeyRef: diff --git a/deployments/deploy/openim-rpc-msg-service.yml b/kubernetes/deploy/deployments/openim-rpc-msg-service.yml similarity index 100% rename from deployments/deploy/openim-rpc-msg-service.yml rename to kubernetes/deploy/deployments/openim-rpc-msg-service.yml diff --git a/deployments/deploy/openim-rpc-third-deployment.yml b/kubernetes/deploy/deployments/openim-rpc-third-deployment.yml similarity index 100% rename from deployments/deploy/openim-rpc-third-deployment.yml rename to kubernetes/deploy/deployments/openim-rpc-third-deployment.yml diff --git a/deployments/deploy/openim-rpc-third-service.yml b/kubernetes/deploy/deployments/openim-rpc-third-service.yml similarity index 100% rename from deployments/deploy/openim-rpc-third-service.yml rename to kubernetes/deploy/deployments/openim-rpc-third-service.yml diff --git a/deployments/deploy/openim-rpc-user-deployment.yml b/kubernetes/deploy/deployments/openim-rpc-user-deployment.yml similarity index 85% rename from deployments/deploy/openim-rpc-user-deployment.yml rename to kubernetes/deploy/deployments/openim-rpc-user-deployment.yml index e9aa29eb0..7b0774bf0 100644 --- a/deployments/deploy/openim-rpc-user-deployment.yml +++ b/kubernetes/deploy/deployments/openim-rpc-user-deployment.yml @@ -12,10 +12,9 @@ spec: labels: app: user-rpc-server spec: - imagePullSecrets: - - name: docker-secret containers: - name: user-rpc-server-container + # image: openim/openim-rpc-user:v3.8.3 image: openim-rpc-user:test env: - name: CONFIG_PATH @@ -35,6 +34,11 @@ spec: secretKeyRef: name: openim-mongo-secret key: mongo_openim_password + - name: IMENV_KAFKA_USERNAME + valueFrom: + secretKeyRef: + name: openim-kafka-secret + key: kafka-username - name: IMENV_KAFKA_PASSWORD valueFrom: secretKeyRef: diff --git a/deployments/deploy/openim-rpc-user-service.yml b/kubernetes/deploy/deployments/openim-rpc-user-service.yml similarity index 100% rename from deployments/deploy/openim-rpc-user-service.yml rename to kubernetes/deploy/deployments/openim-rpc-user-service.yml diff --git a/deployments/deploy/http-ingress.yml b/kubernetes/deploy/ingress/http-ingress.yml similarity index 100% rename from deployments/deploy/http-ingress.yml rename to kubernetes/deploy/ingress/http-ingress.yml diff --git a/deployments/deploy/https-ingress.yml b/kubernetes/deploy/ingress/https-ingress.yml similarity index 100% rename from deployments/deploy/https-ingress.yml rename to kubernetes/deploy/ingress/https-ingress.yml diff --git a/deployments/deploy/clusterRole.yml b/kubernetes/deploy/rbac/clusterRole.yml similarity index 100% rename from deployments/deploy/clusterRole.yml rename to kubernetes/deploy/rbac/clusterRole.yml diff --git a/kubernetes/deploy/secrets/docker-secret.yml b/kubernetes/deploy/secrets/docker-secret.yml new file mode 100644 index 000000000..5329cfd77 --- /dev/null +++ b/kubernetes/deploy/secrets/docker-secret.yml @@ -0,0 +1,18 @@ +apiVersion: v1 +kind: Secret +metadata: + name: docker-secret + namespace: default +type: kubernetes.io/dockerconfigjson +stringData: + .dockerconfigjson: | + { + "auths": { + "your.registry.com": { + "username": "username", + "password": "psw", + "email": "openim@example.com", + "auth": "dXNlcm5hbWU6cHN3" + } + } + } \ No newline at end of file diff --git a/deployments/deploy/kafka-secret.yml b/kubernetes/deploy/secrets/kafka-secret.yml similarity index 54% rename from deployments/deploy/kafka-secret.yml rename to kubernetes/deploy/secrets/kafka-secret.yml index dcee689c8..cc7b3dcd4 100644 --- a/deployments/deploy/kafka-secret.yml +++ b/kubernetes/deploy/secrets/kafka-secret.yml @@ -3,5 +3,8 @@ kind: Secret metadata: name: openim-kafka-secret type: Opaque -data: +stringData: + inter-broker-user: "" + inter-broker-password: "" + kafka-username: "" kafka-password: "" diff --git a/kubernetes/deploy/secrets/minio-secret.yml b/kubernetes/deploy/secrets/minio-secret.yml new file mode 100644 index 000000000..0ee1be559 --- /dev/null +++ b/kubernetes/deploy/secrets/minio-secret.yml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: Secret +metadata: + name: openim-minio-secret +type: Opaque +stringData: + minio-root-user: root + minio-root-password: openIM123 diff --git a/kubernetes/deploy/secrets/mongo-secret.yml b/kubernetes/deploy/secrets/mongo-secret.yml new file mode 100644 index 000000000..c69f6bb2a --- /dev/null +++ b/kubernetes/deploy/secrets/mongo-secret.yml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: openim-mongo-secret +type: Opaque +stringData: + mongo_initdb_root_username: root + mongo_initdb_root_password: openIM123 + mongo_initdb_database: openim_v3 + mongo_openim_username: openIM + mongo_openim_password: openIM123 \ No newline at end of file diff --git a/deployments/deploy/redis-secret.yml b/kubernetes/deploy/secrets/redis-secret.yml similarity index 56% rename from deployments/deploy/redis-secret.yml rename to kubernetes/deploy/secrets/redis-secret.yml index 463ec9545..c19be9dfc 100644 --- a/deployments/deploy/redis-secret.yml +++ b/kubernetes/deploy/secrets/redis-secret.yml @@ -3,5 +3,5 @@ kind: Secret metadata: name: openim-redis-secret type: Opaque -data: - redis-password: b3BlbklNMTIz # "openIM123" in base64 +stringData: + redis-password: openIM123 diff --git a/deployments/deploy/tls-secret.yml b/kubernetes/deploy/secrets/tls-secret.yml similarity index 57% rename from deployments/deploy/tls-secret.yml rename to kubernetes/deploy/secrets/tls-secret.yml index b75e5b617..f4500399c 100644 --- a/deployments/deploy/tls-secret.yml +++ b/kubernetes/deploy/secrets/tls-secret.yml @@ -4,6 +4,6 @@ metadata: name: openim-api-tls namespace: default type: kubernetes.io/tls -data: - tls.crt: - tls.key: +stringData: + tls.crt: + tls.key: diff --git a/deployments/deploy/kafka-service.yml b/kubernetes/deploy/statefulsets/kafka-service.yml similarity index 100% rename from deployments/deploy/kafka-service.yml rename to kubernetes/deploy/statefulsets/kafka-service.yml diff --git a/deployments/deploy/kafka-statefulset.yml b/kubernetes/deploy/statefulsets/kafka-statefulset.yml similarity index 72% rename from deployments/deploy/kafka-statefulset.yml rename to kubernetes/deploy/statefulsets/kafka-statefulset.yml index cad5525fb..2fc13999f 100644 --- a/deployments/deploy/kafka-statefulset.yml +++ b/kubernetes/deploy/statefulsets/kafka-statefulset.yml @@ -49,6 +49,26 @@ spec: value: "CONTROLLER" - name: KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE value: "true" + - name: KAFKA_INTER_BROKER_USER + valueFrom: + secretKeyRef: + name: openim-kafka-secret + key: inter-broker-user + - name: KAFKA_INTER_BROKER_PASSWORD + valueFrom: + secretKeyRef: + name: openim-kafka-secret + key: inter-broker-password + - name: KAFKA_CLIENT_USER + valueFrom: + secretKeyRef: + name: openim-kafka-secret + key: kafka-username + - name: KAFKA_CLIENT_PASSWORD + valueFrom: + secretKeyRef: + name: openim-kafka-secret + key: kafka-password volumeMounts: - name: kafka-data mountPath: /bitnami/kafka diff --git a/deployments/deploy/minio-service.yml b/kubernetes/deploy/statefulsets/minio-service.yml similarity index 100% rename from deployments/deploy/minio-service.yml rename to kubernetes/deploy/statefulsets/minio-service.yml diff --git a/deployments/deploy/minio-statefulset.yml b/kubernetes/deploy/statefulsets/minio-statefulset.yml similarity index 100% rename from deployments/deploy/minio-statefulset.yml rename to kubernetes/deploy/statefulsets/minio-statefulset.yml diff --git a/deployments/deploy/mongo-service.yml b/kubernetes/deploy/statefulsets/mongo-service.yml similarity index 100% rename from deployments/deploy/mongo-service.yml rename to kubernetes/deploy/statefulsets/mongo-service.yml diff --git a/deployments/deploy/mongo-statefulset.yml b/kubernetes/deploy/statefulsets/mongo-statefulset.yml similarity index 82% rename from deployments/deploy/mongo-statefulset.yml rename to kubernetes/deploy/statefulsets/mongo-statefulset.yml index 7180dae8e..6c273432c 100644 --- a/deployments/deploy/mongo-statefulset.yml +++ b/kubernetes/deploy/statefulsets/mongo-statefulset.yml @@ -47,27 +47,27 @@ spec: - name: MONGO_INITDB_ROOT_USERNAME valueFrom: secretKeyRef: - name: openim-mongo-init-secret + name: openim-mongo-secret key: mongo_initdb_root_username - name: MONGO_INITDB_ROOT_PASSWORD valueFrom: secretKeyRef: - name: openim-mongo-init-secret + name: openim-mongo-secret key: mongo_initdb_root_password - name: MONGO_INITDB_DATABASE valueFrom: secretKeyRef: - name: openim-mongo-init-secret + name: openim-mongo-secret key: mongo_initdb_database - name: MONGO_OPENIM_USERNAME valueFrom: secretKeyRef: - name: openim-mongo-init-secret + name: openim-mongo-secret key: mongo_openim_username - name: MONGO_OPENIM_PASSWORD valueFrom: secretKeyRef: - name: openim-mongo-init-secret + name: openim-mongo-secret key: mongo_openim_password - name: TZ value: "Asia/Shanghai" @@ -94,15 +94,3 @@ spec: requests: storage: 5Gi ---- -apiVersion: v1 -kind: Secret -metadata: - name: openim-mongo-init-secret -type: Opaque -data: - mongo_initdb_root_username: cm9vdA== # base64 for "root" - mongo_initdb_root_password: b3BlbklNMTIz # base64 for "openIM123" - mongo_initdb_database: b3BlbmltX3Yz # base64 for "openim_v3" - mongo_openim_username: b3BlbklN # base64 for "openIM" - mongo_openim_password: b3BlbklNMTIz # base64 for "openIM123" diff --git a/deployments/deploy/redis-service.yml b/kubernetes/deploy/statefulsets/redis-service.yml similarity index 100% rename from deployments/deploy/redis-service.yml rename to kubernetes/deploy/statefulsets/redis-service.yml diff --git a/deployments/deploy/redis-statefulset.yml b/kubernetes/deploy/statefulsets/redis-statefulset.yml similarity index 56% rename from deployments/deploy/redis-statefulset.yml rename to kubernetes/deploy/statefulsets/redis-statefulset.yml index cf863837d..bf2c407cb 100644 --- a/deployments/deploy/redis-statefulset.yml +++ b/kubernetes/deploy/statefulsets/redis-statefulset.yml @@ -2,10 +2,8 @@ apiVersion: apps/v1 kind: StatefulSet metadata: name: redis-statefulset - labels: - app: redis spec: - serviceName: "redis-service" + serviceName: "redis" replicas: 1 selector: matchLabels: @@ -20,7 +18,6 @@ spec: image: redis:7.0.0 ports: - containerPort: 6379 - name: redis env: - name: TZ value: "Asia/Shanghai" @@ -33,18 +30,26 @@ spec: - name: redis-data mountPath: /data command: - - /bin/sh - - -c - - | - redis-server \ - --requirepass "$REDIS_PASSWORD" \ - --appendonly yes \ - --dir /data - volumeClaimTemplates: - - metadata: - name: redis-data - spec: - accessModes: ["ReadWriteOnce"] - resources: - requests: - storage: 5Gi + [ + "/bin/sh", + "-c", + 'redis-server --requirepass "$REDIS_PASSWORD" --appendonly yes', + ] + volumes: + - name: redis-config-volume + configMap: + name: openim-config + - name: redis-data + persistentVolumeClaim: + claimName: redis-pvc +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: redis-pvc +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi