Как развернуть сервер apache в openshift? - PullRequest
0 голосов
/ 02 мая 2019

Я хочу развернуть сервер apache в openshift. Мой сервер хорошо работает на моем локальном компьютере, но при развертывании его в openshift я сталкиваюсь со следующей проблемой

(13) Отказано в доступе: AH00072: make_sock: не удалось привязать к адресу [::]: 80 (13) Отказано в доступе: AH00072: make_sock: невозможно связать с адресом 0.0.0.0:80

Возможная причина может заключаться в том, что apache запускается от имени пользователя root, а openshift не позволяет этого!

Может ли кто-нибудь помочь мне с этим?

Ответы [ 3 ]

1 голос
/ 02 мая 2019

Порт 80 является зарезервированным портом и OpenShift Ограничения контекста безопасности по умолчанию не позволяют контейнерам запускаться на этом порту.

Вам следует использовать образ контейнера, который работает на порту, например8080 или 8443.

0 голосов
/ 06 мая 2019

Я рекомендую вам использовать существующие образы для сервера Apache, основанные на rhel7

registry.redhat.io/rhscl/httpd-24-rhel7

Эти образы поддерживают S2I, предоставляют порт 8080 и могут работать с любым UID (не root). Вы можете использовать следующий шаблон: https://github.com/openshift/library/blob/master/official/httpd/imagestreams/httpd-rhel7.json

0 голосов
/ 02 мая 2019

Попробуйте следующую конфигурацию, см. Включите образы контейнеров, для которых требуется Root , чтобы получить более подробную информацию.

Если вы запустили модуль httpd как default serviceaccount, вы можете предоставить anyuid SCC для запуска в качестве root пользователя.Вам следует перезапустить модуль, чтобы изменения вступили в силу.

# oc get pod <your pod name> -o yaml | grep -i serviceAccountName
    serviceAccountName: default

# oc adm policy add-scc-to-user anyuid -z default

# oc delete pod <your pod name>

ОБНОВЛЕНИЕ : В основном порт 80 не будет дублироваться портом хоста 80, если он не работает с hostnetwork scc.Поскольку контейнер изолирован с сетью хоста с помощью функции пространств имен ядра.

Мои доказательства тестирования таковы.

--- haproxy is already running with 80 port on the host.
# ss -ntlpo  | grep -w :80
LISTEN     0      128          *:80                       *:*                   users:(("haproxy",pid=22603,fd=6))

--- Create a project for testing
# oc new-project httpd-test

--- Create a httpd pod
# oc new-app --name httpd24 --docker-image=docker.io/httpd

--- Check the state of the pod
# oc get pod
NAME              READY     STATUS             RESTARTS   AGE
httpd24-1-hhp6g   0/1       CrashLoopBackOff   8          19m

# oc logs httpd24-1-hhp6g
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 10.128.1.201. Set the 'ServerName' directive globally to suppress this message
(13)Permission denied: AH00072: make_sock: could not bind to address [::]:80
(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs

--- Configure "anyuid" for running the httpd pod with 80 port
# oc get pod httpd24-1-hhp6g -o yaml | grep -wi serviceaccountname
  serviceAccountName: default

# oc adm policy add-scc-to-user anyuid -z default
scc "anyuid" added to: ["system:serviceaccount:httpd-test:default"]

# oc delete pod httpd24-1-hhp6g 
pod "httpd24-1-hhp6g" deleted

--- Check the state of httpd pod again
# oc get pod
NAME              READY     STATUS    RESTARTS   AGE
httpd24-1-9djkv   1/1       Running   0          1m

# oc logs httpd24-1-9djkv 
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 10.128.1.202. Set the 'ServerName' directive globally to suppress this message
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 10.128.1.202. Set the 'ServerName' directive globally to suppress this message
[Mon May 06 12:10:47.487909 2019] [mpm_event:notice] [pid 1:tid 139699524075584] AH00489: Apache/2.4.39 (Unix) configured -- resuming normal operations
[Mon May 06 12:10:47.488232 2019] [core:notice] [pid 1:tid 139699524075584] AH00094: Command line: 'httpd -D FOREGROUND'

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...