发布管道与集成运行时冲突



如果数据工厂中定义了自托管集成运行时,此问题涉及如何通过CI(在VSTS中(传播数据工厂。

我设置了3个环境-Dev/UAT/Prod,每个环境都有自己的数据工厂。

开发人员主持主协作分支。我正在使用VSTS从adf_publish分支检索工件,并将模板部署到UAT(稍后将进行生产(。我遵循了本指南中的大部分内容。

当部署到具有自托管集成运行时(IR(的空白UAT时,UAT中部署的IR是来自dev的共享IR的副本(不是链接类型(,这会导致错误,因为IR使用的凭据将不正确。我预料到了这一点,因为我们实际上只是部署了一个资源组模板的精确副本,只覆盖了工厂名称,但如果没有与自托管的IR VM重新认证,IR将无法工作。

如果我在UAT环境中预先注册了一个链接的IR(链接到开发IR(,那么部署会失败并发生冲突,因为资源组模板中的IR与我刚刚在UAT中创建的IR同名。如果它是一个不同的名称-没有冲突,但链接的服务将指向模板IR,而不是我为UAT 创建的模板

文档中有一条注释,指出所有平台的IR运行时都应该相同,但我不认为这是真的——其中一个(可能是源/dev/(必须是共享类型,其他必须链接并授权。

我可以看到的一个选项(未经测试(是让每个环境IR引用都是到实际IR的单独连接,但随后需要某种方式覆盖链接的服务以指向当前环境IR引用(通过模板参数覆盖?(。在这种情况下,我们需要阻止部署模板IR,因为它不需要也不起作用。

有人在这种情况下成功地让CI工作吗?我的感觉是,文档是用全局共享的IR编写的。要么是这样,要么我需要更好地理解链接服务定义中自动集成设置的目的。

非常感谢。做记号

更新我认为服务中有几个错误,所以没想到会有答案。如果我从我为开发小组发布的错误报告中看到解决方案,我会在这里发布更新。

简而言之,这只会影响到

  1. 您有一个自托管集成运行时(IR(,并且
  2. 您正试图将模板从现有数据工厂部署到新的数据工厂(如在Dev->UAT->Prod中所做的那样(
  3. 您已经定义并使用自托管IR的数据采集(ADL(链接服务

如果模板中有一个自托管的IR,则新部署的副本将不会向任何服务器注册(链接到新ADF或对新ADF唯一(,因为模板只记录一个IR,而不会实例化一个IR。

虽然这可以在部署后配置或脚本中修复,但它无法修复的是ADL中的依赖性。这是因为ADL链接的服务想要用IR加密服务主体……但在模板部署时IR不存在(即未在服务器上配置且未激活(。

如果您选择托管服务标识作为ADL链接服务的身份验证,而不是服务主体,那么模板将无法部署,因为没有要加密的凭据,而且看起来资源希望加密某些内容。

现在的解决方案是使用Azure托管的IR进行数据采集连接。不幸的是,这会导致安全问题,因为共享IR不能在我们的ADL Gen 1中列入白名单。

我会随时通知你的。

相关内容

  • 没有找到相关文章