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 do manifesto ContainerHostPolicies
do aplicativo. Adicione a conta e a senha para seu registro de contêiner (myregistry.azurecr.io no exemplo abaixo), o que permite que o serviço baixe a imagem do 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 criptografar a senha do repositório usando um certificado de criptografia implantado em todos os nós do cluster. Quando o Service Fabric implementa o pacote de serviço no cluster, o certificado de encriptação é utilizado para desencriptar o texto de cifra. O cmdlet Invoke-ServiceFabricEncryptText é utilizado para criar o texto de cifra para a palavra-passe, que é adicionado ao ficheiro ApplicationManifest.xml. Consulte Gerenciamento secreto para obter mais informações sobre certificados e semântica de criptografia.
Configurar credenciais em todo o cluster
O Service Fabric permite configurar credenciais em todo o cluster que podem ser usadas como credenciais de repositório padrão por aplicativos.
Esse recurso pode ser habilitado ou desabilitado adicionando o UseDefaultRepositoryCredentials
atributo a ContainerHostPolicies
in ApplicationManifest.xml com um true
ou false
valor.
<ServiceManifestImport>
...
<Policies>
<ContainerHostPolicies CodePackageRef="Code" UseDefaultRepositoryCredentials="true">
<PortBinding ContainerPort="80" EndpointRef="Guest1TypeEndpoint"/>
</ContainerHostPolicies>
</Policies>
...
</ServiceManifestImport>
Em seguida, o Service Fabric usa as credenciais de repositório padrão que podem ser especificadas no ClusterManifest na Hosting
seção . Se UseDefaultRepositoryCredentials
for true
, o Service Fabric lê os seguintes valores do ClusterManifest:
- DefaultContainerRepositoryAccountName (cadeia de caracteres)
- DefaultContainerRepositoryPassword (cadeia de caracteres)
- IsDefaultContainerRepositoryPasswordEncrypted (bool)
- DefaultContainerRepositoryPasswordType (cadeia de caracteres)
Aqui está um exemplo do que pode ser adicionado dentro da Hosting
seção no arquivo ClusterManifestTemplate.json. A Hosting
seção 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 oferece suporte ao uso de tokens como credenciais para baixar imagens para seus contêineres. Esse recurso aproveita a identidade gerenciada do conjunto de escala de máquina virtual subjacente para autenticar no Registro, eliminando a necessidade de gerenciar credenciais de usuário. Consulte Identidades gerenciadas para recursos do Azure para obter mais informações. O uso desse recurso requer as seguintes etapas:
Verifique se a Identidade Gerenciada Atribuída pelo Sistema está habilitada para a VM.
Nota
Para identidade gerenciada atribuída pelo usuário, ignore esta etapa. As etapas restantes abaixo funcionarão da mesma forma, desde que o conjunto de escala esteja associado apenas a uma única identidade gerenciada atribuída pelo usuário.
Conceda permissões ao conjunto de dimensionamento da máquina virtual para extrair/ler imagens do Registro. Na folha 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.
ContainerHostPolicies
Na seção , 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>
Nota
O sinalizador
UseDefaultRepositoryCredentials
definido como true whileUseTokenAuthenticationCredentials
is true causará um erro durante a implantação.
Próximos passos
- Veja mais sobre a autenticação do Registro de contêiner.