Развертывание на виртуальной машине группы ресурсов Azure

Я запускаю кластер kubernetes на Azure без какого-либо общего доступа (не AKS).

Я хотел бы запускать команды kubctl из azure devops, используя подключение к службе kubernetes. Я использовал его для импорта сертификатов и указания общедоступного IP-адреса, и развертывание сработало.

Но мне было интересно, есть ли возможность получить доступ к виртуальной машине группы ресурсов (возможно, с использованием vnet или шлюза), не имея машины в открытом доступе?

Итак, в идеале вы хотели бы настроить Azure DevOps для связи с частной сетью, почти как в локальной сети?

bryanbcook 10.04.2019 22:40

@bryanbcook Я видел, как создавать виртуальные машины групп ресурсов как часть конвейера, а затем развертывать веб-приложения. Но поскольку я новичок во всей этой лазурной сервисной вселенной, возможно, я неправильно понял. В моем случае это немного отличается: я хочу общаться с существующей виртуальной машиной внутри группы ресурсов Azure.

johannes.schmidt.delaunay 11.04.2019 02:58
Стоит ли изучать 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
2
248
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Если бы вы использовали кластер Azure Kubernetes, было бы очень легко установить подключение службы в Azure DevOps к службе AKS. При такой настройке запуск ваших сценариев будет выполняться безопасно с помощью автоматизации Azure в центрах обработки данных Microsoft.

Однако, поскольку вы используете свой собственный кластер Kubernetes, это в основном похоже на запуск набора виртуальных машин которые просто оказались в Azure. Чтобы Azure DevOps мог выполнять команды для вашего кластера, вам нужно указать IP-адрес, до которого он может добраться, и, поскольку эти машины находятся в разных сетях, вам кажется, что вам нужно предоставить доступ к вашему кластеру на общедоступном IP-адресе. Это действительно похоже на уязвимость.

Я могу думать о двух вариантах:

  1. Правило сетевой безопасности для агентов Azure DevOps — когда вы создавали виртуальную машину, вам нужно было поместить ее в виртуальную сеть. Вы можете создать группу безопасности сети (NSG) для этой виртуальной сети и добавить правило для входящих подключений, чтобы разрешить подключения из Azure DevOps. Итак, да, это будет общедоступный IP-адрес, но вы запретите весь входящий трафик, кроме указанных вами IP-адресов.

    Теперь проблема заключается в том, что если вы используете размещенный агент сборки для Azure DevOps (агент, предоставленный вам Microsoft), важно отметить, что каждый раз, когда вы запускаете сборку или выпуск, вы получаете совершенно новую виртуальную машину, поэтому будет сложно создать правило брандмауэра для одного IP-адреса. Вам нужно настроить диапазон IP-адресов.

    Microsoft публикует список диапазонов IP-адресов для своих агентов сборки каждый понедельник, поэтому теоретически вы можете настроить правило брандмауэра, чтобы ограничить доступ к этим конкретным диапазонам IP-адресов. Я понятия не имею, насколько изменчив этот список, и нужно ли вам еженедельно менять диапазоны IP-адресов. Это похоже на работу.

  2. Самостоятельный агент сборки — если вы хотите полностью избежать общедоступного IP-адреса, вам следует использовать «самостоятельно размещенный агент сборки» (предоставленный вами компьютер), чтобы агент сборки мог общаться в той же частной сети, что и кластер.

    Использование собственного агента сборки означает, что вам придется взять на себя ответственность за обслуживание этой машины, но она может находиться в вашей внутренней сети, где вы можете контролировать IP-адрес. Вы также можете настроить выделенную виртуальную машину в той же виртуальной сети, что и кластер. И мой личный фаворит, вы также можете настройте агент сборки как контейнер докеров внутри вашего кластера. Образ докера для агента vsts находится здесь: https://hub.docker.com/_/microsoft-azure-pipelines-vsts-agent

Примечание об агентах сборки: для них не требуются правила брандмауэра, поскольку они обмениваются данными с Azure DevOps. Все триггеры и взаимодействия происходят на веб-сайте Azure DevOps, но фактическая работа делегируется агенту.

Большое спасибо за ваше время и ответ. Я тоже думал о втором варианте!!! Я увидел docs.microsoft.com/en-us/azure/devops/pipelines/agents/… и был уверен, что могу оставить все на своих лазурных виртуальных машинах и позволить своему агенту выполнять эту работу. Спасибо еще раз!

johannes.schmidt.delaunay 12.04.2019 00:59

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