Create a Helm reposirory with GitHub Pages
In this post I will show you how you can host your own Helm repository with GitHub Pages.
Create a new GitHub Repository
Log into GitHub and create a new repository called helm-charts. I chose to hav a README file and an Apache2 licence in mye repository.
Clone the repository to start working.
git clone git@github.com:devopstales/helm-charts.git
cd helm-charts
tree
.
├── LICENSE
└── README.md
Create a hem chart in the repository:
mkdir charts
helm create charts/chart1
helm create charts/chart2
tree
.
├── charts
│ ├── chart1
│ │ ├── charts
│ │ ├── Chart.yaml
│ │ ├── templates
│ │ │ ├── deployment.yaml
│ │ │ ├── _helpers.tpl
│ │ │ ├── ingress.yaml
│ │ │ ├── NOTES.txt
│ │ │ ├── service.yaml
│ │ │ └── tests
│ │ │ └── test-connection.yaml
│ │ └── values.yaml
│ └── chart2
│ ├── charts
│ ├── Chart.yaml
│ ├── templates
│ │ ├── deployment.yaml
│ │ ├── _helpers.tpl
│ │ ├── ingress.yaml
│ │ ├── NOTES.txt
│ │ ├── service.yaml
│ │ └── tests
│ │ └── test-connection.yaml
│ └── values.yaml
├── LICENSE
└── README.md
Push to GitHub:
echo ".deploy" >> .gitignore
git add . --all
git commit -m 'Initial Commit'
git push origin main
Create brach for GitHub Pages and release:
git checkout --orphan gh-pages
Switched to a new branch 'gh-pages'
rm -rf charts
git add . --all
git commit -m 'initial gh-pages'
git push origin gh-pages
git checkout main
Next enable GitHub Pages i the repository settings. After a few minutes you should have a default rendering on your README.md at the provided URL.
Use chart-releaser
Yo can create a chart Helm repository by usin the helm package
and helm repo
commands but you can simplify your life by using chart-releaser
.
Install for Lnux:
cd /tmp
curl -sSL https://github.com/helm/chart-releaser/releases/download/v1.2.1/chart-releaser_1.2.1_linux_amd64.tar.gz | tar xzf -
mv cr ~/bin/cr
cr help
Install for Mac osX:
$ brew tap helm/tap
$ brew install chart-releaser
Usage:
The cr index
will create the appropriate index.yaml
and cr upload
will upload the packages to GitHub Releases. Fot theat you need a GitHub Token.
In your browser go to your github developer settings and create a new personal access token and add full access to the repo.
Create an environment variable for the token:
export CH_TOKEN=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sdf
helm package charts/{chart1,chart2} --destination .deploy
cr upload -o devopstales -r helm-charts -p .deploy
git checkout gh-pages
cr index -i ./index.yaml -p .deploy -o devopstales -r helm-charts -c https://devopstales.github.io/helm-charts/
git add index.yaml
git commit -m 'release 0.1.0'
git push origin gh-pages
Update the README.md with instructions to usage
nano README.md
git add README.md
git commit -m 'update readme with instructions'
git push origin gh-pages