awesome-kubernetes Documentation

A curated list for awesome kubernetes sources :ship::tada:

RAW Doc

Docker & Self-Hosted Deployment Verified OCI

Deploy awesome-kubernetes on any server, homelab, or cloud container platform.

1-Click Terminal Command
bash (docker run)
docker run -d --name awesome-kubernetes -p 80:80 --restart always ramitsurana/awesome-kubernetes:latest

1. Project Overview & Quickstart (ramitsurana/awesome-kubernetes)

File: docs/projects/projects.md

Projects

Kubernetes-related projects that you might find helpful

Projects built to make life with Kubernetes even better, more powerful, more scalable

  • Ambassador - API Gateway built on the Envoy Proxy
  • Argo - The Workflow Engine for Kubernetes
  • Bitnami Kubernetes Production Runtime
  • Capact - A framework to manage applications and infrastructure in a unified way
  • Client Libraries
  • Clusterpedia - Complex resource searches across multiple clusters, support simultaneous search of a single kind of resource or multiple kinds of resources existing in multiple clusters.
  • Escalator - A batch or job optimized horizontal autoscaler for Kubernetes
  • Fairwinds Pluto - A cli tool to help discover deprecated apiVersions in Kubernetes
  • Fairwinds Polaris - An open source dashboard for Kubernetes best practices
  • Fission Workflows - Workflow-based serverless function composition
  • Fortem - AI-native Internal Developer Platform for Kubernetes โ€” self-hosted Helm chart install, NL-to-manifest generation, AIOps cost optimization, Kubernetes Operator architecture
  • Forecastle - A dashboard which dynamically discovers and provides a launchpad to access applications deployed on Kubernetes
  • Gefyra - Connect Docker containers to any Kubernetes environment
  • Getdeck - A CLI that creates reproducible Kubernetes environments for development and testing
  • Git Webhook Proxy - A proxy to let webhooks reach running services behind a firewall
  • Hypernetes
  • Ingress Monitor Controller - Watches ingress endpoints and automatically registers liveness alerts on the configured uptime checker
  • k8s-label-rules-webhook - An admission webhook to enforce standards for labels of resources being created in your k8s cluster
  • Kanvas - A collaborative visual designer for Kubernetes and multi-cloud infrastructure.
  • kmachine
  • KEDA - Kubernetes-based Event Driven Autoscaling
  • kube-fledged - A K8S add-on for creating and managing a cache of container images directly on cluster worker nodes
  • kube-openvpn
  • Kubeform
  • Kubefuse
  • Kubefwd - Bulk port forwarding Kubernetes services for local development.
  • Kubernetes Cluster Federation (previously Ubernetes)
  • Kubernetes Ec2 Autoscaler
  • Kubic-Project
  • Meshery - Cloud native management plane for Kubernetes infrastructure and applications. CNCF Sandbox project.
  • Reloader - Auto-load updates of ConfigMaps and Secrets into pods for Deployments, StatefulSets and DaemonSets
  • Telepresence - Locally develop/debug services against a remote Kubernetes cluster
  • krane - A command-line tool that helps you ship changes to a Kubernetes namespace and understand the result
  • ktunnel - A command-line tool that establishes a reverse tunnel between Kubernetes and your cluster, use it to locally develop/debug services or integrate with local resources.
  • k8s-platform-lcm - A faster and easier way to manage the lifecycle of applications and tools, running and living around your Kubernetes platform
  • Pixie - Live-debug multi-cluster K8s environments without changing code and moving data off-cluster.
  • KubeEdge - An open platform to enable Edge computing
  • k8s-image-swapper - Mirror images into your own registry and swap image references automatically.
  • configurator - A version control and a sync service that keeps Kubernetes ConfigMaps and Secrets in sync with the deployment.
  • KubeDiagrams - A command-line tool to generate Kubernetes architecture diagrams from Kubernetes manifest files, kustomization files, Helm charts, and actual cluster state.

Package Managers

  • CNAB - CNABs facilitate the bundling, installing and managing of container-native apps - and their coupled services.
  • Helm - For further information, please check out - Awesome Helm.
  • Cloudsmith - A fully managed package management SaaS, with first-class support for public and private Kubernetes registries (Docker + Helm Charts, plus many others).

