如何在部署时为跨容器项目更改服务名称

2020-09-06 12:03发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我正在一个项目中,我想要一个单独的HDI DB模块,其中包含常见的类似主数据的维计算视图。 我的想法是通过跨容器访问更特定于业务的数据库模块(这些数据库具有自己的报告计算视图,但可以与主数据维视图结合使用)来使这些常用视图可重复使用。 通过遵循本教程,我可以使此工作有所工作:

https://developers.sap.com/tutorials/xsa-cross-container-access .html

我不清楚要如何为可能具有不同名称的 consumed-db 定义 service-name ? 例如,本教程中的示例使用了构建时服务名称,它看起来像 RHOWLES-9skqv35et1oio3vg-SflightExample-hdi_db_sflight ,但是在部署时将是 hdi_db_sflight 。 我们在 DEVELOPMENT 空间中进行开发,并在 DEPLOY 空间中进行部署,因此我认为在开发过程中我将不具有可见性来引用 hdi_db_sflight

示例YAML:

 ID:SflightCrossContainerExample
 _schema-version:" 2.0"
 版本:0.0.1

 模块:
  -名称:db_sflight_cc_example
    类型:hdb
    路径:db_sflight_cc_example
    要求:
     -名称:hdi_db_sflight_cc_example
       特性:
         TARGET_CONTAINER:'〜{hdi-container-name}'
     -名称:consumed-md-container
       组:SERVICE_REPLACEMENTS
       特性:
         密钥:consumpted-db
         服务:"〜{consumed-service-name}"

 资源:
  -名称:hdi_db_sflight_cc_example
    参数:
       配置:
          架构:SFLIGHT_CC_EXAMPLE
    特性:
       hdi-container-name:$ {服务名称}
    类型:com.sap.xs.hdi-container

  -名称:consumed-md-container
    类型:org.cloudfoundry.existing-service
    参数:
       服务名称:RHOWLES-9skqv35et1oio3vg-SflightExample-hdi_db_sflight
    特性:
       消费服务名称:" $ {service-name}" 

这是我可以使用xs部署标志实现的功能,还是必须在mtad.yaml部署描述符中执行的操作?

感谢您的帮助。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我正在一个项目中,我想要一个单独的HDI DB模块,其中包含常见的类似主数据的维计算视图。 我的想法是通过跨容器访问更特定于业务的数据库模块(这些数据库具有自己的报告计算视图,但可以与主数据维视图结合使用)来使这些常用视图可重复使用。 通过遵循本教程,我可以使此工作有所工作:

https://developers.sap.com/tutorials/xsa-cross-container-access .html

我不清楚要如何为可能具有不同名称的 consumed-db 定义 service-name ? 例如,本教程中的示例使用了构建时服务名称,它看起来像 RHOWLES-9skqv35et1oio3vg-SflightExample-hdi_db_sflight ,但是在部署时将是 hdi_db_sflight 。 我们在 DEVELOPMENT 空间中进行开发,并在 DEPLOY 空间中进行部署,因此我认为在开发过程中我将不具有可见性来引用 hdi_db_sflight

示例YAML:

 ID:SflightCrossContainerExample
 _schema-version:" 2.0"
 版本:0.0.1

 模块:
  -名称:db_sflight_cc_example
    类型:hdb
    路径:db_sflight_cc_example
    要求:
     -名称:hdi_db_sflight_cc_example
       特性:
         TARGET_CONTAINER:'〜{hdi-container-name}'
     -名称:consumed-md-container
       组:SERVICE_REPLACEMENTS
       特性:
         密钥:consumpted-db
         服务:"〜{consumed-service-name}"

 资源:
  -名称:hdi_db_sflight_cc_example
    参数:
       配置:
          架构:SFLIGHT_CC_EXAMPLE
    特性:
       hdi-container-name:$ {服务名称}
    类型:com.sap.xs.hdi-container

  -名称:consumed-md-container
    类型:org.cloudfoundry.existing-service
    参数:
       服务名称:RHOWLES-9skqv35et1oio3vg-SflightExample-hdi_db_sflight
    特性:
       消费服务名称:" $ {service-name}" 

这是我可以使用xs部署标志实现的功能,还是必须在mtad.yaml部署描述符中执行的操作?

感谢您的帮助。

付费偷看设置
发送
7条回答
何必丶何苦呢
1楼 · 2020-09-06 12:43.采纳回答

>如前所述,我们的开发构建时间在开发空间中,而部署的对象在DEPLOY空间中。

但这只是您想出的一条规则。 我想说的是错误的。 您还应该将MTA部署到开发空间中,以提供稳定版本的容器供其他开发人员使用。

我是小鹏鹏啊
2楼-- · 2020-09-06 12:48

>但这只是您想出的一条规则。 我想说的是错误的。

已注意到。 结果,我们将改变我们的方法。 (不要再听Max Attention培训师的调教了。)

谢谢您的时间。

宇峰Kouji
3楼-- · 2020-09-06 12:44

您真的不应该在交叉容器引用中使用构建时间服务名称 。 我想该教程只是为了使场景保持简单。 即使在开发中,也应该在对容器进行全面测试之后再部署它,以便"真实"版本可以用于跨容器用途。

但是,如果您确实需要在部署时更改此值,则可以通过使用mtaext文件覆盖该值来实现。

hengyuye
4楼-- · 2020-09-06 12:27

嘿,托马斯,

"您真的不应该在交叉容器引用中使用构建时服务名称。"

< p>这正是我要避免的事情。 昨天我确实浏览了.mtaext文档( https://help.sap.com /viewer/4505d0bdaf4948449b7f7379d24d0f0d/2.0.03/en-US/51ac525c78244282919029d8f5e2e35d.html ),但是由于考虑到以下警告,我无法成功使用它:

您可以 使用MTA部署扩展描述符将以下信息(在部署时)添加到MTA部署描述符中:

  • 属性元素,例如新属性或 参数。
  • 自开发/构建以来,尚未定义值的属性的值

,我希望它能够成功构建,我可以指向设计时或已部署的等效项(假设它也已部署),但这听起来像.mtaext要求我从中删除现有的service-name参数。 为了它mta.yaml 要使用的? 也许如果我们有Jenkins或其他CI/CD框架,它可能会为我删除.mtar,但是我们处于XSA的早期采用阶段,因此我们的部署目前是简单的xs cli语句。

我是否缺少一种方法让mtaext覆盖mta.yaml中的就地属性? 我的新手尝试使用.mtaext:

 _schema-version:'2.0'
 ID:SflightCrossContainerExample.config
 扩展:SflightCrossContainerExample


 资源:
  -名称:consumed-md-container
    特性:
       消耗的服务名称:db_sflight
 

另一个失败的尝试:

 _schema-version:" 2.0"
 ID:SflightCrossContainerExample.config
 扩展:SflightCrossContainerExample


 资源:
  -名称:consumed-md-container
    参数:
       服务名称:db_sflight
    特性:
       已消耗服务名称:'$ {service-name}'

即使使用xs deploy file.mtar -e extension.mtaext,它仍然会代替使用mta.yaml中引用的服务

奄奄一息的小鱼
5楼-- · 2020-09-06 12:33

为什么不只是接受第一个建议-根本不要指向临时服务名称。 始终在Dev系统中真正部署外部容器,并且仅引用该名称。 这样,您的mta.yaml始终是一致的。 那是"正确"的方式。

南山jay
6楼-- · 2020-09-06 12:43

感谢您的提示! 但是,唯一需要注意的是,其中的模块类型,"部署"操作大约要花费5分钟以上(有时甚至更多)。 这不是在"构建"之后测试更改的快速方法,但是正如您所说的那样,可以确保一致性。 谢谢!

派大星 ヾ
7楼-- · 2020-09-06 12:35

您好,我尚未将容器成功部署到DEV空间。 我能够构建和运行它,但不能将其部署到DEV空间。 我发布了一个问题此处。 感谢您的帮助!

致谢

渡轮

一周热门 更多>