0
votes

I am trying to deploy docker image to kubernetes but hitting a strange issue. Below is the command i am using in jenkinsfile

stage('Deploy to k8s') {
   steps{
       sshagent(['kops-machine']) {
         sh "scp -o StrictHostKeyChecking=no deployment.yml ubuntu@<ip>:/home/ubuntu/"
         sh "ssh ubuntu@<ip> kubectl apply -f ."
         sh 'kubectl set image deployment/nginx-deployment nginx=account/repo:${BUILD_NUMBER}'

    }
  }

I am getting this error message

  • kubectl set image deployment/nginx-deployment nginx=account/repo:69 error: the server doesn't have a resource type "deployment"

Strange thing is if i copy and paste this command and execute on the cluster, the image gets updated kubectl set image deployment/nginx-deployment nginx=account/repo:69 Can somebody please help, image builds and pushes to docker hub successfully, its just that i am stuck with pulling and deploying to kubernetes cluster, if you have anyother alternatives please let me know, the deployment.yml file which gets copied to the server is as follows

spec:
  containers:
  - name: nginx
    image: account/repo:3        
    ports:
    - containerPort: 80
1
Execute kubectl auth can-i --list command from both cluster and jenkins and share the outputArghya Sadhu
Please, share it by editing the question instead of posting an "answer". Try not to use screenshots.Wytrzymały Wiktor

1 Answers

1
votes

Ok so if found the work around. if i change this line in my docker file

        sh "ssh ubuntu@<ip> kubectl apply -f ." to
        sh "ssh ubuntu@<ip> kubectl set image deployment/nginx-deployment 
        nginx=account/repo:${BUILD_NUMBER}"

It works, but if there is no deployment created at all, then i have to add these two line to make it work

             sh "ssh ubuntu@<ip> kubectl apply -f ."
             sh "ssh ubuntu@<ip> kubectl set image deployment/nginx-deployment 
             nginx=account/repo:${BUILD_NUMBER}"