2.10. Utilisation des abonnements Red Hat dans les constructions


Utilisez les sections suivantes pour exécuter des builds intitulés sur OpenShift Container Platform.

Pour utiliser les abonnements Red Hat dans une compilation, vous créez une balise de flux d'images pour référencer l'image de base universelle (UBI).

Pour que l'UBI soit disponible à l'adresse in every project dans le cluster, vous devez ajouter la balise de flux d'images à l'espace de noms openshift. Sinon, pour le rendre disponible à l'adresse in a specific project, vous devez ajouter la balise de flux d'images à ce projet.

L'avantage d'utiliser des balises de flux d'images de cette manière est que cela permet d'accéder à l'UBI sur la base des informations d'identification registry.redhat.io dans le secret d'installation sans exposer le secret d'installation à d'autres utilisateurs. C'est plus pratique que de demander à chaque développeur d'installer des secrets d'installation avec des informations d'identification registry.redhat.io dans chaque projet.

Procédure

  • Pour créer un site ImageStreamTag dans l'espace de noms openshift, afin qu'il soit disponible pour les développeurs de tous les projets, entrez :

    $ oc tag --source=docker registry.redhat.io/ubi8/ubi:latest ubi:latest -n openshift
    Copy to Clipboard Toggle word wrap
    Astuce

    Vous pouvez également appliquer le YAML suivant pour créer un ImageStreamTag dans l'espace de noms openshift:

    apiVersion: image.openshift.io/v1
    kind: ImageStream
    metadata:
      name: ubi
      namespace: openshift
    spec:
      tags:
      - from:
          kind: DockerImage
          name: registry.redhat.io/ubi8/ubi:latest
        name: latest
        referencePolicy:
          type: Source
    Copy to Clipboard Toggle word wrap
  • Pour créer un site ImageStreamTag dans un seul projet, entrez :

    $ oc tag --source=docker registry.redhat.io/ubi8/ubi:latest ubi:latest
    Copy to Clipboard Toggle word wrap
    Astuce

    Vous pouvez également appliquer le YAML suivant pour créer un site ImageStreamTag dans un seul projet :

    apiVersion: image.openshift.io/v1
    kind: ImageStream
    metadata:
      name: ubi
    spec:
      tags:
      - from:
          kind: DockerImage
          name: registry.redhat.io/ubi8/ubi:latest
        name: latest
        referencePolicy:
          type: Source
    Copy to Clipboard Toggle word wrap

Les constructions qui utilisent les abonnements Red Hat pour installer le contenu doivent inclure les clés de droits en tant que secret de construction.

Conditions préalables

Vous devez avoir accès aux droits de Red Hat par le biais de votre abonnement. Le secret des droits est automatiquement créé par l'opérateur Insights.

Astuce

Lorsque vous effectuez un Entitlement Build à l'aide de Red Hat Enterprise Linux (RHEL) 7, vous devez avoir les instructions suivantes dans votre Dockerfile avant d'exécuter les commandes yum:

RUN rm /etc/rhsm-host
Copy to Clipboard Toggle word wrap

Procédure

  1. Ajouter le secret etc-pki-entitlement comme volume de construction dans la stratégie Docker de la configuration de construction :

    strategy:
      dockerStrategy:
        from:
          kind: ImageStreamTag
          name: ubi:latest
        volumes:
        - name: etc-pki-entitlement
          mounts:
          - destinationPath: /etc/pki/entitlement
          source:
            type: Secret
            secret:
              secretName: etc-pki-entitlement
    Copy to Clipboard Toggle word wrap

Les constructions de stratégies Docker peuvent utiliser le gestionnaire d'abonnement pour installer le contenu de l'abonnement.

Conditions préalables

Les clés de droits doivent être ajoutées en tant que volumes de stratégie de construction.

Procédure

Utilisez le fichier Docker suivant comme exemple pour installer du contenu avec le gestionnaire d'abonnement :

FROM registry.redhat.io/ubi8/ubi:latest
RUN dnf search kernel-devel --showduplicates && \
        dnf install -y kernel-devel
Copy to Clipboard Toggle word wrap