Monitoring Services

To maintain regular surveillance over kubernetes

  • Alaz - Effortless, Low-Overhead, eBPF-based Kubernetes Monitoring
  • Console
  • BotKube - App that helps you monitor your Kubernetes cluster, debug critical deployments & gives recommendations for the standard practices
  • Datadog
  • Dynatrace - Kubernetes cluster and workload monitoring
  • eventrouter - simple introspective kubernetes service that forwards events to a specified sink.
  • Goldpinger display, monitor and alert on inter-cluster connectivity
  • Grafana Kubernetes App
  • Heapster
  • HolmesGPT - On-Call/DevOps Assistant - Get a head start on fixing alerts with AI. Investigate Prometheus alerts, Jira/Pagerduty/Opsgenie tickets automatically.
  • Instana - Automatic Kubernetes Application Performance Monitoring
  • Ingero - eBPF-based GPU causal observability agent for Kubernetes. Traces CUDA Runtime/Driver APIs and host kernel events with pod/namespace metadata enrichment. DaemonSet + Helm chart included.
  • piqc - Read-only Kubernetes scanner that detects GPU waste in AI inference deployments โ€” idle GPUs, tier misplacement, and unallocated nodes. One command, nothing installed permanently.
  • kite - A modern, lightweight Kubernetes dashboard.
  • kail - Kubernetes Log Viewer. Streams logs from all containers of all matching pods.
  • KRR - Kubernetes CPU/Memory requests/limits recommendations based on existing data in Prometheus/Coralogix/Thanos/Mimir and more!
  • Kubebox - Terminal console for Kubernetes
  • Kubecost - monitor resources following their financial cost
  • Kubedash - Deprecated repository is archived and read-only
  • Kubernetes Operational View - read-only system dashboard for multiple K8s clusters
  • K8Dash - Realtime K8S alternative dashboard
  • Kubernetes Web View - list and view all Kubernetes resources (incl. CRDs) with permalink-friendly URLs in a plain-HTML frontend
  • Kubespy - Tools for observing Kubernetes resources in real time, powered by Pulumi.
  • Kubetail
  • Kubewatch - Kubernetes watcher that publishes k8s events and trigger handler notification to available collaboration hubs/notification channels.
  • kwatch - monitor & detect crashes in your Kubernetes(K8s) cluster instantly
  • Kubeshark - eBPF-powered network observability for Kubernetes. Indexes L4/L7 traffic with full K8s context, decrypts TLS without keys.
  • Middleware - Monitor your entire Kubernetes cluster, correlating metrics, traces and logs.
  • Netdata - Open-source Kubernetes monitoring. Deploy via a Netdata Helm chart.
  • Netsil
  • New Relic - Kubernetes monitoring and visualization service.
  • NexClipper - An open source software for monitoring Kubernetes and containers.
  • Outcold Solutions - monitoring Kubernetes, OpenShift and Docker in Splunk Enterprise and Splunk Cloud (metrics and log forwarding)
  • Prometheus
  • Replex.io - Kubernetes Governance & Cost Control.
  • Robusta.dev - Better Prometheus Alerts for Kubernetes with ability to Enrich, Group, and Remediate your Alerts.
  • Searchlight
  • Sematext
  • StatusBay - Kubernetes deployment visibility (inc. Slack notifications, metrics and checks enrichment, resources consolidation, etc)
  • Sysdig Monitoring
  • Sysdig Open Source
  • Thanos - Highly available Prometheus setup with long term storage capabilities
  • The Elastic Stack - An open-source solution for monitoring and visualising K8s metrics, logs, application traces and more.
  • Weave Scope
  • kube-state-metrics - Simple service that listens to the Kubernetes API server and generates metrics about the state of the objects.
  • loki - Loki is a horizontally-scalable, highly-available, multi-tenant log aggregation system inspired by Prometheus.
  • Loghouse - Efficiently store big amounts of your logs (in ClickHouse database), process them using a simple query language and monitor them online through web UI.
  • kube-eventer - kube-eventer emit kubernetes events to sinks (kafka, slack, webhook, etc)
  • VictoriaMetrics - VictoriaMetrics: fast, cost-effective monitoring solution and time series database.
  • VictoriaLogs - VictoriaLogs is a fast and easy-to-use, open source logs solution. Highly scalable on cloud, kubernetes or on-premise setups.

