Как развернуть приложения с отслеживанием состояния с помощью jenkins

TL;DR Кто-нибудь знает о плагине Jenkins, который позволяет развертывать приложения с отслеживанием состояния?

Я использую Jenkins для автоматизации процесса разработки с использованием многоветвевого конвейера CI/CD. Я пытаюсь развернуть приложение с отслеживанием состояния. Я использую плагин «Kubernetes Continuous Deploy Version1.0.0» для развертывания конвейер работает правильно и как ожидалось, за исключением одной части. jenkins pipeline status page

статус зеленый, однако набор с отслеживанием состояния не запускается и не обновляется в кластере k8s. когда я проверил статус, кажется, что мой плагин пропускает предоставленный мной YAML. статус на этапе «развертывание приложения в Kubernetes»:

            Starting Kubernetes deployment
        Loading configuration: /var/lib/jenkins/workspace/algo-1_master/Preprod/Trader/statefulset_algo_1.yaml
        Skipped unsupported resource: StatefulSet(apiVersion=apps/v1, kind=StatefulSet,
     metadata=ObjectMeta(annotations={}, clusterName=null, creationTimestamp=null, 
    deletionGracePeriodSeconds=null, deletionTimestamp=null, finalizers=[], 
    generateName=null, generation=null, initializers=null, labels={},
     name=algo-1, namespace=1-algo-prod, ownerReferences=[],
     resourceVersion=null, selfLink=null, uid=null, additionalProperties={}),
     spec=StatefulSetSpec(podManagementPolicy=null, replicas=4, revisionHistoryLimit=null, 
    selector=LabelSelector(matchExpressions=[], 
    matchLabels={app=algo-1}, additionalProperties={}), serviceName=algo-1
    , template=PodTemplateSpec(metadata=ObjectMeta(annotations={},
         clusterName=null, creationTimestamp=null, deletionGracePeriodSeconds=null, deletionTimestamp=null, finalizers=[], generateName=null, generation=null,
         initializers=null, labels={app=algo-1}, name=null, namespace=null, ownerReferences=[],
 resourceVersion=null, selfLink=null,
     uid=null, additionalProperties={}), spec=PodSpec(activeDeadlineSeconds=null, affinity=null, automountServiceAccountToken=null, containers=[Container(args=[], command=[], env=[EnvVar(name=PODNAME, value=null,
         valueFrom=EnvVarSource(configMapKeyRef=null, fieldRef=ObjectFieldSelector(apiVersion=null, 
        fieldPath=metadata.name, additionalProperties={}), resourceFieldRef=null,
 secretKeyRef=null, additionalProperties={}), additionalProperties={}), EnvVar(name=API_ID, value=null, 
        valueFrom=EnvVarSource(configMapKeyRef=null, fieldRef=null, resourceFieldRef=null,
         secretKeyRef=SecretKeySelector(key=api-id, name=alpaca-api, optional=null,
 additionalProperties={}), additionalProperties={}), additionalProperties={}),
         EnvVar(name=API_KEY, value=null, valueFrom=EnvVarSource(configMapKeyRef=null, fieldRef=null, resourceFieldRef=null, 
secretKeyRef=SecretKeySelector(key=secret-key, name=alpaca-api, optional=null, additionalProperties={}), 
        additionalProperties={}), additionalProperties={})], envFrom=[], image=arieltar/algo-1,
 imagePullPolicy=Always, lifecycle=null, livenessProbe=null, name=algo-1, ports=[], readinessProbe=null, resources=null, securityContext=null,
         stdin=null, stdinOnce=null, terminationMessagePath=null, terminationMessagePolicy=null,
 tty=null, volumeDevices=[], volumeMounts=[], workingDir=null, additionalProperties={})], dnsConfig=null, 
        dnsPolicy=null, hostAliases=[], hostIPC=null, hostNetwork=null, hostPID=null,
 hostname=null, imagePullSecrets=[], initContainers=[], nodeName=null, nodeSelector={},
 priority=null, priorityClassName=null, restartPolicy=null, schedulerName=null, securityContext=null, 
        serviceAccount=null, serviceAccountName=null, subdomain=null, terminationGracePeriodSeconds=null, tolerations=[], volumes=[], additionalProperties={}),
 additionalProperties={}), updateStrategy=null, volumeClaimTemplates=[], additionalProperties={}), status=null, additionalProperties={})
            Finished Kubernetes deployment

мой конвейер выглядит следующим образом

pipeline {
    environment {
      dockerimagename = "arieltar/algo-1"
      dockerImage = ""
    }

    agent any

    stages {

      stage('Checkout Source') {
        steps {
          git 'https://github.com/finance-dataspider/spiderdoc.git'
        }
      }

      stage('Build image') {
        steps{
          script {
            dockerImage = docker.build(dockerimagename,"./Preprod/Trader/")
          }
        }
      }

      stage('Pushing Image') {
        environment {
                registryCredential = 'dockerhub-reg'
            }
        steps{
          script {
            docker.withRegistry( 'https://registry.hub.docker.com', registryCredential ) {
              dockerImage.push("latest")
            }
          }
        }
      }

      stage('Deploying App to Kubernetes') {
        steps {
          script {
            kubernetesDeploy(configs: "Preprod/Trader/statefulset_algo_1.yaml", kubeconfigId: "kubernetes")
          }
        }
      }

    }

  }
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
0
13
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Простое решение: не используйте плагин, если он не поддерживает набор с отслеживанием состояния, и вы хотите его развернуть.

Просто установите кубектл в bash и используйте его напрямую для применения YAML.

stage('Deploy Image') {
      steps{
        script {
          docker.withRegistry( '', registryCredential ) {
            dockerImage.push("$BUILD_NUMBER")
             dockerImage.push('latest')

          }
        }
      }
    }
    stage('Deploy to K8s') {
      steps{
        script {
          sh "sed -i 's,TEST_IMAGE_NAME,harshmanvar/node-web-app:$BUILD_NUMBER,' deployment.yaml"
          sh "cat deployment.yaml"
          sh "kubectl --kubeconfig=/home/ec2-user/config get pods"
          sh "kubectl --kubeconfig=/home/ec2-user/config apply -f deployment.yaml"
        }
      }
    }

спасибо, нашел плагин под названием kubectl для Jenkins, который позволяет выполнять команду k8s cmd.

Ariel Tarayants 17.05.2022 13:42

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