IBM Cloud Docs
Construction d'images pour vos applications

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 :

  1. Configurez un espace de noms dans IBM Cloud Container Registry et envoyez des images dans cet espace de noms.

  2. Créez un cluster.

  3. Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster.

  4. Créez le fichier <deployment>.yaml de configuration de déploiement.

  5. 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 commande ibmcloud cr api.
    namespace>: L'espace de nom du registre. Pour obtenir des informations sur votre espace de noms, exécutez la commande ibmcloud 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 commande ibmcloud cr images.
  6. 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

Pour vous faire réfrence au secret d'extraction d'image dans votre déploiement de pod.

  1. Créez un fichier de configuration de pod nommé mypod.yaml.

  2. 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 commande ibmcloud cr namespace-list. image_name>: Nom de l'image à utiliser. Pour répertorier les images disponibles dans un compte IBM Cloud, exécutez la commande ibmcloud 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.
  3. Sauvegardez vos modifications.

  4. 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.

  1. 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.
  2. 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.
  3. Les utilisateurs de cluster peuvent déployer des applications qui sont générées à partir d'images sécurisées.
    1. Déployez l'espace de noms Kubernetes default.
    2. Effectuez un déploiement dans un autre espace de noms Kubernetes ou à partir d'une autre région ou d'un autre compte IBM Cloud.

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

  1. Depuis la console, sélectionnez votre cluster.
  2. 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 ou default-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

Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster.

  1. 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
    
  2. 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