【GitLab CI/CD】Day 2 – Solve runner register occur “TLS handshake timeout” issue

明明在自己電腦註冊 Runner 很順利,偏偏跟公司要了一台機器要來註冊 Runner 就遇到問題

ERROR: Registering runner… failed runner=XXXXXXXXXstatus=couldn’t execute POST against http://XXXXXXXXX/api/v4/runners: Post “https://XXXXXXXXX/api/v4/runners”: net/http: TLS handshake timeout
PANIC: Failed to register the runner.

初步看起來是網路設定哪有有問題,聯繫了 SE 詢問是否有其他人也遇過這種問題,但似乎別的部門都沒遇到過。
於是開始做各種嘗試

  1. ping gitlab server => ping 的到
  2. 檢查防火牆 => 防火牆全關
  3. 檢查 443 port => 確實有通
  4. 註冊時將 gitlab server url 改為 http(非https) => 一樣失敗
  5. 將所有 runner 版本註冊一次,確認是否為版本問題 => 全都失敗
  6. 註冊時 url 改填 ip => 失敗
  7. powershell 從 5 升級到 7 => 失敗

以上嘗試全部都失敗了!沒招了!!!

但靈感總是來的猝不及防,有時候就是不經意的聊天中靈感就來了!!
「如果其他部門沒有遇到問題,那只要請 SE 檢查我的 Runner server 跟別的部門的 Runner server 設定是不是有什麼不一樣就行啦!」

原來原來 GitLab Runner 註冊時除了訪問 GitLab Server,還會去訪問另一個位置,但是機器只有開通 GitLab Server IP,因此訪問另一個 IP 注定是要失敗的。

但另外一個 IP 是浮動 IP,無法加白名單。
因此最後的解法是將 IP 開成 All Allow。

雖然解決了註冊不了的問題,但我至今能不知道為何註冊 Runner 還需要訪望另一個位置?訪問另外一個位置的作用是什麼?如果有人知道,請與我分享~感謝~

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *