Add docker/default seccomp to control plane and addons

* Annotate pods, deployments, and daemonsets to start containers
with the Docker runtime's default seccomp profile
* Overrides Kubernetes default behavior which started containers
with seccomp=unconfined
* https://docs.docker.com/engine/security/seccomp/#pass-a-profile-for-a-container
This commit is contained in:
Dalton Hubble 2018-10-15 23:24:27 -07:00
parent 8f0d2b5db4
commit 5eb4078d68
26 changed files with 43 additions and 9 deletions

View File

@ -11,6 +11,8 @@ Notable changes between versions.
* Single-controller clusters continue to run 2 replicas as before * Single-controller clusters continue to run 2 replicas as before
* Raise default CoreDNS replica count to the larger of 2 or the number of controller nodes ([#313](https://github.com/poseidon/typhoon/pull/313)) * Raise default CoreDNS replica count to the larger of 2 or the number of controller nodes ([#313](https://github.com/poseidon/typhoon/pull/313))
* Add AntiAffinity preferred rule to favor spreading CoreDNS pods * Add AntiAffinity preferred rule to favor spreading CoreDNS pods
* Annotate Kubernetes control plane and addons to start containers with the Docker runtime's default seccomp profile ([#319](https://github.com/poseidon/typhoon/pull/319))
* Override Kubernetes default behavior that starts containers with seccomp=unconfined
#### Azure #### Azure

View File

@ -15,6 +15,8 @@ spec:
metadata: metadata:
labels: labels:
app: container-linux-update-agent app: container-linux-update-agent
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec: spec:
containers: containers:
- name: update-agent - name: update-agent

View File

@ -12,6 +12,8 @@ spec:
metadata: metadata:
labels: labels:
app: container-linux-update-operator app: container-linux-update-operator
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec: spec:
containers: containers:
- name: update-operator - name: update-operator

View File

@ -18,6 +18,8 @@ spec:
labels: labels:
name: grafana name: grafana
phase: prod phase: prod
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec: spec:
containers: containers:
- name: grafana - name: grafana

View File

@ -14,6 +14,8 @@ spec:
labels: labels:
name: default-backend name: default-backend
phase: prod phase: prod
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec: spec:
containers: containers:
- name: default-backend - name: default-backend

View File

@ -17,6 +17,8 @@ spec:
labels: labels:
name: nginx-ingress-controller name: nginx-ingress-controller
phase: prod phase: prod
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec: spec:
nodeSelector: nodeSelector:
node-role.kubernetes.io/node: "" node-role.kubernetes.io/node: ""

View File

@ -14,6 +14,8 @@ spec:
labels: labels:
name: default-backend name: default-backend
phase: prod phase: prod
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec: spec:
containers: containers:
- name: default-backend - name: default-backend

View File

@ -17,6 +17,8 @@ spec:
labels: labels:
name: nginx-ingress-controller name: nginx-ingress-controller
phase: prod phase: prod
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec: spec:
nodeSelector: nodeSelector:
node-role.kubernetes.io/node: "" node-role.kubernetes.io/node: ""

View File

@ -14,6 +14,8 @@ spec:
labels: labels:
name: default-backend name: default-backend
phase: prod phase: prod
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec: spec:
containers: containers:
- name: default-backend - name: default-backend

View File

@ -17,6 +17,8 @@ spec:
labels: labels:
name: ingress-controller-public name: ingress-controller-public
phase: prod phase: prod
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec: spec:
containers: containers:
- name: nginx-ingress-controller - name: nginx-ingress-controller

View File

@ -17,6 +17,8 @@ spec:
labels: labels:
name: nginx-ingress-controller name: nginx-ingress-controller
phase: prod phase: prod
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec: spec:
nodeSelector: nodeSelector:
node-role.kubernetes.io/node: "" node-role.kubernetes.io/node: ""

View File

@ -14,6 +14,8 @@ spec:
labels: labels:
name: default-backend name: default-backend
phase: prod phase: prod
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec: spec:
containers: containers:
- name: default-backend - name: default-backend

View File

@ -14,6 +14,8 @@ spec:
labels: labels:
name: default-backend name: default-backend
phase: prod phase: prod
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec: spec:
containers: containers:
- name: default-backend - name: default-backend

View File

@ -17,6 +17,8 @@ spec:
labels: labels:
name: nginx-ingress-controller name: nginx-ingress-controller
phase: prod phase: prod
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec: spec:
nodeSelector: nodeSelector:
node-role.kubernetes.io/node: "" node-role.kubernetes.io/node: ""

View File

@ -14,6 +14,8 @@ spec:
labels: labels:
name: prometheus name: prometheus
phase: prod phase: prod
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec: spec:
serviceAccountName: prometheus serviceAccountName: prometheus
containers: containers:

View File

@ -18,6 +18,8 @@ spec:
labels: labels:
name: kube-state-metrics name: kube-state-metrics
phase: prod phase: prod
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec: spec:
serviceAccountName: kube-state-metrics serviceAccountName: kube-state-metrics
containers: containers:

View File

@ -17,6 +17,8 @@ spec:
labels: labels:
name: node-exporter name: node-exporter
phase: prod phase: prod
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec: spec:
serviceAccountName: node-exporter serviceAccountName: node-exporter
securityContext: securityContext:

View File

@ -1,6 +1,6 @@
# Self-hosted Kubernetes assets (kubeconfig, manifests) # Self-hosted Kubernetes assets (kubeconfig, manifests)
module "bootkube" { module "bootkube" {
source = "git::https://github.com/poseidon/terraform-render-bootkube.git?ref=f7c2f8d590dcca0cb9bd4de15d765cad29109455" source = "git::https://github.com/poseidon/terraform-render-bootkube.git?ref=2437023c1050609b749850e9b2301a6f00713680"
cluster_name = "${var.cluster_name}" cluster_name = "${var.cluster_name}"
api_servers = ["${format("%s.%s", var.cluster_name, var.dns_zone)}"] api_servers = ["${format("%s.%s", var.cluster_name, var.dns_zone)}"]

View File

@ -1,6 +1,6 @@
# Self-hosted Kubernetes assets (kubeconfig, manifests) # Self-hosted Kubernetes assets (kubeconfig, manifests)
module "bootkube" { module "bootkube" {
source = "git::https://github.com/poseidon/terraform-render-bootkube.git?ref=f7c2f8d590dcca0cb9bd4de15d765cad29109455" source = "git::https://github.com/poseidon/terraform-render-bootkube.git?ref=2437023c1050609b749850e9b2301a6f00713680"
cluster_name = "${var.cluster_name}" cluster_name = "${var.cluster_name}"
api_servers = ["${format("%s.%s", var.cluster_name, var.dns_zone)}"] api_servers = ["${format("%s.%s", var.cluster_name, var.dns_zone)}"]

View File

@ -1,6 +1,6 @@
# Self-hosted Kubernetes assets (kubeconfig, manifests) # Self-hosted Kubernetes assets (kubeconfig, manifests)
module "bootkube" { module "bootkube" {
source = "git::https://github.com/poseidon/terraform-render-bootkube.git?ref=f7c2f8d590dcca0cb9bd4de15d765cad29109455" source = "git::https://github.com/poseidon/terraform-render-bootkube.git?ref=2437023c1050609b749850e9b2301a6f00713680"
cluster_name = "${var.cluster_name}" cluster_name = "${var.cluster_name}"
api_servers = ["${format("%s.%s", var.cluster_name, var.dns_zone)}"] api_servers = ["${format("%s.%s", var.cluster_name, var.dns_zone)}"]

View File

@ -1,6 +1,6 @@
# Self-hosted Kubernetes assets (kubeconfig, manifests) # Self-hosted Kubernetes assets (kubeconfig, manifests)
module "bootkube" { module "bootkube" {
source = "git::https://github.com/poseidon/terraform-render-bootkube.git?ref=f7c2f8d590dcca0cb9bd4de15d765cad29109455" source = "git::https://github.com/poseidon/terraform-render-bootkube.git?ref=2437023c1050609b749850e9b2301a6f00713680"
cluster_name = "${var.cluster_name}" cluster_name = "${var.cluster_name}"
api_servers = ["${var.k8s_domain_name}"] api_servers = ["${var.k8s_domain_name}"]

View File

@ -1,6 +1,6 @@
# Self-hosted Kubernetes assets (kubeconfig, manifests) # Self-hosted Kubernetes assets (kubeconfig, manifests)
module "bootkube" { module "bootkube" {
source = "git::https://github.com/poseidon/terraform-render-bootkube.git?ref=f7c2f8d590dcca0cb9bd4de15d765cad29109455" source = "git::https://github.com/poseidon/terraform-render-bootkube.git?ref=2437023c1050609b749850e9b2301a6f00713680"
cluster_name = "${var.cluster_name}" cluster_name = "${var.cluster_name}"
api_servers = ["${var.k8s_domain_name}"] api_servers = ["${var.k8s_domain_name}"]

View File

@ -1,6 +1,6 @@
# Self-hosted Kubernetes assets (kubeconfig, manifests) # Self-hosted Kubernetes assets (kubeconfig, manifests)
module "bootkube" { module "bootkube" {
source = "git::https://github.com/poseidon/terraform-render-bootkube.git?ref=f7c2f8d590dcca0cb9bd4de15d765cad29109455" source = "git::https://github.com/poseidon/terraform-render-bootkube.git?ref=2437023c1050609b749850e9b2301a6f00713680"
cluster_name = "${var.cluster_name}" cluster_name = "${var.cluster_name}"
api_servers = ["${format("%s.%s", var.cluster_name, var.dns_zone)}"] api_servers = ["${format("%s.%s", var.cluster_name, var.dns_zone)}"]

View File

@ -1,6 +1,6 @@
# Self-hosted Kubernetes assets (kubeconfig, manifests) # Self-hosted Kubernetes assets (kubeconfig, manifests)
module "bootkube" { module "bootkube" {
source = "git::https://github.com/poseidon/terraform-render-bootkube.git?ref=f7c2f8d590dcca0cb9bd4de15d765cad29109455" source = "git::https://github.com/poseidon/terraform-render-bootkube.git?ref=2437023c1050609b749850e9b2301a6f00713680"
cluster_name = "${var.cluster_name}" cluster_name = "${var.cluster_name}"
api_servers = ["${format("%s.%s", var.cluster_name, var.dns_zone)}"] api_servers = ["${format("%s.%s", var.cluster_name, var.dns_zone)}"]

View File

@ -1,6 +1,6 @@
# Self-hosted Kubernetes assets (kubeconfig, manifests) # Self-hosted Kubernetes assets (kubeconfig, manifests)
module "bootkube" { module "bootkube" {
source = "git::https://github.com/poseidon/terraform-render-bootkube.git?ref=f7c2f8d590dcca0cb9bd4de15d765cad29109455" source = "git::https://github.com/poseidon/terraform-render-bootkube.git?ref=2437023c1050609b749850e9b2301a6f00713680"
cluster_name = "${var.cluster_name}" cluster_name = "${var.cluster_name}"
api_servers = ["${format("%s.%s", var.cluster_name, var.dns_zone)}"] api_servers = ["${format("%s.%s", var.cluster_name, var.dns_zone)}"]

View File

@ -1,6 +1,6 @@
# Self-hosted Kubernetes assets (kubeconfig, manifests) # Self-hosted Kubernetes assets (kubeconfig, manifests)
module "bootkube" { module "bootkube" {
source = "git::https://github.com/poseidon/terraform-render-bootkube.git?ref=f7c2f8d590dcca0cb9bd4de15d765cad29109455" source = "git::https://github.com/poseidon/terraform-render-bootkube.git?ref=2437023c1050609b749850e9b2301a6f00713680"
cluster_name = "${var.cluster_name}" cluster_name = "${var.cluster_name}"
api_servers = ["${format("%s.%s", var.cluster_name, var.dns_zone)}"] api_servers = ["${format("%s.%s", var.cluster_name, var.dns_zone)}"]