Migrer NGINX à partir du dépôt«stable»图表Helm avec ChartCenter

MISE À JOUR: depuis le 1er mai 2021, le dépôt central ChartCenter a été mis hors service et toutes les fonctionnalités sont obsolètes。祝你好运,为你的中心服务L 'article de blog sur la dépréciation des centres

Au cours des quatre dernières années, quiconque souhaitait déployer le contrôleur Ingress NGINX pour Kubernetes trouvait son chart Helm officiel。nginx-ingress丹斯勒dépôt稳定的géré par le project Helm。

赛特époque est révolue。Et pas seumlement pour NGINX, le contrôleur Ingress le plus populaire utilisé comme proxy inverse Et équilibreur de charge, mais pour toutes les应用K8s开源。

Avec l 'avènement de Helm 3,le project Helm déprécie les dépôts稳定的À 2019年11月派对,全新的盛宴être accepté dans稳定的Car les propriétaires de图表有效的une过渡des dépôts个人。赛特période德过渡est维护者terminée,莱斯dépôts -稳定的ont été retirés de la liste de Helm Hub, et seront officiellement obsolètes en novembre prochain。

问' ste -ce que signifie pour les installators et les responsible des déploiements NGINX ?倒commencer, le project NGINX maintient désormais un新表ingress-nginxdans les dépôts GitHub pour Kubernetes。Toute personne qui install ou met à jour un déploiement de NGINX入口控制器doit désormais utiliser le chart de ce dépôt。

Même si le nouveau chart déploie actuellement la même version de l 'application NGINX, il n 'est pas identique au chart dans稳定。.Cela nécessite quelques调整lors de la mise à jour d 'une安装NGINX就地avec l nouveau图表。

Voyons ce que cela implque, et comment JFrog ChartCenter peut vous aider à la transition。

Un dépôt central Helm

L 'ensemble稳定的法国官方应用官方图表人民日常图表être trouvés丹麦dépôt中央。Il suisit d 'ajouter le dépôt稳定的au客户端

Helm repo添加稳定https://kubernetes-charts.storage.googleapis.com/

À partir de ce dépôt稳定的独一无二,vous pouviez déployer en toute con未婚夫nginx-ingressen utilant le dernier chart Helm approuvé par l 'auteur。

Comme le dépôt稳定的est pratiement obsolète, il n 'est + disponible en tant que source unique pour les charts Helm connus。你需要维修人员ingress-nginx个人元素客户

Helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx

Sans un dépôt central, vous devez exécuter unHelm repo添加独特的支票fois que vous devez mettre à jour une application K8s différente。

存在-t-il un meilleur moyen ?

入口NGINX控制器而不是ChartCenter

JFrog ChartCenter est un dépôt中央gratuit舵舵qui a été conçu pour aider la communauté Helm à trouver des charts immuables, sécurisés et fiables, et à disposer d 'une même分析pour proxyer tous les charts à partir d 'un seul emplacement。Il peut être utilisé comme undépôt掌舵中央à客户端掌门évite我们的主人dépôts公众掌门,我们永远在使用我们的灵魂。

Grâce à ChartCenter,加上3万图表Helm versionnés sont disponibles, et de nombreux chart d 'applications y comppris pour le contrôleur NGINX Ingress - sont présentés sur sa page d 'accueil afin que vous puissiez les localiser facility。

Grâce à la recherche de ChartCenter, nous pouvons trouver le chart稳定的nginx-ingress

Nous pouvons également本地化的实际图表ingress-nginxdans图表中心:

使用图表中心

Une fois que nous avons ajouté ChartCenter à notre client Helm, nous pouvons l 'utiliser comme dépôt central pour tous nos charts Helm, y compis les deux dépôts NGINX que nous utiliserons dans notre démonstration。

Étape 1: Ajouter ChartCenter en tant que dépôt Helm

配置votre客户端Helm pour qu 'il utilise le dépôt ChartCenter comme emplacement central独特的pour消费者les图表à partir de:

Helm repo添加中心https://repo.chartcenter.ioHelm回购更新

Étape 2: utilization de ChartCenter en tant que dépôt

维护人员,vérifions les图表nginx-ingressingress-nginxà partir du客户端掌舵:

Helm search repo center/stable/nginx-ingressNOM VERSION DU CHART VERSION DE L 'APP DESCRIPTION center/stable/nginx- Ingress 1.41.2 v0.34.1 Un nginx Ingress controller qui utiluse ConfigMap…$Helm search repo center/kubernetes-ingress-nginx/ingress-nginxNOM VERSION DU CHART VERSION DE L 'APP DESCRIPTION center/ Kubernetes - Ingress - NGINX / Ingress - NGINX 2.11.2 0.34.1 Ingress controller pour Kubernetes à L 'aide DE NGINX a…

