Getting started with Pipelines Enterprise
This feature is in alpha and certain aspects will change
We're very excited for people to use this feature. However, please note that changes in the API, behaviour and security will evolve. The feature is suitable to use in controlled testing environments.
Prerequisites
Before using Pipelines, please ensure that:
- You have Weave GitOps Enterprise installed on a cluster.
- You have configured Weave GitOps Enterprise RBAC for Pipelines.
- The Pipelines feature flag
enablePipelines
has been enabled. This flag is part of the Weave GitOps Enterprise Helm chart values and is enabled by default. - Any leaf clusters that are running workloads that you need to visualise using Pipelines, have been added to Weave GitOps Enterprise.
- You have exposed the promotion webhook on the management cluster and leaf clusters can reach that webhook endpoint over the network.
Define a pipeline
A pipeline allows you to define the route your application is taking in order to make it to production. There are three main concepts playing in a pipeline:
- the
application
to deliver - the
environments
that your app will go through in its way to production (general) - the
deployment targets
or the clusters that each environment has
You can define a delivery pipeline using a Pipeline
custom resource.
An example of how it looks for an application podinfo
is shown below.
Expand to view
---
apiVersion: pipelines.weave.works/v1alpha1
kind: Pipeline
metadata:
name: podinfo-02
namespace: flux-system
spec:
appRef:
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
name: podinfo
environments:
- name: dev
targets:
- namespace: podinfo-02-dev
clusterRef:
kind: GitopsCluster
name: dev
namespace: flux-system
- name: test
targets:
- namespace: podinfo-02-qa
clusterRef:
kind: GitopsCluster
name: dev
namespace: flux-system
- namespace: podinfo-02-perf
clusterRef:
kind: GitopsCluster
name: dev
namespace: flux-system
- name: prod
targets:
- namespace: podinfo-02-prod
clusterRef:
kind: GitopsCluster
name: prod
namespace: flux-system
In the example above, the podinfo
application is delivered to a traditional pipeline composed of dev
, test
and prod
environments.
An environment is used to describe the different stages of a pipeline and is composed of one or more deployment targets. A deployment
target is a combination of a namespace and a GitopsCluster
reference and is
used to specify where the application is running in our fleet. In this case, the test
environment is composed of two deployment targets,
qa
and perf
, to indicate that although both targets are part of the same stage (testing), they can evolve separately and may run
different versions of the application. Note, that there are two clusters being used for the environments, dev
and prod
, both of which
are defined in the flux-system
namespace.
For more details about the spec of a pipeline see here.
View the list of pipelines
Once flux has reconciled your pipeline you can navigate to the pipelines view to see it.
Pipeline list view show the list of pipelines you have access to. For each pipeline, a simplified view of the pipeline
is shown with the application Type
and Environments
it goes through.
View the details of a pipeline
Once you have selected a pipeline from the list, you will navigate to its details view. In pipeline details view you could view the current status of your application by environment and deployment target.