Современные организации используют Kubernetes для более быстрой доставки функций. С Kubernetes пользователи могут развертывать и масштабировать контейнерные приложения в любом масштабе: от одной службы до тысяч служб. Часто кривая обучения Kubernetes особенно крута, особенно для разработчиков приложений. Разработка приложений Kubernetes требует новых процессов и новых инструментов. Так как же разработчики JavaScript создают быстрый и эффективный рабочий процесс разработки в Kubernetes?
Есть две основные проблемы, связанные с созданием продуктивных экспериментов по разработке в Kubernetes:
В этом примере мы внесем изменения в код службы NodeJS, работающей между ресурсоемкой службой Java и большим хранилищем данных. Мы начнем с развертывания примера микросервисного приложения, состоящего из 3 сервисов:
На этой архитектурной схеме вы заметите, что запросы от пользователей направляются через входной контроллер к нашим службам. Для простоты мы пропустим шаг развертывания контроллера входящего трафика в этом руководстве. Если вы готовы использовать Telepresence в своей собственной настройке и вам нужен простой способ настроить входной контроллер, мы рекомендуем проверить стек Ambassador Edge , который можно легко настроить с помощью K8s Initializer .
kubectl apply -f https://raw.githubusercontent.com/datawire/edgey-corp-nodejs/main/k8s-config/edgey-corp-web-app-no-mapping.yaml
$ git clone https://github.com/datawire/edgey-corp-nodejs.git
$ cd edgey-corp-nodejs/DataProcessingService
$ npm install && npm start
==trimmed===
Welcome to the DataProcessingNodeService!
{ _: [] }
Server running on port 3000
$ curl localhost:3000/color
“blue”
# Mac OS X
sudo curl -fL https://app.getambassador.io/download/tel2/darwin/amd64/latest/telepresence -o /usr/local/bin/telepresence
#Linux
sudo curl -fL https://app.getambassador.io/download/tel2/linux/amd64/latest/telepresence -o /usr/local/bin/telepresence
$ sudo chmod a+x /usr/loca/bin/telepresence
$ telepresence connect
$ curl -ik https://kubernetes.default.svc.cluster.local
HTTP/1.1 401 Unauthorized
Cache-Control: no-cache, private
Content-Type: application/json
Www-Authenticate: Basic realm="kubernetes-master"
Date: Tue, 09 Feb 2021 23:21:51 GMT
Перехват — это правило маршрутизации для Telepresence. Мы можем создать перехват для маршрутизации трафика, предназначенного для DataProcessingServiceкластера, и вместо этого направить весь трафик на локальную версию, DataProcessingServiceработающую на порту 3000.
telepresence intercept dataprocessingservice --port 3000http://verylargejavaservice:8080. Опять же, Telepresence перехватывает запросы от вашего браузера и направляет их непосредственно в кластер Kubernetes.edgey-corp-nodejs/DataProcessingService/app.jsи измените DEFAULT_COLORс blueна orange. Сохраните файл.Сегодня мы узнали, как использовать Telepresence для быстрой итерации микросервиса NodeJS, работающего в Kubernetes. Теперь вместо того, чтобы ждать медленных локальных процессов разработки, мы можем быстро выполнять итерации с помощью мгновенного цикла обратной связи и продуктивной облачной среды разработки.
Если вы хотите узнать больше о телеприсутствии, ознакомьтесь со следующими ресурсами:
Я читал об усилиях команды Amazon Prime Video по масштабированию и сокращению расходов на 90 % за счет объединения своих микросервисов в монолит. Хотя я уверен, что здесь есть нечто большее, похожие истории опубликованы в Интернете; своего рода опровержение повального увлечения микросервисами последнего десятилетия.
Сокращение затрат или отказ от гибкости? Amazon Prime Video недавно превратила свою службу видеомониторинга в реальном времени из микросервиса в монолит, что привело к снижению затрат на 90%. Давайте углубимся в архитектуру и попробуем понять мотивы, стоящие за переходом от простой экономии средств, и определим, действительно ли это архитектура микросервисов или макросервисов.
Когда вы вырастаете, вам, как правило, говорят, что мир такой, какой он есть, и ваша жизнь состоит в том, чтобы просто жить своей жизнью внутри мира, никогда не рискуя своей жизнью, просто следовать установленному пути и умереть в конце, и стараться не слишком сильно бить стены. Но это очень ограниченная жизнь.
Зуд в моей руке распространился, когда я торговалась с местным книгопродавцом за еще одну книгу. Эта книга, как и остальные, которые я купил недавно, займет свое место в моей стопке «Для чтения» (TBR); и тем не менее, я купил его.
Мы часто обнаруживаем, что изо всех сил пытаемся реализовать то, что, как мы знаем, полезно для нас. От того, чтобы сказать значимому другому, что мы любим его, до того, чтобы помнить, что нужно говорить как пират, всегда будут те, кто утверждает, что день, неделя или месяц событий не нужны, потому что они уже делают эти вещи.
На прошлой неделе я заметил пресс-релиз, разосланный через PressGazette (новостной веб-сайт британских СМИ). В статье сообщалось, что Acast, скандинавская компания по размещению и рекламе подкастов, возглавит консорциум «вероятно, самых влиятельных» издателей подкастинга.