vllm-project / vllm-project/aibrix
Helm chart: Redis password not set on Redis server when enabled
- Dominant language
- Go
- Stars
- 5.1k
- Forks
- 697
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 104
Description
### 🐛 Describe the bug
When deploying AIBrix via the Helm chart with Redis password authentication enabled (metadata.redis.enablePassword=true and metadata.redis.password set), the metadata-service pod fails to start with a Redis AuthenticationError.
### Steps to Reproduce
1. Deploy AIBrix using the Helm chart with the following configuration in values.yaml:
```
metadata:
redis:
enablePassword: true
password:
```
2. Wait for all pods to be deployed.
3. Check the status and logs of the metadata-service pod:
kubectl tail the crashloopbackoff metadata-service pod:
```
2026-06-25 08:24:07,189 - redis.py:211 - get_redis_client - INFO - {"host": "aibrix-redis-master", "port": 6379, "db": 0, "password_configured": true, "require_check": false, "extra_kwargs": ["decode_responses"], "event": "Creating Redis client", "logger": "aibrix.client.redis", "level": "info", "timestamp": "2026-06-25 08:24:07 UTC"}
ERROR: Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 693, in lifespan
async with self.lifespan_context(app) as maybe_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 133, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 133, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 133, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 133, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 133, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/aibrix/metadata/app.py", line 177, in lifespan
await app.state.batch_driver.start()
File "/usr/local/lib/python3.11/site-packages/aibrix/batch/driver.py", line 156, in start
await self.run_coroutine(self._job_entity_manager.start())
File "/usr/local/lib/python3.11/site-packages/aibrix/batch/driver.py", line 215, in run_coroutine
return await coro
^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/aibrix/batch/state/job_entity_manager.py", line 195, in start
await self._bootstrap_jobs()
File "/usr/local/lib/python3.11/site-packages/aibrix/batch/state/job_entity_manager.py", line 245, in _bootstrap_jobs
for job in await self._list_recovery_jobs():
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/aibrix/batch/state/job_store.py", line 79, in _list_recovery_jobs
await batch_metastore.get_oldest_unfinished_job_created_at()
File "/usr/local/lib/python3.11/site-packages/aibrix/batch/storage/batch_metastore.py", line 285, in get_oldest_unfinished_job_created_at
raw, exists = await get_metadata(OLDEST_UNFINISHED_JOB_CREATED_AT_KEY)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/aibrix/batch/storage/batch_metastore.py", line 154, in get_metadata
data = await p_metastore.get_object(key)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/aibrix/storage/redis.py", line 197, in get_object
data = await redis_client.get(key)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/redis/asyncio/client.py", line 641, in execute_command
conn = self.connection or await pool.get_connection()
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/redis/asyncio/connection.py", line 1100, in get_connection
await self.ensure_connection(connection)
File "/usr/local/lib/python3.11/site-packages/redis/asyncio/connection.py", line 1133, in ensure_connection
await connection.connect()
File "/usr/local/lib/python3.11/site-packages/redis/asyncio/connection.py", line 305, in connect
await self.on_connect()
File "/usr/local/lib/python3.11/site-packages/redis/asyncio/connection.py", line 378, in on_connect
auth_response = await self.read_response()
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/redis/asyncio/connection.py", line 562, in read_response
response = await self._parser.read_response(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/redis/_parsers/resp2.py", line 82, in read_response
response = await self._read_response(disable_decoding=disable_decoding)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/redis/_parsers/resp2.py", line 102, in _read_response
raise error
redis.exceptions.AuthenticationError: AUTH called without any password configured for the default user. Are you sure your configuration is correct?
ERROR: Application startup failed. Exiting.
```
### Expected behavior
The metadata-service should successfully authenticate with the Redis server using the configured password and start without errors.
### Environment
- AIBrix version: v0.7.0
Contributor guide
Research direction
Start with the metadata.redis settings in values.yaml and trace how they reach the Redis deployment and metadata-service. Read aibrix/storage/redis.py and the startup path shown through aibrix/metadata/app.py, then reproduce the deployment with password authentication enabled. Done means the Redis server accepts the configured password and metadata-service starts without AuthenticationError.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- helm, kubernetes, python, redis
- Domain
- devops, infrastructure
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100