Service Fabric的属性管理API和Traefik扩展

时间:2019-08-13 23:43:11

标签: azure-service-fabric traefik service-fabric-stateless

环境:

使用服务清单部署到Service Fabric的应用程序,在其中配置了Traefik的扩展标签:

<ServiceTypes>
    <StatelessServiceType ServiceTypeName="MySrvType" UseImplicitHost="true">
      <Extensions>
        <Extension Name="Traefik">
          <Labels xmlns="http://schemas.microsoft.com/2015/03/fabact-no-schema">
            <Label Key="traefik.enable">true</Label>
          </Labels>
        </Extension>
      </Extensions>
    </StatelessServiceType>
  </ServiceTypes>

问题:

我可以使用Property Management API修改traefik.enable标签的值(根据https://github.com/jjcollinge/traefik-on-service-fabric#dynamically-updating-service-labels):

curl -X PUT --cert cert.pem --key pkey.pem --http1.1 -kv -H 'Content-Type: application/json' -d '{"PropertyName": "traefik.enable","Value": {"Kind": "String","Data": "false"}}' 'https://****.westus2.cloudapp.azure.com:19080/Names/MyApp/MyService/$/GetProperty?api-version=6.0'

这会更改值,我可以看到Traefik不再在其仪表板中列出该服务。

但是,在使用PUT API更改值之前,我想使用GET API读取该标签的值:

curl --cert cert.pem --key pkey.pem --http1.1 -kv -H 'Content-Type: application/json' 'https://****.westus2.cloudapp.azure.com:19080/Names/MyApp/MyService/$/GetProperty?api-version=6.0&PropertyName=traefik.enable'

这将返回404

{"Error":{"Code":"FABRIC_E_PROPERTY_DOES_NOT_EXIST","Message":"Property does not exist."}}

如果我先使用PUT API更新值,则GET API会找到该属性并返回其最新值。对我来说这似乎是个错误,因为PUT API会找到该属性,并对其进行更新会禁用Traefik中的服务。

0 个答案:

没有答案