环境:
使用服务清单部署到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中的服务。