This is an automated email from the ASF dual-hosted git repository.
dgrove pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openwhisk-deploy-kube.git
The following commit(s) were added to refs/heads/master by this push:
new caac4d6 NetworkPolicy to isolate pods running user actions (#584)
caac4d6 is described below
commit caac4d6de2193301c948b4091345224fc69fdbce
Author: David Grove <[email protected]>
AuthorDate: Tue Feb 18 07:52:33 2020 -0500
NetworkPolicy to isolate pods running user actions (#584)
Add NetworkPolicy to enforce moderate levels of network isolation:
1. User action pods only accept incoming connections from invokers
2. Back-end control plane pods only accept incoming connections
from other control plane pods.
---
docs/configurationChoices.md | 8 +++
helm/openwhisk/Chart.yaml | 2 +-
helm/openwhisk/templates/network-policy.yaml | 88 ++++++++++++++++++++++++++++
helm/openwhisk/values.yaml | 15 ++---
4 files changed, 105 insertions(+), 8 deletions(-)
diff --git a/docs/configurationChoices.md b/docs/configurationChoices.md
index d105c79..e19e1b5 100644
--- a/docs/configurationChoices.md
+++ b/docs/configurationChoices.md
@@ -221,6 +221,14 @@ you can set
`invoker.containerFactory.networkConfig.dns.inheritInvokerConfig` to
and explicitly configure the child values of
`invoker.containerFactory.networkConfig.dns.overrides`
instead.
+### User action container network isolation
+
+By default, a set of NetworkPolicy objects will be configured to isolate
+pods running user actions from each other and from the back-end pods
+of the OpenWhisk control plane. If you want to disable this network
+isolation, set `invoker.containerFactory.kubernetes.isolateUserActions`
+to `false`.
+
### Customizing probes setting
Many openwhisk components has liveness and readiness probes configured.
Sometimes it is observed that components do not come up or in ready state
before the probes starts executing which causes pods to restarts or fail. You
can configure probes timing settings like `initialDelaySeconds`,
`periodSeconds` and `timeoutSeconds` in `mycluster.yaml`
diff --git a/helm/openwhisk/Chart.yaml b/helm/openwhisk/Chart.yaml
index 5a29fbc..8435a3f 100644
--- a/helm/openwhisk/Chart.yaml
+++ b/helm/openwhisk/Chart.yaml
@@ -18,7 +18,7 @@
apiVersion: v1
description: An open source, distributed serverless platform that executes
functions in response to events at any scale
name: openwhisk
-version: 0.1.10
+version: 0.1.11
icon:
https://raw.githubusercontent.com/apache/openwhisk/682eb5b62ee6ba8017ab54226c2ace3637f4f1ec/docs/images/whisk_icon_full-color_with_tm_64x64-300dpi.png
keywords:
- Apache OpenWhisk
diff --git a/helm/openwhisk/templates/network-policy.yaml
b/helm/openwhisk/templates/network-policy.yaml
new file mode 100644
index 0000000..8477d90
--- /dev/null
+++ b/helm/openwhisk/templates/network-policy.yaml
@@ -0,0 +1,88 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+{{- if .Values.invoker.containerFactory.kubernetes.isolateUserActions }}
+
+# Default deny all ingress
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+ name: {{ .Release.Name }}-default-no-ingress-np
+ labels:
+{{ include "openwhisk.label_boilerplate" .| indent 4 }}
+spec:
+ podSelector: {}
+ policyTypes:
+ - Ingress
+---
+
+# Backend control plane pods only accept connections from non-user-action-pods
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+ name: {{ .Release.Name }}-backend-np
+ labels:
+{{ include "openwhisk.label_boilerplate" .| indent 4 }}
+spec:
+ podSelector:
+ matchExpressions:
+ - {key: user-action-pod, operator: DoesNotExist}
+ policyTypes:
+ - Ingress
+ ingress:
+ - from:
+ - podSelector:
+ matchExpressions:
+ - {key: user-action-pod, operator: DoesNotExist}
+---
+
+# Frontend pods (nginx, controller, apigateway) accept connections from anyone
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+ name: {{ .Release.Name }}-frontend-np
+ labels:
+{{ include "openwhisk.label_boilerplate" .| indent 4 }}
+spec:
+ podSelector:
+ matchExpressions:
+ - {key: name, operator: In, values: ["{{ .Release.Name }}-controller",
"{{ .Release.Name }}-apigateway", "{{ .Release.Name }}-nginx"]}
+ policyTypes:
+ - Ingress
+ ingress:
+ - {}
+---
+
+# User action pods will only accept connections from invokers
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+ name: {{ .Release.Name }}-actions-allow-invoker-np
+ labels:
+{{ include "openwhisk.label_boilerplate" .| indent 4 }}
+spec:
+ podSelector:
+ matchExpressions:
+ - {key: user-action-pod, operator: In, values: ["true"]}
+ policyTypes:
+ - Ingress
+ ingress:
+ - from:
+ - podSelector:
+ matchLabels:
+ name: {{ .Release.Name }}-invoker
+{{- end }}
diff --git a/helm/openwhisk/values.yaml b/helm/openwhisk/values.yaml
index 17c9e20..665c5f0 100644
--- a/helm/openwhisk/values.yaml
+++ b/helm/openwhisk/values.yaml
@@ -128,9 +128,9 @@ whisk:
includeSystemTests: false
versions:
openwhisk:
- buildDate: "2019-12-20-17:00:07Z"
- buildNo: "20191220a"
- gitTag: "8eb922f568d7843cdb1068252d29ba5723b30283"
+ buildDate: "2020-02-14-00:17:46Z"
+ buildNo: "20200214a"
+ gitTag: "84e53daa3b9e7ecb65b106ef432f4ead8f2cb9f2"
openwhiskCli:
tag: "1.0.0"
openwhiskCatalog:
@@ -153,7 +153,7 @@ k8s:
# Images used to run auxillary tasks/jobs
utility:
imageName: "openwhisk/ow-utils"
- imageTag: "8eb922f"
+ imageTag: "84e53da"
imagePullPolicy: "IfNotPresent"
# Docker registry
@@ -237,7 +237,7 @@ nginx:
# Controller configurations
controller:
imageName: "openwhisk/controller"
- imageTag: "8eb922f"
+ imageTag: "84e53da"
imagePullPolicy: "IfNotPresent"
replicaCount: 1
restartPolicy: "Always"
@@ -249,7 +249,7 @@ controller:
# Invoker configurations
invoker:
imageName: "openwhisk/invoker"
- imageTag: "8eb922f"
+ imageTag: "84e53da"
imagePullPolicy: "IfNotPresent"
restartPolicy: "Always"
port: 8080
@@ -271,6 +271,7 @@ invoker:
search: ""
options: ""
kubernetes:
+ isolateUserActions: true
replicaCount: 1
# API Gateway configurations
@@ -301,7 +302,7 @@ redis:
# User-events configuration
user_events:
imageName: "openwhisk/user-events"
- imageTag: "8eb922f"
+ imageTag: "84e53da"
imagePullPolicy: "IfNotPresent"
replicaCount: 1
restartPolicy: "Always"