【问题标题】:How to find the public IP address of a service fabric mesh service如何查找 Service Fabric Mesh 服务的公共 IP 地址
【发布时间】:2019-04-19 05:42:59
【问题描述】:

部署 Service Fabric Mesh 服务后,如何找到面向外部的 IP 地址。到目前为止尝试过的事情:

  1. 在 Azure 门户中查看服务的属性和设置

  2. 运行命令az mesh app list - 这表明响应有效,但缺少 IP 地址

  3. 运行命令az mesh app show - 这表明响应有效,但缺少 IP 地址

  4. 运行命令az mesh service list - 这表明响应有效,但缺少 IP 地址

  5. 运行命令az mesh service show - 这表明响应有效,但缺少 IP 地址

【问题讨论】:

    标签: azure-service-fabric azure-service-fabric-mesh


    【解决方案1】:

    2018 年 12 月 10 日更新

    新的 ApiVersion 已经发布(2018-09-01-preview),新的服务暴露方式是使用网关资源。更多信息可以在this github线程上找到,并且已经在原始答案中添加了一个示例


    原答案

    你要找的是网络公网IP地址:

    az mesh network show --resource-group myResourceGroup --name myAppNetwork

    公共网络

    当您部署应用程序时,您将其放置在网络资源中,该网络将提供对您的应用程序的访问。

    定义网络的示例:

    {
      "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "location": {
          "type": "string",
          "metadata": {
            "description": "Location of the resources."
          }
        }
      },
      "resources": [
        {
          "apiVersion": "2018-07-01-preview",
          "name": "helloWorldNetwork",
          "type": "Microsoft.ServiceFabricMesh/networks",
          "location": "[parameters('location')]",
          "dependsOn": [],
          "properties": {
            "addressPrefix": "10.0.0.4/22",
            "ingressConfig": {
              "layer4": [
                {
                  "name": "helloWorldIngress",
                  "publicPort": "80",
                  "applicationName": "helloWorldApp",
                  "serviceName": "helloWorldService",
                  "endpointName": "helloWorldListener"
                }
              ]
            }
          }
        },
        {
          "apiVersion": "2018-07-01-preview",
          "name": "helloWorldApp",
          "type": "Microsoft.ServiceFabricMesh/applications",
          "location": "[parameters('location')]",
          "dependsOn": [
            "Microsoft.ServiceFabricMesh/networks/helloWorldNetwork"
          ],
          "properties": {
            "description": "Service Fabric Mesh HelloWorld Application!",
            "services": [
              {
                "type": "Microsoft.ServiceFabricMesh/services",
                "location": "[parameters('location')]",
                "name": "helloWorldService",
                "properties": {
                  "description": "Service Fabric Mesh Hello World Service.",
                  "osType": "linux",
                  "codePackages": [
                    {
                      "name": "helloWorldCode",
                      "image": "seabreeze/azure-mesh-helloworld:1.1-alpine",
                      "endpoints": [
                        {
                          "name": "helloWorldListener",
                          "port": "80"
                        }
                      ],
                      "resources": {
                        "requests": {
                          "cpu": "1",
                          "memoryInGB": "1"
                        }
                      }
                    },
                    {
                      "name": "helloWorldSideCar",
                      "image": "seabreeze/azure-mesh-helloworld-sidecar:1.0-alpine",
                      "resources": {
                        "requests": {
                          "cpu": "1",
                          "memoryInGB": "1"
                        }
                      }
                    }
                  ],
                  "replicaCount": "1",
                  "networkRefs": [
                    {
                      "name": "[resourceId('Microsoft.ServiceFabricMesh/networks', 'helloWorldNetwork')]"
                    }
                  ]
                }
              }
            ]
          }
        }
      ]
    }
    

    source

    网关(预览)

    计划提供一个网关,将外部访问桥接到内部网络,就像 kubernetes 中的入口一样工作,它仍处于预览阶段,解决方案将是这样的:

    {
      "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "location": {
          "type": "string",
          "defaultValue": "[resourceGroup().location]",
          "metadata": {
            "description": "Location of the resources (e.g. westus, eastus, westeurope)."
          }
        },
        "fileShareName": {
          "type": "string",
          "metadata": {
            "description": "Name of the Azure Files file share that provides the volume for the container."
          }
        },
        "storageAccountName": {
          "type": "string",
          "metadata": {
            "description": "Name of the Azure storage account that contains the file share."
          }
        },
        "storageAccountKey": {
          "type": "securestring",
          "metadata": {
            "description": "Access key for the Azure storage account that contains the file share."
          }
        },
        "stateFolderName": {
          "type": "string",
          "defaultValue": "CounterService",
          "metadata": {
            "description": "Folder in which to store the state. Provide a empty value to create a unique folder for each container to store the state. A non-empty value will retain the state across deployments, however if more than one applications are using the same folder, the counter may update more frequently."
          }
        }
      },
      "resources": [
        {
          "apiVersion": "2018-09-01-preview",
          "name": "counterAzureFileShareAccountKey",
          "type": "Microsoft.ServiceFabricMesh/secrets",
          "location": "[parameters('location')]",
          "dependsOn": [],
          "properties": {
            "kind": "inlinedValue",
            "contentType": "text/plain",
            "description": "Access key for the Azure storage account that contains the file share."
          }
        },
        {
          "apiVersion": "2018-09-01-preview",
          "name": "counterAzureFileShareAccountKey/v1",
          "type": "Microsoft.ServiceFabricMesh/secrets/values",
          "location": "[parameters('location')]",
          "dependsOn": [
            "Microsoft.ServiceFabricMesh/secrets/counterAzureFileShareAccountKey"
          ],
          "properties": {
            "value": "[parameters('storageAccountKey')]"
          }
        },
        {
          "apiVersion": "2018-09-01-preview",
          "name": "counterVolume",
          "type": "Microsoft.ServiceFabricMesh/volumes",
          "location": "[parameters('location')]",
          "dependsOn": [
            "Microsoft.ServiceFabricMesh/secrets/counterAzureFileShareAccountKey/values/v1"
          ],
          "properties": {
            "description": "Azure Files storage volume for counter App.",
            "provider": "SFAzureFile",
            "azureFileParameters": {
              "shareName": "[parameters('fileShareName')]",
              "accountName": "[parameters('storageAccountName')]",
              "accountKey": "[resourceId('Microsoft.ServiceFabricMesh/secrets/values','counterAzureFileShareAccountKey','v1')]"
            }
          }
        },
        {
          "apiVersion": "2018-09-01-preview",
          "name": "counterNetwork",
          "type": "Microsoft.ServiceFabricMesh/networks",
          "location": "[parameters('location')]",
          "dependsOn": [],
          "properties": {
            "kind": "Local",
            "description": "Azure Service Fabric Mesh Counter Application network.",
            "networkAddressPrefix": "10.0.0.0/24"
          }
        },
        {
          "apiVersion": "2018-09-01-preview",
          "name": "counterApp",
          "type": "Microsoft.ServiceFabricMesh/applications",
          "location": "[parameters('location')]",
          "dependsOn": [
            "Microsoft.ServiceFabricMesh/networks/counterNetwork",
            "Microsoft.ServiceFabricMesh/volumes/counterVolume"
          ],
          "properties": {
            "description": "Azure Service Fabric Mesh Counter Application.",
            "services": [
              {
                "name": "counterService",
                "properties": {
                  "description": "A web service that serves the counter value stored in the Azure Files volume.",
                  "osType": "linux",
                  "codePackages": [
                    {
                      "name": "counterCode",
                      "image": "seabreeze/azure-mesh-counter:0.1-alpine",
                      "volumeRefs": [
                        {
                          "name": "[resourceId('Microsoft.ServiceFabricMesh/volumes', 'counterVolume')]",
                          "destinationPath": "/app/data"
                        }
                      ],
                      "endpoints": [
                        {
                          "name": "counterServiceListener",
                          "port": 80
                        }
                      ],
                      "environmentVariables": [
                        {
                          "name": "STATE_FOLDER_NAME",
                          "value": "[parameters('stateFolderName')]"
                        }
                      ],
                      "resources": {
                        "requests": {
                          "cpu": 0.5,
                          "memoryInGB": 0.5
                        }
                      }
                    }
                  ],
                  "replicaCount": 1,
                  "networkRefs": [
                    {
                      "name": "[resourceId('Microsoft.ServiceFabricMesh/networks', 'counterNetwork')]",
                      "endpointRefs": [
                        {
                          "name": "counterServiceListener"
                        }
                      ]
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "apiVersion": "2018-09-01-preview",
          "name": "counterGateway",
          "type": "Microsoft.ServiceFabricMesh/gateways",
          "location": "[parameters('location')]",
          "dependsOn": [
            "Microsoft.ServiceFabricMesh/networks/counterNetwork"
          ],
          "properties": {
            "description": "Service Fabric Mesh Gateway for counter sample.",
            "sourceNetwork": {
              "name": "Open"
            },
            "destinationNetwork": {
              "name": "[resourceId('Microsoft.ServiceFabricMesh/networks', 'counterNetwork')]"
            },
            "tcp": [
              {
                "name": "web",
                "port": 80,
                "destination": {
                  "applicationName": "counterApp",
                  "serviceName": "counterService",
                  "endpointName": "counterServiceListener"
                }
              }
            ]
          }
        }
      ],
      "outputs": {
        "publicIPAddress": {
          "value": "[reference('counterGateway').ipAddress]",
          "type": "string"
        }
      }
    }
    

    source

    【讨论】:

    • 在@Diego 的部署json 文件中,网络名称为'helloWorldNetwork',因此查找IP 地址的命令为:az mesh network show --resource-group <replace with rg name> --name helloWorldNetwork
    猜你喜欢
    • 2019-05-06
    • 2019-11-30
    • 2017-01-10
    • 2014-05-31
    • 2011-07-02
    • 2020-07-10
    • 1970-01-01
    • 2020-08-04
    • 2014-04-25
    相关资源
    最近更新 更多