Membuat kluster Service Fabric menggunakan Azure Resource Manager

Kluster Azure Service Fabric adalah set komputer virtual yang terhubung dengan jaringan di mana layanan mikro Anda disebarkan dan dikelola. Kluster Service Fabric yang berjalan di Azure adalah sumber daya Azure dan disebarkan menggunakan Azure Resource Manager. Artikel ini menjelaskan cara menggunakan kluster Service Fabric yang aman di Azure menggunakan Resource Manager. Anda bisa menggunakan templat kluster default atau templat kustom. Jika Anda belum memiliki templat kustom, Anda bisa mempelajari cara membuatnya.

Jenis keamanan yang dipilih untuk mengamankan kluster (yaitu: identitas Windows, X509 dll.) harus ditentukan untuk pembuatan awal kluster, dan tidak dapat diubah setelahnya. Sebelum menyiapkan kluster, baca skenario keamanan kluster Service Fabric. Di Azure, Service Fabric menggunakan sertifikat x509 untuk mengamankan kluster Anda dan titik akhirnya, mengautentikasi klien, dan mengenkripsi data. ID Microsoft Entra juga disarankan untuk mengamankan akses ke titik akhir manajemen. Untuk informasi selengkapnya, baca Menyiapkan ID Microsoft Entra untuk mengautentikasi klien.

Jika Anda membuat kluster produksi untuk menjalankan beban kerja produksi, sebaiknya Anda terlebih dahulu membaca daftar periksa kesiapan produksi.

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Prasyarat

Dalam artikel ini, gunakan modul Service Fabric RM PowerShell atau Azure CLI untuk menyebarkan kluster:

Anda dapat menemukan dokumentasi referensi untuk modul Service Fabric di sini:

Masuk ke Azure

Sebelum menjalankan perintah apa pun dalam artikel ini, pertama-tama masuk ke Azure.

Connect-AzAccount
Set-AzContext -SubscriptionId <subscriptionId>
az login
az account set --subscription $subscriptionId

Membuat kluster baru menggunakan sistem yang dihasilkan sertifikat yang ditandatangani sendiri

Gunakan perintah berikut untuk membuat kluster yang diamankan dengan sistem yang dihasilkan sertifikat yang ditandatangani sendiri. Perintah ini menyiapkan sertifikat kluster utama yang digunakan untuk keamanan kluster dan untuk menyiapkan akses admin untuk melakukan operasi manajemen menggunakan sertifikat tersebut. Sertifikat yang ditandatangani sendiri berguna untuk mengamankan kluster pengujian. Kluster produksi harus diamankan dengan sertifikat dari otoritas sertifikat (CA).

Menggunakan templat kluster default yang dikirim dalam modul

Anda dapat menggunakan perintah PowerShell atau Azure CLI berikut untuk membuat kluster dengan cepat menggunakan templat default.

Templat default yang digunakan tersedia di sini untuk Windows dan di sini untuk Ubuntu.

Perintah berikut dapat membuat kluster Windows atau Linux, tergantung pada bagaimana Anda menentukan parameter OS. Kedua perintah PowerShell/CLI mengeluarkan sertifikat dalam CertificateOutputFolder yang ditentukan (pastikan lokasi folder sertifikat yang Anda tentukan sudah ada sebelum menjalankan perintah!).

Catatan

Perintah PowerShell berikut ini hanya berfungsi dengan modul Az Azure PowerShell. Untuk memeriksa versi Azure Resource Manager PowerShell versi saat ini, jalankan perintah PowerShell berikut ini "Get-Module Az". Ikuti tautan ini untuk meningkatkan versi Azure Resource Manager PowerShell Anda.

Sebarkan ke kluster menggunakan PowerShell:

$resourceGroupLocation="westus"
$resourceGroupName="mycluster"
$vaultName="myvault"
$vaultResourceGroupName="myvaultrg"
$CertSubjectName="mycluster.westus.cloudapp.azure.com"
$certPassword="Password123!@#" | ConvertTo-SecureString -AsPlainText -Force 
$vmpassword="Password4321!@#" | ConvertTo-SecureString -AsPlainText -Force
$vmuser="myadmin"
$os="WindowsServer2016DatacenterwithContainers"
$certOutputFolder="c:\certificates"

New-AzServiceFabricCluster -ResourceGroupName $resourceGroupName -Location $resourceGroupLocation -CertificateOutputFolder $certOutputFolder -CertificatePassword $certpassword -CertificateSubjectName $CertSubjectName -OS $os -VmPassword $vmpassword -VmUserName $vmuser

Sebarkan kluster menggunakan Azure CLI:

declare resourceGroupLocation="westus"
declare resourceGroupName="mylinux"
declare vaultResourceGroupName="myvaultrg"
declare vaultName="myvault"
declare CertSubjectName="mylinux.westus.cloudapp.azure.com"
declare vmpassword="Password!1"
declare certpassword="Password!4321"
declare vmuser="myadmin"
declare vmOs="UbuntuServer1804"
declare certOutputFolder="c:\certificates"

