• This repository has been archived on 29/Aug/2023
  • Stars
    star
    343
  • Rank 123,371 (Top 3 %)
  • Language
    Shell
  • Created about 5 years ago
  • Updated about 1 year ago

Reviews

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

Repository Details

Example configuration to create Kubernetes clusters powered by ignite and gitops

Firekube

Firekube is a Kubernetes cluster working on top of ignite and firecracker. Firekube clusters are operated with GitOps.

ignite and firecracker only work on Linux as they need KVM. Fortunately we will also work on macOS using footloose: the Kubernetes nodes are then running inside containers.

Creating a Firekube cluster

Prerequisites: docker, git, kubectl 1.14+.

  1. Fork this repository.

  2. Clone your fork and cd into it. Use the SSH git URL as the script will push an initial commit to your fork:

    export user="" # Your GitHub handle or org
    
    git clone [email protected]:$user/wks-quickstart-firekube.git
    cd wks-quickstart-firekube
  3. Start the cluster:

    ./setup.sh

    This step will take several minutes.

    Please note that the setup.sh script will detect which OS you're on. If it's macOS, the script will automatically set backend: docker inside config.yaml. This config is to start the cluster in containers as there is no KVM on macOS. However, Firekube on Linux will run either with backend: ignite (ignite VMs) or backend: docker (containers). So the setup.sh script won't touch the backend value inside config.yaml if you're on Linux. In case you started Firekube (in containers) on macOS then switched to try it on Linux, please make sure that the backend value is set to backend: ignite so that you can start the cluster on ignite / firecracker VMs.

  4. Export the KUBECONFIG environment variable as indicated at the end of the installation:

    export KUBECONFIG=/home/damien/.wks/weavek8sops/example/kubeconfig

Enjoy your Kubernetes cluster!

$ kubectl get nodes
NAME               STATUS   ROLES    AGE     VERSION
67bb6c4812b19ce4   Ready    master   3m42s   v1.14.1
a5cf619fa058882d   Ready    <none>   75s     v1.14.1

Watch GitOps in action

Now that we have a cluster installed, we can commit Kubernetes objects to the git repository and have them appear in the cluster. Let's add podinfo, an example Go microservice, to the cluster.

kubectl apply --dry-run -k github.com/stefanprodan/podinfo//kustomize -o yaml > podinfo.yaml
git add podinfo.yaml
git commit -a -m 'Add podinfo Deployment'
git push

A few seconds later, you should witness the apparition of a podinfo pod in the cluster:

$ kubectl get pods
NAME                       READY   STATUS    RESTARTS   AGE
podinfo-677768c755-z76xk   1/1     Running   0          30s

To view podinfo web UI:

  1. Expose podinfo locally:

    kubectl port-forward deploy/podinfo 9898:9898
    
  2. Point your browser to http://127.0.0.1:9898:

    podinfo

Deleting a Firekube cluster

Run:

./cleanup.sh

Using a private git repository with firekube

To use a private git repository instead of a fork of wks-quickstart-firekube:

  1. Create a private repository and push the wks-quickstart-firekube master branch there. Use the SSH git URL when cloning the private repository:

    git clone [email protected]:$user/$repository.git
    cd $repository
    git remote add quickstart [email protected]:weaveworks/wks-quickstart-firekube.git
    git fetch quickstart
    git merge quickstart/master
    git push
    
  2. Create an SSH key pair:

    ssh-keygen -t rsa -b 4096 -C "[email protected]" -f deploy-firekube  -N ""
  3. Upload the deploy key to your private repository (with read/write access):

    deploy key upload

  4. Start the cluster:

    ./setup.sh --git-deploy-key  ./deploy-firekube

Getting Help

If you have any questions about, feedback for or problems with wks-quickstart-firekube:

Weaveworks follows the CNCF Code of Conduct. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting a Weaveworks project maintainer, or Alexis Richardson ([email protected]).

Your feedback is always welcome!

License

Apache 2.0

More Repositories

1

weave

Simple, resilient multi-host containers networking and more.
Go
6,618
star
2

scope

Monitoring, visualisation & management for Docker & Kubernetes
Go
5,854
star
3

