Kubernetes 在GitLab CI/CD作业的上下文中执行到服务中

Kubernetes 在GitLab CI/CD作业的上下文中执行到服务中,kubernetes,gitlab-ci,Kubernetes,Gitlab Ci,我想使用GitLab CI/CD进行涉及两个容器的测试。测试要求两个容器都启动,然后在其中一个容器中运行脚本(语义类似于kubectl exec…script.sh或docker exec…script.sh)。我尝试了建模,这要感谢收到的: my_test: stage: test services: - my_image_2 image: my_image_1 script: - my_script.sh 但是,问题是,myu script.sh现在实际上取代了my

我想使用GitLab CI/CD进行涉及两个容器的测试。测试要求两个容器都启动,然后在其中一个容器中运行脚本(语义类似于
kubectl exec…script.sh
docker exec…script.sh
)。我尝试了建模,这要感谢收到的:

my_test:
  stage: test
  services:
  - my_image_2
  image: my_image_1
  script:
  - my_script.sh
但是,问题是,
myu script.sh
现在实际上取代了
myu image\u 1
的入口点。然后容器的行为不同,这显然会导致测试失败。是否有一种克服这种情况的已知模式,概念上类似于
脚本:[“docker exec…script.sh”]

我也考虑过将“我的图像”作为服务运行。但它是一个web服务器,因此内部没有运行sshd,因此也没有用于执行脚本的外部连接。我还考虑在
脚本中添加
/entrypoint.sh&
作为第一步:
,但这似乎是一个黑客行为,并且还需要额外的运行状况检查作为第二步,因为web服务器在后台启动相对较慢,因此
my_script.sh
(当时的第三步)必须延迟。什么是前进的好方法?

您可以覆盖使用
entrypoint
关键字指定的图像的属性,并设置它的行为方式

my_test:
  stage: test
  services:
    - my_image_2
  image: 
    name: my_image_1
    entrypoint: [""]
  script:
    - my_script.sh

我现在选择了一种方法,在作业的
脚本中多次调用
kubectl
。这使我比GitLab CI/CD的
服务
功能更能控制确切的编排(作为一个受欢迎的副作用,我仍然可以使用
kubectl exec
启动测试)
kubectl
通过属于Kubernetes中专用
serviceaccount
的令牌获得其权限。该令牌存储在Vault中,GitLab CI/CD作业从那里获取该令牌。

如果没有入口点(并且没有修改
my_script.sh
),服务器将无法启动,测试将失败。