az sf cluster create --resource-group $resourceGroupName --location $resourceGroupLocation  \
	--certificate-output-folder $certOutputFolder --certificate-password $certpassword  \
	--vault-name $vaultName --vault-resource-group $resourceGroupName  \
	--template-file $templateFilePath --parameter-file $parametersFilePath --vm-os $vmOs  \
	--vm-password $vmpassword --vm-user-name $vmuser

Menggunakan templat kustom Anda sendiri

Jika Anda perlu menulis templat kustom yang sesuai dengan kebutuhan Anda, sebaiknya Anda mulai dengan salah satu templat yang tersedia di halaman sampel templat yang tersedia di sampel templat Azure Service Fabric. Pelajari cara mengkustomisasi templat kluster Anda.

Jika Anda sudah memiliki templat kustom, periksa kembali apakah ketiga parameter terkait sertifikat dalam templat dan file parameter dinamai sebagai berikut dan nilai tersebut null sebagai berikut:

   "certificateThumbprint": {
      "value": ""
    },
    "sourceVaultValue": {
      "value": ""
    },
    "certificateUrlValue": {
      "value": ""
    },

Sebarkan ke kluster menggunakan PowerShell:

$resourceGroupLocation="westus"
$resourceGroupName="mycluster"
$CertSubjectName="mycluster.westus.cloudapp.azure.com"
$certPassword="Password!1" | ConvertTo-SecureString -AsPlainText -Force 
$certOutputFolder="c:\certificates"

$parameterFilePath="c:\mytemplates\mytemplateparm.json"
$templateFilePath="c:\mytemplates\mytemplate.json"

New-AzServiceFabricCluster -ResourceGroupName $resourceGroupName -CertificateOutputFolder $certOutputFolder -CertificatePassword $certpassword -CertificateSubjectName $CertSubjectName -TemplateFile $templateFilePath -ParameterFile $parameterFilePath 

Sebarkan kluster menggunakan Azure CLI:

declare certPassword=""
declare resourceGroupLocation="westus"
declare resourceGroupName="mylinux"
declare certSubjectName="mylinuxsecure.westus.cloudapp.azure.com"
declare parameterFilePath="c:\mytemplates\linuxtemplateparm.json"
declare templateFilePath="c:\mytemplates\linuxtemplate.json"
declare certOutputFolder="c:\certificates"

az sf cluster create --resource-group $resourceGroupName --location $resourceGroupLocation  \
	--certificate-output-folder $certOutputFolder --certificate-password $certPassword  \
	--certificate-subject-name $certSubjectName \
	--template-file $templateFilePath --parameter-file $parametersFilePath

Membuat kluster baru menggunakan sertifikat X.509 Anda sendiri

Anda dapat menggunakan perintah berikut untuk menentukan sertifikat yang ada untuk membuat dan mengamankan kluster baru.

Jika ini adalah sertifikat bertanda tangan CA yang akan Anda gunakan untuk tujuan lain juga, sebaiknya Anda menyediakan grup sumber daya yang berbeda khusus untuk key vault Anda. Sebaiknya Anda memasukkan key vault ke dalam grup sumber dayanya sendiri. Tindakan ini memungkinkan Anda menghapus grup sumber daya komputasi dan penyimpanan, termasuk grup sumber daya yang berisi kluster Service Fabric Anda, tanpa kehilangan kunci dan rahasia Anda. Grup sumber daya yang berisi key vault Anda harus berada di wilayah yang sama dengan kluster yang menggunakannya.

Gunakan lima node default, satu templat jenis node yang dikirim dalam modul

Templat default yang digunakan tersedia di sini untuk Windows dan di sini untuk Ubuntu.

Sebarkan ke kluster menggunakan PowerShell:

$resourceGroupLocation="westus"
$resourceGroupName="mycluster"
$vaultName="myvault"
$vaultResourceGroupName="myvaultrg"
$certPassword="Password!1" | ConvertTo-SecureString -AsPlainText -Force 
$vmpassword=("Password!4321" | ConvertTo-SecureString -AsPlainText -Force) 
$vmuser="myadmin"
$os="WindowsServer2016DatacenterwithContainers"

New-AzServiceFabricCluster -ResourceGroupName $resourceGroupName -Location $resourceGroupLocation -KeyVaultResourceGroupName $vaultResourceGroupName -KeyVaultName $vaultName -CertificateFile C:\MyCertificates\chackocertificate3.pfx -CertificatePassword $certPassword -OS $os -VmPassword $vmpassword -VmUserName $vmuser 

Sebarkan kluster menggunakan Azure CLI:

