Helm Charts op ArtifactHub via hosting op GitHub Pages

Gebouwd voor snelheid: ~10ms latentie, zelfs onder belasting
De razendsnelle manier om je modellen te bouwen, volgen en implementeren!
- Verwerkt 350+ RPS op slechts 1 vCPU — geen tuning nodig
- Productieklaar met volledige enterprise-ondersteuning
Laten we bespreken hoe we onze helm charts kunnen hosten op GitHub Pages en anderen in staat stellen onze charts te gebruiken op ArtifactHub. Voordat we het proces gaan begrippen, zullen we proberen deze termen in de meest eenvoudige vorm uit te leggen
Wat is een Helm Chart
Helm charts zijn de manier waarop u uw Kubernetes-resources die u wilt deployen voorziet van templates. Als u Kubernetes-resources in meerdere clusters wilt maken (of zelfs binnen hetzelfde cluster) met verschillende waarden, maakt u een template voor de resources en verpakt u deze. Dit pakket staat bekend als een helm chart.
GitHub Pages
GitHub Pages is een functie van GitHub waarmee u een website of webpagina kunt maken die wordt gehost op GitHub-servers. Als u een eenvoudig index.html-bestand heeft, kunt u dit HTML-bestand hosten met een door GitHub geleverde domeinnaam die over het algemeen het formaat username.github.io heeft. Het is een manier om uw werk te delen of uw projecten online te tonen zonder dat u een afzonderlijke webhostingdienst nodig heeft. In ons geval gaan we onze helm charts hosten op GitHub Pages.
ArtifactHub
ArtifactHub is een webgebaseerd platform dat fungeert als een centrale repo voor verschillende softwaredistributies zoals helm charts, OPA, enz. Zodra we onze helm chart hebben gemaakt en gehost op GitHub Pages, maken we deze vindbaar voor de community door deze te tonen op ArtifactHub.
ArtifactHub host de Helm charts niet zelf, maar fungeert in plaats daarvan als een registry voor Helm chart repositories. Ontwikkelaars kunnen hun Helm charts publiceren naar hun voorkeursrepository, zoals GitHub, GitLab of Bitbucket, en vervolgens hun repository registreren bij ArtifactHub.
Helm Charts hosten via GitHub Pages
Nu zullen we zien hoe we de Pages-functies van GitHub kunnen benutten om de helm charts van onze applicatie te hosten. In dit voorbeeld gebruik ik een voorbeeld-helm chart, maar u kunt op dezelfde manier ook uw eigen aangepaste helm charts gebruiken
Stap 1 : Een voorbeeld-helm chart maken
We beginnen met het maken van een voorbeeld-helm chart
helm create sample-nginx
Stap 2 : Een GitHub-repo maken
We maken een openbare GitHub-repo waarin we de charts zullen hosten.
- Maak een GitHub-repo
- Zorg ervoor dat deze openbaar is
- Maak een directory met de naam
chartsdie uw helm chart zal bevatten - De directory
chartsbevindt zich op het hoogste niveau (root) van uw repository - Push uw charts naar de
mainbranch van de repository
$ 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
We hebben een repo gemaakt en deze is hier gehost:
Stap 3 : GitHub Access token maken
Zodra onze charts in de main branch staan, moeten we een pipeline maken die een GitHub release kan maken. Deze GitHub release zal op haar beurt onze charts publiceren. Hiervoor moeten we een token maken met een specifieke set machtigingen die vervolgens in onze pipeline worden gebruikt om charts te releasen.
- Klik op uw GitHub-profiel in de rechterbovenhoek
- Ga naar Settings.
- Ga naar Developer Settings, de laatste optie in het linkerpaneel.
- Ga naar Personal Access tokens en selecteer Fine-grained tokens.
- Klik op Generate new token

- Geef een tokennaam op en kies een vervaldatum. Voor nu gebruik ik 7 dagen, waarna de token onbruikbaar wordt.
- Selecteer bij Repository Access "Only select repositories" en kies onze GitHub-repo waaraan we werken

- In het gedeelte over machtigingen hoeven we alleen Repository permissions te gebruiken.
- Hierin moeten we
Read and writeselecteren voorContents

