iT邦幫忙

2022 iThome 鐵人賽

DAY 18
0
DevOps

前端轉生~到了實驗室就要養幾隻可愛鯨魚:自架 Kubernetes 迷航日記系列 第 18

Day 18 — 有個私人的港口還好吧:私有儲存庫 Harbor (二)(使用 Ingress)

  • 分享至 

  • xImage
  •  

可愛鯨魚

HI~ 你也是鯨魚嗎? 在港口遇見其他鯨魚~

圖片來源:Docker (@Docker) / Twitter

在認識了 Service, Ingress 又架好了 Ingress Controller,現在終於能用 Ingress 架 Harbor 了吧~

架設 Harbor in Kubernetes

大部分步驟和前面 Day 14 使用 nodePort 差不多~

本篇使用 Harbor helm version 1.9.3

建立 Namespace

kubectl create ns harbor

取得 Harbor values

helm repo add harbor https://helm.goharbor.io
helm show values harbor/harbor --version 1.9.3 >> values.yaml

以 ingress 架設

完整設定可以到 github Day 18 - values.yaml

修改 values

  • expose: 設定公開服務的方式
    • tls: tls 相關設定
      • certSource: 設定自動產生憑證
      • commonName: 設定憑證的 CN,改成自己管的 domain
    • ingress: ingress 相關設定
      • hosts: 設定各項服務的 ingress host
      • notary: 設定 notary 服務的 label 和 annotation,需要符合 Traefik 的設定
      • harbor: 設定 harbor 服務的 label 和 annotation,需要符合 Traefik 的設定
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
    ...
  • externalURL: 設定外部連接的 URL,和連接 registry 機制有關,這裡設定要符合前項 expose 設定 harbor 的 ingress hosts (expose.ingress.hosts.core)
externalURL: https://harbor.example.domain.com
  • persistence: 先不使用 PersistenceVolume
persistence:
  enabled: false
  • harborAdminPassword: 預設 admin 登入密碼
harborAdminPassword: "Harbor12345"

使用 helm 安裝

設定完成後使用 helm install

helm install harbor -f values-ingress.yaml --namespace harbor harbor/harbor --version 1.9.3

設定 hosts

因為 domain 不是我的,所以要自己設定 /etc/hosts 指向 ip

$ sudo vim /etc/hosts

增加 harbor domain

10.1.0.1 harbor.example.domain.com

接著就能網頁連上了~
harbor

設定 Docker

因為目前掛的憑證是 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.

註:使用 Traefik 或 Harbor 憑證?

如果在 values tls 設定 certSource 為 none,則會改用 Traefik deafult 憑證

Ingress Controller 不只代理服務也能代理憑證~

expose:
  tls:
    enabled: true
    certSource: none
    ...

Traefik 憑證


Ref


總覺得都 Docker 設定 insecure-registries 很不安全
所以... 下一篇就來簽自己的憑證吧~ /images/emoticon/emoticon34.gif


上一篇
Day 17 — 艦艇訪客參觀動線:Ingress Controller - Traefik
下一篇
Day 19 — 艦隊自我認同:Ingress 套用 OpenSSL 自簽憑證
系列文
前端轉生~到了實驗室就要養幾隻可愛鯨魚:自架 Kubernetes 迷航日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言