Testing

Test your applications running on Kubernetes

  • Chainsaw - The ultimate end to end testing tool for Kubernetes operators
  • chaoskube - periodically kills random pods in your Kubernetes cluster
  • DETIK - BATS extension for end-to-end tests of K8s applications
  • k8s-testsuite - Helm chart for network and loadtesting of a Kubernetes cluster
  • kboom - The Kubernetes scale & soak load tester
  • Krucible - Quickly create temporary Kubernetes clusters for testing
  • kind - A single node cluster to run your CI tests against thats ready in 30 seconds
  • k3d - Quickly create single- or multi-node k3s clusters in containerized nodes
  • kube-monkey - Chaos Monkey for Kubernetes clusters
  • Kubeadm-dind-cluster - multi-node test cluster based on kubeadm
  • KUTTL - KUTTL (Kubernetes Test Tool) is a toolkit for testing Kubernetes Operators
  • PowerfulSeal - kills targeted pods and machines to test your software reliability
  • Sonobuoy - Diagnostic tool that runs Kubernetes conformance tests
  • Test-Infra
  • predator - Distributed performance testing platform for Kubernetes
  • Octopus - Octopus is a testing framework that allows you to run integration tests defined as Docker images on a Kubernetes cluster.
  • KubePug - Kubernetes Pre-Upgrade Checker
  • KubeLibrary - RobotFramework library for testing Kubernetes cluster
  • Speedscale - Speedscale is a traffic replay framework that simulates production conditions, so you can validate changes quickly and easily.
  • Stoat - Stoat helps you access and browse logs for Kubernetes tests run on GitHub actions

Continuous Delivery

Build-test-deploy automated workflow software designed to make production environments more stable and life better for engineers

Serverless Implementations

Operators

Custom Schedulers

Container Support

A list of linux containers supported by kubernetes.

Database

Networking

Service mesh

RPC

Secret generation and management

Web applications

  • Kubernator
  • Kubernetes Resource Report - report Kubernetes cluster and pod resource requests vs usage and generate static HTML
  • Kubeapps - A web-based UI for deploying and managing applications in Kubernetes clusters
  • Kubevious - An open source UI to make Kubernetes configuration and state obvious and safe.
  • Octant - A web-based, highly extensible platform for developers to better understand the complexity of Kubernetes clusters.
  • KubeHelper - KubeHelper - simplifies many daily Kubernetes cluster tasks through a web interface.
  • Portainer - Containerized web-based UI for managing for Docker, Docker Swarm and Kubernetes environments.
  • CyclopsUI - Dynamically rendered UI for Kubernetes resources based on Helm templating engine
  • KubeStellar Console - AI-powered multi-cluster Kubernetes dashboard with CNCF project integrations, real-time observability, and guided install missions across edge and cloud clusters.

Desktop applications

  • Kubernetic
  • Kube Forwarder โ€“ An open source Kubernetes port forwarding manager
  • Lens - The Ultimate Dashboard For Kubernetes.
  • Monokle - helps you create, edit and validate yaml manifests, visualize and validate resource links and dependencies, connect and compare resources to your clusters, debug the output of kustomize and helm, and more!
  • Aptakube - A modern, lightweight and multi-cluster desktop client for Kubernetes. Connect to multiple clusters simultaneously, as if it was just one big cluster. View, edit and manage all your resources from your desktop.
  • Kubernetes Insider for Docker Desktop - The Kubernetes Insider provides quick and easy access to Kubernetes Pods/Deployments and Services, running in Docker Desktop Kubernetes.
  • K8Studio - K8Studio is a cross-platform client IDE to manage Kubernetes Clusters.
  • KFtray - Manage and run multiple kubectl port-forward configurations directly in the menu bar, syncing configurations with git repositories.
  • Kunobi - Kubernetes desktop IDE with an embedded MCP server, providing visual oversight of AI-driven cluster operations. Supports FluxCD, ArgoCD, Helm, and expanding to infrastructure beyond Kubernetes.
  • Klustr - A native (non-Electron) cross-platform Kubernetes desktop client driven purely by your kubeconfig. Multi-context live resource views, logs, exec, port-forwarding, full RBAC, CRDs, Helm, Argo CD, Flux CD and Gateway API support, with nothing installed in the cluster.