Les constructions qui utilisent Red Hat Satellite pour installer du contenu doivent fournir des configurations appropriées pour obtenir du contenu à partir des dépôts Satellite.

Conditions préalables

  • Vous devez fournir ou créer un fichier de configuration du dépôt compatible avec yum qui télécharge le contenu de votre instance Satellite.

    Exemple de configuration du référentiel

    [test-<name>]
    name=test-<number>
    baseurl = https://satellite.../content/dist/rhel/server/7/7Server/x86_64/os
    enabled=1
    gpgcheck=0
    sslverify=0
    sslclientkey = /etc/pki/entitlement/...-key.pem
    sslclientcert = /etc/pki/entitlement/....pem
    Copy to Clipboard Toggle word wrap

Procédure

  1. Créez un site ConfigMap contenant le fichier de configuration du référentiel Satellite :

    $ oc create configmap yum-repos-d --from-file /path/to/satellite.repo
    Copy to Clipboard Toggle word wrap
  2. Ajouter la configuration du référentiel satellite et la clé d'habilitation en tant que volumes de construction :

    strategy:
      dockerStrategy:
        from:
          kind: ImageStreamTag
          name: ubi:latest
        volumes:
        - name: yum-repos-d
          mounts:
          - destinationPath: /etc/yum.repos.d
          source:
            type: ConfigMap
            configMap:
              name: yum-repos-d
        - name: etc-pki-entitlement
          mounts:
          - destinationPath: /etc/pki/entitlement
          source:
            type: Secret
            secret:
              secretName: etc-pki-entitlement
    Copy to Clipboard Toggle word wrap

Les constructions de stratégie Docker peuvent utiliser les dépôts Red Hat Satellite pour installer le contenu de l'abonnement.

Conditions préalables

  • Vous avez ajouté les clés d'habilitation et les configurations du référentiel satellite en tant que volumes de construction.

Procédure

Utilisez le fichier Docker suivant comme exemple pour installer du contenu avec Satellite :

FROM registry.redhat.io/ubi8/ubi:latest
RUN dnf search kernel-devel --showduplicates && \
        dnf install -y kernel-devel
Copy to Clipboard Toggle word wrap

Vous pouvez configurer et exécuter une construction dans un espace de noms qui utilise en toute sécurité les droits RHEL d'un objet Secret dans un autre espace de noms.

Vous pouvez toujours accéder aux droits RHEL à partir d'OpenShift Builds en créant un objet Secret avec vos informations d'identification d'abonnement dans le même espace de noms que votre objet Build. Cependant, dans OpenShift Container Platform 4.10 et les versions ultérieures, vous pouvez désormais accéder à vos informations d'identification et à vos certificats à partir d'un objet Secret dans l'un des espaces de noms du système OpenShift Container Platform. Vous exécutez des constructions intitulées avec un montage de volume CSI d'une instance de ressource personnalisée (CR) SharedSecret qui référence l'objet Secret.

Cette procédure s'appuie sur la nouvelle fonctionnalité Shared Resources CSI Driver, que vous pouvez utiliser pour déclarer des montages de volumes CSI dans les Builds d'OpenShift Container Platform. Elle s'appuie également sur l'opérateur Insights d'OpenShift Container Platform.

Important

Le pilote CSI des ressources partagées et les volumes CSI de construction sont tous deux des fonctionnalités de l'aperçu technologique, qui ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et qui peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas leur utilisation en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information au cours du processus de développement.

Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.

Les fonctionnalités Shared Resources CSI Driver et Build CSI Volumes appartiennent également à l'ensemble de fonctionnalités TechPreviewNoUpgrade, qui est un sous-ensemble des fonctionnalités de l'aperçu technologique actuel. Vous pouvez activer l'ensemble de fonctionnalités TechPreviewNoUpgrade sur les clusters de test, où vous pouvez les tester entièrement tout en laissant les fonctionnalités désactivées sur les clusters de production. L'activation de cet ensemble de fonctionnalités ne peut être annulée et empêche les mises à jour mineures de la version. Ce jeu de fonctionnalités n'est pas recommandé sur les clusters de production. Voir "Activation des fonctionnalités de l'aperçu technologique à l'aide des portes de fonctionnalités" dans la section suivante "Ressources supplémentaires".

