Rimantas (Rimas) Mocevicius
JFrog Senior DevOps EngineerRimas is an IT professional with over 25 years’ experience in DevOps, which includes Linux, containers, Kubernetes, and cloud-native technologies. He is also co-founded Helm – the Kubernetes package manager. He is a Senior DevOps Engineer at JFrog’s SaaS DevOps team.
He is also a big fan and supporter of open source software.
The Latest From Rimantas (Rimas) Mocevicius
-
Helm Chartの依存関係はChartCenterに
| < 1 min readChartCenterはHelmコミュニティが公開されているKubernetesアプリの変更不可で安全な信頼性の高いChartを見つけるために構築された無償のHelm chartセントラル・リポジトリです。ChartCenterを使用すると常に利用可能な1つの場所からすべての公開Chartをプロキシし、信頼できる唯一の情報源とすることができます。 ChartCenterを使用しない場合、インストールとアップデートするKubernetesアプリごとに各Helm chartリポジトリをHelmクライアントに追加する必要があります。HelmクライアントにChartCenterのリポジトリを追加すればChartCenterにプロキシされている250以上(今も増え続けています)のパブリックなKubernetesアプリのHelm chartにすぐにアクセスできるようになります。そのため、多くの公開Helmリポジトリを使うのではなく、1つのリポジトリだけを使うことができます。 独自のHelm chartを作成する場合、依存関係として使用するパブリックChartが変更不可で、ChartCenterでそれらのプロキシを参照することで、常に利用可能であることを確認することもできます。これにより、後でChartの元のリポジトリで強制プッシュや削除が行われた場合に発生する可能性がある不慮の事故を避けることができます。ChartCenterを経由する際には常に何を得ているかを知ることができます。ChartCenterの依存関係、統計、セキュリティに関する豊富なメタデータがあればなおさらです。 依存関係のあるChartからChartCenterを参照する方法と、それを可能にするHelm用の小さなプラグインを見てみましょう。 ChartCenterの利用 ChartCenterをセントラルHelmリポジトリとして設定するのは非常に簡単です: $ helm repo add center https://repo.chartcenter.io $ helm repo update これでHelmクライアントはChartCenterで利用可能な30,000以上のバージョンがあるHelm chartにアクセスすることができ、またChartCenterのホームページには多くの人気アプリのChartが掲載されているため、容易に検索することができます。 しかしChartCenterは同じKubernetesアプリのHelm chartの複数の異なるセットを保持している可能性があり、その中には特殊版、重複版、非推奨版のchartが含まれている可能性があります。 たとえばChartCenterでPostgreSQLデータベースアプリケーションを検索した場合、いくつかの一致が見つかります: ChartCenterでは名前空間はHelm chartのバージョンが見つかったHelmリポジトリを識別します。例えばPostgreSQL用の公式Bitnami Helm chartをbitnami/postgresqlとして参照します。 helmコマンドラインからPostgreSQLをインストールする: $ helm install postgresql center/bitnami/postgresql 依存関係ChartにChartCenterを利用する 上の例ではHelmリポジトリhttps://repo.chartcenter.ioからbitnami/postgresqlをインストールしており、問題なく動作しています。 しかしhelmクライアントのコマンドラインからPostgreSQLをインストールするのではなく、自作のHelm chartの依存関係を利用してインストールするには以下のように実施します。 Helm chartにBitnami PostgreSQLを含めるために、chartのrequirements.yamlまたはChart.yamlファイルがdependenciesの下にBitnamiリポジトリからのchartを指定しているかもしれません: dependencies: - name: postgresql version: 9.2.1 repository: https://charts.bitnami.com/bitnami condition:…
さらに見る -
“stable”なHelm ChartリポジトリからChartCenterでNGINXを移行する
| < 1 min read過去4年間、Kubernetes用のIngress NGINX Controllerをデプロイしたい人はHelmプロジェクトで管理されているstableリポジトリで公式のHelm chartであるnginx-ingressを見つけることができました。 ですがもうそんな時代は終わりました。リポジトリはリバースプロキシやロードバランサーとして使用されている最も人気のあるIngressコントローラーであるNGINXだけでなく、すべてのオープンソースのK8sアプリのためのものです。 Helm 3の登場に伴い、Helmプロジェクトはstableリポジトリを非推奨としています。2019年11月時点ではchart所有者が個々のリポジトリに移行していく中で、新規chartはstableとして受入れられませんでした。 — stableリポジトリはHelm Hubから削除され、今年の11月には正式に廃止される予定です。 これはNGINXデプロイのインストーラーやメンテナーにとって何を意味するのでしょうか?まず最初にNGINXプロジェクトはGitHubリポジトリにKubernetes用に新しいingress-nginx Helm chartを提供しています。NGINX Ingress Controllerのデプロイメントをインストールおよび更新する場合はこのリポジトリのchartを使用してください。 新しいchartは現在、同じバージョンのNGINXアプリを展開しているにもかかわらず、stableのchartと同じではありません。このため、新しいchartを使用してNGINXを更新する際には多少の調整が必要になります。 ここではどのような機能があるのか、またJFrog ChartCenterが移行に際してどのようにして役立つのかを見てみましょう。 Helmセントラル・リポジトリ stableなHelm chartは人気のある多数のKubernetesアプリの公式chartを常にセントラル・リポジトリで見つけることができることを意味していました。それはHelmクライアントにstableリポジトリを追加するだけです: $ helm repo add stable https://kubernetes-charts.storage.googleapis.com/ この単一のstableリポジトリから作成者が承認した最新のHelm chartを使用して間違いなくnginx-ingressをデプロイすることができます。 stableリポジトリはほぼ陳腐化しているため、既知のHelm chart唯一のソースとしては利用できなくなっています。NGINXはHelmクライアントに個別にingress-nginxを追加するように指示するようになっています: $ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx セントラル・リポジトリがなければ別のK8sアプリを維持する度に別のhelm repo addを実行する必要があります。 もっと良い方法はないのでしょうか? ChartCenterのIngress NGINXコントローラー JFrog ChartCenterはHelmコミュニティによって変更不可であり、安全で信頼性の高いchartを見つけ、1つの場所からすべてのchartをプロキシするための信頼できる唯一の情報源を持つために構築された無料のHelm chartセントラル・リポジトリです。Helmクライアントから1つのHelmセントラル・リポジトリとして使用できるので、多数公開されているHelmリポジトリを追加する必要がなく、代わりに1つだけを利用することができます。 ChartCenterを通して、30,000バージョン以上のHelm chartが利用可能であり、NGINX Ingressコントローラーを含む多数の人気のあるアプリchartがホームページに掲載されているため、容易に検索できます。 ChartCenterからstableなhelm chartからnginx-ingressを検索可能です: また、ChartCenterでcurrentなchartからingress-nginxを見つけることもできます。 ChartCenterの利用…
さらに見る -
JFrog ChartCenterを公開: コミュニティ用Helm Chartセントラル・リポジトリ
| < 1 min read公開されているHelm chartsの数は増え続けており、コミュニティにとっては素晴らしいことですが、膨大なHelm chartとHelm chartリポジトリを調べるのは困難な状況となっています。 船の船長が必要とするのは安全に到着するための詳細なリストだけではありません。氷山の一角以外の見えない場所にも危険があります。 このため、開発者コミュニティに公開するHelm Chart用の無償のセントラル・リポジトリであるChartCenterを発表いたします。 ChartCenterのエッジ ChartCenterのUIを通して、何千ものKubernetes Docker registryパッケージから必要なものを検索することができます。多くの公開リポジトリに分散しているアプリケーションを検索して利用することができます。ChartCenterは検索サービスのHelm HubやArtifact Hubに似ています。 しかし、ChartCenterはただのカタログではありません。Artifactoryを搭載したChartCenterは不変のバージョンを保持するHelm Chartリポジトリです。そのため、Helm CLIはすべての公開されているHelmChartを単一の場所から確実にダウンロードすることができ、真の単一ソースとなります。 すべての保存されたHelm Chartはスマートに利用できるように必要とする重要な情報を提供する堅牢なメタデータで管理されています。これらの機能がユーザにとってどのような意味を持つかをご紹介します: 不変、バージョニングHelm Chart ChartCenterはすべてのChartバージョンの単一の情報源です。今日使用しているHelm Chartのバージョンが先月または昨年使用したものと同じであることを常に確認できます。たとえ Helm Chartの所有者がリポジトリを不適切に変更や削除をした場合も同様です。ChartCenterは変更が発生した場合、そのバージョンにフラグを立てます。また、ChartCenterは元のリポジトリが何らかの理由で利用できなくなった場合、フェイルセーフ機能も提供しています。 ChartCenterはすべてのHelm Chartのバージョン、apiVersion、appVersionのメタデータも保持します。 使用データ ChartCenterはHelm Chartが別のHelm Chart(Subchartとして)の依存関係として使用されている場所も通知されます。 依存性の識別 HelmのChartバージョンごとに、ChartCenterではDockerイメージやSubchartなど、使用されているすべての依存関係を確認できます。UIで各Dockerイメージの依存性があるすべてのレイヤーを確認することができます。 脆弱性の確認 ChartCenterはJFrog Xrayの再帰的スキャンを実行し、Helm Chartのすべての依存関係のあるコンテナイメージに対して脆弱性分析を実行します。そのため、K8sアプリをデプロイする前に、あらゆるK8sアプリのセキュリティ・リスクを評価することができます。 メンテナのためのセキュリティ対策 また、ChartCenterではChartのメンテナがノートの提供やUI上でChartのセキュリティの概要を確認する機能も提供しています。CVEにタグを付けてメモを提供できるようにsecurity-mitigation.yamlファイルを開発しました。これらのメモはメンテナが更新されたChartで yamlを提供すると利用できるようになり、以下のように表示されます: ChartCenterの利用 これまではChartCenterの機能の一部を説明しましたが、ここからはHelmクライアントで使用する方法を説明します。 ステップ1: ChartCenterをHelmリポジトリとして追加 HelmクライアントにChartCenterリポジトリを単一のソースとして利用するための設定を追加します: $ helm repo add center https://repo.chartcenter.io $ helm repo update $…
さらに見る