Проблема с Laravel в Kubernetes: не применяются переменные средыPhp

Кемеровские программисты php общаются здесь
Ответить
Гость
 Проблема с Laravel в Kubernetes: не применяются переменные среды

Сообщение Гость »


Я развернул Laravel в Kubernetes и настроил переменные среды с помощью Kubernetes Secrets. Переменные среды включают учетные данные RDS. Когда я проверяю контейнер, я вижу, что учетные данные RDS правильно заполнены из секрета. Однако когда я пытаюсь получить доступ к любой конечной точке API, я сталкиваюсь со следующей ошибкой:

Код: Выделить всё

Illuminate\Database\QueryException: SQLSTATE[HY000] [2002] Connection refused (Connection: mysql, SQL: select count(*) as aggregate from 'users' where 'email' = jhon@gmail.com)
Справочная информация:
  • Я могу получить доступ к RDS со своего сервера, используя конечную точку RDS, имя пользователя и пароль.

Код: Выделить всё

ubuntu@ip-xxxxxxxxxxx:/ecom-prod$ mysql -h ecom-db-identifier.xxxxxxxx.us-east-1.rds.amazonaws.com -u root -p
Enter password: xxxxx
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 113
Server version: 8.0.35 Source distribution

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| ecom               |
| sys                |
+--------------------+
5 rows in set (0.29 sec)

mysql> use ecom
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+------------------------+
| Tables_in_ecom         |
+------------------------+
| activity_log           |
| comments               |
| failed_jobs            |
| migrations             |
| password_reset_tokens  |
| permissions            |
| personal_access_tokens |
| policies               |
| users                  |
+------------------------+
9 rows in set (0.28 sec)

mysql>
  • База данных и таблицы существуют, и я могу запрашивать данные из базы данных с помощью команд терминала.
  • Когда я проверяю конфигурацию соединения с помощью php artisan Tinker, я получаю ожидаемую конфигурацию базы данных.
Предпринятые шаги:
  • Успешный доступ к RDS с сервера с помощью MySQL CLI.
  • Подтверждено существование базы данных и таблиц.
  • Проверено, что данные можно получить из базы данных с помощью php artisan Tinker.
Ожидаемое поведение:
Я ожидаю, что Laravel будет использовать переменные среды, предоставленные Kubernetes Secrets, для успешного подключения к базе данных RDS.
Фактическое поведение:
Несмотря на то, что переменные среды правильно заполненный в контейнере, Laravel, похоже, использует конфигурацию базы данных по умолчанию, что приводит к ошибке «Соединение отклонено».
Я могу читать данные из базы данных с помощью php artisan Tinker . Например:

Код: Выделить всё

> App\Models\User::find(1);
= App\Models\User {#5534
id: 1,
name: "Test User",
email: "test@example.com",
#email_verified_at: "2024-03-12 15:52:14",
#password: "y$.bHDGgvm4zY.ucub4L.avOcERJzaS72sC0GZna6cAhy2/3xI1Cr/e",
image: null,
#remember_token: "SnA9FiQFl8",
created_at: "2024-03-12 15:52:14",
updated_at: "2024-03-12 15:52:14",
}
Дополнительная информация:
Я создал тестовый маршрут и добавил в контроллер следующий код, чтобы проверить конфигурацию базы данных в браузере:

Код: Выделить всё

\DB::connection(config('database.default'))->getConfig()

Удивительно, но это возвращает конфигурацию базы данных по умолчанию из config/database.php, что указывает на то, что Laravel не получает переменные среды, установленные Kubernetes Secrets.

Код: Выделить всё

{"driver":"mysql","host":"127.0.0.1","port":"3306","database":"forge","username":"forge","password":"","unix_socket":"","charset":"utf8mb4","collation":"utf8mb4_unicode_ci","prefix":"","prefix_indexes":true,"strict":true,"engine":null,"options":[],"name":"mysql"}

Question:
Why is Laravel not using the environment variables provided by Kubernetes Secrets for database configuration, and how can I resolve this issue?
Any insights or suggestions would be greatly appreciated. Thank you!


Источник: https://stackoverflow.com/questions/781 ... ot-applied
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»