Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi.

Helm

Helm est l’outil de gestion de paquets de choix pour Kubernetes. Les charts Helm fournissent une syntaxe de templating pour les documents manifestes YAML de Kubernetes. Avec Helm, les développeurs ou les administrateurs de cluster peuvent créer des modèles configurables connus sous le nom de Charts, au lieu d’utiliser simplement des manifestes statiques. Pour plus d’informations sur la création de votre propre catalogue de Charts, consultez la documentation à https://helm.sh/docs/intro/quickstart/..

K3s ne nécessite aucune configuration spéciale pour prendre en charge Helm. Assurez-vous simplement d’avoir correctement défini le chemin kubeconfig conformément à la documentation accès au cluster.

K3s inclut un Contrôleur Helm qui gère l’installation, la mise à niveau/reconfiguration et la désinstallation des charts Helm en utilisant une définition de ressource personnalisée HelmChart (CRD). Associé à des manifestes AddOn auto-déployés, l’installation d’un chart Helm sur votre cluster peut être automatisée en créant un seul fichier sur le disque.

Utilisation du Contrôleur Helm

La Ressource Personnalisée HelmChart capture la plupart des options que vous passeriez normalement à l’outil de ligne de commande helm.

Définitions des champs HelmChart

Le champ name doit suivre les conventions de nommage des charts Helm, en plus des règles Kubernetes pour les noms et identifiants d’objets. Référez-vous à la documentation des meilleures pratiques Helm pour en savoir plus.

Champ Par défaut Description Équivalent des arguments / drapeaux Helm

metadata.name

Nom du chart Helm

NOM

spec.chart

Nom du chart Helm dans le dépôt, ou URL HTTPS complète vers l’archive du chart (.tgz)

CHART

spec.chartContent

Archive de chart encodée en Base64 .tgz - remplace spec.chart

CHART

spec.targetNamespace

valeur par défaut

Espace de noms cible du chart Helm

--namespace

spec.createNamespace

false

Créer l’espace de noms cible s’il n’est pas présent

--create-namespace

spec.version

Version du chart Helm (lors de l’installation depuis le dépôt)

--version

spec.repo

URL du dépôt du chart Helm

--repo

spec.repoCA

Vérifier les certificats des serveurs HTTPS activés en utilisant ce bundle CA. Doit être une chaîne contenant un ou plusieurs certificats CA encodés en PEM.

--ca-file

spec.repoCAConfigMap

Référence à un ConfigMap contenant des certificats CA auxquels Helm doit faire confiance. Peut être utilisé avec ou à la place de repoCA

--ca-file

spec.plainHTTP

false

Utiliser des connexions HTTP non sécurisées pour le téléchargement du chart.

--plain-http

spec.insecureSkipTLSVerify

false

Ignorer les vérifications de certificats TLS pour le téléchargement du chart.

--insecure-skip-tls-verify

spec.helmVersion

v3

Version de Helm à utiliser. Seul v3 est actuellement pris en charge.

spec.bootstrap

Faux

Définir sur True si ce chart est nécessaire pour démarrer le cluster (Cloud Controller Manager, etc)

spec.jobImage

Spécifiez l’image à utiliser lors de l’installation du chart Helm. Par exemple, rancher/klipper-helm:v0.3.0 .

spec.podSecurityContext

Personnalisé v1.PodSecurityContext pour le pod de travail Helm

spec.securityContext

Personnalisé v1.SecurityContext pour les conteneurs du pod de travail Helm

spec.backOffLimit

1000

Spécifiez le nombre de tentatives avant de considérer un travail comme échoué.

spec.timeout

300s

Délai d’attente pour les opérations Helm, sous la forme d’une chaîne de durée (300s, 10m, 1h, etc.)

--timeout

spec.failurePolicy

réinstaller

Définir sur abort dans ce cas l’opération Helm est annulée, en attendant une intervention manuelle de l’opérateur.

spec.authSecret

Référence à un Secret de type kubernetes.io/basic-auth contenant des identifiants d’authentification de base pour le dépôt de Chart.

spec.authPassCredentials

false

Transmettre des identifiants d’authentification de base à tous les domaines.

--pass-credentials

spec.dockerRegistrySecret

Référence à un Secret de type kubernetes.io/dockerconfigjson contenant des identifiants d’authentification Docker pour le registre basé sur OCI agissant comme le dépôt de Chart.

spec.set

Remplacer les valeurs par défaut simples du Chart. Celles-ci ont la priorité sur les options définies via valuesContent.

--set / --set-string

spec.valuesContent

Remplacer les valeurs par défaut complexes du Chart via le contenu du fichier YAML

--values

spec.valuesSecrets

Remplacer les valeurs complexes du chart par des références à des Secrets externes.

--values

Le contenu placé dans /var/lib/rancher/k3s/server/static/ peut être accessible anonymement via le serveur APIServer Kubernetes depuis l’intérieur du cluster. Cette URL peut être modélisée en utilisant la variable spéciale %{KUBERNETES_API}% dans le champ spec.chart. Par exemple, le composant Traefik paquet charge son Chart depuis https://%{KUBERNETES_API}%/static/charts/traefik-VERSION.tgz.

Les valeurs du Chart sont utilisées dans l’ordre suivant, de la moindre à la plus grande priorité :

  1. Valeurs par défaut du Chart

  2. HelmChart spec.valuesContent

  3. HelmChart spec.valuesSecrets dans l’ordre répertorié du nom du secret et des clés

  4. HelmChartConfig spec.valuesContent

  5. HelmChartConfig spec.valuesSecrets dans l’ordre répertorié du nom du secret et des clés

  6. HelmChart spec.set

Voici un exemple de la façon dont vous pourriez déployer Apache à partir du dépôt de Chart Bitnami, en remplaçant certaines des valeurs par défaut du Chart. Notez que la ressource HelmChart elle-même se trouve dans l’espace de noms kube-system, mais les ressources du chart seront déployées dans l’espace de noms web, qui est créé dans le même manifeste. Cela peut être utile si vous souhaitez garder vos ressources HelmChart séparées des ressources qu’elles déploient.

apiVersion: v1
kind: Namespace
metadata:
  name: web
---
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
  name: apache
  namespace: kube-system
spec:
  repo: https://charts.bitnami.com/bitnami
  chart: apache
  targetNamespace: web
  valuesContent: |-
    service:
      type: ClusterIP
    ingress:
      enabled: true
      hostname: www.example.com
    metrics:
      enabled: true

Un exemple de déploiement d’un chart Helm à partir d’un dépôt privé avec authentification :

apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
  namespace: kube-system
  name: example-app
spec:
  targetNamespace: example-namespace
  createNamespace: true
  version: v1.2.3
  chart: example-app
  repo: https://secure-repo.example.com
  authSecret:
    name: example-repo-auth
  repoCAConfigMap:
    name: example-repo-ca
  valuesContent: |-
    image:
      tag: v1.2.2
---
apiVersion: v1
kind: Secret
metadata:
  namespace: kube-system
  name: example-repo-auth
type: kubernetes.io/basic-auth
stringData:
  username: user
  password: pass
---
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: kube-system
  name: example-repo-ca
data:
  ca.crt: |-
    -----BEGIN CERTIFICATE-----
    <YOUR CERTIFICATE>
    -----END CERTIFICATE-----

Valeurs du Chart provenant des Secrets

Les valeurs du Chart peuvent être lues à partir de Secrets gérés de manière externe, au lieu de stocker les valeurs dans les champs spec.set ou spec.valuesContent. Cela doit être fait lors du passage d’informations confidentielles telles que des identifiants dans des Charts qui ne prennent pas en charge la référence à des Secrets existants via le modèle existingSecret.

Comme pour d’autres Secrets (spec.authSecret et spec.dockerRegistrySecret), les Secrets référencés dans spec.valuesSecrets doivent être dans le même espace de noms que le HelmChart.

Chaque entrée valuesSecrets répertoriée a les champs suivants :

Champ Description

name

Le nom du Secret. Requis.

touches

Liste des clés pour lire les valeurs, les valeurs sont utilisées dans l’ordre indiqué. Requis.

ignoreUpdates

Marquez ce Secret comme optionnel, et ne mettez pas à jour le Chart si le Secret change. Optionnel, par défaut false.

  • Si ignoreUpdates est défini sur false ou non spécifié, le Secret et toutes les clés listées doivent exister. Tout changement d’un Secret de valeurs référencé entraînera la mise à jour du Chart avec de nouvelles valeurs.

  • Si ignoreUpdates est défini sur true, le Secret est utilisé s’il existe lors de la création du chart, ou mis à jour en raison de tout autre changement dans les ressources associées. Les changements apportés au Secret ne provoqueront pas la mise à jour du chart.

Un exemple de déploiement d’un Helm chart utilisant un Secret existant avec deux clés :

apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
  namespace: kube-system
  name: example-app
spec:
  targetNamespace: example-namespace
  createNamespace: true
  version: v1.2.3
  chart: example-app
  repo: https://repo.example.com
  valuesContent: |-
    image:
      tag: v1.2.2
  valuesSecrets:
    - name: example-app-custom-values
      ignoreUpdates: false
      keys:
        - someValues
        - moreValues
---
apiVersion: v1
kind: Secret
metadata:
  namespace: kube-system
  name: example-app-custom-values
stringData:
  moreValues: |-
    database:
      address: db.example.com
      username: user
      password: pass
  someValues: |-
    adminUser:
      create: true
      username: admin
      password: secret

Personnalisation des composants empaquetés avec HelmChartConfig

Pour permettre de remplacer les valeurs des composants empaquetés déployés en tant que HelmCharts (comme Traefik), K3s prend en charge la personnalisation des déploiements via une ressource HelmChartConfig. La ressource HelmChartConfig doit correspondre au nom et à l’espace de noms de son HelmChart correspondant, et elle prend en charge la fourniture d’un valuesContent supplémentaire, qui est passé à la commande helm en tant que fichier de valeurs supplémentaire.

Définitions des champs HelmChartConfig

Champ Description

metadata.name

Nom du Helm chart - doit correspondre au nom de la ressource HelmChart.

spec.valuesContent

Remplacer les valeurs par défaut complexes du chart via le contenu du fichier YAML.

spec.valuesSecrets

Remplacer les valeurs par défaut complexes du chart via des Secrets externes.

spec.failurePolicy

Définir sur abort ; dans ce cas, l’opération Helm est annulée, en attendant une intervention manuelle de l’opérateur.

Les valeurs HelmChart spec.set remplacent les paramètres HelmChart et HelmChartConfig spec.valuesContent et spec.valuesSecrets, comme décrit ci-dessus.

Par exemple, pour personnaliser la configuration d’ingress de Traefik empaqueté, vous pouvez créer un fichier nommé /var/lib/rancher/k3s/server/manifests/traefik-config.yaml et le remplir avec le contenu suivant :

apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: traefik
  namespace: kube-system
spec:
  valuesContent: |-
    image:
      repository: docker.io/library/traefik
      tag: 3.3.5
    ports:
      web:
        forwardedHeaders:
          trustedIPs:
            - 10.0.0.0/8