Веб-интерфейс базы данных H2 отвечает с ошибкой «Хост не найден»

Когда я пытаюсь открыть веб-интерфейс xyz.com/h2/ базы данных H2 в своем браузере, я получаю следующий ответ в виде открытого текста:

Host xyz.com not found

Я использую базу данных H2 в среде Kubernetes.

Для запуска базы данных H2 используются следующие параметры JVM:

        command:
          - java
        args:
          - -cp
          - /opt/h2/h2.jar
          - org.h2.tools.Server
          - -baseDir
          - /opt/h2/data
          - -tcp
          - -tcpPort
          - "9092"
          - -tcpAllowOthers
          - -web
          - -webDaemon
          - -webPort
          - "8082"
          - -webAllowOthers
          - -ifNotExists

Когда я включаю трассировку с помощью опции -trace, я вижу ошибку HTTP 404 Not Found в журналах сервера базы данных H2.

Версии, которые я использую: Н2: 2.2.224 Кубернетес: 1,26 Ява: JDK11

Я ожидаю увидеть консоль графического интерфейса (веб-интерфейс) базы данных H2 при запросе URL-адреса. Например, с H2 версии 1.4.196 приведенная выше конфигурация работает.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
79
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение: использовать опцию webExternalNames JVM, чтобы разблокировать имена хостов, с которых должен быть запрошен мой экземпляр базы данных H2.

В моем случае командная строка в манифесте развертывания Kubernetes теперь выглядит так:

command:
          - java
        args:
          - -cp
          - /opt/h2/h2.jar
          - org.h2.tools.Server
          - -baseDir
          - /opt/h2/data
          - -tcp
          - -tcpPort
          - "9092"
          - -tcpAllowOthers
          - -web
          - -webDaemon
          - -webPort
          - "8082"
          - -webAllowOthers
          - -webExternalNames
          - xyz.com,localhost,h2-v2,h2-v2.build,h2-v2.build.svc.cluster.local
          - -ifNotExists

xyz.com = это имя хоста при запросе веб-интерфейса H2 из-за пределов кластера Kubernetes.

localhost = адрес обратной связи при вызове веб-интерфейса из модуля Kubernetes

h2-v2 = имя службы Kubernetes для вызова веб-интерфейса из другого модуля в том же пространстве имен в том же кластере Kubernetes.

h2-v2.* = имя службы Kubernetes в сочетании с пространством имен (сборка) и полным доменным именем (svc.cluster.local) для поддержки различных конфигураций в модулях одного и того же или разных пространств имен в одном кластере Kubernetes.

Список всех вариантов JVM для запуска экземпляра сервера базы данных H2 вы можете получить здесь: H2database.com/javadocs

Комбинация -webAllowOthers/-tcpAllowOthers/-pgAllowOthers с -ifNotExists эффективно открывает брешь в удаленной безопасности вашей системы, если к этим портам можно получить доступ из ненадежных сетей.

Evgenij Ryazanov 10.05.2024 09:30

Спасибо за подсказку. Я знаю эту проблему уже из чтения документации. Мы используем H2 в интранете и только для тестирования. Невозможно войти в базу данных из любой ненадежной сети за пределами нашей организации.

snukone 10.05.2024 09:48

Другие вопросы по теме