Helm ChartsをGitHub Pagesで公開する
KubernetesではHelmというパッケージマネージャが広く使われています。HelmではChartという単位でパッケージを管理します。有名なソフトウェアであればOfficial Chartsが公開されていますが、場合によっては自分で書いたChartを公開したいこともあるでしょう。本稿ではGitHub PagesにHelm Chartsを公開する方法を説明します。
TL;DR
helm create
でひな型を作る。helm lint
で文法チェックを行う。- CircleCIでHelm ChartsをビルドしてGitHub Pagesに公開する。
WebサーバがあればChartを公開できます。サーバを構築してデーモンを実行するといった難しい作業は必要ありません。GitHub Pagesなら無料です。
順を追って説明します。
1. GitHub Pages用のリポジトリを作る
まず、GitHubで新しいリポジトリを作ります。ここでは https://github.com/YOUR_NAME/helm-charts
というURLのリポジトリとします。
gh-pages
ブランチが公開されるように設定しておきます。
2. Helm Chartを作る
サンプルのChartを作ってみましょう。
mkdir example cd example git init mkdir charts cd charts helm create example
helm create
コマンドを実行すると、Helm Chartのひな型が生成されます。以下のファイルが並んでいるはずです。
/charts /charts/example /charts/example/.helmignore /charts/example/Chart.yaml /charts/example/templates /charts/example/templates/NOTES.txt /charts/example/templates/_helpers.tpl /charts/example/templates/deployment.yaml /charts/example/templates/ingress.yaml /charts/example/templates/service.yaml /charts/example/values.yaml
values.yaml
ファイルを開いてみましょう。以下のようにnginxを実行するサンプルが入っているはずです。
# Default values for example. # This is a YAML-formatted file. # Declare variables to be passed into your templates. replicaCount: 1 image: repository: nginx tag: stable pullPolicy: IfNotPresent #(以下略)
helm lint
コマンドを実行してみましょう。文法チェックが行われます。アイコンを設定した方がいいよと言われますが、とりあえず次に進みます。
% helm lint ==> Linting . [INFO] Chart.yaml: icon is recommended 1 chart(s) linted, no failures
Chartができたら、GitHubにリポジトリをpushします。
git remote add origin https://github.com/YOUR_NAME/example git push origin master
3. CircleCIでビルドして公開する
以下の内容で .circleci/config.yml
を作ります。
version: 2 jobs: build: docker: - image: alpine steps: - checkout - run: name: helm-github-pages command: wget -O - https://raw.githubusercontent.com/int128/helm-github-pages/master/publish.sh | sh environment: - GITHUB_PAGES_REPO: YOUR_NAME/helm-charts
CircleCIを開き、リポジトリを追加します。CircleCIからGitHub PagesにpushできるようにSSH鍵を設定します。
- CircleCIのリポジトリ設定を開く。
- Checkout SSH keys in the Permissionsセクションを開く。
- Create and add user keyボタンをクリックする。
設定が終わったらビルドを実行してみましょう。GitHub Pages用のリポジトリにコミットが増えていればOKです。気になる人はリポジトリの内容を見てみてください。以下のようにTAR.GZファイルと index.yaml
ファイルが並んでいるはずです。
/example/example-0.1.0.tgz /index.yaml
4. Helm Chartsを取得する
GitHub Pagesに公開したHelm Chartsを実際に取得できるか確認します。
helm repo add YOUR_NAME https://YOUR_NAME.github.io/helm-charts helm repo list helm repo update
以下のように表示されれば成功です。
% helm repo update Hang tight while we grab the latest from your chart repositories... ...Skip local chart repository ...Successfully got an update from the "YOUR_NAME" chart repository ...Successfully got an update from the "stable" chart repository ...Successfully got an update from the "incubator" chart repository Update Complete. ⎈ Happy Helming!⎈
先ほど公開したサンプルのHelm Chartを確認してみましょう。
helm inspect YOUR_NAME/example
ValuesのYAMLが表示されれば成功です。
まとめ
helm create
でひな型を作る。helm lint
で文法チェックを行う。- CircleCIでHelm ChartsをビルドしてGitHub Pagesに公開する。
詳しい使い方は下記を参照してください。
- 作者: Kelsey Hightower,Brendan Burns,Joe Beda,松浦隼人
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/03/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る