微软azure 容器服务
当您到达devops构建管道的结尾时,您会看到一系列工件:二进制文件,配置文件,Web页面,甚至虚拟机和容器。 它们是一起构成现代应用程序的组件。 将尽可能多的这些组件包装到一个容器中很有意义,这为您提供了一个更简单的部署模型。 但这留下了一系列新问题:如何管理这些容器以及如何在全球规模的云应用程序中部署它们?
GitHub之类的服务使用开放标准和开放源代码为您的构建工件提供私有和公共注册表。 Azure 使用开放源代码Docker Registry 2.0作为其自己的容器注册表(与Open Container Initiative兼容)的基础进行了相同的操作 。 它不仅仅用于容器; 随着基于Kubernetes的云原生应用程序的重要性日益提高,它打算成为所有符合OCI的构建工件的一站式存储库。 现在包括Helm图表,因此您可以使用Azure的Container Registry(ACR)作为应用程序的部署中心,并使用Helm 3.0交付到Kubernetes实例。
[ 也在InfoWorld上:复杂性会杀死Kubernetes吗? ]
ACR入门
最好将诸如Azure容器注册表之类的工具视为私有注册表。 只有您以及您的团队和服务可以访问您的注册表,从而自动向使用容器的Azure服务交付。 可以将诸如Azure DevOps和Jenkins之类的熟悉工具配置为使用注册表作为构建终点,因此您可以直接将合并请求合并到Azure上的容器中,以进行部署。
Microsoft当前以三种不同的价格提供三种版本的ACR:Basic,Standard和Premium 。 它们都与Web挂钩一起使用,使用Azure Active Directory进行身份验证,并具有删除映像的功能。 基本版的容量最低; Premium包括对跨区域复制的支持,并增加了图像签名支持。 您最有可能使用Standard,它为您提供100GB的存储空间,60MBps的下载带宽,并支持多达10个Web挂钩。 每天每个注册表定价,额外的网络成本和构建新容器映像时的CPU使用费另行收费。
使用Azure CLI或门户网站,创建新的容器注册表相对容易。 ACR实例与资源组相关联,因此对于在Azure上运行的每个应用程序,您可以有一个单独的注册表。 创建注册表后,将为您提供登录服务器的URL。 这是与devops工具或开发人员的桌面Docker实例集成的终点。
与ACR注册中心互动
Azure CLI的acr
命令可能是与注册表交互的最有用的方法。 登录后,您可以开始将容器映像推送到其中。 从桌面开始,以了解其工作方式是一个好主意,用ACR登录服务器名称标记本地Docker映像,然后使用docker push
命令将映像发送到ACR注册表,自动创建Azure中适当的存储库。 将映像保存在ACR存储库中后,请使用命令行工具列出文件,删除文件,甚至使用Docker命令运行它们。
使用ACR任务使ACR自动化可以大大减少您的工作量。 任务将原本是一组Azure CLI脚本的内容捆绑到管理常用操作的简单工作流中。 例如,它们提供了一系列触发器,这些触发器可以在构建管道或持续集成/连续交付(CI / CD)系统中发生更改时自动构建新映像。
一个选项, 即quick task ,将用于将一组文件构建到容器中的所有阶段包装到一个命令中。 您只需要一个包含文件的工作目录,一个现有的ACR注册表和一个Dockerfile。 单个命令将获取这些文件,并使用Dockerfile创建映像,然后将其自动存储在ACR存储库中。 另一个快速任务是在您选择的主机上运行映像。
将它们放在一起,您便拥有了一组用于测试容器映像的基本工具。 更复杂的部署将需要更复杂的脚本,例如,使用AKS将容器部署到托管Kubernetes实例。 或者,您可以自动化整个过程,创建一个任务来监视GitHub存储库中部署分支的更改,在将拉取请求合并到分支或进行提交时构建新映像。
将容器固定在ACR中
使用ACR有安全优势 。 构建现代应用程序的任何人都面临的主要问题之一是理解和管理依赖关系树。 您如何知道密钥库的新版本或混淆的组件是否可以安全使用? 您需要能够信任您的容器,并且ACR提供了两种方法来确保始终部署可信代码。
首先,它提供了签名的容器映像 ,因此您的Kubernetes集群可以验证其运行的代码是否是您从构建系统推送到注册表的代码。 签名的图像可确保在部署容器时没有人篡改容器中的内容。 其次,ACR可以与Azure的安全中心集成。 这样,您就可以扫描存储在注册表中的图像,不仅检查代码和基本图像中的漏洞,还可以检查图像文件中包含或引用的任何依赖项。 使用Qualys的扫描仪,安全中心报告将帮助您确定漏洞并提供修复建议。
当您开始将ACR实例用于多个容器时,事情会变得很有趣。 OCI已开始使用Helm(一种用于Kubernetes应用程序部署的事实上的工具)向工件开放注册表标准,并在最新版本中使用它。 该行业已经看到了注册表和存储库的激增,并且为所有应用程序组件标准化一个是有意义的,尤其是当它们都属于同一云原生应用程序时。
ACR现在支持OCI注册表存储 (ORAS)。 使用ORAS工具,您可以从同一ACR存储库中推送和拉出所有工件。 在开发人员计算机上安装ORAS或向构建管道添加支持。 使用具有推送权限的Azure Active Directory服务主体登录到注册表后,请使用ORAS命令行工具将新的项目推送到注册表。
通过使用Azure CLI中的命令行工具,您可以灵活地将ORAS推入构建工具中,作为可以在需要时调用的脚本。 相同的命令行工具可以提取工件,您可以将其构建到部署脚本中,这样,当新版本推送到ACR存储库时,构成应用程序的所有组件都可以自动部署。
私有代码需要私有存储库,将容器和其他构建工件保存在Azure中会将它们放在需要的地方。 完整的devops生成过程应从代码提交到运行应用程序,而无需人工干预,从而使诸如Azure容器注册表及其相关任务自动化之类的工具成为任何以Azure为目标的管道中必不可少的组件。 不仅代码会自动在全球范围内存储和部署,而且每次发生更改时都会进行安全风险扫描。
翻译自: https://www.infoworld.com/article/3514575/understanding-azure-container-registry.html
微软azure 容器服务