部署到azure资源组的VM

问题描述 投票:0回答:1

我在azure上运行kubernetes集群,没有任何公共访问(不是AKS)。

我想使用kubernetes服务连接从azure devops运行kubctl命令。我用它导入证书并指向公共IP,部署工作正常。

但我想知道是否有可能在没有公共机器的情况下访问资源组的vm(可能使用vnet或网关)?

azure-devops
1个回答
1
投票

如果您运行的是Azure Kubernetes群集,那么在Azure DevOps中建立与AKS服务的服务连接非常容易。在该设置下,运行脚本将通过Microsoft数据中心内的Azure自动化安全地完成。

但是,由于您运行自己的Kubernetes集群,因此它基本上就像运行一组恰好位于Azure中的虚拟机。为了让Azure DevOps对您的群集执行命令,您需要提供它可以访问的IP地址,并且由于这些计算机位于不同的网络中,因此您需要在公共IP地址上公开您的群集。这确实感觉像是一个漏洞。

我可以想到两个选择:

  1. Azure DevOps代理的网络安全规则 - 创建虚拟机时,必须将其放入虚拟网络。您可以为该虚拟网络创建网络安全组(NSG),并且可以添加入站规则以允许来自Azure DevOps的连接。所以,是的,它是一个公共IP,但除了你指定的IP地址外,你否认所有的入站流量。 现在,这里面临的挑战是,如果您使用Azure DevOps的托管构建代理(Microsoft提供给您的代理),请务必注意,每次运行构建或发布时,您都会获得一个全新的虚拟机,因此为单个IP地址创建防火墙规则将很困难。您需要配置一系列IP地址。 微软publishes a list of IP Address ranges for their build agents每周一,所以你理论上可以建立一个防火墙规则来限制对这些特定IP地址范围的访问。我不知道这个列表是多么不稳定,或者你是否需要每周更改IP地址范围。这听起来像是工作。
  2. 自托管构建代理 - 如果要完全避免使用公共IP地址,那么您将需要使用“自托管构建代理”(由您提供的机器),以便构建代理可以在同一时间进行通信私有网络作为集群。 使用自托管构建代理意味着您必须负责维护该计算机,但它可以驻留在您可以控制IP地址的内部网络上。您还可以在与群集相同的虚拟网络中设置专用虚拟机。而我个人的最爱,你也可以configure the build agent as a docker container inside your cluster。 vsts代理的docker镜像位于:https://hub.docker.com/_/microsoft-azure-pipelines-vsts-agent

有关构建代理的说明 - 它们不需要防火墙规则,因为它们与Azure DevOps进行出站通信。所有触发器和交互都发生在Azure DevOps网站上,但实际工作被委托给代理。

© www.soinside.com 2019 - 2024. All rights reserved.