設定應用程式的存放庫認證以下載容器映像
將 RepositoryCredentials
新增至應用程式資訊清單的 ContainerHostPolicies
區段,以設定容器登錄驗證。 新增您的容器登錄 (以下範例中的 myregistry.azurecr.io) 的帳戶和密碼,讓服務從存放庫中下載容器映像。
<ServiceManifestImport>
...
<Policies>
<ContainerHostPolicies CodePackageRef="Code">
<RepositoryCredentials AccountName="myregistry" Password="=P==/==/=8=/=+u4lyOB=+=nWzEeRfF=" PasswordEncrypted="false"/>
<PortBinding ContainerPort="80" EndpointRef="Guest1TypeEndpoint"/>
</ContainerHostPolicies>
</Policies>
...
</ServiceManifestImport>
建議您使用已部署至叢集中所有節點的加密憑證來加密存放庫密碼。 當 Service Fabric 將服務套件部署至叢集時,會使用加密憑證將加密文字解密。 Invoke-ServiceFabricEncryptText Cmdlet 會用來建立密碼的加密文字,其已新增至 ApplicationManifest.xml 檔案。 如需憑證和加密語意的詳細資訊,請參閱秘密管理。
設定整個叢集的認證
Service Fabric 可讓您設定整個叢集的認證,而這可用來作應用程式的預設存放庫認證。
此功能可以透過將 UseDefaultRepositoryCredentials
屬性新增到 ApplicationManifest.xml 中的 ContainerHostPolicies
,使其具有 true
或 false
值來啟用或停用。
<ServiceManifestImport>
...
<Policies>
<ContainerHostPolicies CodePackageRef="Code" UseDefaultRepositoryCredentials="true">
<PortBinding ContainerPort="80" EndpointRef="Guest1TypeEndpoint"/>
</ContainerHostPolicies>
</Policies>
...
</ServiceManifestImport>
然後,Service Fabric 就會使用預設的存放庫認證,其可以在 ClusterManifest 中的 Hosting
區段下指定這些認證。 如果 UseDefaultRepositoryCredentials
是 true
,Service Fabric 會從 ClusterManifest 中讀取下列值:
- DefaultContainerRepositoryAccountName (字串)
- DefaultContainerRepositoryPassword (字串)
- IsDefaultContainerRepositoryPasswordEncrypted (布林值)
- DefaultContainerRepositoryPasswordType (字串)
以下是可以在 ClusterManifestTemplate.json 檔案的 Hosting
區段內新增的內容範例。 可以在建立叢集時或稍後在設定升級中新增 Hosting
區段。 如需詳細資訊,請參閱變更 Azure Service Fabric 叢集設定及管理 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"
}
]
},
]
使用權杖作為登錄認證
Service Fabric 支援使用權杖作為認證,以下載容器的映像。 此功能會利用基礎虛擬機器擴展集的受控識別來向登錄進行驗證,而不需要管理使用者認證。 如需詳細資訊,請參閱 Azure 資源的受控識別。 使用此功能需要遵循下列步驟:
確保已為 VM 啟用系統指派的受控識別。
注意
若為使用者指派的受控識別,請略過此步驟。 只要擴展集只與單一使用者指派的受控識別相關聯,以下的其餘步驟就會相同。
授與權限給虛擬機器擴展集,以從登錄提取/讀取映像。 從 Azure 入口網站 Azure Container Registry 的 [存取控制 (IAM)] 刀鋒視窗,為您的虛擬機器新增角色指派:
接下來,修改您的應用程式資訊清單。 在
ContainerHostPolicies
區段中,加入屬性‘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>
注意
當
UseTokenAuthenticationCredentials
為 true 時,將旗標UseDefaultRepositoryCredentials
設為 true 會在部署期間導致錯誤。
下一步
- 深入了解容器登錄驗證。