Compartir a través de


Configuración de credenciales de repositorio para que la aplicación descargue imágenes de contenedor

Configure la autenticación del registro de contenedor mediante la adición de RepositoryCredentials a la sección ContainerHostPolicies del manifiesto de aplicación. Agregue la cuenta y contraseña del registro de contenedor (myregistry.azurecr.io), lo que permite al servicio descargar la imagen del contenedor del repositorio.

<ServiceManifestImport>
    ...
    <Policies>
        <ContainerHostPolicies CodePackageRef="Code">
            <RepositoryCredentials AccountName="myregistry" Password="=P==/==/=8=/=+u4lyOB=+=nWzEeRfF=" PasswordEncrypted="false"/>
            <PortBinding ContainerPort="80" EndpointRef="Guest1TypeEndpoint"/>
        </ContainerHostPolicies>
    </Policies>
    ...
</ServiceManifestImport>

Se recomienda cifrar la contraseña del repositorio con un certificado de cifrado que se implemente en todos los nodos del clúster. Cuando Service Fabric implementa el paquete de servicio en el clúster, el certificado de cifrado se utiliza para descifrar el texto cifrado. El cmdlet Invoke-ServiceFabricEncryptText se usa para crear el texto cifrado para la contraseña, que se agrega al archivo ApplicationManifest.xml. Vea Administración de secretos para más información sobre los certificados y la semántica de cifrado.

Configuración de las credenciales en todo el clúster

Service Fabric permite configurar credenciales en todo el clúster que las aplicaciones pueden usar como credenciales del repositorio predeterminadas.

Para habilitar o deshabilitar esta característica, hay que agregar el atributo UseDefaultRepositoryCredentials a ContainerHostPolicies en ApplicationManifest.xml con un valor de true o false.

<ServiceManifestImport>
    ...
    <Policies>
        <ContainerHostPolicies CodePackageRef="Code" UseDefaultRepositoryCredentials="true">
            <PortBinding ContainerPort="80" EndpointRef="Guest1TypeEndpoint"/>
        </ContainerHostPolicies>
    </Policies>
    ...
</ServiceManifestImport>

Después, Service Fabric usa las credenciales del repositorio predeterminadas, que se pueden especificar en el archivo ClusterManifest de la sección Hosting. Si UseDefaultRepositoryCredentials es true, Service Fabric lee los valores siguientes de ClusterManifest:

  • DefaultContainerRepositoryAccountName (cadena)
  • DefaultContainerRepositoryPassword (cadena)
  • IsDefaultContainerRepositoryPasswordEncrypted (valor booleano)
  • DefaultContainerRepositoryPasswordType (cadena)

Este es un ejemplo de lo que se puede agregar dentro de la sección Hosting en el archivo ClusterManifestTemplate.json. La sección Hosting puede agregarse al crear el clúster o posteriormente en una actualización de la configuración. Para obtener más información, consulte Personalización de la configuración de un clúster de Service Fabric y Administración de los secretos en aplicaciones de 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"
          }
        ]
      },
]

Uso de tokens como credenciales del registro

Service Fabric permite usar tokens como credenciales para descargar imágenes relativas a los contenedores. Esta característica aprovecha la identidad administrada del conjunto de escalado de máquinas virtuales subyacente para autenticarse en el registro, lo que elimina la necesidad de administrar las credenciales de usuario. Para más información, consulte Identidades administradas para los recursos de Azure. El uso de esta característica requiere los siguientes pasos:

  1. Asegúrese de que la identidad administrada asignada por el sistema está habilitada para la máquina virtual.

    Azure Portal: Opción para crear una identidad de un conjunto de escalado de máquinas virtuales

Nota

En el caso de una identidad administrada asignada por el usuario, omita este paso. Los pasos restantes funcionarán de la misma forma, siempre que el conjunto de escalado solo esté asociado a una única identidad administrada asignada por el usuario.

  1. Conceda al conjunto de escalado de máquinas virtuales los permisos necesarios para extraer o leer imágenes del registro. En la hoja Access Control (IAM) de Azure Container Registry de Azure Portal, agregue una asignación de roles para la máquina virtual:

    Agregar una entidad de seguridad de máquina virtual a ACR

  2. A continuación, modifique el manifiesto de aplicación. En la sección ContainerHostPolicies, agregue el 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

    Si la marca UseDefaultRepositoryCredentials está establecida en true cuando UseTokenAuthenticationCredentials es true, se producirá un error durante la implementación.

Pasos siguientes