OpenShift Origin を Proxy 配下に構築したときにドハマリしたので、ハマりポイントをメモ。
前提条件
oc version 1.3.1 を使用し、oc cluster up で起動させる想定です。
Vagrant を使う場合とかは知らない。
ホスト OS は CentOS 7 です。
Docker の proxy 設定
/etc/systemd/system/docker.service.d/http-proxy.conf ファイルを作ります。
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:3128" "HTTPS_PROXY=http://proxy.example.com:3128" "NO_PROXY=localhost,127.0.0.1,xip.io"
記述方法は Docker のドキュメントを見ればいいのですが、一点注意。
NO_PROXY には CIDR 形式でアドレスを記述できません。例えば 10.0.0.0/8 はダメです。
個別に IP アドレスがドメイン名/ホスト名を列挙しなければなりません。
oc cluster up
oc cluster up を実行する際に、-e オプションを使って環境変数を指定する必要があります。
oc cluster up \
-e HTTP_PROXY=http://proxy.example.com:3128 \
-e HTTPS_PROXY=http://proxy.example.com:3128 \
-e '"NO_PROXY=localhost,xip.io,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16"'
NO_PROXY を設定しないと OpenShift ノード間の REST API 呼び出しが全部 Proxy に行ってしまうので、ちゃんと設定してあげる必要があります。
ここで注意しないといけないのは、-e オプションにカンマ込の文字列を渡してしまうとそこから後が切られてしまう(捨てられてしまう)ということです。このため、NO_PROXY を指定する場合は '""' で引数全体を囲んでやらなければなりません。
これは Issue 9565 あたりを参照。