Helm Charts auf ArtifactHub über Hosting auf GitHub Pages

Auf Geschwindigkeit ausgelegt: ~ 10 ms Latenz, auch unter Last
Unglaublich schnelle Methode zum Erstellen, Verfolgen und Bereitstellen Ihrer Modelle!
- Verarbeitet mehr als 350 RPS auf nur 1 vCPU — kein Tuning erforderlich
- Produktionsbereit mit vollem Unternehmenssupport
Lassen Sie uns besprechen, wie wir unsere Helm Charts auf GitHub Pages hosten und anderen Personen die Nutzung unserer Charts auf ArtifactHub ermöglichen können. Bevor wir den Prozess verstehen, versuchen wir, diese Begriffe in der einfachsten Form zu verstehen
Was ist ein Helm Chart
Helm Charts sind die Möglichkeit, Ihre Kubernetes-Ressourcen, die Sie bereitstellen möchten, zu templatisieren. Wenn Sie Kubernetes-Ressourcen in mehreren Clustern (oder sogar im selben Cluster) mit unterschiedlichen Werten erstellen möchten, erstellen Sie eine Vorlage für die Ressourcen und paketieren diese. Dieses Paket wird als Helm Chart bezeichnet.
GitHub Pages
GitHub Pages ist eine Funktion von GitHub, mit der Sie eine Website oder Webpage erstellen können, die auf GitHub-Servern gehostet wird. Wenn Sie eine einfache index.html-Datei haben, können Sie diese HTML-Datei unter Verwendung einer von GitHub bereitgestellten Domain hosten, die im Allgemeinen dem Format username.github.io folgt. Es ist eine Möglichkeit für Sie, Ihre Arbeit zu teilen oder Ihre Projekte online zu präsentieren, ohne dass ein separater Webhosting-Dienst erforderlich ist. In unserem Fall werden wir unsere Helm Charts auf GitHub Pages hosten.
ArtifactHub
ArtifactHub ist eine webbasierte Plattform, die als zentrales Repo für verschiedene Softwareverteilungen wie Helm Charts, OPA usw. dient. Sobald wir unser Helm Chart erstellt und auf GitHub Pages gehostet haben, machen wir es für die Community auffindbar, indem wir es auf ArtifactHub präsentieren.
ArtifactHub hostet die Helm Charts nicht selbst, sondern dient vielmehr als Registry für Helm-Chart-Repositories. Entwickler können ihre Helm Charts in ihrem bevorzugten Repository wie GitHub, GitLab oder Bitbucket veröffentlichen und ihr Repository dann bei ArtifactHub registrieren.
Hosting von Helm Charts über GitHub Pages
Jetzt werden wir sehen, wie wir die Pages-Funktionen von GitHub nutzen können, um die Helm Charts unserer Anwendung zu hosten. In diesem Beispiel verwende ich ein Sample-Helm-Chart, aber Sie können Ihre eigenen angepassten Helm Charts auf dieselbe Weise verwenden
Schritt 1: Erstellen eines Sample-Helm-Charts
Wir beginnen mit der Erstellung eines Sample-Helm-Charts
helm create sample-nginx
Schritt 2: Erstellen eines GitHub-Repos
Wir werden ein öffentliches GitHub-Repo erstellen, in dem wir die Charts hosten werden.
- Erstellen Sie ein GitHub-Repo
- Stellen Sie sicher, dass es öffentlich ist
- Erstellen Sie ein Verzeichnis mit dem Namen
charts, das Ihr Helm Chart enthalten wird - Das Verzeichnis
chartsbefindet sich auf der Stammebene Ihres Repositorys - Pushen Sie Ihre Charts in den
main-Branch des Repositorys
$ tree .
.
├── README.md
└── charts
└── sample-nginx
├── Chart.yaml
├── charts
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── service.yaml
│ ├── serviceaccount.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
Wir haben ein Repo erstellt und es ist hier gehostet:
Schritt 3 : GitHub Access Token erstellen
Sobald sich unsere Charts im main-Branch befinden, müssen wir eine Pipeline erstellen, die ein GitHub-Release generieren kann. Dieses GitHub-Release wird wiederum unsere Charts veröffentlichen. Hierfür muss ein Token mit einer bestimmten Reihe von Berechtigungen erstellt werden, das dann in unserer Pipeline zum Veröffentlichen der Charts verwendet wird.
- Klicken Sie oben rechts auf Ihr GitHub-Profil
- Gehen Sie zu Settings.
- Gehen Sie zu Developer Settings unter der letzten Option im linken Bereich.
- Gehen Sie zu Personal Access tokens und wählen Sie Fine-grained tokens.
- Klicken Sie auf Generate new token

- Geben Sie einen Token-Namen ein und wählen Sie ein Ablaufdatum. Für dieses Beispiel verwende ich 7 Tage, danach wird das Token ungültig.
- Wählen Sie unter Repository Access die Option „Only select repositories“ und wählen Sie unser GitHub-Repo aus, in dem wir arbeiten

- Im Bereich Berechtigungen müssen wir nur Repository permissions verwenden.
- In dieser Auswahl benötigen wir
Read and writefürContents

- In der Übersicht sollten wir genau diese Berechtigungen sehen
- Sobald das Token generiert wurde, bewahren Sie es sicher für den nächsten Schritt auf.
Schritt 4 : Einrichten von GitHub Pages
Wir können GitHub Pages nutzen, um unsere Website direkt auf GitHub (statisch) zu hosten.
- Erstellen wir einen weiteren Branch im Repository mit dem Namen
gh-pagesund stellen Sie sicher, dass der Branch exaktgh-pagesgenannt wird. - Löschen Sie in diesem Branch alles und erstellen Sie einfach eine einfache Datei
index.html, um das Hosting zu testen. Pushen Sie Ihre Änderungen zu GitHub.
<!DOCTYPE html>
<html>
<head>
<title>Sample charts</title>
<style>
.chart {
width: 400px;
height: 300px;
margin: 20px;
border: 1px solid #ccc;
box-shadow: 2px 2px 5px #ccc;
display: inline-block;
vertical-align: top;
padding: 10px;
box-sizing: border-box;
font-size: 14px;
line-height: 1.5;
}
.chart h3 {
margin-top: 0;
font-size: 18px;
font-weight: bold;
}
.chart p {
margin: 0;
}
</style>
</head>
<body>
<h1>Sample charts</h1>
<div class="chart">
<h3>Chart 1</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer euismod diam et purus hendrerit mollis.</p>
<!-- add your chart code here -->
</div>
<div class="chart">
<h3>Chart 2</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer euismod diam et purus hendrerit mollis.</p>
<!-- add your chart code here -->
</div>
<div class="chart">
<h3>Chart 3</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer euismod diam et purus hendrerit mollis.</p>
<!-- add your chart code here -->
</div>
</body>
</html>
- Gehen Sie unter dem Namen Ihres Repositorys zu Settings und klicken Sie im linken Bereich auf Pages.

- Wählen Sie im Bereich Build and deployment den Branch
gh-pagesaus und warten Sie eine Weile, bis GitHub diesen verarbeitet hat. Sobald dies abgeschlossen ist, erhalten Sie eine URL im selben Fenster. Wenn Sie darauf klicken, wird Ihnen die erstellteindex.htmlangezeigt. - Klicken Sie hier, um unsere index.html zu prüfen — https://dunefro.github.io/sample-charts/
- Anstatt dieser HTML-Datei werden wir nun unsere Helm-Charts hosten.
Schritt 5 : Pipeline in GitHub Actions erstellen
In den vorherigen Schritten haben wir über die Pipeline gesprochen, die das Access-Token verwendet, um ein GitHub Release zu erstellen. Sie können jedes bevorzugte Tool für diese Aufgabe wählen, ich werde mich jedoch für GitHub Actions entscheiden. GitHub Actions ist ein weiteres Tool, das nativ in GitHub unterstützt wird, um CI/CD-Aufgaben auszuführen.
Vor dem Erstellen der Pipeline erstellen wir eine Secret-Variable, um den im vorherigen Schritt erstellten Token zu übergeben.
- Gehen Sie zu Ihrem Repository und klicken Sie unter dem Namen Ihres Repos auf Settings

