kubernetes - 在路径 `/registry` 公开 Kubernetes 集群内的私有 Docker 注册表
问题描述
Ingress
我在 Kubernetes NGINX 入口控制器 0.23.0 和以下对象公开的 Kubernetes 1.13 集群中有一个私有 Docker 注册表:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
name: my-name
namespace: my-namespace
spec:
rules:
- host: my-domain
http:
paths:
- backend:
serviceName: registry
servicePort: 5000
path: /?(.*)
tls:
- hosts:
- my-domain
secretName: my-secret
这使我可以按如下方式提取现有图像:
docker image pull my-cluster/my-image
我现在不会更改设置以使注册表暴露在my-cluster/registry
. 如何做到这一点,甚至有可能吗?
更改path
为/registry/?(.*)
没有成功。docker login my-cluster/registry
现在产生以下错误消息并且docker image pull my-cluster/registry/my-image
也不起作用。我目前对根本原因的猜测是,注册表还使用前缀registry
(在 中配置Ingress
)进行内部重定向。如果适用,如何配置(最好Ingress
也是)?
Error response from daemon: login attempt to https://my-cluster/v2/ failed with status: 404 Not Found
解决方案
我现在已经得出结论,通过类似 URL 的位置(例如my-cluster/registry
)而不是类似主机的位置(例如my-cluster
使用可选端口)来引用 Docker 注册表是不可能的。
因此,我将保留一个单独的 IP 地址和证书registry.my-cluster
并继续进行。
推荐阅读
- r - Optimizing strucchange with Rcpp
- rest - Delphi REST客户端/服务器(网络经纪人)+数据库+同时客户端请求
- oracle - 如何从 Oracle 数据库中选择 2 个日期不在同一月份和年份的记录
- javascript - 从不可变导入 get 方法但无法在我的选择器中读取
- python - 使用 azure 将法语语音转换为文本
- mysql - 导入大小为 20GB 的数据库转储
- sql - 仅选择 INFORMATION SCHEMA 中定义的值
- html - Yii2用颜色打印出gridview
- python - 在 Python 中绘制分段等高线图
- wicket - 在加载模型失败时在渲染阶段更改组件的内容