【问题标题】:Service Fabric ServiceManifest parameterization Traefik Reverse ProxyService Fabric ServiceManifest 参数化 Traefik 反向代理
【发布时间】:2018-09-28 17:00:41
【问题描述】:

在我的 ServiceManifest 我有以下配置:

<ServiceTypes>
    <!-- This is the name of your ServiceType. 
         This name must match the string used in RegisterServiceType call in Program.cs. -->
    <StatelessServiceType ServiceTypeName="Web1Type">
      <Extensions>
        <Extension Name="Traefik">
          <Labels xmlns="http://schemas.microsoft.com/2015/03/fabact-no-schema">
            <Label Key="traefik.frontend.rule.hostname">Host: test.staal-it.nl#</Label>
            <Label Key="traefik.expose">true</Label>
            <Label Key="traefik.frontend.passHostHeader">true</Label>
          </Labels>
        </Extension>
      </Extensions>
    </StatelessServiceType>
  </ServiceTypes>

我希望能够将 test.staal-it.nl 替换为 ApplicationParameters 文件中的参数,以便在我将此应用程序部署到另一个环境时进行更改。但是,据我所知,没有可用于扩展的覆盖 xml 元素。如何才能做到这一点。架构定义见https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-service-model-schema

【问题讨论】:

    标签: azure-service-fabric traefik


    【解决方案1】:

    作为使用参数文件的一种解决方法,如果您使用 VSTS 之类的发布工具,您可以使用tokenizer 来替换不同环境的内容。或者,在 Linux 上,您可以使用 sed + 环境变量之类的内容。

    【讨论】:

    • 这就是我最终要做的。在 VSTS 中部署期间,使用标记器替换 ServiceManifest 中的主机名和替换 ApplicationManifest 中的 ApplicationTypeName。不理想,但有效
    【解决方案2】:

    AFAIK,不可能在扩展上使用替换值,它可能在未来的版本中。

    扩展是一种将 Traefik 与服务结构集成的解决方法。

    根据 Traefik documentation,您可以通过 SF REST API 设置这些值

    This blog 的帖子还很好地概述了如何在 SF 上使用 traefik

    您可以采取的另一种方法是使用 traefik REST API:如果您可以控制您的服务,您的服务启动可以调用 traefik api 并注册自己,然后您可以像您一样将设置添加到您的服务配置中正常设置。

    【讨论】:

    • 使用 rest api 是行不通的,因为我只能在完整的滚动更新之后调用它,这意味着在更新期间我的登台环境会监听错误的主机名
    • 如果您更喜欢设置方法,您可以使用 rest api 在 traefik 上注册您的服务,我添加了额外的信息 + 链接
    猜你喜欢
    • 2017-09-08
    • 2017-05-31
    • 2018-02-07
    • 2021-01-11
    • 2020-09-17
    • 2020-05-01
    • 2017-10-16
    • 2018-11-17
    • 2017-07-05
    相关资源
    最近更新 更多