declare vmPassword="Password!1"
declare certPassword="Password!1"
declare vmUser="myadmin"
declare resourceGroupLocation="westus"
declare resourceGroupName="mylinux"
declare vaultResourceGroupName="myvaultrg"
declare vaultName="myvault"
declare certificate-file="c:\certificates\mycert.pem"
declare vmOs="UbuntuServer1804"

az sf cluster create --resource-group $resourceGroupName --location $resourceGroupLocation  \
	--certificate-file $certificate-file --certificate-password $certPassword  \
	--vault-name $vaultName --vault-resource-group $vaultResourceGroupName  \
    --vm-os vmOs \
	--vm-password $vmPassword --vm-user-name $vmUser

Menggunakan templat kluster kustom Anda sendiri

Jika Anda perlu menulis templat kustom yang sesuai dengan kebutuhan Anda, sebaiknya Anda mulai dengan salah satu templat yang tersedia di halaman sampel templat yang tersedia di sampel templat Azure Service Fabric. Pelajari cara mengkustomisasi templat kluster Anda.

Jika Anda sudah memiliki templat khusus, pastikan untuk memeriksa kembali bahwa ketiga parameter terkait sertifikat dalam templat dan file parameter diberi nama sebagai berikut dan nilainya null sebagai berikut.

   "certificateThumbprint": {
      "value": ""
    },
    "sourceVaultValue": {
      "value": ""
    },
    "certificateUrlValue": {
      "value": ""
    },

Sebarkan ke kluster menggunakan PowerShell:

$resourceGroupLocation="westus"
$resourceGroupName="mycluster"
$vaultName="myvault"
$vaultResourceGroupName="myvaultrg"
$certPassword="Password!1" | ConvertTo-SecureString -AsPlainText -Force 
$os="WindowsServer2016DatacenterwithContainers"
$parameterFilePath="c:\mytemplates\mytemplateparm.json"
$templateFilePath="c:\mytemplates\mytemplate.json"
$certificateFile="C:\MyCertificates\chackonewcertificate3.pem"

New-AzServiceFabricCluster -ResourceGroupName $resourceGroupName -Location $resourceGroupLocation -TemplateFile $templateFilePath -ParameterFile $parameterFilePath -KeyVaultResourceGroupName $vaultResourceGroupName -KeyVaultName $vaultName -CertificateFile $certificateFile -CertificatePassword $certPassword

Sebarkan kluster menggunakan Azure CLI:

declare certPassword="Password!1"
declare resourceGroupLocation="westus"
declare resourceGroupName="mylinux"
declare vaultResourceGroupName="myvaultrg"
declare vaultName="myvault"
declare parameterFilePath="c:\mytemplates\linuxtemplateparm.json"
declare templateFilePath="c:\mytemplates\linuxtemplate.json"

az sf cluster create --resource-group $resourceGroupName --location $resourceGroupLocation  \
	--certificate-file $certificate-file --certificate-password $password  \
	--vault-name $vaultName --vault-resource-group $vaultResourceGroupName  \
	--template-file $templateFilePath --parameter-file $parametersFilePath 

Menggunakan penunjuk ke rahasia yang diunggah ke dalam key vault

Untuk menggunakan key vault yang ada, key vault harus diaktifkan untuk penyebaran agar penyedia sumber daya komputasi dapat memperoleh sertifikat darinya dan memasangnya pada node kluster.

Sebarkan ke kluster menggunakan PowerShell:

Set-AzKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -EnabledForDeployment

$parameterFilePath="c:\mytemplates\mytemplate.json"
$templateFilePath="c:\mytemplates\mytemplateparm.json"
$secretID="https://test1.vault.azure.net:443/secrets/testcertificate4/55ec7c4dc61a462bbc645ffc9b4b225f"

New-AzServiceFabricCluster -ResourceGroupName $resourceGroupName -SecretIdentifier $secretID -TemplateFile $templateFilePath -ParameterFile $parameterFilePath 

Sebarkan kluster menggunakan Azure CLI:

declare $resourceGroupName = "testRG"
declare $parameterFilePath="c:\mytemplates\mytemplate.json"
declare $templateFilePath="c:\mytemplates\mytemplateparm.json"
declare $secretID="https://test1.vault.azure.net:443/secrets/testcertificate4/55ec7c4dc61a462bbc645ffc9b4b225f"

az sf cluster create --resource-group $resourceGroupName --location $resourceGroupLocation  \
	--secret-identifier $secretID  \
	--template-file $templateFilePath --parameter-file $parameterFilePath 

Langkah berikutnya

Pada titik ini, Anda memiliki kluster aman yang berjalan di Azure. Selanjutnya, hubungkan ke klaster Anda dan pelajari cara mengelola rahasia aplikasi.

Agar sintaks dan properti JSON menggunakan templat, lihat Microsoft.ServiceFabric/referensi templat kluster.