• Русский
  • Как доверять небезопасному реестру образов?

    Описание проблемы

    Платформа реестра образов, в которой размещены компоненты, может не предоставлять HTTPS-сервис или не иметь действительного TLS-сертификата, выданного публичным центром сертификации. Если вы доверяете этому реестру, настройте ваше контейнерное окружение, выполнив следующие шаги.

    Настройка доверия к небезопасному реестру образов

    Примечания:

    • Все узлы, которые должны использовать образы, включая вновь добавленные, должны быть настроены, и на них должен быть перезапущен Containerd.
    • Конфигурация немного отличается для Containerd v1.4/v1.5 и v1.6. Следуйте соответствующим шагам для вашей версии.
    1. Выполните следующие команды на каждом узле в импортирующем кластере:

      • Сделайте резервную копию файла конфигурации

        mkdir -p '/var/backup-containerd-confs/'
        if ! [ -f /etc/containerd/config.toml ]; then
            echo 'Конфигурация Containerd не найдена. Пожалуйста, проверьте, правильно ли установлен containerd. Если проблема не решается, обратитесь в техническую поддержку.'
            exit 1
        else
            cp /etc/containerd/config.toml /var/backup-containerd-confs/config.toml_$(date +%F_%T)
        fi
      • Узнайте версию Containerd runtime

        # Получить версию containerd
        # Сравните эту версию с v1.6. Выберите соответствующие шаги
        ctr --version | grep -Eo 'v[0-9]+\.[0-9]+\.[0-9]+'
      Конфигурация Containerd v1.4 и v1.5 для небезопасных реестров
    2. Выполните следующие действия на каждом узле в импортирующем кластере:

      • Отредактируйте файл /etc/containerd/config.toml

        # Пример содержимого для добавления в конфигурационный файл
        # Строки в квадратных скобках — это секции. Если файл уже содержит секции с таким же именем, объедините их содержимое.
        [plugins."io.containerd.grpc.v1.cri".registry]
            [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
                [plugins."io.containerd.grpc.v1.cri".registry.mirrors."<registry-address>"]
                    endpoint = ["https://<registry-address>", "http://<registry-address>"]
                [plugins."io.containerd.grpc.v1.cri".registry.mirrors."192.168.134.43"]
                    endpoint = ["https://192.168.134.43", "http://192.168.134.43"]
            [plugins."io.containerd.grpc.v1.cri".registry.configs]
                [plugins."io.containerd.grpc.v1.cri".registry.configs."<registry-address>".tls]
                    insecure_skip_verify = true
                [plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.134.43".tls]
                    insecure_skip_verify = true
      • Перезапустите Containerd.

        systemctl daemon-reload && systemctl restart containerd
    Конфигурация Containerd v1.6 для небезопасных реестров
    1. Выполните следующие действия на каждом узле в импортирующем кластере:

      • Проверьте, существует ли в конфигурации параметр config_path.

        if ! grep -qF 'config_path' /etc/containerd/config.toml; then
            if grep -qE '\[plugins."io.containerd.grpc.v1.cri".registry.(mirrors|configs)(\.|\])' /etc/containerd/config.toml; then
                echo 'Следуйте шагам из раздела "Конфигурация Containerd v1.4 и v1.5 для небезопасных реестров".'
            else
                cat >> /etc/containerd/config.toml << 'EOF'
        [plugins."io.containerd.grpc.v1.cri".registry]
            config_path = "/etc/containerd/certs.d/"
        EOF
            fi
        fi
        
        config_path_var=$(grep -F '/etc/containerd/certs.d' /etc/containerd/config.toml)
        if [ -z "$config_path_var" ]; then
           echo 'Значение config_path в файле неожиданное. Пожалуйста, проверьте!'
           exit 1
        fi
      • Создайте файл hosts.toml.

        Если предыдущая команда вывела сообщение Следуйте шагам из раздела "Конфигурация Containerd v1.4 и v1.5 для небезопасных реестров"., смотрите Конфигурация Containerd v1.4 и v1.5 для небезопасных реестров.

        REGISTRY='<адрес реестра, полученный в разделе "Получение адреса реестра">'    
        
        mkdir -p "/etc/containerd/certs.d/$REGISTRY/"
        cat > "/etc/containerd/certs.d/$REGISTRY/hosts.toml" << EOF
        server = "$REGISTRY"
        [host."http://$REGISTRY"]
          capabilities = ["pull", "resolve", "push"]
          skip_verify = true
        [host."https://$REGISTRY"]
          capabilities = ["pull", "resolve", "push"]
          skip_verify = true
        EOF
      • Перезапустите Containerd.

        systemctl daemon-reload && systemctl restart containerd