Aller au contenu

Red Hat OpenShift

Maintenu par OrkyvoVersion 1.0.0Inclus dans l'offre DevOps13 actions · 2 déclencheurs

Projets, workloads, Routes, BuildConfigs, Builds et ImageStreams OpenShift 4, avec détection des API du cluster.

Intégration maintenue par Orkyvo pour Red Hat OpenShift Container Platform 4, OKD et les services managés (ROSA, ARO, OpenShift Dedicated). Elle utilise les API propres à OpenShift : projets, Routes, BuildConfigs et Builds (démarrage, statut, journaux), ImageStreams et DeploymentConfigs, en plus des workloads Kubernetes. Les API disponibles sont détectées sur le cluster : une opération incompatible est signalée clairement. Déclencheurs : build démarré, réussi ou en échec ; changement de statut d'un workload. Elle partage avec le nœud Kubernetes ses composants de connexion et de surveillance, mais n'en est pas une copie : utilisez le nœud Kubernetes pour un cluster Kubernetes standard.

Opérations

OpérationTypeDescription
Détecter les API disponiblesactionListe les API OpenShift présentes sur le cluster et les opérations de ce nœud qui y sont incompatibles.
Lister les projetsactionProjets OpenShift accessibles au compte de service.
Lister les workloadsactionDeployments, DeploymentConfigs et StatefulSets d'un projet, avec leur disponibilité. Une API absente est signalée dans « unavailable ».
Obtenir un workloadactionLit un Deployment, une DeploymentConfig ou un StatefulSet.
Lister les routesactionRoutes (route.openshift.io) d'un projet, avec URL publique et admission.
Obtenir une routeactionLit une route : hôte, chemin, service cible, terminaison TLS.
Lister les BuildConfigsactionBuildConfigs d'un projet : stratégie, source Git, image produite.
Lister les buildsactionBuilds récents d'un projet ou d'une BuildConfig, du plus récent au plus ancien.
Démarrer un buildeffet externe : demande une confirmation avant une exécution manuelleactionDémarre un build depuis une BuildConfig (BuildRequest). Une nouvelle tentative de la même étape retrouve le build déjà démarré ; après une réponse réseau perdue, le résultat est signalé incertain.
Obtenir le statut d'un buildactionPhase, résultat, motif d'échec, durée et image produite.
Lire les journaux d'un buildactionDernières lignes du journal de build, taille limitée (1 Mo au plus).
Lister les ImageStreamsactionImageStreams d'un projet et leurs étiquettes.
Obtenir une ImageStreamactionÉtiquettes et références d'images (digest) d'une ImageStream.
Build démarré, réussi ou en échecdéclencheurDémarre le workflow quand un build démarre, réussit ou échoue (un événement par changement de résultat).
Changement de statut d'un workloaddéclencheurDémarre le workflow quand la disponibilité d'un Deployment ou d'une DeploymentConfig change (healthy, progressing, degraded).

Connexion

Jeton d'un compte de service dédié, lié à un rôle limité au projet (exemples dans la documentation). « Tester la connexion » détecte les API OpenShift du cluster et vérifie les droits, sans rien modifier.

Documentation

Red Hat OpenShift

Intégration maintenue par Orkyvo (non certifiée par Red Hat) pour OpenShift Container Platform 4.x, OKD 4 et les offres managées (ROSA, ARO, OpenShift Dedicated).

Ce nœud n'est pas le nœud Kubernetes renommé : il utilise les API propres à OpenShift (project.openshift.io, route.openshift.io, build.openshift.io, image.openshift.io, apps.openshift.io, user.openshift.io) et partage seulement avec le nœud Kubernetes ses composants communs (connexion, pagination, contrôle des droits, surveillance par watch). Pour un cluster Kubernetes standard, utilisez le nœud Kubernetes.

Connexion

ChampDescription
URL de l'API du clusterhttps://api.<cluster>.<domaine>:6443 (oc whoami --show-server).
Jeton du compte de serviceoc create token orkyvo -n boutique --duration=8760h. Chiffré, masqué partout. Évitez les jetons d'utilisateur (oc whoami -t), de courte durée.
Autorité de certificationPEM de l'autorité de l'API (souvent interne sur OpenShift sur site). La vérification TLS reste active.
Projet par défautProjet utilisé quand un bloc n'en précise pas.

Cluster privé : un administrateur de la plateforme autorise la plage et le port de l'API pour cette organisation et cette connexion (Administration → Réseaux privés).

« Tester la connexion » lit /version, détecte les API OpenShift (GET /apis), identifie le compte (users/~) et vérifie les droits utilisés (SelfSubjectAccessReview, lecture seule). Les API absentes sont listées avec les opérations qui leur sont incompatibles ; l'action « Détecter les API disponibles » fournit le même diagnostic dans un workflow.

Droits limités au projet (sans cluster-admin)

apiVersion: v1
kind: ServiceAccount
metadata: { name: orkyvo, namespace: boutique }
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata: { name: orkyvo, namespace: boutique }
rules:
- apiGroups: [""]
resources: [pods, events]
verbs: [get, list, watch]
- apiGroups: [apps]
resources: [deployments, statefulsets]
verbs: [get, list, watch]
- apiGroups: [apps.openshift.io]
resources: [deploymentconfigs]
verbs: [get, list, watch]
- apiGroups: [route.openshift.io]
resources: [routes]
verbs: [get, list]
- apiGroups: [image.openshift.io]
resources: [imagestreams]
verbs: [get, list]
- apiGroups: [build.openshift.io]
resources: [buildconfigs, builds, builds/log]
verbs: [get, list, watch]
# Écriture : seulement pour « Démarrer un build »
- apiGroups: [build.openshift.io]
resources: [buildconfigs/instantiate]
verbs: [create]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata: { name: orkyvo, namespace: boutique }
subjects: [{ kind: ServiceAccount, name: orkyvo, namespace: boutique }]
roleRef: { kind: Role, name: orkyvo, apiGroup: rbac.authorization.k8s.io }

Le rôle prédéfini view du projet suffit pour la lecture (oc policy add-role-to-user view -z orkyvo -n boutique). Lister tous les projets ne renvoie que ceux auxquels le compte a accès.

Actions

ActionAPI
Détecter les API disponiblesGET /apis
Lister les projetsproject.openshift.io/v1/projects
Lister / obtenir les workloadsapps/v1 Deployments et StatefulSets, apps.openshift.io/v1 DeploymentConfigs (absente : signalée dans unavailable)
Lister / obtenir les routesroute.openshift.io/v1/routes (URL, TLS, admission)
Lister les BuildConfigsbuild.openshift.io/v1/buildconfigs
Lister les buildsbuild.openshift.io/v1/builds (filtre openshift.io/build-config.name)
Démarrer un buildPOST …/buildconfigs/{nom}/instantiate (BuildRequest, commit et variables facultatifs)
Statut d'un build…/builds/{nom} : phase, résultat, motif, durée, image produite
Journaux d'un build…/builds/{nom}/log : tailLines ≤ 5 000, limitBytes ≤ 1 Mo
Lister / obtenir les ImageStreamsimage.openshift.io/v1/imagestreams (étiquettes, digests)

Démarrage de build sans doublon : la clé de l'étape est inscrite dans triggeredBy du build ; une nouvelle tentative retrouve ce build (existing: true) au lieu d'en démarrer un second. Une réponse réseau perdue au moment du démarrage n'est jamais relancée automatiquement (« Résultat incertain »).

Déclencheurs (fenêtres de watch)

Même mécanisme explicite que le nœud Kubernetes : watch borné depuis le resourceVersion conservé en base, reprise après redémarrage, resynchronisation sur 410 Gone, dédoublonnage.

DéclencheurÉmis quand
Build démarré, réussi ou en échecLe résultat du build change : démarré (New / Pending / Running), réussi (Complete), en échec (Failed, Error, Cancelled). Un seul événement par résultat et par build.
Changement de statut d'un workloadRéplicas prêts / disponibles ou condition Available d'un Deployment ou d'une DeploymentConfig.

Erreurs

401 jeton refusé ou expiré · 403 droit manquant (rôle à compléter) · 404 ressource introuvable, ou API OpenShift absente (« opération incompatible ») · 409 conflit · 410 version expirée (resynchronisation) · 429 / 5xx temporaires.

Limites

  • Tests automatisés sur API simulées ; test réel recommandé sur OpenShift Local (CRC) ou un cluster de recette : voir docs/INTEGRATIONS.md.