frigg

command module
v0.0.0-...-415b881 Latest Latest
Warning

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

Go to latest
Published: Apr 8, 2024 License: MIT Imports: 1 Imported by: 0

README

Frigg

Go Reference Go Report Card

What is Frigg

Meaning of Frigg: Goddess of wisdom and crafts

Frigg

TL;DR:

With Frigg, you provision N-Kubernets Clusters, which are GitOps-enabled and have batteries included.

Frigg is a cli project, to easily create one to one hundred of Kubernetes clusters on different hyperscalers.

Since we relay heavenly on Cluster-API, we could implement any supported provider to Frigg
Check the supported Hyperscalers

No matter which hyperscaler you choose, your kubernetes clusters will be attached to one another, and are also GitOps enabled.

At the end, you will have N-amount of clusters, with a Github repository for each of them, where you are able to add more applications deployments.

Quick overview of Frigg()

Friggs Overview

Usage

Requirements:
  • Docker Desktop / Engine
    (Podman (is currently not yet fully supported))
Get the frigg cli:

Get the binary using go:

go install github.com/PatrickLaabs/frigg@1.1.2
curl -L -o frigg.tar.gz https://github.com/PatrickLaabs/frigg/releases/download/1.1.2/frigg_1.1.2_darwin_arm64.tar.gz
tar -xf frigg.tar.gz
chmod +x frigg
./frigg version

or download the binary at the releasepage:
Frigg - Github Release Page

Homebrew is on the way.

Start the deployment:

While everything gets bootstrapped and provisioned, the Frigg CLI
also creates a working directory inside your home directory at $HOME/.frigg

Inside this directory we will store every generated file, such as
the private and public ssh keypairs, various manifests, etc.

Set the environment variables:

export GITHUB_TOKEN=
export GITHUB_USERNAME=
export GITHUB_MAIL=

Running Frigg:

frigg provisions kubernetes cluster with capi and gitops in no-time

Usage:
  frigg [command]

Available Commands:
  bootstrap   bootstrap various clusters on different providers
  completion  Generate the autocompletion script for the specified shell
  delete      Deletes one of [cluster]
  help        Help about any command
  version     Prints the frigg CLI version

Provision your first management cluster:

frigg bootstrap capd cluster

or - to use the ClusterAPI Controllers - run:

frigg bootstrap capd-controller cluster

This might take a while, since we are doing some heavy lifting.

Provision your workload cluster ontop:

frigg bootstrap capd workloadcluster

or

frigg bootstrap capd-controller workloadcluster

After the provisioning of your management cluster is ready,
you can port-forward the argocd-server pod and login with:

User: admin
Password: frigg

Features

Supported Providers
  • vCluster
  • CAPD (Docker)
Providers under development
  • vSphere
  • Azure
  • Google
  • Harvester
  • Proxmox

Documentation

Further documentation is available in the /docs directory.

Relevant Repositories

Friggs Management-Cluster GitOps Repository Template

This Repository will the beating-heart for your management-cluster.
friggs-mgmt-repo-template

Friggs Workload-Clusters GitOps Repository Template

This Repository is used to provide a good foundation for your workload clusters with various deployments.
friggs-workload-repo-template

Frigg-Builder

This simple Tool will be used by ArgoCD Workflows to operate various things inside the pipeline.
Frigg-Builder

Sample-Application

An example application deployment for your workload clusters.
sample-application

Support

You like the project, and want to support further development? Glad to hear!

Buy Me A Coffee

