Une fois qu'une nouvelle version de Kubernetes est sortie, vous pouvez mettre à niveau la version Kubernetes exécutée sur les nœuds control plane et les nœuds de travail dans un cluster.
Mettre à niveau notre intégration Kubernetes
Notre intégration Kubernetes est en cours de développement actif et nous publions régulièrement des mises à jour, qui incluent le débogage, de nouvelles fonctionnalités et la prise en charge des nouvelles versions Kubernetes et des fournisseurs cloud . Nous vous recommandons fortement de mettre à jour régulièrement votre intégration Kubernetes pour obtenir la meilleure expérience.
Mise à niveau à l'aide de l'installation guidée et de Helm
Afin de mettre à jour une installation qui a été lancée à l'aide de la commande Helm fournie par le guide d'installation, suivez le processus et exécutez à nouveau la commande Helm . Cela extraira la nouvelle version du graphique et ses dépendances et la mettra à niveau vers la dernière version.
Si vous souhaitez mettre à niveau manuellement votre intégration Kubernetes installée via Helm :
Mettre à jour le référentiel de cartes locales :
bash$helm repo updateMettez à jour la sortie en exécutant la commande
helm upgrade --install ...
appropriée de la section ci-dessus :bash$helm upgrade --install newrelic-bundle newrelic/nri-bundle \>--namespace newrelic --create-namespace \>-f values-newrelic.yaml
Mise à niveau à l'aide de l'installation guidée et des manifestes simples
Conseil
Nous vous encourageons à déployer notre intégration à l’aide de Helm, car il fournit un chemin de mise à niveau plus propre par rapport à l’utilisation directe de manifestes.
Si vous avez utilisé des manifestes personnalisés au lieu de Helm :
Tout d’abord, supprimez l’ancienne installation :
bash$kubectl delete -f previous-manifest-file.ymlProcédez à nouveau à l’installation guidée. Cela générera un ensemble mis à jour de manifestes que vous pourrez déployer à l'aide de :
bash$kubectl apply -f manifest-file.yml
Nous vous déconseillons d'appliquer une nouvelle version du fichier manifeste sans d'abord supprimer la précédente, car cela pourrait laisser des composants restants dans votre cluster.
Si vous avez besoin d'un moyen avancé pour créer votre manifeste, créez-le à l'aide de Helm.
Mettre à niveau le nri-bundle
Voici quelques problèmes que vous pouvez rencontrer lors de la mise à niveau de votre nri-bundle
, ainsi que la manière de les résoudre.
Sélecteurs d'étiquettes modifiés
Lors de la mise à niveau vers la nouvelle version de kube-state-metrics
(ou KSM), vous pouvez voir une erreur comme celle-ci :
v1.LabelSelector{MatchLabels:map[string]string{"app.kubernetes.io/instance":"newrelic", "app.kubernetes.io/name":"kube-state-metrics"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
Le sélecteur d’étiquette dans la nouvelle version du graphique a changé, mais le nom du déploiement n’a pas changé. Par conséquent, pour effectuer la mise à niveau, vous devez supprimer le déploiement kube-state-metrics
avant d'exécuter helm upgrade
, ou désinstaller complètement puis réinstaller l'intégration.
Valeurs obsolètes
Si vous rencontrez le log suivant :
warning: skipped value for nri-bundle.kube-state-metrics.collectors: Not a table.Error: UPGRADE FAILED: template: nri-bundle/charts/kube-state-metrics/templates/role.yaml:18:6: executing "nri-bundle/charts/kube-state-metrics/templates/role.yaml" at <has "certificatesigningrequests" $.Values.collectors>: error calling has: Cannot find has on type map
Cela est dû au fait que les valeurs du graphique KSM ont changé et que la carte du collecteur a été modifiée en une liste de collecteurs. La liste des collecteurs n'est plus nécessaire et a été supprimée des nouvelles valeurs.
Si vous les avez toujours dans vos valeurs Helm statiques, ou si vous utilisez l'indicateur --reuse-values
, vous devez d'abord supprimer les valeurs suivantes :
kube-state-metrics: collectors: certificatesigningrequests: true ingresses: false
Ressources Kubernetes non prises en charge
Lors de la mise à niveau de nri-bundle
, vous pouvez voir une erreur indiquant qu'une certaine ressource n'est pas prise en charge par une API Kubernetes spécifique. Par exemple,
Error: UPGRADE FAILED: unable to build kubernetes objects from current release manifest: resource mapping not found for name: "newrelic-bundle-nri-metadata-injection" namespace: "" from "": no matches for kind "MutatingWebhookConfiguration" in version "admissionregistration.k8s.io/v1beta1"
Cela signifie que la ressource Kubernetes correspondante n'est pas prise en charge par l'API Kubernetes correspondante. Vous pouvez suivre les instructions du référentiel (repository) du pluginHelm mapkubeapis pour résoudre l'erreur.