Helm-mapkubeapis remplace les API Kubernetes obsolètes ou supprimées dans les métadonnées d'une version Helm par des API prises en charge. Cette approche réduit la charge de travail et les risques, garantissant ainsi la stabilité de votre service. Cette rubrique explique comment mettre à jour la version de l'API d'une ressource Kubernetes avec helm-mapkubeapis pour effectuer une mise à niveau sur place.
Scénarios
À partir de Kubernetes 1.22, plusieurs nouvelles versions d'API sont publiées pour les objets de ressources Kubernetes. Lors de la mise à jour des charts Helm, les messages d'erreur suivants peuvent s'afficher. Pour les corriger, mettez à jour les versions d'API des ressources Kubernetes.
-
rendered manifests contain a new resource that already exists. Unable to continue with update: existing resource conflict: kind: MutatingWebhookConfiguration, namespace: , name: mse-pilot-ack-mse-pilot -
Error: UPGRADE FAILED: rendered manifests contain a resource that already exists. Unable to continue with update: MutatingWebhookConfiguration "ack-node-local-dns-admission-controller" in namespace "" exists and cannot be imported into the current release: invalid ownership metadata; label validation error: missing key "app.kubernetes.io/managed-by": must be set to "Helm"; annotation validation error: missing key "meta.helm.sh/release-name": must be set to "ack-node-local-dns"; annotation validation error: missing key "meta.helm.sh/release-namespace": must be set to "kube-system"
Prérequis
Installez Go 1.13 ou une version ultérieure. Pour plus d'informations, consultez la page Go 1.13.
Étape 1 : Télécharger et installer helm-mapkubeapis
Exécutez la commande suivante pour télécharger et installer helm-mapkubeapis :
mkdir -p ${GOPATH}/src/github.com
cd $_
git clone git@github.com:helm/helm-mapkubeapis.git
cd helm-mapkubeapis
make
export HELM_LINTER_PLUGIN_NO_INSTALL_HOOK=true
helm plugin install <your_path>/helm-mapkubeapis
Étape 2 : Mettre à jour la version de l'API
Cet exemple décrit comment mettre à jour la version de l'API de la ressource MutatingWebhookConfiguration pour la version ack-node-local-dns.
-
Exécutez la commande suivante pour consulter l'historique de la version de l'API de la ressource MutatingWebhookConfiguration :
vim ${GOPATH}/src/github.com/helm-mapkubeapis/config/Map.yamlRésultat attendu :
- deprecatedAPI: "apiVersion: admissionregistration.k8s.io/v1beta1\nkind: MutatingWebhookConfiguration" newAPI: "apiVersion: admissionregistration.k8s.io/v1\nkind: MutatingWebhookConfiguration" deprecatedInVersion: "v1.17" removedInVersion: "v1.20"Le résultat indique que la version de l'API de la ressource MutatingWebhookConfiguration passe de v1beta1 à v1 dans Kubernetes 1.20 et les versions ultérieures.
-
Exécutez la commande suivante pour vérifier si la version de l'API dans la version ack-node-local-dns doit être mise à jour :
helm mapkubeapis ack-node-local-dns --namespace kube-system --dry-runRésultat attendu :
2022/01/18 14:21:57 NOTE: This is in dry-run mode, the following actions will not be executed. 2022/01/18 14:21:57 Run without --dry-run to take the actions described below: 2022/01/18 14:21:57 2022/01/18 14:21:57 Release 'ack-node-local-dns' will be checked for deprecated or removed Kubernetes APIs and will be updated if necessary to supported API versions. 2022/01/18 14:21:57 Get release 'ack-node-local-dns' latest version. 2022/01/18 14:21:57 Check release 'ack-node-local-dns' for deprecated or removed APIs... 2022/01/18 14:21:57 Found deprecated or removed Kubernetes API: "apiVersion: admissionregistration.k8s.io/v1beta1 kind: MutatingWebhookConfiguration" Supported API equivalent: "apiVersion: admissionregistration.k8s.io/v1 kind: MutatingWebhookConfiguration" 2022/01/18 14:21:57 Finished checking release 'ack-node-local-dns' for deprecated or removed APIs. 2022/01/18 14:21:57 Deprecated or removed APIs exist, updating release: ack-node-local-dns. 2022/01/18 14:21:57 Map of release 'ack-node-local-dns' deprecated or removed APIs to supported versions, completed successfully.La mention
Found deprecated or removed Kubernetes APIapparaît dans le résultat. Cela indique que la version de l'API doit être mise à jour. -
Exécutez la commande suivante pour mettre à jour la version de l'API de la ressource MutatingWebhookConfiguration de v1beta1 vers v1.
helm mapkubeapis ack-node-local-dns --namespace kube-systemRésultat attendu :
2022/01/18 14:31:38 Release 'ack-node-local-dns' will be checked for deprecated or removed Kubernetes APIs and will be updated if necessary to supported API versions. 2022/01/18 14:31:38 Get release 'ack-node-local-dns' latest version. 2022/01/18 14:31:38 Check release 'ack-node-local-dns' for deprecated or removed APIs... 2022/01/18 14:31:38 Found deprecated or removed Kubernetes API: "apiVersion: admissionregistration.k8s.io/v1beta1 kind: MutatingWebhookConfiguration" Supported API equivalent: "apiVersion: admissionregistration.k8s.io/v1 kind: MutatingWebhookConfiguration" 2022/01/18 14:31:38 Finished checking release 'ack-node-local-dns' for deprecated or removed APIs. 2022/01/18 14:31:38 Deprecated or removed APIs exist, updating release: ack-node-local-dns. 2022/01/18 14:31:38 Set status of release version 'ack-node-local-dns.v9' to 'superseded'. 2022/01/18 14:31:38 Release version 'ack-node-local-dns.v9' updated successfully. 2022/01/18 14:31:38 Add release version 'ack-node-local-dns.v10' with updated supported APIs. 2022/01/18 14:31:38 Release version 'ack-node-local-dns.v10' added successfully. 2022/01/18 14:31:38 Release 'ack-node-local-dns' with deprecated or removed APIs updated successfully to new version. 2022/01/18 14:31:38 Map of release 'ack-node-local-dns' deprecated or removed APIs to supported versions, completed successfully.La mention
Release 'ack-node-local-dns' with deprecated or removed APIs updated successfully to new version.apparaît dans le résultat. Cela indique que la version de l'API de la ressource MutatingWebhookConfiguration a été mise à jour de v1beta1 vers v1.