1
0
mirror of https://github.com/tektoncd/catalog.git synced 2024-11-22 06:02:51 +00:00
catalog/task/kubectl-deploy-pod/0.1
pratap0007 149d291f64 Modifies kubectl task according to the new reorg proposal
Changes include:
  - adds version label
  - adds a minimum pipeline versions supported by the task
  - adds tags for task
  - modified description to add a summary

This patch moves the kubectl files to the task directory and
renames the yaml file and the directory
  - The yaml filename and the directory is changed to match the resource name
  - Modifies the path for install task command in readme file

Issue: #386

Signed-off-by: Shiv Verma <shverma@redhat.com>
2020-07-10 22:06:57 +01:00
..
clusterrole.yaml Modifies kubectl task according to the new reorg proposal 2020-07-10 22:06:57 +01:00
clusterrolebinding.yaml Modifies kubectl task according to the new reorg proposal 2020-07-10 22:06:57 +01:00
kubectl-deploy-pod.yaml Modifies kubectl task according to the new reorg proposal 2020-07-10 22:06:57 +01:00
README.md Modifies kubectl task according to the new reorg proposal 2020-07-10 22:06:57 +01:00
taskrun-delete.yaml Modifies kubectl task according to the new reorg proposal 2020-07-10 22:06:57 +01:00
taskrun.yaml Modifies kubectl task according to the new reorg proposal 2020-07-10 22:06:57 +01:00

Kubectl

This Task deploys (or delete) a Kubernates resource (pod). It uses kubectl for that.

Install the Task

kubectl apply -f https://raw.githubusercontent.com/tektoncd/catalog/v1beta1/task/kubectl-deploy-pod/0.1/kubectl-deploy-pod.yaml

Install ClusterRole

CAUTION: The clusterrole.yaml is just a sample, should be modified based on real requirements to avoid potential security issues.

kubectl apply -f https://raw.githubusercontent.com/tektoncd/catalog/v1beta1/kubectl/clusterrole.yaml

Install ClusterRolebinding

kubectl apply -f https://raw.githubusercontent.com/tektoncd/catalog/v1beta1/kubectl/clusterrolebinding.yaml

Inputs

Parameters

  • action: The action to perform to the resource, support get, create, apply, delete, replace, patch.
  • manifest: The content of the resource to deploy.
  • success-condition/failure-condition: SuccessCondition and failureCondition are optional expressions which are evaluated upon every update of the resource. If failureCondition is ever evaluated to true, the step is considered failed. Likewise, if successCondition is ever evaluated to true the step is considered successful. It uses kubernetes label selection syntax and can be applied against any field of the resource (not just labels). Multiple AND conditions can be represented by comma delimited expressions. For more details, see: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/.
  • merge-strategy: The strategy used to merge a patch, defaults to strategic, supported strategic, merge and json.
  • output: Extracted from fields of the resource, only support jsonpath. Should define as a yaml array(array even if only one item):
  - name: output
    value: |
      - name: job-name
        valueFrom: '{.metadata.name}'
      - name: job-namespace
        valueFrom: '{.metadata.namespace}' 

The extracted value will be write to/tekton/results/$(name).

  • set-ownerreference: Set the ownerReferences for the resource as pod of step, default to false.

Usage

This TaskRun runs the Task to deploy the given Kubernetes resource.

apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
  name: kubectl-deploy-pod
spec:
  taskRef:
    name: kubectl-deploy-pod
  params:
  - name: action
    value: create
  - name: success-condition
    value: status.phase == Running
  - name: failure-condition
    value: status.phase in (Failed, Error)
  - name: output
    value: |
      - name: job-name
        valueFrom: '{.metadata.name}'
      - name: job-namespace
        valueFrom: '{.metadata.namespace}' 
  - name: set-ownerreference
    value: "true"
  - name: manifest
    value: |
      apiVersion: v1
      kind: Pod
      metadata:
        generateName: myapp-pod-
        labels:
          app: myapp
      spec:
        containers:
        - name: myapp-container
          image: docker
          command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 30']