Docker DCT

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Docker Trusted Registry (DTR) — registre d'images d'entreprise
Éditeur historique Docker Inc., puis Mirantis (voir Docker EE)
Statut Produit historique — écosystème largement réorganisé depuis (à vérifier selon l'offre actuelle du fournisseur)
Outil d'install. Mirantis Launchpad
Voir aussi Docker trust · Docker EE · Docker registry

Attention au nom de cette page : malgré ce que son titre pourrait laisser penser, elle ne traite pas de la signature d'images (« Content Trust », voir Docker trust) mais du Docker Trusted Registry (DTR), le registre d'images d'entreprise qui accompagnait l'offre Docker Enterprise Edition. Les deux sujets sont liés — un DTR peut exiger des images signées — mais répondent à des besoins différents : DTR est un produit de registre packagé et supporté, quand Content Trust est un mécanisme de signature disponible avec le client Docker standard.

Présentation

DTR ajoute, par rapport à un registre auto-hébergé minimal (voir Docker registry), les fonctions attendues d'un registre d'entreprise :

  • interface web d'administration ;
  • haute disponibilité à travers plusieurs nœuds de registre ;
  • mise en cache géographique des images au plus près des utilisateurs ;
  • contrôle d'accès basé sur les rôles (RBAC) ;
  • scanner de vulnérabilités intégré pour les images stockées.

DTR se déploie en complément de l'Universal Control Plane (UCP), la brique de gestion de cluster de l'offre Docker Enterprise / Mirantis — voir Docker EE pour le contexte produit complet.

Installation

Génération des certificats

Autorité de certification locale, puis certificat de service DTR :

openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -key ca.key -sha256 -days 1024 \
  -subj "/OU=dtr/CN=DTR CA" -out ca.crt

openssl genrsa -out dtr.key 2048
openssl req -new -sha256 -key dtr.key -subj "/OU=dtr/CN=system:dtr" -out dtr.csr
keyUsage = critical, digitalSignature, keyEncipherment
basicConstraints = critical, CA:FALSE
extendedKeyUsage = serverAuth, clientAuth
subjectAltName = DNS:<nom DNS public du serveur DTR>,IP:<IP privée du serveur DTR>,IP:127.0.0.1
openssl x509 -req -in dtr.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
  -out dtr.crt -days 365 -sha256 -extfile extfile.cnf

Déclaration du cluster (Mirantis Launchpad)

L'installation d'UCP et DTR est pilotée par un manifeste déclaratif consommé par l'outil launchpad :

apiVersion: launchpad.mirantis.com/v1beta3
kind: DockerEnterprise
metadata:
  name: launchpad-ucp
spec:
  ucp:
    version: 3.5.3          # à vérifier : figer sur la version réellement supportée
    installFlags:
    - --admin-username=admin
    - --admin-password=<mot de passe robuste, hors dépôt de code>
    - --default-node-orchestrator=kubernetes
    - --force-minimums
  dtr:
    version: 2.8.2           # à vérifier
    installFlags:
    - --ucp-insecure-tls
    - |-
      --dtr-cert "<contenu de dtr.crt>"
    - |-
      --dtr-key "<contenu de dtr.key>"
    - |-
      --dtr-ca "<contenu de ca.crt>"
  hosts:
  - address: <IP privée manager>
    privateInterface: ens5
    role: manager
    ssh:
      user: <utilisateur admin>
      keyPath: ~/launchpad_id
  - address: <IP privée worker>
    privateInterface: ens5
    role: worker
    ssh:
      user: <utilisateur admin>
      keyPath: ~/launchpad_id
  - address: <IP privée dtr>
    privateInterface: ens5
    role: dtr
    ssh:
      user: <utilisateur admin>
      keyPath: ~/launchpad_id
./launchpad apply -c ./cluster.yaml

Le mot de passe administrateur et les clés privées (certificats, clé SSH) ne doivent jamais être committés en clair dans un dépôt de code ; le manifeste ci-dessus est un modèle à compléter via un mécanisme de secrets (variables d'environnement, coffre-fort de secrets, injection CI/CD).