Condividi tramite


Configurare le credenziali del repository per l'applicazione per scaricare le immagini del contenitore

Configurare l'autenticazione del registro contenitori aggiungendo RepositoryCredentials alla ContainerHostPolicies sezione del manifesto dell'applicazione. Aggiungere l'account e la password per il registro contenitori (myregistry.azurecr.io nell'esempio seguente), che consente al servizio di scaricare l'immagine del contenitore dal repository.

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

È consigliabile crittografare la password del repository usando un certificato di crittografia distribuito in tutti i nodi del cluster. Quando Service Fabric distribuisce il pacchetto del servizio nel cluster, il certificato di crittografia viene usato per decrittografare il testo crittografato. Il cmdlet Invoke-ServiceFabricEncryptText viene usato per creare il testo crittografato per la password, che viene aggiunto al file ApplicationManifest.xml. Per altre informazioni sui certificati e sulla semantica di crittografia, vedere Gestione dei segreti .

Configurare le credenziali a livello di cluster

Service Fabric consente di configurare le credenziali a livello di cluster che possono essere usate come credenziali predefinite del repository dalle applicazioni.

Questa funzionalità può essere abilitata o disabilitata aggiungendo l'attributo UseDefaultRepositoryCredentials a ContainerHostPolicies in ApplicationManifest.xml con un valore true o false.

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

Service Fabric usa quindi le credenziali predefinite del repository che possono essere specificate in ClusterManifest nella Hosting sezione . Se UseDefaultRepositoryCredentials è true, Service Fabric legge i valori seguenti da ClusterManifest:

  • DefaultContainerRepositoryAccountName (string)
  • DefaultContainerRepositoryPassword (string)
  • IsDefaultContainerRepositoryPasswordEncrypted (bool)
  • DefaultContainerRepositoryPasswordType (string)

Di seguito è riportato un esempio di cosa è possibile aggiungere all'interno della Hosting sezione del file ClusterManifestTemplate.json. La Hosting sezione può essere aggiunta durante la creazione del cluster oppure successivamente durante un aggiornamento della configurazione. Per altre informazioni, vedere Modificare le impostazioni del cluster di Azure Service Fabric e Gestire i segreti delle applicazioni di 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"
          }
        ]
      },
]

Usare i token come credenziali del Registro di sistema

Service Fabric supporta l'uso di token come credenziali per scaricare le immagini per i contenitori. Questa funzionalità sfrutta l'identità gestita del set di scalabilità di macchine virtuali sottostante per eseguire l'autenticazione nel Registro di sistema, eliminando la necessità di gestire le credenziali utente. Per altre informazioni, vedere Identità gestite per le risorse di Azure . L'uso di questa funzionalità richiede i passaggi seguenti:

  1. Assicurarsi che l'identità gestita assegnata dal sistema sia abilitata per la macchina virtuale.

    Portale di Azure: Opzione di creazione dell'identità per un set di scalabilità di macchine virtuali

Annotazioni

Per l'identità gestita assegnata dall'utente, ignorare questo passaggio. I passaggi rimanenti seguenti funzioneranno allo stesso modo, purché il set di scalabilità sia associato solo a una singola identità gestita assegnata dall'utente.

  1. Concedere le autorizzazioni al set di scalabilità di macchine virtuali per prelevare/leggere immagini dal registro. Nel pannello Controllo di accesso (IAM) del Registro Azure Container nel portale di Azure aggiungere un'assegnazione di ruolo per la macchina virtuale:

    Aggiungere l'entità principale della macchina virtuale al Registro Azure Container

  2. Modificare quindi il manifesto dell'applicazione. ContainerHostPolicies Nella sezione aggiungere l'attributo ‘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>
    

    Annotazioni

    Il flag UseDefaultRepositoryCredentials impostato su true mentre UseTokenAuthenticationCredentials è true causerà un errore durante la distribuzione.

Passaggi successivi