Jenkinsfile Kubernetes公开了容器端口

问题描述 投票:0回答:2

希望有人可以帮助我,我正在尝试在我的Jenkins管道中导出我的kubernetes容器上的端口。

我已经在网上看了,我只是无法弄清楚如何让这个工作..

我需要将端口4444导出到selenium-hub容器。

def label = "selenium-hub-${UUID.randomUUID().toString()}"

podTemplate(label: label, yaml: """
apiVersion: v1
kind: Pod
spec:
  containers:
  - name: selenium-hub
    image: selenium/hub:3.4.0

  - name: selenium-chrome
    image: selenium/node-chrome:3.4.0
    env:
    - name: HUB_PORT_4444_TCP_ADDR
      value: localhost
    - name: HUB_PORT_4444_TCP_PORT
      value: 4444
    - name: DISPLAY
      value: :99.0
    - name: SE_OPTS
      value: -port 5556
  - name: selenium-firefox
    image: selenium/node-firefox:3.4.0
    env:
    - name: HUB_PORT_4444_TCP_ADDR
      value: localhost
    - name: HUB_PORT_4444_TCP_PORT
      value: 4444
    - name: DISPLAY
      value: :98.0
    - name: SE_OPTS
      value: -port 5557

我目前从集线器获取ip,并将其传递给我的测试以通过网格运行

  node(label) {
        containerLog('selenium-hub')
        sh('hostname -i')
        POD_IP = sh(script: "hostname -i", returnStdout: true).toString().replaceAll('\\n', '');
        node() {
            sh("POD_IP='${POD_IP}' UI_URL=https://EEEEEE.net/ SERVICE_URL=https://WWWWWW.net/ ./node_modules/webdriverio/bin/wdio ./tests/UI/helpers/configs/wdio.GRID.conf.js --nolazy")
        }

我似乎在测试运行时,它无法访问网格,所以我认为这是由于端口4444没有暴露,但我无法弄清楚如何在kubernetes中进行。

希望有人可以指出我需要做的事情,我已经在线尝试了一些例子,但似乎没有更接近......

谢谢

卡尔

selenium jenkins kubernetes jenkins-pipeline jenkins-plugins
2个回答
0
投票

将Kubernetes pod视为传统服务器的抽象。如果pod中的容器暴露了像mysql这样的服务,或者在特定端口上暴露了selenium,则默认情况下,pod中的所有其他容器都可以访问所选端口上的该服务:

https://kubernetes.io/docs/concepts/workloads/pods/pod/#resource-sharing-and-communication

而不是使用POD_IP只是尝试使用localhost:4444(或您需要的任何端口)来访问该服务。

在各种构建的单元测试期间,我使用相同的模式访问sidecar容器中的mysql。


0
投票

服务允许您的应用程序接收流量。因此,您需要其中一个来公开对selenium部署的访问:

apiVersion: v1
kind: Service
metadata:
  name: selenium-hub
  labels:
    app: selenium-hub
spec:
  ports:
  - port: 4444
    targetPort: 4444
    name: port0
  selector:
    app: selenium-hub
  type: NodePort
  sessionAffinity: None

有关详细信息https://github.com/kubernetes/examples/tree/master/staging/selenium

© www.soinside.com 2019 - 2024. All rights reserved.