2

我在 kubernetes 上使用 gitlab runner,kaniko 将图像推送到 docker 私有注册表(不安全),我怎样才能给 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”

4

2 回答 2

0

如果使用不安全的注册表,您必须使用kaniko 执行器的 --insecure选项,例如:

- /kaniko/executor --insecure --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $MY_REGISTRY/$MY_IMAGE:$MY_IMAGE_TAG
于 2020-07-04T10:14:46.557 回答
0

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

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

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

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

于 2019-11-05T10:07:04.437 回答