• This repository has been archived on 07/Nov/2019
  • Stars
    star
    286
  • Rank 144,690 (Top 3 %)
  • Language
    Go
  • License
    BSD 3-Clause "New...
  • Created over 6 years ago
  • Updated almost 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Continuous Delivery from GitHub to your Kubernetes cluster

Heighliner

Build Status codecov Go Report Card GoDoc

A Heighliner is truly big. Its hold will tuck all of our frigates and transports into a little corner-we'll be just one small part of the ship's manifest.

Heighliner aims to make your workflow with GitHub and Kubernetes easy. Automatically deploy previews of GitHub pull requests to your cluster and use GitHub Releases to deploy to staging and production.

Warning: this project is still under heavy development and is not recommended for production usage yet. Breaking changes might occur until v1.0.0.

Goals

Cloud Native. Instead of templating, Heighliner runs your infrastructure as software, keeping the state of your deployments always as they should be.

Connected. The cluster is aware of container registry and source code repository state. It reacts to them (creating new deploys), and reflects into them (updating GitHub PR deployment status). Preview deploys are automatically created and destroyed. Deploys can auto-update based on Semantic Versioning policies, or be manually controlled.

Complete. A Heighliner Microservice comes with DNS and TLS out of the box.

Convention and Configuration. Reasonable defaults allow you to get up and running without much effort, but can be overridded for customization.

Installation

Heighliner consists out of multiple components, we've explained these in detail in the design docs and in an introductory blog post

For a full installation process, have a look at the installation docs or our getting started guide

Usage

Configure a GitHub Repository

Ensure that you have an API token installed in your cluster. Follow our how to for further instructions.

The GitHub repository resource is used to synchronize releases and pull requests with cluster state, and update pull requests with deployment status.

apiVersion: hlnr.io/v1alpha1
kind: GitHubRepository
metadata:
  name: cool-repository
spec:
  repo: my-repository
  owner: my-account
  configSecret:
    name: my-github-secret

Configure a Versioning Policy

The versioning policy resource defines how microservices are updated based on available releases.

apiVersion: hlnr.io/v1alpha1
kind: VersioningPolicy
metadata:
  name: release-patch
spec:
  semVer:
    version: release
    level: patch

Configure an Image Policy

The image policy resource synchronizes Docker container images with cluster state. It cross references with GitHub releases, filtering out images that do not match the versioning policy.

apiVersion: hlnr.io/v1alpha1
kind: ImagePolicy
metadata:
  name: my-image-policy
spec:
  image: my-docker/my-image
  imagePullSecrets:
  - name: my-docker-secrets
  versioningPolicy:
    name: release-patch
  filter:
    github:
      name: cool-repository

Configure a Network Policy

The network policy resource handles exposing instances of versioned microservices within the cluster, or to the outside world. domain can be templated for use with preview releases (pull requests).

apiVersion: hlnr.io/v1alpha1
kind: NetworkPolicy
metadata:
  name: hlnr-www
spec:
  microservice:
    name: my-microservice
  ports:
  - name: headless
    port: 80
    targetPort: 80
  externalDNS:
  - domain: my-domain.com
    port: headless
    tlsGroup: my-cert-manager-tls-group
  updateStrategy:
    latest: {}

Configure a Microservice

The microservice resource is a template for deployments of images that match the image policy.

apiVersion: hlnr.io/v1alpha1
kind: Microservice
metadata:
  name: my-microservice
spec:
  imagePolicy:
    name: my-image-policy

Contributing

Thanks for taking the time to join the community and helping out!

More Repositories

1

promptui

Interactive prompt for command-line applications
Go
5,921
star
2

torus-cli

A secure, shared workspace for secrets
Go
612
star
3

awesome-cloud-native-tutorials

A curated list of tutorials and labs for learning cloud native concepts
73
star
4

manifold-cli

Manage your services and config from the command line
Go
45
star
5

healthz

Easily add health checks to your go services
Go
23
star
6

manifold-laravel

Manifold configuration module for PHP framework Laravel
PHP
21
star
7

kubernetes-credentials

Kubernetes CRD to load Manifold Credentials as Secrets
Go
21
star
8

graphql-gen

Generate GraphQL schemas from Swagger OpenAPI specs
TypeScript
20
star
9

react-select-zero

Zero-dependency alternative to react-select
TypeScript
17
star
10

ui

Manifold’s web component UI library
TypeScript
14
star
11

terraform-provider-manifold

Terraform Manifold Provider
Go
14
star
12

ansiwrap

ANSI escape sequence / unicode aware text wrapping for Go
Go
10
star
13

sowhatsnew

So, what's new? A monorepo code delta tool for Go
Go
10
star
14

definitely-not-a-todo-list

It's not a todo list if I don't say it is!
JavaScript
10
star
15

grafton

Manifold's provider validation tool
Go
9
star
16

service-catalog-tutorial

A step by step introduction to the service-catalog in kubernetes
9
star
17

promptui-demo

Small cli app displaying some manifoldco/promptui features
Go
8
star
18

go-now

Client for Zeit Now deployment API
Go
7
star
19

static-react-demo-app

Demo application to demonstrate how to containerise a static React application
JavaScript
7
star
20

react-scroll-agent

Deadly spy for make benefit glorious nation of Scrolltopia
JavaScript
6
star
21

promulgate

Manifold's release tool
Go
6
star
22

go-signature

Verify signed HTTP requests from Manifold
Go
5
star
23

art

Visual assets and art for the Manifold brand
4
star
24

quickstart

Torus quickstart sample
JavaScript
4
star
25

gql-zero

A lightweight alternative for consuming GraphQL. Zero caching, zero bells. Zero Bloat.
TypeScript
4
star
26

pytill

Python package for Till Mobile
Python
4
star
27

ziggeo-smiledetector

A Smile Detector built with Ziggeo and Manifold
JavaScript
4
star
28

go-manifold

Go client API for Manifold (unstable)
Go
4
star
29

manifold-laravel-demo

Demo Laravel App - Uses Manifold to pull in JawsDB and LogDNA Credenitals
PHP
3
star
30

autotagger

Autotagging for the masses
Go
3
star
31

go-base64

A raw base64 url encoding library for JSON
Go
3
star
32

go-base32

base32 encoding using Manifold's chosen alphabet
Go
2
star
33

aggregate-ml-logs

Machine Learning Observability with Timber.io
Jupyter Notebook
2
star
34

manifold-integration

TypeScript
2
star
35

go-jwt

Convenience wrapper for JWT creation
Go
2
star
36

homebrew-brew

http://brew.sh/ taps for Manifold projects
Ruby
1
star
37

csharp-signature

Verify signed HTTP requests from Manifold
C#
1
star
38

elixir-manifoldco-signature

Verify signed HTTP requests from Manifold in Elixir
Elixir
1
star
39

shadowcat

Manifold OAuth in JS
TypeScript
1
star
40

manifold-init

Manifold UI core package
TypeScript
1
star
41

node-signature

Verify signed HTTP requests from Manifold
JavaScript
1
star
42

protoc-ts

1
star
43

eslint-plugin-stencil

ESLint rules to enforce better practices in Stencil development
JavaScript
1
star
44

manifold-on-zeit

Manifold Marketplace ➡️ ZEIT Marketplace
CSS
1
star
45

go-sample-provider

A minimal provider in Go
Go
1
star
46

mercury

Manifold’s Design Tokens
JavaScript
1
star
47

python-manifoldco-signature

Verify signed HTTP requests from Manifold
Python
1
star
48

node-restify-sample-provider

A minimal provider using Restify
JavaScript
1
star