- Gehen Sie im linken Bereich zu Secrets and Variables und klicken Sie auf Actions
- Klicken Sie auf New Repository Secret und fügen Sie den Token ein

Dieser Token kann nun in der Pipeline verwendet werden, um die Releases zu pushen.
Jetzt erstellen wir die GitHub Action-Pipeline
- Erstellen Sie ein Verzeichnis
.github/workflowsauf Root-Ebene Ihres Repositorys immain-Branch. - Dieses Verzeichnis ist das Standardverzeichnis, in dem wir alle CI/CD-Pipelines für die Ausführung von GitHub Actions aufbewahren.
- Erstellen Sie eine Datei namens
release.yamlin dem oben genannten Verzeichnis. - Fügen Sie den folgenden Inhalt ein
name: Release Charts
on:
push:
branches:
- main
jobs:
release:
permissions:
contents: write # to push chart release and create a release (helm/chart-releaser-action)
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Set up Helm
uses: azure/setup-helm@v3.5
with:
version: v3.9.2
- name: Run chart-releaser
uses: helm/chart-releaser-action@v1.5.0
env:
CR_TOKEN: "${{ secrets.HELM_RELEASE_TOKEN }}"
Diese Pipeline ist sehr einfach. Verstehen wir sie ganz schnell
name— Name der Pipelineon— Bedingung zum Ausführen der Pipeline; hier legen wir fest, dass sie bei jedem Push in denmain-Branch ausgeführt wird.jobs— der eigentliche Job, der den Pipeline-Code enthält. Er prüft auf Berechtigungen vonwritein contents, die wir bereits vergeben habenstepsdefinieren die Pipeline-Schritte. Der erste Schritt besteht darin,actions/checkout@v3zu verwenden. Wenn Sie die Pipeline erstellen, würden Sie idealerweise zuerst den Code auschecken. Anstatt den Code für das Auschecken selbst zu schreiben, stellt GitHub eineactionbereit, die direkt verwendet werden kann.- Im zweiten Schritt führen wir die Befehle zur Konfiguration von git aus. Ähnlich verwenden wir im dritten Schritt die Action
azure/setup-helm, die Helm für uns einrichtet. - Im letzten Schritt verwenden wir
helm/chart-releaser-action, um das Helm Chart zu releasen. Für das Release benötigen wir den Secret-Token, den wir bereits erstellt und über den Token-NamenHELM_RELEASE_TOKENin der Pipeline übergeben haben. Diese Action erstellt auch eineindex.yamlimgh-pages-Branch, wodurch die GitHub Page als statische Registry für die Helm Charts fungiert.
Schritt 6: Führen Sie die Pipeline aus und prüfen Sie, ob die Releases erstellt wurden
Nun nehmen wir eine sehr kleine Änderung an der Datei README.md des Repositorys im main-Branch vor, damit die Pipeline ausgelöst wird. Als ich die Änderungen gepusht habe, konnte ich einen kleinen orangefarbenen Punkt sehen, der anzeigt, dass eine Pipeline läuft