Bien, nous voyons la même version de charts que dans ChartCenter UI。

Et ici, vous pouvez voir à quel point il est plus facile d 'utiliser un dépôt Helm中央pour des charts provant de différents dépôts Helm。

安装舵

倾倒测试仪d 'abord la mise à niveau, nous devons安装un dépôtnginx-ingress.Je vais utiliser un petit脚本shellnginx-ingress.shQui crée UN fichier de valeurs de replacement, et installation ensuitenginx-ingress

nginx-ingress.sha un nom et une version de chart, et une IP statique pour l ' équilibreur de charge:

#!/bin/bash NOM_CHART = "center/stable/nginx-ingress" VERSION_CHART = "1.41.2" VERSION = nginx-ingress ESPACE DE NOMS = nginx-ingress FICHER_VALEURS = nginx-ingress. "yaml IP_STATIQUE_LB = 35.197.192.35 generateValues() {cat << EOF > "${VALUES_FILE}" # Valeurs de remplacement pour nginx-ingress contrôleur: ## Utiliser les ports hôtes 80 et 443 daemonset: Utiliser le port de l 'hôte: vrai type: daemonset service: ## Définir l ' address IP statique pour LoadBalancer IP équilibreur de charge: ${LB_STATIC_IP} Politique de flow externe: locale stats: activées: vrai mesures: activées:vrai Fin de fichier} génère des valeurs kubectl create ns nginx-ingress || true écho helm upgrade——install ${RELEASE} -n ${NAMESPACE} ${CHART_NAME}——version ${CHART_VERSION} -f ${VALUES_FILE} écho kubectl -n ${NAMESPACE} get all

Executonsnginx-ingress.sh把安装程序nginx-ingress

。/ nginx-ingress.sh命名空间/nginx-ingress创建了La版本«nginx-ingress»Installez-la现在。NOM: nginx-ingress DERNIER DÉPLOIEMENT: Lun 10 août 17:27:13 2020 ESPACE DE NOM: nginx-ingress ÉTAT: déployé RÉVISION:1 SUITE DE TESTS: aucune REMARQUES: Le contrôleur nginx-ingress a été installé。La disponibilité de l 'adresse IP LoadBalancer peut prendre quelques minutes。你们可以匹配我en执行者«kubectl——名称空间nginx-ingress宽服务- o - w nginx-ingress-controller»联合国为例d 'Ingress,利用勒controleur:版本d被:扩展/ v1beta1类型:入口metadonnees:注释:kubernetes.io / ingress.class: nginx笔名:例埃斯佩斯de提名:foo规范:regle: - hote: www.example.com http: chemins: -后端:笔名服务:exampleService港德服务:80 chemin:/ # Cette section n 'est requise que si TLS doit être activé pour Ingress TLS: - hôtes: - www.example.com nom secret:示例- TLS si TLS est activé pour Ingress, un secret content le certificat et la clé doit également être fourni: Version d 'API: v1 type: secret métadonnées: nom:示例- TLS espace de names: foo données: cert TLS: clé TLS: type: kubernetes。io / tls笔名成衣的状况REDEMARRAGES ANTERIORITE舱/ nginx-ingress-controller-rrsl9 0/1 ContainerCreating 0 1 s舱/ nginx-ingress-default-backend-5b967cf596-wrrfl 0/1 ContainerCreating 0 1 s笔名类型IP-CLUSTER IP-EXTERNE端口(s) ANTERIORITE服务/ nginx-ingress-controller loadbalance 10.242.2.213 80:30643 / TCP, 443:31622 / TCP 2 s服务/ nginx-ingress-controller-metrics IP集群10.242.10.112 9913 / TCP 2 s服务/ nginx-ingress-default-backend IP集群10.242.11.172 80 / TCP 2 s笔名希望达成ACTUEL PRÊT À JOUR disponble SÉLECTEUR DE nouluds ANTÉRIORITÉ daemonset。apps/nginx-ingress-controller 1 1 0 1 0 3 s NOM PRÊT À JOUR DISPONIBLE ANTÉRIORITÉ deployment。apps/nginx-ingress-default-backend 0/1 1 0 2 s NOM SOUHAITÉ ACTUEL PRÊT ANTÉRIORITÉ replicaset. confApps /nginx-ingress-default-backend-5b967cf596 1 1 0 2 s

