Я работаю над тем, чтобы использовать CI в моем проекте, и поэтому я могу собрать приложение и затем поместить его sh в реестр gitlab, и поэтому при развертывании я запускаю команду, которая позволяет kubernates получить образ, как показано ниже:
build_app:
stage: build
image: docker:git
only:
- master
- develop
script:
- docker login -u gitlab-ci-token -p ${CI_BUILD_TOKEN} ${CI_REGISTRY}
- docker build -t ${CI_REGISTRY}/${CI_PROJECT_PATH} .
- docker tag ${CI_REGISTRY}/${CI_PROJECT_PATH} ${CI_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_SHORT_SHA}
- docker push ${CI_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_SHORT_SHA}
deploy:
stage: deploy
image:
name: bitnami/kubectl:latest
entrypoint: [""]
script:
- kubectl create secret docker-registry gitlab-registry --docker-server="${CI_REGISTRY}" --docker-username="$CI_REGISTRY_USER" --docker-password=${CI_BUILD_TOKEN} --docker-email="$GITLAB_USER_EMAIL"
- kubectl set image deployment/test-flight test-flight-be=${CI_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_SHORT_SHA} -n test-flight-dev
Но, как вы видите, я могу создать секрет только при первом запуске конвейера, чтобы убедиться, что секрет, созданный с правильными учетными данными, позволяет кластеру kubernates извлекать образ, созданный на этапе сборки. Проблема здесь в том, что: развертывание, над которым я работаю, состоит из 3-х модулей, и при запуске конвейера создается только один модуль, на который я воздействую, и на секунду я получил «ImagePullBackOff», поэтому изображение было извлечено только для первого модуля. быть изменен. Ожидается: 2 других модуля могут вытягивать изображение как первое
test-flight-59879c6dc7-tjv9x 0/1 ImagePullBackOff 0 17s
test-flight-59879c6dc7-w8vsx 1/1 Running 0 23s
test-flight-5c8fc5d84-9mhjx 1/1 Running 0 6m58s
test-flight-6cc4b57776-g9rgf 1/1 Running 0 34m