Pipelines CI / CD couvrant plusieurs clusters OpenShift

Traditionnellement, les pipelines CI / CD ont été construits sur des serveurs physiques et des machines virtuelles. Les plates-formes de conteneurs comme Kubernetes et OpenShift sont arrivées sur cette scène beaucoup plus tard. Cependant, à mesure que de plus en plus de charges de travail sont migrées vers la plate-forme OpenShift, les pipelines CI / CD le sont également, et les travaux de pipeline sont de plus en plus exécutés à l'intérieur de conteneurs exécutés sur le cluster.





Cet article est une traduction du blog de notre ami Ales Nosik, l'auteur du blog autoproclamé ("Vous aider à naviguer dans le monde de Kubernetes"). La devise d'Ales: "Développeur et architecte de logiciels passionnés par les nouvelles technologies, l'open-source et la culture DevOps. Rendre le monde meilleur avec les logiciels."





Vous pouvez poser n'importe quelle question après avoir lu Ales dans les commentaires. Eh bien, et où sans cela - Ales veut présenter pour les questions les plus délicates un ensemble de routards avec une carte d'itinéraire de Red Hat. Et un chapeau.





Dans le monde réel, les entreprises ne sont pas limitées à un seul cluster OpenShift, mais en ont plusieurs à la fois. Pourquoi? Pour exécuter des charges de travail à la fois dans divers clouds publics et sur leurs propres installations informatiques. Ou - si l'organisation reste fidèle à un fournisseur de plate-forme unique - afin de fonctionner efficacement dans différentes régions du monde. Et parfois, il est nécessaire d'avoir plusieurs clusters dans une région, par exemple, s'il y a plusieurs zones de sécurité, dont chacune doit avoir son propre cluster.





, OpenShift. , CI/CD , , .





CI/CD- Jenkins

Jenkins – CI/CD. - Hudson…, , . , Jenkins, OpenShift? , , . , Jenkins ( -Jenkins), OpenShift. -Jenkins , -Jenkins, . OpenShift (Dev, Test Prod), :





Jenkins OpenShift Kubernetes-plugin, -Jenkins worker- . , , . :





stage ('Build') {
  node ("dev") {
    // running on dev cluster
  }
}

stage ('Test') {
  node ("test") {
    // running on test cluster
  }
}

stage ('Prod') {
  node ("prod") {
    // running on prod cluster
  }
}
      
      



OpenShift Jenkins, openshift. -Jenkins, worker-pod’ . , -Jenkins OpenShift, . Jenkins- worker-pod -Jenkins. , -Jenkins worker-, OpenShift.





, . -Jenkins worker- pod- OpenShift, worker- . OpenShift , Jenkins- worker. Jenkins, Jenkins- , .





Kubernetes- Tekton

, CI/CD Tekton. Jenkins, Tekton – Kubernetes- : Kubernetes Kubernetes. Tekton – . , OpenShift?





Tekton. , execute-remote-pipeline, Tekton-, OpenShift. . Tekton OpenShift . , , OpenShift (Dev, Test Prod):





Dev. Dev Test, , , Prod. :





$ tkn pipeline start dev --showlog
Pipelinerun started: dev-run-bd5fs
Waiting for logs to be available...
[execute-remote-pipeline : execute-remote-pipeline-step] Logged into "https://api.cluster-affc.sandbox1480.opentlc.com:6443" as "system:serviceaccount:test-pipeline:pipeline-starter" using the token provided.
[execute-remote-pipeline : execute-remote-pipeline-step]
[execute-remote-pipeline : execute-remote-pipeline-step] You have one project on this server: "test-pipeline"
[execute-remote-pipeline : execute-remote-pipeline-step]
[execute-remote-pipeline : execute-remote-pipeline-step] Using project "test-pipeline".
[execute-remote-pipeline : execute-remote-pipeline-step] Welcome! See 'oc help' to get started.
[execute-remote-pipeline : execute-remote-pipeline-step] [execute-remote-pipeline : execute-remote-pipeline-step] Logged into "https://api.cluster-affc.sandbox1480.opentlc.com:6443" as "system:serviceaccount:prod-pipeline:pipeline-starter" using the token provided.
[execute-remote-pipeline : execute-remote-pipeline-step] [execute-remote-pipeline : execute-remote-pipeline-step]
[execute-remote-pipeline : execute-remote-pipeline-step] [execute-remote-pipeline : execute-remote-pipeline-step] You have one project on this server: "prod-pipeline"
[execute-remote-pipeline : execute-remote-pipeline-step] [execute-remote-pipeline : execute-remote-pipeline-step]
[execute-remote-pipeline : execute-remote-pipeline-step] [execute-remote-pipeline : execute-remote-pipeline-step] Using project "prod-pipeline".
[execute-remote-pipeline : execute-remote-pipeline-step] [execute-remote-pipeline : execute-remote-pipeline-step] Welcome! See 'oc help' to get started.
[execute-remote-pipeline : execute-remote-pipeline-step] [execute-remote-pipeline : execute-remote-pipeline-step] [prod : prod-step] Running on prod cluster
[execute-remote-pipeline : execute-remote-pipeline-step] [execute-remote-pipeline : execute-remote-pipeline-step]
[execute-remote-pipeline : execute-remote-pipeline-step]
      
      



, Tekton. – .





, . Kubernetes- Tekton , RBAC. , , (, Test ), (Prod), , (Prod). , , (Prod), , (Test). , Prod Test- -, Test Prod.





, , Jenkins Tekton CI/CD, OpenShift, , .





, OpenShift, , -, .





 : Ales Nosek





13 Apache Airflow OpenShift, , .





  • 13 . OpenShift

    , OpenShift' .

    – .





  • 20 . OpenShift Virtualization: , serverless ,

    – OpenShift Virtualization.








All Articles