Mobile applications

API/CLI adaptors

  • awesome-kubectl-plugins - Curated list of kubectl plugins.
  • click - A CLI focused REPL for quickly interacting with Kubernetes objects.
  • kconf - Manage multiple kubeconfigs easily and switch between them
  • Ksql
  • kube-prompt - Interactive kubernetes client built using go-prompt.
  • kube-ps1 - Kubernetes prompt helper for bash and zsh.
  • Kube-shell - Integrated shell for working with the Kubernetes CLI
  • kube-tmux - Kubernetes tmux plugin to display the current context and namespace
  • Kubectl Aliases - Aliases for Kubectl
  • kubectl-plugins - A collection of kubectl plugins handling everything from easy context switches to connecting to a container as any user (root included) via exec. Slightly tailored towards GKE users.
  • kubectl-trace - Schedule bpftrace programs on your kubernetes cluster using this kubectl plugin
  • kubectld
  • kubectx - switch between clusters on kubectl
  • Kubefuse
  • kubens - switch between namespaces on kubectl
  • kubensx - Simpler Cluster/User/Namespace switching for Kubernetes (featuring interactive mode and wildcard/fuzzy matching).
  • kubent - Easily check your cluster for use of deprecated APIs
  • kubeplay
  • Kubesh - Work around kubectl
  • Kui - Hybrid CLI/GUI alternative to kubectl
  • StackStorm
  • stern - Multi pod and container log tailing
  • Vikube - Kubernetes operations from Vim, in Vim
  • K9s - Kubernetes CLI To Manage Your Clusters In Style!
  • tubectl - Kubernetes CLI on steroids with pattern matching
  • webkubectl - A web based tool helps you to manage kubernetes credentials and run kubectl command in web browser.
  • kubectl-neat - Clean up Kuberntes yaml and json output
  • Kubie - An alternative to kubectx, kubens and the k on prompt modification script
  • kube-shell - An integrated shell for working with the Kubernetes CLI
  • Portainer - Secure REST API proxy to Kubernetes environments, enabling integrations with external tools.
  • kubernetes-el - Kubernetes client for Emacs
  • lfk - Yazi-inspired, vim-like keyboard focused Lightning Fast Kubernetes navigator.

Application deployment orchestration

  • AppController
  • Brigade - Event Based Scripting using JavaScript
  • Deployment manager
  • ElasticKube
  • Gitkube - Build and deploy docker images on Kubernetes using git push.
  • IBM UrbanCode
  • Kb8or
  • Psykube
  • Skaffold - Command line tool that facilitates continuous development for Kubernetes applications.
  • kubedog - Kubedog is a library and cli utility that allows watching and following kubernetes resources in CI/CD deploy pipelines.
  • kapp - simple deployment tool focused on the concept of "Kubernetes application" โ€” a set of resources with the same label
  • Ownkube - AI-enabled developer platform that runs in your own AWS account on k3s or EKS. Git push to deploy, managed Postgres, preview environments per PR, and AI error detection from day one.

