AWS ECSで insecureレジストリ(非SSL)を参照したい

| コメントをどうぞ

お盆も過ぎまして、ここ最近はなんだか涼しく感じるTokyoです。
そろそろ夏休みシーズンも終わりですね。
私はというもの8月は業務に明け暮れ、9月に夏休みがずれました。

がはは!俺が勝ち組だ!

どうも、DiceK Mikamiです。
 
 
今回は、AWS ECS(EC2 Container Service)にて、非SSLレジストリからイメージを取得するTipsをご紹介したいと思います。

ECSとは言っても、実態はAmazon Linux上でDockerが動いているだけなので非SSLレジストリを利用することは非常に簡単です。

/etc/sysconfig/docker

export other_args="--insecure-registry <リモートレジストリのIP>"

該当ファイルに--insecure-registryを渡し、Dockerを再起動すればOKな訳です。
 
 
ですが、ECSではそうはいきません。
カジュアルにECSを利用するのであれば、大して問題にもなりませんが、ECSインスタンスを制御するために起動設定&オートスケーリングを利用している場合、困った事態になります。
インスタンスの起動(及びコンテナの配備)は自動化されてしまっているので、こうした設定をすることが難しいものになってしまいます。
 
 
そこでインスタンスの起動設定内にある[ユーザーデータ]項目で問題を解決します。

起動設定

起動設定

#!/bin/bash
echo ECS_CLUSTER=<ECSクラスター名> >> /etc/ecs/ecs.config
echo "export other_args=\"--insecure-registry <リモートレジストリのIP>\"" >> /etc/sysconfig/docker
service docker restart
docker start ecs-agent

こんな感じです。
2行目はECSクラスタに紐付ける処理です。
で、重要なのは3行目以降です。

3行目でdockerにinsecure-registryオプションを渡し、その後ろでDockerの再起動とecs-agentコンテナを起動しています。
ユーザーデータの処理タイミングは、EC2に詳しい人に聞いていただくとして、この処理を行っていないとinsecure-registryオプションが有効になりません。
 
 
「SSL証明書作れよ」と思ってしまいますが、同じVPC内であったり、トラステッドな領域内では、面倒極まりない いささか煩雑に感じてしまいます。
インフラで吸収できるならばそれに越したことありませんよね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>