Et vérifions les pods Et le service:

Kubectl -n nginx-ingress get podsNOM PRÊT ÉTAT REDÉMARRAGES ANTÉRIORITÉ nginx-ingress-controller-rrsl9 1/1 Exécution 0 78 s nginx-ingress-default-backend-5b967cf596-wrrfl 1/1 Exécution 0 78 s $Kubectl -n nginx-ingress get SVCNOM TYPE IP- Cluster IP- externe PORT(S) ANTÉRIORITÉ nginx-ingress-controller LoadBalancer 10.242.2.213 35.197.192.35 80:30643/TCP,443:31622/TCP 89 S nginx-ingress-controller-metrics IP Cluster 10.242.10.112 9913/TCP 89 S nginx-ingress-default-backend IP Cluster 10.242.11.172 80/TCP 89 S

Bien, le pod NGINX入口控制器est en place, et son service s ' est vu attribuer une IP external par l ' équilibreur de charge。

好的,nous avons réussi à installer le chartnginx-ingress激情à sa mise à jour。

Mise à niveau vers le chart ingress-nginx Helm

论文德米特à尼沃NGINX输入控制器使用的图表加actuel。

Encore une fois, nous allons utiliser un script shell cette fois avec le nom différentingress-nginx.sh
ingress-nginx.sha un nom et une version de chart différents, ainsi que le même nom de version Helm et la même address IP statique pour l ' équilibreur de charge。

#!/bin/bash NOM_CHART = "center/kubernetes-ingress-nginx/ingress-nginx" VERSION_CHART = "2.11.1" VERSION = nginx-ingress ESPACE DE NOMS = nginx-ingress FICHER_VALEURS = ingress-nginx. /bin/bash NOM_CHART = "center/kubernetes-ingress-nginx "yaml IP_STATIQUE_LB = 35.197.192.35 generateValues(){猫< < EOF > " $ {VALUES_FILE} " #值de remplacement对ingress-nginx controleur: # #我们les港口人家80到443端口de l 'hote:活跃:真的类型:DaemonSet服务:# #值l本IP statique倒loadbalance IP equilibreur de费用:$ {LB_STATIC_IP} de马路外来的政治:语言环境统计数据:活跃:真的措施:积极:真的admissionWebhooks:到:人造defaultBackend:活跃:vrai Fin de fichier} génère des valeurs écho helm upgrade——install ${RELEASE} -n ${NAMESPACE} ${CHART_NAME}——version ${CHART_VERSION} -f ${VALUES_FILE} écho kubectl -n ${NAMESPACE} get all

ingress-nginx.shPrésente quelques différences par rapport ànginx-ingress.sh

contrôleur: ## Utiliser les ports hôtes 80 et 443 daemonset: Utiliser le port de l 'hôte: vrai

Comme某些价值été modifiées à:

contrôleur: ## Utiliser les ports hôtes 80 et 443 port de l 'hôte: activé: vrai type: DaemonSet

Et d’autres ont été ajoutées:

admissionWebhooks: activé: faux defaultBackend: activé: vrai

Dans ce scénario de mise à niveau, nous n 'utilisons pasadmissionWebhooksDonc nous le désactivons, et nous activonsdefaultBackendComme dans le chartnginx-ingressIl est activé par défaut。Et bien sûr,你的pouvez修饰语les valeurs en function de vos besoins。

Executonsingress-nginx.sh倒梅特雷à妮沃nginx-ingress

