Compartilhar via


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:

  1. Verifique se a Identidade Gerenciada Atribuída pelo Sistema está habilitada para a VM.

    Portal do Azure: criar opção de identidade do conjunto de dimensionamento de máquinas virtuais

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.

  1. 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:

    Adicionar entidade de segurança de VM ao ACR

  2. 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 enquanto UseTokenAuthenticationCredentials for true causará um erro durante a implantação.

Próximas etapas