Как использовать образ, развернутый в облаке, для развертывания kubernetes

Я хочу развернуть образ из облака в кластере kubernetes. Я успешно создал образ докера в файле cloudbuild.yaml. Теперь задача состоит в том, как использовать изображение в deploy.yaml

Задача завершается с ошибкой, указывающей на то, что переменные не были заменены должным образом.

Вот выдержки из конфига:

облачная сборка.yaml

//push image to container registry
    ....
    .......

  - id: "deploy container image to GKE"
    name: "gcr.io/cloud-builders/gke-deploy"
    args: [
    "--cluster", "${_CLUSTER_NAME}",
    "run",
    "--filename", "deployment.yaml",
    "--image", "us-west1-docker.pkg.dev/$PROJECT_ID/abc/abc-server-${_DEPLOYMENT_TYPE}:$COMMIT_SHA",
    "--location", "${_COMPUTE_ZONE}"
    ]

развертывание.yaml

    ....
    ........
    spec:
      containers:
        - name: idr-server-k8ts-test
          image: us-west1-docker.pkg.dev/$PROJECT_ID/abc/abc-server-${_DEPLOYMENT_TYPE}:$COMMIT_SHA
          ports:
            - containerPort: 8080

Переменные, определенные в триггере сборки

_CLUSTER_NAME
_DEPLOYMENT_TYPE
_COMPUTE_ZONE

Я получаю сообщение об ошибке:

Error: failed to prepare deployment: failed to update container of objects: failed to parse reference from image "us-west1-docker.pkg.dev/$PROJECT_ID/abc/abc-server-${_DEPLOYMENT_TYPE}:$COMMIT_SHA": could not parse reference: us-west1-docker.pkg.dev/$PROJECT_ID/abc/abc-server-${_DEPLOYMENT_TYPE}:$COMMIT_SHA

какие-либо обновления по этому поводу? не стесняйтесь, пожалуйста, обновите статус вопроса, если какой-либо из приведенных ниже ответов решит вашу проблему.

Harsh Manvar 11.05.2023 07:55
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
1
65
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Kubernetes не понимает никаких переменных, записанных в файлах манифеста. Имя вашего изображения (us-west1-docker.pkg.dev/$PROJECT_ID/abc/abc-server-${_DEPLOYMENT_TYPE}:$COMMIT_SHA) содержит переменные среды. Простые манифесты требуют постоянных/жестко закодированных значений.

Если вы хотите динамически заполнять свои манифесты с помощью переменных среды, создайте рулевую диаграмму и примените ее в кластере.

Попробуйте один раз, как с помощью ""

- name: "gcr.io/cloud-builders/gke-deploy"
  args:
  - run
  - --filename=deployment.yaml
  - --image=harshmanvar/gdg-rajkot:$SHORT_SHA
  - --expose=80
  - --app=nodejs-hello-demo
  - --location=asia-east1-a
  - --cluster=cluster-1

Дополнительный вариант:

облачная сборка.yaml

substitutions:
    _CLOUDSDK_COMPUTE_ZONE: us-central1-c  # default value
    _CLOUDSDK_CONTAINER_CLUSTER: standard-cluster-1      # default value
steps:
- id: 'set test core image in yamls'
  name: 'ubuntu'
  args: ['bash','-c','sed -i "s,TEST_IMAGE_NAME,gcr.io/$PROJECT_ID/$REPO_NAME/$BRANCH_NAME:$SHORT_SHA," deployment.yaml']
- name: 'gcr.io/cloud-builders/kubectl'
  args: ['apply', '-f', 'deployment.yaml']
  env:
  - 'CLOUDSDK_COMPUTE_ZONE=${_CLOUDSDK_COMPUTE_ZONE}'
  - 'CLOUDSDK_CONTAINER_CLUSTER=${_CLOUDSDK_CONTAINER_CLUSTER}'

развертывание.yaml

containers:
      - image: TEST_IMAGE_NAME
        name: test-image
        ports:

Таким образом, облачная сборка заменит TEST_IMAGE_NAME в файле deployment.yaml, и обновленный файл будет развернут в GKE.

Вы можете найти пример: https://github.com/harsh4870/basic-ci-cd-cloudbuild

Другие вопросы по теме