用户名的环境变量是什么?
作者:互联网
在使用 Redis 6.0 及更高版本时,可以使用 --requirepass
命令行选项设置密码,并使用 ACL (Access Control List) 来设置用户名。Redis 通常不会通过环境变量设置用户名,而是直接通过 Redis 命令或配置文件管理。
如果您希望在 Kubernetes 中通过环境变量设置 Redis 的用户名,建议您在容器启动时通过 redis.conf
文件配置 ACL(即访问控制列表)。
Redis 用户名和密码的配置
对于 Redis 的 ACL,您可以使用命令来设置用户和密码。以下是您在 Kubernetes 中运行 Redis 时设置用户名和密码的示例方式:
-
在 Redis 中定义 ACL 用户和密码: 您可以通过 Redis 配置文件,或者在启动 Redis 时通过命令行进行设置。
-
基于环境变量的示例配置:
以下是如何通过 Kubernetes 的 ConfigMap
来传递用户名和密码,并在 Redis 启动时引用它们的示例。
示例配置
以下是一个完整的示例,创建一个 ConfigMap
和一个 StatefulSet
将 Redis 的用户名和密码设置为环境变量。
apiVersion: v1
kind: ConfigMap
metadata:
name: redis-config
data:
redis.conf: |
# Redis configuration file
requirepass ${REDIS_PASSWORD}
user default on >${REDIS_PASSWORD} ~* +@all
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis
spec:
serviceName: "redis"
replicas: 1
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redis:alpine
ports:
- containerPort: 6379
env:
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secret
key: redis-password
command:
- "sh"
- "-c"
- |
set -ex
# Start redis with the configuration file
exec redis-server /usr/local/etc/redis/redis.conf
volumeMounts:
- name: redis-config
mountPath: /usr/local/etc/redis
volumes:
- name: redis-config
configMap:
name: redis-config
---
apiVersion: v1
kind: Service
metadata:
name: redis
spec:
ports:
- port: 6379
targetPort: 6379
selector:
app: redis
YAML
说明
- ConfigMap:使用一个
ConfigMap
将 Redis 配置文件中的 ACL 设置,使用${REDIS_PASSWORD}
占位符。 - 环境变量:在 Pod 的环境中设定
REDIS_PASSWORD
,然后在 Redis 启动时用该环境变量设置密码和用户。 - ACL 设置:配置文件中
user default on >${REDIS_PASSWORD} ~* +@all
允许默认用户访问所有命令并使用指定的密码。
连接到 Redis
连接到 Redis 实例时,您可以使用 Redis CLI 通过指定用户名和密码进行连接:
redis-cli -h redis -p 6379 -a your_password --user default
Shell
标签: 来源: