Harbor设置https访问

Harbor安装参考
https://www.cnblogs.com/minseo/p/8905736.html

  1. 在Harbor设置https证书
    修改harbor配置文件,根据解压到对应的目录
# /opt/harbor/harbor.yaml

image
设置好重新安装一下使配置生效

# ./install.sh

设置好之后浏览器使用https访问
假设域名是harbor.test.com

https://harbor.test.com

客户端登录和pull使用域名即刻不需要加https
则登录docker使用以下命令

# docker login harbor.test.com
  1. 在Nginx设置反向代理
    如果在Nginx设置反向代理则不能在harbor设置https证书,如果在nginx和harbor配置文件都设置了https证书则访问会出现多重定向的问题导致无法访问
INFO[0010] Error logging in to endpoint, trying next endpoint  error="Get \"https://harbor.test.com:443/v2/\": stopped after 10 redirects"

本次使用Ingress反向代理,svc和ingress配置文件如下

# cat harbor-svc.yaml 
apiVersion: v1
kind: Service
metadata:
  name: harbor-outside-svc # Service的名称,跟Endpoints名称保持一致
spec:
  type: NodePort # Service的类型,需要对外提供服务的话,使用NodePort,如不需要外部访问,只限于内部访问,则使用ClusterIP
  ports:
  - name: out-agent-port # 端口名称,跟Endpoints的端口名称保持一致
    port: 80 #集群內部访问端口
    nodePort: 42008 # 对外提供服务的端口,仅NodePort模式下生效
    protocol: TCP # 协议类型
  sessionAffinity: None
---
apiVersion: v1
kind: Endpoints 
metadata:
  name: harbor-outside-svc # Endpoints的名称,跟Service名称保持一致
subsets:
- addresses:
  - ip: 192.168.3.11 # 需要被代理出去的服务器的IP,即我们上面部署了httpd服务的IP
  ports:
  - port: 80 # httpd服务的端口
    protocol: TCP # 协议类型,需要跟Service的保持一致
    name: out-agent-port # 端口名称,跟Service的端口名称保持一致

ingress配置文件

# cat harbor-ingress.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  generation: 1
  name: harbor-ingress
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: 4096m
spec:
  rules:
  - host: harbor.test.com
    http:
      paths:
      - backend:
          serviceName: harbor-outside-svc
          servicePort: 80
        path: /
  tls:
  - hosts:
    - harbor.test.com
    secretName: test.com

应用配置文件

# kubectl apply -f harbor-svc.yaml
# kubectl apply -f harbor-ingress.yaml

访问和上面配置访问是一样的

可以使用https加域名访问,在内网也可以使用http加ip地址访问,如果使用http访问则需要设置以下信息

# cat /etc/docker/daemon.json 
{
          "insecure-registries": ["192.168.3.61"]
}
posted @ 2024-05-15 15:26  minseo  阅读(24)  评论(0编辑  收藏  举报