10.5. ミラーレジストリー用のクラスターの設定

イメージを作成し、ミラーレジストリーにミラーリングした後に、Pod がミラーレジストリーからイメージをプルできるようにクラスターを変更する必要があります。

以下を行う必要があります。

  • ミラーレジストリー認証情報をグローバルプルシークレットに追加します。
  • ミラーレジストリーサーバー証明書をクラスターに追加します。
  • ミラーレジストリーをソースレジストリーに関連付ける ImageContentSourcePolicy カスタムリソース (ICSP) を作成します。

    1. ミラーレジストリー認証情報をクラスターのグローバル pull-secret に追加します。

      $ oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=<pull_secret_location> 1
      1
      新規プルシークレットファイルへのパスを指定します。

      以下に例を示します。

      $ oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=.mirrorsecretconfigjson
    2. CA 署名のミラーレジストリーサーバー証明書をクラスター内のノードに追加します。

      1. ミラーレジストリーのサーバー証明書が含まれる設定マップを作成します。

        $ oc create configmap <config_map_name> --from-file=<mirror_address_host>..<port>=$path/ca.crt -n openshift-config

        以下に例を示します。

        S oc create configmap registry-config --from-file=mirror.registry.com..443=/root/certs/ca-chain.cert.pem -n openshift-config
      2. 設定マップを使用して image.config.openshift.io/cluster カスタムリソース (CR) を更新します。OpenShift Container Platform は、この CR への変更をクラスター内のすべてのノードに適用します。

        $ oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"<config_map_name>"}}}' --type=merge

        以下に例を示します。

        $ oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"registry-config"}}}' --type=merge
    3. ICSP を作成し、オンラインレジストリーからミラーレジストリーにコンテナープルリクエストをリダイレクトします。

      1. ImageContentSourcePolicy カスタムリソースを作成します。

        apiVersion: operator.openshift.io/v1alpha1
        kind: ImageContentSourcePolicy
        metadata:
          name: mirror-ocp
        spec:
          repositoryDigestMirrors:
          - mirrors:
            - mirror.registry.com:443/ocp/release 1
            source: quay.io/openshift-release-dev/ocp-release 2
          - mirrors:
            - mirror.registry.com:443/ocp/release
            source: quay.io/openshift-release-dev/ocp-v4.0-art-dev
        1
        ミラーイメージレジストリーおよびリポジトリーの名前を指定します。
        2
        ミラーリングされるコンテンツが含まれるオンラインレジストリーおよびリポジトリーを指定します。
      2. ICSP オブジェクトを作成します。

        $ oc create -f registryrepomirror.yaml

        出力例

        imagecontentsourcepolicy.operator.openshift.io/mirror-ocp created

        OpenShift Container Platform は、この CR への変更をクラスター内のすべてのノードに適用します。

    4. ミラーレジストリーの認証情報、CA、および ICSP が追加されていることを確認します。

      1. ノードにログインします。

        $ oc debug node/<node_name>
      2. /host をデバッグシェル内のルートディレクトリーとして設定します。

        sh-4.4# chroot /host
      3. config.json ファイルで認証情報の有無を確認します。

        sh-4.4# cat /var/lib/kubelet/config.json

        出力例

        {"auths":{"brew.registry.redhat.io":{"xx=="},"brewregistry.stage.redhat.io":{"auth":"xxx=="},"mirror.registry.com:443":{"auth":"xx="}}} 1

        1
        ミラーレジストリーおよび認証情報が存在することを確認します。
      4. certs.d ディレクトリーに移動します。

        sh-4.4# cd /etc/docker/certs.d/
      5. certs.d ディレクトリーの証明書を一覧表示します。

        sh-4.4# ls

        出力例

        image-registry.openshift-image-registry.svc.cluster.local:5000
        image-registry.openshift-image-registry.svc:5000
        mirror.registry.com:443 1

        1
        ミラーレジストリーが一覧にあることを確認します。
      6. ICSP がミラーレジストリーを registries.conf ファイルに追加していることを確認します。

        sh-4.4# cat /etc/containers/registries.conf

        出力例

        unqualified-search-registries = ["registry.access.redhat.com", "docker.io"]
        
        [[registry]]
          prefix = ""
          location = "quay.io/openshift-release-dev/ocp-release"
          mirror-by-digest-only = true
        
          [[registry.mirror]]
            location = "mirror.registry.com:443/ocp/release"
        
        [[registry]]
          prefix = ""
          location = "quay.io/openshift-release-dev/ocp-v4.0-art-dev"
          mirror-by-digest-only = true
        
          [[registry.mirror]]
            location = "mirror.registry.com:443/ocp/release"

        registry.mirror パラメーターは、ミラーレジストリーが元のレジストリーの前に検索されることを示します。

      7. ノードを終了します。

        sh-4.4# exit