Конечные пути для API внутри Docker и Kubernetes - PullRequest
0 голосов
/ 26 октября 2018

Я новичок в Докере и Кубернетесе. А сейчас я занимаюсь разработкой Restful API, которые впоследствии будут развернуты в контейнерах Docker в кластере Kubernetes.

Как будет изменен путь конечных точек? Я слышал, что Docker-Swarm и Kubernetes добавляют некоторые орды к конечным точкам.

1 Ответ

0 голосов
/ 26 октября 2018

Часть "path" самих URL конечных точек (для этого вопроса SO, часть /questions/53008947/...) не изменится.Но остальная часть URL может.

Docker публикует сервисы на уровне TCP-порта (опция docker run -p, раздел Docker Compose ports:) и не смотрит, какой трафик проходит через порт.Если в вашем стеке есть что-то вроде прокси-сервера Apache или nginx, которое может изменить сопоставления путей уровня HTTP, но вы, вероятно, знаете об этом в своей среде.

Kubernetes работает аналогично, нобольше слоев.Контейнер работает в модуле Pod и может публиковать некоторые порты из модуля Pod.Это не используется напрямую;вместо этого Сервис ссылается на Pod (по его меткам) и повторно публикует свои порты, возможно, на разных номерах портов.Сервис имеет DNS-имя service-name.namespace.svc.cluster.local, которое можно использовать в кластере;вы также можете настроить службу так, чтобы она была доступна на фиксированном TCP-порте на каждом узле службы (NodePort) или, если ваш Kubernetes работает на провайдере публичного облака, создать там балансировщик нагрузки (LoadBalancer),Опять же, все это строго на уровне TCP и не влияет на пути HTTP.

Существует еще одна часть Kubernetes, контроллер Ingress, который действует как декларативная оболочка для прокси-сервера nginx (или чего-то еще).с аналогичным функционалом). работает на уровне HTTP и может изменять пути.

Другим следствием этого является то, что URL для доступа к службе может отличаться в разных средах: http://localhost:12345/path в локальнойнастройка разработки, http://other_service:8080/path в Docker Compose, http://other-service/path в Kubernetes, https://api.example.com/other/path в производстве.Вам нужен какой-то способ сделать это настраиваемым (часто это переменная окружения).

...