Giter Club home page Giter Club logo

cncfdemo's Introduction

Vision for cncf/demo

Our evolving vision for the CNCF demo is to provide a widely referenced marketing demo using the shortest path to multi-cloud deployments.

The approach needs to be opinionated to get us to multi-cloud deployments asap, while at the same time being easy for others to understand and modify.

A cloud-init approach is, by definition very cloud-native and can be replicated across multiple provisioning toolchains.

Terraform is well documented/maintained and supports the aws resources we need to configure. Targeting Azure, Google, and Packet would require minimal code changes. Simply templating cloud-init across all those clouds which would reduce our dependency on vendor specific provisioning code. (We have also developed an approach for hardware deploys via Hanlon/PXE for CNCF Cluster)

We took some time to understand and in the process simplify the cncf/demo codebase.

You can take a look at code.ii.coop/cncf/demo

Possible next steps:

  • Multiple Cloud Providers (GCE? CNCF Cluster? Virtualbox?)
  • Parallel Deploys to the same cloud provider
  • ENV driven CI with metrics
  • Clean up this quick and dirty PoC

tl;dr

$ export AWS_ACCESS_KEY_ID="YOUR_AWS_KEY_ID"
$ export AWS_SECRET_ACCESS_KEY="YOUR_AWS_SECRET_KEY"
# /tmp/data will have terraform, certs, aws, and kubectl configs
# http://localhost:8001/ui is your Kubernetes Dashboard
$ docker run -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
             -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
             -v $(pwd)/data:/cncf/data \
             --net=host \
             --name=cncfdemo \
             iicoop/cncfdemo

Some commands you can run from another terminal:

docker exec -ti cncfdemo kubectl get nodes
docker exec -ti cncfdemo kubectl get pods --namespace=kube-system
docker exec -ti cncfdemo kubectl get pods
docker exec -ti cncfdemo kubectl get pods --namespace=monitoring

To access Elasticseach, Kibana and Dashboard visit:

# To destroy everything
$ docker run -v $(pwd)/data:/cncf/data iicoop/cncfdemo destroy
$ docker rm -f cncfdemo

Features

  • TLS certificate generation

AWS

  • EC2 Key Pair creation
  • AWS VPC Public and Private subnets
  • IAM protected S3 bucket for asset (TLS and manifests) distribution
  • Bastion Host
  • Multi-AZ Auto-Scaling Worker Nodes
  • NAT Gateway

CoreOS (1185.5.0, 1235.2.0, 1262.0.0)

Kubernetes (v1.5.1)

Terraform (v0.8.2)

  • CoreOS AMI sourcing
  • Terraform Pattern Modules

Prerequisites

  • docker

  • AWS Users Permissions:

    • AmazonEC2FullAccess
    • AmazonS3FullAccess
    • AWSCodeDeployFullAccess
    • AmazonRoute53DomainsFullAccess
    • AmazonRoute53FullAccess
    • IAMFullAccess
    • IAMUserChangePassword

Resulting Cluster

  • client and server TLS assets
  • s3 bucket for TLS assets (secured by IAM roles for master and worker nodes)
  • AWS VPC with private and public subnets
  • Route 53 internal zone for VPC
  • Etcd cluster bootstrapped from Route 53
  • High Availability Kubernetes configuration (masters running on etcd nodes)
  • Autoscaling worker node group across subnets in selected region
  • kube-system namespace and addons: DNS, UI, Dashboard

cncfdemo's People

Contributors

ax-nathan avatar bretep avatar bwreleasebot avatar calvn avatar danielwg avatar denverwilliams avatar gitter-badger avatar hh avatar jasisk avatar mirthy avatar ndbroadbent avatar nkhine avatar pixeleet avatar rtlong avatar unguiculus avatar wellsie avatar yagonobre avatar

Watchers

 avatar  avatar  avatar  avatar  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.