はじめに
Rancherに登録さえしていれば、どのレジストリからもデフォルトでイメージはpull可能となっています。
しかし、セキュリティの観点から「このレジストリからしかpullできないようにしておきたい」という要望はきっと出てくると思います。
そういうときのために、Rancherにはレジストリのホワイトリストを設定する機能があります。
今回はその機能についてご紹介します。
quay.ioをレジストリに追加
まず、quay.ioをRancherのレジストリに追加しましょう。
今回はあらかじめquay.ioのアカウントは作成してあります。Infrastructure > Registries
からレジストリを追加しましょう。
Add Registry
して、Quay.ioを選択してからログイン情報を入力します。
正常にいけば、以下のようにQuayが増えているのが確認できます。
DockerHubとQuayからpull
Quayをレジストリに追加できたので、お試しでイメージをpullしてみましょう。
DockerHubからはnginx
イメージを、Quayからはあらかじめpushしておいたquay.io/kfukuyama/myfirstrepo
をそれぞれRancherのサービスとして追加してみます。
特に問題なく以下のようにpullも成功し、サービスも正常な状態となるはずです。
レジストリのホワイトリストを設定
それでは、ここでQuayからのイメージのみpullできるようレジストリのホワイトリストを設定してみましょう。Admin > Settings
に移動します。
Advanced Settingsに何やらちょっと恐い警告が書かれていますが、それをクリックして設定一覧を表示します。
そこでregistry.whitelist
を探します。
編集ボタンをクリックし、ホワイトリストに設定するレジストリの項目にquay.io
と入力します。
この状態で先程DockerHubから取得したnginx
をUpgradeしようとすると、以下のように拒否されるようになります。
「対象のレジストリがホワイトリストに入っていないのでだめですよ!」ってことですね。
ホワイトリスト機能が適用されているのがわかります。
もちろん、このときQuayから取得したquay.io/kfukuyama/myfirstrepo
イメージは正常にUpgradeできます。
さて、DockerHubからイメージをpullできなくなるのも何かと不便なことが多いので、Quayに加えてDockerHubからもイメージをpullできるようにしましょう。
方法として、カンマ区切りでホワイトリストを追加することができます。
こうすることで、DockerHubから取得しているnginxのイメージも正常にpullできることが確認できます。
おわりに
このようにAdmin側でレジストリのホワイトリストを作ることができます。
セキュリティが気になる方や、レジストリに関してもう一歩コントロールをしておきたい方はぜひ使ってみてください。