トラブルシューティング

トラブルシューティング

「"stable"チャートリポジトリからアップデートを取得できません」という警告が表示されます。

helm repo listを実行します。stableリポジトリがstorage.googleapis.com URLを指している場合は、そのリポジトリを更新する必要があります。2020年11月13日、Helm Chartsリポジトリは1年間の非推奨期間を経てサポートされなくなりました。アーカイブはhttps://charts.helm.sh/stableで利用可能になりましたが、アップデートはもう提供されません。

リポジトリを修正するには、次のコマンドを実行できます。

$ helm repo add stable https://charts.helm.sh/stable --force-update  

同じことがincubatorリポジトリにも当てはまります。アーカイブはhttps://charts.helm.sh/incubatorで利用可能です。修復するには、次のコマンドを実行できます。

$ helm repo add incubator https://charts.helm.sh/incubator --force-update  

「WARNING: "kubernetes-charts.storage.googleapis.com" は "stable" 用に非推奨となり、2020年11月13日に削除されます」という警告が表示されます。

古いGoogle Helmチャートリポジトリは、新しいHelmチャートリポジトリに置き換えられました。

これを恒久的に修正するには、次のコマンドを実行します。

$ helm repo add stable https://charts.helm.sh/stable --force-update  

incubatorで同様のエラーが発生した場合は、このコマンドを実行します。

$ helm repo add incubator https://charts.helm.sh/incubator --force-update  

Helmリポジトリを追加すると、「Error: Repo "https://kubernetes-charts.storage.googleapis.com" is no longer available」というエラーが表示されます。

Helm Chartリポジトリは、1年間の非推奨期間の後、サポートされなくなりました。これらのリポジトリのアーカイブはhttps://charts.helm.sh/stablehttps://charts.helm.sh/incubatorで利用可能ですが、アップデートはもう提供されません。helm repo addコマンドでは、--use-deprecated-reposを指定しない限り、古いURLを追加することはできません。

GKE (Google Container Engine) で「No SSH tunnels currently open」と表示されます。

Error: Error forwarding ports: error upgrading connection: No SSH tunnels currently open. Were the targets able to accept an ssh-key for user "gke-[redacted]"?

エラーメッセージの別のバリエーションは次のとおりです。

Unable to connect to the server: x509: certificate signed by unknown authority

問題は、ローカルのKubernetes構成ファイルに正しい認証情報が含まれている必要があることです。

GKEでクラスタを作成すると、SSL証明書と認証局を含む認証情報が提供されます。これらは、kubectlhelmがアクセスできるように、Kubernetes構成ファイル(デフォルト:~/.kube/config)に保存する必要があります。

Helm 2からの移行後、helm listに一部(またはなし)のリリースしか表示されません。

Helm 3では、リリースをスコープするためにクラスター名前空間全体を使用するようになったという事実を見落としている可能性があります。これは、リリースを参照するすべてのコマンドで、次のいずれかを行う必要があることを意味します。

  • アクティブなkubernetesコンテキストの現在の名前空間(kubectl config view --minifyコマンドで記述されている)に依存する、
  • --namespace/-nフラグを使用して正しい名前空間を指定する、または
  • helm listコマンドの場合は、--all-namespaces/-Aフラグを指定する

これは、helm lshelm uninstall、およびリリースを参照するその他すべてのhelmコマンドに適用されます。

macOSでは、ファイル/etc/.mdns_debugにアクセスされます。なぜですか?

macOSでHelmが/etc/.mdns_debugという名前のファイルにアクセスしようとするケースを認識しています。ファイルが存在する場合、Helmは実行中にファイルハンドルを開いたままにします。

これは、macOSのMDNSライブラリによって引き起こされます。デバッグ設定(有効な場合)を読み取るために、そのファイルをロードしようとします。ファイルハンドルは開いたままにするべきではなく、この問題はAppleに報告されています。ただし、この動作を引き起こすのはHelmではなくmacOSです。

Helmにこのファイルをロードさせたくない場合は、ホストネットワークスタックを使用しない静的ライブラリとしてHelmをコンパイルできる場合があります。そうすると、Helmのバイナリサイズが大きくなりますが、ファイルが開かれるのを防ぐことができます。

この問題は、当初、潜在的なセキュリティ問題としてフラグが立てられました。しかし、この動作によって引き起こされる欠陥や脆弱性はないと判断されました。

以前は機能していたのに、helm repo addが失敗します

helm 3.3.1以前では、helm repo add <reponame> <url>コマンドで、既に存在するリポジトリを追加しようとすると出力が得られません。フラグ--no-updateは、リポジトリが既に登録されている場合にエラーを発生させます。

helm 3.3.2以降では、既存のリポジトリを追加しようとするとエラーが発生します。

エラー:リポジトリ名(reponame)は既に存在します。別の名前を指定してください

デフォルトの動作が反転しました。--no-updateは無視されるようになりました。既存のリポジトリを置き換える(上書きする)場合は、--force-updateを使用できます。

これは、Helm 3.3.2リリースノートで説明されているセキュリティ修正のための重大な変更によるものです。

Kubernetesクライアントのロギングを有効にする

Kubernetesクライアントのデバッグ用のログメッセージの出力は、klogフラグを使用して有効にできます。ほとんどの場合、詳細度レベルを設定するために-vフラグを使用すれば十分です。

helm list -v 6

Tillerのインストールが機能しなくなり、アクセスが拒否されます。

Helmリリースは、以前はhttps://storage.googleapis.com/kubernetes-helm/から入手可能でした。「get.helm.shのお知らせ」で説明されているように、公式の場所は2019年6月に変更されました。GitHub Container Registryでは、すべての古いTillerイメージが利用可能です。

過去に使用したストレージバケットから古いバージョンのHelmをダウンロードしようとすると、それらが見つからない場合があります。

<Error>
    <Code>AccessDenied</Code>
    <Message>Access denied.</Message>
    <Details>Anonymous caller does not have storage.objects.get access to the Google Cloud Storage object.</Details>
</Error>

レガシーTillerイメージの場所では、2021年8月にイメージの削除を開始しました。これらのイメージは、GitHub Container Registryの場所で利用可能にしました。たとえば、バージョンv2.17.0をダウンロードするには、次のように置き換えます。

https://storage.googleapis.com/kubernetes-helm/helm-v2.17.0-linux-amd64.tar.gz

を次のように置き換えます。

https://get.helm.sh/helm-v2.17.0-linux-amd64.tar.gz

Helm v2.17.0で初期化するには

helm init --upgrade

または、別のバージョンが必要な場合は、--tiller-imageフラグを使用してデフォルトの場所をオーバーライドし、特定のHelm v2バージョンをインストールします。

helm init --tiller-image ghcr.io/helm/tiller:v2.16.9

注: Helmのメンテナーは、現在サポートされているバージョンのHelmへの移行を推奨しています。Helm v2.17.0はHelm v2の最終リリースでした。Helm v2は、Helm 2およびChartsプロジェクトは現在サポート対象外ですで詳しく説明されているように、2020年11月以降サポートされていません。それ以降、Helmに対して多くのCVEが報告されており、これらの脆弱性はHelm v3で修正されていますが、Helm v2では修正されることはありません。公開されているHelmのアドバイザリーの最新リストを確認し、Helm v3への移行を今すぐ計画してください。