- Gehen Sie unter dem Repository-Namen zu Actions und prüfen Sie die laufenden Pipelines.
- Sobald die Pipeline abgeschlossen ist, können wir zum
gh-pages-Branch gehen und prüfen, obindex.yamlerstellt wurde. index.yamlist eine Möglichkeit, mit der Helm jede statisch gehostete Website als Helm Registry identifizieren kann.- Sobald die Pipeline abgeschlossen ist, wird automatisch eine weitere Pipeline mit dem Namen
pages build and deploymentausgelöst, die von GitHub automatisch erstellt wird, um die von uns vorgenommenen Änderungen imgh-pages branchzu hosten, wasindex.yamlöffentlich verfügbar ist. — https://dunefro.github.io/sample-charts/index.yaml - Wir können nun die Releases in GitHub überprüfen, um zu sehen, dass unser Helm Chart auf der Releases-Seite veröffentlicht wurde. — https://github.com/dunefro/sample-charts/releases
Schritt 7: Bestätigen Sie den Release durch Bereitstellung in einem minikube-Cluster3]
Um zu testen, ob unsere Helm-Registry erfolgreich erstellt wurde oder nicht
- Erstellen Sie einen
minikube-Cluster - Führen Sie den folgenden Befehl aus
# add the repo
helm repo add sample-charts https://dunefro.github.io/sample-charts/
helm repo update
# install the charts
helm upgrade --install test-nginx sample-charts/sample-nginx
# check pods
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
test-nginx-sample-nginx-b95bb4f46-tbppn 1/1 Running 0 30s
Unsere Charts funktionieren einwandfrei.
Einrichten von ArtifactHub
Jetzt werden wir sehen, wie wir ein Konto auf ArtifactHub einrichten können, damit wir unsere Helm Charts der Community präsentieren können. Sie finden dort möglicherweise auch andere Community-Charts wie
Schritt 1: Konto auf ArtifactHub erstellen und ein Repository anlegen3]
Jetzt sind unsere Charts gehostet. Wir müssen sicherstellen, dass sie von anderen Entwicklern über ArtifactHub genutzt werden können.
- Gehen Sie zu https://artifcathub.io und registrieren Sie sich.
- Klicken Sie anschließend oben links auf Ihr Profil-Symbol und dann auf Control Panel.
- Klicken Sie auf + Add Repository und geben Sie die Repository-Details ein. Stellen Sie sicher, dass Sie die URL verwenden, unter der Ihre Charts auf GitHub Pages gehostet werden.

- Warten Sie nun entspannt ab. ArtifactHub zieht automatisch die Details mithilfe der
index.yaml, die auf unseren Pages gehostet wird
Schritt 2: Bestätigen Sie Ihr Repository3]
Wir können sehen, dass unser Repo erstellt wurde. Sobald ArtifactHub die Daten abrufen kann, wird es auch in den Suchergebnissen angezeigt. Nun möchten wir das "Verified Publisher"-Tag wie folgt hinzufügen

Dazu müssen wir eine Datei artifacthub-repo.yml im gh-pages-Branch als Metadaten-Datei hinzufügen, die von ArtifactHub gelesen wird, um zu bestätigen, dass wir der Eigentümer der Registry sind.
- Kopieren Sie die ID aus dem von uns erstellten Repository.
- Erstellen Sie eine Datei namens
artifacthub-repo.ymlimgh-pages-Branch mit folgendem Inhalt
repositoryID: 67d52f16-b102-4661-bfa5-9e6694587e24
owners: # (optional, used to claim repository ownership)
- name: Vedant Pareek
email: dunefro@gmail.com
- Aktualisieren Sie die version Ihres Charts, damit ArtifactHub und GitHub Actions sie erfassen können.
- Warten Sie eine Weile, bis ArtifactHub die Überprüfung der Registry durchgeführt hat.
Dies ist dieselbe Methode, die wir zum Hosten unserer öffentlichen Helm Charts bei Truefoundry verwendet haben. TrueFoundry ist eine MLOps- und LLMOps-Plattform, die den gesamten Lebenszyklus bei der Überführung von Machine-Learning-Modellen aus der Entwicklung in die Produktion vereinfacht. Sie berücksichtigt alle Herausforderungen während des Machine-Learning-Lebenszyklus, um den Aufbau von Modellen einfach und komfortabel zu gestalten.
TrueFoundry AI Gateway bietet eine Latenz von ~3—4 ms, verarbeitet mehr als 350 RPS auf einer vCPU, skaliert problemlos horizontal und ist produktionsbereit, während LiteLM unter einer hohen Latenz leidet, mit moderaten RPS zu kämpfen hat, keine integrierte Skalierung hat und sich am besten für leichte Workloads oder Prototyp-Workloads eignet.


















%20(28).webp)


.webp)
.webp)
.png)

.png)
.png)
.png)
.png)
.png)
.webp)
.webp)






