#php #kubernetes #kubectl #fpm
Вопрос:
На моем сервере DO я пытаюсь запустить kubectl get deployments -o=json
shell_exec
, но он либо возвращает null
, либо пустой список:
{
"apiVersion": "v1",
"items": [],
"kind": "List",
"metadata": {
"resourceVersion": "",
"selfLink": ""
}
}
Но когда я запускаю его локально, он работает:
{
"apiVersion": "v1",
"items": [
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"annotations": {
"deployment.kubernetes.io/revision": "1",
"kubectl.kubernetes.io/last-applied-configuration": "..."
},
"creationTimestamp": "2021-09-23T11:41:11Z",
"generation": 1,
"name": "database-1911797883",
"namespace": "default",
"resourceVersion": "...",
"uid": "..."
},
"spec": {
...
"replicas": 1,
"revisionHistoryLimit": 10,
"selector": {
"matchLabels": {
"app": "database-1911797883"
}
},
"template": {
"metadata": {
"creationTimestamp": null,
"labels": {
"app": "database-1911797883"
}
},
"spec": {
"containers": [
{
"image": "...",
"imagePullPolicy": "Always",
"name": "database-1911797883",
"resources": {},
"terminationMessagePath": "/dev/termination-log",
"terminationMessagePolicy": "File"
}
],
"dnsPolicy": "ClusterFirst",
"restartPolicy": "Always",
"schedulerName": "default-scheduler",
"securityContext": {},
"terminationGracePeriodSeconds": 30
}
}
},
"status": {
"availableReplicas": 1,
"conditions": [
...
],
"observedGeneration": 1,
"readyReplicas": 1,
"replicas": 1,
"updatedReplicas": 1
}
}
],
"kind": "List",
"metadata": {
"resourceVersion": "",
"selfLink": ""
}
}
Я знаю, что shell_exec
это не отключено в php-fpm и kubectl config view
выводит одни и те же значения в обоих shell_exec
и cli.
Я настроил запуск php-fpm от имени того же пользователя, который выполняет команду через интерфейс командной строки.
Комментарии:
1. Попробуйте изменить команду на
kubectl get deployments -n default -o json
Ответ №1:
Откройте свой /etc/php-fpm.d/www.conf
(или любой conf
другой файл, который у вас там есть, который вы используете для своего Интернета) и раскомментируйте clear_env = no
.
clear_env bool
Clear environment in FPM workers. Prevents arbitrary environment
variables from reaching FPM worker processes by clearing the environment
in workers before env vars specified in this pool configuration are added.
Default value: Yes.
Следовательно, установка этого значения no
позволит работникам использовать информацию об окружающей среде, ведущую к ожидаемому результату.