Architecture Of Konflux

Pipeline Service

Pipeline Service provides Tekton APIs and services to RHTAP. In the initial phase of RHTAP, Pipeline Service will be provided by a stock installation of the OpenShift Pipelines operator. This deployed version will be the a candidate build of the OpenShift Pipelines operator from a Red Hat build system.

Pipelines operator deployment

# APIs and Services

Pipeline Service provides the following:

Pipeline Service also exposes the following ingress points:

# Deployment Configuration

The deployment of the OpenShift Pipelines operator will have the following notable configurations:

# Architecture

# Diagram

Legend:

Architecture diagram

# Tekton Pipelines

# appstudio-pipeline Service Account

The service should offer users a service account for running pipelines. However, the automatic generation of a ‘pipeline’ service account within namespaces has been disabled in the component because it was found that the permissions granted to that account were overly broad.

The Pipeline Service component creates the appstudio-pipelines-scc ClusterRole, but does not bind this role to any service account.

The CodeReadyToolchain platform (CRT) creates the appstudio-pipelines-runner ClusterRole on each tenant/member cluster. It also creates the appstudio-pipeline ServiceAccount on every tenant namespace as well as the role bindings for the appstudio-pipeline service account within the namespace.

# Tekton Chains

# Signing Secret

The signing secret is unique to each cluster, and is a long lived secret. Rotating the secret is extremely disruptive, as it invalidates any artifact that was built using that secret.

Moving to keyless signing would solve the issue and would be the long-term solution.

The public-key is stored in openshift-pipelines namespace as a Secret named public-key. The secret is readable by all authenticated users to allow them to verify signed artifacts.

# Tekton Results

# Storage

AWS RDS and S3 are used to handle the storage needs of Tekton Results.

# Pipeline as Code

# Secret management

The secrets for the GitHub Application are stored in Vault, and synchronized as an ExternalSecret. The refresh rate for the synchronization is aggressive so that rotating the secrets do not generate too long of an outage.

# Repository

The official repository for the Pipeline Service can be found at https://github.com/openshift-pipelines/pipeline-service. This repository contains the source code, configuration files, and documentation needed to deploy and consume the service.