創建部署文件
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