您如何允许外部服务访问由k8s jenkins插件配置的Pod?

时间:2019-01-02 07:01:27

标签: jenkins kubernetes

允许进入由Kubernetes Jenkins插件部署的Pod上运行的服务的最佳方法是什么?

我正在尝试编写一些集成测试。他们需要我正在测试的系统才能将帖子发送到URL。我正在使用Kubernetes Plugin for Jenkins来配置将运行测试的节点。

在测试期间,我想在pod内运行一个模拟http服务器,并让外部系统访问该模拟http服务器。我正在使用声明性管道。

我试图像这样在Jenkinsfile中定义服务:

pipeline {
  agent {
    kubernetes {
      label 'mypod'
      defaultContainer 'jnlp'
      yaml """
apiVersion: v1
kind: Pod
metadata:
  labels:
    some-label: some-label-value
spec:
  containers:
  - name: integration-test
    image: myimage:latest
    command:
    - cat
    tty: true

---

apiVersion: v1
kind: Service
metadata:
  name: webhooks-test
spec:
  selector:
    some-label: some-label-value
  ports:
  - protocol: TCP
    port: 3000
    targetPort: 9376
"""
    } 

这将部署Pod,但不会定义服务。

我什至没有尝试定义入口规则。

似乎不支持在此处定义服务-毕竟,它被称为Pod模板!还有另一种方法吗?也许应该手动应用服务和入口规则,并且选择器仅在Pod部署后才生效?我不确定多个Pod会如何工作-理想情况下应该能够一次运行多个测试。 感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

我不太明白为什么要用这种方式创建它,但是您可以在启动测试之前创建服务,因为该服务适用于所有以该标签开头的Pod。