Traditionell wurden CI / CD-Pipelines auf physischen Servern und virtuellen Maschinen aufgebaut. Containerplattformen wie Kubernetes und OpenShift kamen viel später zu dieser Szene. Da jedoch immer mehr Workloads auf die OpenShift-Plattform migriert werden, werden auch die CI / CD-Pipelines migriert und Pipeline-Jobs werden zunehmend in Containern ausgeführt, die auf dem Cluster ausgeführt werden.
Dieser Beitrag ist eine Übersetzung des Blogs unseres Freundes Ales Nosik, des Autors des selbsternannten Blogs ("Hilft Ihnen, durch die Welt von Kubernetes zu navigieren"). Ales 'Motto: "Softwareentwickler und Architekt, der sich für neue Technologien, Open Source und die DevOps-Kultur begeistert. Mit Software die Welt zu einem besseren Ort machen."
Sie können jede Frage stellen, nachdem Sie Ales in den Kommentaren gelesen haben. Nun, und wo ohne - Ales möchte für die schwierigsten Fragen eine Reihe von Rucksacktouristen mit einer Routenkarte von Red Hat präsentieren. Und einen Hut.
In der realen Welt sind Unternehmen nicht auf einen einzigen OpenShift-Cluster beschränkt, sondern haben mehrere gleichzeitig. Warum? Ausführen von Workloads sowohl in verschiedenen öffentlichen Clouds als auch in eigenen IT-Einrichtungen. Oder - wenn die Organisation einem einzigen Plattformanbieter treu bleibt - um in verschiedenen Regionen der Welt effektiv zu operieren. Und manchmal ist es erforderlich, mehrere Cluster in einer Region zu haben, beispielsweise wenn mehrere Sicherheitszonen vorhanden sind, von denen jede einen eigenen Cluster haben muss.
, 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.