HI~ 你也是鯨魚嗎? 在港口遇見其他鯨魚~
圖片來源:Docker (@Docker) / Twitter
在認識了 Service, Ingress 又架好了 Ingress Controller,現在終於能用 Ingress 架 Harbor 了吧~
大部分步驟和前面 Day 14 使用 nodePort 差不多~
本篇使用 Harbor helm version 1.9.3
kubectl create ns harbor
helm repo add harbor https://helm.goharbor.io
helm show values harbor/harbor --version 1.9.3 >> values.yaml
完整設定可以到 github Day 18 - values.yaml
expose:
type: ingress
tls:
enabled: true
certSource: auto
commonName: "harbor.example.domain.com"
...
ingress:
hosts:
core: harbor.example.domain.com
notary: notary.example.domain.com
notary:
...
labels: { environment: production, method: traefik } # 需要符合 Traefik 設定的 labelSelector
harbor:
...
labels: { environment: production, method: traefik } # 需要符合 Traefik 設定的 labelSelector
...
expose.ingress.hosts.core
)externalURL: https://harbor.example.domain.com
persistence:
enabled: false
harborAdminPassword: "Harbor12345"
設定完成後使用 helm install
helm install harbor -f values-ingress.yaml --namespace harbor harbor/harbor --version 1.9.3
因為 domain 不是我的,所以要自己設定 /etc/hosts
指向 ip
$ sudo vim /etc/hosts
增加 harbor domain
10.1.0.1 harbor.example.domain.com
接著就能網頁連上了~
因為目前掛的憑證是 harbor 自動產生的,Docker 不會認可這個憑證,需要再設定 insecure-registries
在 /etc/docker/daemon.json
增加 insecure-registries
{
"insecure-registries" : ["harbor.example.domain.com"]
}
根據 Docker insecure-registry 說明,就算是憑證不通過還是能以 HTTPS 傳輸
- If HTTPS is available but the certificate is invalid, ignore the error about the certificate.
- If HTTPS is not available, fall back to HTTP.
如果在 values tls 設定 certSource 為 none,則會改用 Traefik deafult 憑證
Ingress Controller 不只代理服務也能代理憑證~
expose:
tls:
enabled: true
certSource: none
...
總覺得都 Docker 設定 insecure-registries 很不安全
所以... 下一篇就來簽自己的憑證吧~