Harbor设置https访问
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地址访问,如果使用http访问则需要设置以下信息
# cat /etc/docker/daemon.json
{
"insecure-registries": ["192.168.3.61"]
}