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 della password, che viene aggiunto al file ApplicationManifest.xml. Per altre informazioni sui certificati e sulla semantica di crittografia, vedere Gestione dei segreti.
Configurare 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 true
valore 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 (stringa)
- DefaultContainerRepositoryPassword (stringa)
- IsDefaultContainerRepositoryPasswordEncrypted (bool)
- DefaultContainerRepositoryPasswordType (string)
Di seguito è riportato un esempio di cosa è possibile aggiungere all'interno della Hosting
sezione del file ClusterManifestTemplate.json. È possibile aggiungere la sezione Hosting
al momento della creazione del cluster o successivamente durante un aggiornamento della configurazione. Per altre informazioni, vedere Personalizzare le impostazioni di un cluster di Service Fabric e Gestire i segreti nelle applicazioni di 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:
Assicurarsi che l'identità gestita assegnata dal sistema sia abilitata per la macchina virtuale.
Nota
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.
Concedere le autorizzazioni al set di scalabilità di macchine virtuali per eseguire il pull/lettura di immagini dal Registro di sistema. Nel pannello Controllo di accesso (IAM) del Registro Azure Container nella portale di Azure aggiungere un'assegnazione di ruolo per la macchina virtuale:
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>
Nota
Il flag
UseDefaultRepositoryCredentials
impostato su true mentreUseTokenAuthenticationCredentials
è true causerà un errore durante la distribuzione.