Thank you very much, for supporting me 🚀

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
Package cmd provides helpers used by kind's commands / cli
Package cmd provides helpers used by kind's commands / cli
frigg
Package frigg implements the root frigg cobra command, and the cli Main()
Package frigg implements the root frigg cobra command, and the cli Main()
frigg/build
Package build implements the `build` command
Package build implements the `build` command
frigg/completion
Package completion implements the `completion` command
Package completion implements the `completion` command
frigg/completion/bash
Package bash implements the `bash` command
Package bash implements the `bash` command
frigg/completion/fish
Package fish implements the `fish` command
Package fish implements the `fish` command
frigg/completion/zsh
Package zsh implements the `zsh` command
Package zsh implements the `zsh` command
frigg/create
Package create implements the `create` command
Package create implements the `create` command
frigg/create/cluster
Package cluster implements the `create cluster` command
Package cluster implements the `create cluster` command
frigg/delete
Package delete implements the `delete` command
Package delete implements the `delete` command
frigg/delete/cluster
Package cluster implements the `delete` command
Package cluster implements the `delete` command
frigg/delete/clusters
Package clusters implements the `delete` command for multiple clusters
Package clusters implements the `delete` command for multiple clusters
frigg/export
Package export implements the `export` command
Package export implements the `export` command
frigg/export/kubeconfig
Package kubeconfig implements the `kubeconfig` command
Package kubeconfig implements the `kubeconfig` command
frigg/export/logs
Package logs implements the `logs` command
Package logs implements the `logs` command
frigg/get
Package get implements the `get` command
Package get implements the `get` command
frigg/get/clusters
Package clusters implements the `clusters` command
Package clusters implements the `clusters` command
frigg/get/kubeconfig
Package kubeconfig implements the `kubeconfig` command
Package kubeconfig implements the `kubeconfig` command
frigg/get/nodes
Package nodes implements the `nodes` command
Package nodes implements the `nodes` command
frigg/load
Package load implements the `load` command
Package load implements the `load` command
frigg/load/docker-image
Package load implements the `load` command
Package load implements the `load` command
frigg/load/image-archive
Package load implements the `load` command
Package load implements the `load` command
frigg/version
Package version implements the `version` command
Package version implements the `version` command
frigg
app
internal
apis/config
Package config implements the current apiVersion of the `kind` Config along with some common abstractions
Package config implements the current apiVersion of the `kind` Config along with some common abstractions
apis/config/encoding
Package encoding implements utilities for decoding from yaml the `kind` Config
Package encoding implements utilities for decoding from yaml the `kind` Config
cli
env
patch
Package patch contains helpers for applying patches
Package patch contains helpers for applying patches
sets
Package sets implements set types.
Package sets implements set types.
version
Package version provides utilities for version number comparisons
Package version provides utilities for version number comparisons
pkg
apis/config/defaults
Package defaults contains cross-api-version configuration defaults
Package defaults contains cross-api-version configuration defaults
apis/config/v1alpha4
Package v1alpha4 implements the v1alpha4 apiVersion of kind's cluster configuration
Package v1alpha4 implements the v1alpha4 apiVersion of kind's cluster configuration
build/nodeimage
Package nodeimage implements functionality to build the kind node image
Package nodeimage implements functionality to build the kind node image
build/nodeimage/internal/container/docker
Package docker contains helpers for working with docker This package has no stability guarantees whatsoever!
Package docker contains helpers for working with docker This package has no stability guarantees whatsoever!
build/nodeimage/internal/kube
Package kube implements functionality to build Kubernetes for the purposes of installing into the kind node image
Package kube implements functionality to build Kubernetes for the purposes of installing into the kind node image
cluster
Package cluster implements kind kubernetes-in-docker cluster management
Package cluster implements kind kubernetes-in-docker cluster management
cluster/constants
Package constants contains well known constants for kind clusters
Package constants contains well known constants for kind clusters
cluster/internal/create/actions/config
Package config implements the kubeadm config action
Package config implements the kubeadm config action
cluster/internal/create/actions/installcni
Package installcni implements the install CNI action
Package installcni implements the install CNI action
cluster/internal/create/actions/installstorage
Package installstorage implements the an action to install a default storageclass
Package installstorage implements the an action to install a default storageclass
cluster/internal/create/actions/kubeadminit
Package kubeadminit implements the kubeadm init action
Package kubeadminit implements the kubeadm init action
cluster/internal/create/actions/kubeadmjoin
Package kubeadmjoin implements the kubeadm join action
Package kubeadmjoin implements the kubeadm join action
cluster/internal/create/actions/loadbalancer
Package loadbalancer implements the load balancer configuration action
Package loadbalancer implements the load balancer configuration action
cluster/internal/create/actions/waitforready
Package waitforready implements the wait for ready action
Package waitforready implements the wait for ready action
cluster/internal/kubeadm
Package kubeadm contains kubeadm related constants and configuration
Package kubeadm contains kubeadm related constants and configuration
cluster/internal/kubeconfig
Package kubeconfig provides utilities kind uses internally to manage kind cluster kubeconfigs
Package kubeconfig provides utilities kind uses internally to manage kind cluster kubeconfigs
cluster/internal/loadbalancer
Package loadbalancer contains external loadbalancer related constants and configuration
Package loadbalancer contains external loadbalancer related constants and configuration
cluster/internal/logs
Package logs contains tooling for obtaining cluster logs
Package logs contains tooling for obtaining cluster logs
cluster/internal/providers/common
Package common contains common code for implementing providers
Package common contains common code for implementing providers
cluster/nodes
Package nodes provides a kind specific definition of a cluster node
Package nodes provides a kind specific definition of a cluster node
cluster/nodeutils
Package nodeutils contains functionality for Kubernetes-in-Docker nodes It mostly exists to break up functionality from github.com/PatrickLaabs/frigg/pkg/cluster
Package nodeutils contains functionality for Kubernetes-in-Docker nodes It mostly exists to break up functionality from github.com/PatrickLaabs/frigg/pkg/cluster
errors
Package errors provides common utilities for dealing with errors
Package errors provides common utilities for dealing with errors
exec
Package exec contains an interface for executing commands, along with helpers TODO(bentheelder): add standardized timeout functionality & a default timeout so that commands cannot hang indefinitely (!)
Package exec contains an interface for executing commands, along with helpers TODO(bentheelder): add standardized timeout functionality & a default timeout so that commands cannot hang indefinitely (!)
fs
Package fs contains utilities for interacting with the host filesystem in a docker friendly way TODO(bentheelder): this should be internal
Package fs contains utilities for interacting with the host filesystem in a docker friendly way TODO(bentheelder): this should be internal
log
Package log defines a logging interface that kind uses This is roughly a minimal subset of klog github.com/kubernetes/klog
Package log defines a logging interface that kind uses This is roughly a minimal subset of klog github.com/kubernetes/klog

Jump to

Keyboard shortcuts

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