Giter VIP home page Giter VIP logo

testflask-tekton's Introduction

testFlask-tekton

Sample Tekton Pipeline for a Flask Python Application

Application will show how we can use Tekton to deploy/test a flask application running on openshift, the Application being used is testFlask
Environment variables used in Commands have samples in the sample_env file.
So this example assumes a pipeline scenario where there is a running production application represented by our Production Project and at build time we deploy the same exact infrastructure in our devlopment project and test the code, when all satisfied we promote our dev image to production which is automatically deployed based on a trigger from our imagestream.

Prerequisites:

Steps to Run via Kustomize

  • Create Prerequisite Infrastucture Components if Required

  • Create Dev Environment

    oc apply -k ./overlays/dev
  • Create Prod Environment

    oc apply -k ./overlays/prod
  • Create CICD Environment Respository provides examples on how to deploy a normal tekton CICD Pipeline and a version that provides Image Scanning and Policy Checking using Red hat's Advanced Cluster Security Product.Depending on your version of OpenShift the default run of the pipeline might fail, please read Notes below.

    • Deploy pipeline without scanning and security

      oc kustomize ./cicd/overlays/simple | sed -e 's/name: testflask-pipelinerun/# name: testflask-pipelinerun/' | oc create -f -
    • Create CICD Environment with ACS
      Please see Notes if you run into errors

      oc kustomize ./cicd/overlays/secure | sed -e 's/name: testflask-pipelinerun/# name: testflask-pipelinerun/' | oc create -f -

Prerequisite Infrastructure

Please note this section is not maintained and is pulled from other repos.

  • Install Openshift Pipelines Operator

    oc apply -k ./infra/pipeline-operator
  • Install Advanced Cluster Security Operator

    oc apply -k ./infra/acs-operator
  • Create Advanced Cluster Security Instance

    oc apply -k ./infra/acs-instance
  • Install Gatekeeper Operator

    oc apply -k ./infra/gatekeeper-operator

Notes

  • Please note scanning the Openshift internal registry is not supported as of this writing.

  • Error('image-scan-pod" is waiting to start: CreateContainerConfigError').With error ('Error: secret "roxsecrets" not found'). ACS roxctl requires a secret that contains the Central cluster url and the API Token. You can try using the below command to create this(This might not be updated).

    oc kustomize ./cicd/overlays/secure/acs/pipelines-and-secrets | oc create -f -
  • Error - unable to validate against any security context constraint for builah task when running Pipeline Depending on your version of openshift pipelines the buildah task might require an enhanced scc.

    oc project 1234-tekton
    oc adm policy add-scc-to-user privileged system:serviceaccount:1234-tekton:pipeline
    oc policy add-role-to-user system:image-pusher system:serviceaccount:1234-tekton:pipeline
  • If you get "error creating build container: Error initializing source docker://registry.redhat.io/ubi8/ubi:latest: unable to retrieve auth token". This means the docker file we are using for build is not using the internal openshift registry.We might have to update the dockerfile to build.

    oc tag --source=docker registry.redhat.io/ubi8/ubi:latest ubi8:latest -n openshift
  • To use the eventlistener remember to create a webhook

  • PipelineRun will start in pending, re-run to start Build

Gatekeeper Enforcement

With the use of the Gatekeeper/OPA you can create policies to enforce/inform of cluster violations.There are sample policies to show an example of enforcing with tekton.Please make sure to install the gatekeeper operator first.

Note: Might need to run it 2x as API has to create CRD for contraint

Make sure all tekton pipelines have an ACS Policy Checking Task

oc kustomize ./cicd/overlays/secure/acs/policy-tekton-checking | oc create -f -

Make sure all tekton pipelines have an ACS Policy Scanning Task

oc kustomize ./cicd/overlays/secure/acs/policy-tekton-scanning | oc create -f -

Make sure all tekton pipelines have the appropriate apiVersions

oc kustomize ./cicd/overlays/secure/policy-tekton-api-version/ | oc create -f -

Make sure all tekton pipelines have a max failure timeout set.

oc kustomize ./cicd/overlays/secure/policy-tekton-timeout-set | oc create -f -

Make sure all tetkon pipeline resolvers only use approved git registries

oc kustomize ./cicd/overlays/secure/policy-tekton-allowed-git-resolver | oc create -f -

Make sure all tetkon pipeline resolvers only use approved bundle repos

oc kustomize ./cicd/overlays/secure/policy-tekton-allowed-bundle-resolver | oc create -f -

After the above constraints are created, you should not longer be able to run the non-secure pipeline creation above but you should be able to run the secure version.

testflask-tekton's People

Contributors

mooyeg avatar

Watchers

 avatar  avatar

Forkers

uejb

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.