2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Proxy環境下でKinD(Kubernetes-in-Docker)を利用する

Last updated at Posted at 2021-10-27

はじめに

背景
kind (Kubernetes-in-Docker)を利用すると簡単にマルチノードのKubernetesクラスタを作成できます。
プロキシ環境下でkindクラスタを作成し、クラスタのノードからインターネットに接続する際は各ノードにプロキシの設定を行う必要があります。
Kubernetesクラスタがコンテナイメージをpullするためにも、プロキシの設定は必要になります。
プロキシの設定を入れる方法を調べてもすぐには分からなかったので備忘としてここに記載します。

目標

  • Proxy環境下でkindを利用できるようになる
    (k8sクラスタのノードからプロキシを利用する)

kindクラスタのノードに環境変数をセットする方法

通常、コンテナからプロキシを利用する場合は、
コンテナにhttp_proxyhttps_proxyの環境変数を設定します。
kindで作成したKubernetesクラスタのノードについても同様です。
kind公式サイトにも下記の通り記載があります。

If you are running kind in an environment that requires a proxy, you may need to configure kind to use it.
You can configure kind to use a proxy using one or more of the following environment variables (uppercase takes precedence):

・HTTP_PROXY or http_proxy
・HTTPS_PROXY or https_proxy
・NO_PROXY or no_proxy

https://kind.sigs.k8s.io/docs/user/quick-start/#configure-kind-to-use-a-proxy

これに関してはまあ当然の話なのですが、1つだけ疑問が生じます。

「どうやって環境変数を設定すんの?」

kindではyamlファイルにクラスタの設定を記載し、
kind createとコマンドを打つと自動でKubernetesのノード用コンテナが起動します。

yamlファイルでクラスタの設定を行うということは、
通常のKubernetesのマニフェストと同様にenvなどの項目をyaml内に設定すると良さそうです。
しかし、どうやらその方法ではできない様子。

まさか、各ノード1つ1つに環境変数を設定するのか?
いや、そんなわけないな.....。

こんな調子で数時間悶々としていました。
調べても全く情報は得られず、あきらめて再度公式ドキュメントを読み直しました。
すると下記の注意書きに気が付きました。

NOTE: If you set a proxy it would be passed along to everything in the kind nodes.

https://kind.sigs.k8s.io/docs/user/quick-start/#configure-kind-to-use-a-proxy

一瞬何を言ってるか理解できませんが、
どうやらkind create clusterコマンドを実行するマシンに環境変数を設定しておけば
自動的にkindクラスタのノード(コンテナ)にも環境変数を設定してくれるみたいです。
(予想外の方法でした.......)

Windowsで利用する場合は、例えば以下のようにします。

C:\Users\user\kind> set HTTP_PROXY=http://<ProxyID>:<ProxyPW>@<ProxyHost>:<ProxyPort>
C:\Users\user\kind> set HTTPS_PROXY=http://<ProxyID>:<ProxyPW>@<ProxyHost>:<ProxyPort>
C:\Users\user\kind> kind create cluster --config=sample-cluster.yaml

上記方法により、全てのノードにプロキシの設定が入っていることを確認できました。

(参考)プロキシを使わずコンテナイメージをクラスタへ追加する方法

kindにはオフライン環境でもコンテナイメージをクラスタへ追加できる機能があります。
Loading an Image Into Your Clusterに記載がある通り
下記のようなコマンドでイメージを追加できます。

オフライン環境だけでなく、kubernetesクラスタ内からイメージをpullする必要が無いときやCICDのパイプライン等でもこちらの方法も使えそうです。

C:\Users\user\kind> kind load docker-image [ <コンテナイメージ名>... ] --name <kindクラスタ名>
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?