|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
Helm
Helm ist das bevorzugte Paketverwaltungstool für Kubernetes. Helm-Charts bieten eine Vorlagensyntax für Kubernetes-YAML-Manifestdokumente. Mit Helm können Entwickler oder Clusteradministratoren konfigurierbare Vorlagen erstellen, die als Charts bekannt sind, anstatt nur statische Manifeste zu verwenden. Für weitere Informationen zur Erstellung Ihres eigenen Chart-Katalogs, schauen Sie sich die Dokumentation unter https://helm.sh/docs/intro/quickstart/. an.
K3s erfordert keine spezielle Konfiguration, um Helm zu unterstützen. Stellen Sie sicher, dass Sie den kubeconfig-Pfad gemäß der Clusterzugriff-Dokumentation korrekt eingestellt haben.
K3s enthält einen Helm-Controller, der das Installieren, Aktualisieren/Neu-Konfigurieren und Deinstallieren von Helm-Charts mithilfe einer HelmChart Custom Resource Definition (CRD) verwaltet. In Kombination mit automatisch bereitgestellten AddOn-Manifests kann die Installation eines Helm-Charts auf Ihrem Cluster automatisiert werden, indem eine einzelne Datei auf der Festplatte erstellt wird.
Verwendung des Helm-Controllers
Die HelmChart Custom Resource erfasst die meisten Optionen, die Sie normalerweise an das helm Befehlszeilenwerkzeug übergeben würden.
HelmChart-Felddefinitionen
|
Das |
| Feld | Standard | Beschreibung | Helm-Argument / Flag-Äquivalent |
|---|---|---|---|
metadata.name |
Helm-Chartname |
NAME |
|
spec.chart |
Helm-Chartname im Repository oder vollständige HTTPS-URL zum Chart-Archiv (.tgz) |
CHART |
|
spec.chartContent |
Base64-kodiertes Chart-Archiv .tgz - überschreibt spec.chart |
CHART |
|
spec.targetNamespace |
default |
Ziel-Namespace für das Helm-Chart |
|
spec.createNamespace |
false |
Ziel-Namespace erstellen, falls nicht vorhanden |
|
spec.version |
Version des Helm-Charts (bei Installation aus dem Repository) |
|
|
spec.repo |
URL des Helm-Chart-Repositories |
|
|
spec.repoCA |
Zertifikate von HTTPS-fähigen Servern mit diesem CA-Bundle überprüfen. Sollte eine Zeichenkette sein, die ein oder mehrere PEM-kodierte CA-Zertifikate enthält. |
|
|
spec.repoCAConfigMap |
Verweis auf eine ConfigMap, die CA-Zertifikate enthält, die von Helm vertraut werden sollen. Kann zusammen mit oder anstelle von |
|
|
spec.plainHTTP |
false |
Unsichere HTTP-Verbindungen für den Chart-Download verwenden. |
|
spec.insecureSkipTLSVerify |
false |
TLS-Zertifikatsprüfungen für den Chart-Download überspringen. |
|
spec.helmVersion |
v3 |
Zu verwendende Helm-Version. Nur |
|
spec.bootstrap |
Falsch |
Auf Wahr setzen, wenn dieses Chart benötigt wird, um den Cluster zu initialisieren (z. B. für den Cloud Controller Manager usw.). |
|
spec.jobImage |
Geben Sie das Bild an, das bei der Installation des Helm-Charts verwendet werden soll. Z. B. rancher/klipper-helm:v0.3.0 . |
||
spec.podSecurityContext |
Benutzerdefiniertes |
||
spec.securityContext |
Benutzerdefiniertes |
||
spec.backOffLimit |
1000 |
Geben Sie die Anzahl der Versuche an, bevor ein Job als fehlgeschlagen betrachtet wird. |
|
spec.timeout |
300s |
Zeitüberschreitung für Helm-Operationen, als duration string ( |
|
spec.failurePolicy |
reinstall |
Setzen Sie auf |
|
spec.authSecret |
Verweis auf ein Secret vom Typ |
||
spec.authPassCredentials |
false |
Geben Sie grundlegende Authentifizierungsanmeldeinformationen an alle Domains weiter. |
|
spec.dockerRegistrySecret |
Verweis auf ein Secret vom Typ |
||
spec.set |
Überschreiben Sie einfache Standard-Chart-Werte. Diese haben Vorrang vor Optionen, die über valuesContent festgelegt wurden. |
|
|
spec.valuesContent |
Überschreiben Sie komplexe Standard-Chart-Werte über den Inhalt der YAML-Datei |
|
|
spec.valuesSecrets |
Überschreiben Sie komplexe Chart-Werte über Verweise auf externe Secrets |
|
In /var/lib/rancher/k3s/server/static/ platzierter Inhalt kann anonym über den Kubernetes APIServer innerhalb des Clusters zugegriffen werden. Diese URL kann unter Verwendung der speziellen Variablen %{KUBERNETES_API}% im spec.chart-Feld templatiert werden. Zum Beispiel lädt die verpackte Traefik-Komponente ihr Chart von https://%{KUBERNETES_API}%/static/charts/traefik-VERSION.tgz.
Chart-Werte werden in der folgenden Reihenfolge verwendet, von der geringsten bis zur höchsten Priorität:
-
Standardwerte des Charts
-
HelmChart
spec.valuesContent -
HelmChart
spec.valuesSecretsin aufgelisteter Reihenfolge von Secret-Namen und Schlüsseln -
HelmChartConfig
spec.valuesContent -
HelmChartConfig
spec.valuesSecretsin aufgelisteter Reihenfolge von Secret-Namen und Schlüsseln -
HelmChart
spec.set
Hier ist ein Beispiel, wie Sie Apache aus dem Bitnami-Chart-Repository bereitstellen können, wobei einige der Standard-Chart-Werte überschrieben werden. Beachten Sie, dass die HelmChart-Ressource selbst im kube-system Namespace ist, die Ressourcen des Charts jedoch im web Namespace bereitgestellt werden, der im selben Manifest erstellt wird. Dies kann nützlich sein, wenn Sie Ihre HelmChart-Ressourcen von den Ressourcen, die sie bereitstellen, getrennt halten möchten.
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
Ein Beispiel für die Bereitstellung eines Helm-Charts aus einem privaten Repository mit Authentifizierung:
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-----
Chart-Werte aus Secrets
Chart-Werte können aus extern verwalteten Secrets gelesen werden, anstatt die Werte in den Feldern spec.set oder spec.valuesContent zu speichern. Dies sollte erfolgen, wenn vertrauliche Informationen wie Anmeldeinformationen in Charts übergeben werden, die nicht unterstützen, auf vorhandene Secrets über das existingSecret-Muster zu verweisen.
Wie bei anderen Secrets (spec.authSecret und spec.dockerRegistrySecret) müssen Secrets, die in spec.valuesSecrets referenziert werden, im selben Namespace wie das HelmChart sein.
Jeder aufgeführte valuesSecrets-Eintrag hat die folgenden Felder:
| Feld | Beschreibung |
|---|---|
name |
Der Name des Secrets. Erforderlich. |
Schlüssel |
Liste der Schlüssel, um Werte zu lesen, die Werte werden in der aufgeführten Reihenfolge verwendet. Erforderlich. |
ignoreUpdates |
Markieren Sie dieses Secret als optional und aktualisieren Sie das Chart nicht, wenn sich das Secret ändert. Optional, Standardwert ist |
-
Wenn
ignoreUpdatesauffalseoder nicht angegeben gesetzt ist, müssen das Secret und alle aufgeführten Schlüssel existieren. Jede Änderung an einem referenzierten Werte-Secret führt dazu, dass das Chart mit neuen Werten aktualisiert wird. -
Wenn
ignoreUpdatesauftruegesetzt ist, wird das Secret verwendet, wenn es existiert, wenn das Chart erstellt oder aufgrund einer anderen Änderung an verwandten Ressourcen aktualisiert wird. Änderungen am Secret führen nicht dazu, dass das Chart aktualisiert wird.
Ein Beispiel dafür, wie ein Helm-Chart mit einem vorhandenen Secret mit zwei Schlüsseln bereitgestellt wird:
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
Anpassen von Paket-Komponenten mit HelmChartConfig
Um das Überschreiben von Werten für Paket-Komponenten, die als HelmCharts bereitgestellt werden (wie Traefik), zu ermöglichen, unterstützt K3s die Anpassung von Implementierungen über Ressourcen vom Typ HelmChartConfig. Die HelmChartConfig-Ressource muss mit dem Namen und dem Namespace des entsprechenden HelmCharts übereinstimmen und unterstützt die Bereitstellung von zusätzlichen valuesContent, die als zusätzliche Wertedatei an den helm-Befehl übergeben wird.
Felddefinitionen von HelmChartConfig
| Feld | Beschreibung |
|---|---|
metadata.name |
Name des Helm Charts - muss mit dem Namen der HelmChart-Ressource übereinstimmen. |
spec.valuesContent |
Überschreiben Sie komplexe Standardwerte des Charts über den Inhalt einer YAML-Datei. |
spec.valuesSecrets |
Überschreiben Sie komplexe Standardwerte des Charts über externe Secrets. |
spec.failurePolicy |
Setzen Sie auf |
|
Die Werte von HelmChart |
Um beispielsweise die Paket-Traefik-Ingress-Konfiguration anzupassen, können Sie eine Datei mit dem Namen /var/lib/rancher/k3s/server/manifests/traefik-config.yaml erstellen und sie mit folgendem Inhalt füllen:
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