Shresth Suman
Shresth Suman

Reputation: 29

Tekton - mount path workspace issue - Error of path

Currently, I am trying to deploy tutum-hello-world. I have written a script for the same, but it does not work as it is supposed to. I am certain that this issue is related to workspace.

UPDATE Here is my code for task-tutum-deploy.yaml-

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: tutum-deploy
spec:
  steps:
    - name: tutum-deploy
      image: bitnami/kubectl
      script: |
        kubectl apply -f /root/tekton-scripts/tutum-deploy.yaml
  workspaces:
    - name: messages
      optional: true
      mountPath: /root/tekton-scripts/

Error -

root@master1:~/tekton-scripts# tkn taskrun logs tutum-deploy-run-8sq8s -f -n default
[tutum-deploy] + kubectl apply -f /root/tekton-scripts/tutum-deploy.yaml
[tutum-deploy] error: the path "/root/tekton-scripts/tutum-deploy.yaml" cannot be accessed: stat /root/tekton-scripts/tutum-deploy.yaml: permission denied

container step-tutum-deploy has failed  : [{"key":"StartedAt","value":"2021-06-14T12:54:01.096Z","type":"InternalTektonResult"}]

PS - I have placed my script on the master node at - /root/tekton-scripts/tutum-deploy.yaml

root@master1:~/tekton-scripts# ls -l tutum-deploy.yaml 
-rwxrwxrwx 1 root root 626 Jun 11 11:31 tutum-deploy.yaml

OLD SCRIPT

Here is my code for task-tutum-deploy.yaml-

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: tutum-deploy
spec:
  workspaces:
    - name: messages
      optional: true
      mountPath: /root/tekton-scripts/tutum-deploy.yaml
  steps:
    - name: tutum-deploy
      image: bitnami/kubectl
      command: ["kubectl"]
      args:
        - "apply"
        - "-f"
        - "./tutum-deploy.yaml"

Here is my code for tutum-deploy.yaml which is present on the machine (master node) of Kubernetes cluster with read, write and execute permissions -

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-world-tutum
  labels:
    service: hello-world-tutum
spec:
  replicas: 1
  selector:
    matchLabels:
      service: hello-world-tutum
  template:
    metadata:
      labels:
        service: hello-world-tutum
    spec:
      containers:
      - name: tutum-hello-world
        image: tutum/hello-world:latest
        ports:
        - containerPort: 80

---
apiVersion: v1
kind: Service
metadata:
  name: hello-world-tutum
spec:
  type: NodePort
  selector:
    service: hello-world-tutum
  ports:
  - name: "80"
    port: 80
    targetPort: 80
    nodePort: 30050

I ran the following commands from my master node of Kubernetes cluster -

1. kubectl apply -f task-tutum-deploy.yaml

2. tkn task start tutum-deploy

Error -

Using tekton command - $ tkn taskrun logs tutum-deploy-run-tvlll -f -n default

task tutum-deploy has failed: "step-tutum-deploy" exited with code 1 (image: "docker-pullable://bitnami/kubectl@sha256:b83299ee1d8657ab30fb7b7925b42a12c613e37609d2b4493b4b27b057c21d0f"); for logs run: kubectl -n default logs tutum-deploy-run-tvlll-pod-vbl5g -c step-tutum-deploy

[tutum-deploy] error: the path "./tutum-deploy.yaml" does not exist

container step-tutum-deploy has failed  : [{"key":"StartedAt","value":"2021-06-11T14:01:49.786Z","type":"InternalTektonResult"}]

Upvotes: 0

Views: 1221

Answers (1)

Andreas Kavountzis
Andreas Kavountzis

Reputation: 417

The error is from this part of your YAML:

spec:
  workspaces:
    - name: messages
      optional: true
      mountPath: /root/tekton-scripts/tutum-deploy.yaml

spec.workspaces.mountPath expects a directory, rather than a file, as you have specified here. You may mean /root/tekton-scripts/ instead but I am unfamiliar with tutum-hello-world.

If you look at the documentation you will see that all references to mountPath are directories rather than files.

Upvotes: 1

Related Questions