Skip to content

Assignment #02

Due Date

Section Due Date
Saturday 10/20/2018 at 01:00PM

Getting Help

Info

Ask all your questions on Piazza. Assign assignment2 tag to your posts.

AWS Expenses

Warning

To keep your AWS credit usage to minimum, please terminate your k8s stack when you are done working on it.

Objectives

The objective of this assignment is run redis as service in high availability configuration.

Redis Cluster Specification

  1. Run Redis cluster with 3 Redis servers in master/slave configuration.
  2. Run 3 Redis Sentinels, one for each Redis server.
  3. Each redis pod will contain one redis server container and one redis sentinel container.
  4. Each pod must land on different worker node. No worker node should run more than 1 redis pod.
  5. Implement TCP liveness probe for all containers.
  6. Expose redis service so external clients can connect to redis cluster. Make sure that redis cluster is accessible from anywhere on the internet for demo.
  7. You may use Docker images for redis server and sentinel from Docker hub and build your custom images as needed.
  8. All Kubernetes object definitions, along with docker, and configuration files you create must be approriately named and committed to your github repository under redis directory.

Kubernetes Configuration

  1. Setup k8s cluster using kops with 1 master Node (recommended instance size - t2.micro) and 3 worker node (recommended instance size - t2.micro). If t2.micro instance is too small, you can increase the size of the instance.

Resource Limits for Redis Server & Sentinel Containers

  1. CPU: 100m or 0.1
  2. Memory: 32MB (start with 32 MB and increase as needed to run the container. This will allow us to run the assignment with smallest possible EC2 instance.)

Documentation

Submission

Danger

Releases created after due date will be considered late.

  1. All work for this assignment must be done on assignment2 feature branch and merged to master when you are dev complete.
  2. GitHub release must be created from the master branch.
  3. All team member’s branches must be in-sync. Each team member must create a release in their repository.
  4. All assignments will be delivered using GitHub releases feature. See GitHub documentation for details on how to create a release.

Grading Guidelines

Warning

Following guidelines are for information only and are subject to change at my discretion.

  1. Demo bring up of Redis cluster.
  2. Execute redis commands against your cluster from your local dev environment. You can do this using redis-cli