--- apiVersion: v1 kind: Namespace metadata: name: redis --- apiVersion: v1 kind: Secret metadata: name: redis-secret namespace: redis type: Opaque data: password: NjI4akZL --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: redis-data-pvc namespace: redis spec: accessModes: ["ReadWriteMany"] storageClassName: nfs-storage resources: requests: storage: 2Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: redis namespace: redis spec: replicas: 1 selector: matchLabels: app: redis template: metadata: labels: app: redis spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/control-plane operator: DoesNotExist containers: - name: redis image: redis:7-alpine command: ["redis-server", "--requirepass", "$(REDIS_PASSWORD)", "--appendonly", "yes"] ports: - containerPort: 6379 name: redis env: - name: REDIS_PASSWORD valueFrom: secretKeyRef: name: redis-secret key: password volumeMounts: - name: data mountPath: /data volumes: - name: data persistentVolumeClaim: claimName: redis-data-pvc --- apiVersion: v1 kind: Service metadata: name: redis-service namespace: redis spec: type: NodePort selector: app: redis ports: - name: redis protocol: TCP port: 6379 targetPort: 6379 nodePort: 36379