как трафик к openshift_cluster_hostname перенаправляется на веб-консоль openshift
Вопрос 1:
1.1. кто сидит за именем хоста "openshift_master_cluster_public_hostname"? это веб-консоль (служба веб-консоли? или развертывание веб-службы) или что-то еще?
1.2. при выполнении oc get service -n openshift-web-console я вижу, что веб-консоль запущена в 443, разве она не должна работать на порту 8443, то же самое для сервера api, не должно работать на порту 8443?
1.3. не могли бы вы объяснить мне поток запроса к https: // openshift_master_cluster_public_hostname:8443?
1.4. в документации есть
Вопрос 2:
почему я получаю разные ответы на curl и wget?
когда я: curl https: // openshift_master_cluster_public_hostname:8443, я получаю:
{
"paths": [
"/api",
"/api/v1",
"/apis",
"/apis/",
"/apis/admissionregistration.k8s.io",
"/apis/admissionregistration.k8s.io/v1beta1",
"/apis/apiextensions.k8s.io",
"/apis/apiextensions.k8s.io/v1beta1",
...
"/swagger.json",
"/swaggerapi",
"/version",
"/version/openshift"
]
}
когда я: wget https: // openshift_master_cluster_public_hostname:8443, я получаю страницу index.html.
Отвечает ли на этот запрос веб-консоль или
Вопрос 3:
как я могу открыть веб-консоль на порту 443, а не на 8443, я нашел несколько решений:
используя переменные openshift_master_console_port, openshift_master_api_port, но выяснилось, что эти порты являются "внутренними" портами и не предназначены для использования в качестве общедоступных портов. Поэтому изменение этих портов может привести к сбою вашей установки OpenShift.
с помощью внешней службы (описанной здесь)
Я вроде пытаюсь настроить переадресацию портов на внешнем haporxy, это выполнимо?
1 ответ
Ответ на вопрос 1:
1.1. Цитируйте из документации Настройка файла инвентаризации
This variable overrides the public host name for the cluster,
which defaults to the host name of the master. If you use an
external load balancer, specify the address of the external load balancer.
For example:
> openshift_master_cluster_public_hostname=openshift-ansible.public.example.com
Это означает, что эта переменная является общедоступным интерфейсом веб-консоли OpenShift.
1.2 Служба - это виртуальный объект, который связывает имя службы с модулями и используется для соединения объекта маршрута с объектом службы. Это объясняется в документации Services. Вы можете использовать почти каждый порт для службы, потому что он виртуальный, и к этому порту ничего не привязано.
1.3. Ответ зависит от вашей настройки. Я объясняю это в ha-setup с балансировщиком нагрузки TCP перед мастерами.
/> Master API 1
client -> loadbalancer -> Master API 2
\> Master API 3
Клиент делает запрос к https://openshift_master_cluster_public_hostname:8443, балансировщик нагрузки перенаправляет клиента на главный API 1 или 2 или 3, и Клиент получает ответ от запрошенного главного сервера API.
перенаправление сервера api на консоль, если запрос поступает из браузера ( https://github.com/openshift/origin/blob/release-3.11/pkg/cmd/openshift-kube-apiserver/openshiftkubeapiserver/patch_handlerchain.go)
Ответ на вопрос 2:
curl и wget ведут себя по-разному, потому что это разные инструменты, но запрос https одинаковый.
поведение curl с wgetwget --output-document=- https://openshift_master_cluster_public_hostname:8443
поведение wget с помощью curlcurl -o index.html https://openshift_master_cluster_public_hostname:8443
Зачем -
описано в разделе Использование тире (-) вместо имени файла
Ответ на вопрос 3:
Вы можете использовать OpenShift Router, который вы используете для приложений, чтобы сделать веб-консоль доступной на 443. Он немного устарел, но концепция такая же для текущих версий 3.x. Сделайте консоль OpenShift доступной на порту 443 (https) [ОБНОВИТЬ]