• Stars
    star
    117
  • Rank 301,828 (Top 6 %)
  • Language HCL
  • License
    Apache License 2.0
  • Created over 7 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Single node Kubernetes instance implemented using Terraform and kubeadm

AWS Minikube

AWS Minikube is a single node Kubernetes deployment in AWS. It creates an EC2 host and deploys the Kubernetes cluster using Kubeadm tool. It provides full integration with AWS. It is also able to handle ELB load balancers, EBS disks, Route53 domains and other AWS resources.

Updates

  • 16.4.2023 Update to Kubernetes 1.27.1 + Use external AWS Cloud Provider
  • 1.4.2023 Update to Kubernetes 1.26.3 + update add-ons (Ingress-NGINX Controller, External DNS, Metrics Server, AWS EBS CSI Driver)
  • 4.3.2023 Update to Kubernetes 1.26.2 + update add-ons (Ingress-NGINX Controller)
  • 22.1.2023 Update to Kubernetes 1.26.1 + update add-ons (External DNS)
  • 10.12.2022 Update to Kubernetes 1.26.0 + update add-ons (AWS EBS CSI Driver, Metrics server)
  • 13.11.2022 Update to Kubernetes 1.25.4 + update add-ons
  • 2.10.2022 Update to Kubernetes 1.25.2 + update add-ons
  • 26.8.2022 Update to Kubernetes 1.25.0 + Calico upgrade
  • 21.8.2022 Update to Kubernetes 1.24.4
  • 16.7.2022 Update to Kubernetes 1.24.3
  • 27.6.2022 Update to Kubernetes 1.24.2
  • 11.6.2022 Update to Kubernetes 1.24.1 + update add-ons + remove dependency on the template provider
  • 8.5.2022 Update to Kubernetes 1.24.0 + update add-ons
  • 23.3.2022 Update to Kubernetes 1.23.5 + update add-ons
  • 19.2.2022 Update to Kubernetes 1.23.4
  • 12.2.2022 Update to Kubernetes 1.23.2
  • 29.12.2021 Update to Kubernetes 1.23.1
  • 11.12.2021 Update to Kubernetes 1.23.0

Prerequisites and Dependencies

AWS Minikube deploys into an existing VPC / public subnet. If you don't have your VPC / subnet yet, you can use this configuration to create one.

  • The VPC / subnet should be properly linked with Internet Gateway (IGW) and should have DNS and DHCP enabled.
  • Hosted DNS zone configured in Route53 (in case the zone is private you have to use IP address to copy kubeconfig and access the cluster). To deploy AWS Minikube there are no other dependencies apart from Terraform. Kubeadm is used only on the EC2 host and doesn't have to be installed locally.

Configuration

The configuration is done through Terraform variables. Example tfvars file is part of this repo and is named example.tfvars. Change the variables to match your environment / requirements before running terraform apply ....

Option Explanation Example
aws_region AWS region which should be used eu-central-1
cluster_name Name of the Kubernetes cluster (also used to name different AWS resources) my-minikube
aws_instance_type AWS EC2 instance type t2.medium
ssh_public_key SSH key to connect to the remote machine ~/.ssh/id_rsa.pub
aws_subnet_id Subnet ID where Minikube should run subnet-8d3407e5
ami_image_id ID of the AMI image which should be used. If empty, the latest CentOS 7 image will be used. See README.md for AMI image requirements. ami-b81dbfc5
hosted_zone DNS zone which should be used my-domain.com
hosted_zone_private Is the DNS zone public or private false
addons List of add-ons which should be installed [ "https://raw.githubusercontent.com/scholzj/aws-minikube/master/addons//storage-class.yaml" ]
tags Tags which should be applied to all resources { Hello = "World" }
ssh_access_cidr Network CIDR from which SSH access will be allowed 0.0.0.0/0
api_access_cidr Network CIDR from which API access will be allowed 0.0.0.0/0

Creating AWS Minikube

To create AWS Minikube,

  • Export AWS credentials into environment variables AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
  • Apply Terraform configuration:
terraform apply --var-file example.tfvars

Deleting AWS Minikube

To delete AWS Minikube,

  • Export AWS credentials into environment variables AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
  • Destroy Terraform configuration:
terraform destroy --var-file example.tfvars

Using custom AMI Image

AWS Minikube is built and tested on CentOS 7. But gives you the possibility to use their own AMI images. Your custom AMI image should be based on RPM distribution and should be similar to Cent OS 7. When ami_image_id variable is not specified, the latest available CentOS 7 image will be used.

Add-ons