- In het overzicht moeten we alleen deze machtigingen hebben
- Zodra de token is gegenereerd, bewaart u deze goed voor de volgende stap.
Stap 4 : GitHub Pages instellen
We kunnen GitHub Pages gebruiken om onze website rechtstreeks op GitHub te hosten (statisch).
- Laten we nog een branch in de repository maken met de naam
gh-pagesen zorg ervoor dat u de branch uitsluitendgh-pagesnoemt. - Verwijder in deze branch alles en maak gewoon een eenvoudig bestand
index.htmlom de hosting te testen. Push uw wijzigingen naar 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>
- Ga naar Settings onder de naam van uw repository en klik op Pages in het linkerpaneel.

- Kies in het gedeelte Build and deployment de branch
gh-pagesen wacht even totdat GitHub deze heeft verwerkt. Zodra dit is voltooid, krijgt u een URL in hetzelfde venster. Als u hierop klikt, ziet u hetindex.htmldat we hebben gemaakt. - Klik hier om onze index.html te bekijken — https://dunefro.github.io/sample-charts/
- In plaats van dit HTML-bestand te hosten, gaan we nu onze helm charts hosten.
Stap 5 : Pipeline maken in GitHub Actions
In de vorige stappen hebben we de pipeline besproken die de Access token zal gebruiken om een GitHub Release te maken. U kunt elke gewenste tool kiezen voor het uitvoeren van deze taak, maar ik kies hiervoor GitHub Actions. GitHub Actions is weer een andere tool die systeemeigen wordt ondersteund in GitHub om CI/CD-taken uit te voeren.
Voordat we de pipeline maken, maken we een secret variabele aan om de token die we in de vorige taak hebben aangemaakt door te geven.
- Ga naar je repository en klik op Settings onder de naam van je repo

- Ga naar Secrets and Variables in het linkerpaneel en klik op Actions
- Klik op New Repository Secret en plak de token

Deze token kan nu in de pipeline worden gebruikt om de releases te pushen.
Nu gaan we de GitHub Action-pipeline maken
- Maak een directory
.github/workflowsaan in het hoogste niveau (root) van je repository in demain-branch. - Deze directory is de standaarddirectory waarin we alle CI/CD-pipelines bewaren die GitHub Actions moet uitvoeren.
- Maak een bestand genaamd
release.yamlaan in de bovenstaande directory. - Plak de volgende inhoud
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 }}"
Deze pipeline is erg eenvoudig. Laten we deze snel doornemen
name— naam van de pipelineon— voorwaarde om de pipeline uit te voeren, hier geven we aan dat deze moet worden uitgevoerd bij elke push naar demain-branch.jobs— de daadwerkelijke job die de pipeline-code bevat. Het controleert de permissies voorwritein contents, die we al hebben verleendstepsdefinieer de stappen van de pipeline. Waarbij de eerste stap het gebruiken vanactions/checkout@v3is. Als je een pipeline maakt, zou je idealiter eerst de code uitchecken. In plaats van zelf code te schrijven voor het uitchecken, biedt GitHub eenactiondat rechtstreeks kan worden gebruikt.- In de tweede stap voeren we de opdrachten uit om git te configureren. Zo gebruiken we in de derde stap de
azure/setup-helm-actie die helm voor ons zal instellen. - In de laatste stap gebruiken we
helm/chart-releaser-actionom de helm chart te releasen. Voor het releasen hebben we de geheime token nodig die we al hebben aangemaakt en in de pipeline hebben doorgegeven via de token-naamHELM_RELEASE_TOKEN. Deze actie zal ook eenindex.yamlmaken in degh-pages-branch, waardoor de GitHub-pagina zal fungeren als een statische registry voor de helm charts.
Stap 6 : Voer de pipeline uit en controleer of de releases zijn aangemaakt
Nu maken we een hele kleine wijziging in het README.md-bestand van de repository in de main-branch zodat de pipeline wordt getriggerd. Wanneer ik de wijzigingen heb gepusht, zie ik een klein oranje stipje dat aangeeft dat er een pipeline wordt uitgevoerd

