Dela via


Skapa en Resource Manager-mall för Service Fabric-kluster

Ett Azure Service Fabric-kluster är en nätverksansluten uppsättning virtuella datorer där dina mikrotjänster distribueras och hanteras. Ett Service Fabric-kluster som körs i Azure är en Azure-resurs och distribueras, hanteras och övervakas med hjälp av Resource Manager. Den här artikeln beskriver hur du skapar en Resource Manager-mall för ett Service Fabric-kluster som körs i Azure. När mallen är klar kan du distribuera klustret i Azure.

Klustersäkerhet konfigureras när klustret först konfigureras och kan inte ändras senare. Innan du konfigurerar ett kluster läser du Säkerhetsscenarier för Service Fabric-kluster. I Azure använder Service Fabric x509-certifikat för att skydda klustret och dess slutpunkter, autentisera klienter och kryptera data. Microsoft Entra-ID rekommenderas också för att skydda åtkomsten till hanteringsslutpunkter. Microsoft Entra-klienter och -användare måste skapas innan klustret skapas. Mer information finns i Konfigurera Microsoft Entra-ID för att autentisera klienter.

Innan du distribuerar ett produktionskluster för att köra produktionsarbetsbelastningar måste du först läsa checklistan För produktionsberedskap.

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Information om hur du kommer igång finns i Installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Skapa Resource Manager-mallen

Exempel på Resource Manager-mallar är tillgängliga i Azure-exempel på GitHub. Dessa mallar kan användas som utgångspunkt för klustermallen.

I den här artikeln används mallen och mallparametrarna för det säkra klustret med fem noder. Ladda ned azuredeploy.json och azuredeploy.parameters.json till datorn och öppna båda filerna i din favorittextredigerare.

Kommentar

För nationella moln (Azure Government, Microsoft Azure som drivs av 21Vianet, Azure Germany) bör du också lägga till följande fabricSettings i mallen: AADLoginEndpointoch AADTokenEndpointFormatAADCertEndpointFormat.

Lägga till certifikat

Du lägger till certifikat i en Resource Manager-klustermall genom att referera till nyckelvalvet som innehåller certifikatnycklarna. Lägg till dessa key-vault-parametrar och -värden i en Resource Manager-mallparametrarfil (azuredeploy.parameters.json).

Lägg till alla certifikat i vm-skalningsuppsättningen osProfile

Varje certifikat som är installerat i klustret måste konfigureras i avsnittet osProfile i skalningsuppsättningsresursen (Microsoft.Compute/virtualMachineScaleSets). Den här åtgärden instruerar resursprovidern att installera certifikatet på de virtuella datorerna. Den här installationen omfattar både klustercertifikatet och eventuella programsäkerhetscertifikat som du planerar att använda för dina program:

{
  "apiVersion": "[variables('vmssApiVersion')]",
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  ...
  "properties": {
    ...
    "osProfile": {
      ...
      "secrets": [
        {
          "sourceVault": {
            "id": "[parameters('sourceVaultValue')]"
          },
          "vaultCertificates": [
            {
              "certificateStore": "[parameters('clusterCertificateStorevalue')]",
              "certificateUrl": "[parameters('clusterCertificateUrlValue')]"
            },
            {
              "certificateStore": "[parameters('applicationCertificateStorevalue')",
              "certificateUrl": "[parameters('applicationCertificateUrlValue')]"
            },
            ...
          ]
        }
      ]
    }
  }
}

Konfigurera Service Fabric-klustercertifikatet

Certifikatet för klusterautentisering måste konfigureras i både Service Fabric-klusterresursen (Microsoft.ServiceFabric/clusters) och Service Fabric-tillägget för VM-skalningsuppsättningar i resursen för vm-skalningsuppsättningen. Med det här arrangemanget kan Service Fabric-resursprovidern konfigurera den för användning för klusterautentisering och serverautentisering för hanteringsslutpunkter.

Lägg till certifikatinformationen för vm-skalningsuppsättningsresursen

{
  "apiVersion": "[variables('vmssApiVersion')]",
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  ...
  "properties": {
    ...
    "virtualMachineProfile": {
      "extensionProfile": {
        "extensions": [
          {
            "name": "[concat('ServiceFabricNodeVmExt_',variables('vmNodeType0Name'))]",
            "properties": {
              ...
              "settings": {
                ...
                "certificate": {
                  "commonNames": ["[parameters('certificateCommonName')]"],
                  "x509StoreName": "[parameters('clusterCertificateStoreValue')]"
                },
                ...
              }
            }
          }
        ]
      }
    }
  }
}

Lägg till certifikatinformationen i Service Fabric-klusterresursen

