Construction d'images pour vos applications
Une image Docker est la base de chaque conteneur que vous créez avec IBM Cloud® Kubernetes Service.
L'image est créée depuis un Dockerfile, lequel est un fichier contenant des instructions pour générer l'image. Un Dockerfile peut référencer dans ses instructions des artefacts de génération stockés séparément, comme une application, sa configuration, et ses dépendances.
Déploiement de conteneurs à partir d'une image IBM Cloud Container Registry dans l'espace de noms Kubernetes default
Vous pouvez déployer dans votre cluster des conteneurs depuis une image fournie par IBM ou depuis une image privée stockée dans votre espace de noms IBM Cloud Container Registry. Pour plus d'informations sur la façon dont votre cluster accède aux images de registre, voir Comment autoriser votre cluster à extraire des images d'IBM Cloud Container Registry.
Avant de commencer :
-
Créez le fichier
<deployment>.yaml
de configuration de déploiement. -
Définissez le déploiement et l'image de votre espace de noms que vous désirez utiliser dans 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>
- Attribuez un nom à votre déploiement.
<number_of_replicas>
- Entrez le nombre de pods de réplique créés par le déploiement.
app: <app_name>
- Utilisez le nom de votre application sous forme de libellé pour le conteneur.
name: <app_name>
- Attribuez un nom à votre conteneur, par exemple, le nom de votre libellé
app
. image: <region>.icr.io/namespace>/image>:tag>
-
- Remplacez les variables d'URL de l'image par les informations correspondant à votre image :
region>
: Le nœud final d'API IBM Cloud Container Registry régional pour le domaine de registre. Afin de répertorier le domaine pour la région à laquelle vous êtes connecté, exécutez la commandeibmcloud cr api
.namespace>
: L'espace de nom du registre. Pour obtenir des informations sur votre espace de noms, exécutez la commandeibmcloud cr namespace-list
.image>:tag>
: L'image et la balise que vous souhaitez utiliser pour votre conteneur. Pour répertorier les images disponibles dans votre espace de noms de registre, exécutez la commandeibmcloud cr images
.
-
Créez le déploiement dans votre cluster.
kubectl apply -f <deployment>.yaml
Référencement du secret d'extraction d'image dans votre déploiement de pod
Si l'administrateur de cluster n'a pas stocké le secret d'image dans le compte de service Kubernetes, tous les déploiements qui ne spécifiaient pas de compte de service ne peuvent pas utiliser le secret d'extraction d'image pour déployer des conteneurs. A la place, vous pouvez définir un secret d'extraction d'image dans votre déploiement de pod. Lorsque vous faites référence au secret d'extraction d'image dans un déploiement de pod, le secret est valide pour ce pod uniquement et ne peut pas être partagé entre les pods de l'espace de nom Kubernetes.
Avant de commencer
- Créez un secret d'extraction d'image pour accéder aux images dans d'autres registres ou dans d'autres espaces de noms Kubernetes que
default
. - Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster.
Pour vous faire réfrence au secret d'extraction d'image dans votre déploiement de pod.
-
Créez un fichier de configuration de pod nommé
mypod.yaml
. -
Définissez le pod et le secret d'extraction d'image pour accéder aux images dans IBM Cloud Container Registry.
Pour accéder à une image privée,
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>
Pour accéder à une image publique 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>
- Nom du conteneur à déployer dans votre cluster.
namespace_name>
: Espace de noms de registre sous lequel l'image est stockée. Pour répertorier les espaces de noms disponibles, exécutez la commandeibmcloud cr namespace-list
.image_name>
: Nom de l'image à utiliser. Pour répertorier les images disponibles dans un compte IBM Cloud, exécutez la commandeibmcloud cr image-list
.tag>
: Version de l'image que vous désirez utiliser. Si aucune balise n'est spécifiée, l'image balisée est la dernière utilisée par défaut.<secret_name>
: Nom du secret d'extraction d'image que vous avez créé précédemment.
-
Sauvegardez vos modifications.
-
Créez le déploiement dans votre cluster.
kubectl apply -f mypod.yaml
Envoi d'images à IBM Cloud Container Registry
Après que l'administrateur de cluster a configuré un registre d'images avec IBM Cloud Container Registry, vous pouvez stocker et partager en toute sécurité des images Docker avec d'autres utilisateurs en ajoutant des images à votre espace de noms.
Par exemple, vous pouvez extraire une image de n'importe quelle source de registre privé ou public, puis la baliser pour une utilisation ultérieure dans IBM Cloud Container Registry. Ou bien, vous pouvez envoyer à votre espace de noms une image Docker avec laquelle vous travaillez afin que les autres utilisateurs puissent accéder à cette image. Pour commencer, voir Ajout d'images à votre espace de noms.
Gestion de la sécurité des images dans IBM Cloud Container Registry avec Vulnerability Advisor
Vulnerability Advisor vérifie le statut de sécurité des images de conteneur qui sont fournies par IBM ou des tiers ou qui sont ajoutées à l'espace de noms IBM Cloud Container Registry de votre organisation.
Lorsque vous ajoutez une image à un espace de noms, cette image est automatiquement analysée par Vulnerability Advisor pour détecter des problèmes de sécurité et des vulnérabilités potentielles. Si des problèmes de sécurité sont identifiés, des instructions vous sont soumises afin de vous aider à résoudre la vulnérabilité signalée. Pour commencer, voir Gestion de la sécurité des images avec Vulnerability Advisor.
Configuration de contenu sécurisé pour des images de conteneur
Vous pouvez générer des conteneurs à partir d'images sécurisées qui sont signées et stockées dans IBM Cloud Container Registry et empêcher les déploiements à partir d'images non signées ou vulnérables.
- Signez les images pour le contenu sécurisé. Après avoir défini la fonction de confiance (trust) pour vos images, vous pouvez gérer du contenu sécurisé et les signataires peuvent envoyer des images par commande push dans votre registre.
- Pour imposer une règle stipulant que seules des images signées peuvent être utilisées pour générer des conteneurs dans votre cluster, installez le projet Portieris open source.
- Les utilisateurs de cluster peuvent déployer des applications qui sont générées à partir d'images sécurisées.
Activation de la mise en application de la sécurité des images dans votre cluster
Lorsque vous activez la mise en application de la sécurité des images dans votre cluster, vous installez le projet Kubernetes Portieris open source. Vous pouvez ensuite créer des stratégies d'image pour empêcher les pods qui ne répondent pas aux règles, telles que les images non signées, de s'exécuter dans votre cluster.
Pour plus d'informations, consultez la documentation d' Portieris.
Images ayant fait l'objet d'une mutation : par défaut, Portieris utilise le contrôleur d'admission MutatingAdmissionWebhook
pour effectuer une mutation sur votre image afin de faire référence à celle-ci par un résumé
et non par une balise. Toutefois, il peut arriver qu'une technologie de déploiement rejette une image ayant fait l'objet d'une mutation Si tel est le cas, vous pouvez utiliser l’ option et la politique de mutation d’image pour modifier le comportement par défaut.
Activation ou désactivation de la mise en application de la sécurité des images
Vous pouvez activer ou désactiver la sécurité des images pour votre cluster à partir de l'interface de ligne de commande ou de la console. Pour les versions antérieures, voir la documentation d' Portieris.
Activation ou désactivation de l'application de la sécurité d'image avec l'interface de ligne de commande
Voir les commandes suivantes.
Activation ou désactivation de l'application de la sécurité d'image à partir de la console
- Depuis la console, sélectionnez votre cluster.
- Trouvez le champ d'application de la sécurité de l'image et cliquez sur Activer ou Désactiver.
Politiques d'image par défaut
Lorsque vous activez la mise en application de la sécurité des images, IBM Cloud Kubernetes Service crée automatiquement certaines règles d'image dans votre cluster. Lorsque vous désactivez la fonction, le CDR ClusterImagePolicy
sous-jacent est supprimée+, ce qui supprime toutes les règles d'image par défaut et toutes les règles d'images personnalisées que vous avez créées.
- Les règles d'image intitulées
ibm-signed-image-enforcement
limitent les images exécutées dans l'espace de noms aux seules images IBM Cloud Kubernetes Service. Ne modifiez pas ces politiques d'image. Toute modification est écrasée en quelques minutes. - D'autres politiques d'image, par exemple
default
oudefault-allow-all
, autorisent l'utilisation d'images qui ne sont limitées par aucune autre politique d'image. Vous pouvez modifier ces règles d'image et vos modifications sont conservées, mais ne renommez pas la stratégie d'image. Si vous renommez une politique, d'autres politiques portant le nom et les paramètres par défaut sont créées.
Pour consulter les stratégies d'image de votre cluster,
Avant de commencer
-
Répertoriez les politiques d'image qui s'appliquent globalement au cluster. Pour un exemple de configuration, consultez la documentation de la stratégie d' Portieris.
kubectl get ClusterImagePolicy
-
Répertoriez les règles d'image qui s'appliquent à des espaces de noms particulier dans le cluster. Pour un exemple de configuration, consultez la documentation de la stratégie d' Portieris.
kubectl get ImagePolicy --all-namespaces