instance-per-pod

module
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 4, 2019 License: Apache-2.0

README

Instance-per-Pod Admission Webhook

Instance-per-Pod Admission Webhook (IPP) creates an IaaS instance per Kubernetes Pod to mitigate potential container breakout attacks. Unlike Kata Containers, IPP can even mitigate CPU vulnerabilities when baremetal instances are used.

Supported clusters

Getting started

With GKE
Step 1

Create a GKE node pool with the following configuration:

  • Create "GCE instance metadata" (not "Kubernetes labels") ipp-reserved=true
  • Do NOT enable autoscaling
Step 2

Create a GCP service account with Comute Admin and Kubernetes Engine Admin roles, and download the JSON private key.

Step 3

Install IPP Admission Webhook:

IMAGE="gcr.io/$PROJECT/ipp:t$(date +%s)"
GKEPARENT="projects/$PROJECT/locations/asia-northeast1-a/clusters/$CLUSTER"
GCPSA=/path/to/gcp-sa.json

docker build -t $IMAGE . && docker push $IMAGE
./ipp.yaml.sh $IMAGE $GKEPARENT $GCPSA | kubectl apply -f -

You can review the YAML before running kubectl apply. Note that the YAML contains Secret resources.

Step 4

Create some pods.

A pod mutated by IPP has .spec.nodeSelector[ipp.akihirosuda.github.io/node=<generated-node-label>] and .metadata.labels[ipp.akihirosuda.github.io/mutated]=true.

Watch log

$ kubectl logs -f --namespace=ipp-system deployments/ipp

Uninstall

$ kubectl delete mutatingwebhookconfiguration ipp
$ kubectl delete namespace ipp-system
$ kubectl delete clusterrole ipp
$ kubectl delete clusterrolebinding ipp

Ignored pods

  • Pods created with DaemonSet
  • Pods in *-system namespaces (eg. kube-system)
  • Pods with ipp.akihirosuda.github.io/ignore=true annotation

TODO

  • Allow defaulting not to use IPP
  • Ignore pods with nodeSelector/nodeName/nodeAffinity...
  • Reuse idle instances to save IaaS expense
  • Automatically delete idle instances
  • Allow annotated pods to co-exist in the same instance
  • Consider more fancy project name (RFC)

Directories

Path Synopsis
cmd
ipp
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL