1
resposta

[Bug] Erro no Jenkins ao fazer o deploy no k8s

Pessoal, estou tentando estruturar uma pipeline no Jenkins Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Só que quando chega no passo "Deploy Kubernetes", no log do Jenkins só dá esse erro da próxima imagem Insira aqui a descrição dessa imagem para ajudar na acessibilidade Porém já verifiquei todos os arquivos envolvidos (kubeconfig, Jenkinsfile, deployment.yaml) e nenhum deles tem caractere especial, já conferi se os plugins do Jenkins estão atualizados também! Alguém pode saber o que está acontecendo? Estou usando o minikube para estudar. Aqui vai o meu kubeconfig

`apiVersion: v1 clusters:

  • cluster: certificate-authority-data: DATA+OMITTED extensions:
    • extension: last-update: Wed, 14 Aug 2024 21:33:28 -03 provider: minikube.sigs.k8s.io version: v1.33.1 name: cluster_info server: https://172.19.48.251:8443 name: minikube contexts:
  • context: cluster: minikube extensions:
    • extension: last-update: Wed, 14 Aug 2024 21:33:28 -03 provider: minikube.sigs.k8s.io version: v1.33.1 name: context_info namespace: default user: minikube name: minikube current-context: minikube kind: Config preferences: {} users:
  • name: minikube user: client-certificate-data: DATA+OMITTED client-key-data: DATA+OMITTED`
1 resposta

Olá, Vitória.

Tudo bem?

Pelo erro que você mencionou ("ERROR: special characters are not allowed"), parece que o Jenkins está encontrando algum caractere especial que não é permitido. Mesmo que você já tenha verificado os arquivos, pode ser que o problema esteja em outro lugar. Aqui estão algumas sugestões para investigar e resolver o problema:

  1. Verifique as Credenciais no Jenkins:

    • Certifique-se de que as credenciais kubeconfig no Jenkins estão corretas e não contêm caracteres especiais que possam estar causando o problema.
  2. Verifique o Jenkinsfile:

    • Certifique-se de que não há caracteres especiais ou espaços em branco invisíveis no Jenkinsfile. Às vezes, caracteres invisíveis podem causar problemas.
  3. Verifique o Arquivo deployment.yaml:

    • Embora você já tenha verificado, tente abrir o arquivo deployment.yaml em um editor de texto que mostre caracteres invisíveis para garantir que não há caracteres especiais.
  4. Atualize o Minikube:

    • Certifique-se de que o Minikube está atualizado para a versão mais recente. Às vezes, problemas de compatibilidade podem causar erros inesperados.
  5. Teste Localmente:

    • Tente executar o comando kubectl apply -f ./api/k8s/deployment.yaml localmente no seu terminal para verificar se o problema ocorre fora do Jenkins.
  6. Logs do Jenkins:

    • Verifique os logs do Jenkins para obter mais detalhes sobre o erro. Pode haver mais informações que possam ajudar a identificar o problema.
  7. Espaços e Quebras de Linha:

    • Certifique-se de que não há quebras de linha ou espaços extras no Jenkinsfile, especialmente no bloco withKubeConfig.

Aqui está um exemplo de como o seu Jenkinsfile deve estar formatado:

pipeline {
    stages {
        stage ('Build Image') {
            steps {
                script {
                    docker.withRegistry('https://registry.hub.docker.com', 'dockerhub') {
                        dockerapp.push('latest')
                        dockerapp.push("${env.BUILD_ID}")
                    }
                }
            }
        }
        stage ('Push Image') {
            steps {
                script {
                    docker.withRegistry('https://registry.hub.docker.com', 'dockerhub') {
                        dockerapp.push('latest')
                        dockerapp.push("${env.BUILD_ID}")
                    }
                }
            }
        }
        stage ('Deploy Kubernetes') {
            steps {
                withKubeConfig([credentialsId: 'kubeconfig']) {
                    sh 'kubectl apply -f ./api/k8s/deployment.yaml'
                }
            }
        }
    }
}

Qualquer coisa compartilha os códigos desses arquivos para ajudarmos na análise. Você pode colar eles completos aqui mesmo, sem ser print.

Espero ter ajudado e bons estudos!