Harbor設定https訪問

minseo發表於2024-05-15

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地址訪問

相關文章