Creazione di immagini per le tue applicazioni
Un'immagine Docker è la base per ogni contenitore che crei con IBM Cloud® Kubernetes Service.
Un'immagine viene creata da un Dockerfile, che è un file che contiene le istruzioni su come creare l'immagine. Nelle sue istruzioni, un Dockerfile potrebbe fare riferimento alle risorse di build che vengono archiviate separatamente, quali ad esempio un'applicazione, la configurazione dell'applicazione e le relative dipendenze.
Distribuzione dei contenitori da un'immagine IBM Cloud Container Registry nello spazio dei nomi Kubernetes default
Puoi distribuire i contenitori al tuo cluster da un'immagine pubblica fornita da IBM o da un'immagine privata memorizzata nel tuo spazio dei nomi IBM Cloud Container Registry. Per ulteriori informazioni sul modo in cui il tuo cluster accede alle immagini del registro, vedi Informazioni su come il tuo cluster è autorizzato e eseguire il pull di immagini da IBM Cloud Container Registry.
Prima di cominciare:
-
Creare un file di configurazione di distribuzione denominato “
<deployment>.yaml”. -
Definisci la distribuzione e l'immagine da utilizzare dal tuo spazio dei nomi in IBM Cloud Container Registry.
apiVersion: apps/v1 kind: Deployment metadata: name: <deployment> spec: replicas: <number_of_replicas> selector: matchLabels: app: <app_name> template: metadata: labels: app: <app_name> spec: containers: - name: <app_name> image: <region>.icr.io/<namespace>/<image>:<tag><deployment>- Fornisci un nome alla tua distribuzione.
<number_of_replicas>- Immetti il numero di pod di replica creati dalla tua distribuzione.
app: <app_name>- Utilizza il nome della tua applicazione come etichetta per il contenitore.
name: <app_name>- Fornisci un nome per il tuo contenitore, ad esempio il nome dell'etichetta
app. image: <region>.icr.io/namespace>/image>:tag>-
- Sostituisci le variabili dell'URL dell'immagine con le informazioni relative alla tua immagine:
region>: L'endpoint API regionale IBM Cloud Container Registry per il dominio di registro. Per elencare il dominio per la regione in cui hai effettuato l'accesso, eseguiibmcloud cr api.namespace>: Lo spazio dei nomi del registro. Per ottenere le informazioni sul tuo spazio dei nomi, eseguiibmcloud cr namespace-list.image>:tag>: L'immagine e il tag che desideri utilizzare per il tuo container. Per elencare le immagini disponibili nello spazio dei nomi del tuo registro, eseguiibmcloud cr images.
-
Crea la distribuzione nel tuo cluster.
kubectl apply -f <deployment>.yaml
Riferimento al segreto di pull dell'immagine nella tua distribuzione del pod
Se l'amministratore del cluster non ha memorizzato il segreto per il recupero delle immagini nell'account di servizio Kubernetes, tutte le distribuzioni che non specificano un account di servizio non potranno utilizzare il segreto per il recupero delle immagini per distribuire i container. Puoi invece definire un segreto di pull dell'immagine nella tua distribuzione del pod. Quando si fa riferimento al segreto di recupero dell'immagine in una distribuzione di pod, tale segreto è valido solo per quel pod e non può essere condiviso tra i pod presenti nel namespace Kubernetes.
Prima di iniziare
- Crea un segreto di pull dell'immagine per accedere alle immagini che si trovano in altri registri o in spazi dei nomi Kubernetes diversi da
default. - Accedi al tuo account. Se applicabile, specifica il gruppo di risorse appropriato. Imposta il contesto per il tuo cluster.
Per fare riferimento al segreto "pull" dell'immagine nella distribuzione del tuo pod,
-
Crea un file di configurazione del pod denominato
mypod.yaml. -
Definisci il pod e il segreto di pull dell'immagine per l'accesso alle immagini in IBM Cloud Container Registry.
Per accedere a un'immagine privata,
apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: <container_name> image: <region>.icr.io/<namespace_name>/<image_name>:<tag> imagePullSecrets: - name: <secret_name>Per accedere a un'immagine pubblica su IBM Cloud,
apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: <container_name> image: icr.io/<image_name>:<tag> imagePullSecrets: - name: <secret_name>container_name>- Il nome del contenitore da distribuire al tuo cluster.
namespace_name>: Lo spazio dei nomi del registro in cui è memorizzata l'immagine. Per elencare gli spazi dei nomi disponibili, eseguiibmcloud cr namespace-list.image_name>: Il nome dell'immagine da utilizzare. Per elencare le immagini disponibili in un account IBM Cloud, eseguiibmcloud cr image-list.tag>: La versione dell'immagine che desideri utilizzare. Se non viene specificato alcun tag, per impostazione predefinita viene utilizzata l'immagine contrassegnata con il tag più recente.<secret_name>: Il nome del segreto di recupero delle immagini che hai creato in precedenza.
-
Salva le tue modifiche.
-
Crea la distribuzione nel tuo cluster.
kubectl apply -f mypod.yaml
Esecuzione del push di immagini a IBM Cloud Container Registry
Dopo che l'amministratore del cluster ha configurato un registro di immagini con IBM Cloud Container Registry, puoi archiviare e condividere in modo sicuro le immagini Docker con altri utenti aggiungendo le immagini al tuo spazio dei nomi.
Ad esempio, potresti eseguire il pull di un'immagine da qualsiasi origine di registro privato o pubblico e quindi contrassegnarla con una tag per un successivo utilizzo in IBM Cloud Container Registry. Potresti anche eseguire il push di un'immagine Docker con cui lavori al tuo spazio dei nomi in modo che altri utenti possano accedere ad essa. Per iniziare, vedi Aggiunta di immagini al tuo spazio dei nomi.
Gestione della sicurezza delle immagini in IBM Cloud Container Registry con Vulnerability Advisor
Vulnerability Advisor controlla lo stato di sicurezza delle immagini del contenitore fornite da IBM o da terze parti oppure aggiunte allo spazio dei nomi IBM Cloud Container Registry della tua organizzazione.
Quando aggiungi un'immagine a uno spazio dei nomi, il Vulnerability Advisor ne esegue automaticamente la scansione per rilevare problemi di sicurezza e potenziali vulnerabilità. Se si riscontrano dei problemi di sicurezza, vengono fornite le istruzioni per facilitare la correzione delle vulnerabilità segnalate. Per iniziare, vedi Gestione della sicurezza delle immagini con Vulnerability Advisor.
Configurazione dei contenuti attendibili per le immagini di contenitore
Puoi creare dei contenitori dalle immagini attendibili che sono firmate e memorizzate in IBM Cloud Container Registry e impedire le distribuzioni da immagini non firmate o vulnerabili.
- Firma le immagini per i contenuti attendibili. Una volta configurata l'attendibilità delle tue immagini, puoi gestire i contenuti attendibili e i firmatari che possono inserire le immagini nel tuo registro.
- Per applicare una politica in modo che solo le immagini firmate possano essere utilizzate per creare contenitori nel cluster, installa il progetto Portieris open source.
- Gli utenti del cluster possono distribuire le applicazioni create da immagini attendibili.
Attivazione delle misure di sicurezza relative alle immagini nel proprio cluster
Quando si abilita l'applicazione delle misure di sicurezza delle immagini nel proprio cluster, si installa il progetto open source Portieris Kubernetes. È quindi possibile creare criteri relativi alle immagini per impedire che i pod non conformi a tali criteri, come ad esempio le immagini non firmate, vengano eseguiti nel proprio cluster.
Per ulteriori informazioni, vedi la documentazione diPortieris.
Immagini modificate: per impostazione predefinita, Portieris utilizza il controller di ammissione MutatingAdmissionWebhook per modificare l'immagine in modo che venga identificata tramite un digest anziché tramite
un tag. Tuttavia, è possibile che si disponga di una tecnologia di distribuzione che rifiuta un'immagine mutata. In tal caso, è possibile utilizzare l'opzione di mutazione immagine e la politica per modificare il comportamento predefinito.
Abilitazione o disabilitazione dell'applicazione della sicurezza dell'immagine
Puoi abilitare o disabilitare l'applicazione della sicurezza dell'immagine per il tuo cluster dalla CLI o dalla console. Per le versioni precedenti, consultare la documentazione su Portieris.
Abilitazione o disabilitazione dell'applicazione della sicurezza dell'immagine con la CLI
Consultare i seguenti comandi.
Abilitazione o disabilitazione dell'applicazione della sicurezza dell'immagine dalla console
- Dalla console, selezionare il proprio cluster.
- Trova il campo di applicazione della sicurezza dell'immagine e fai clic su Abilita o Disabilita.
Politiche immagine predefinite
Quando si abilita l'applicazione delle misure di sicurezza relative alle immagini, IBM Cloud Kubernetes Service crea automaticamente determinate politiche relative alle immagini nel cluster. Quando disabiliti la funzione, il CRD ClusterImagePolicy sottostante viene rimosso, che rimuove tutte le politiche dell'immagine predefinite e tutte le politiche delle immagini personalizzate che hai creato.
- Le politiche dell'immagine con il nome
ibm-signed-image-enforcementlimitano le immagini che vengono eseguite nel namespace solo alle immagini IBM Cloud Kubernetes Service. Non modificare queste politiche di immagine. Tutte le modifiche apportate vengono sovrascritte in pochi minuti. - Altre politiche dell'immagine, come
defaultodefault-allow-all, consentono le immagini che non sono limitate da un'altra politica dell'immagine. Puoi modificare queste politiche dell'immagine e le tue modifiche vengono conservate, ma non ridenominare la politica immagine. Se si ridenomina la politica, vengono create ulteriori politiche con il nome e le impostazioni predefiniti.
Per esaminare le politiche dell'immagine nel cluster,
Prima di iniziare
-
Elenca le politiche dell'immagine che si applicano globalmente al cluster. Per una configurazione di esempio, consultare la documentazione della politicaPortieris.
kubectl get ClusterImagePolicy -
Elenca le politiche di immagine che si applicano a determinati spazi dei nomi all'interno del cluster. Per una configurazione di esempio, consultare la documentazione della politicaPortieris.
kubectl get ImagePolicy --all-namespaces