Accesso ai registri dei contenitori

Le immagini utilizzate da IBM Cloud® Code Engine sono tipicamente memorizzate in un registro che può essere accessibile al pubblico (registro pubblico) o impostato con accesso limitato a un piccolo gruppo di utenti (registro privato).

Un registro del contenitore, o registro, è un servizio che memorizza le immagini del contenitore. Ad esempio, IBM Cloud Container Registry e Docker Hub sono registri del contenitore. Un registro del contenitore può essere pubblico o privato. Un registro del contenitore pubblico non richiede credenziali per accedere. Al contrario, l'accesso a un registro privato richiede le credenziali.

Code Engine richiede l'accesso ai registri del contenitore per completare le seguenti azioni:

  • Per richiamare (o "estrarre") un'immagine del contenitore per eseguire un'applicazione o un lavoro
  • Per memorizzare un'immagine del contenitore appena creata come output di una creazione di immagine
  • Per memorizzare e richiamare i file locali quando viene eseguito un build dall'origine locale

Code Engine gestisce molti dei dettagli sottostanti delle interazioni tra il sistema e il registro.

Per eseguire il pull delle immagini da un registro, Code Engine utilizza un tipo speciale di segreto Kubernetes denominato imagePullSecret. Questo segreto di pull dell'immagine archivia le credenziali per accedere a un registro del contenitore. Quando aggiungi l'accesso a un registro del contenitore con Code Engine per eseguire il pull delle immagini, stai creando un segreto di pull dell'immagine. Per ulteriori informazioni sui segreti di pull dell'immagine, vedi la documentazione diKubernetes.

Tipi di registri di immagini

Le immagini normalmente vengono archiviate in un registro ed è possibile accedervi pubblicamente (registro pubblico) o configurarle con un accesso limitato a un piccolo gruppo di utenti (registro privato).

I registri pubblici, come l'hub pubblico Docker, possono essere utilizzati per iniziare a utilizzare Docker e Code Engine per creare la tua prima applicazione o lavoro. Ma quando si tratta di carichi di lavoro aziendali, utilizzate un registro privato, come quello fornito da IBM Cloud Container Registry, per proteggere le immagini dall'uso da parte di utenti non autorizzati. Per i registri privati, utilizzare i segreti del Registro di sistema per assicurarsi che le credenziali siano disponibili per ottenere l'accesso al registro privato.

Tipi di registro di immagini pubbliche e private
Registro Descrizione
IBM Cloud Container Registry

Con questo tipo di registro, puoi configurare il tuo repository di immagine protetto in IBM Cloud Container Registry dove puoi archiviare e condividere in modo sicuro le immagini tra gli utenti.
Con IBM Cloud Container Registry, puoi

  • Gestisci l'accesso alle immagini nel tuo account.
  • Utilizza le immagini e le applicazioni di esempio fornite da IBM, come IBM Liberty, come immagine di base e aggiungi il tuo proprio codice applicazione.
Ogni altro registro privato