eksctl

The official CLI for Amazon EKS
Go
4,493
star
4

ignite

Ignite a Firecracker microVM
Go
3,486
star
5

grafanalib

Python library for building Grafana dashboards
Python
1,872
star
6

footloose

Container Machines - Containers that look like Virtual Machines
Go
1,589
star
7

awesome-gitops

A curated list for awesome GitOps resources
1,504
star
8

kubediff

Kubediff: a tool for Kubernetes to show differences between running state and version controlled configuration.
Python
1,182
star
9

tf-controller

A GitOps Terraform controller for Kubernetes
Go
1,002
star
10

weave-gitops

Weave GitOps provides insights into your application deployments, and makes continuous delivery with GitOps easier to adopt and scale across your teams.
MDX
914
star
11

mesh

A tool for building distributed applications.
Go
882
star
12

tcptracer-bpf

eBPF program using kprobes to trace TCP events without run-time compilation dependencies
Shell
409
star
13

wksctl

Open Source Weaveworks Kubernetes System
Go
396
star
14

prom-aggregation-gateway

An aggregating push gateway for Prometheus
Shell
328
star
15

vscode-gitops-tools

GitOps Visual Studio Code Extension
TypeScript
224
star
16

weave-gitops-enterprise

This repo provides the enterprise level features for the weave-gitops product, including CAPI cluster creation and team workspaces.
Go
160
star
17

promjs

TypeScript
151
star
18

common

Libraries used in multiple Weave projects
Go
129
star
19

go-odp

A Go library to control the Open vSwitch in-kernel datapath
Go
73
star
20

libgitops

A Go library for implementing GitOps, used by Ignite
Go
66
star
21

terraform-kubernetes

Terraform module for provisioning AWS resources to run a Kubernetes cluster
HCL
61
star
22

eks-quickstart-app-dev

Example flux manifests for eksctl gitops
56
star
23

cluster-api-provider-existinginfra

Manage existing infrastructure with Cluster API using this provider.
Go
45
star
24

build-tools

Collection of build & test tools shared by various Weaveworks projects
Shell
44
star
25

flintlock

Lock, Stock, and Two Smoking MicroVMs. Create and manage the lifecycle of MicroVMs backed by containerd.
Go
41
star
26

kubernetes-ami

A simple AMI and CloudFormation for launching Kubernetes on AWS
Shell
40
star
27

promrus

Logrus hook to expose Prometheus metrics.
Go
34
star
28

weaveworks-backstage

Backstage app and Plugins for WeaveWorks and Flux.
TypeScript
33
star
29

policy-agent

Weaveworks Policy Agent
Go
32
star
30

ui-components

A collection of UI components that are shared across Weaveworks projects
JavaScript
30
star
31

integrations

Weave Third-Party Integrations
Shell
26
star
32

prometheus_sql_exporter

A service that exposes user-specified SQL queries on a prometheus metrics endpoint
Go
26
star
33

cortex-dashboards

Grafana dashboards for Cortex
Python
22
star
34

guestbook-gitops

GitOps with GitHub Actions to ECR and EKS
Makefile
20
star
35

fk-covid

Firekube distro with COVID-Net ML
Shell
18
star
36

multienv-example

Example of how to manage configuration for multiple Kubernetes clusters e.g., dev, staging, production
14
star
37

profiles

GitOps native package management
Go
11
star
38

mlops-profile

Kubeflow-based Machine Learning Profile
10
star
39

launcher

Weave Cloud Launcher
Go
10
star
40

eks-appmesh-profile

AWS App Mesh eksctl profile
10
star
41

docker-ansible

Shell
9
star
42

homebrew-tap

Ruby
9
star
43

gitopssets-controller

Manages the GitOpsSet CRDs.
Go
9
star
44

weavecloud-browser-extension

Browser extension to integrate Grafana dashboards with Weave Cloud
JavaScript
9
star
45

billing-client

A client library for sending usage data to the billing system.
Go
7
star
46

pctl

CLI for interacting with profiles
Go
7
star
47

flux-example

Small example of Kubernetes config, for the purpose of illustrating how to use Flux
Go
7
star
48

