nginx - 如何在 k8s 集群上配置 Harbor?
问题描述
我正在尝试使用 helm(values.yaml)在 k8s 集群(由 Rancher 提供)上部署 Harbor(私有 docker 注册表)。下面是我的 valuse.yaml。
网络
我在 k8s 入口 nginx 控制器前面有 nginx。
nginx(http 301 重定向到 https,例如http://harbor.mydomain.com -> https://harbor.ssgadm.com)-> ingress-nginx -> 港口服务Harbor 与 nginx
https://github.com/goharbor/harbor/blob/master/docs/1.10/install-config/troubleshoot-installation.md#using-nginx-or-load-balancing
Harbor 团队说如果 Harbor 落后一个 nginx 代理,删除标头“X-Forwarded-Proto”,所以我在 values.yaml 中添加了入口注释
这是我的问题。
1. 登录docker成功,但是推送docker镜像失败,消息:denied:requested access to the resource is denied
- 在 Harbor 网页上看不到 minio 注册表端点
找不到任何端点!
那么,你能帮我解决问题吗?
--- 港口管理员密码:“管理员” 密钥:“添加你的秘密0” 日志级别:“信息” 暴露: 类型:“入口” 入口: 主持人: 核心:“harbor.mydomain.com” 公证人:“harbor.notary.mydomain.com” 注释: ingress.kubernetes.io/proxy-body-size:“0” ingress.kubernetes.io/ssl-redirect:“真” nginx.ingress.kubernetes.io/proxy-body-size: "0" nginx.ingress.kubernetes.io/ssl-redirect:“真” nginx.org/server-snippets: | 地点 / { proxy_hide_header 'X-Forwarded-Proto' } 位置 /v2/ { proxy_hide_header 'X-Forwarded-Proto' } 定位服务/ { proxy_hide_header 'X-Forwarded-Proto' } 负载均衡器: 知识产权:“” tls: 启用:假 密名:“” externalURL:“https://harbor.mydomain.com” 坚持: 图像图表存储: 类型:“s3” 禁用重定向:真 天蓝色: 帐户名称: ”” 帐户密钥:“” 容器: ”” 气相色谱: 桶: ”” 编码密钥:“” s3: 桶:“码头工人” 地区:“us-east-1” 访问密钥:“迷你” 密钥:“迷你” 区域端点:“https://minio.mydomain.com” 开源软件: 桶: ”” 地区: ”” 访问密钥ID:“” 访问密钥:“” 迅速: 授权人:“https://storage.myprovider.com/v3/auth” 用户名: ”” 密码: ”” 容器: ”” 启用:真 持久卷声明: 注册表: storageClass:“nfs-provisioner” 大小:“1Gi” 现有声明:“” 图表博物馆: storageClass:“nfs-provisioner” 大小:“1Gi” 现有声明:“” 工作服务: storageClass:“nfs-provisioner” 大小:“1Gi” 现有声明:“” 数据库: storageClass:“nfs-provisioner” 大小:“1Gi” 现有声明:“” 雷迪斯: storageClass:“nfs-provisioner” 大小:“1Gi” 现有声明:“” 工作服务: 作业记录器:“数据库” 数据库: 类型:“内部” 外部的: 主持人: ”” 用户名: ”” 密码: ”” 核心数据库:“注册表” 克莱尔数据库:“克莱尔” 公证服务器数据库:“公证服务器” notarySignerDatabase:“notary_signer” sslmode:“禁用” 端口:“5432” 雷迪斯: 类型:“内部” 外部的: 主持人: ”” 端口:“6379” 密码: ”” 克莱尔: 启用:真 公证人: 启用:假 图表博物馆: 启用:真 证书: 启用:真
解决方案
确保满足所有先决条件。
确保您已向Harbor 和 Docker提供证书。
生成 ca.crt、yourdomain.com.crt 和 yourdomain.com.key 文件后,您必须将它们提供给 Harbor 和 Docker,并重新配置 Harbor 以使用它们。最后重启 Docker 引擎。
要启用将图像推送到 docker 注册表,请执行以下命令:
您需要包含 Docker Hub 的命名空间以将其与您的帐户相关联。命名空间与您的 Docker Hub 帐户名称相同。您需要将图像重命名为 YOUR_DOCKERHUB_NAME/docker-whale。
推送前标记图像:
$ docker tag your_image YOUR_DOCKERHUB_NAME/your_image
然后你应该能够推动它。
$ docker push YOUR_DOCKERHUB_NAME/your_image
您还在配置文件中复制nginx.ingress.kubernetes.io/proxy-body-size
了注释。
对于 NGINX,当请求中的大小超过客户端请求正文的最大允许大小时,将向客户端返回 413 错误。这个大小可以通过参数client_max_body_size来配置。
要为所有 Ingress 规则全局配置此设置,可以在 NGINX ConfigMap 中设置 proxy-body-size 值。要在 Ingress 规则中使用自定义值,请定义以下注释:
nginx.ingress.kubernetes.io/proxy-body-size: 8m
尝试添加0m。
还有环境完整性检查:如果没有 SSL,应该会失败,在数据库中启用外部 ss:
sslmode=require
如果出现更多问题,请检查已安装港口的日志:
$ kubectl logs -n harbor your-harbor-pod
推荐阅读
- java - 当功能“http://apache.org/xml/features/disallow-doctype-decl”设置为 true 时,不允许获取 DOCTYPE
- r - 使用 dplyr 将重复测量数据与 R 中的横截面初始调查相结合
- keras - 对 keras 模型的图像分割输出进行阈值处理
- c# - C# 字符串比较忽略变音符号,除了 unicode 半空格 (\u200c)
- html - 左对齐有序列表的数字
- simulation - 我可以从 Houdini 将粒子流体导出为 VDB 吗?
- ios - RxSwift 文本 ControlProperty 对 UITextView 和 UITextField 有不同的行为
- java - 计时器的运行速度比代码中的值快吗?
- hadoop - hdfs dfs -ls 在具有多个名称节点的远程文件系统上?
- r - 重命名R中的多列