16
Githubを使って簡単に Helm Repoを公開してみよう Kubernetes Meetup Tokyo #7 Shingo Omura (@everpeace)

Githubを使って簡単に helm repoを公開してみよう

Embed Size (px)

Citation preview

Githubを使って簡単にHelm Repoを公開してみよう

Kubernetes Meetup Tokyo #7Shingo Omura (@everpeace)

自己紹介

✓ Kubernetes歴 実運用 約1年

✓ ChatWorkの新メッセージングシステムを支える技術

Kubernetes & Concourse CIを使ったDevOps改善

@ AWS Summit Tokyo 2017

✓ kube-aws#645: NVIDIA driver installation support on GPU instances everpeace

everpeace

Helm: The package manager for Kubernetes

✓ https://helm.sh/

✓ CNCFによって運営されている(Microsoft, Google, Bitnamiのメンバーが主)

✓ Chartと呼ばれるパッケージにKubernetesの要素をまとめることが出来て

パッケージとして扱える(Service, Deployment, ConfigMap, Secretes, etc.)

✓ Helm Chart は Helm Repoで公開されている

○ 公式レポジトリ ➔ stable / Incubator

✓ 参考: Kubernetes: パッケージマネージャHelm

✓ 今日はhelmの全体のアーキテクチャ, Chartの作り方、使い方の話は割愛します �

Helm は複数 Repo に対応しています

Helm Repositoryはどうやって公開する?

● ドキュメント

○ kubernetes/helm/blob/master/docs/chart_repository.md

● 下記を含んだ HTTP/HTTPS エンドポイントならOK○ index.yaml という名前のインデックスファイル

■ helm repo indexコマンドで生成できる

○ Index.yaml に含まれるパッケージ本体 (.tgz, .tgz.prov)たち

■ 実際には別のurlでホストすることも可能

Helm Repositoryの構造

kubernetes/helm/blob/master/docs/chart_repository.md

⬅ ‘helm package ...’ で生成

⬅ ‘helm package --sign ...’ で生成 (ref: Helm Provenance and Integrity )

⬅ ‘helm repo index ...’ で生成

index.yamlの構造

✓ Chart.yamlに記述された

Metadata✓ 実際のパッケージのurl

○ helm repo index で指定 … …

kubernetes/helm/blob/master/docs/chart_repository.md

helm repo indexコマンドの使い方

● Chartを特定dirにpackageしておいて

○ 手順はQiita参照

● ‘helm repo index DIR --url URL’ を実行

○ DIR = chart群のあるdirectory○ URL = 公開したいRepo URL

Githubを使って簡単にHelm Repoを公開してみよう

おさらい

● Helm Repoは単純な http/https エンドポイント○ index.yaml, Chart群 をフラットに置くだけ

○ それらのファイルは全部 helm コマンドで生成できる

■ ‘helm package --destination DIR’ でchartのtgzを作って

■ ‘helm repo index DIR --url <external url>’ でindex.yamlを生成

つまりいろんな手段で公開できる

● Google Cloud Storage (GCS) bucket● S3 bucket● Github Pages

○ gh-pages ブランチを使う

○ master ブランチを使う

○ master ブランチの /docs フォルダを使う (⬅ 今回はこれ)■ gh-pagesのようにブランチを切り替えなくて済む

■ master ブランチにdocsを作っておいてそこに commit & pushするだけなのでお手軽

master ブランチの /docs フォルダをGithub Pages として公開する設定

● RepositoryのSettingページ

で右のように設定するだけ○ ここに表示されるurlを

‘helm repo index’コマンドで指定する

Github Repositoryの構造

● /docs ディレクトリを作っておく

● 残りはチャート開発用のディレクトリ

● build.sh みたいなのを作ると便利です

https://github.com/everpeace/helm-charts/

後は helm repo add, update で使えます!

How to Secure Helm Repo ?

● 絶賛 Open Issue (opened by mumoshu)○ helm#1038: feat: Securing a chart repository (AuthN)

● 現状○ client 証明書認証はサポートされている (version 2.2.0)

■ tiller側(helm init), client側 (helm repo add)

● 今後○ S3, GCS, Swift みたいな Cloud Storage は Helm Plugin で対応予定だそうです

○ 最近 helm-s3 というpluginが出来たようです!

⎈ Happy Helming! ⎈

Thank you!