Conditions préalables

  • Vous avez activé l'ensemble de fonctions TechPreviewNoUpgrade en utilisant les portes de fonctions.
  • Vous avez une instance de ressource personnalisée (CR) SharedSecret qui fait référence à l'objet Secret dans lequel l'opérateur Insights stocke les informations d'identification de l'abonnement.
  • Vous devez être autorisé à effectuer les actions suivantes :

    • Créer des configurations de construction et démarrer des constructions.
    • Découvrez quelles instances de SharedSecret CR sont disponibles en entrant la commande oc get sharedsecrets et en obtenant une liste non vide en retour.
    • Déterminez si le compte de service builder dont vous disposez dans votre espace de noms est autorisé à utiliser l'instance de CR SharedSecret donnée. En d'autres termes, vous pouvez exécuter oc adm policy who-can use <identifier of specific SharedSecret> pour voir si le compte de service builder de votre espace de noms est répertorié.
Note

Si aucune des deux dernières conditions préalables de cette liste n'est remplie, établissez, ou demandez à quelqu'un d'établir, le contrôle d'accès basé sur les rôles (RBAC) nécessaire pour découvrir les instances de SharedSecret CR et permettre aux comptes de service d'utiliser les instances de SharedSecret CR.

Procédure

  1. Accorder au compte de service builder les autorisations RBAC pour utiliser l'instance CR SharedSecret en utilisant oc apply avec un contenu YAML :

    Note

    Actuellement, kubectl et oc ont une logique de cas spécial codée en dur qui limite le verbe use aux rôles centrés sur la sécurité des pods. Par conséquent, vous ne pouvez pas utiliser oc create role …​ pour créer le rôle nécessaire à la consommation des instances CR SharedSecret.

    Exemple de commande oc apply -f avec définition de l'objet YAML Role

    $ oc apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: shared-resource-my-share
      namespace: my-namespace
    rules:
      - apiGroups:
          - sharedresource.openshift.io
        resources:
          - sharedsecrets
        resourceNames:
          - my-share
        verbs:
          - use
    EOF
    Copy to Clipboard Toggle word wrap

  2. Créez le site RoleBinding associé au rôle en utilisant la commande oc:

    Exemple de commande oc create rolebinding

    $ oc create rolebinding shared-resource-my-share --role=shared-resource-my-share --serviceaccount=my-namespace:builder
    Copy to Clipboard Toggle word wrap

  3. Créer un objet BuildConfig qui accède aux droits RHEL.

    Exemple de définition d'un objet YAML BuildConfig

    apiVersion: build.openshift.io/v1
    kind: BuildConfig
    metadata:
      name: my-csi-bc
      namespace: my-csi-app-namespace
    spec:
      runPolicy: Serial
      source:
        dockerfile: |
          FROM registry.redhat.io/ubi8/ubi:latest
          RUN ls -la /etc/pki/entitlement
          RUN rm /etc/rhsm-host
          RUN yum repolist --disablerepo=*
          RUN subscription-manager repos --enable rhocp-4.9-for-rhel-8-x86_64-rpms
          RUN yum -y update
          RUN yum install -y openshift-clients.x86_64
      strategy:
        type: Docker
        dockerStrategy:
          volumes:
            - mounts:
                - destinationPath: "/etc/pki/entitlement"
              name: my-csi-shared-secret
              source:
                csi:
                  driver: csi.sharedresource.openshift.io
                  readOnly: true
                  volumeAttributes:
                    sharedSecret: my-share-bc
                type: CSI
    Copy to Clipboard Toggle word wrap

  4. Lancez une construction à partir de l'objet BuildConfig et suivez les journaux avec la commande oc.

    Exemple de commande oc start-build

    $ oc start-build my-csi-bc -F
    Copy to Clipboard Toggle word wrap

    Exemple 2.1. Exemple de sortie de la commande oc start-build

    Note

    Certaines sections de l'édition suivante ont été remplacées par …​

    build.build.openshift.io/my-csi-bc-1 started
    Caching blobs under "/var/cache/blobs".
    
    Pulling image registry.redhat.io/ubi8/ubi:latest ...
    Trying to pull registry.redhat.io/ubi8/ubi:latest...
    Getting image source signatures
    Copying blob sha256:5dcbdc60ea6b60326f98e2b49d6ebcb7771df4b70c6297ddf2d7dede6692df6e
    Copying blob sha256:8671113e1c57d3106acaef2383f9bbfe1c45a26eacb03ec82786a494e15956c3
    Copying config sha256:b81e86a2cb9a001916dc4697d7ed4777a60f757f0b8dcc2c4d8df42f2f7edb3a
    Writing manifest to image destination
    Storing signatures
    Adding transient rw bind mount for /run/secrets/rhsm
    STEP 1/9: FROM registry.redhat.io/ubi8/ubi:latest
    STEP 2/9: RUN ls -la /etc/pki/entitlement
    total 360
    drwxrwxrwt. 2 root root 	80 Feb  3 20:28 .
    drwxr-xr-x. 10 root root	154 Jan 27 15:53 ..
    -rw-r--r--. 1 root root   3243 Feb  3 20:28 entitlement-key.pem
    -rw-r--r--. 1 root root 362540 Feb  3 20:28 entitlement.pem
    time="2022-02-03T20:28:32Z" level=warning msg="Adding metacopy option, configured globally"
    --> 1ef7c6d8c1a
    STEP 3/9: RUN rm /etc/rhsm-host
    time="2022-02-03T20:28:33Z" level=warning msg="Adding metacopy option, configured globally"
    --> b1c61f88b39
    STEP 4/9: RUN yum repolist --disablerepo=*
    Updating Subscription Management repositories.
    
    
    ...
    
    --> b067f1d63eb
    STEP 5/9: RUN subscription-manager repos --enable rhocp-4.9-for-rhel-8-x86_64-rpms
    Repository 'rhocp-4.9-for-rhel-8-x86_64-rpms' is enabled for this system.
    time="2022-02-03T20:28:40Z" level=warning msg="Adding metacopy option, configured globally"
    --> 03927607ebd
    STEP 6/9: RUN yum -y update
    Updating Subscription Management repositories.
    
    ...
    
    Upgraded:
      systemd-239-51.el8_5.3.x86_64      	systemd-libs-239-51.el8_5.3.x86_64
      systemd-pam-239-51.el8_5.3.x86_64
    Installed:
      diffutils-3.6-6.el8.x86_64           	libxkbcommon-0.9.1-1.el8.x86_64
      xkeyboard-config-2.28-1.el8.noarch
    
    Complete!
    time="2022-02-03T20:29:05Z" level=warning msg="Adding metacopy option, configured globally"
    --> db57e92ff63
    STEP 7/9: RUN yum install -y openshift-clients.x86_64
    Updating Subscription Management repositories.
    
    ...
    
    Installed:
      bash-completion-1:2.7-5.el8.noarch
      libpkgconf-1.4.2-1.el8.x86_64
      openshift-clients-4.9.0-202201211735.p0.g3f16530.assembly.stream.el8.x86_64
      pkgconf-1.4.2-1.el8.x86_64
      pkgconf-m4-1.4.2-1.el8.noarch
      pkgconf-pkg-config-1.4.2-1.el8.x86_64
    
    Complete!
    time="2022-02-03T20:29:19Z" level=warning msg="Adding metacopy option, configured globally"
    --> 609507b059e
    STEP 8/9: ENV "OPENSHIFT_BUILD_NAME"="my-csi-bc-1" "OPENSHIFT_BUILD_NAMESPACE"="my-csi-app-namespace"
    --> cab2da3efc4
    STEP 9/9: LABEL "io.openshift.build.name"="my-csi-bc-1" "io.openshift.build.namespace"="my-csi-app-namespace"
    COMMIT temp.builder.openshift.io/my-csi-app-namespace/my-csi-bc-1:edfe12ca
    --> 821b582320b
    Successfully tagged temp.builder.openshift.io/my-csi-app-namespace/my-csi-bc-1:edfe12ca
    821b582320b41f1d7bab4001395133f86fa9cc99cc0b2b64c5a53f2b6750db91
    Build complete, no image push requested
    Copy to Clipboard Toggle word wrap
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat