#oauth #openshift
#oauth #openshift
Вопрос:
Пользовательский интерфейс консоли в моей установке OpenShift 4.5.x таинственным образом перестал работать. Посещение URL-адреса консоли теперь приводит к появлению сообщения:
Приложение недоступно
В настоящее время приложение не обслуживает запросы в этой конечной точке. Возможно, он не был запущен или все еще запускается.
Обычно это видно, если маршрут существует, но не может найти соответствующую службу или модуль, но в этом случае маршрут существует:
$ oc -n openshift-console get route
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
console console-openshift-console.apps.example.com console https reencrypt/Redirect None
downloads downloads-openshift-console.apps.example.com downloads http edge/Redirect None
Служба существует:
$ oc -n openshift-console get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
console ClusterIP 172.30.36.70 <none> 443/TCP 57d
downloads ClusterIP 172.30.190.186 <none> 80/TCP 57d
И модули существуют и исправны:
$ oc -n openshift-console get pods
NAME READY STATUS RESTARTS AGE
console-76c8d7d755-gtfm8 0/1 Running 1 4m12s
console-76c8d7d755-mvf6n 0/1 Running 1 4m12s
downloads-9656c996-mmqhk 1/1 Running 0 53d
downloads-9656c996-z2khj 1/1 Running 0 53d
Просматривая журналы для консольных модулей, похоже, возникла проблема с обращением к службе oauth:
2021-01-04T22:05:48Z auth: error contacting auth provider (retrying in 10s): Get https://kubernetes.default.svc/.well-known/oauth-authorization-server: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
2021-01-04T22:05:58Z auth: error contacting auth provider (retrying in 10s): request to OAuth issuer endpoint https://oauth-openshift.apps.example.com/oauth/token failed: Head https://oauth-openshift.apps.example.com: EOF
2021-01-04T22:06:13Z auth: error contacting auth provider (retrying in 10s): request to OAuth issuer endpoint https://oauth-openshift.apps.example.com/oauth/token failed: Head https://oauth-openshift.apps.example.com: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
2021-01-04T22:06:23Z auth: error contacting auth provider (retrying in 10s): request to OAuth issuer endpoint https://oauth-openshift.apps.example.com/oauth/token failed: Head https://oauth-openshift.apps.example.com: EOF
2021-01-04T22:06:38Z auth: error contacting auth provider (retrying in 10s): request to OAuth issuer endpoint https://oauth-openshift.apps.example.com/oauth/token failed: Head https://oauth-openshift.apps.example.com: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
2021-01-04T22:06:53Z auth: error contacting auth provider (retrying in 10s): request to OAuth issuer endpoint https://oauth-openshift.apps.example.com/oauth/token failed: Head https://oauth-openshift.apps.example.com: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Но модули в openshift-authentication
пространстве имен выглядят исправными и не сообщают о каких-либо ошибках в журналах. Где я должен искать источник проблемы?
Ожидаемый маршрут и служба существуют в openshift-authentication
пространстве имен:
$ oc -n openshift-authentication get route
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
oauth-openshift oauth-openshift.apps.example.com oauth-openshift 6443 passthrough/Redirect None
$ oc -n openshift-authentication get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
oauth-openshift ClusterIP 172.30.233.202 <none> 443/TCP 57d
$ oc -n openshift-authentication get route oauth-openshift -o json | jq .status
{
"ingress": [
{
"conditions": [
{
"lastTransitionTime": "2020-11-08T19:48:08Z",
"status": "True",
"type": "Admitted"
}
],
"host": "oauth-openshift.apps.example.com",
"routerCanonicalHostname": "apps.example.com",
"routerName": "default",
"wildcardPolicy": "None"
}
]
}
Комментарии:
1. Похоже, что ваша конечная точка-эмитент OAuth работает не так, как ожидалось.
https://oauth-openshift.apps.example.com
Существует ли маршрут в вашем кластере? Существует ли служба? Можете ли вы добавить этот вывод к своему вопросу?2. @simon Я обновил вопрос; сервис и маршрут существуют и, насколько я могу судить, выглядят нормально.
3. Спасибо, пока все хорошо. Проверьте, можете ли вы достичь » oauth-openshift.apps.example.com/oauth/token » извне (с помощью
curl
или аналогично). Если это так, возможно, модули консоли используют какой-то прокси для подключения к этой конечной точке? Трудно сказать.4. Попытка получить
curl
URL-адрес извне кластера приводитcurl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to oauth-openshift.apps.example.com:443
к.
Ответ №1:
Оказалось, что это проблема с входными маршрутизаторами по умолчанию. Очевидных ошибок не было, но я смог решить проблему, перезапустив маршрутизаторы:
oc -n openshift-ingress get pod -o json |
jq -r '.items[].metadata.name' |
xargs oc -n openshift-ingress delete pod
Ответ №2:
у меня была такая же проблема в OpenShift 3.11
я только что удалил секрет с сертификатом, openshift создаст новый секрет, теперь консоль работает.
oc delete secret console-serving-cert -n openshift-console