Wie auto deploy-Docker-Container von Amazon ECR Kubernetes mit Jenkins
Dies ist unsere Umwelt:
- Ich habe einen Kubernetes-cluster auf Amazon.
- Jenkins CI/CD auf Amazon, die eine Verbindung zu einem privaten GitLab und baut unsere Dienstleistungen als Docker-images.
- Amazon ECR, speichert unser Docker images.
Meine Fragen:
- Wie kann ich den auto deploy-Bilder von ECR Kubernetes (pods), sobald die Jenkins-pipeline stößt neu gebaute Bilder zu ECR?
- Kann ich tun, dass innerhalb der Jenkins-pipeline? Gelesen habe ich viel material, aber ich konnte nicht finden, wie sollte es gemacht werden.
Es gibt auch eine 3rd-party-tool wie Kiel aber es unterstützt nicht Amazon ECR (Webhook problem mit ECR).
Jede Hilfe würde geschätzt werden.
InformationsquelleAutor MasoudSat | 2018-04-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe einen ähnlichen workflow und ich hoffe, dies hilft Ihnen, einige Richtung. Ich verwende bitbucket-pipeline für CI, aber ich bin sicher, dass Jenkins funktioniert auch gut.
Dies ist, was ich in meinem CI-flow :
my-cntnr:12
my-cntnr:12
)Hier ist das Skript für die Referenz :
beachten Sie: Da bin ich mit Rancher, die ich verwenden kann, Rancher-API-update-pods und
Ihre Konfiguration.
Sich jetzt für den ECR-Anmeldeinformationen Teil für Kubernetes, die Sie haben, um ein Geheimnis ( eine Kubernetes nur juristische Person), dieses Geheimnis wird mit Ihrem AWS-ECR-details. Dann können Sie dieses Geheimnis in Ihrem pod.yml als Bild-pull-Geheimnis. Dies wird Ihnen sagen, k8, verwenden Sie das Geheimnis, und ziehen Sie das Bild von ECR
Habe ich ein einfaches Skript, um schnell zu tun.
Und dies ist, wie Sie es verwenden können, in Ihrem pod.yml
Ich geschrieben habe, einen ausführlichen Artikel über den Prozess als auch. Finden Sie es hier.
InformationsquelleAutor damitj07
Wenn Sie möchten, um zu sehen, wie automatisieren von CI/CD mit mehreren Umgebungen auf Kubernetes mit GitOps für die Förderung zwischen Umgebungen und Vorschau-Umgebungen über Pull-Requests könnten Sie wanna check out meinen letzten Vortrag über Jenkins X an der DevOxx UK, wo ich eine live-demo von diesem auf GKE. Obwohl Jenkins X funktioniert auf AWS, AKS und GKE und andere kubernetes-Cluster zu.
Beim Zusammenführen eine änderung im master branch, Jenkins X erstellt eine neue semantisch versionierte Verteilung Ihrer app (pom.xml, jar, Andockfenster Bild -, Ruder-Diagramm). Die pipeline dann automatisiert die Generierung von Pull-Requests, um Ihre Anwendung durch alle die Umgebungen über GitOps. Sie können dann entscheiden, frühere Versionen, wenn die apps release-pipeline abgeschlossen hat (da es eine Umwelt-pipeline).
InformationsquelleAutor James Strachan
Ja, es ist möglich. Sie können Amazon ECR für Ihre Kubernetes-cluster, aber Sie brauchen, um erstellen Sie ein Geheimnis mit Anmeldeinformationen. Sie können entwickeln eine pipeline für Jenkins die automatische Bereitstellung von updates für Ihre Kubernetes-cluster. Für diese, müssen Sie konfigurieren Sie einen trigger, z.B. erfolgreicher Abschluss der vorherigen pipeline baut Ihr image. Sie dürfen kubernetes-plugin für die Entwicklung Ihrer pipeline, oder Sie können einfach anrufen kubectl update mit einem neuen image-tag. Sie können aktualisieren Sie Ihr cluster mit Standard-update für die Bereitstellung oder 3rd-party-tool, zum Beispiel helm.
*aktualisiert
Es ist ein guter doc: Mit AWS EC2 Container Registry.
Für Jenkins und Kubernetes ich kann Ihnen raten, zu verwenden,kube2iam, hilft es zu vermeiden ablaufen der Autorisierungs-Token.
Benutzerdefinierte Rollen erstellen für Kubernetes-Knoten und für Jenkins, auch vergessen Sie nicht, fügen Sie die Berechtigung zum zuweisen von Rollen für kube2iam.
$(aws ecr get-login --region us-east-2 --no-include-email)
Ich habe soeben die Antwort mit zusätzlichen Informationen
InformationsquelleAutor Nick Rak