diff --git a/deploy/00-namespace.yaml b/deploy/00-namespace.yaml new file mode 100644 index 00000000000..e437703244a --- /dev/null +++ b/deploy/00-namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: keda diff --git a/deploy/service_account.yaml b/deploy/01-service_account.yaml similarity index 100% rename from deploy/service_account.yaml rename to deploy/01-service_account.yaml diff --git a/deploy/role.yaml b/deploy/10-cluster_role.yaml similarity index 76% rename from deploy/role.yaml rename to deploy/10-cluster_role.yaml index fbab7bfb1c0..d4647b8fba3 100644 --- a/deploy/role.yaml +++ b/deploy/10-cluster_role.yaml @@ -51,16 +51,3 @@ rules: - horizontalpodautoscalers verbs: - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - creationTimestamp: null - name: keda-external-metrics-reader -rules: -- apiGroups: - - "external.metrics.k8s.io" - resources: - - '*' - verbs: - - list \ No newline at end of file diff --git a/deploy/11-role_binding.yaml b/deploy/11-role_binding.yaml new file mode 100644 index 00000000000..9906633cf80 --- /dev/null +++ b/deploy/11-role_binding.yaml @@ -0,0 +1,12 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: keda-operator +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: keda-operator +subjects: +- kind: ServiceAccount + name: keda-operator + namespace: keda \ No newline at end of file diff --git a/deploy/12-operator.yaml b/deploy/12-operator.yaml new file mode 100644 index 00000000000..c11c39cf90b --- /dev/null +++ b/deploy/12-operator.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: keda-operator + name: keda-operator + namespace: keda +spec: + replicas: 1 + selector: + matchLabels: + app: keda-operator + template: + metadata: + labels: + app: keda-operator + name: keda-operator + spec: + serviceAccountName: keda-operator + containers: + - name: keda-operator + image: docker.io/kedacore/keda:1.1.0 + command: + - keda + args: + - '--zap-level=info' + imagePullPolicy: Always + env: + - name: WATCH_NAMESPACE + value: "" + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: OPERATOR_NAME + value: "keda-operator" \ No newline at end of file diff --git a/deploy/20-metrics-cluster_role.yaml b/deploy/20-metrics-cluster_role.yaml new file mode 100644 index 00000000000..f19f8690db3 --- /dev/null +++ b/deploy/20-metrics-cluster_role.yaml @@ -0,0 +1,12 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + creationTimestamp: null + name: keda-external-metrics-reader +rules: +- apiGroups: + - "external.metrics.k8s.io" + resources: + - '*' + verbs: + - '*' \ No newline at end of file diff --git a/deploy/role_binding.yaml b/deploy/21-metrics-role_binding.yaml similarity index 77% rename from deploy/role_binding.yaml rename to deploy/21-metrics-role_binding.yaml index 661adf68742..151e54572c4 100644 --- a/deploy/role_binding.yaml +++ b/deploy/21-metrics-role_binding.yaml @@ -1,18 +1,5 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding -metadata: - name: keda-operator -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: keda-operator -subjects: -- kind: ServiceAccount - name: keda-operator - namespace: keda ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding metadata: name: keda:system:auth-delegator roleRef: diff --git a/deploy/operator.yaml b/deploy/22-metrics-deployment.yaml similarity index 59% rename from deploy/operator.yaml rename to deploy/22-metrics-deployment.yaml index 3f66ab3dcf6..2c88f1a7380 100644 --- a/deploy/operator.yaml +++ b/deploy/22-metrics-deployment.yaml @@ -2,38 +2,22 @@ apiVersion: apps/v1 kind: Deployment metadata: labels: - app: keda-operator - name: keda-operator + app: keda-metrics-apiserver + name: keda-metrics-apiserver namespace: keda spec: replicas: 1 selector: matchLabels: - app: keda-operator + app: keda-metrics-apiserver template: metadata: labels: - app: keda-operator - name: keda-operator + app: keda-metrics-apiserver + name: keda-metrics-apiserver spec: serviceAccountName: keda-operator containers: - - name: keda-operator - image: docker.io/kedacore/keda:1.1.0 - command: - - keda - args: - - '--zap-level=info' - imagePullPolicy: Always - env: - - name: WATCH_NAMESPACE - value: "" - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: OPERATOR_NAME - value: "keda-operator" - name: keda-metrics-apiserver image: docker.io/kedacore/keda-metrics-adapter:1.1.0 imagePullPolicy: Always diff --git a/deploy/service.yaml b/deploy/23-metrics-service.yaml similarity index 75% rename from deploy/service.yaml rename to deploy/23-metrics-service.yaml index 15fa828159f..6d5abe4cfef 100644 --- a/deploy/service.yaml +++ b/deploy/23-metrics-service.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: - name: keda-operator + name: keda-metrics-apiserver namespace: keda spec: ports: @@ -13,4 +13,4 @@ spec: port: 80 targetPort: 8080 selector: - app: keda-operator \ No newline at end of file + app: keda-metrics-apiserver \ No newline at end of file diff --git a/deploy/api_service.yaml b/deploy/24-metrics-api_service.yaml similarity index 89% rename from deploy/api_service.yaml rename to deploy/24-metrics-api_service.yaml index 3fe43328fee..58f34297f5f 100644 --- a/deploy/api_service.yaml +++ b/deploy/24-metrics-api_service.yaml @@ -4,7 +4,7 @@ metadata: name: v1beta1.external.metrics.k8s.io spec: service: - name: keda-operator + name: keda-metrics-apiserver namespace: keda group: external.metrics.k8s.io version: v1beta1 diff --git a/tests/cleanup.test.ts b/tests/cleanup.test.ts index 6907021f52a..b3bf89a3280 100644 --- a/tests/cleanup.test.ts +++ b/tests/cleanup.test.ts @@ -10,13 +10,14 @@ test('Remove Keda', t => { const resources = [ 'apiservice.apiregistration.k8s.io/v1beta1.external.metrics.k8s.io', 'deployment.apps/keda-operator', + 'deployment.apps/keda-metrics-apiserver', 'clusterrole.rbac.authorization.k8s.io/keda-operator', 'clusterrole.rbac.authorization.k8s.io/keda-external-metrics-reader', 'clusterrolebinding.rbac.authorization.k8s.io/keda-operator', 'clusterrolebinding.rbac.authorization.k8s.io/keda:system:auth-delegator', 'rolebinding.rbac.authorization.k8s.io/keda-auth-reader', 'clusterrolebinding.rbac.authorization.k8s.io/keda-hpa-controller-external-metrics', - 'service/keda-operator', + 'service/keda-metrics-apiserver', 'serviceaccount/keda-operator', ] diff --git a/tests/setup.test.ts b/tests/setup.test.ts index 0e2a76d6752..134807b46f7 100644 --- a/tests/setup.test.ts +++ b/tests/setup.test.ts @@ -53,43 +53,58 @@ test.serial('verifyKeda', t => { const adapterImage = process.env.IMAGE_ADAPTER || 'docker.io/kedacore/keda-metrics-adapter:master' let result = sh.exec('kubectl scale deployment.apps/keda-operator --namespace keda --replicas=0') if (result.code !== 0) { - t.fail(`error scaling keda to 0. ${result}`) + t.fail(`error scaling keda operator to 0. ${result}`) + } + result = sh.exec( + 'kubectl scale deployment.apps/keda-metrics-apiserver --namespace keda --replicas=0' + ) + if (result.code !== 0) { + t.fail(`error scaling keda metrics server to 0. ${result}`) } result = sh.exec( `kubectl set image deployment.apps/keda-operator --namespace keda keda-operator=${controllerImage}` ) if (result.code !== 0) { - t.fail(`error updating keda image. ${result}`) + t.fail(`error updating keda operator image. ${result}`) } result = sh.exec( - `kubectl set image deployment.apps/keda-operator --namespace keda keda-metrics-apiserver=${adapterImage}` + `kubectl set image deployment.apps/keda-metrics-apiserver --namespace keda keda-metrics-apiserver=${adapterImage}` ) if (result.code !== 0) { - t.fail(`error updating keda image. ${result}`) + t.fail(`error updating keda metrics server image. ${result}`) } result = sh.exec('kubectl scale deployment.apps/keda-operator --namespace keda --replicas=1') if (result.code !== 0) { - t.fail(`error scaling keda to 1. ${result}`) + t.fail(`error scaling keda operator to 1. ${result}`) + } + + result = sh.exec('kubectl scale deployment.apps/keda-metrics-apiserver --namespace keda --replicas=1') + if (result.code !== 0) { + t.fail(`error scaling keda metrics server to 1. ${result}`) } let success = false for (let i = 0; i < 20; i++) { - let result = sh.exec( + let resultOperator = sh.exec( 'kubectl get deployment.apps/keda-operator --namespace keda -o jsonpath="{.status.readyReplicas}"' ) - const parsed = parseInt(result.stdout, 10) - if (isNaN(parsed) || parsed != 1) { + let resultMetrics = sh.exec( + 'kubectl get deployment.apps/keda-metrics-apiserver --namespace keda -o jsonpath="{.status.readyReplicas}"' + ) + const parsedOperator = parseInt(resultOperator.stdout, 10) + const parsedMetrics = parseInt(resultMetrics.stdout, 10) + if (isNaN(parsedOperator) || parsedOperator != 1 || isNaN(parsedMetrics) || parsedMetrics != 1) { t.log(`Keda is not ready. sleeping`) sh.exec('sleep 1s') - } else if (parsed == 1) { - t.log('keda is running 1 pod') + } else if (parsedOperator == 1 && parsedMetrics == 1) { + t.log('keda is running 1 pod for operator and 1 pod for metrics server') success = true break } } - t.true(success, 'expected keda deployment to start 1 pod successfully with kedacore/keda:master') + t.true(success, 'expected keda deployments to start 2 pods successfully') })