問題描述
因證書過期導致Service Fabric叢集掛掉(升級無法完成,節點不可用)一文中,描述了因為證書過期而導致了SF叢集不可用,並且通過命令dd-AzServiceFabricClusterCertificate 或az sf cluster certificate add 來新增證書為輔助證書(secondary cluster certificate) 並通過SF門戶頁面中的交換主要/輔助證書功能把新上傳的證書作與舊證書進行交換。
在本文中,介紹通過ARM Template的修改來實現輔助證書的新增。
執行步驟
測試環境為:SF Silver, 5 Nodes
步驟一:在Key Vault中新增新的Certificate,完成後截圖如下
步驟二:在SF的resource group這頁面中,選擇SF和cluster資源,並匯出模板(export template), 進入步驟三的Template View頁面
步驟三:在Template view,選擇Deploy,直接進入第四步的編輯模板頁面
步驟四:在Edit模板的頁面中,修改如下內容(非常重要)
- 查詢第一個Certificate Thumbprint,並增加紅框中內容。需要增加Thumbprint的位置共有3處
|
|
|
- 查詢certificateStore,並在所有查到的地方增加如下內容(本例中需要修改certificateStore的位置一共有6個)。
步驟五:修改完後Save並返回template view,而後勾選底部的checkbox後點選Purchase,進行cluster upgrade
步驟六:在SF Cluster Upgrade的過程中,可以通過SF 觀察每一個UD (update domain)的情況。
- 期間,cluster upgrade的狀態會在RollingForwardInProgress,RollingForwardPending間切換。直至RollingForwardCompleted,表示完成。
步驟七:在更新完的Node中,點開Details Tab,可以看到新增證書的指紋資訊
步驟八:當所有Upgrade完成後,可以在SF門戶上的Security頁面上看到新新增的輔助證書資訊
步驟九:交換主要/輔助證書(點選證書資訊後面三點 ... 進行操作)
注:在此過程中建議採用先新增新的certificate,然後做swap to primary,而不是一開始就直接替換certificate的策略,這樣就算這個過程發生些異常,也不會影響當前的cluster及業務的執行。
附錄:參考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