podTemplate() doesn't work when calling an "sh" step, it produces a HTTP 403 issue and an exception

This issue is archived. You can view it, but you can't modify it. Learn more

XMLWordPrintable

    • Type: Bug
    • Resolution: Not A Defect
    • Priority: Blocker
    • Component/s: kubernetes-plugin
    • Environment:
      Jenkins: 2.385
      Jenkins plugins:
      - Kubernetes: 3743.v1fa_4c724c3b_7
      - Kubernetes Client API: 5.12.2-193.v26a_6078f65a_9
      - Kubernetes Credentials: 0.9.0

      I'm trying to create a pod template using the podTemplate() pipeline step with the below code:

       

      def image = "jenkins/inbound-agent"
      
      podTemplate(cloud: 'kubernetes', activeDeadlineSeconds: 7200,
                  name: 'mytest', namespace: 'default',
                  containers: [
                      containerTemplate(name: 'jnlp', image: image,
                          envVars: [envVar(key: 'AAAA', value: 'bbbb')], resourceLimitCpu: '1', resourceLimitEphemeralStorage: '', resourceLimitMemory: '4Gi', resourceRequestCpu: '1',
                          ttyEnabled: true
                      )
                  ]
      ) {
          node(POD_LABEL) {
              stage('my-build') {
                  container('jnlp') {
                      echo POD_CONTAINER
                      //sh "echo hello from $POD_CONTAINER"
                      //sh 'env|sort'
                  }
              }
          }
      }

       

      It works properly, creates the pod, prints the container name (jnlp) just fine. However, when I attempt to use any of the commented out "sh" calls, then I get the below exceptions (notice the HTTP 403 forbidden issue at the end):

       

      Failed to start websocket connection: io.fabric8.kubernetes.client.KubernetesClientException: An error has occurred.
      	at io.fabric8.kubernetes.client.KubernetesClientException.launderThrowable(KubernetesClientException.java:103)
      	at io.fabric8.kubernetes.client.KubernetesClientException.launderThrowable(KubernetesClientException.java:97)
      	at io.fabric8.kubernetes.client.utils.Utils.waitUntilReady(Utils.java:170)
      	at io.fabric8.kubernetes.client.utils.Utils.waitUntilReadyOrFail(Utils.java:180)
      	at io.fabric8.kubernetes.client.dsl.internal.core.v1.PodOperationsImpl.exec(PodOperationsImpl.java:332)
      	at io.fabric8.kubernetes.client.dsl.internal.core.v1.PodOperationsImpl.exec(PodOperationsImpl.java:85)
      	at org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator$1.doLaunch(ContainerExecDecorator.java:451)
      	at org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator$1.launch(ContainerExecDecorator.java:336)
      	at hudson.Launcher$ProcStarter.start(Launcher.java:509)
      	at org.jenkinsci.plugins.durabletask.BourneShellScript.launchWithCookie(BourneShellScript.java:176)
      	at org.jenkinsci.plugins.durabletask.FileMonitoringTask.launch(FileMonitoringTask.java:132)
      	at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.start(DurableTaskStep.java:326)
      	at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:322)
      	at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:196)
      	at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:124)
      	at jdk.internal.reflect.GeneratedMethodAccessor82.invoke(Unknown Source)
      	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
      	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
      	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1225)
      	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
      	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:41)
      	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
      	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
      	at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:180)
      	at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23)
      	at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:162)
      	at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:178)
      	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:182)
      	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:152)
      	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:152)
      	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:152)
      	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:152)
      	at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17)
      	at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:90)
      	at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:116)
      	at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:85)
      	at jdk.internal.reflect.GeneratedMethodAccessor626.invoke(Unknown Source)
      	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      	at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
      	at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)
      	at com.cloudbees.groovy.cps.Next.step(Next.java:83)
      	at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:152)
      	at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:146)
      	at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:136)
      	at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:275)
      	at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:146)
      	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18)
      	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:51)
      	at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:187)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:420)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:330)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:294)
      	at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:67)
      	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
      	at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:139)
      	at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
      	at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
      	at jenkins.util.ErrorLoggingExecutorService.lambda$wrap$0(ErrorLoggingExecutorService.java:51)
      	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
      	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
      	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
      	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
      	at java.base/java.lang.Thread.run(Thread.java:829)
      Caused by: io.fabric8.kubernetes.client.http.WebSocketHandshakeException
      	at io.fabric8.kubernetes.client.okhttp.OkHttpWebSocketImpl$BuilderImpl$1.onFailure(OkHttpWebSocketImpl.java:66)
      	at okhttp3.internal.ws.RealWebSocket.failWebSocket(RealWebSocket.java:571)
      	at okhttp3.internal.ws.RealWebSocket$2.onResponse(RealWebSocket.java:198)
      	at okhttp3.RealCall$AsyncCall.execute(RealCall.java:203)
      	at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
      	... 3 more
      	Suppressed: java.lang.Throwable: waiting here
      		at io.fabric8.kubernetes.client.utils.Utils.waitUntilReady(Utils.java:169)
      		at io.fabric8.kubernetes.client.utils.Utils.waitUntilReadyOrFail(Utils.java:180)
      		at io.fabric8.kubernetes.client.dsl.internal.core.v1.PodOperationsImpl.exec(PodOperationsImpl.java:332)
      		at io.fabric8.kubernetes.client.dsl.internal.core.v1.PodOperationsImpl.exec(PodOperationsImpl.java:85)
      		at org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator$1.doLaunch(ContainerExecDecorator.java:451)
      		at org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator$1.launch(ContainerExecDecorator.java:336)
      		at hudson.Launcher$ProcStarter.start(Launcher.java:509)
      		at org.jenkinsci.plugins.durabletask.BourneShellScript.launchWithCookie(BourneShellScript.java:176)
      		at org.jenkinsci.plugins.durabletask.FileMonitoringTask.launch(FileMonitoringTask.java:132)
      		at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.start(DurableTaskStep.java:326)
      		at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:322)
      		at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:196)
      		at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:124)
      		at jdk.internal.reflect.GeneratedMethodAccessor82.invoke(Unknown Source)
      		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      		at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
      		at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
      		at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1225)
      		at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
      		at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:41)
      		at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
      		at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
      		at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:180)
      		at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23)
      		at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:162)
      		at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:178)
      		at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:182)
      		at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:152)
      		at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:152)
      		at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:152)
      		at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:152)
      		at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17)
      		at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:90)
      		at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:116)
      		at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:85)
      		at jdk.internal.reflect.GeneratedMethodAccessor626.invoke(Unknown Source)
      		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      		at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
      		at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)
      		at com.cloudbees.groovy.cps.Next.step(Next.java:83)
      		at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:152)
      		at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:146)
      		at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:136)
      		at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:275)
      		at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:146)
      		at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18)
      		at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:51)
      		at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:187)
      		at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:420)
      		at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:330)
      		at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:294)
      		at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:67)
      		at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
      		at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:139)
      		at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
      		at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
      		at jenkins.util.ErrorLoggingExecutorService.lambda$wrap$0(ErrorLoggingExecutorService.java:51)
      		at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
      		at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
      		... 3 more
      Caused by: java.net.ProtocolException: Expected HTTP 101 response but was '403 Forbidden'
      	at okhttp3.internal.ws.RealWebSocket.checkResponse(RealWebSocket.java:229)
      	at okhttp3.internal.ws.RealWebSocket$2.onResponse(RealWebSocket.java:196)
      	... 5 more
      Retrying in 2s ... 

       

      I wonder what I'm doing wrong, and how it could be fixed.

       

       

            Assignee:
            Unassigned
            Reporter:
            Janos
            Archiver:
            Jenkins Service Account

              Created:
              Updated:
              Resolved:
              Archived: