Harbor安裝參考
https://www.cnblogs.com/minseo/p/8905736.html
- 在Harbor設定https證書
修改harbor配置檔案,根據解壓到對應的目錄
# /opt/harbor/harbor.yaml
設定好重新安裝一下使配置生效
# ./install.sh
設定好之後瀏覽器使用https訪問
假設域名是harbor.test.com
https://harbor.test.com
客戶端登入和pull使用域名即刻不需要加https
則登入docker使用以下命令
# docker login harbor.test.com
- 在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地址訪問