Mengonfigurasi kredensial repositori untuk aplikasi Anda untuk mengunduh citra kontainer
Konfigurasikan autentikasi registri kontainer dengan menambahkan RepositoryCredentials
ke ContainerHostPolicies
bagian manifes aplikasi Anda. Tambahkan akun dan kata sandi untuk registri kontainer Anda (myregistry.azurecr.io dalam contoh di bawah), yang memungkinkan layanan mengunduh citra kontainer dari repositori.
<ServiceManifestImport>
...
<Policies>
<ContainerHostPolicies CodePackageRef="Code">
<RepositoryCredentials AccountName="myregistry" Password="=P==/==/=8=/=+u4lyOB=+=nWzEeRfF=" PasswordEncrypted="false"/>
<PortBinding ContainerPort="80" EndpointRef="Guest1TypeEndpoint"/>
</ContainerHostPolicies>
</Policies>
...
</ServiceManifestImport>
Sebaiknya Anda mengenkripsi kata sandi repositori dengan menggunakan sertifikat penyandian data yang disebarkan ke semua node kluster. Ketika Service Fabric menyebarkan paket layanan ke kluster, sertifikat penyandian data digunakan untuk mendekripsi teks sandi. Cmdlet Invoke-ServiceFabricEncryptText digunakan untuk membuat teks sandi untuk kata sandi, yang ditambahkan ke file ApplicationManifest.xml Anda. Lihat Manajemen Rahasia untuk informasi selengkapnya tentang sertifikat dan semantik enkripsi.
Mengonfigurasi kredensial di seluruh kluster
Service Fabric memungkinkan Anda mengonfigurasi kredensial di seluruh kluster yang dapat digunakan sebagai kredensial repositori default oleh aplikasi.
Fitur ini dapat diaktifkan atau dinonaktifkan dengan menambahkan UseDefaultRepositoryCredentials
atribut ContainerHostPolicies
ke dalam ApplicationManifest.xml dengan true
atau false
nilai.
<ServiceManifestImport>
...
<Policies>
<ContainerHostPolicies CodePackageRef="Code" UseDefaultRepositoryCredentials="true">
<PortBinding ContainerPort="80" EndpointRef="Guest1TypeEndpoint"/>
</ContainerHostPolicies>
</Policies>
...
</ServiceManifestImport>
Service Fabric kemudian menggunakan kredensial repositori default yang dapat ditentukan dalam ClusterManifest di bawah Hosting
bagian. Jika UseDefaultRepositoryCredentials
demikian true
, Service Fabric membaca nilai-nilai berikut dari ClusterManifest:
- DefaultContainerRepositoryAccountName (string)
- DefaultContainerRepositoryPassword (string)
- IsDefaultContainerRepositoryPasswordEncrypted (bool)
- DefaultContainerRepositoryPasswordType (string)
Berikut adalah contoh apa saja yang dapat ditambahkan di dalam Hosting
bagian di file ClusterManifestTemplate.jspada. Bagian Hosting
dapat ditambahkan pada pembuatan klaster atau nanti dalam peningkatan konfigurasi. Untuk informasi selengkapnya, lihat Mengubah pengaturan kluster Azure Service Fabric dan Mengelola rahasia aplikasi Azure Service Fabric
"fabricSettings": [
...,
{
"name": "Hosting",
"parameters": [
{
"name": "EndpointProviderEnabled",
"value": "true"
},
{
"name": "DefaultContainerRepositoryAccountName",
"value": "someusername"
},
{
"name": "DefaultContainerRepositoryPassword",
"value": "somepassword"
},
{
"name": "IsDefaultContainerRepositoryPasswordEncrypted",
"value": "false"
},
{
"name": "DefaultContainerRepositoryPasswordType",
"value": "PlainText"
}
]
},
]
Gunakan token sebagai kredensial registri
Service Fabric mendukung penggunaan token sebagai kredensial untuk mengunduh citra untuk kontainer Anda. Fitur ini memanfaatkan identitas terkelola dari skala mesin virtual yang mendasarinya yang diatur untuk mengautentikasi ke registri, menghilangkan kebutuhan untuk mengelola kredensial pengguna. Untuk info selengkapnya, lihat Identitas Terkelola untuk Sumber Daya Azure. Menggunakan fitur ini memerlukan langkah-langkah berikut:
Pastikan bahwa Identitas Terkelola yang Ditetapkan Sistem diaktifkan untuk VM.
Catatan
Untuk identitas terkelola yang ditetapkan pengguna, lewati langkah ini. Langkah-langkah yang tersisa di bawah ini akan berfungsi sama, selama kumpulan skala hanya terkait dengan satu identitas terkelola yang ditetapkan pengguna.
Berikan izin ke skala mesin virtual yang diatur untuk menarik/membaca citra dari registri. Dari bilah Access Control (IAM) Azure Container Registry Anda di portal Microsoft Azure, tambahkan penetapan peran untuk mesin virtual Anda:
Selanjutnya, ubah manifes aplikasi Anda. Di
ContainerHostPolicies
bagian, tambahkan atribut‘UseTokenAuthenticationCredentials=”true”
.<ServiceManifestImport> <ServiceManifestRef ServiceManifestName="NodeServicePackage" ServiceManifestVersion="1.0"/> <Policies> <ContainerHostPolicies CodePackageRef="NodeService.Code" Isolation="process" UseTokenAuthenticationCredentials="true"> <PortBinding ContainerPort="8905" EndpointRef="Endpoint1"/> </ContainerHostPolicies> <ResourceGovernancePolicy CodePackageRef="NodeService.Code" MemoryInMB="256"/> </Policies> </ServiceManifestImport>
Catatan
Bendera
UseDefaultRepositoryCredentials
yang diatur ke true sementaraUseTokenAuthenticationCredentials
true akan menyebabkan kesalahan selama penyebaran.
Langkah berikutnya
- Lihat selengkapnya tentang Autentikasi registri kontainer.