kubernetes - 尝试推送到不安全的私有(private) docker 注册表时检查推送权限时出错

标签 kubernetes gitlab-ci gitlab-ci-runner docker-registry kaniko

我在 kubernetes 上使用 gitlab runner,kaniko 将图像推送到 docker 私有(private)注册表(不安全),我怎样才能给 kaniko 推送权限?

我试过 --insecure-registry, --skip-tls-verify params 但有同样的错误

build:
  stage: build
  image:
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: [""]
  script:
    - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --insecure-registry --destination registry-ip:5000/soccer

检查推送权限时出错——确保您输入了正确的标签名称,并且您的身份验证正确,然后重试:检查“registry-ip:5000/soccer”的推送权限:发布http://registry-ip:5000/v2/soccer/blobs/uploads/ :net/http:HTTP/1.x 传输连接中断:HTTP 响应格式错误“\x15\x03\x01\x00\x02\x02\x16”

最佳答案

推送到不安全的注册表需要更改 docker 守护进程。需要编辑 Docker 守护程序(无论您为 Kubernetes 集群使用什么运行时,例如 Docker、Containerd 等。我假设您使用 Docker 守护程序)都需要进行编辑以允许不安全的注册表。编辑/etc/docker/daemon.json并添加以下内容:

{
    "insecure-registries" : [ "registry-ip:5000" ]
}

然后在每个节点上重新启动 docker。

更好的方法是在本地 docker 注册表上添加某种形式的身份验证。您可以在 Docker 注册表上启用 HTTP 基本身份验证。或者,您可以使用签名证书在 docker 注册表上设置 SSL(尽管自签名证书需要添加到 Docker 守护程序才能被信任)。

关于kubernetes - 尝试推送到不安全的私有(private) docker 注册表时检查推送权限时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58706074/

相关文章:

Java - Kubernetes 按标签查找服务

docker - CI脚本作业之前如何在推送时重建Docker镜像

gitlab - CI_APPLICATION_TAG 在 GItLab 中定义在哪里?

gitlab-ci.yaml `config contains unknown keys: rules` 尝试使用规则时

docker - 无法设置文件修改时间,路径= './pubspec.lock'(操作系统错误:不允许操作,errno = 1)

java - java项目的gitlab-ci

function - gitlab ci 脚本功能失败时屏蔽 exit 1

docker - 从 yaml 文件创建 kubernetes docker-registry 密码?

kubernetes - Airflow kubernetes pod 运算符(operator)和任务之间共享文件?

machine-learning - 如何为 KubeFlow pipeline 构建镜像?