Remove unwanted permissions from Fission components (#2568)

* Remove unwanted permissions from Fission components
* Remove unwanted permission from buildermgr
* Remove rbac permissions from controller
* Remove unwanted namespace permission
* Remove unwanted fission resource permissions
* Add deployment list permission for buildermgr
* add deployment create permission for buildermgr
* Update action version
* Add rolebinding permission for buildermanager
* Reduce permissions for fetcher and builder components
* Aded deployment delete permission to buildermgr
* Add logger to wait crds function
* Revert "Grant CustomResourcedefintion read permission to specific components (#2567)"

This reverts commit 8fe62b755c.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
This commit is contained in:
Sanket Sudake
2022-10-13 15:04:49 +05:30
committed by GitHub
parent 8fe62b755c
commit f2b790921b
27 changed files with 156 additions and 285 deletions
+3 -3
View File
@@ -82,7 +82,7 @@ jobs:
skaffold version skaffold version
- name: Install GoReleaser - name: Install GoReleaser
uses: goreleaser/goreleaser-action@v2 uses: goreleaser/goreleaser-action@v3
with: with:
install-only: true install-only: true
@@ -130,7 +130,7 @@ jobs:
- name: Archive fission dump - name: Archive fission dump
if: ${{ failure() }} if: ${{ failure() }}
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v3
with: with:
name: fission-dump-${{ github.run_id }}-${{ matrix.kindversion }} name: fission-dump-${{ github.run_id }}-${{ matrix.kindversion }}
path: fission-dump/*.zip path: fission-dump/*.zip
@@ -138,7 +138,7 @@ jobs:
- name: Archive kind logs - name: Archive kind logs
if: ${{ always() }} if: ${{ always() }}
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v3
with: with:
name: kind-logs-${{ github.run_id }}-${{ matrix.kindversion }} name: kind-logs-${{ github.run_id }}-${{ matrix.kindversion }}
path: kind-logs/* path: kind-logs/*
+3 -3
View File
@@ -55,7 +55,7 @@ jobs:
version: ${{ env.KIND_VERSION }} version: ${{ env.KIND_VERSION }}
- name: Install GoReleaser - name: Install GoReleaser
uses: goreleaser/goreleaser-action@v2 uses: goreleaser/goreleaser-action@v3
with: with:
install-only: true install-only: true
@@ -101,7 +101,7 @@ jobs:
- name: Archive fission dump - name: Archive fission dump
if: ${{ failure() }} if: ${{ failure() }}
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v3
with: with:
name: fission-dump name: fission-dump
path: fission-dump/*.zip path: fission-dump/*.zip
@@ -109,7 +109,7 @@ jobs:
- name: Archive kind logs - name: Archive kind logs
if: ${{ always() }} if: ${{ always() }}
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v3
with: with:
name: kind-logs-${{ github.run_id }}-${{ matrix.kindversion }} name: kind-logs-${{ github.run_id }}-${{ matrix.kindversion }}
path: kind-logs/* path: kind-logs/*
@@ -8,12 +8,8 @@ rules:
resources: resources:
- configmaps - configmaps
- pods - pods
- secrets
- services - services
- serviceaccounts - serviceaccounts
- replicationcontrollers
- namespaces
- events
verbs: verbs:
- create - create
- delete - delete
@@ -25,39 +21,24 @@ rules:
- apps - apps
resources: resources:
- deployments - deployments
- deployments/scale
- replicasets
verbs: verbs:
- list
- create - create
- delete
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get - get
- list - list
- watch - watch
- update
- patch
- delete
- apiGroups: - apiGroups:
- fission.io - fission.io
resources: resources:
- canaryconfigs
- environments - environments
- functions - functions
- httptriggers
- kuberneteswatchtriggers
- messagequeuetriggers
- packages - packages
- timetriggers
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- autoscaling
resources:
- horizontalpodautoscalers
verbs: verbs:
- create - create
- get - get
@@ -6,41 +6,39 @@ rules:
- apiGroups: - apiGroups:
- "" - ""
resources: resources:
- configmaps
- pods
- secrets
- services - services
- serviceaccounts
- replicationcontrollers
- namespaces
- events
verbs: verbs:
- create
- delete
- get
- list - list
- watch
- patch
- apiGroups: - apiGroups:
- apps - ""
resources: resources:
- deployments - configmaps
- deployments/scale - secrets
- replicasets
verbs: verbs:
- get
- apiGroups:
- ""
resources:
- namespaces
verbs:
- get
- create - create
- apiGroups:
- ""
resources:
- pods
verbs:
- get - get
- list - list
- watch - watch
- update
- patch
- delete
- apiGroups: - apiGroups:
- apiextensions.k8s.io - apiextensions.k8s.io
resources: resources:
- customresourcedefinitions - customresourcedefinitions
verbs: verbs:
- get - get
- list
- watch
- apiGroups: - apiGroups:
- fission.io - fission.io
resources: resources:
@@ -60,21 +58,3 @@ rules:
- update - update
- patch - patch
- delete - delete
- apiGroups:
- rbac.authorization.k8s.io
resources:
- rolebindings
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterroles
verbs:
- bind
@@ -12,7 +12,6 @@ rules:
- services - services
- serviceaccounts - serviceaccounts
- replicationcontrollers - replicationcontrollers
- namespaces
- events - events
verbs: verbs:
- create - create
@@ -35,17 +34,20 @@ rules:
- update - update
- patch - patch
- delete - delete
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
- apiGroups: - apiGroups:
- fission.io - fission.io
resources: resources:
- canaryconfigs
- environments - environments
- functions - functions
- httptriggers
- kuberneteswatchtriggers
- messagequeuetriggers
- packages - packages
- timetriggers
verbs: verbs:
- create - create
- get - get
@@ -12,7 +12,6 @@ rules:
- services - services
- serviceaccounts - serviceaccounts
- replicationcontrollers - replicationcontrollers
- namespaces
- events - events
verbs: verbs:
- create - create
@@ -21,20 +20,6 @@ rules:
- list - list
- watch - watch
- patch - patch
- apiGroups:
- apps
resources:
- deployments
- deployments/scale
- replicasets
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups: - apiGroups:
- batch - batch
resources: resources:
@@ -44,28 +29,20 @@ rules:
- list - list
- watch - watch
- apiGroups: - apiGroups:
- fission.io - apiextensions.k8s.io
resources: resources:
- canaryconfigs - customresourcedefinitions
- environments
- functions
- httptriggers
- kuberneteswatchtriggers
- messagequeuetriggers
- packages
- timetriggers
verbs: verbs:
- create
- get - get
- list - list
- watch - watch
- update
- patch
- delete
- apiGroups: - apiGroups:
- autoscaling - fission.io
resources: resources:
- horizontalpodautoscalers - environments
- functions
- kuberneteswatchtriggers
- packages
verbs: verbs:
- create - create
- get - get
@@ -4,57 +4,25 @@ metadata:
name: {{ .Release.Name }}-fission-fetcher name: {{ .Release.Name }}-fission-fetcher
namespace: {{ .Values.defaultNamespace }} namespace: {{ .Values.defaultNamespace }}
rules: rules:
- apiGroups: - apiGroups:
- "" - ""
resources: resources:
- configmaps - configmaps
- secrets - secrets
- pods verbs:
verbs: - get
- get - apiGroups:
- list - ""
- watch resources:
- apiGroups: - pods
- "" verbs:
resources: - list
- events - apiGroups:
verbs: - fission.io
- "*" resources:
- apiGroups: - packages
- fission.io verbs:
resources: - "get"
- canaryconfigs
- environments
- functions
- httptriggers
- kuberneteswatchtriggers
- messagequeuetriggers
- packages
- timetriggers
verbs:
- "*"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: {{ .Release.Name }}-fission-builder
namespace: {{ .Values.defaultNamespace }}
rules:
- apiGroups:
- fission.io
resources:
- canaryconfigs
- environments
- functions
- httptriggers
- kuberneteswatchtriggers
- messagequeuetriggers
- packages
- timetriggers
verbs:
- "*"
--- ---
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
kind: Role kind: Role
@@ -62,9 +30,34 @@ metadata:
namespace: {{ .Values.functionNamespace }} namespace: {{ .Values.functionNamespace }}
name: {{ .Release.Name }}-event-fetcher name: {{ .Release.Name }}-event-fetcher
rules: rules:
- apiGroups: [""] # "" indicates the core API group - apiGroups:
resources: ["pods"] - ""
verbs: ["get", "watch", "list"] resources:
- apiGroups: [""] # "" indicates the core API group - "events"
resources: ["events"] verbs:
verbs: ["*"] - "get"
- "list"
- "watch"
- "create"
- "update"
- "patch"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: {{ .Release.Name }}-fission-builder
namespace: {{ .Values.defaultNamespace }}
rules:
- apiGroups:
- fission.io
resources:
- packages
verbs:
- "get"
- apiGroups:
- ""
resources:
- configmaps
- secrets
verbs:
- get
@@ -11,22 +11,6 @@ subjects:
- kind: ServiceAccount - kind: ServiceAccount
name: fission-fetcher name: fission-fetcher
namespace: {{ .Values.functionNamespace }} namespace: {{ .Values.functionNamespace }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ .Release.Name }}-fission-builder
namespace: {{ .Values.defaultNamespace }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: {{ .Release.Name }}-fission-builder
subjects:
- kind: ServiceAccount
name: fission-builder
namespace: {{ .Values.builderNamespace }}
--- ---
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding kind: RoleBinding
@@ -41,3 +25,17 @@ subjects:
- kind: ServiceAccount - kind: ServiceAccount
name: fission-fetcher name: fission-fetcher
namespace: {{ .Values.functionNamespace }} namespace: {{ .Values.functionNamespace }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ .Release.Name }}-fission-builder
namespace: {{ .Values.defaultNamespace }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: {{ .Release.Name }}-fission-builder
subjects:
- kind: ServiceAccount
name: fission-builder
namespace: {{ .Values.builderNamespace }}
@@ -12,7 +12,6 @@ rules:
- services - services
- serviceaccounts - serviceaccounts
- replicationcontrollers - replicationcontrollers
- namespaces
- events - events
verbs: verbs:
- create - create
@@ -36,28 +35,20 @@ rules:
- patch - patch
- delete - delete
- apiGroups: - apiGroups:
- fission.io - apiextensions.k8s.io
resources: resources:
- canaryconfigs - customresourcedefinitions
- environments
- functions
- httptriggers
- kuberneteswatchtriggers
- messagequeuetriggers
- packages
- timetriggers
verbs: verbs:
- create
- get - get
- list - list
- watch - watch
- update
- patch
- delete
- apiGroups: - apiGroups:
- autoscaling - fission.io
resources: resources:
- horizontalpodautoscalers - environments
- functions
- messagequeuetriggers
- packages
verbs: verbs:
- create - create
- get - get
@@ -12,7 +12,6 @@ rules:
- services - services
- serviceaccounts - serviceaccounts
- replicationcontrollers - replicationcontrollers
- namespaces
- events - events
verbs: verbs:
- create - create
@@ -36,28 +35,20 @@ rules:
- patch - patch
- delete - delete
- apiGroups: - apiGroups:
- fission.io - apiextensions.k8s.io
resources: resources:
- canaryconfigs - customresourcedefinitions
- environments
- functions
- httptriggers
- kuberneteswatchtriggers
- messagequeuetriggers
- packages
- timetriggers
verbs: verbs:
- create
- get - get
- list - list
- watch - watch
- update
- patch
- delete
- apiGroups: - apiGroups:
- autoscaling - fission.io
resources: resources:
- horizontalpodautoscalers - environments
- functions
- messagequeuetriggers
- packages
verbs: verbs:
- create - create
- get - get
@@ -13,6 +13,8 @@ rules:
- customresourcedefinitions - customresourcedefinitions
verbs: verbs:
- get - get
- list
- watch
- apiGroups: - apiGroups:
- fission.io - fission.io
resources: resources:
@@ -12,7 +12,6 @@ rules:
- services - services
- serviceaccounts - serviceaccounts
- replicationcontrollers - replicationcontrollers
- namespaces
- events - events
verbs: verbs:
- create - create
@@ -21,20 +20,6 @@ rules:
- list - list
- watch - watch
- patch - patch
- apiGroups:
- apps
resources:
- deployments
- deployments/scale
- replicasets
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups: - apiGroups:
- networking.k8s.io - networking.k8s.io
resources: resources:
@@ -48,28 +33,20 @@ rules:
- patch - patch
- delete - delete
- apiGroups: - apiGroups:
- fission.io - apiextensions.k8s.io
resources: resources:
- canaryconfigs - customresourcedefinitions
- environments
- functions
- httptriggers
- kuberneteswatchtriggers
- messagequeuetriggers
- packages
- timetriggers
verbs: verbs:
- create
- get - get
- list - list
- watch - watch
- update
- patch
- delete
- apiGroups: - apiGroups:
- autoscaling - fission.io
resources: resources:
- horizontalpodautoscalers - environments
- functions
- httptriggers
- packages
verbs: verbs:
- create - create
- get - get
@@ -12,7 +12,6 @@ rules:
- services - services
- serviceaccounts - serviceaccounts
- replicationcontrollers - replicationcontrollers
- namespaces
- events - events
verbs: verbs:
- create - create
@@ -21,29 +20,11 @@ rules:
- list - list
- watch - watch
- patch - patch
- apiGroups:
- apps
resources:
- deployments
- deployments/scale
- replicasets
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups: - apiGroups:
- fission.io - fission.io
resources: resources:
- canaryconfigs
- environments - environments
- functions - functions
- httptriggers
- kuberneteswatchtriggers
- messagequeuetriggers
- packages - packages
- timetriggers - timetriggers
verbs: verbs:
@@ -54,18 +35,6 @@ rules:
- update - update
- patch - patch
- delete - delete
- apiGroups:
- autoscaling
resources:
- horizontalpodautoscalers
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups: - apiGroups:
- rbac.authorization.k8s.io - rbac.authorization.k8s.io
resources: resources:
@@ -84,3 +53,11 @@ rules:
- clusterroles - clusterroles
verbs: verbs:
- bind - bind
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
+1 -1
View File
@@ -41,7 +41,7 @@ func Start(ctx context.Context, logger *zap.Logger, routerUrl string) error {
return errors.Wrap(err, "failed to get fission or kubernetes client") return errors.Wrap(err, "failed to get fission or kubernetes client")
} }
err = crd.WaitForCRDs(ctx, fissionClient) err = crd.WaitForCRDs(ctx, logger, fissionClient)
if err != nil { if err != nil {
return errors.Wrap(err, "error waiting for CRDs") return errors.Wrap(err, "error waiting for CRDs")
} }
+1 -1
View File
@@ -42,7 +42,7 @@ func Start(ctx context.Context, logger *zap.Logger, storageSvcUrl string, envBui
return errors.Wrap(err, "failed to get fission or kubernetes client") return errors.Wrap(err, "failed to get fission or kubernetes client")
} }
err = crd.WaitForCRDs(ctx, fissionClient) err = crd.WaitForCRDs(ctx, logger, fissionClient)
if err != nil { if err != nil {
return errors.Wrap(err, "error waiting for CRDs") return errors.Wrap(err, "error waiting for CRDs")
} }
+1 -1
View File
@@ -505,7 +505,7 @@ func (envw *environmentWatcher) createBuilderDeployment(ctx context.Context, env
}, },
Spec: apiv1.PodSpec{ Spec: apiv1.PodSpec{
Containers: []apiv1.Container{*container}, Containers: []apiv1.Container{*container},
ServiceAccountName: "fission-builder", ServiceAccountName: fv1.FissionBuilderSA,
}, },
} }
+1 -1
View File
@@ -37,7 +37,7 @@ func Start(ctx context.Context, logger *zap.Logger, port int, unitTestFlag bool)
cLogger.Fatal("failed to find fission CRDs", zap.Error(err)) cLogger.Fatal("failed to find fission CRDs", zap.Error(err))
} }
err = crd.WaitForCRDs(ctx, fc) err = crd.WaitForCRDs(ctx, logger, fc)
if err != nil { if err != nil {
cLogger.Fatal("error waiting for CRDs", zap.Error(err)) cLogger.Fatal("error waiting for CRDs", zap.Error(err))
} }
+3 -1
View File
@@ -22,6 +22,7 @@ import (
"os" "os"
"time" "time"
"go.uber.org/zap"
apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/dynamic" "k8s.io/client-go/dynamic"
@@ -88,7 +89,8 @@ func MakeFissionClient() (versioned.Interface, kubernetes.Interface, apiextensio
} }
// WaitForCRDs does a timeout to check if CRDs have been installed // WaitForCRDs does a timeout to check if CRDs have been installed
func WaitForCRDs(ctx context.Context, fissionClient versioned.Interface) error { func WaitForCRDs(ctx context.Context, logger *zap.Logger, fissionClient versioned.Interface) error {
logger.Info("Waiting for CRDs to be installed")
start := time.Now() start := time.Now()
for { for {
fi := fissionClient.CoreV1().Functions(metav1.NamespaceDefault) fi := fissionClient.CoreV1().Functions(metav1.NamespaceDefault)
+1 -1
View File
@@ -259,7 +259,7 @@ func StartExecutor(ctx context.Context, logger *zap.Logger, functionNamespace st
return errors.Wrap(err, "failed to get kubernetes client") return errors.Wrap(err, "failed to get kubernetes client")
} }
err = crd.WaitForCRDs(ctx, fissionClient) err = crd.WaitForCRDs(ctx, logger, fissionClient)
if err != nil { if err != nil {
return errors.Wrap(err, "error waiting for CRDs") return errors.Wrap(err, "error waiting for CRDs")
} }
+1 -1
View File
@@ -149,7 +149,7 @@ func TestExecutor(t *testing.T) {
log.Panicf("failed to ensure crds: %v", err) log.Panicf("failed to ensure crds: %v", err)
} }
err = crd.WaitForCRDs(ctx, fissionClient) err = crd.WaitForCRDs(ctx, logger, fissionClient)
if err != nil { if err != nil {
log.Panicf("failed to wait crds: %v", err) log.Panicf("failed to wait crds: %v", err)
} }
@@ -273,7 +273,7 @@ func (deploy *NewDeploy) getDeploymentSpec(ctx context.Context, fn *fv1.Function
}, },
Spec: apiv1.PodSpec{ Spec: apiv1.PodSpec{
Containers: []apiv1.Container{*container}, Containers: []apiv1.Container{*container},
ServiceAccountName: "fission-fetcher", ServiceAccountName: fv1.FissionFetcherSA,
TerminationGracePeriodSeconds: &gracePeriodSeconds, TerminationGracePeriodSeconds: &gracePeriodSeconds,
}, },
} }
@@ -142,7 +142,7 @@ func (gp *GenericPool) genDeploymentSpec(env *fv1.Environment) (*appsv1.Deployme
}, },
Spec: apiv1.PodSpec{ Spec: apiv1.PodSpec{
Containers: []apiv1.Container{*container}, Containers: []apiv1.Container{*container},
ServiceAccountName: "fission-fetcher", ServiceAccountName: fv1.FissionFetcherSA,
// TerminationGracePeriodSeconds should be equal to the // TerminationGracePeriodSeconds should be equal to the
// sleep time of preStop to make sure that SIGTERM is sent // sleep time of preStop to make sure that SIGTERM is sent
// to pod after 6 mins. // to pod after 6 mins.
+1 -1
View File
@@ -32,7 +32,7 @@ func Start(ctx context.Context, logger *zap.Logger, routerUrl string) error {
return errors.Wrap(err, "failed to get fission or kubernetes client") return errors.Wrap(err, "failed to get fission or kubernetes client")
} }
err = crd.WaitForCRDs(ctx, fissionClient) err = crd.WaitForCRDs(ctx, logger, fissionClient)
if err != nil { if err != nil {
return errors.Wrap(err, "error waiting for CRDs") return errors.Wrap(err, "error waiting for CRDs")
} }
+1 -1
View File
@@ -154,7 +154,7 @@ func StartScalerManager(ctx context.Context, logger *zap.Logger, routerURL strin
if err != nil { if err != nil {
return err return err
} }
err = crd.WaitForCRDs(ctx, fissionClient) err = crd.WaitForCRDs(ctx, logger, fissionClient)
if err != nil { if err != nil {
return errors.Wrap(err, "error waiting for CRDs") return errors.Wrap(err, "error waiting for CRDs")
} }
+1 -1
View File
@@ -95,7 +95,7 @@ func Start(ctx context.Context, logger *zap.Logger, port int, executorURL string
logger.Fatal("error connecting to kubernetes API", zap.Error(err)) logger.Fatal("error connecting to kubernetes API", zap.Error(err))
} }
err = crd.WaitForCRDs(ctx, fissionClient) err = crd.WaitForCRDs(ctx, logger, fissionClient)
if err != nil { if err != nil {
logger.Fatal("error waiting for CRDs", zap.Error(err)) logger.Fatal("error waiting for CRDs", zap.Error(err))
} }
+1 -1
View File
@@ -32,7 +32,7 @@ func Start(ctx context.Context, logger *zap.Logger, routerUrl string) error {
return errors.Wrap(err, "failed to get fission or kubernetes client") return errors.Wrap(err, "failed to get fission or kubernetes client")
} }
err = crd.WaitForCRDs(ctx, fissionClient) err = crd.WaitForCRDs(ctx, logger, fissionClient)
if err != nil { if err != nil {
return errors.Wrap(err, "error waiting for CRDs") return errors.Wrap(err, "error waiting for CRDs")
} }
+1 -1
View File
@@ -53,7 +53,7 @@ echo "Successfully pull env and builder images"
export FAILURES=0 export FAILURES=0
main() { main() {
set +e set +e
export TIMEOUT=1200 # 20 minutes per test export TIMEOUT=900 # 15 minutes per test
# run tests without newdeploy in parallel. # run tests without newdeploy in parallel.
export JOBS=6 export JOBS=6
source $ROOT/test/run_test.sh \ source $ROOT/test/run_test.sh \