Giter VIP home page Giter VIP logo

kubecdn's Introduction

kubeCDN

A self-hosted content delivery network based on Kubernetes. Easily setup Kubernetes clusters in multiple AWS regions and deploy resilient and reliable services to a global user base within minutes.

This project was developed by Ilhaan Rasheed during his tenure as a DevOps Engineering Fellow at Insight. The capabilities of this project have been demonstrated using video streaming as an example. Ilhaan's presentation slides with a short demo is available here.

Here is a detailed blog post about kubeCDN.


Instructions

Getting Started

Before deploying your self-hosted CDN using kubeCDN, you will need the following:

  • AWS account and credentials with appropriate permissions to setup EC2 instances, VPCs and EKS clusters. All documentation and software components of this project assumes that awscli is being used to manage AWS credentials.
  • Install Terraform. This project was developed using Terraform v0.11.11.
  • Install kubectl v1.13.2 or higher.
  • Install helm v2.12.3 or higher. On macOS, you can install helm using brew install kubernetes-helm.
  • Install aws-iam-authenticator

After the components above have been installed, clone this repo and proceed to the next section.

Deploy Clusters & Service

  1. Deploy Clusters
    • To deploy EKS clusters in multiple regions, follow instructions from here.
  2. Setup Route53
    • Instructions to setup Route53 can be found here.
  3. Install ExternalDNS
    • Follow instructions here.
  4. Install Monitoring tools
    • Install Prometheus and Grafana by following instructions here.
  5. Deploy Demo Video Server
    • To demonstrate kubeCDN, a simple Nginx based RTMP streaming server was created. Follow instructions here for more information on this server and for deploy instructions.

Teardown

Follow these instructions to teardown all deployed services and infrastructure.

  1. First, all services that have been deployed need to be removed. There is a script in the root directory of this repo that performs this task. Run it using:
./services_teardown.sh
  1. The second teardown step is to remove all infrastructure that was setup in step 1 of the section above. This can be done by navigating to the terraform directory and running the following:
terraform destroy -auto-approve 

This process takes about 10 minutes to complete with two regions.

  1. After successful run of the previous step, all infrastructure associated with kubeCDN should have been torn down. Verify this on AWS Console in order to avoid accidental charges on your account.

kubecdn's People

Contributors

ilhaan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kubecdn's Issues

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.