• Stars
    star
    110
  • Rank 316,770 (Top 7 %)
  • Language
  • License
    Other
  • Created about 6 years ago
  • Updated over 1 year ago

Reviews

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

Repository Details

Kubernetes Hands-on by Algolia

Kubernetes Hands on

  1. Prerequisites
  2. What it is not
  3. What is Kubernetes? What is it used for?
  4. Glossary
  5. The base building block: pods
  6. Naming things: labels and annotations
  7. Deploying your first application: deployment
  8. Accessing your first application: service
  9. Running a background process: cronjobs
  10. Secrets
  11. Liveness and readiness probes, and how it impacts your pods
  12. Resources, and how it impacts the scheduling
  13. Improving the availability of your application: affinity and anti-affinity
  14. Improving the availability of your application: pod disruptions budget
  15. Improving the elasticity of your applications: HPA, VPA
  16. Sidecar containers: what, why, and how
  17. Running a stateful application: volumes
  18. Running a stateful application: stateful-sets
  19. Controllers: what, why, and how
  20. Operators and CRDs: what, why, and how
  21. RBAC
  22. Other topics
  23. Good practices
  24. Links

License

This hands-on course in under the CC BY-NC-SA license.

CC BY-NC-SA

Prerequisites

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
open https://download.docker.com/mac/stable/Docker.dmg

Install minikube and the "ingress" and "metrics-server" addons:

$ brew install kubectl
[...]

$ brew cask install minikube
[...]

$ minikube start
[...]
🏄  Done! Thank you for using minikube!

$ minikube addons enable ingress
✅ ingress was successfully enabled

$ minikube addons enable metrics-server
✅  metrics-server was successfully enabled

$ kubectl config current-context
minikube

