【Azure 微服務】Service Fabric, 使用ARM Template方式來更新SF叢集的證書(Renew SF Certificate)

路邊兩盞燈發表於2021-03-06

問題描述

因證書過期導致Service Fabric叢集掛掉(升級無法完成,節點不可用)一文中,描述了因為證書過期而導致了SF叢集不可用,並且通過命令dd-AzServiceFabricClusterCertificate 或az sf cluster certificate add 來新增證書為輔助證書(secondary cluster certificate) 並通過SF門戶頁面中的交換主要/輔助證書功能把新上傳的證書作與舊證書進行交換。

在本文中,介紹通過ARM Template的修改來實現輔助證書的新增。

 

執行步驟

測試環境為:SF Silver, 5 Nodes

步驟一:在Key Vault中新增新的Certificate,完成後截圖如下

【Azure 微服務】Service Fabric, 使用ARM Template方式來更新SF叢集的證書(Renew SF Certificate)

步驟二:在SF的resource group這頁面中,選擇SF和cluster資源,並匯出模板(export template), 進入步驟三的Template View頁面

【Azure 微服務】Service Fabric, 使用ARM Template方式來更新SF叢集的證書(Renew SF Certificate)

步驟三:在Template view,選擇Deploy,直接進入第四步的編輯模板頁面

【Azure 微服務】Service Fabric, 使用ARM Template方式來更新SF叢集的證書(Renew SF Certificate)

步驟四:在Edit模板的頁面中,修改如下內容(非常重要

  • 查詢第一個Certificate Thumbprint,並增加紅框中內容。需要增加Thumbprint的位置共有3
【Azure 微服務】Service Fabric, 使用ARM Template方式來更新SF叢集的證書(Renew SF Certificate)

 

 

【Azure 微服務】Service Fabric, 使用ARM Template方式來更新SF叢集的證書(Renew SF Certificate)

 

 

【Azure 微服務】Service Fabric, 使用ARM Template方式來更新SF叢集的證書(Renew SF Certificate)

 

 

  • 查詢certificateStore,並在所有查到的地方增加如下內容(本例中需要修改certificateStore的位置一共有6個)。
【Azure 微服務】Service Fabric, 使用ARM Template方式來更新SF叢集的證書(Renew SF Certificate)

 

步驟五:修改完後Save並返回template view,而後勾選底部的checkbox後點選Purchase,進行cluster upgrade

【Azure 微服務】Service Fabric, 使用ARM Template方式來更新SF叢集的證書(Renew SF Certificate)

步驟六:在SF Cluster Upgrade的過程中,可以通過SF 觀察每一個UD (update domain)的情況。

  • 期間,cluster upgrade的狀態會在RollingForwardInProgress,RollingForwardPending間切換。直至RollingForwardCompleted,表示完成。

【Azure 微服務】Service Fabric, 使用ARM Template方式來更新SF叢集的證書(Renew SF Certificate)

步驟七:在更新完的Node中,點開Details Tab,可以看到新增證書的指紋資訊

【Azure 微服務】Service Fabric, 使用ARM Template方式來更新SF叢集的證書(Renew SF Certificate)

步驟八:當所有Upgrade完成後,可以在SF門戶上的Security頁面上看到新新增的輔助證書資訊

【Azure 微服務】Service Fabric, 使用ARM Template方式來更新SF叢集的證書(Renew SF Certificate)

步驟九:交換主要/輔助證書(點選證書資訊後面三點 ... 進行操作)

注:在此過程中建議採用先新增新的certificate,然後做swap to primary,而不是一開始就直接替換certificate的策略,這樣就算這個過程發生些異常,也不會影響當前的cluster及業務的執行。

 

附錄:參考Deploy the template to Azure文件,使用命令進行釋出模板

 文件連結:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cluster-security-update-certs-azure#deploy-the-template-to-azure

#登入到Azure中
Connect-AzAccount Select-AzSubscription -SubscriptionId <Subscription ID> #驗證模板是否正確 Test-AzResourceGroupDeployment -ResourceGroupName <Resource Group that your cluster is currently deployed to> -TemplateFile <PathToTemplate> #部署模板 New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName <Resource Group that your cluster is currently deployed to> -TemplateFile <PathToTemplate>

 

參考資料

Edit your Resource Manager template:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cluster-security-update-certs-azure#edit-your-resource-manager-template

 

相關文章