All Projects → jasonumiker → K8s Plus Aws Gitops

jasonumiker / K8s Plus Aws Gitops

Licence: mit
An approach for GitOps of AWS backing resources like databases with CodePipeline together with Kubernetes via Flux

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to K8s Plus Aws Gitops

Python Lambda
A toolkit for developing and deploying serverless Python code in AWS Lambda.
Stars: ✭ 1,247 (+1333.33%)
Mutual labels:  aws
Aws Lambda Go Proxy
⚡️ ☁️ Pass Lambda events to the application running on your machine | Debug real traffic locally | Forget about redeployments
Stars: ✭ 85 (-2.3%)
Mutual labels:  aws
Lambda Monitoring
Logging and metrics libraries for AWS Lambda
Stars: ✭ 85 (-2.3%)
Mutual labels:  aws
Python Lambdarest
Flask like web framework for AWS Lambda
Stars: ✭ 84 (-3.45%)
Mutual labels:  aws
Terraform Aws Ecs Codepipeline
Terraform Module for CI/CD with AWS Code Pipeline and Code Build for ECS https://cloudposse.com/
Stars: ✭ 85 (-2.3%)
Mutual labels:  aws
Historical
A serverless, event-driven AWS configuration collection service with configuration versioning.
Stars: ✭ 85 (-2.3%)
Mutual labels:  aws
Fluidcontent
TYPO3 extension Fluidcontent: Fluid Content Element Engine
Stars: ✭ 82 (-5.75%)
Mutual labels:  flux
Rx Connect
Glue your state and pure React components with RxJS
Stars: ✭ 86 (-1.15%)
Mutual labels:  flux
Ecs Pipeline
☁️ 🐳 ⚡️ 🚀 Create environment and deployment pipelines to ECS Fargate with CodePipeline, CodeBuild and Github using Terraform
Stars: ✭ 85 (-2.3%)
Mutual labels:  aws
Preact Redux Isomorphic
preact-redux-isomorphic PWA SPA SSR best practices and libraries in under 80kB page size (for live demo click the link below)
Stars: ✭ 85 (-2.3%)
Mutual labels:  aws
Direct Upload
Composer Package to Direct Upload to S3
Stars: ✭ 84 (-3.45%)
Mutual labels:  aws
Aws Service Catalog Products
This repository contains a number of CloudFormation templates which can be used independently or as Products with AWS Service Catalog including the Open Source Tools AWS Service Catalog Factory and AWS Service Catalog Puppet. The templates include a number of the foundational AWS Services you may choose to manage Account Compliance including AWS Config, AWS CloudTrail and GuardDuty
Stars: ✭ 84 (-3.45%)
Mutual labels:  aws
Athena Cli
Presto-like CLI tool for AWS Athena
Stars: ✭ 85 (-2.3%)
Mutual labels:  aws
Dynamodb Stream Elasticsearch
Missing blueprint for AWS Lambda. Reads stream from AWS DynamoDB and writes it to ElasticSearch.
Stars: ✭ 83 (-4.6%)
Mutual labels:  aws
Freezer
A tree data structure that emits events on updates, even if the modification is triggered by one of the leaves, making it easier to think in a reactive way.
Stars: ✭ 1,268 (+1357.47%)
Mutual labels:  flux
Torchlambda
Lightweight tool to deploy PyTorch models to AWS Lambda
Stars: ✭ 83 (-4.6%)
Mutual labels:  aws
Terraform Aws Elb
Terraform module which creates ELB resources on AWS
Stars: ✭ 85 (-2.3%)
Mutual labels:  aws
This Or That
This or that - Real-time atomic voting app built with AWS Amplify
Stars: ✭ 87 (+0%)
Mutual labels:  aws
Terraform Aws Rabbitmq
Terraform configuration for creating RabbitMQ cluster on AWS.
Stars: ✭ 86 (-1.15%)
Mutual labels:  aws
Simpleupload
Simple upload system in PHP, compatible with AWS S3, Dropbox, Azure and others.
Stars: ✭ 85 (-2.3%)
Mutual labels:  aws

An example approach for Kubernetes and AWS GitOps

This is a prototype for an approach for GitOps that covers both AWS Managed Services as well as Kubernetes, each with their native tooling, for a more seamless and modern experience.

It represents the AWS-specific resources (such as VPCs, EKS clusters and databases) via CDK/CloudFormation in one set of folders and another set for the Kubernetes equivalents. There are then two separate tools (CodePipeline and Flux) that reconcile the different types of declarative Infrastructure-as-Code in this project - but all the end-user needs to know is to push/merge their changes to the Git repo.

Gettting started

There are README.mds in each subfolder explaining how that section works and how to deploy it.

The GitOps folder structure is:

k8s-plus-aws-gitops/
  - aws-infrastructure/ for the AWS-specific infrastructure resources (VPC, EKS cluster, etc.)
  - aws-app-resources/ for the AWS and application-specific resources (databases, caches, queues, etc.)
  - k8s-app-resources: for the Kubernetes and application-specific resources (Deployments, Services, Ingresses, etc.)
  - dockerbuild: for the Dockerfile(s) and associated items required to build the app into a container such as the CodeBuild buildspec.yml(s)

Start in the aws-infrastructure folder as it deploys the AWS and EKS environments as well as deploys the pipelines for a GitOps appraoch of aws-app-resources, k8s-app-resources and dockerbuild.

The interactions between AWS and Kubernetes (via a couple Operators/CRDs)

There are basically two main workflows that are happening between AWS and Kubernetes here:

  1. Secrets upserting / syncronisation
    1. First the CDK creates a secret with the password of our RDS
    2. Then The External Secrets Controller retrieves this secret and puts it into a Kubernetes Secret our pod spec references as Environment Variables into the container(s) to connect to its database.
  2. Ingress Network Routing
    1. First the ALB Ingress controller creates an ALB and exposes our service via the ALB by updating the Target Group with VPC-native Pod IPs (which is more efficient than NATing through the Hosts with a NodePort on each host)
    2. Then the External DNS Controller updates a CNAME to the ALB for the service with the 'real' name/FQDN that we want to expose it to the Internet.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].