concourse-operator/

directory
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 8, 2019 License: MIT

README

Concourse Operator

Overview

Declaratively configure concourse pipelines as Kubernetes resources.

  • Defines a Pipeline CRD to describe a concourse pipeline
  • Deploys a concourse-pipeline-controller to create/update/delete pipelines on change

Example Pipeline

Define a pipeline like:

apiVersion: concourse.k8s.io/v1beta1
kind: Pipeline
metadata:
  labels:
    controller-tools.k8s.io: "1.0"
  name: canary
spec:
  pipelineString: |
    resources:
    - name: gsp-canary
      type: git
      source:
        uri: https://github.com/alphagov/gsp-canary.git
        branch: master
    - name: canary-image
      type: docker-image
      source:
        repository: govsvc/gsp-canary
    - name: updater-image
      type: docker-image
      source:
        repository: govsvc/gsp-canary-chart-updater
    jobs:
    - name: build
      plan:
      - get: gsp-canary
      - put: canary-image
        params:
          build: gsp-canary
          build_args:
            BUILD_TIMESTAMP: "1544635666"
          dockerfile: gsp-canary/Dockerfile.canary
      - put: updater-image
        params:
          dockerfile: gsp-canary/Dockerfile.updater

Example Team

Define a team like:


apiVersion: concourse.k8s.io/v1beta1
kind: Team
metadata:
  labels:
    controller-tools.k8s.io: "1.0"
  name: team-sample
spec:
  roles:
  - name: owner
    github:
      users: ["admin"]
  - name: member
    github:
      teams: ["org:team"]
  - name: viewer
    github:
      orgs: ["org"]
    local:
      users: ["visitor"]

Example operator deployment

The operator is deployed as part of https://github.com/alphagov/gsp-ci-system.

Developing

Driven by make. To build the docker image:

make docker-build

To tag and publish the built docker image:

make docker-push

It was originally built using kubebuilder with:

kubebuilder init --domain k8s.io
kubebuilder create api --group concourse --version v1beta1 --kind Pipeline

Directories

Path Synopsis
cmd
pkg
apis
Package apis contains Kubernetes API groups.
Package apis contains Kubernetes API groups.
apis/concourse
Package concourse contains concourse API versions
Package concourse contains concourse API versions
apis/concourse/v1beta1
Package v1beta1 contains API Schema definitions for the concourse v1beta1 API group +k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:conversion-gen=github.com/alphagov/gsp/components/concourse-operator/pkg/apis/concourse +k8s:defaulter-gen=TypeMeta +groupName=concourse.k8s.io Package v1beta1 contains API Schema definitions for the concourse v1beta1 API group +k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:conversion-gen=github.com/alphagov/gsp/components/concourse-operator/pkg/apis/concourse +k8s:defaulter-gen=TypeMeta +groupName=concourse.k8s.io
Package v1beta1 contains API Schema definitions for the concourse v1beta1 API group +k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:conversion-gen=github.com/alphagov/gsp/components/concourse-operator/pkg/apis/concourse +k8s:defaulter-gen=TypeMeta +groupName=concourse.k8s.io Package v1beta1 contains API Schema definitions for the concourse v1beta1 API group +k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:conversion-gen=github.com/alphagov/gsp/components/concourse-operator/pkg/apis/concourse +k8s:defaulter-gen=TypeMeta +groupName=concourse.k8s.io

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL