Coder Social home page Coder Social logo

flux-fleet's Introduction

FLux Fleet (flux-fleet) Repo

This repository contains code to setup Flux Deployment to various kubernetes clusters in the organisation.

This repo is managed by Site Reliability Engineers.

Type of code and their respective paths are,

  • clusters/* : Configuration for Each Kubernetes Cluster, flux-system manifests(output of bootstrap), and what (which projects) to on board on the cluster.
  • infrastructure/* : Either plain YAMLs or additinally environment specific kustomize overlays.
  • projects/* : Projects(Tenants) On Boarding Spec

Code Organisation Strategy with FluxCD

You would maintain 3 Different Repos to maintain

  • Flux Fleet
  • Project Deployment
  • Project/App Source
  1. Flux Fleet Repository to manage organisation wide deployments to Kubernetes with FluxCD. This repository would contain

    • Cluster Configurations for all your envvironments e.g. staging, production. You would bootstrap the clusters by pointing to this repo.
    • Cluster Wide Infrastructure Components e.g. Ingress Controllers, Repository Secrets etc.
    • Project on boarding configurations aka. tenants spec. This is the spec that would point to a project repo for each tenant, fetch the sync manifests and deploy. You could call it a flux-fleet repository, which is managed typically by the SREs. Fork this repo to start seting up fleet repo. Who maintains Fleet Repo ==> Site Reliability Engineers / Devops/Platform Engineers.
  2. Project Deployment Repository (Tenant). This repository would contain,

    • Flux Sync/Deployment Code. For example,
      • GitRepository
      • HelmRepository
      • Kustomization (FluxCD Deployments)
      • HelmRelease
    • Helm Charts Source Code
    • YAML Manifests as either
      • Plain YAML
      • With Kustomize Overlays This project repository serves as one tenant on the cluster. Who maintains Fleet Repo ==> Developers + SREs. Setup : Create a new repository as xxxx-deploy (xxxx= your project/app name), clone it and from the root of the repository path download repository run this script. Use the following command to do do so,
      curl -fsSL https://raw.githubusercontent.com/lfs269/setup/main/setup_project_repo.sh | bash -
    
  3. Project/App Source Repository

    • Application Source Code
    • Self Explainatory
    • Contains Source Code + Dockerfile etc. Who maintains Fleet Repo ==> Developers.

On Boarding a Project

  1. SREs Setup Fleet Management of Kubernetes Clusters by Creating flux-fleet repo with

    • Cluster Definitions e.g. staging, qa, production
    • Cluster-wide Infrastructure Deployment Code
    • Projects (Tenants) Onboaring Scaffold Bootstrapping Clusters with
    • Git Source Integration with flux-fleet repo (its GitOps you know...)
    • Flux Controllers
    • CRDs
    • Policies : RBAC, Network Policy etc.
    • Git Source Repo Interation (its GitOps you know...)
  2. Developers/SREs create Deplpoyment Repo with

    • Flux Sync/Deployment Manifests
    • YAML Deployment + Kustomize Overlays
    • Helm Charts
  3. Project owners raise a On Boarding Request

    • Provide Project Deployment Repository
  4. SREs On Board the Project by

    • Genrating Tenant RBAC
    • Project On Boarding Manifests
  5. FluxCD Reconciles the Cluster State by

    • Syncing Project Deployment Code
    • Genrating Flux Resources for the Project e.g.
      • GitRepository
      • Kustomization
      • HelmRelease
    • Running Reconciliation for each of the Flux Resource with actual Kubernetes Cluster.

flux-fleet's People

Contributors

initcron avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.