Configuration

  • Ansible
  • Astrobase
  • cdk8s - Define Kubernetes apps and reusable components using familiar programming languages
  • Chef
  • Habitat
  • Jsonnet
  • K8comp
  • Kapitan - Inventory-driven configuration management for Kubernetes and infrastructure, with Jsonnet, Jinja2, Kadet, Helm, Kustomize, and CUE inputs
  • kenv
  • Kompose
  • Konfd
  • Ktmpl
  • kubecfg - Combines jsonnet and kubectl to let you declare systems in an easy to override way
  • kubediff
  • kubegen
  • kustomize - Customization using partial specs
  • Pulumi - Provides a SDK for k8s deployments targeting on-premises clusters and major cloud vendors' managed services.
  • Puppet
  • Saltstack
  • Cue - A data constraint language which aims to simplify tasks involving defining and using data. Cue is a superset of JSON
  • ytt - YAML templating tool that works on YAML structure allowing you to focus on your data instead of how to properly escape it.
  • kosko - Write Kubernetes manifests in JavaScript and validate against Kubernetes OpenAPI definitions.
  • MicroConfig - Awesome tool for microservice configuration management. Works with app configs, helm values, kubernetes resources and more.
  • Untrak - Finds untracked resources in Kubernetes cluster, garbage collect them.
  • Project Syn - Brings a hierarchical configuration management based on GitOps principles

Security

  • kubiscan - A tool to scan Kubernetes cluster for risky pods and RBAC permissions
  • kubeletctl - A client for kubelet with advanced capabilities like scanning for pods vulnerable for RCE
  • Anchore Engine - An open-source project that provides a centralized service for inspection, analysis, and certification of container images.
  • Aquasec
  • Authenticator - A tool for using AWS IAM credentials to authenticate to a Kubernetes cluster
  • Deepfence ThreatStryker - Full life cycle Cloud Native Security Observability Platform for kubernetes, virtual machines and serverless.
  • Deepfence ThreatMapper - Apache v2, powerful runtime vulnerability scanner for kubernetes, virtual machines and serverless.
  • Dex - OpenID and OAuth for Kubernetes
  • Fairwinds Insights - Security policy and enforcement for Kubernetes
  • Guard - Authenticaton webhook server with support for Github, Gitlab, Google, Azure and LDAP (AD) as identity providers.
  • kiam - Allows cluster users to associate AWS IAM roles to Pods.
  • Kubernetes Deprecation Checker - Free browser-based tool that scans Kubernetes YAML manifests for deprecated and removed API versions, with migration paths and fix suggestions.
  • kube-bench - The Kubernetes Bench for Security is a Go application that checks whether Kubernetes is deployed according to security best practices.
  • kube-hunter - Hunt for security weaknesses in Kubernetes clusters.
  • kube-psp-advisor - Help building an adaptive and fine-grained pod security policy.
  • kube2iam - Provides different AWS IAM roles for pods running on Kubernetes
  • kubeaudit - Helps you audit your Kubernetes clusters against common security controls
  • Kubesec.io
  • Pomerium - a zero-trust identity-aware access proxy inspired by BeyondCorp.
  • Rakkess - Kubectl plugin to show an access matrix for all available resources.
  • Sysdig Falco
  • Sysdig Secure
  • Tigera Calico Enterprise Edition
  • Twistlock
  • M9sweeper - Free security platform that wraps trivy, kubesec, kube-bench, OPA Gatekeeper, Project Falco, and kube-hunter

Load balancing

Big Data

Machine Learning

  • nos - nos is an open-source platform to efficiently run AI workloads on Kubernetes, increasing GPU utilization and reducing infrastructure and operational costs.
  • FfDL - Deep Learning Platform offering TensorFlow, Caffe, PyTorch etc. as a Service on Kubernetes
  • Fiber - Distributed computing library for AI on Kubernetes.
  • kubeflow - Machine Learning Toolkit for Kubernetes.
  • mxnet-operator - Tools for ML/MXNet on Kubernetes.
  • Polyaxon - An open source platform for reproducible machine learning and deep learning on kubernetes
  • seldon-core - Open source framework for deploying machine learning models on Kubernetes
  • TensorFlow k8s

Service Discovery

Operating System

