11.2. インポート用に許可されるレジストリーの設定
以下の例に示されるように、imagePolicyConfig:allowedRegistriesForImport
セクション以下にある master-config.yaml にインポート用に許可されるレジスターを設定できます。この設定がない場合は、すべてのイメージが許可されます。 これはデフォルトになります。
例11.1 インポート用に許可されるレジストリーの設定例
imagePolicyConfig: allowedRegistriesForImport: - domainName: registry.redhat.io 1 - domainName: *.mydomain.com insecure: true 2 - domainName: local.registry.corp:5000 3
各ルールは以下の属性で設定されています。
-
domainName
: ホスト名であり、オプションでその最後は:<port>
接尾辞になり、ここで特殊なワイルドカード文字 (?
、*
) が認識されます。ワイルドカード文字は : 区切り文字の前後の両方に置くことができます。ワイルドカード文字は:
セパレーターの前後に置くことができます。ワイルドカードは、セパレーターの存在に関係なく、セパレーターの前後の部分にのみ適用されます。 -
insecure
::<port>
の部分がdomainName
にない場合、一致するポートを判別するために使用されるブール値です。true の場合、domainName
はインポート時に非セキュアなフラグが使用されている限り、接尾辞が:80
のポートが設定されているか、またはポートが未指定のレジストリーに一致します。false の場合、接尾辞が:443
のポートか、またはポートが未指定のレジストリーが一致します。
ルールが同じドメインのセキュアなポートと非セキュアなポートの両方に一致する場合、ルールは 2 回一覧表示されるはずです (1 回は insecure=true
が設定され、もう 1 回は insecure=false
が設定されます)。
修飾されていないイメージ参照は、ルールの評価前に docker.io
に対して修飾されます。これらをホワイトリストに追加するには、domainName: docker.io
を使用します。
domainName: *
ルールは任意のレジストリーのホスト名に一致しますが、ポートは依然として 443
に制限された状態になります。任意のポートで機能する任意のレジストリーに一致させるには、domainName: *:*
を使用します。
インポート用に許可されるレジストリーの設定例 で設定されるルールに基づいて、以下が実行されます。
-
oc tag --insecure reg.mydomain.com/app:v1 app:v1
は、mydomain.com
ルールの処理によってホワイトリストに追加されます。 -
oc import-image --from reg1.mydomain.com:80/foo foo:latest
もホワイトリストに追加されます。 -
oc tag local.registry.corp/bar bar:latest
は、ポートが 3 番目のルールの5000
に一致しないために拒否されます。
拒否されたイメージのインポートにより、以下のテキストのようなエラーメッセージが生成されます。
The ImageStream "bar" is invalid: * spec.tags[latest].from.name: Forbidden: registry "local.registry.corp" not allowed by whitelist: "local.registry.corp:5000", "*.mydomain.com:80", "registry.redhat.io:443" * status.tags[latest].items[0].dockerImageReference: Forbidden: registry "local.registry.corp" not allowed by whitelist: "local.registry.corp:5000", "*.mydomain.com:80", "registry.redhat.io:443"