minikube

minikubeでinsecure docker registryを使う

minikubeでローカルDocker Registryを扱う

はじめに

minikubeはKubernetesを手元の環境に簡単にデプロイすることができます。

そこで、KubernetesのPodやDocker MachineのようにしてローカルのDocker Registryのimageを指定することがあるかと思います。

ただし、httpsではないinsecureなDocker RegistryはDockerの環境変数"insecure-registry"で指定しないといけないのですが、minikubeでは指定方法が若干特殊だったのでまとめておきました。

指定しないと、以下のようなエラーが発生します。

fail: server gave HTTP response to HTTPS client.

minikube作成"時"にinsecure-registryを指定する

minikubeを作成する際にinsecure-registryを指定するのは簡単です。

minikube startコマンドに--insecure-registryというオプションとinsecureなDocker RegistryのIPアドレスを指定するだけです。(192.168.1.0/24のようにレンジでも指定可能)

minikube start --insecure-registry 192.168.1.1:5000

このオプションを指定して作成したminikubeにSSH経由でdockerdプロセスを確認すると以下のように"insecure-registry"の指定があることが分かります。

$ minikube ssh -- systemctl status docker | grep insecure
           ├─ 2570 /usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --tlsverify --tlscacert /etc/docker/ca.pem --tlscert /etc/docker/server.pem --tlskey /etc/docker/server-key.pem --label provider=virtualbox --insecure-registry localhost:5000 --insecure-registry 192.168.99.103:31000
#$

minikube作成"後"にinsecure-registryを指定する

minikubeをいじっていて、後で "あ、ローカルのinsecure Registry使いたいな、だけどminikube再作成したくないな"という場面もあると思います。

そこで、minikubeを動かしているPCにminikubeの設定ファイルがあるので、それを修正しminikube再起動することでinsecure registryを許可するようにします。

$ vim ~/.minikube/machines/minikube/config.json

以下のように修正します。自分の場合は45行目を追記しています。(各自、自らの環境で公開しているinsecure registryの情報に置き換えてください)

config.json
 43             "InsecureRegistry": [
 44                 "localhost:5000",
 45                 "192.168.99.103:31000"

この後、minikubeを再起動することで、上記ファイルが読み込まれてinsecureなDocker Registryが利用できるようになります。

# minikubeの停止
$ minikube stop

# minikubeの起動
$ minikube start