wordepress

Tool support enabling hosting of technical documentation in WordPress
Go
7
star
49

MoodyKubie

Face detection and emotion classification, in Docker containers, on Kubernetes, running on CubieBoard (ARM).
JavaScript
7
star
50

flux-adapter

Connecting fluxd to Weave Cloud
Go
6
star
51

image-builder

Image building for Weaveworks projects.
Dockerfile
6
star
52

covid-ml-profile

FireKube and EKS Machine Learning Profile for the fk-covid Project
5
star
53

cluster-controller

cluster-controller for Weave GitOps Enterprise
Go
5
star
54

alertdiff

Expose metrics detailing differences between two alert sources
Haskell
4
star
55

flux2-openshift

OperatorHub submission repo for Flux2
JavaScript
4
star
56

weave-gitops-quickstart

Quickstart resources to get you started with Weave GitOps Enterprise
4
star
57

cluster-bootstrap-controller

bootstrap-controller for Weave Gitops Enterprise
Go
4
star
58

profiles-catalog

Profiles for Weave GitOps
Makefile
4
star
59

gitops-toolkit-demo

GoTK Demo
3
star
60

schemer

Library to generate JSON schemas for your docs
Go
3
star
61

weave-gitops-scenarios

Various test scenarios for weave-gitops
Python
3
star
62

wkp-docs

Home of the Weave Kubernetes Platform technical documentation.
JavaScript
3
star
63

policy-library

The policy-as-code library
Open Policy Agent
3
star
64

cluster-api-provider-firecracker

CAPF - A Cluster API Provider for Firecracker
2
star
65

backstage-sockshop

Sockshop Components for Backstage
2
star
66

weave-gitops-private

This is for tracking weaveworks internal information on weave-gitops. Will include issues, internal roadmaps, etc.
Shell
2
star
67

service

☁️ Images for Weave Cloud (R) (TM) (C) ☁️
Go
2
star
68

clusters-config

Configuration for engineering's ephemeral clusters
Shell
2
star
69

weave-gitops-enterprise-tf-aws-provider

GitOps-first Terraform for Weave GitOps enterprise customers to use.
HCL
1
star
70

weave-gitops-ssp-addon

Weave GitOps AddOn for SSP EKS Quickstart
TypeScript
1
star
71

buildpack-profile

1
star
72

weave-assured-flux

Weaveworks Assured Flux
Shell
1
star
73

cluster-reflector-controller

Automatically "reflect" existing AKS/EKS/GKE clusters into Weave GitOps Enterprise.
Go
1
star
74

go-git-providers

A collection of clients for different git providers like Github
Go
1
star
75

weave-action

Weaveworks GitHub Actions
1
star
76

homebrew-weave-gitops

The repository contains only the brew formula for installing weave-gitops
Ruby
1
star
77

templates-controller

Manages the GitopsTemplates CRDs
Go
1
star
78

flux-shard-controller

Easily spread load across replicated kustomize, source, helm and notification controllers
Go
1
star
79

weave-gitops-profile-examples

These profiles and profile index can be used as examples of how to construct a Weave GitOps Enterprise profile and repository.
Smarty
1
star
80

corp-gh-org-controller

A Kubernetes controller to create and manage GitHub Enterprise Organisations.
Go
1
star
81

microvm-scheduler-api

The API types for the Microvm Scheduler
1
star
82

pipeline-controller

This repository contains the Pipeline CRD and associated controller for Weave GitOps Enterprise.
Go
1
star
83

weaveworks-backstage-enterprise

Weaveworks enterprise backstage plugins
TypeScript
1
star
84

progressive-delivery

This repository contains the progressive delivery API handlers that Weave GitOps Enterprise serves.
Go
1
star
85

weave-gitops-clusters

Configuration for the staging k8s clusters used by weave-gitops.
HCL
1
star
86

weave-policy-validator

Weaveworks Infrastructure as Code Validator
Go
1
star
87

sa-demos

This repository is dealing with the Weave GitOps demos and demo environments. Please use it to file and update issues that you are seeing. You can also put your demo guides and demo scripts here.
Shell
1
star