ArtifactoryのHelm Chartリポジトリをマスターするには

Helm Chart Repository

ArtifactoryのHelm Chartリポジトリのサポートを以前アップしましたが、これに続きHelmリポジトリを迅速に立ち上げ、実行できるようになりました。HelmとはKubernetesのパッケージマネージャであり、Helm Chartを使用したKubernetesアプリケーションの管理を行うものです。

Artifactoryは今やHelmリポジトリをネイティブサポートし、Kubernetesへのデプロイプロセスを完全にコントロールできるようになりました。プロキシを使ったリモートHelmリポジトリのサポートやローカルリポジトリへのHelm Chartのデプロイに加え、バーチャルリポジトリを使用して、すべてのHelm Chartリポジトリを集約できるため、単一のエンドポイントからのアクセスを可能にしています。

Helm Chartリポジトリを最大限に活用するには

ArtifactoryのHelm Chartリポジトリを最大限に活用するためには以下を試しておくことをお勧めします。

バーチャルリポジトリはベストな選択肢

ArtifactoryはKubernetesでローカルとリモート両方のリポジトリを含んだバーチャルHelmリポジトリの作成をサポートしています。これによりバーチャルリポジトリで定義された単一のURLからローカルとリモート両方のHelm Chartへアクセスすることができます。

バーチャルリポジトリを使うと以下のことが実現可能です:

  • Helm Chartリゾリューション
    ArtifactoryはバーチャルリポジトリからのHelm Chartのリゾリューションのみをサポートします。ローカルとリモート両方のHelm Chartリポジトリから Helm Chartを解決するには、それらをバーチャルHelm Chartリポジトリに集約させる必要があります。
  • ドメインのコントロール
    アーティファクト内の検索とリゾリューションのためのドメインをコントロール可能です。
  • 複数のリポジトリへ容易にアクセス
    バーチャルリポジトリにすべてのローカルとリモートのHelm Chartを集約すると、単一URLからすべてのHelm Chartにアクセスすることができます。
  • 安全でプライベートなリポジトリ
    バーチャルリポジトリを使用するとArtifactoryで既に提供されている以上のセキュリティレイヤーが追加され、Kubernetesのプロジェクトや開発チームの基準に従ってHelm Chartへのきめ細かいアクセスコントロールが可能になります。

Artifactory内のバーチャルHelm Chartリポジトリを定義するには:

  1. バーチャルリポジトリを作成します。
  2. Package TypeHelmに設定します。
  3. 基本となるローカルおよびリモートのHelmリポジトリを選択してBasic設定タブに含めます。

JFrog Helmクライアントでリポジトリの設定に進みます。

StableとIncubatorリポジトリを分離

基本的には単一のバーチャルリポジトリを使うことをお勧めしますが、Stable Public Helm Chart リポジトリにあるステーブルなチャートとそれに対応するIncubator Helm Chartリポジトリでリリース前のチャートをはっきりと分離させるようにしたほうがいいでしょう。これら2つを異なるバーチャルリポジトリに集約し、オフィシャルリリースバージョンが必要な場合にはStableを、プレリリースバージョンが必要な場合にはIncubatorを使うようにします。そうすることでビルドが適切なバージョンのチャートを取得し、Kubernatesでの混乱を避けることができます。

チャートでSemVer v2バージョン管理を使用

JFrogでは将来のバージョン管理、バージョン範囲における要件、index.yamlからの適切な並び替えと解決に役立つためSemVerを使うことを推奨しています。

Helmユーザに最新情報を提供

ArtifactoryのHelmパッケージ検索はユーザがチャートバージョンを参照できる「Version」だけでなく、「App version」でもHelmリポジトリを検索できるようにカスタマイズしています。App Versionはチャートバージョンが異なる可能性があるため、ユーザが使用しているアプリバージョンを知るために効果的です。Chart.yamlファイルに追加した後にパラメータを検索できます。

Search Helm

index.yamlをゼロからリカリキュレート

Artifactoryはローカルのindex.yamlファイルが破損している疑いがある場合にindex.yamlファイルを数秒でリカリキュレートします。

ローカルのIndex.yamlファイルをリカリキュレートするには:

  1. ツリー表示でHelm Chartリポジトリを選択します。
  2. 右クリックでRecalculate Indexを選択します。

Recalculate Index

選択後にindexを非同期でカリキュレートします。

バーチャルリポジトリのMetadata Retrieval Cache Periodの調整

バーチャルリポジトリは集約するすべてのリポジトリのindex.yamlファイルを単一のindex.yamlファイルにマージします。ただし、ローカルまたはリモートリポジトリの変更ごとに集約した場合のindexのリカリキュレートは過度にリソースを消費する場合があります。

リモートリポジトリの変更ごとに集約したindexのリカリキュレートを防ぐためにはキャッシュを使用してバーチャルリポジトリのMetadata Retrieval Cache Periodで設定した間隔でリカリキュレートします。デフォルトでは適切な値として10分が設定されていますが、集約されたリポジトリに対して頻繁な変更が発生するようであれば値を低く設定し、リカリキュレート間隔を短くすることができます。

Metadata Retrieval

またキャッシュをクリアすることでいつでも手動でインデックスのリカリキュレートをすることができます。これはキャッシュの「ザッピング」と呼ばれ、以下のように呼び出すことができます:

Artifactoryでキャッシュのザッピングをするには:

  1. Artifactsモジュールのツリー表示からザッピングするバーチャルリポジトリを選択します。
  2. 右クリックでZap Cachesを選択するかドロップダウンメニューでActionsを選択します。

JFrog CLIはHelm Chartのデプロイに効果的

Helmクライアントは現状、Helm Chartのデプロイをサポートしていないため、JFrog CLIを使ってHelm Chartを公開またはアップロードできます。

例えば以下のようにJFrog CLIアップロードコマンドを使ってすべてのtgzファイルをheml-localにアップロードします:

jfrog rt u "*.tgz" helm-local

Helm Chartを作成する一般的な方法についてはThe Chart Best Practices Guideを参照してください。