Connetti qualsiasi registro privato esistente a Code Engine aggiungendo l'accesso. L'aggiunta di un accesso sicuro salva il registro URL e le credenziali in un segreto Kubernetes.
Con i registri privati è possibile:

  • Utilizzare i registri privati esistenti indipendentemente dalla loro origine ( Docker Hub, registri di proprietà dell'organizzazione o altri registri Cloud privati).
Docker Hub pubblico

Usare questo tipo di registro per estrarre le immagini pubbliche esistenti da Docker Hub direttamente nelle applicazioni o nei lavori Code Engine.

Importante:

  • Questo tipo di registro potrebbe non soddisfare i requisiti di sicurezza dell'organizzazione, come la gestione degli accessi, la scansione delle vulnerabilità o la privacy delle app.
  • Quando si estrae un'immagine da Docker Hub per utilizzarla con le applicazioni o i lavori in Code Engine, tenere presente i limiti tariffari di Docker per gli utenti del piano gratuito (non autenticati). È possibile che si verifichino dei limiti di estrazione se si riceve un errore " 429, che indica che si è raggiunto il limite della velocità di estrazione. Per aumentare i limiti tariffari, è possibile aggiornare l'account a un abbonamento Docker Pro o Team.

Con Docker Hub pubblico, è possibile:

  • Queste immagini possono essere consultate direttamente quando si crea un'applicazione o un lavoro, senza bisogno di ulteriori impostazioni.
  • Include varie applicazioni open source.

Tipi di segreti di registro

Per accedere alle immagini in un registro, Code Engine utilizza uno dei seguenti tipi di segreti di registro.

  • Code Engine segreto gestito - Se il tuo registro utilizza uno spazio dei nomi IBM Cloud Container Registry presente nel tuo account, puoi consentire a Code Engine di creare e gestire il segreto del registro per te. Nella console, questo segreto di registro creato automaticamente viene chiamato Code Engine managed secret. Nella CLI, il nome di un segreto di registro creato automaticamente è nel formato ce-auto-icr-private-<region>.
  • Segreto gestito dall'utente - Questo è un segreto che si crea e si gestisce. Puoi accedere alle immagini dal tuo account con una chiave API o utilizzare un token di accesso per il registro del contenitore di tua scelta; ad esempio, Docker Hub. Per questo caso, il segreto di registro elencato nella console è il nome del tuo segreto di registro.

Se il tuo registro è pubblico e non richiede credenziali; ad esempio, immagini di esempio Code Engine in icr.io/codeengine o Docker Hub pubblico, non hai bisogno di un segreto di registro. Per questo caso, il segreto di registro elencato nella console è None.

Impostazione delle autorizzazioni per i registri di immagini

Se il registro è pubblico, non è necessario impostare le autorizzazioni per eseguire il pull delle immagini. Nota che il pull delle immagini da un registro pubblico mentre stai iniziando con Code Engine è accettabile. Utilizzare un registro privato quando si tratta di carichi di lavoro aziendali.

Di quali autorità ho bisogno?

Per determinare le autorizzazioni necessarie, considerare i seguenti casi:

  • Quando distribuisci applicazioni o esegui lavori, Code Engine può accedere automaticamente alle immagini che si trovano nel tuo account.

  • Se vuoi accedere alle tue immagini da un account condiviso, da altri account IBM Cloud o da un account Docker privato, ti devono essere assegnate le autorizzazioni di accesso appropriate.

  • Quando distribuisci le applicazioni o esegui i lavori e il tuo registro utilizza uno spazio dei nomi IBM Cloud Container Registry presente nel tuo account, puoi consentire a Code Engine di creare e gestire automaticamente il segreto del registro, purché il tuo account disponga delle autorizzazioni richieste come descritto nella seguente tabella.

    • Nella console, questo segreto di registro è chiamato Code Engine managed secret. Questa opzione è disponibile quando utilizzi i flussi di lavoro Configura immagine o Specifica dettagli build per la creazione di un'immagine con Code Engine.
    • Nella CLI, questo segreto di registro ha il formato ce-auto-icr-private-<region>. Questo segreto di registro viene creato automaticamente quando si specifica l'opzione --build-source, ma non si fornisce l'opzione --registry-secret con i comandi app create, app update, job create o job update.
Autorità di accesso per il registro delle immagini
Azione Accesso al servizio IAM Descrizione
pull delle immagini Reader Accesso al servizio Quando distribuisci un'immagine come un'applicazione o un lavoro, devi estrarre l'immagine da un registro. Per estrarre le immagini, è necessario l'accesso in lettura. Se il registro è pubblico, hai già accesso in lettura alle immagini. Se il registro è privato, è richiesto un segreto di registro.
push delle immagini Reader e Writer accesso ai servizi Quando crei il codice sorgente, devi eseguire il push dell'immagine a un registro. Per eseguire il push delle immagini al tuo registro, devi disporre dell'accesso in lettura e scrittura e devi disporre di un segreto del registro.
Crea uno spazio dei nomi Accesso al servizio Reader, Writer e Manager Questa azione è supportata solo per IBM Cloud Container Registry.
Code Engine ha creato automaticamente il segreto di registro Accesso al servizio Administrator platform
Reader, Writer e Manager
Questa azione è supportata solo per IBM Cloud Container Registry.

Posso utilizzare un ID servizio?

Sì, è possibile creare un ID servizio e assegnarvi le autorizzazioni. Tieni presente che gli ID servizio vengono creati automaticamente anche dall'IU Code Engine quando crei automaticamente l'accesso al tuo IBM Cloud Container Registry. NON eliminare questo ID servizio poiché perderai l'accesso alle immagini nel registro.

Posso accedere alle immagini in un altro registro?

Sì. Ecco come.

Posso limitare l'accesso di pull a un determinato registro regionale o anche a un singolo spazio dei nomi?

Sì, puoi modificare la politica IAM esistente dell'ID servizio che limita il ruolo di accesso al servizio Lettore a tale registro locale o a una risorsa di registro, come ad esempio uno spazio dei nomi. Prima di poter personalizzare le politiche IAM del registro, devi abilitare le politiche IBM Cloud IAM per IBM Cloud Container Registry.

Accesso alle immagini da un account pubblico

Se la tua immagine è archiviata in un repository pubblico, come un hub Docker pubblico, puoi semplicemente fare riferimento all'immagine direttamente quando distribuisci la tua applicazione o esegui il tuo lavoro. Tieni presente che durante la memorizzazione delle immagini in un registro pubblico è utile per iniziare a utilizzare le applicazioni e i lavori, memorizza le immagini aziendali in un registro privato.

Accesso alle immagini nel proprio account dalla console

Se stai accedendo a Code Engine da un account che possiedi o gestisci, lo spazio dei nomi Code Engine può eseguire automaticamente il push e il pull delle immagini da e verso uno spazio dei nomi IBM Cloud Container Registry nel tuo account quando crei o aggiorni le applicazioni, i lavori o le build dalla console. Code Engine può anche creare uno spazio dei nomi per te quando esegui il push di un'immagine. Per ulteriori informazioni, consulta i seguenti argomenti.

Accesso alle immagini dal tuo account con una chiave API

Se accedi a Code Engine con la CLI, devi prima creare una chiave API IAM e quindi salvare la chiave API IAM come accesso al Registro di sistema in Code Engine.

I passaggi seguenti creano una chiave API che memorizza le credenziali di un ID utente. Invece di usare un ID utente, si potrebbe creare una chiave API per un ID servizio che ha un criterio di accesso al servizio IBM Cloud IAM a IBM Cloud Container Registry. Se scegli di autenticare un ID utente, assicurati che l'utente sia un ID funzionale o un piano per i casi in cui l'utente se ne va in modo che Code Engine possa ancora accedere al registro.

Creare una chiave API dalla console

Per creare una IBM Cloud IAM dalla console,

  1. Avvia Panoramica di accesso(IAM).

  2. Seleziona API keys.

  3. Fai clic su Crea una chiave API IBM Cloud.

  4. Inserire un nome e una descrizione opzionale per la chiave API e fare clic su Crea.

  5. Copia la chiave API o fai clic su Scarica per salvarla.

    Non sarà più possibile visualizzare questa chiave API, quindi assicurati di registrarla in un luogo sicuro.

Ora che hai creato la tua chiave API, salvala come accesso al registro.

Creare una chiave API con la CLI

Per creare una IBM Cloud Con la CLI, eseguire il comando 'iam api-key-create. Ad esempio, per creare una chiave API chiamata 'cliapikey con una descrizione di 'My CLI API key e salvarla in un file chiamato 'key_file, eseguire il seguente comando:

ibmcloud iam api-key-create cliapikey -d "My CLI API key" --file key_file

Se si sceglie di non salvare la chiave in un file, è necessario registrare la chiave API visualizzata quando la si crea. Non puoi richiamarla successivamente.

Ora che hai creato la tua chiave API, salvala come accesso al registro.

Accesso alle immagini in un account condiviso

Per accedere alle immagini da IBM Cloud Container Registry in un account condiviso, ti deve essere assegnata l'autorizzazione appropriata.

Se stai pianificando di distribuire applicazioni ed eseguire lavori dall'account condiviso, Code Engine può eseguire il pull o il push delle immagini per te quando distribuisci la tua applicazione o crei il tuo lavoro.

Se vuoi eseguire il pull delle immagini dall'account condiviso al tuo account, devi essere autorizzato ad accedere a IBM Cloud Container Registry.

Accesso alle immagini in un account diverso

È possibile assegnare i criteri di accesso IAM di IBM Cloud agli utenti o a un ID servizio per limitare le autorizzazioni a specifici spazi dei nomi delle immagini del registro o ad azioni (come push o pull). Crea quindi una chiave API e memorizza queste credenziali del registro in Code Engine.

Ad esempio, per accedere alle immagini di altri account IBM Cloud, creare una chiave API che memorizzi le credenziali IBM Cloud Container Registry di un utente o di un ID servizio di quell'account. Quindi, in Code Engine, utilizza questa chiave per creare accesso nel tuo account.

Accesso alle immagini in un account hub Docker privato

Per accedere alle immagini in un account Hub Docker privato, crea l'accesso al registro fornendo la tua password o un token di accesso. Utilizzando un token di accesso, puoi concedere e revocare più facilmente l'accesso al tuo account hub Docker senza richiedere una modifica della password. Per ulteriori informazioni sui token di accesso e su Docker Hub, vedere Creare e gestire i token di accesso.

Dopo aver deciso se utilizzare direttamente la password o creare un token di accesso, crea il tuo accesso al registro.

Aggiungi accesso al registro a Code Engine

Per impostare l'accesso a un account IBM Cloud Container Registry diverso IBM Cloud, per eseguire il pull delle immagini da un account Hub Docker privato o per eseguire il pull o il push delle immagini utilizzando la CLI Code Engine, Puoi utilizzare la chiave APIIBM o il Docker Hub per creare l'accesso al registro tramite Code Engine per memorizzare la tua chiave di autenticazione o il tuo token.

Aggiunta dell'accesso al Registro dalla console

Prima di iniziare, creare un progetto.

  1. Dopo che il tuo progetto è nello stato Attivo, fai clic sul nome del tuo progetto nella pagina dei progettiCode Engine.
  2. Dalla pagina Componenti, fare clic su Segreti e mappe di configurazione.
  3. Dalla pagina Segreti e mappe di configurazione, fare clic su Crea per creare il segreto.
  4. Dalla pagina Crea segreto o configmap, completare la seguente procedura:
    1. Selezionare Segreto registro e fare clic su Avanti.
    2. Fornire un nome, ad esempio mysecret-registry.
    3. Specifica il registro di destinazione per questo segreto, come IBM Cloud Container Registry o Docker Hub.
    4. Specificare la posizione del registro.
    5. Specificare un nome utente. Se questo segreto è per IBM Cloud Container Registry, il nome utente è iamapikey. Se questo segreto è per Docker Hub, è il tuo ID Docker.
    6. Immettere le credenziali per il nome utente. Per IBM Cloud Container Registry, utilizza la chiave API IAM. Per Docker Hub, puoi utilizzare la tua password Docker Hub o un token di accesso . Per altri registri di destinazione, specificare la parola d'ordine o la chiave API per il nome utente.
    7. Fare clic su Crea per creare il segreto.

Ora che il tuo segreto è stato creato dalla console, vai alla pagina Secrets and configmaps per visualizzare un elenco di segreti e configmap definiti. È possibile applicare filtri per personalizzare l'elenco in base alle proprie esigenze.

Puoi aggiungere l'accesso a un registro del contenitore quando crei un'applicazione o un lavoro o quando crei un'immagine. Fai clic su Configura immagine e specifica l'immagine del contenitore da eseguire, incluso il registro in cui è memorizzata l'immagine e l'accesso al registro da utilizzare per richiamare l'immagine.

Aggiunta dell'accesso al registro con la CLI

A partire dalla versione della CLI 1.42.0, la definizione e l'utilizzo dei segreti nella CLI sono unificati nel gruppo di comandi secret del gruppo di comandi. Consultare i comandi ibmcloud ce secret. Utilizzare l'opzione --format per specificare la categoria del segreto, ad esempio basic_auth, generic, hmac, ssh, tls, o registry. Sebbene sia possibile continuare a utilizzare il gruppo di comando registry gruppo di comando, è possibile sfruttare il gruppo di comando unificato secret gruppo di comando unificato. Per creare un segreto per accedere al registro di un contenitore, usare il comando ibmcloud ce secret create --format registry il comando. Per saperne di più su come lavorare con i segreti in Code Engine, vedere Lavorare con i segreti.

Per aggiungere IBM Cloud Container Registry o l'accesso Docker Hub con la CLI, utilizza il comando secret create --format registry. Questo comando richiede il nome del segreto del registro, l'indirizzo URL del server del registro, il nome utente e la password per accedere al server del registro e consente altri argomenti opzionali. Per un elenco completo delle opzioni, consultare il comando ibmcloud ce secret create.

Ad esempio, il seguente comando crea l'accesso al Registro di sistema a un'istanza IBM Cloud Container Registry denominata myregistry che si trova nel server di registro di us.icr.io:

ibmcloud ce secret create --format registry --name myregistry --server us.icr.io --username iamapikey --password API_KEY

Output di esempio

Creating registry secret 'myregistry'...
OK

La seguente tabella riepiloga le opzioni utilizzate con il comando secret create --format registry in questo esempio. Per ulteriori informazioni sul comando e le sue opzioni, consultare il comando ibmcloud ce secret create.

Descrizione del comando
Opzione Descrizione
--name

Il nome del segreto di registro. Utilizzare un nome univoco all'interno del progetto. Questo valore è obbligatorio.

  • Il nome deve iniziare e terminare con un carattere alfanumerico minuscolo.
  • Il nome deve essere di 253 caratteri o meno e può contenere lettere minuscole, numeri, punti (.) e trattini (-).
--server Inserire l'indirizzo URL del server di registro. Per Container Registry, il nome del server è <region>.icr.io. Ad esempio, us.icr.io. Per Docker Hub, il valore è https://index.docker.io/v1/.
--username Inserire il nome utente per accedere al server di registro. Per Container Registry, è iamapikey. Per Docker Hub, è il tuo ID Docker.
--password Immettere la password. Per Container Registry, la parola d'ordine è la chiave API. Per Docker Hub, puoi utilizzare la tua password Docker Hub o un token di accesso .

Autorizzazione dell'accesso a Container Registry con ID servizio

Prima di poter aggiungere l'accesso a un ID servizio in un account diverso, devi prima autorizzare l'accesso all'ID servizio.

Quando crei un ID servizio, puoi limitare l'accesso a un account regionale IBM Cloud Container Registry o anche a uno spazio dei nomi specifico all'interno di tale account IBM Cloud Container Registry.

Autorizzazione dell'accesso a Container Registry con ID servizio dalla console

Per eseguire il pull o il push delle immagini da o verso IBM Cloud Container Registry, devi creare un ID servizio, creare una politica di accesso per l'ID servizio e quindi creare una chiave API per archiviare le credenziali.

Passo 1 Crea o identifica un ID servizio e lo autorizza al servizio IBM Cloud Container Registry

  1. Avvia Panoramica di accesso(IAM).
  2. Seleziona ID servizio.
  3. Se si dispone di un ID servizio che si desidera utilizzare, selezionarlo. In caso contrario, selezionare Crea, immettere un nome e una descrizione e fare clic su Crea.
  4. Dalla pagina ID servizio, dalla sezione Politiche di accesso, seleziona Assegna accesso.
  5. Dalla sezione Assegna l'accesso aggiuntivo all'ID servizio,
    1. Selezionare Container Registry per il tipo di accesso. Fai clic su Next.
    2. Selezionare il tipo di accesso: Tutte le risorse o Risorse specifiche. Se si specifica Risorse specifiche, è possibile aggiungere gli attributi in base al gruppo di risorse, all'area geografica, alla regione, al tipo di risorsa, all'ID risorsa o al nome risorsa per limitare ulteriormente l'accesso. Se selezioni un determinato gruppo di risorse, assicurati di selezionare l'accesso Visualizzatore per l'accesso Gruppo di risorse. Fai clic su Next.
    3. Nella sezione Ruoli e azioni, selezionare il tipo di accesso che si desidera concedere. Se si prevede di utilizzare solo immagini per le applicazioni e i job, selezionare Lettore. Se vuoi eseguire il push del codice sorgente e delle immagini a Container Registry, seleziona anche Writer. Fare clic su Rivedi.
    4. Fare clic su Aggiungi e quindi su Assegna.

Passo 2 Abilitazione del rilevamento Container Registry

Per consentire alla console Code Engine di rilevare automaticamente il registro del contenitore, devi autenticare l'ID servizio per IAM Identity Service.

  1. Dalla pagina ID servizio, dalla sezione Politiche di accesso, seleziona Assegna accesso.
  2. Dalla sezione Assegna l'accesso aggiuntivo all'ID servizio,
    1. Seleziona IAM Identity Service per il tipo di accesso. Fai clic su Next.
    2. Selezionare Risorse specifiche per l'ambito della risorsa. Selezionare Tipo di risorsa come tipo di attributo, mantenere stringa uguale a come operatore e immettere serviceid come valore. Fare clic su Aggiungi una condizione.
    3. Selezionare ID risorsa come tipo di attributo, mantenere string equals come operatore e inserire l'identificativo del proprio ID servizio. L'ID del servizio si trova nella pagina dei dettagli dell'ID del servizio o nel browser URL durante la configurazione. Fai clic su Next.
    4. Nella sezione Ruoli e azioni, seleziona l'accesso Operatore della piattaforma. Fare clic su Revisione
    5. Fare clic su Aggiungi e quindi su Assegna.

Passo 3 Creazione di una chiave API per un ID servizio

Creare una chiave API per un ID servizio.

  1. Dalla pagina ID servizio, selezionare Chiavi API e quindi Crea.

  2. Inserire un nome e una descrizione opzionale per la chiave API e fare clic su Crea.

  3. Copia la chiave API o fai clic su Scarica per salvarla.

    Non sarà più possibile visualizzare questa chiave API, quindi assicurati di registrarla in un luogo sicuro.

Ora che hai le tue politiche di accesso in atto per il tuo ID servizio e la tua chiave API creati, puoi aggiungere l'accesso a Code Engine per eseguire il pull delle immagini dal registro del contenitore.

Autorizzazione dell'accesso a Container Registry con la CLI

Per estrarre le immagini da IBM Cloud Container Registry in un account differente, devi creare un ID servizio, creare le politiche di accesso per l'ID servizio e quindi creare una chiave API per archiviare le tue credenziali.

  1. Creare un ID di servizio IAM IBM Cloud per il progetto, utilizzato per le politiche IAM e le credenziali della chiave API nel pull secret dell'immagine con il comando iam service-id-create con il comando Assicuratevi di dare all'ID del servizio una descrizione che vi aiuti a recuperarlo in seguito, ad esempio includendo il nome del progetto. Per un elenco completo del comando iam service-id-create e delle sue opzioni, consultare il comando ibmcloud iam service-id-create.

    Ad esempio, il seguente comando crea un ID servizio denominato codeengine-myproject-id con la descrizione Service ID for IBM Cloud Container Registry in Code Engine project myproject:

    ibmcloud iam service-id-create codeengine-myproject-id --description "Service ID for IBM Cloud Container Registry in Code Engine project my proj"
    
  2. Crea una politica IBM Cloud IAM personalizzata per il tuo ID servizio che concede l'accesso a IBM Cloud Container Registry con il comando iam service-policy-create. Per un elenco completo del comando iam service-policy-create e delle sue opzioni, consultare il comando ibmcloud iam service-policy-create.

    Ad esempio, il seguente comando crea una politica per l'ID servizio codeengine-myproject-id con il ruolo di Reader:

    ibmcloud iam service-policy-create codeengine-myproject-id --roles Reader --service-name container-registry
    

    La seguente tabella riepiloga le opzioni utilizzate con il comando iam service-policy-create in questo esempio. Per ulteriori informazioni sul comando e le sue opzioni, consultare il comando ibmcloud iam service-policy-create.

    componenti del comando iam service-policy-create
    Opzione Descrizione
    <service_ID> Obbligatorio. Sostituisci con l'ID servizio codeengine-<project_name>-id che hai precedentemente creato.
    --roles <service_access_role> Obbligatorio. Immetti il ruolo di accesso al servizio per IBM Cloud Container Registry a cui vuoi estendere l'accesso all'ID servizio. I valori possibili sono Reader, Writer e Manager. Se stai estraendo le immagini, l'accesso Reader è sufficiente. Per ulteriori informazioni, consultare Impostazione delle autorizzazioni per i registri delle immagini.
    --service-name <container-registry> Obbligatorio. Immetti container-registry per creare una politica IAM per IBM Cloud Container Registry.
  3. Crea una politica del servizio personalizzata per consentire all'utente di accedere al servizio iam-identity in modo che Code Engine possa recuperare la chiave API per l'ID servizio con il comando iam service-policy-create.

    Ad esempio, crea una politica per l'ID servizio codeengine-myproject-id con il ruolo di Operator:

    ibmcloud iam service-policy-create codeengine-myproject-id --roles Operator --service-name iam-identity
    

    La seguente tabella riepiloga le opzioni utilizzate con il comando iam service-policy-create in questo esempio. Per ulteriori informazioni sul comando e le sue opzioni, consultare il comando ibmcloud iam service-policy-create.

    componenti del comando iam service-policy-create
    Opzione Descrizione
    <service_ID> Obbligatorio. Sostituisci con l'ID servizio codeengine-<project_name>-id che hai precedentemente creato.
    --roles <platform_access_role> Obbligatorio. Immettere il ruolo di accesso alla piattaforma a cui si desidera assegnare l'accesso all'ID servizio. I valori possibili sono Administrator, Editor, Operator e Viewer. Il tuo ID servizio richiede Operator o superiore.
    --service-name <iam-identity> Obbligatorio. Immetti iam-identity per creare una politica IAM per i servizi di identificazione IAM.
  4. Crea una chiave API per l'ID servizio con il comando iam service-api-key-create. Per un elenco completo del comando iam service-api-key-create e delle sue opzioni, consultare il comando ibmcloud iam service-api-key-create. Assegnare alla chiave API un nome simile all'ID del servizio e includere l'ID del servizio creato in precedenza, codeengine-<project_name>-id. Assicurati di fornire alla chiave API una descrizione che ti aiuti a richiamare la chiave in un secondo momento.

    Ad esempio, il seguente comando crea una chiave denominata codeengine-myproject-key per l'ID servizio codeengine-myproject-id con una descrizione di API key for service ID codeengine-myproject-id for Code Engine myproject:

    ibmcloud iam service-api-key-create codeengine-myproject-key codeengine-myproject-id --description "API key for service ID codeengine-myproject-id for Code Engine myproject"
    

    Output di esempio

    Please preserve the API key! It cannot be retrieved after it's created.
    
    Name          codeengine-myproject-key
    Description   API key for service ID codeengine-myproject-id for Code Engine myproject
    Bound To      crn:v1:bluemix:public:iam-identity::a/1bb222bb2b33333ddd3d3333ee4ee444::serviceid:ServiceId-ff55555f-5fff-6666-g6g6-777777h7h7hh
    Created At    2019-02-01T19:06+0000
    API Key       i-8i88ii8jjjj9jjj99kkkkkkkkk_k9-llllll11mmm1
    Locked        false
    UUID          ApiKey-222nn2n2-o3o3-3o3o-4p44-oo444o44o4o4
    

    Non sarà più possibile visualizzare questa chiave API, quindi assicurati di registrarla in un luogo sicuro.

    Ora che hai le tue politiche di accesso in atto per il tuo ID servizio e la chiave API che è stata creata, puoi aggiungere l'accesso a Code Engine per eseguire il pull delle immagini dal registro del contenitore.

Controllo dell'accesso a Container Registry per i workload Code Engine

Supponi di voler controllare l'accesso a IBM Cloud Container Registry quando Code Engine estrae le immagini. Ad esempio, vuoi controllare l'accesso a Container Registry a specifici indirizzi IP. Considerare i seguenti approcci.

  • Utilizzare una restrizione basata sul contesto. Utilizzando una limitazione basata sul contesto, se gli indirizzi IP per il progetto Code Engine vengono modificati, non è necessario modificare l'accesso. Puoi limitare l'accesso a Container Registry a una zona di rete, dove la tua zona di rete include Code Engine e tutto ciò che richiede l'accesso al registro.

  • Disabilita l'accesso pubblico a IBM Cloud Container Registry e assicurati che Code Engine utilizzi gli endpoint privati invece degli endpoint pubblici. Vedi Protezione della tua connessione a Container Registry.

  • Per controllare l'accesso da un intervallo IP specifico, utilizza un endpoint API per recuperare gli indirizzi IP per il tuo particolare progetto Code Engine. È importante notare che questi indirizzi IP sono soggetti a modifiche ed è necessario adottare le misure appropriate quando ciò si verifica. Vedi Indirizzi IP pubblici e privatiCode Engine e Come posso aggiungere la mia applicazione Code Engine a un allowlist?

Considerazioni per le immagini nel registro

Il nome della tua immagine utilizzato per la tua applicazione o il tuo lavoro deve essere in uno dei formati seguenti.

  • REGISTRY/NAMESPACEorDOCKERUSERorDOCKERORG/REPOSITORY:TAG dove REGISTRY e TAG sono facoltativi. Se REGISTRY non è specificato, il valore predefinito è docker.io. Se TAG non è specificato, non includere i due punti (:). Il valore predefinito per TAG è latest.
  • REGISTRY/NAMESPACEorDOCKERUSERorDOCKERORG/REPOSITORY@IMAGEID dove REGISTRY è facoltativo. Se REGISTRY non viene specificato, il valore predefinito è docker.io e ibm come organizzazione Docker.
Regole per il nome dell'immagine
Componente Caratteri consentiti Lunghezza Regole aggiuntive
REGISTRY a-zA-Z0-9 -_. --__ 1-253 (0-127Periods)(label:1-63,noDashOnEnd)
NAMESPACE a-z 0-9 -_ --__ 4-30 (start/end with letterOrNumber)
DOCKERUSERorDOCKERORG a-z 0-9 4-30
REPOSITORY a-z 0-9 -_. / 2-255 (start/end with letterOrNumber)
TAG a-zA-Z0-9 -_. --__.. 0-128 (NOT start with periodOrDash)
IMAGEID a-z 0-9 : (startwith sha256: noOtherColon)

Le parti del nome immagine devono soddisfare i criteri seguenti.

  • REGISTRY deve avere una lunghezza massima di 253 caratteri e può contenere lettere minuscole o maiuscole, numeri, punti (.), trattini (-) e caratteri di sottolineatura (_). Non utilizzare un trattino (.) come ultimo carattere. Non utilizzare più di 127 punti (.) e le etichette tra di essi possono essere comprese tra 1 e 63 caratteri.
  • NAMESPACE deve essere compreso tra 4 e 30 caratteri e deve iniziare e terminare con una lettera minuscola o un numero. NAMESPACE può contenere caratteri alfanumerici minuscoli, trattini (-) e caratteri di sottolineatura (_).
  • DOCKERUSERorDOCKERORG può essere utilizzato per i registri Docker invece di NAMESPACE. Specificare il nome utente Docker o l'organizzazione Docker. Il tuo nome utente e la tua organizzazione Docker devono essere compresi tra 4 e 30 caratteri e contengono solo numeri o caratteri alfanumerici minuscoli.
  • REPOSITORY deve essere compreso tra 2 e 255 caratteri e deve iniziare e terminare con una lettera minuscola o un numero. REPOSITORY può contenere caratteri alfanumerici minuscoli, barre (/), punti (.), trattini (-) e caratteri di sottolineatura (_).
  • TAG deve essere compreso tra 0 e 128 caratteri e può contenere lettere minuscole o maiuscole, numeri, punti (.), trattini (-) e caratteri di sottolineatura (_). Il TAG non deve iniziare con un punto o un trattino. Se non si include un TAG, non includere neanche i due punti.
  • IMAGEID ha il prefisso sha256: e può contenere lettere minuscole e numeri.