Konfigurace přihlašovacích údajů úložiště pro vaši aplikaci pro stahování imagí kontejneru
Nakonfigurujte ověřování registru kontejneru přidáním RepositoryCredentials
do ContainerHostPolicies
části manifestu aplikace. Přidejte účet a heslo pro registr kontejneru (myregistry.azurecr.io v následujícím příkladu), což službě umožní stáhnout image kontejneru z úložiště.
<ServiceManifestImport>
...
<Policies>
<ContainerHostPolicies CodePackageRef="Code">
<RepositoryCredentials AccountName="myregistry" Password="=P==/==/=8=/=+u4lyOB=+=nWzEeRfF=" PasswordEncrypted="false"/>
<PortBinding ContainerPort="80" EndpointRef="Guest1TypeEndpoint"/>
</ContainerHostPolicies>
</Policies>
...
</ServiceManifestImport>
Doporučujeme šifrovat heslo úložiště pomocí certifikátu šifrování, který je nasazený na všech uzlech clusteru. Když Service Fabric nasadí balíček služby do clusteru, certifikát šifrování se použije k dešifrování šifrovaného textu. Rutina Invoke-ServiceFabricEncryptText se používá k vytvoření šifrovaného textu pro heslo, který se přidá do souboru ApplicationManifest.xml. Další informace o sémantice certifikátů a šifrování najdete v tématu Správa tajných kódů.
Konfigurace přihlašovacích údajů pro celý cluster
Service Fabric umožňuje konfigurovat přihlašovací údaje pro celý cluster, které můžou aplikace používat jako výchozí přihlašovací údaje úložiště.
Tuto funkci lze povolit nebo zakázat přidáním atributu UseDefaultRepositoryCredentials
do ContainerHostPolicies
ApplicationManifest.xml s true
hodnotou nebo false
hodnotou.
<ServiceManifestImport>
...
<Policies>
<ContainerHostPolicies CodePackageRef="Code" UseDefaultRepositoryCredentials="true">
<PortBinding ContainerPort="80" EndpointRef="Guest1TypeEndpoint"/>
</ContainerHostPolicies>
</Policies>
...
</ServiceManifestImport>
Service Fabric pak použije výchozí přihlašovací údaje úložiště, které je možné zadat v clusterManifestu Hosting
v části. Pokud UseDefaultRepositoryCredentials
ano true
, Service Fabric načte z ClusterManifestu následující hodnoty:
- DefaultContainerRepositoryAccountName (řetězec)
- DefaultContainerRepositoryPassword (řetězec)
- IsDefaultContainerRepositoryPasswordEncrypted (bool)
- DefaultContainerRepositoryPasswordType (řetězec)
Tady je příklad toho, co lze přidat do oddílu Hosting
v souboru ClusterManifestTemplate.json. Oddíl Hosting
je možné přidat při vytváření clusteru nebo později v upgradu konfigurace. Další informace najdete v tématu Změna nastavení clusteru Azure Service Fabric a správa tajných kódů aplikací 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"
}
]
},
]
Použití tokenů jako přihlašovacích údajů registru
Service Fabric podporuje používání tokenů jako přihlašovacích údajů ke stahování imagí pro kontejnery. Tato funkce využívá spravovanou identitu základní škálovací sady virtuálních počítačů k ověření v registru a eliminuje potřebu správy přihlašovacích údajů uživatele. Další informace najdete v tématu Spravované identity pro prostředky Azure. Použití této funkce vyžaduje následující kroky:
Ujistěte se, že je pro virtuální počítač povolená spravovaná identita přiřazená systémem.
Poznámka:
U spravované identity přiřazené uživatelem tento krok přeskočte. Zbývající kroky budou fungovat stejně, pokud je škálovací sada přidružená pouze k jedné spravované identitě přiřazené uživatelem.
Udělte oprávnění škálovací sadě virtuálních počítačů pro vyžádání a čtení imagí z registru. V okně Řízení přístupu (IAM) služby Azure Container Registry na webu Azure Portal přidejte přiřazení role pro virtuální počítač:
Dále upravte manifest aplikace.
ContainerHostPolicies
V části přidejte 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>
Poznámka:
Příznak
UseDefaultRepositoryCredentials
nastavený na true, zatímcoUseTokenAuthenticationCredentials
je true, způsobí chybu během nasazení.
Další kroky
- Přečtěte si další informace o ověřování registru kontejneru.