YAML/JSON Config

  • cdk8s - Define Kubernetes apps and reusable components using familiar programming languages
  • kompose - Translates Docker Compose file into Kubernetes resources
  • kube-libsonnet - Generic library of Kubernetes objects for Jsonnet/Kubecfg with object to array mapping for painless overrides.
  • kubegen - Reduces the verbosity of Kubernetes resource definitions, and adds macros for templating
  • kubeval - CLI tool for validating a Kubernetes YAML or JSON configuration file
  • KubeQ - A fast, simple, and powerful web-based Kubernetes manifest validator. No installation or config neededโ€”just paste your manifest and get instant feedback on quality, security, and best practices. Powered by kubeval, kube-score, and kubeaudit. Great for pre-commit validation, reviewing charts, teaching, and CI/CD linting.
  • YAML Validator, (chrome extension) - Online YAML validator, formatter and viewer with built-in Kubernetes JSON Schema validation. The Chrome extension also adds YAML code folding on GitHub.
  • helmify - CLI tool to convert K8s YAMLs into a Helm chart

Static Analysis

  • kube-score - Kubernetes object analysis with recommendations for improved reliability and security
  • popeye - Kubernetes cluster resource sanitzer

Tuning

Backup and Disaster Recovery

  • Kanister - An extensible framework for application-level data management on Kubernetes.
  • Velero - Utility for managing backup and restore of Kubernetes clusters. Formerly Heptio Ark.
  • K8up - Kubernetes and OpenShift Backup Operator based on restic
  • burry.sh - Cloud Native backup and recovery for etcd, zookeeper and consul
  • kube-backup - Sync kubernetes state to git.
  • Stash - Stash is a Kubernetes operator that uses restic or Kubernetes CSI Driver VolumeSnapshotter to backup your volumes and kubernetes state.
  • Fairwinds Gemini - Create and retire VolumeSnapshot objects on a regular schedule

Policy Management

  • Kyverno - Kubernetes Native Policy Management

Plugins

Debug

  • Kubectl-Debug
  • mirrord - Connect your local process and your k8s cluster, letting you run local code in cloud conditions.

Benchmark Tools

Chaos Engineering

  • Chaosblade: An easy to use and powerful chaos engineering experiment toolkit.
  • Chaos Mesh: A cloud-native Chaos Engineering platform that orchestrates chaos on Kubernetes environments.
  • chaoskube: chaoskube periodically kills random pods in your Kubernetes cluster.
  • Chaos Toolkit: An Open API for Chaos Engineering.
  • KubeInvaders - Gamified Chaos engineering tool for Kubernetes Clusters. It is like Space Invaders but alien ships are pods.
  • Litmus: A toolset to do chaos engineering in a kubernetes native way.

Persistent Volume Providers

List of some Persistent Volume Providers for Kubernetes.Check out Persistent Volume Providers for more info

Container Storage Interface Plugins

List of some Container Storage Interface plugins for Kubernetes. Check out Kubernetes-CSI Drivers for a complete list

Cluster API Providers

List of some Cluster API providers for Kubernetes. Check out Kubernetes-CAPI Providers for more info

Bootstrap

Infrastructure

Developer Libraries/ Scripts

List of some libraries & scripts for executions and good referrals

