Gestione di Repositories
I charts sviluppati in casa devono essere storati in un Chart Repository per la distribuzione a terze parti.
Lo scenario più comune è un progetto aziendale, quindi i charts devono essere su repository privati.
Vi sono varie soluzioni:
- Installare un web server tradizionale e adattarlo a Chart Repository. Esempi tipici: Apache, Nginx.
- Sviluppare un semplice web server con un linguaggio di programmazione come Python o Go. Avrà delle limitazioni.
- Usare un'offerta commerciale di un Provider, sicuramente a pagamento.
- Usare GitHub Pages. Solo i repository pubblici sono gratis, quelli privati sono a pagamento.
- Usare un prodotto Open Source specifico che offre un Chart Repository
Standard OCI
UCI sta per Open Container Initiative, ed è una struttura aperta di governance per la determinazione di standard aperti, tesi alla gestione di formati di container e ambienti runtime.
Nelle specifiche OCI vi è anche la specifica di distribuzione, una API per la distribuzione di immagini di contenitori, charts di Helm e simili.
A partire da Helm 3.0 è stato aggiunto un supporto per il push e il pull di charts da un registry OCI.
ChartMuseum

E' un progetto Open Source disponibile a https://github.com/helm/chartmuseum.
E' uno Helm Chart Repository scritto in linguaggio Go.
Oltre che storaggio locale, supporta molti tipi di storaggio forniti da Cloud Provider, inclusi Google Cloud Storage, Amazon S3, Microsoft Azure Blob Storage, Alibaba Cloud OSS Storage, Openstack Object Storage, Oracle Cloud Infrastructure Object Storage, Baidu Cloud BOS Storage, Tencent Cloud Object Storage, DigitalOcean Spaces, Minio, ed etcd.
Installazione
curl https://raw.githubusercontent.com/helm/chartmuseum/main/scripts/get-chartmuseum | bash
Preparare una directory che corrisponderà alla rootdir dello storaggio di chartmuseum:
mkdir ~/helmrepo
Lanciare chartmuseum:
chartmuseum --storage local --storage-local-rootdir ~/helmrepo --port 8123
Abbiamo specificato la porta 8123 per evitare collisioni con altri servizi su porte più comuni.
Blocca la finestra corrente.
I comandi seguenti vanno in un'altra finestra.
ChartMuseum in Docker
Sy può istanziare un'immagine Docker, per esempio:
docker run --rm -it \
-p 8123:8080 \
-e DEBUG=1 \
-e STORAGE=local \
-e STORAGE_LOCAL_ROOTDIR=/charts \
-v $(pwd)/charts:/charts \
ghcr.io/helm/chartmuseum:v0.14.0
Nello host mapping la directory locale $(pwd)/charts deve avere i permessi di lettura e scrittura per chi esegue i comandi rivolti a ChartMuseum.
Preparazione di ChartMuseum
Occorre generare un primo chart e trasferirlo a chartmuseum per generare un primo index.
cd /tmp
helm create mychart
helm package mychart
Trasferimento al repository ChartMuseum:
curl --data-binary "@mychart-0.1.0.tgz" http://localhost:8123/api/charts
Ora possiamo usare il repository chartmuseum:
helm repo add chartmuseum http://localhost:8123
helm repo update
helm repo list
Quando si usano chart repositories, meglio usarne uno per volta.
Listare i repositories:
helm repo list
E rimuovere quelli che non vogliamo, per esempio:
helm repo remove bitnami
Ricerca di chart:
help search repo mychart
Per compiere il push a chartmuseum occorre installare un plugin:
helm plugin install https://github.com/chartmuseum/helm-push
Configurazione Complessa
Chartmuseum ammette molti parametri ed opzioni di configurazione, storabili in un file. Sono soprattutto necessari per interfacciare i servizi forniti da un Cloud Provider.
Per ulteriori informazioni si rimanda al sito web del progetto, su GitHub.
Upload di Chart
Avevamo precedentemente prodotto il Chart wordpress. Compiamone lo upload su Chartmuseum.
Charmuseum deve essere attivo e deve avere installato il plugin cm-push.
cd ~/scripts
helm cm-push wordpress/ chartmuseum
helm repo update
Fatto.
Listare i charts disponibili su Chartmuseum, e tutti gli altri repositories configurati:
helm search repo