- Ga naar Actions onder de repositorynaam en controleer de actieve pipelines.
- Zodra de pipeline is voltooid, kunnen we naar de
gh-pages-branch gaan en controleren ofindex.yamlis aangemaakt. index.yamlis een manier waarmee helm elke statisch gehoste website kan identificeren als een helm registry.- Zodra de pipeline is voltooid, wordt er automatisch een andere pipeline getriggerd met de naam
pages build and deployment, die automatisch door GitHub is aangemaakt om de wijzigingen te hosten die we in degh-pages branchhebben aangebracht, waardoorindex.yamlopenbaar beschikbaar wordt. — https://dunefro.github.io/sample-charts/index.yaml - We kunnen de releases in GitHub bekijken om te zien dat onze helm chart is vrijgegeven op de pagina Releases. — https://github.com/dunefro/sample-charts/releases
Stap 7 : Bevestig de release door deze te implementeren in een minikube cluster
Om te testen of onze helm registry succesvol is aangemaakt
- Maak een
minikubecluster aan - Voer het onderstaande commando uit
# 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
Onze charts werken naar behoren.
Instellen van ArtifactHub
Nu gaan we kijken hoe we een account op ArtifactHub kunnen instellen, zodat we onze helm charts aan de community kunnen tonen. Je kunt hier ook andere community charts vinden zoals
Stap 1 : Maak een account aan op ArtifactHub en maak een repo aan
Onze charts zijn nu gehost. We moeten ervoor zorgen dat ze door andere ontwikkelaars gebruikt kunnen worden via ArtifactHub.
- Ga naar https://artifcathub.io en meld je aan.
- Klik hierna op je profielicoon in de linkerbovenhoek en klik vervolgens op Control panel.
- Klik op + Add Repostiory en voeg de details van de repository toe. Zorg ervoor dat je de URL gebruikt waarop je charts in GitHub pages gehost worden.

- Nu kun je ontspannen en wachten. ArtifactHub zal automatisch de gegevens ophalen met behulp van de
index.yamldie op onze pagina's gehost wordt
Stap 2 : Verifieer je repo
We kunnen zien dat onze repo is aangemaakt. Zodra ArtifactHub de gegevens kan ophalen, verschijnt deze ook in de zoekresultaten. Nu willen we de 'verified publisher'-tag toevoegen, ongeveer zo

Hiervoor moeten we een bestand artifacthub-repo.yml toevoegen aan de gh-pages-branch als metadata-bestand. Dit wordt gelezen door ArtifactHub, waarmee wordt geverifieerd dat wij de eigenaar van de registry zijn.
- Kopieer het ID van de repository die we hebben aangemaakt.
- Maak een bestand genaamd
artifacthub-repo.ymlaan in degh-pages-branch met de volgende inhoud
repositoryID: 67d52f16-b102-4661-bfa5-9e6694587e24
owners: # (optional, used to claim repository ownership)
- name: Vedant Pareek
email: dunefro@gmail.com
- Werk de versie van je chart bij, zodat ArtifactHub en GitHub Actions deze kunnen oppakken.
- Wacht even totdat ArtifactHub de controle op de registry heeft uitgevoerd.
Dit is dezelfde manier waarop we onze openbare helm charts hebben gehost bij Truefoundry. TrueFoundry is een MLOps, LLMOps-platform dat de volledige levenscyclus vereenvoudigt voor het naar productie brengen van machine learning-modellen vanuit de ontwikkelomgeving. Het houdt rekening met alle knelpunten gedurende de levenscyclus van machine learning om zo gemak en comfort te bieden bij het bouwen van modellen.
TrueFoundry AI Gateway levert een latentie van ~3–4 ms, verwerkt 350+ RPS op 1 vCPU, schaalt moeiteloos horizontaal en is klaar voor productie, terwijl LiteLLM last heeft van hoge latentie, moeite heeft boven een gemiddeld aantal RPS, geen ingebouwde schaling heeft en het meest geschikt is voor lichte workloads of prototypes.



















.png)

.webp)



.webp)








.webp)