{
  "apiVersion": "2018-02-01",
  "type": "Microsoft.ServiceFabric/clusters",
  "name": "[parameters('clusterName')]",
  "location": "[parameters('clusterLocation')]",
  "dependsOn": [
    "[concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName'))]"
  ],
  "properties": {
    "certificateCommonNames": {
        "commonNames": [
        {
            "certificateCommonName": "[parameters('certificateCommonName')]",
            "certificateIssuerThumbprint": ""
        }
        ],
        "x509StoreName": "[parameters('certificateStoreValue')]"
    },
    ...
  }
}

Lägga till Microsoft Entra-konfiguration för att använda Microsoft Entra-ID för klientåtkomst

Du lägger till Microsoft Entra-konfigurationen i en Resource Manager-klustermall genom att referera till nyckelvalvet som innehåller certifikatnycklarna. Lägg till dessa Microsoft Entra-parametrar och -värden i en Resource Manager-mallparametrarfil (azuredeploy.parameters.json).

Kommentar

I Linux måste Microsoft Entra-klienter och användare skapas innan klustret skapas. Mer information finns i Konfigurera Microsoft Entra-ID för att autentisera klienter.

{
  "apiVersion": "2018-02-01",
  "type": "Microsoft.ServiceFabric/clusters",
  "name": "[parameters('clusterName')]",
  ...
  "properties": {
    "certificateCommonNames": {
        "commonNames": [
        {
            "certificateCommonName": "[parameters('certificateCommonName')]",
            "certificateIssuerThumbprint": ""
        }
        ],
        "x509StoreName": "[parameters('certificateStoreValue')]"
    },
    ...
    "azureActiveDirectory": {
      "tenantId": "[parameters('aadTenantId')]",
      "clusterApplication": "[parameters('aadClusterApplicationId')]",
      "clientApplication": "[parameters('aadClientApplicationId')]"
    },
    ...
  }
}

Fyll i parameterfilen med värdena

Slutligen använder du utdatavärdena från key vault- och Azure AD PowerShell-kommandona för att fylla i parameterfilen.

Om du planerar att använda Azure Service Fabric RM PowerShell-moduler behöver du inte fylla i klustercertifikatinformationen. Om du vill att systemet ska generera det självsignerade certifikatet för klustersäkerhet behåller du dem bara som null.

Kommentar

För att RM-modulerna ska kunna hämta och fylla i dessa tomma parametervärden matchar parametrarna namnen mycket namnen nedan

"clusterCertificateThumbprint": {
    "value": ""
},
"certificateCommonName": {
    "value": ""
},
"clusterCertificateUrlValue": {
    "value": ""
},
"sourceVaultvalue": {
    "value": ""
},

Om du använder programcertifikat eller använder ett befintligt kluster som du har laddat upp till nyckelvalvet måste du hämta den här informationen och fylla i den.

RM-modulerna har inte möjlighet att generera Microsoft Entra-konfigurationen åt dig, så om du planerar att använda Microsoft Entra-ID:t för klientåtkomst måste du fylla i det.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        ...
        "clusterCertificateStoreValue": {
            "value": "My"
        },
        "clusterCertificateThumbprint": {
            "value": "<thumbprint>"
        },
        "clusterCertificateUrlValue": {
            "value": "https://myvault.vault.azure.net:443/secrets/myclustercert/4d087088df974e869f1c0978cb100e47"
        },
        "applicationCertificateStorevalue": {
            "value": "My"
        },
        "applicationCertificateUrlValue": {
            "value": "https://myvault.vault.azure.net:443/secrets/myapplicationcert/2e035058ae274f869c4d0348ca100f08"
        },
        "sourceVaultvalue": {
            "value": "/subscriptions/<guid>/resourceGroups/mycluster-keyvault/providers/Microsoft.KeyVault/vaults/myvault"
        },
        "aadTenantId": {
            "value": "<guid>"
        },
        "aadClusterApplicationId": {
            "value": "<guid>"
        },
        "aadClientApplicationId": {
            "value": "<guid>"
        },
        ...
    }
}

Testa mallen

Använd följande PowerShell-kommando för att testa Resource Manager-mallen med en parameterfil:

Test-AzResourceGroupDeployment -ResourceGroupName "myresourcegroup" -TemplateFile .\azuredeploy.json -TemplateParameterFile .\azuredeploy.parameters.json

Om du stöter på problem och får kryptiska meddelanden använder du sedan "-Debug" som ett alternativ.

Test-AzResourceGroupDeployment -ResourceGroupName "myresourcegroup" -TemplateFile .\azuredeploy.json -TemplateParameterFile .\azuredeploy.parameters.json -Debug

Följande diagram visar var ditt nyckelvalv och Microsoft Entra-konfiguration passar in i Resource Manager-mallen.

Resource Manager-beroendekarta

Nästa steg

Nu när du har en mall för klustret lär du dig hur du distribuerar klustret till Azure. Om du inte redan har gjort det läser du checklistan för produktionsberedskap innan du distribuerar ett produktionskluster.

Mer information om JSON-syntaxen och egenskaperna för de resurser som distribueras i den här artikeln finns i: