Skip to content

ouzi-dev/prow-helm-chart

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

prow-helm-chart

Helmv3 chart to get Prow and everything needed up and running on Kubernetes.

Overview

This helm chart will install Prow on Kubernetes.

Install

Using the Ouzi helm repo

helm repo add ouzi https://charts.ouzi.io
helm repo update
helm upgrade \
  prow \
  ouzi/prow \
  --version (PROW_CHART_VERSION) \
  --install \
  --wait \
  --atomic \
  --namespace prow \
  --values values.yaml

Using the GitHub Release

The Helm package is published in the releases for easy install - no registry needed, just run the following command:

 @helm upgrade \
   prow \
   https://github.com/ouzi-dev/prow-helm-chart/releases/download/$(PROW_CHART_VERSION)/prow-$(PROW_CHART_VERSION).tgz \
   --install \
   --wait \
   --atomic \
   --namespace prow \
   --values values.yaml 	 

Requirements

This chart is tested against a GKE cluster but any Kubernetes cluster >= 1.14 should work. For help in setting up a GKE cluster for Prow, see our prow-gke-terraform module

The chart is developed using Helmv3 and we will not support any Helm v2

Componenets

Prow components

  • deck: Deck provides a UI for Prow, eg ouzi-deck. Deevelopers can see:
    • the current jobs running, the job status, and logs,
    • the PRs waiting to be merged including the missing checks preventing them to be merged,
    • the PRs history ie which were r were not previously merged ,
    • command help pages to find out which chatbot command to use,
    • plugin help pages to find out which plugins are configured and how to use them.
  • hook: Hook is responsible of receiving webhook calls from GitHub and handle the events. It is a stateless server that listens for GitHub webhooks and dispatches them to the appropriate plugins. Hook's plugins are used to trigger jobs, implement 'slash' commands, post to Slack, and more. See the prow/plugins directory for more information on plugins. Currently, hook, handles the following types of events from GitHub. Every other event is ignored:
    • issues
    • issue_comment
    • pull_request
    • pull_request_review
    • pull_request_review_comment
    • push
    • status
  • plank: Plank is the controller that manages the job execution and lifecycle for jobs running on k8s
  • crier: Crier is reposonsible for reporting the status of the ProwJobs. Currently, it supports:
  • sinker: Sinker cleans up old jobs and the pods backing them
  • horologium: Triggers periodic jobs ie ProwJobs defined to run on a schedule
  • tide: Tide is responsible for the merging automation once they meet the defined criteria - see the Tide Readme for more info. It will automatically retest PRs that meet the criteria ("tide comes in") and automatically merge them when they have up-to-date passing test results ("tide goes out").
  • statusreconciler: Ensures that changes to required presubmits do not cause PRs in flight to get stuck in the merge queue
  • needs-rebase: Adds a label and blocks merging when rebase is needed
  • branchprotector: A very useful component that configures GithHub branch protection for all repos/branches across the GitHub org.
  • pushgateway: Exposes all the metrics from the individual Prow components under a single scrape endpoint for Prometheus. This avoids having to configure Prometheus for each of the many Prow components.
  • label-sync: Reads a ConfigMap that contains GitHub labels(name, description, colour) and applies them to the managed GitHub org and its repos for a consistent view. eg a configmap would contain the following and label-sycn would apply it to all GitHub+ repos under management:
    labels:
    - color: 00ff00
      name: lgtm
    - color: ff0000
      name: priority/P0
      previously:
      - color: 0000ff
        name: P0
    - name: dead-label
      color: cccccc
      deleteAfter: 2017-01-01T13:00:00Z
    
  • ghproxy: A reverse proxy HTTP cache optimized for use with the GitHub API. ghProxy is designed to reduce API token usage by allowing many components to share a single ghCache

Upgrading to a new release of Prow

To upgrade to a new release of Prow, run gcloud container images list-tags gcr.io/k8s-prow/plank --limit="10" --format='value(tags)' | grep -o -E 'v[^,]+' to get the 10 most recent tags. Pick the latest and replace all image tags in the values.yaml. Do not forget to update the Chart.yaml appVersion.

You also need to check about deprecated flags in all of the components as well as changes with rbac.