|
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 |
| 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 |
|
spec.createNamespace |
false |
Créer l’espace de noms cible s’il n’est pas présent |
|
spec.version |
Version du chart Helm (lors de l’installation depuis le dépôt) |
|
|
spec.repo |
URL du dépôt du chart Helm |
|
|
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. |
|
|
spec.repoCAConfigMap |
Référence à un ConfigMap contenant des certificats CA auxquels Helm doit faire confiance. Peut être utilisé avec ou à la place de |
|
|
spec.plainHTTP |
false |
Utiliser des connexions HTTP non sécurisées pour le téléchargement du chart. |
|
spec.insecureSkipTLSVerify |
false |
Ignorer les vérifications de certificats TLS pour le téléchargement du chart. |
|
spec.helmVersion |
v3 |
Version de Helm à utiliser. Seul |
|
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é |
||
spec.securityContext |
Personnalisé |
||
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 ( |
|
spec.failurePolicy |
réinstaller |
Définir sur |
|
spec.authSecret |
Référence à un Secret de type |
||
spec.authPassCredentials |
false |
Transmettre des identifiants d’authentification de base à tous les domaines. |
|
spec.dockerRegistrySecret |
Référence à un Secret de type |
||
spec.set |
Remplacer les valeurs par défaut simples du Chart. Celles-ci ont la priorité sur les options définies via valuesContent. |
|
|
spec.valuesContent |
Remplacer les valeurs par défaut complexes du Chart via le contenu du fichier YAML |
|
|
spec.valuesSecrets |
Remplacer les valeurs complexes du chart par des références à des Secrets externes. |
|
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é :
-
Valeurs par défaut du Chart
-
HelmChart
spec.valuesContent -
HelmChart
spec.valuesSecretsdans l’ordre répertorié du nom du secret et des clés -
HelmChartConfig
spec.valuesContent -
HelmChartConfig
spec.valuesSecretsdans l’ordre répertorié du nom du secret et des clés -
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 |
-
Si
ignoreUpdatesest défini surfalseou 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
ignoreUpdatesest défini surtrue, 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 |
|
Les valeurs HelmChart |
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