[Python](#python)

[Jenkins](#jenkins)


File: docs/official-resources/official-resources.md

Main Resources

Official resources from the Kubernetes team

Connecting with Kubernetes


File: docs/managed-kubernetes/managed-kubernetes.md

Managed Kubernetes

[Cluster Managers](#cluster-manager)

  • Gardener - Alibaba, AWS, Azure, GCP, and OpenStack cluster manager
  • Gravity - Formerly Telekube
  • Kommander - Federated management and governance for on-prem or cloud Kubernetes clusters
  • Kqueen
  • Kubermatic
  • KubeSphere - Full-stack and easy-to-use container platform, with awesome user experience and wizard UI, supports installing on Linux and Kubernetes.
  • Kublr - AWS, Azure, GCP, vSphere, vCloud Director, and On-Prem cluster manager
  • PKS - Cluster manager by Pivotal, VMWare and Google
  • Rancher
  • Spectro Cloud - Enterprise Kubernetes Management at scale

[Developer Platform](#developer-platform)

  • DevSpace - Build, test and run code directly inside any Kubernetes cluster
  • Draft - A tool for developers to create cloud native applications with Kubernetes
  • Eclipse Che - Cloud development workspaces with SSH and multi-user support
  • Garden - Orchestrates your development workflows to make developing microservices faster and easier
  • Humanitec - The fastest way to build your Internal Developer Platform
  • Knative - Platform to build, deploy, and manage modern serverless workloads
  • Okteto - Develop directly in any Kubernetes cluster. No commit, build or push required
  • Mantl - A modern platform for rapidly deploying globally distributed services
  • Spring Cloud Kubernetes - Spring Cloud integration with Kubernetes
  • VAMP - Cloud-Native Release Management & Orchestration
  • Tilt - Manages local development instances for teams that deploy to Kubernetes

[Enterprise Kubernetes Products](#enterprise-kubernetes-products)

[Public/Private Cloud](#publicprivate-cloud)

[PaaS](#paas)

Kubernetes Platform as a Service providers


File: docs/learning-resources/books.md

Books

A written or printed work consisting of pages glued or sewn together along one side and bound in covers that provide
us with information


File: docs/learning-resources/certifications.md

Certifications

A list of some credible certifications to certify yourself as Kubernetes expert


File: docs/learning-resources/courses.md

MOOC Courses / Tutorials

List of available free online courses(MOOC) and tutorials

[Courses](#coures)

[Tutorials](#tutorials)


File: docs/learning-resources/interactive-environments.md

Interactive Learning Environments

Learn Kubernetes using an interactive environment without requiring downloads or configuration


File: docs/learning-resources/podcasts.md

Podcasts


File: docs/learning-resources/slides.md

Slide Presentations

A slide is a single page of a presentation created with software such as PowerPoint or OpenOffice Impress.

2. Official Technical Reference & Guides (ramitsurana/website)

Website

TODO: Rewrite .js files in .ts files

Prerequesites

Node and npm

Google install node and npm for your system (windows, mac, linux)

Typescript

npm install typescript

Webpack

npm install webpack
npm install webpack-cli (not sure if we need that or webpack includes it already)

Yarn

npm install yarn

Project's Dependencies

Run yarn install in root and yarn install in frontend/

Development

  • Go to frontend/ folder and run yarn webpack:watch to create a bundle on each change
  • Run typescript watcher via yarn watch:ts in root dir to transpile ts files under src/ on each change
  • Start development server via yarn dev in root dir

Production

Order of steps is important

  • Run yarn webpack:bundle to bundle the frontend for production
  • Transpile backend's typescript via running yarn transpile:ts in root dir
  • Start production server via yarn prod in root dir, it would run on port 5000

Container

We use Docker in Production as Container Engine. You can find the Dockerfile in the root-Directory.
If you want to run the production Container locally, run:

  • docker build -t :<tag> .
  • docker run -it -p <local_port>:5000 :<tag>
  • The application is reachable under localhost:<local_port>
  • To stop the container simply use Ctrl-C

How it works

Backend

In bin/www.js (mostly autogenerated code) you could find the initial setup of the server that is highly dependent on app.js where we define routes, middleware etc.

The server code should go under src/. Running yarn watch:ts in the root folder will set a watcher on each typescript file under src/. The watched typescript files would be transpiled to js on each change.

Running yarn dev would start the server that would self-restart on each change. The server would also restart on each frontend change, because the frontend bundle will change and the server has to serve the new one.

Frontend

In dev mode, the frontend is bundled via webpack by running yarn webpack:watch. On each change, webpack will generate new bundle under frontend/dist/, the server will restart and reference the new bundle automatically.

The server uses two bundles.

The one webpack generates as a library - bundle-server.js - so that Node can import it via const frontend = require('./frontend/dist/bundle-server'); to be able to server-render.

The second bundle is referenced in the server-rendered html via <script type="text/javascript" src="dist/bundle.${buildhash}.js"></script> so that ReactDOM can hydrate the server-side rendered markup.

If you call ReactDOM.hydrate() on a node that already has this server-rendered markup, React will preserve it and only attach event handlers, allowing you to have a very performant first-load experience.

On top, a new hash of the bundle is generated on each change so that the name of the bundle changes to bundle.${buildhash}.js and the old (browser-side cached) bundle becomes obsolete.