{"id":81790,"date":"2021-04-30T13:01:56","date_gmt":"2021-04-30T11:01:56","guid":{"rendered":"https:\/\/jfrog.com\/?p=81790"},"modified":"2021-09-22T13:02:27","modified_gmt":"2021-09-22T11:02:27","slug":"migrate-nginx-from-stable-helm-charts-with-chartcenter","status":"publish","type":"post","link":"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/","title":{"rendered":"Migrieren Sie NGINX aus dem &quot;stabilen&quot; Helm-Diagramm-Repository mit ChartCenter"},"content":{"rendered":"<p><img decoding=\"async\" class=\"alignnone size-full wp-image-63190\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17165604\/863_300.jpg\" alt=\"\" width=\"863\" height=\"300\" srcset=\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17165604\/863_300.jpg?speedsize=w_863 863w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17165604\/863_300.jpg?speedsize=w_300 300w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17165604\/863_300.jpg?speedsize=w_768 768w\" sizes=\"(max-width: 863px) 100vw, 863px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><strong>UPDATE: 1. Mai 2021 \u2013 Das zentrale Repository ChartCenter einschlie\u00dflich aller Funktionen wurde eingestellt. Weitere Informationen zur Einstellung der Center finden Sie im <a class=\"in-cell-link\" href=\"https:\/\/jfrog.com\/de\/blog\/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter\/\" target=\"_blank\" rel=\"noopener noreferrer\">Blog-Post zu veralteten Centern<\/a><\/strong><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">In den letzten vier Jahren hat jeder, der den Ingress NGINX Controller f\u00fcr Kubernetes einsetzen wollte, dessen offizielles Helm-Diagramm <code>nginx-ingress<\/code> im <code>stabilen<\/code> Repository gefunden, das vom Helm-Projekt gepflegt wird. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Diese Zeiten sind vorbei. Und das nicht nur f\u00fcr NGINX, den beliebtesten Ingress Controller, der als Reverse Proxy und Load Balancer eingesetzt wird, sondern f\u00fcr alle Open-Source-K8s-Apps.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Mit der Einf\u00fchrung von Helm 3 <\/span><a href=\"https:\/\/github.com\/helm\/charts\/blob\/master\/README.md\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">stellt das Helm-Projekt die <code>stabilen<\/code> Repositories<\/span><\/a><span style=\"font-weight: 400\"> ein. Ab November 2019 werden keine Diagramme mehr als Neuzug\u00e4nge zu den <code>stabilen<\/code> Repositories angenommen, da Diagrammbesitzer zu individuellen Repositories \u00fcbergehen. Diese \u00dcbergangszeit ist nun vorbei \u2013 <code>stabile<\/code> Repositories wurden vom Helm Hub ausgelistet und sind ab kommenden November offiziell veraltet.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Was bedeutet dies f\u00fcr diejenigen, die NGINX-Deployments installieren und warten? Zun\u00e4chst unterh\u00e4lt das NGINX-Projekt jetzt ein <\/span><a href=\"https:\/\/kubernetes.github.io\/ingress-nginx\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">neues <code>ingress-nginx<\/code> -Helm-Diagramm<\/span><\/a><span style=\"font-weight: 400\"> in den GitHub-Repositories f\u00fcr Kubernetes. Jeder, der ein Deployment von NGINX Ingress Controller installiert oder aktualisiert, sollte nun das Diagramm aus diesem Repository verwenden.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Auch wenn das neue Diagramm derzeit die gleiche Version der NGINX-App einsetzt, ist es nicht identisch mit dem Diagramm im <code>stabilen Repository<\/code>. Dies erfordert einige Anpassungen, wenn eine bestehende NGINX-Installation mit dem neuen Diagramm aktualisiert wird.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Lassen Sie uns einen Blick darauf werfen, was damit verbunden ist, und wie JFrog ChartCenter Ihnen bei der Umstellung helfen kann.<\/span><\/p>\n<h2><span style=\"font-weight: 400\">Ein zentrales Helm-Repository<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Der <code>stabile<\/code> Satz von Helm-Diagrammen hat bedeutet, dass offizielle Diagramme f\u00fcr viele beliebte Kubernetes-Apps immer in einem zentralen Repository zu finden waren. Sie haben einfach das <code>stabile<\/code> Repository dem Helm-Client hinzugef\u00fcgt:<\/span><\/p>\n<div style=\"background: #272b33;overflow: auto;width: auto;border: solid gray;border-width: .1em .1em .1em .8em;padding: .2em .6em\">\n<pre style=\"margin: 0;line-height: 125%\"><span style=\"color: #999999\">$ <span style=\"color: #40be46\">helm repo add stable https:\/\/kubernetes-charts.storage.googleapis.com\/<\/span><\/span><\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Von diesem einzelnen <code>stabilen<\/code> Repository konnten Sie getrost <code>nginx-ingress<\/code> unter Verwendung des neuesten, vom Autor genehmigten Helm-Diagramms einsetzen.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Da das <code>stabile<\/code> Repository fast veraltet ist, ist es nicht mehr als zentrale Quelle f\u00fcr bekannterma\u00dfen gute Helm-Diagramme verf\u00fcgbar. NGINX weist Sie nun an, <code>ingress-nginx<\/code> individuell dem Helm-Client hinzuzuf\u00fcgen:<\/span><\/p>\n<div style=\"background: #272b33;overflow: auto;width: auto;border: solid gray;border-width: .1em .1em .1em .8em;padding: .2em .6em\">\n<pre style=\"margin: 0;line-height: 125%\"><span style=\"color: #999999\">$ <span style=\"color: #40be46\">helm repo add ingress-nginx https:\/\/kubernetes.github.io\/ingress-nginx<\/span><\/span><\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Ohne ein zentrales Repository m\u00fcssen Sie jedes Mal ein <code>helm repo add<\/code> ausf\u00fchren, wenn Sie eine andere K8s-App warten m\u00fcssen.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Gibt es eine bessere M\u00f6glichkeit?<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Ingress NGINX Controller in ChartCenter<\/span><\/h3>\n<p><span style=\"font-weight: 400\">JFrog ChartCenter ist ein kostenloses <\/span><span style=\"font-weight: 400\">zentrales Helm-Diagramm-Repository<\/span><span style=\"font-weight: 400\"> , das entwickelt wurde, um der Helm-Community zu helfen, unver\u00e4nderliche, sichere und zuverl\u00e4ssige Diagramme zu finden und sich einer einzigen Quelle zu bedienen, um alle Diagramme von einem Ort aus abzubilden. Es kann als ein <a href=\"https:\/\/jfrog.com\/de\/integration\/helm-repository\/\">zentrales Helm-Repository<\/a> vom Helm-Client genutzt werden, so dass Sie nicht viele \u00f6ffentliche Helm-Repositories hinzuf\u00fcgen m\u00fcssen, sondern stattdessen nur eines verwenden.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\u00dcber ChartCenter sind \u00fcber 30.000 versionierte Helm-Diagramme verf\u00fcgbar, und viele beliebte App-Diagramme \u2013 einschlie\u00dflich f\u00fcr den NGINX Ingress Controller \u2013 werden auf der Startseite angezeigt, so dass Sie bequem auffindbar sind.<\/span><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-large wp-image-63193\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17170154\/CC-NGINX-01-1024x461.png\" alt=\"\" width=\"1024\" height=\"461\" srcset=\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17170154\/CC-NGINX-01.png?speedsize=w_1024 1024w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17170154\/CC-NGINX-01.png?speedsize=w_300 300w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17170154\/CC-NGINX-01.png?speedsize=w_768 768w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17170154\/CC-NGINX-01.png?speedsize=w_1354 1354w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><span style=\"font-weight: 400\">\u00dcber die Suche von ChartCenter k\u00f6nnen wir das <code>stabile<\/code> <\/span><span style=\"font-weight: 400\">Helm-Diagramm <code>nginx-ingress finden<\/code><\/span><span style=\"font-weight: 400\">:<\/span><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-large wp-image-63194\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17170250\/CC-NGINX-02-1024x420.png\" alt=\"\" width=\"1024\" height=\"420\" srcset=\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17170250\/CC-NGINX-02.png?speedsize=w_1024 1024w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17170250\/CC-NGINX-02.png?speedsize=w_300 300w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17170250\/CC-NGINX-02.png?speedsize=w_768 768w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17170250\/CC-NGINX-02.png?speedsize=w_1296 1296w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><span style=\"font-weight: 400\">Wir k\u00f6nnen auch das aktuelle Diagramm <\/span><code>ingress-nginx<\/code><span style=\"font-weight: 400\"> in ChartCenter ausfindig machen:<\/span><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-large wp-image-63195\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17170419\/CC-NGINX-03-1024x431.png\" alt=\"\" width=\"1024\" height=\"431\" srcset=\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17170419\/CC-NGINX-03.png?speedsize=w_1024 1024w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17170419\/CC-NGINX-03.png?speedsize=w_300 300w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17170419\/CC-NGINX-03.png?speedsize=w_768 768w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17170419\/CC-NGINX-03.png?speedsize=w_1293 1293w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3><span style=\"font-weight: 400\">ChartCenter verwenden<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Wenn wir ChartCenter zu unserem Helm-Client hinzugef\u00fcgt haben, k\u00f6nnen wir es als zentrales Repository f\u00fcr alle unsere Helm-Diagramme verwenden, einschlie\u00dflich der beiden NGINX-Repositories, die wir in unserer Demonstration verwenden werden.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">Schritt\u00a01: F\u00fcgen Sie ChartCenter als Ihr Helm-Repository hinzu<\/span><\/h4>\n<p><span style=\"font-weight: 400\">Stellen Sie Ihren Helm-Client so ein, dass er das ChartCenter-Repository als zentralen Speicherort verwendet, von dem Sie Diagramme abrufen:<\/span><\/p>\n<div style=\"background: #272b33;overflow: auto;width: auto;border: solid gray;border-width: .1em .1em .1em .8em;padding: .2em .6em\">\n<pre style=\"margin: 0;line-height: 125%\"><span style=\"color: #999999\">$ <span style=\"color: #40be46\">helm repo add center https:\/\/repo.chartcenter.io<\/span>\r\n$ <span style=\"color: #40be46\">helm repo update<\/span><\/span><\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<h4><span style=\"font-weight: 400\">Schritt\u00a02: ChartCenter als Repository verwenden<\/span><\/h4>\n<p><span style=\"font-weight: 400\">Pr\u00fcfen wir nun auf die <code>nginx-ingress-<\/code> und <code>ingress-nginx-<\/code> Diagramme vom Helm-Client:<\/span><\/p>\n<div style=\"background: #272b33;overflow: auto;width: auto;border: solid gray;border-width: .1em .1em .1em .8em;padding: .2em .6em\">\n<pre style=\"margin: 0;line-height: 125%\"><span style=\"color: #999999\">$ <span style=\"color: #40be46\">helm search repo center\/stable\/nginx-ingress<\/span>\r\nNAME                       \tCHART VERSION\tAPP VERSION\tDESCRIPTION\r\ncenter\/stable\/nginx-ingress\t1.41.2       \tv0.34.1    \tEin nginx Ingress-Controller, der ConfigMap verwendet...\r\n \r\n$ <span style=\"color: #40be46\">helm search repo center\/kubernetes-ingress-nginx\/ingress-nginx<\/span>\r\nNAME                                         \tCHART VERSION\tAPP VERSION\tDESCRIPTION\r\ncenter\/kubernetes-ingress-nginx\/ingress-nginx\t2.11.2       \t0.34.1     \tIngress-Controller f\u00fcr Kubernetes unter Verwendung von NGINX und...<\/span><\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Sch\u00f6n, wir sehen die gleiche Version der Diagramme wie im ChartCenter UI.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Und hier k\u00f6nnen Sie sehen, wie viel einfacher es ist, ein zentrales Helm-Repository f\u00fcr Diagramme aus verschiedenen Helm-Repositories zu verwenden.<\/span><\/p>\n<h2><span style=\"font-weight: 400\">nginx-ingress Helm-Diagramm installieren<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Um das Upgrade zu testen, m\u00fcssen wir zun\u00e4chst ein <code>nginx-ingress-<\/code> Diagramm installieren. Ich werde ein kleines Shell-Skript <code>nginx-ingress.sh<\/code> verwenden, das eine Datei mit \u00dcberschreibungswerten erstellt und dann <code>nginx-ingress installiert<\/code>.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Das <code>nginx-ingress.sh<\/code> hat einen Diagrammnamen und eine Version, sowie eine statische IP f\u00fcr den Load Balancer:<\/span><\/p>\n<div style=\"background: #272b33;overflow: auto;width: auto;border: solid gray;border-width: .1em .1em .1em .8em;padding: .2em .6em\">\n<pre style=\"margin: 0;line-height: 125%\"><span style=\"color: #999999\">#!\/bin\/bash\r\n \r\nCHART_NAME=&quot;center\/stable\/nginx-ingress&quot;\r\nCHART_VERSION=&quot;1.41.2&quot;\r\nRELEASE=nginx-ingress\r\nNAMESPACE=nginx-ingress\r\nVALUES_FILE=nginx-ingress.yaml\r\nLB_STATIC_IP=35.197.192.35\r\n \r\ngenerateValues() {\r\n   cat &lt;&lt; EOF &gt; &quot;${VALUES_FILE}&quot;\r\n# Werte f\u00fcr nginx-ingress \u00fcberschreiben\r\n \r\ncontroller:\r\n \r\n ## Host-Ports 80 und 443 verwenden\r\n daemonset:\r\n   useHostPort: true\r\n \r\n kind: DaemonSet\r\n \r\n service:\r\n \r\n   ## Statische IP f\u00fcr LoadBalancer einstellen\r\n   loadBalancerIP: ${LB_STATIC_IP}\r\n \r\n   externalTrafficPolicy: Local\r\n \r\n stats:\r\n   enabled: true\r\n \r\n metrics:\r\n   enabled: true\r\nEOF\r\n}\r\n \r\ngenerateValues\r\nkubectl create ns nginx-ingress || true\r\necho\r\nhelm upgrade --install ${RELEASE} -n ${NAMESPACE} ${CHART_NAME} --version ${CHART_VERSION} -f ${VALUES_FILE}\r\necho\r\nkubectl -n ${NAMESPACE} get all<\/span><\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Lassen Sie uns <code>nginx-ingress.sh<\/code> ausf\u00fchren, um <code>nginx-ingress zu installieren<\/code>:<\/span><\/p>\n<div style=\"background: #272b33;overflow: auto;width: auto;border: solid gray;border-width: .1em .1em .1em .8em;padding: .2em .6em\">\n<pre style=\"margin: 0;line-height: 125%\"><span style=\"color: #999999\">$ <span style=\"color: #40be46\">.\/nginx-ingress.sh<\/span>\r\nnamespace\/nginx-ingress erstellt\r\n \r\nRelease &quot;nginx-ingress&quot; existiert nicht. Es wird jetzt installiert.\r\nNAME: nginx-ingress\r\nLAST DEPLOYED: Mon Aug 10 17:27:13 2020\r\nNAMESPACE: nginx-ingress\r\nSTATUS: deployed\r\nREVISION: 1\r\nTEST-SUITE: None\r\nNOTES:\r\nDer nginx-ingress-Controller wurde installiert.\r\nEs kann ein paar Minuten dauern, bis die LoadBalancer-IP verf\u00fcgbar ist.\r\nSie k\u00f6nnen den Status beobachten, indem Sie &quot;kubectl --namespace nginx-ingress get services -o wide -w nginx-ingress-controller&quot; ausf\u00fchren\r\n \r\nEin Beispiel-Ingress, bei dem der Controller verwendet wird:\r\n \r\n  apiVersion: extensions\/v1beta1\r\n  kind: Ingress\r\n  metadata:\r\n    annotations:\r\n      kubernetes.io\/ingress.class: nginx\r\n    name: example\r\n    namespace: foo\r\n  spec:\r\n    rules:\r\n      - host: www.example.com\r\n        http:\r\n          paths:\r\n            - backend:\r\n                serviceName: exampleService\r\n                servicePort: 80\r\n              path: \/\r\n    # Dieser Abschnitt ist nur erforderlich, wenn TLS f\u00fcr den Ingress aktiviert werden soll\r\n    tls:\r\n        - hosts:\r\n            - www.example.com\r\n          secretName: example-tls\r\n \r\nWenn TLS f\u00fcr den Ingress aktiviert ist, muss auch ein Secret angegeben werden, das das Zertifikat und den Schl\u00fcssel enth\u00e4lt:\r\n \r\n  apiVersion: v1\r\n  kind: Secret\r\n  metadata:\r\n    name: example-tls\r\n    namespace: foo\r\n  data:\r\n    tls.crt: \r\n    tls.key: \r\n  type: kubernetes.io\/tls\r\n \r\nNAME                                                 READY   STATUS              RESTARTS   AGE\r\npod\/nginx-ingress-controller-rrsl9                   0\/1     ContainerCreating   0          1s\r\npod\/nginx-ingress-default-backend-5b967cf596-wrrfl   0\/1     ContainerCreating   0          1s\r\n \r\nNAME                                       TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE\r\nservice\/nginx-ingress-controller           LoadBalancer   10.242.2.213         80:30643\/TCP,443:31622\/TCP   2s\r\nservice\/nginx-ingress-controller-metrics   ClusterIP      10.242.10.112           9913\/TCP                     2s\r\nservice\/nginx-ingress-default-backend      ClusterIP      10.242.11.172           80\/TCP                       2s\r\n \r\nNAME                                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE\r\ndaemonset.apps\/nginx-ingress-controller   1         1         0       1            0                     3s\r\n \r\nNAME                                            READY   UP-TO-DATE   AVAILABLE   AGE\r\ndeployment.apps\/nginx-ingress-default-backend   0\/1     1            0           2s\r\n \r\nNAME                                                       DESIRED   CURRENT   READY   AGE\r\nreplicaset.apps\/nginx-ingress-default-backend-5b967cf596   1         1         0       2s<\/span><\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Und lassen Sie uns auf Pods und Service pr\u00fcfen:<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><\/p>\n<div style=\"background: #272b33;overflow: auto;width: auto;border: solid gray;border-width: .1em .1em .1em .8em;padding: .2em .6em\">\n<pre style=\"margin: 0;line-height: 125%\"><span style=\"color: #999999\">$ <span style=\"color: #40be46\">kubectl -n nginx-ingress get pods<\/span>\r\nNAME                                             READY   STATUS    RESTARTS   AGE\r\nnginx-ingress-controller-rrsl9                   1\/1     Running   0          78s\r\nnginx-ingress-default-backend-5b967cf596-wrrfl   1\/1     Running   0          78s\r\n \r\n$ <span style=\"color: #40be46\">kubectl -n nginx-ingress get svc<\/span>\r\nNAME                               TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE\r\nnginx-ingress-controller           LoadBalancer   10.242.2.213    35.197.192.35   80:30643\/TCP,443:31622\/TCP   89s\r\nnginx-ingress-controller-metrics   ClusterIP      10.242.10.112             9913\/TCP                     89s\r\nnginx-ingress-default-backend      ClusterIP      10.242.11.172             80\/TCP                       89s<\/span><\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Sch\u00f6n, der NGINX Ingress Controller-Pod l\u00e4uft, und sein Dienst hat vom Load Balancer eine externe IP zugewiesen bekommen.<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">Ok, wir haben das <code>nginx-ingress<\/code> -Diagramm erfolgreich installiert, machen wir mit dem Upgrade weiter. <\/span><\/p>\n<h2><span style=\"font-weight: 400\">Upgrade auf ingress-nginx Helm-Diagramm<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Versuchen wir, den NGINX Ingress Controller mit dem aktuelleren Diagramm zu aktualisieren.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Wir verwenden wieder ein Shell-Skript, diesmal mit dem anderen Namen <code>ingress-nginx.sh<\/code>.<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">Das <code>ingress-nginx.sh<\/code> hat einen anderen Diagrammnamen und eine andere Version, aber den gleichen Helm-Versionsnamen und die gleiche statische IP f\u00fcr den Load Balancer.<\/span><\/p>\n<div style=\"background: #272b33;overflow: auto;width: auto;border: solid gray;border-width: .1em .1em .1em .8em;padding: .2em .6em\">\n<pre style=\"margin: 0;line-height: 125%\"><span style=\"color: #999999\">#!\/bin\/bash\r\n \r\nCHART_NAME=&quot;center\/kubernetes-ingress-nginx\/ingress-nginx&quot;\r\nCHART_VERSION=&quot;2.11.1&quot;\r\nRELEASE=nginx-ingress\r\nNAMESPACE=nginx-ingress\r\nVALUES_FILE=ingress-nginx.yaml\r\nLB_STATIC_IP=35.197.192.35\r\n \r\ngenerateValues() {\r\n   cat &lt;&lt; EOF &gt; &quot;${VALUES_FILE}&quot;\r\n# Werte f\u00fcr ingress-nginx \u00fcberschreiben\r\n \r\ncontroller:\r\n \r\n ## Host-Ports 80 und 443 verwenden\r\n hostPort:\r\n   enabled: true\r\n \r\n kind: DaemonSet\r\n \r\n service:\r\n \r\n   ## Statische IP f\u00fcr LoadBalancer einstellen\r\n   loadBalancerIP: ${LB_STATIC_IP}\r\n \r\n   externalTrafficPolicy: Local\r\n \r\n stats:\r\n   enabled: true\r\n \r\n metrics:\r\n   enabled: true\r\n \r\n admissionWebhooks:\r\n   enabled: false\r\n \r\ndefaultBackend:\r\n enabled: true\r\nEOF\r\n}\r\n \r\ngenerateValues\r\necho\r\nhelm upgrade --install ${RELEASE} -n ${NAMESPACE} ${CHART_NAME} --version ${CHART_VERSION} -f ${VALUES_FILE}\r\necho\r\nkubectl -n ${NAMESPACE} get all<\/span><\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Das <code>ingress-nginx.sh<\/code> weist einige Unterschiede zu <code>nginx-ingress.sh auf<\/code>:<\/span><\/p>\n<div style=\"background: #272b33;overflow: auto;width: auto;border: solid gray;border-width: .1em .1em .1em .8em;padding: .2em .6em\">\n<pre style=\"margin: 0;line-height: 125%\"><span style=\"color: #999999\">controller:\r\n \r\n ## Host-Ports 80 und 443 verwenden\r\n daemonset:\r\n   useHostPort: true<\/span><\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">da einige Werte ge\u00e4ndert wurden in:<\/span><\/p>\n<div style=\"background: #272b33;overflow: auto;width: auto;border: solid gray;border-width: .1em .1em .1em .8em;padding: .2em .6em\">\n<pre style=\"margin: 0;line-height: 125%\"><span style=\"color: #999999\">controller:\r\n \r\n ## Host-Ports 80 und 443 verwenden\r\n hostPort:\r\n   enabled: true\r\n \r\n kind: DaemonSet<\/span><\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">und einige zus\u00e4tzliche wurden hinzugef\u00fcgt:<\/span><\/p>\n<div style=\"background: #272b33;overflow: auto;width: auto;border: solid gray;border-width: .1em .1em .1em .8em;padding: .2em .6em\">\n<pre style=\"margin: 0;line-height: 125%\"><span style=\"color: #999999\">admissionWebhooks:\r\n   enabled: false\r\n \r\ndefaultBackend:\r\n  enabled: true<\/span><\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">In diesem Upgrade-Szenario verwenden wir <code>admissionWebhooks<\/code> nicht, also deaktivieren wir es und aktivieren <code>defaultBackend<\/code> , da es in <code>nginx-ingress<\/code> -Diagramm standardm\u00e4\u00dfig aktiviert ist. Und nat\u00fcrlich k\u00f6nnen Sie die Werte Ihren Bed\u00fcrfnissen entsprechend anpassen.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Lassen Sie uns <code>ingress-nginx.sh<\/code> ausf\u00fchren, um auf <code>nginx-ingress zu aktualisieren<\/code>:<\/span><\/p>\n<div style=\"background: #272b33;overflow: auto;width: auto;border: solid gray;border-width: .1em .1em .1em .8em;padding: .2em .6em\">\n<pre style=\"margin: 0;line-height: 125%\"><span style=\"color: #999999\">Release &quot;nginx-ingress&quot; wurde aktualisiert. Viel Spa\u00df!\r\nNAME: nginx-ingress\r\nLAST DEPLOYED: Mon Aug 10 18:00:31 2020\r\nNAMESPACE: nginx-ingress\r\nSTATUS: deployed\r\nREVISION: 2\r\nTEST-SUITE: None\r\nNOTES:\r\nDer ingress-nginx-Controller wurde installiert.\r\nEs kann ein paar Minuten dauern, bis die LoadBalancer-IP verf\u00fcgbar ist.\r\nSie k\u00f6nnen den Status pr\u00fcfen, indem Sie &quot;kubectl --namespace nginx-ingress get services -o wide -w nginx-ingress-ingress-nginx-controller&quot; ausf\u00fchren\r\n \r\nEin Beispiel-Ingress, bei dem der Controller verwendet wird:\r\n \r\n  apiVersion: networking.k8s.io\/v1beta1\r\n  kind: Ingress\r\n  metadata:\r\n    annotations:\r\n      kubernetes.io\/ingress.class: nginx\r\n    name: example\r\n    namespace: foo\r\n  spec:\r\n    rules:\r\n      - host: www.example.com\r\n        http:\r\n          paths:\r\n            - backend:\r\n                serviceName: exampleService\r\n                servicePort: 80\r\n              path: \/\r\n    # Dieser Abschnitt ist nur erforderlich, wenn TLS f\u00fcr den Ingress aktiviert werden soll\r\n    tls:\r\n        - hosts:\r\n            - www.example.com\r\n          secretName: example-tls\r\n \r\nWenn TLS f\u00fcr den Ingress aktiviert ist, muss auch ein Secret angegeben werden, das das Zertifikat und den Schl\u00fcssel enth\u00e4lt:\r\n \r\n  apiVersion: v1\r\n  kind: Secret\r\n  metadata:\r\n    name: example-tls\r\n    namespace: foo\r\n  data:\r\n    tls.crt: \r\n    tls.key: \r\n  type: kubernetes.io\/tls\r\n \r\nNAME                                                              READY   STATUS        RESTARTS   AGE\r\npod\/nginx-ingress-controller-rrsl9                                1\/1     Terminating   0          33m\r\npod\/nginx-ingress-default-backend-5b967cf596-wrrfl                0\/1     Terminating   0          33m\r\npod\/nginx-ingress-ingress-nginx-controller-f9ztr                  0\/1     Pending       0          5s\r\npod\/nginx-ingress-ingress-nginx-defaultbackend-845f7cfd46-56grw   1\/1     Running       0          5s\r\n \r\nNAME                                                     TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE\r\nservice\/nginx-ingress-controller                         LoadBalancer   10.242.2.213    35.197.192.35   80:30643\/TCP,443:31622\/TCP   33m\r\nservice\/nginx-ingress-ingress-nginx-controller           LoadBalancer   10.242.13.184          80:30601\/TCP,443:30644\/TCP   6s\r\nservice\/nginx-ingress-ingress-nginx-controller-metrics   ClusterIP      10.242.12.190             9913\/TCP                     6s\r\nservice\/nginx-ingress-ingress-nginx-defaultbackend       ClusterIP      10.242.11.112             80\/TCP                       5s\r\n \r\nNAME                                                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE\r\ndaemonset.apps\/nginx-ingress-ingress-nginx-controller   1         1         0       1            0                     6s\r\n \r\nNAME                                                         READY   UP-TO-DATE   AVAILABLE   AGE\r\ndeployment.apps\/nginx-ingress-ingress-nginx-defaultbackend   1\/1     1            1           6s\r\n \r\nNAME                                                                    DESIRED   CURRENT   READY   AGE\r\nreplicaset.apps\/nginx-ingress-ingress-nginx-defaultbackend-845f7cfd46   1         1         1       6s<\/span><\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">\u00dcberpr\u00fcfen wir nun die Pods und den Dienst:<\/span><\/p>\n<div style=\"background: #272b33;overflow: auto;width: auto;border: solid gray;border-width: .1em .1em .1em .8em;padding: .2em .6em\">\n<pre style=\"margin: 0;line-height: 125%\"><span style=\"color: #999999\">$ <span style=\"color: #40be46\">kubectl -n nginx-ingress get pods<\/span>\r\nNAME                                                          READY   STATUS    RESTARTS   AGE\r\nnginx-ingress-ingress-nginx-controller-f9ztr                  0\/1     Running   0          34s\r\nnginx-ingress-ingress-nginx-defaultbackend-845f7cfd46-56grw   1\/1     Running   0          34s\r\n\r\n$ <span style=\"color: #40be46\">kubectl -n nginx-ingress get svc<\/span>\r\nNAME                                             TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE\r\nnginx-ingress-controller                         LoadBalancer   10.242.2.213    35.197.192.35   80:30643\/TCP,443:31622\/TCP   34m\r\nnginx-ingress-ingress-nginx-controller           LoadBalancer   10.242.13.184          80:30601\/TCP,443:30644\/TCP   40s\r\nnginx-ingress-ingress-nginx-controller-metrics   ClusterIP      10.242.12.190             9913\/TCP                     40s\r\nnginx-ingress-ingress-nginx-defaultbackend       ClusterIP      10.242.11.112             80\/TCP                       39s<\/span><\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Sie sehen dort, dass die Pods aktualisiert werden und wir sehen zwei Dienste, einen alten und einen neuen.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Lassen Sie uns <code>kubectl -n nginx-ingress get svc<\/code> wieder:<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><\/p>\n<div style=\"background: #272b33;overflow: auto;width: auto;border: solid gray;border-width: .1em .1em .1em .8em;padding: .2em .6em\">\n<pre style=\"margin: 0;line-height: 125%\"><span style=\"color: #999999\">$ <span style=\"color: #40be46\">kubectl -n nginx-ingress get svc<\/span>\r\nNAME                                             TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE\r\nnginx-ingress-ingress-nginx-controller           LoadBalancer   10.242.13.184   35.197.192.35   80:30601\/TCP,443:30644\/TCP   3m26s\r\nnginx-ingress-ingress-nginx-controller-metrics   ClusterIP      10.242.12.190             9913\/TCP                     3m26s\r\nnginx-ingress-ingress-nginx-defaultbackend       ClusterIP      10.242.11.112             80\/TCP                       3m25s<\/span><\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"><em>Voila<\/em>, der alte Dienst wurde gel\u00f6scht und der neue erstellt, indem einfach <code>helm upgrade<\/code> ausgef\u00fchrt und kein anderer Zaubertrick mit kubectl verwendet wird. Nat\u00fcrlich ist beim Austausch des Dienstes eine gewisse Ausfallzeit zu erwarten, da der neue Load Balancer f\u00fcr den neuen Dienst erstellt werden muss.<\/span><\/p>\n<h2><span style=\"font-weight: 400\">Danke und viel Gl\u00fcck<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Ziemlich einfach, oder? Ein gro\u00dfes Dankesch\u00f6n an die Maintainer des NGINX-Ingress-Controller-Diagramms f\u00fcr ein so nahtloses Upgrade zwischen zwei verschiedenen Diagrammen!<\/span><\/p>\n<p><span style=\"font-weight: 400\">Mit etwas Gl\u00fcck wird der \u00dcbergang zu individuellen Diagramm-Repositories f\u00fcr Ihre anderen K8s-Apps ebenso reibungslos verlaufen. Die Verwendung von <\/span><a href=\"https:\/\/chartcenter.io\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">ChartCenter<\/span><\/a><span style=\"font-weight: 400\"> als Ihr zentrales Helm-Diagramm-Repository kann dabei helfen, diese Updates in Gang zu bringen.<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><b>Fr\u00f6hliches Ingressen<\/b><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; UPDATE: 1. Mai 2021 \u2013 Das zentrale Repository ChartCenter einschlie\u00dflich aller Funktionen wurde eingestellt. Weitere Informationen zur Einstellung der Center finden Sie im Blog-Post zu veralteten Centern &nbsp; In den letzten vier Jahren hat jeder, der den Ingress NGINX Controller f\u00fcr Kubernetes einsetzen wollte, dessen offizielles Helm-Diagramm nginx-ingress im stabilen Repository gefunden, das vom &hellip;<\/p>\n","protected":false},"author":140,"featured_media":63202,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[],"tags":[9481,9421,9423],"class_list":["post-81790","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-kubernetes-de","tag-helm-charts-de","tag-chartcenter-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.6 (Yoast SEO v22.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Wie man NGINX von &quot;stabilen&quot; Helm-Diagrammen migriert | JFrog ChartCenter<\/title>\n<meta name=\"description\" content=\"Erfahren Sie, wie JFrog ChartCenter Ihnen bei der Migration auf neue Helm-Diagramme f\u00fcr NGINX Ingress Controller aus dem veralteten &quot;stabilen&quot; Repository helfen kann.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/posts\/81790\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u00dcbergang von NGINX Helm-Diagrammen \u00fcber ChartCenter\" \/>\n<meta property=\"og:description\" content=\"Erfahren Sie, wie JFrog ChartCenter Ihnen bei der Migration auf neue Helm-Diagramme f\u00fcr NGINX Ingress Controller aus dem veralteten &quot;stabilen&quot; Repository helfen kann.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/\" \/>\n<meta property=\"og:site_name\" content=\"JFrog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/artifrog\" \/>\n<meta property=\"article:published_time\" content=\"2021-04-30T11:01:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-09-22T11:02:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17172507\/1200_628.jpg\" \/>\n<meta name=\"author\" content=\"giannit\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"\u00dcbergang von NGINX Helm-Diagrammen \u00fcber ChartCenter\" \/>\n<meta name=\"twitter:description\" content=\"Erfahren Sie, wie JFrog ChartCenter Ihnen bei der Migration auf neue Helm-Diagramme f\u00fcr NGINX Ingress Controller aus dem veralteten &quot;stabilen&quot; Repository helfen kann.\" \/>\n<meta name=\"twitter:creator\" content=\"@jfrog\" \/>\n<meta name=\"twitter:site\" content=\"@jfrog\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"giannit\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/\"},\"author\":{\"name\":\"giannit\",\"@id\":\"https:\/\/jfrog.com\/de\/#\/schema\/person\/b554ace14b37da5eed75bbfc7dd1c1af\"},\"headline\":\"Migrieren Sie NGINX aus dem &quot;stabilen&quot; Helm-Diagramm-Repository mit ChartCenter\",\"datePublished\":\"2021-04-30T11:01:56+00:00\",\"dateModified\":\"2021-09-22T11:02:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/\"},\"wordCount\":953,\"publisher\":{\"@id\":\"https:\/\/jfrog.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17172804\/203_148.jpg\",\"keywords\":[\"kubernetes\",\"Helm-Charts\",\"chartcenter\"],\"inLanguage\":\"de-DE\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/\",\"url\":\"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/\",\"name\":\"Wie man NGINX von \\\"stabilen\\\" Helm-Diagrammen migriert | JFrog ChartCenter\",\"isPartOf\":{\"@id\":\"https:\/\/jfrog.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17172804\/203_148.jpg\",\"datePublished\":\"2021-04-30T11:01:56+00:00\",\"dateModified\":\"2021-09-22T11:02:27+00:00\",\"description\":\"Erfahren Sie, wie JFrog ChartCenter Ihnen bei der Migration auf neue Helm-Diagramme f\u00fcr NGINX Ingress Controller aus dem veralteten \\\"stabilen\\\" Repository helfen kann.\",\"breadcrumb\":{\"@id\":\"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/#breadcrumb\"},\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de-DE\",\"@id\":\"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/#primaryimage\",\"url\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17172804\/203_148.jpg\",\"contentUrl\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17172804\/203_148.jpg\",\"width\":203,\"height\":148,\"caption\":\"Blog\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jfrog.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migrieren Sie NGINX aus dem &quot;stabilen&quot; Helm-Diagramm-Repository mit ChartCenter\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jfrog.com\/de\/#website\",\"url\":\"https:\/\/jfrog.com\/de\/\",\"name\":\"JFrog\",\"description\":\"Deliver Trusted Software Releases at Speed and Scale\",\"publisher\":{\"@id\":\"https:\/\/jfrog.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jfrog.com\/de\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de-DE\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jfrog.com\/de\/#organization\",\"name\":\"JFrog\",\"url\":\"https:\/\/jfrog.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de-DE\",\"@id\":\"https:\/\/jfrog.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg\",\"contentUrl\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg\",\"width\":74,\"height\":73,\"caption\":\"JFrog\"},\"image\":{\"@id\":\"https:\/\/jfrog.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/artifrog\",\"https:\/\/x.com\/jfrog\",\"https:\/\/www.linkedin.com\/company\/455737\",\"https:\/\/www.youtube.com\/channel\/UCh2hNg76zo3d1qQqTWIQxDg\",\"https:\/\/www.wikidata.org\/wiki\/Q98608948\"],\"description\":\"We set out on our Liquid Software journey in 2008, with the mission to transform the way enterprises manage and release software updates. The world expects software to update continuously, securely, non-intrusively and without user intervention. This hyper-connected experience can only be enabled by automation with an end-to-end DevOps platform and a binary-centric focus. With this in mind, we\u2019ve developed the JFrog Platform, ushering in a new era of DevOps and DevSecOps standards that power continuous updates. More than a decade after our founding, with thousands of customers and millions of users globally, JFrog has become the \u201cDatabase of DevOps\u201d and the de-facto standard in release and update management.\",\"legalName\":\"Jfrog, Inc.\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"1001\",\"maxValue\":\"5000\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jfrog.com\/de\/#\/schema\/person\/b554ace14b37da5eed75bbfc7dd1c1af\",\"name\":\"giannit\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de-DE\",\"@id\":\"https:\/\/jfrog.com\/de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/fca3c188acf34ea94b72429eb16d496a8d0b50af476289bb5f51c8283e5c5b1c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/fca3c188acf34ea94b72429eb16d496a8d0b50af476289bb5f51c8283e5c5b1c?s=96&d=mm&r=g\",\"caption\":\"giannit\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Wie man NGINX von \"stabilen\" Helm-Diagrammen migriert | JFrog ChartCenter","description":"Erfahren Sie, wie JFrog ChartCenter Ihnen bei der Migration auf neue Helm-Diagramme f\u00fcr NGINX Ingress Controller aus dem veralteten \"stabilen\" Repository helfen kann.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/posts\/81790","og_locale":"de_DE","og_type":"article","og_title":"\u00dcbergang von NGINX Helm-Diagrammen \u00fcber ChartCenter","og_description":"Erfahren Sie, wie JFrog ChartCenter Ihnen bei der Migration auf neue Helm-Diagramme f\u00fcr NGINX Ingress Controller aus dem veralteten \"stabilen\" Repository helfen kann.","og_url":"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/","og_site_name":"JFrog","article_publisher":"https:\/\/www.facebook.com\/artifrog","article_published_time":"2021-04-30T11:01:56+00:00","article_modified_time":"2021-09-22T11:02:27+00:00","og_image":[{"url":"https:\/\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17172507\/1200_628.jpg"}],"author":"giannit","twitter_card":"summary_large_image","twitter_title":"\u00dcbergang von NGINX Helm-Diagrammen \u00fcber ChartCenter","twitter_description":"Erfahren Sie, wie JFrog ChartCenter Ihnen bei der Migration auf neue Helm-Diagramme f\u00fcr NGINX Ingress Controller aus dem veralteten \"stabilen\" Repository helfen kann.","twitter_creator":"@jfrog","twitter_site":"@jfrog","twitter_misc":{"Written by":"giannit","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/#article","isPartOf":{"@id":"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/"},"author":{"name":"giannit","@id":"https:\/\/jfrog.com\/de\/#\/schema\/person\/b554ace14b37da5eed75bbfc7dd1c1af"},"headline":"Migrieren Sie NGINX aus dem &quot;stabilen&quot; Helm-Diagramm-Repository mit ChartCenter","datePublished":"2021-04-30T11:01:56+00:00","dateModified":"2021-09-22T11:02:27+00:00","mainEntityOfPage":{"@id":"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/"},"wordCount":953,"publisher":{"@id":"https:\/\/jfrog.com\/de\/#organization"},"image":{"@id":"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/#primaryimage"},"thumbnailUrl":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17172804\/203_148.jpg","keywords":["kubernetes","Helm-Charts","chartcenter"],"inLanguage":"de-DE"},{"@type":"WebPage","@id":"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/","url":"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/","name":"Wie man NGINX von \"stabilen\" Helm-Diagrammen migriert | JFrog ChartCenter","isPartOf":{"@id":"https:\/\/jfrog.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/#primaryimage"},"image":{"@id":"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/#primaryimage"},"thumbnailUrl":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17172804\/203_148.jpg","datePublished":"2021-04-30T11:01:56+00:00","dateModified":"2021-09-22T11:02:27+00:00","description":"Erfahren Sie, wie JFrog ChartCenter Ihnen bei der Migration auf neue Helm-Diagramme f\u00fcr NGINX Ingress Controller aus dem veralteten \"stabilen\" Repository helfen kann.","breadcrumb":{"@id":"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/#breadcrumb"},"inLanguage":"de-DE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/"]}]},{"@type":"ImageObject","inLanguage":"de-DE","@id":"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/#primaryimage","url":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17172804\/203_148.jpg","contentUrl":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2020\/08\/17172804\/203_148.jpg","width":203,"height":148,"caption":"Blog"},{"@type":"BreadcrumbList","@id":"https:\/\/jfrog.com\/de\/blog\/migrate-nginx-from-stable-helm-charts-with-chartcenter\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jfrog.com\/de\/"},{"@type":"ListItem","position":2,"name":"Migrieren Sie NGINX aus dem &quot;stabilen&quot; Helm-Diagramm-Repository mit ChartCenter"}]},{"@type":"WebSite","@id":"https:\/\/jfrog.com\/de\/#website","url":"https:\/\/jfrog.com\/de\/","name":"JFrog","description":"Deliver Trusted Software Releases at Speed and Scale","publisher":{"@id":"https:\/\/jfrog.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jfrog.com\/de\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de-DE"},{"@type":"Organization","@id":"https:\/\/jfrog.com\/de\/#organization","name":"JFrog","url":"https:\/\/jfrog.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de-DE","@id":"https:\/\/jfrog.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg","contentUrl":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg","width":74,"height":73,"caption":"JFrog"},"image":{"@id":"https:\/\/jfrog.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/artifrog","https:\/\/x.com\/jfrog","https:\/\/www.linkedin.com\/company\/455737","https:\/\/www.youtube.com\/channel\/UCh2hNg76zo3d1qQqTWIQxDg","https:\/\/www.wikidata.org\/wiki\/Q98608948"],"description":"We set out on our Liquid Software journey in 2008, with the mission to transform the way enterprises manage and release software updates. The world expects software to update continuously, securely, non-intrusively and without user intervention. This hyper-connected experience can only be enabled by automation with an end-to-end DevOps platform and a binary-centric focus. With this in mind, we\u2019ve developed the JFrog Platform, ushering in a new era of DevOps and DevSecOps standards that power continuous updates. More than a decade after our founding, with thousands of customers and millions of users globally, JFrog has become the \u201cDatabase of DevOps\u201d and the de-facto standard in release and update management.","legalName":"Jfrog, Inc.","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"1001","maxValue":"5000"}},{"@type":"Person","@id":"https:\/\/jfrog.com\/de\/#\/schema\/person\/b554ace14b37da5eed75bbfc7dd1c1af","name":"giannit","image":{"@type":"ImageObject","inLanguage":"de-DE","@id":"https:\/\/jfrog.com\/de\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/fca3c188acf34ea94b72429eb16d496a8d0b50af476289bb5f51c8283e5c5b1c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fca3c188acf34ea94b72429eb16d496a8d0b50af476289bb5f51c8283e5c5b1c?s=96&d=mm&r=g","caption":"giannit"}}]}},"_links":{"self":[{"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/posts\/81790","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/users\/140"}],"replies":[{"embeddable":true,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/comments?post=81790"}],"version-history":[{"count":1,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/posts\/81790\/revisions"}],"predecessor-version":[{"id":81791,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/posts\/81790\/revisions\/81791"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/media\/63202"}],"wp:attachment":[{"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/media?parent=81790"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/categories?post=81790"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jfrog.com\/de\/wp-json\/wp\/v2\/tags?post=81790"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}