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:

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

    Portal do Azure: Criar opção de identidade de conjunto de escala de máquina virtual

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.

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

    Adicionar entidade de VM ao ACR

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

Próximos passos