Note: the ingress addon is currently not supported on docker for Mac (see kubernetes/minikube#7332). As a workaround, you have to deploy minikube as a VM and not as a container (using Virtualbox or Hyperkit for example)

$ minikube start --vm=true --vm-driver=virtualbox
[...]
✨  Using the virtualbox driver based on user configuration
🔥  Creating virtualbox VM ...

If you did launch minikube already, the --vm flag may be ignored as minikube caches the previous config. If so you may want to delete and relaunch minikube (warning: it will delete your whole minikube setup)

$ minikube stop && minikube delete && minikube start --vm=true --vm-driver=virtualbox
[...]
💀  Removed all traces of the "minikube" cluster.
✨  Using the virtualbox driver based on user configuration
🔥  Creating virtualbox VM ...

(Optional) If you feel adventurous, only for macOS

You can try another lighter virtual machine layer than Virtualbox

brew install docker-machine-driver-hyperkit

Then start minikube:

minikube start --vm-driver=hyperkit

If you're encountering any issues:

rm -rf ~/.minikube/

And start minikube without HyperKit:

minikube start

Completion

If you are using Zsh, you can add the following to your .zshrc file to get autocomplete for kubectl:

if [ $commands[kubectl] ]; then
  source <(kubectl completion zsh)
fi

What this course is and what it's not

What this is

This is a hands-on course to get started with Kubernetes (Kubernetes). It starts with the basics and moves up in complexity. At the end of this course, you should be able to deploy an API in Kubernetes that is accessible from the outside.

What it's not

This is not a course on how to install, manage or deploy a Kubernetes cluster. Neither is it a course to understand how Kubernetes works internally. However, if you're interested in this topic, see Kubernetes The Hard Way.

What is Kubernetes? What is it used for

Kubernetes is an open-source system for managing containerized applications across multiple hosts, providing basic mechanisms for deployment, maintenance, and scaling of applications.

Kubernetes has a number of features. It can be seen as:

  • a container platform,
  • a microservices platform,
  • a portable cloud platform, and a lot more.

Kubernetes provides a container-centric management environment. It orchestrates computing, networking, and storage infrastructure on behalf of user workloads. This provides much of the simplicity of Platform as a Service (PaaS) with the flexibility of Infrastructure as a Service (IaaS), and enables portability across infrastructure providers.

Glossary

  • YAML (yml)

A markup language that relies on spaces and tabulations. All Kubernetes configuration is written using YAML.

You will feel the pain of missing tabs and spaces. Feel free to use a linter, such as http://www.yamllint.com/.

  • Container

Containers are an abstraction at the app layer, which packages code and dependencies together.

  • (Container) image

A lightweight, standalone, executable software package that includes everything you need to run an application: code, runtime, system tools, system libraries and settings.

  • Docker

A software technology providing operating-system-level virtualization, also known as containers.

Docker uses the resource isolation features of the Linux kernel, such as cgroups and kernel namespaces, and a union-capable file system such as OverlayFS and others to allow independent “containers” to run within a single Linux instance. This avoids the overhead of starting and maintaining virtual machines (VMs).

  • kubectl

The standard CLI to interact with Kubernetes. We use it a lot in this course.

  • minikube

A local Kubernetes cluster, useful for testing. We use it a lot in this course.

  • Manifest

Kubernetes configuration files are called manifests. This is a reference to the list or invoice of the passengers or goods being carried by a commercial vehicle or ship (from wiktionary).

  • (Kubernetes) objects

Kubernetes contains a number of abstractions that represent the state of your system: deployed containerized applications and workloads, their associated network and disk resources, and other information about what your cluster is doing. These abstractions are called objects, and are represented by a kind in the Kubernetes API.

  • (Kubernetes) node

A node is a worker machine in Kubernetes.

A worker machine may be a VM or physical machine, depending on the cluster. It has the necessary services to run the workloads and is managed by the master components. The services on a node include Docker, kubelet and kube-proxy.

  • (Kubernetes) cluster

A set of machines, called nodes, that run containerized applications managed by Kubernetes.

A cluster has several worker nodes and at least one master node.

  • (Kubernetes) master

The master is responsible for managing the cluster. It coordinates all activities in your cluster, such as scheduling applications, maintaining applications’ desired state, scaling applications, and rolling out new updates.

A Kubernetes master automatically handles the scheduling of your services across nodes in the cluster. The master’s automatic scheduling takes the available resources of each node into account.

The base building block: pods

See the dedicated README.

Naming things: labels and annotations

See the dedicated README.

Deploying my first application: deployment

See the dedicated README.

Accessing my first application: service

See the dedicated README.

Running a background process: cronjobs

See the dedicated README.

Secrets

See the dedicated README.

Liveness and readiness probes, and how it impacts your pods

See the dedicated README.

Resources, and how it impacts the scheduling

See the dedicated README.

Affinity and anti-affinity

See the dedicated README.

PDB

See the dedicated README.

HPA, VPA

See the dedicated README.

Sidecar containers: what, why, and how

See the dedicated README.

Running a stateful application: volumes

See the dedicated README.

Running a stateful application: stateful sets

See the dedicated README.

Controllers: what, why, and how

See the dedicated README.

Operators and CRDs: what, why, and how

See the dedicated README.

RBAC

See the dedicated README.

Other topics

See the dedicated README.

Good practices

See the dedicated README.

Links

More Repositories

1

places

🌐 Turn any <input> into an address autocomplete
JavaScript
5,372
star
2

autocomplete

🔮 Fast and full-featured autocomplete library
TypeScript
5,047
star
3

docsearch

📘 The easiest way to add search to your documentation.
TypeScript
3,980
star
4

instantsearch

⚡️ Libraries for building performant and instant search and recommend experiences with Algolia. Compatible with JavaScript, TypeScript, React and Vue.
TypeScript
3,700
star
5

react-instantsearch

⚡️ Lightning-fast search for React and React Native applications, by Algolia.
TypeScript
1,969
star
6

algoliasearch-client-javascript

⚡️ A fully-featured and blazing-fast JavaScript API client to interact with Algolia.
TypeScript
1,259
star
7

github-awesome-autocomplete

:octocat: Add instant search capabilities to GitHub's search bar
JavaScript
1,062
star
8

vue-instantsearch

👀 Algolia components for building search UIs with Vue.js
JavaScript
854
star
9

shipjs

Take control of what is going to be your next release.
JavaScript
749
star
10

awesome-algolia

🔍👋 START HERE! A curated list of Algolia libraries, resources and projects.
696
star
11

algoliasearch-client-php

⚡️ A fully-featured and blazing-fast PHP API client to interact with Algolia.
PHP
670
star
12

instantsearch-ios

⚡️ A library of widgets and helpers to build instant-search applications on iOS.
Swift
573
star
13

voice-overlay-ios

🗣 An overlay that gets your user’s voice permission and input as text in a customizable UI
Swift
544
star
14

sup3rS3cretMes5age

Simple to use, simple to deploy, one time self destruct messaging service, with hashicorp vault as a backend
Go
506
star
15

react-element-to-jsx-string

Turn a ReactElement into the corresponding JSX string
JavaScript
490
star
16

hn-search

Hacker News Search
TypeScript
489
star
17

docsearch-configs

DocSearch - Configurations
JavaScript
455
star
18

expect-jsx

✅ toEqualJSX for expect assertion library
JavaScript
410
star
19

algoliasearch-rails

AlgoliaSearch integration to your favorite ORM
Ruby
398
star
20

scout-extended

Scout Extended: The Full Power of Algolia in Laravel
PHP
382
star
21

algoliasearch-wordpress

❌🗑🙅‍♂️ Algolia Search plugin for WordPress is no longer supported. Please use our API client guide instead
JavaScript
360
star
22

docsearch-scraper

DocSearch - Scraper
Python
298
star
23

color-extractor

Extract the dominant color(s) of your fashion articles!
Python
271
star
24

algoliasearch-netlify

Official Algolia Plugin for Netlify. Index your website to Algolia when deploying your project to Netlify with the Algolia Crawler
TypeScript
260
star
25

angular-instantsearch

⚡️Lightning-fast search for Angular apps, by Algolia
TypeScript
255
star
26

voice-overlay-android

🗣 An overlay that gets your user’s voice permission and input as text in a customizable UI
Kotlin
253
star
27

algoliasearch-laravel

[Deprecated] We now recommend using Laravel Scout, see =>
PHP
238
star
28

jekyll-algolia

Add fast and relevant search to your Jekyll site
Ruby
214
star
29

algoliasearch-client-swift

⚡️ A fully-featured and blazing-fast Swift API client to interact with Algolia.
Swift
203
star
30

algoliasearch-client-python

⚡️ A fully-featured and blazing-fast Python API client to interact with Algolia.
Python
194
star
31

algoliasearch-client-go

⚡️ A fully-featured and blazing-fast Go API client to interact with Algolia.
Go
193
star
32

search-bundle

Seamless integration of Algolia Search into your Symfony project.
PHP
190
star
33

atom-autocomplete-module-import

⚛️ Search & install npm packages from import/require statements.
JavaScript
182
star
34

gatsby-plugin-algolia

A plugin to push to Algolia based on graphQl queries
JavaScript
176
star
35

algoliasearch-helper-js

Helper for implementing advanced search features with Algolia
JavaScript
174
star
36

datasets

Interesting datasets you could use with Algolia
173
star
37

youtube-captions-scraper

Fetch youtube user submitted or fallback to auto-generated captions
JavaScript
173
star
38

pwa-ecom-ui-template

React/Next.js based starter kit, focused on delivering a rich Search & Discovery e-commerce experience.
TypeScript
172
star
39

algoliasearch-django

Seamless integration of Algolia into your Django project.
Python
167
star
40

algoliasearch-client-ruby

⚡️ A fully-featured and blazing-fast Ruby API client to interact with Algolia.
Ruby
166
star
41

algoliasearch-magento-2

Algolia Search integration for Magento 2 - compatible with versions from 2.3.x to 2.4.x
PHP
156
star
42

instantsearch-android

A library of widgets and helpers to build instant-search applications on Android.
Kotlin
153
star
43

instant-search-demo

Instant-search demo (facets, sliders, paginations & more)
CSS
140
star
44

npm-search

🗿 npm ↔️ Algolia replication tool ⛷️ 🐌 🛰️
TypeScript
134
star
45

algoliasearch-jekyll

⚠ DEPRECATED Use jekyll-algolia instead.
Ruby
124
star
46

algoliasearch-client-csharp

⚡️ A fully-featured and blazing-fast C# API client to interact with Algolia.
C#
113
star
47

firestore-algolia-search

TypeScript
112
star
48

frontman

💎 A Ruby-based static website generator
Ruby
108
star
49

create-instantsearch-app

⚡️ Build InstantSearch apps at the speed of thought
JavaScript
107
star
50

algoliasearch-client-android

Algolia Search API Client for Android
Java
98
star
51

faux-jax

NO MORE MAINTAINED: Intercept and respond to requests in the browser (AJAX) and Node.js (http(s) module)
JavaScript
96
star
52

cli

🔍 Algolia’s official CLI devtool
Go
94
star
53

algolia-cli-old

[DEPRECATED] This repo and npm package are no longer maintained or supported. The new official command line tool can be found here: https://github.com/algolia/cli
JavaScript
82
star
54

doc-code-samples

This repository holds the Algolia documentation big code samples like GeoSearch, Calendar...
TypeScript
82
star
55

rollup-jest-boilerplate

🎉 Full featured boilerplate for building JavaScript libraries the modern way
JavaScript
80
star
56

marvel-search

Searchable list of all Marvel superheroes and supervillains
JavaScript
77
star
57

examples

Set of code samples highlighting the different ways to use the Algolia API
CSS
76
star
58

instantsearch-ios-examples

Example apps built with InstantSearch iOS
Swift
67
star
59

instantsearch-android-examples

Example apps built with algolia/instantsearch-android
Kotlin
63
star
60

algoliasearch-client-css

Algolia Search API Client for CSS
JavaScript
63
star
61

mongoolia

Keep your mongoose schemas synced with Algolia
JavaScript
58
star
62

algoliasearch-client-kotlin

⚡️ A fully-featured and blazing-fast Kotlin/Android API client to interact with Algolia.
Kotlin
56
star
63

hn-reactnative-sample

Sample Hacker News Search app by Algolia based on React Native.
JavaScript
54
star
64

search-insights.js

Library for reporting click, conversion and view metrics using the Algolia Insights API
TypeScript
53
star
65

jest-serializer-html

Jest snapshot serializer that beautifies HTML.
JavaScript
51
star
66

redux-updeep

small reducer generator that uses updeep to immutably deep merge partial updates into the reducer's state
JavaScript
50
star
67

algoliasearch-alexa

🔊 Search by voice in Alexa, powered by Algolia
JavaScript
44
star
68

chunk-text

🔪 chunk/split a string by length without cutting/truncating words.
JavaScript
44
star
69

algoliasearch-client-java

⚡️ A fully-featured and blazing-fast Java API client to interact with Algolia.
Java
43
star
70

react-nouislider

CSS
42
star
71

react-test-boilerplate

Companion project for Algolia's React unit testing blog post
JavaScript
41
star
72

algoliasearch-crawler-github-actions

Algolia Crawler Github action
TypeScript
40
star
73

demo-geo-search

Demo code illustrating the geo search features of Algolia
JavaScript
39
star
74

laravel-scout-algolia-macros

DEPRECATED: Use of this repository is deprecated. Please use Scout Extended - https://github.com/algolia/scout-extended instead.
PHP
39
star
75

algoliasearch-client-objc

Algolia Search API Client for iOS & OS X
Objective-C
38
star
76

docsearch-website

Previous repository for the DocSearch documentation website, now at https://github.com/algolia/docsearch/tree/next/packages/website
CSS
38
star
77

algoliasearch-client-node

DEPRECATED
36
star
78

algoliasearch-rails-example

AlgoliaSearch+Ruby on Rails examples
Ruby
36
star
79

elasticsearch-topk-plugin

Elasticsearch Top-K Aggregation Plugin
Java
35
star
80

wordpress-docker

Simple docker based environment for WordPress plugins and themes development.
Shell
34
star
81

algolia-sitemap

a node library allowing you to generate sitemaps from an Algolia index.
JavaScript
33
star
82

jekyll-algolia-example

Front-end example of the jekyll-algolia plugin
HTML
33
star
83

vue-instantsearch-examples

Examples for Vue InstantSearch v1, v2 links: https://github.com/algolia/vue-instantsearch-examples/issues/50
Shell
33
star
84

unified-instantsearch-ecommerce

The fastest way to implement Algolia, for e-commerce customers.
JavaScript
32
star
85

algoliasearch-client-java-legacy

*DEPRECATED* Algolia Search API Client for Java, see https://github.com/algolia/algoliasearch-client-java-2
Java
31
star
86

talksearch-scraper

Extract captions and metadata from YouTube playlists and push them to Algolia
JavaScript
31
star
87

diffable-html

Opinionated HTML formatter focused towards making HTML diffs readable.
JavaScript
30
star
88

api-clients-automation

🤖 Monorepo of the Algolia API specs and their auto-generated clients and documentation
PHP
30
star
89

recommend

A UI library for Algolia Recommend, available for Vanilla JavaScript and React.
TypeScript
29
star
90

eslint-config-algolia

Algolia's ESLint config and prettier instructions for JavaScript projects
JavaScript
27
star
91

talksearch

🎤 An interactive search experience for video titles and transcripts
JavaScript
25
star
92

algolia-firebase-nodejs

An example showing how to push data from Firebase to Algolia
JavaScript
24
star
93

algoliasearch-client-scala

⚡️ A fully-featured and blazing-fast Scala API client to interact with Algolia.
Scala
24
star
94

redux-magic-async-middleware

redux-magic-async-middleware is a middleware which makes it easy to handle asynchronous data with redux
JavaScript
23
star
95

laravel-scout-settings

DEPRECATED: Use of this repository is deprecated. Please use Scout Extended - https://github.com/algolia/scout-extended instead.
PHP
23
star
96

pdrone

Control Parrot drones with JavaScript
JavaScript
23
star
97

algoliasearch-helper-flutter

⚡️ Building block to create instant-search applications with Flutter
Dart
23
star
98

algolia-swift-demo

iOS instant search tutorial
Swift
23
star
99

algolia-react-boilerplate

🔥 A highly scalable, and customizable boilerplate, made with ReactInstantSearchHooks and with many Algolia's features. Ready to configure and deploy. You have just to follow steps in readme file. 💥
JavaScript
23
star
100

algolia-coding-contest

Welcome to the first Algolia Coding Contest, until May 5th.
22
star