Linux中國

如何在 GitLab 執行器中使用 Podman

使用 Podman 啟動 GitLab 執行器有多種方法,我在本文中概述了其中兩種。

GitLab 執行器 Runner 是一個與 GitLab CI/CD 配合使用的應用,可在 GitLab 基礎設施上的流水線中運行作業。它們通常用於在提交代碼後自動編譯應用或在代碼庫上運行測試。你可以將它們視為基於雲的 Git 鉤子

主要的公共 GitLab 實例 提供了許多易於訪問的共享執行器,可供你在 CI 流水線中使用。你可以在 GitLab 上倉庫的 設置 Settings -> CI/CD -> 執行器 Runners 中找到共享執行器的列表。

Display available GitLab runners in your repository's settings

你可能不想依賴共享執行器,而是選擇自己的執行器,原因有很多。例如,控制執行器運行的基礎設施以實現額外的安全性和/或隱私、靈活的執行器配置或分配給你的 GitLab 用戶帳戶的有限 CI 分鐘數。

GitLab 執行器依賴於 執行環境 executor 工具來運行 CI 作業。執行環境有許多選項可用:Docker、Kubernetes、VirtualBox 等。

那麼,Podman 作為執行環境呢?

v4.2.0 起,Podman 對 GitLab 執行器提供了原生支持。以下是使用 Podman 作為 GitLab 執行器的 執行環境 的兩種方法的快速瀏覽。

Docker 執行環境

你可以在 GitLab 執行器中使用 Podman 作為 Docker 的直接替代品。就是這樣:

本示例使用 2023 年 2 月的 CentOS Stream 9 環境,使用 Podman v4.4.0。它應該可以在任何具有足夠新的 Podman 的 RHEL/CentOS Stream/Fedora 環境中正常工作。查看 GitLab 文檔 了解先決條件。

首先,安裝 Podman:

$ sudo dnf -y install podman

接下來安裝 gitlab-runner 包:

# 添加 GitLab 執行器倉庫
$ curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash

# 安裝 gitlab-runner 包
$ sudo dnf -y install gitlab-runner

最後,允許用戶在註銷後執行任務:

$ sudo loginctl enable-linger gitlab-runner

配置並註冊執行器

使用以下步驟配置 Docker 運行環境。

安裝 gitlab-runner 包會創建一個 gitlab-runner 用戶帳戶,但你需要 root 訪問許可權才能操作該用戶帳戶。gitlab-runner 可以在用戶模式下運行,但需要一些手動干預來進行構建處理。在此示例中,我使用 sudo 在系統模式下運行它。它看起來是這樣的:

$ sudo gitlab-runner register
Runtime platform                                    arch=amd64 os=linux pid=7978 revision=d540b510 version=15.9.1
Running in system-mode.

Enter the GitLab instance URL (for example, https://gitlab.com/):
https://gitlab.com
Enter the registration token:
xxxxxxxxxxxxxxxxx
Enter a description for the runner:
[lmandvek-c9s-gitlab-runner]:
Enter tags for the runner (comma-separated):

Enter optional maintenance note for the runner:

WARNING: Support for registration tokens and runner parameters in the 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with support for authentication tokens. For more information, see https://gitlab.com/gitlab-org/gitlab/-/issues/380872
Registering runner... succeeded                     runner=GR13489419oEPYcJ8
Enter an executor: custom, docker, ssh, docker-ssh+machine, docker-ssh, parallels, shell, virtualbox, docker+machine, instance, kubernetes:
docker
Enter the default Docker image (for example, ruby:2.7):
registry.gitlab.com/rhcontainerbot/pkg-builder
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"

你將需要一些額外的配置才能使用 Podman。配置執行器為每個作業創建一個網路。有關更多信息,請參閱 GitLab 文檔

首先,啟用 Podman 系統服務並修改 /etc/gitlab-runner/config.toml 中的環境:

[[runners]]
    environment = ["FF_NETWORK_PER_BUILD=1"]
    [runners.docker]
        host = "unix:///run/user/1001/podman/podman.sock"

重啟執行器以實施更改:

$ sudo gitlab-runner restart

驗證新的執行器在 GitLab 項目的 設置 Settings -> CI/CD -> 執行器 Runners 中可見:

Restart the GitLab runner

接下來,驗證你的 CI 流水線正在使用執行器。你的 CI 任務日誌將提及正在使用的執行器的名稱以及任何其他配置信息,例如 執行器的執行環境的功能標誌和容器鏡像。

View CI tasklogs to display the runner

Podman-in-Podman(pipglr)

Chris Evich 創建了 pipglr,這是一個 Podman-in-Podman 設置,用於使用免 root 的 Podman 來支持你自己的免 root 的 GitLab 執行器。此方法不需要對 .gitlab-ci.yaml 配置進行任何更改,因此你可以繼續按原樣使用現有設置。

以下是幫助你運行此程序的快速設置指南。

配置步驟

容器鏡像是從 pipglr Containerfile 自動構建的,因此將鏡像設置為該倉庫:

$ IMAGE="registry.gitlab.com/qontainers/pipglr:latest"

接下來,使用你的 GitLab 註冊令牌創建 Podman 密鑰:

$ echo &apos;<actual registration token>&apos; | podman secret create REGISTRATION_TOKEN -

創建一個空白的 config.toml,稍後將包含你的所有執行器設置。你必須執行此步驟才能使以下 podman container register runlabel $IMAGE 步驟成功:

$ touch ./config.toml  # 重要:文件必須存在,即使是空的。

註冊你的執行器。你可以重複此步驟來註冊多個執行器。如果你想使用可能不同的標籤或配置選項集並行運行多個 CI 任務,這非常有用。

$ podman container runlabel register $IMAGE

使用你選擇的編輯器編輯 config.toml。這是可選的,但通常需要更改用於實際 CI 任務的容器鏡像。默認情況下,鏡像設置為:registry.fedoraproject.org/fedora:latest

$ $EDITOR ./config.toml  # if desired

最後,配置對卷的訪問。容器卷內使用多個用戶,因此你必須專門配置它們以允許訪問。再次使用 runlabel 來完成:

$ podman container runlabel setupstorage $IMAGE

$ podman container runlabel setupcache $IMAGE

測試執行器

是時候檢查配置了。首先啟動 GitLab 執行器容器:

$ podman container runlabel run $IMAGE

允許執行器用戶在註銷後運行服務:

$ sudo loginctl enable-linger $(id -u)

驗證你的新執行器在 GitLab 項目的 設置 Settings -> CI/CD -> 執行器 Runners 中可見:

Verify the new runner is visible

最後,驗證你的 CI 流水線正在使用你的執行器:

Verify the CI pipeline

總結

使用 Podman 啟動 GitLab 執行器有多種方法,我在此處概述了其中兩種。嘗試一下,然後讓我知道哪一個最適合你。如果 Docker 執行環境方法有任何問題,請登錄並通過 Podman 上游GitLab 支持 提交問題。如果 pipglr 方法出現問題,請在 pipglr 上游 提交問題

GitLab 與 Podman 一起運行愉快 ?

(題圖:MJ/97e0ff4d-b769-4e20-990f-8c1e89e48434)

via: https://opensource.com/article/23/3/podman-gitlab-runners

作者:Lokesh Mandvekar 選題:lkxed 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國