Currently, following add-ons are supported:

  • Kubernetes dashboard
  • Heapster for resource monitoring
  • Storage class and CSI driver for automatic provisioning of persistent volumes
  • External DNS
  • Ingress

The add-ons will be installed automatically based on the Terraform variables.

Custom Add-ons

Custom add-ons can be added if needed. From every URL in the addons list, the initialization scripts will automatically call kubectl -f apply <Addon URL> to deploy it. Minikube is using RBAC. So the custom add-ons have to be RBAC ready.

Tagging

If you need to tag resources created by your Kubernetes cluster (EBS volumes, ELB load balancers etc.) check this AWS Lambda function which can do the tagging.

Frequently Asked Questions

How to access Kubernetes Dashboard

The Kubernetes Dashboard add-on is by default not exposed to the internet. This is intentional for security reasons (no authentication / authorization) and to save costs for Amazon AWS ELB load balancer.

You can access the dashboard easily fro any computer with installed and configured kubectl:

  1. From command line start kubectl proxy
  2. Go to your browser and open http://127.0.0.1:8001/ui

More Repositories

1

terraform-aws-kubernetes

Terraform module for Kubernetes setup on AWS
HCL
200
star
2

aws-k8s-kops-ansible

Kubernetes setup on Amazon AWS using Kops and Ansible
Python
106
star
3

terraform-aws-minikube

Terraform module for single node Kubernetes instance bootstrapped using kubeadm
HCL
65
star
4

zoo-entrance

Makefile
55
star
5

strimzi-training

Shell
36
star
6

aws-kubernetes

Kubernetes cluster setup in AWS using Terraform and kubeadm
HCL
33
star
7

keycloak-kubernetes

Keycloak deployment into Kubernetes cluster
25
star
8

strimzi-compose-up

Compose file for starting Kafka and Zookeeper using the Strimzi images
21
star
9

kafka-enablement-2020

Materials for Kafka enablement trainings in 2020
Shell
19
star
10

getting-started-with-apache-kafka

Getting Started with Apache Kafka
Java
17
star
11

kafka-topic-view

A simple UI for monitoring Apache Kafka topics and their state.
Go
17
star
12

terraform-aws-vpc

Terraform module for creating s simple Amazon AWS VPC and subnets
HCL
14
star
13

build-your-own-social-media-analytics-with-apache-kafka

Build your own social media analytics with Apache Kafka
Java
14
star
14

kafka-enablement

Enablement training materials
Shell
13
star
15

terraform-aws-tagging-lambda

AWS Lambda function for tagging resources
Python
13
star
16

aws-kubernetes-terraform-ansible

Kubernetes setup in Amazon AWS using Terraform and Ansible
Python
11
star
17

kafka-kubernetes-authenticator

Kafka Kubernetes Authenticator and Authorizer
Java
11
star
18

strimzi-custom-ca-test

Using Strimzi with custom CA
Shell
10
star
19

kekspose

Keksposé: Expose your Kafka cluster outside your Minikube, Kind, or Docker Desktop clusters
Java
10
star
20

milestone-check

Github application which verifies whether a milestone has been set on a PR or not
Java
9
star
21

demo-opa-kafka-authorization

Strimzi with Open Policy Agent demo used in my https://strimzi.io blog post
Open Policy Agent
9
star
22

kafka-test-apps

Apache Kafka producers and consumers written in Vert.x
Java
8
star
23

vertx-grpc-echo

A simple echo server and client written using Vert.x and gRPC
Java
7
star
24

demo-kafka-strimzi-telegram-ml

Demo with Kafka, Strimzi, Telegram and Machine Learning
Java
6
star
25

kafka-at-the-edge

Apache Kafka at the Edge: IoT demo with Apache Kafka
Java
6
star
26

aws-vpc

Terraform configuration for creating s simple Amazon AWS VPC and subnets
HCL
6
star
27

AliasKeyManager

Alternative KeyManager which selects the client private key for client authentication based on specified key alias or selects the first key in the keystore. It doesn't select the client key based on the supported CAs.
Java
6
star
28

echo-sink

Kafka Connect plugin which logs messages into log
Java
6
star
29

devconf-2019-running-apache-kafka-on-kubernetes-and-openshift

DevConf.CZ 2019: Running Apache Kafka on Kubernetes and OpenShift
Shell
5
star
30

terraform-random-kubeadm-token

Terraform module for generating kubeadm tokens
HCL
5
star
31

quarkus-kafka-test-apps

Kafka test applications written using Quarkus
Java
5
star
32

dbg-kubernetes-training

Labs and demos for DBG internal Kubernetes training
4
star
33

strimzi-api-examples

Simple examples using the Strimzi `api` library
Java
4
star
34

amqpctl

CLI client for AMQP Management protocol
Go
4
star
35

demo-jug-ingolstadt

Introduction to Apache Kafka demos for talk in JUG Ingolstadt
4
star
36

kafka-kubernetes-raw-resource-config-provider

Apache Kafka configuration provider for reading data from any Kubernetes resource
Java
4
star
37

demo-amq-streams-webinar

AMQ Streams demo for a Red Hat webinar
Java
4
star
38

dbg-amqp-dispatch-workshop

Examples for the DBG workshop about AMQP and Qpid Dispatch
Java
3
star
39

docker-qpid-cpp

Docker image for Qpid C++ broker
Shell
3
star
40

docker-qpid-dispatch

Docker image for Qpid Dispatch router
Shell
3
star
41

aws-dbg-kubernetes-quickstart

Kubernetes setup based on Heptio / AWS Quickstart adapted to Deutsche Boerse limitations
Python
2
star
42

amqp-java-client-tests

Test suite for testing Java based AMQP 1.0 and 0-10 clients
Java
2
star
43

demo-kubecon-europe-2021-strimzi-office-hours

Demo from the Strimzi Office Hours at KubeCon Europe 2021
2
star
44

vertx-http-echo

A simple echo server and client written using Vert.x and HTTP
Java
2
star
45

what-is-new-in-strimzi

Demos and labs about new features in Strimzi
2
star
46

java-tls-init

Init container for converting X509 certificates to PKCS12 which can be consumed in Java
Shell
2
star
47

milestone-check-action

JavaScript
2
star
48

livescore-demo-vertx-amqp-bridge

LiveScore service demo with AMQP based API using Vert.x AMQP Bridge and Apache Qpid Dispatch
Java
2
star
49

strimzi-apache-kafka-on-kubernetes

Strimzi: Apache Kafka on Kubernetes (Introduction demo)
Java
2
star
50

DoK-Day-KubeCon-EU-2022

Demo for the DoK Day @ KubeCon EU 2022 talk
Java
2
star
51

demo-cloud-native-virtual-summit-china-2020-introduction-to-strimzi

Demo from the "Introduction to Strimzi: Apache Kafka on Kubernetes" talk from Cloud Native + Open Source Virtual Summit China 2020
2
star
52

scholzj

2
star
53

building-cloud-native-logging-pipelines-on-top-of-apache-kafka

Building cloud-native logging pipelines on top of Apache Kafka
Java
2
star
54

strimzi-cistic-odpadu

Strimzi Čistič Odpadů (Drain Cleaner) - Utility to help with draining nodes running Strimzi Kafka or Zookeeper pods
Java
2
star
55

dbg-pti-building-services-and-api-using-amqp

API != HTTP: Building services and APIs using AMQP 1.0 (Deutsche Börse's "Product, Technology and Innovation Conference" 2017)
JavaScript
2
star
56

docker-qpid-proton

Docker image for Qpid Proton
Dockerfile
1
star
57

rh-summit-2019-amq-streams

AMQ Streams demo for Red Hat Summit 2019
Java
1
star
58

build-qpid-proton

Build pipeline for Apache Qpid Proton
Dockerfile
1
star
59

blog-k8s-scalable-amqp

YAML files for the blog article about scalable AMQP setup on kubernetes
1
star
60

aws-jump-host

AWS setup using Terraform and Ansible
Python
1
star
61

devconf-2019-3-ways-to-make-your-life-easier-with-apache-kafka-install-kafka

DevConf.CZ 2019: 3 ways o make your life easier with Apache Kafka
Java
1
star
62

kafka-address-book

Spring application implementing simply Address Book backed by Kafka as data store
Java
1
star
63

my-kafka-client-sandbox

Sandbox repository for Kafka clients and configurations ...
Java
1
star
64

demo-devconfcz-2021-apache-kafka-as-a-monitoring-data-pipeline

DevConf.CZ 2021: Apache Kafka as a Monitoring Data Pipeline
Java
1
star
65

custom-strimzi-principal-builder

Custom Principal Builder for Strimzi based Apache Kafka clusters
Java
1
star
66

amq-streams-quarterly-deep-dive-enablement-demo

Demo repository for the AMQ Streams enablement
1
star
67

devconf-2020-metamorphosis-when-kafka-meets-camel

Shell
1
star
68

circleci-centos-golang

CircleCI 2.0 build image with Go language based on CentOS
Dockerfile
1
star