簡體   English   中英

Gitlab CI - 暴露生成的 docker 容器的端口/服務

[英]Gitlab CI - exposing port/service of spawned docker container

我已經設置了 Gitlab CI 的測試工廠

  • ubuntu 18.04 VM 上的 Gitlab-CE
  • Docker gitlab轉輪
  • Microk8s 集群
  • 我能夠安裝 gitlab 托管入口 controller

當我運行 dind 時,我應該如何將端口 4000 暴露給我的主機(VM),最好的方法是什么?

  • 我嘗試使用 gitlab 安裝入口 controller,但不確定 gitlab 托管應用程序的配置文件/yaml 在哪里?
  • 嘗試了簡單的 nodeport expose並沒有幫助
kubectl -n gitlab-managed-apps expose deployment <Gitlab Runner> --type=NodePort --port=4000

下面是我的gitlab-ci.yaml文件..

image: docker:19.03.13

services:
  - name: docker:18.09.7-dind
    command:
      [
        '--insecure-registry=gitlab.local:32000',
      ]

stages:
  - testing

variables:
  DOCKER_DRIVER: overlay2
  DOCKER_HOST: tcp://localhost:2375
  DOCKER_TLS_CERTDIR: ""
  CI_REGISTRY_IMAGE: img1

before_script:
  - echo "$REG_PASSWORD" | docker -D login "$CI_REGISTRY" -u "$REG_USER" --password-stdin

testing:
  stage: testing
  tags: [docker]
  script:
    - docker pull "gitlab.local:32000/$CI_REGISTRY_IMAGE:latest"
    - docker images
    - hostname
    - docker run --rm -d -p 4000:4000 "gitlab.local:32000/$CI_REGISTRY_IMAGE:latest"
    - netstat -na | grep -w 4000
    - sleep 3600
  only:
    - master

我設法弄清楚使用 k8s 服務公開的問題是什么。 沒有明確定義的是選擇器。 需要注意的一些關鍵點

  1. 我可以看到該端口正在偵聽 pod 內的 IPv6 接口 (::4000)。 然而,這不是問題

  2. 我在 gitlab 運行器配置(例如應用程序:myapp)的 config.toml 中添加了 podLabels。 這樣,運行器生成的每個 pod 都有一個預定義的 label

  3. 在 LB 服務的選擇器部分使用了 label

希望它對任何人有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM