创建部署文件
vim redis.yaml
添加如下内容:
apiVersion: v1
kind: Namespace
metadata:name: redis
---
apiVersion: v1
kind: Secret
metadata:name: redis-passwordnamespace: redis
type: Opaque
data:password: d2d3cmhnZWE= # 建议生产环境使用更复杂的密码
---
apiVersion: v1
kind: ConfigMap
metadata:name: redis-confignamespace: redis
data:redis.conf: |# 这里放置其他Redis配置,但移除了requirepass行# 密码将通过命令行动态传入maxmemory 256mbmaxmemory-policy allkeys-lruappendonly yes
---
apiVersion: apps/v1
kind: Deployment
metadata:name: redisnamespace: redis
spec:replicas: 1selector:matchLabels:app: redistemplate:metadata:labels:app: redisspec:containers:- name: redisimage: redis:6.2ports:- containerPort: 6379env:- name: REDIS_PASSWORDvalueFrom:secretKeyRef:name: redis-passwordkey: password# 主要修改点在这里:通过命令行参数传递密码command: - "redis-server"- "/usr/local/etc/redis/redis.conf"- "--requirepass"- "$(REDIS_PASSWORD)" # 这里会正确解析环境变量volumeMounts:- name: redis-configmountPath: /usr/local/etc/redis/redis.confsubPath: redis.confresources:requests:memory: "64Mi"cpu: "100m"limits:memory: "256Mi"cpu: "500m"readinessProbe:exec:command:- redis-cli- -a- $(REDIS_PASSWORD)- pinginitialDelaySeconds: 5periodSeconds: 10volumes:- name: redis-configconfigMap:name: redis-config
---
apiVersion: v1
kind: Service
metadata:name: redis-servicenamespace: redis
spec:selector:app: redisports:- protocol: TCPport: 6379targetPort: 6379# type: ClusterIP 是默认值,如果只在集群内部访问,无需修改# 如果要从集群外部访问,可以改为 NodePort 或 LoadBalancer# type: LoadBalancer
启动服务
kubectl apply -f redis.yaml
查看服务
kubectl get pods -n redis