Configurar credenciais de repositório para seu aplicativo para baixar imagens de contêiner
Configure a autenticação do registro de contêiner adicionando RepositoryCredentials
à seção ContainerHostPolicies
do manifesto do aplicativo. Adicione a conta e a senha do registro de contêiner (myregistry.azurecr.io no exemplo abaixo), o que permite ao serviço baixar a imagem de contêiner do repositório.
<ServiceManifestImport>
...
<Policies>
<ContainerHostPolicies CodePackageRef="Code">
<RepositoryCredentials AccountName="myregistry" Password="=P==/==/=8=/=+u4lyOB=+=nWzEeRfF=" PasswordEncrypted="false"/>
<PortBinding ContainerPort="80" EndpointRef="Guest1TypeEndpoint"/>
</ContainerHostPolicies>
</Policies>
...
</ServiceManifestImport>
É recomendável que você criptografe a senha do repositório usando um certificado de criptografia que é implantado em todos os nós do cluster. Quando o Service Fabric implanta o pacote de serviço para o cluster, o certificado de criptografia é usado para descriptografar o texto cifrado. O cmdlet Invoke-ServiceFabricEncryptText é usado para criar o texto cifrado para a senha, que é adicionado ao arquivo ApplicationManifest.xml. Confira Gerenciamento de Segredos para saber mais sobre certificados e semântica de criptografia.
Configurar credenciais de todo o cluster
O Service Fabric permite que você configure credenciais de todo o cluster que podem ser usadas como credenciais do repositório padrão por aplicativos.
Esse recurso pode ser habilitado ou desabilitado adicionando o atributo UseDefaultRepositoryCredentials
a ContainerHostPolicies
em ApplicationManifest.xml com um valor de true
ou false
.
<ServiceManifestImport>
...
<Policies>
<ContainerHostPolicies CodePackageRef="Code" UseDefaultRepositoryCredentials="true">
<PortBinding ContainerPort="80" EndpointRef="Guest1TypeEndpoint"/>
</ContainerHostPolicies>
</Policies>
...
</ServiceManifestImport>
O Service Fabric, ewem seguida, usa as credenciais do repositório padrão que pode ser especificado em ClusterManifest na seção Hosting
. Se UseDefaultRepositoryCredentials
for true
, o Service Fabric lerá os seguintes valores de ClusterManifest:
- DefaultContainerRepositoryAccountName (cadeia de caracteres)
- DefaultContainerRepositoryPassword (cadeia de caracteres)
- IsDefaultContainerRepositoryPasswordEncrypted (booliano)
- DefaultContainerRepositoryPasswordType (cadeia de caracteres)
Veja um exemplo do que pode ser adicionado na seção Hosting
no arquivo ClusterManifestTemplate.json. A seção Hosting
pode ser adicionada na criação do cluster ou posteriormente em uma atualização de configuração. Para obter mais informações, consulte Alterar configurações de cluster do Azure Service Fabric e Gerenciar segredos de aplicativo do 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"
}
]
},
]
Usar tokens como credenciais do registro
O Service Fabric dá suporte ao uso de tokens como credenciais para baixar imagens para seus contêineres. Esse recurso aproveita a identidade gerenciada do conjunto de dimensionamento de máquinas virtuais subjacentes para autenticar ao registro, eliminando a necessidade de gerenciar as credenciais do usuário. Confira Gerenciar identidades para recursos do Azure para saber mais. O uso desse recurso requer as seguintes etapas:
Verifique se a Identidade Gerenciada Atribuída pelo Sistema está habilitada para a VM.
Observação
Para identidade gerenciada atribuída pelo usuário, ignore esta etapa. As etapas restantes a seguir funcionarão da mesma forma, desde que o conjunto de dimensionamento só esteja associado a uma única identidade gerenciada atribuída pelo usuário.
Conceda permissões ao conjunto de dimensionamento de máquinas virtuais para extrair/ler imagens do registro. Na folha de Controle de Acesso (IAM) do seu Registro de Contêiner do Azure no portal do Azure, adicione uma atribuição de função para sua máquina virtual:
Em seguida, modifique o manifesto do aplicativo. Na seção
ContainerHostPolicies
, adicione o atributo‘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>
Observação
Ter o sinalizador
UseDefaultRepositoryCredentials
definido como true enquantoUseTokenAuthenticationCredentials
for true causará um erro durante a implantação.
Próximas etapas
- Veja mais sobre a Autenticação do registro de contêiner.