Helm
Ein privates Helm-Chart-Repository mit dem helm-s3-Plugin in einem RustFS-Bucket betreiben.
In dieser Anleitung verbinden Sie Helm — den CNCF-Paketmanager für Kubernetes — über das Plugin helm-s3 mit RustFS, sodass ein RustFS-Bucket zum privaten Chart-Repository wird. Sie initialisieren das Repository im Bucket, pushen ein gepacktes Chart, fügen das Repository in Helm hinzu und ziehen das Chart zurück. Der Ablauf wurde mit alpine/helm:3.16.4 und helm-s3 v0.17.2 gegen einen RustFS-Bucket verifiziert.
Sie benötigen Docker. Dieses Setup ist für lokale Integrationstests gedacht, nicht für den Produktivbetrieb.
Architektur
Das Bucket-Präfix enthält index.yaml und pro Chart-Version eine .tgz-Datei. Helm liest und schreibt es über das Plugin, daher ist das Repository von überall erreichbar, wo RustFS erreichbar ist.
Plugin installieren und Repository initialisieren
Das alpine/helm-Image enthält kein git — installieren Sie das Plugin daher aus dem Release-Archiv statt über die Repository-URL:
cd /tmp
wget -q https://github.com/hypnoglow/helm-s3/releases/download/v0.17.2/helm-s3_0.17.2_linux_amd64.tar.gz
mkdir -p helm-s3 && tar -xzf helm-s3_0.17.2_linux_amd64.tar.gz -C helm-s3
helm plugin install helm-s3Richten Sie das Plugin über seine eigenen Umgebungsvariablen auf RustFS und initialisieren Sie das Repository-Präfix:
export AWS_ENDPOINT=<your-rustfs-endpoint>:9000
export AWS_DISABLE_SSL=true
export AWS_ACCESS_KEY_ID=<your-access-key>
export AWS_SECRET_ACCESS_KEY=<your-secret-key>
export AWS_DEFAULT_REGION=us-east-1
helm s3 init s3://my-bucket/chartsInitialized empty repository at s3://my-bucket/chartshelm-s3 nutzt AWS_ENDPOINT, nicht AWS_ENDPOINT_URL
Das Plugin baut seine Anfrage-URLs aus AWS_ENDPOINT (Host und Port, ohne Schema) zusammen mit AWS_DISABLE_SSL=true für Klartext-HTTP. Die Standardvariable AWS_ENDPOINT_URL wird nicht berücksichtigt; die dadurch ausgelöste virtual-hosted-Adressierung des SDKs scheitert an RustFS mit 403 Forbidden.
Chart pushen
Registrieren Sie das Repository vor dem ersten Push — das Plugin liest die Helm-Repositories-Datei und bricht ab, wenn sie fehlt:
helm repo add rustfs-charts s3://my-bucket/chartsErstellen und packen Sie ein Demo-Chart und pushen Sie es. helm s3 push erwartet den Repository-Namen, nicht die s3://-URI:
helm create demo
helm package demo
helm s3 push ./demo-0.1.0.tgz rustfs-chartsSuccessfully uploaded the chart to the repository.Aus dem Bucket installieren oder ziehen
Aktualisieren Sie den Repository-Index und prüfen Sie, dass das Chart auffindbar ist:
helm repo update
helm search repo rustfs-charts/demoNAME CHART VERSION APP VERSION DESCRIPTION
rustfs-charts/demo 0.1.0 1.16.0 A Helm chart for KubernetesZiehen Sie das Chart aus RustFS zurück:
helm pull rustfs-charts/demo --destination ./pullback
tar -tzf ./pullback/demo-0.1.0.tgz | head -2demo/Chart.yaml
demo/values.yaml
Anhalten oder Zurücksetzen
Charts sind gewöhnliche Bucket-Objekte, das Aufräumen ist ein Präfix-Löschen:
aws s3 rm s3://my-bucket/charts --recursive \
--endpoint-url http://<your-rustfs-endpoint>:9000Fehlerbehebung
head s3 object: Forbidden bei helm s3 init
Das Plugin nutzt virtual-hosted-Adressierung — AWS_ENDPOINT und AWS_DISABLE_SSL sind nicht gesetzt. Exportieren Sie sie exakt wie in Schritt 1.
check if index exists in the storage schlägt mit einem Git-Fehler fehl
Das Image enthält kein git, daher kann helm plugin install <git-url> nicht klonen. Installieren Sie wie in Schritt 1 aus dem Release-Archiv.
The index file already exists under the provided URI
Das Repository-Präfix wurde bereits initialisiert. Nutzen Sie helm s3 init --ignore-if-exists s3://my-bucket/charts erneut oder ersetzen Sie den Index mit --force.
repo with name s3://... not found beim Push
helm s3 push erwartet den mit helm repo add registrierten Repository-Namen — verwenden Sie helm s3 push ./demo-0.1.0.tgz rustfs-charts.
couldn't load repositories file beim Push
Helms repositories.yaml existiert in dieser Umgebung noch nicht. Führen Sie vor dem Push helm repo add rustfs-charts s3://my-bucket/charts aus.
Nächste Schritte
- Lesen Sie vor größeren Repositories mit vielen Chart-Versionen die S3-Kompatibilitätshinweise.
- Erstellen Sie dedizierte Produktionszugangsdaten mit Zugangsdatenverwaltung.
- Folgen Sie der helm-s3-Dokumentation für Re-Indexierung, Chart-Löschung und CI-Nutzung auf demselben Bucket.