kubernetes-hands-on/16-sidecar-containers
antoinegauvain a5b4383297
Various fixes (#57)
* fix: fix internal service filename in 08-service section

* fix: typo

* fix: fix markdownlint in CI

* fix: typo

* fix: typo

* fix: `environment variables`, not `environmental`

* fix: typo & missing punctuation

* fix: `much` not `many`

* fix: `lets` not `let's`

* fix: typo

* fix: typo

* fix: phrasing

* fix: typo

* fix: typo

* fix: mysql operator manifest api version

got this error while trying to run it as is:

error: unable to recognize "20-operators/01-mysql-operator.yml": no matches for
kind "Deployment" in version "apps/v1beta1"

* fix: spelling
2020-01-29 16:41:07 +01:00
..
01-sidecar.yml fix sidecar manifest (#44) 2019-05-23 11:13:32 +02:00
README.md Various fixes (#57) 2020-01-29 16:41:07 +01:00

README.md

Sidecar containers: what, why, and how

Introduction

In kubernetes a pod can contain multiple containers:

apiVersion: v1
kind: Pod
metadata:
  name: simple-pod
spec:
  containers:
  - name: container1
    image: nginx
  - name: container2
    image: busybox

Here we have 2 containers: container1 and container2.

When you have multiple containers in a pod we call them sidecar containers. Most of the time you have a "primary" container, the one with containing your application, and "secondary", hence the sidecar terminology.

All the containers of a given pod share the same network, and can share the same volumes.

Use cases

Sidecars are useful for containers that are tightly coupled. A good use case is when you migrate an app from one machine to containers. The application will have a lot of localhost or 127.0.0.1 hardcoded. So with sidecars you can work around this.

Another use case is to have sidecars helping the main container, like sending logs to a centralized system, sending the metrics to a specific system, doing SSL termination, etc.

Istio, the service mesh tool, installs a sidecar container to do its job: https://istio.io/docs/setup/kubernetes/additional-setup/sidecar-injection/

Exercices

Review and apply the file 01-sidecar.yml. Connect to the nginx container and look at the file system in /usr/share/nginx/html.

This exercice is taken from the official Kubernetes documentation.

Clean up

kubectl delete service,deployment,pod --all