La版本«nginx-ingress»été mise à niveau。好运!NOM: nginx-ingress DERNIER DÉPLOIEMENT: Lun 10 août 18:00:31 2020 ESPACE DE NOM: nginx-ingress ÉTAT: déployé RÉVISION: 2 SUITE DE TESTS: aucune REMARQUES: Le contrôleur ingress-nginx a été installé。La disponibilité de l 'adresse IP LoadBalancer peut prendre quelques minutes。Vous pouvez vérifier l ' état en exécutant«kubectl——namespace nginx-ingress get services -o wide -w nginx-ingress- nginx-controller»Un示例d ' ingress qui utilise le contrôleur: Version d ' api: network .k8s。io / v1beta1类型:入口metadonnees:注释:kubernetes.io / ingress.class: nginx笔名:例埃斯佩斯de提名:foo规范:regle: - hote: www.example.com http: chemins: -后端:笔名服务:exampleService港德服务:80 chemin: / #这个部分n是requise如果TLS doit可能主动倒入口TLS:——人家:www.example.com以前的秘密:exemple-tls si TLS est活跃倒入口,联合国秘密contenant le证书等la cle doit,合理可能fourni:api版本:v1 type: secret métadonnées: nom: example -tls espace de names: foo données: cert tls: clé tls: type: kubernetes。io / tls笔名成衣的状况REDEMARRAGES ANTERIORITE舱/ nginx-ingress-controller-rrsl9 1/1鳍33 d 'execution 0 m舱/ nginx-ingress-default-backend-5b967cf596-wrrfl 0/1鳍33 d 'execution 0 m舱/ En attente nginx-ingress-ingress-nginx-controller-f9ztr 0/1 0 5 s舱/ nginx -入口进入- nginx defaultbackend - 845 - f7cfd46 - 56 - grw 1/1执行0 5 s笔名类型IP-CLUSTER IP-EXTERNE端口(s) ANTERIORITE服务/ nginx-ingress-controller loadbalance 10.242.2.213 35.197.192.35 80:30643 / TCP, 443:31622 / TCP 33米service/nginx-ingress-ingress-nginx-controller LoadBalancer 10.242.13.184 80:30601/TCP,443:30644/TCP 6 s service/nginx-ingress-ingress-nginx-controller-metrics IP Cluster 10.242.12.190 9913/TCP 6 s service/nginx-ingress-ingress-nginx-defaultbackend IP Cluster 10.242.11.112 80/TCP 5 s NOM SOUHAITÉ ACTUEL PRÊT À JOUR disponble SÉLECTEUR DE nounuds ANTÉRIORITÉ daemonset。apps/nginx-ingress-ingress-nginx-controller 1 1 0 1 0 6 s NOM PRÊT À JOUR DISPONIBLE ANTÉRIORITÉ deployment。apps/nginx-ingress-ingress-nginx-defaultbackend 1/1 1 1 6 s NOM SOUHAITÉ ACTUEL PRÊT ANTÉRIORITÉ replicaset。Apps /nginx-ingress-ingress-nginx-defaultbackend-845f7cfd46 1 1 1 6 s

维护人员,vérifions les pods et le服务:

Kubectl -n nginx-ingress get podsNOM PRÊT ÉTAT REDÉMARRAGES ANTÉRIORITÉ nginx-ingress-ingress-nginx-controller-f9ztr 0/1 Exécution 0 34 s nginx-ingress- nginx-defaultbackend-845f7cfd46-56grw 1/1 Exécution 0 34 s $Kubectl -n nginx-ingress get SVCNOM TYPE IP- Cluster IP- externe PORT(S) ANTÉRIORITÉ nginx-ingress-controller LoadBalancer 10.242.2.213 35.197.192.35 80:30643/TCP,443:31622/TCP 34m nginx-ingress-ingress-nginx-controller LoadBalancer 10.242.13.184 80:30601/TCP,443:30644/TCP 40 S nginx-ingress-ingress-nginx-controller-metrics IP Cluster 10.242.12.190 9913/TCP 40 S nginx-ingress- nginx-defaultbackend IP Cluster 10.242.11.112 80/TCP 39 S

你的眼睛是我的荚壳à今天和今天是两个服务,旧的和新的。

ExecutonsKubectl -n nginx-ingress get SVC再来一个:

Kubectl -n nginx-ingress get SVCNOM TYPE IP- Cluster IP- externe PORT(S) ANTÉRIORITÉ nginx-ingress-ingress-nginx-controller LoadBalancer 10.242.13.184 35.197.192.35 80:30601/TCP,443:30644/TCP 3m26 S nginx-ingress-ingress-nginx-controller-metrics IP Cluster 10.242.12.190 9913/TCP 3m26 S nginx-ingress- nginx-defaultbackend IP Cluster 10.242.11.112 80/TCP 3m 25 S

,旧服务été supprimé et le nouveau créé juste en exécutant执掌升级我不能用我的作品,我不能用我的作品。我知道,我们代替你服务entraîne une sure indisponibilité,新车équilibreur de charge doit être créé倒新服务。

谢谢,再见

阿塞兹很容易,不是吗?Un grand merci aux responsible du chart NGINX入口控制器pour une mise à jour aussi transparente entre deux charts différents !

有机会,有过渡dépôts个人,有机会,有机会,有机会,有机会,有机会。L 'utilisation德ChartCenteren tant que dépôt central de charts Helm peut vous assistant à effectuer ces mises à jour。

Joyeux安格尔