diff --git a/Makefile b/Makefile index 67fef20f..77508e88 100644 --- a/Makefile +++ b/Makefile @@ -35,6 +35,16 @@ IMAGE_TAG_BASE ?= stakater/ingressmonitorcontroller # BUNDLE_IMG defines the image:tag used for the bundle. # You can use it as an arg. (E.g make bundle-build BUNDLE_IMG=/:) BUNDLE_IMG ?= $(IMAGE_TAG_BASE)-bundle:v$(VERSION) +# BUNDLE_GEN_FLAGS are the flags passed to the operator-sdk generate bundle command +BUNDLE_GEN_FLAGS ?= -q --overwrite --version $(VERSION) $(BUNDLE_METADATA_OPTS) + +# USE_IMAGE_DIGESTS defines if images are resolved via tags or digests +# You can enable this value if you would like to use SHA Based Digests +# To enable set flag to true +USE_IMAGE_DIGESTS ?= false +ifeq ($(USE_IMAGE_DIGESTS), true) + BUNDLE_GEN_FLAGS += --use-image-digests +endif # Image URL to use all building/pushing image targets IMG ?= controller:latest @@ -50,6 +60,12 @@ GOBIN=$(shell go env GOPATH)/bin else GOBIN=$(shell go env GOBIN) endif +# Setting SHELL to bash allows bash commands to be executed by recipes. +# This is a requirement for 'setup-envtest.sh' in the test target. +# Options are set to exit when a recipe line exits non-zero or a piped command fails. +SHELL = /usr/bin/env bash -o pipefail +.SHELLFLAGS = -ec + all: build all: build @@ -83,8 +99,13 @@ fmt: ## Run go fmt against code. vet: ## Run go vet against code. go vet ./... +## ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary. +ENVTEST_ASSETS_DIR = $(shell pwd)/testbin +.PHONY: test test: generate fmt vet manifests - go test -v ./... -coverprofile cover.out + mkdir -p $(ENVTEST_ASSETS_DIR) + test -f $(ENVTEST_ASSETS_DIR)/setup-envtest.sh || curl -sSLo $(ENVTEST_ASSETS_DIR)/setup-envtest.sh https://raw.githubusercontent.com/kubernetes-sigs/controller-runtime/v0.6.3/hack/setup-envtest.sh + source $(ENVTEST_ASSETS_DIR)/setup-envtest.sh; fetch_envtest_tools $(ENVTEST_ASSETS_DIR); setup_envtest_env $(ENVTEST_ASSETS_DIR); go test ./... -count=1 -coverprofile cover.out ##@ Build @@ -100,20 +121,25 @@ docker-build: test ## Build docker image with the manager. docker-push: ## Push docker image with the manager. docker push ${IMG} + +ifndef ignore-not-found + ignore-not-found = false +endif + ##@ Deployment install: manifests kustomize ## Install CRDs into the K8s cluster specified in ~/.kube/config. $(KUSTOMIZE) build config/crd | kubectl apply -f - uninstall: manifests kustomize ## Uninstall CRDs from the K8s cluster specified in ~/.kube/config. - $(KUSTOMIZE) build config/crd | kubectl delete -f - + $(KUSTOMIZE) build config/crd | kubectl delete -f - --ignore-not-found=$(ignore-not-found) deploy: manifests kustomize ## Deploy controller to the K8s cluster specified in ~/.kube/config. cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG} $(KUSTOMIZE) build config/default | kubectl apply -f - undeploy: ## Undeploy controller from the K8s cluster specified in ~/.kube/config. - $(KUSTOMIZE) build config/default | kubectl delete -f - + $(KUSTOMIZE) build config/default | kubectl delete -f - --ignore-not-found=$(ignore-not-found) CONTROLLER_GEN = $(shell pwd)/bin/controller-gen @@ -122,7 +148,7 @@ controller-gen: ## Download controller-gen locally if necessary. KUSTOMIZE = $(shell pwd)/bin/kustomize kustomize: ## Download kustomize locally if necessary. - $(call go-get-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/v4@v4.5.4) + $(call go-get-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/v4@v4.5.7) # go-get-tool will 'go get' any package $2 and install it to $1. PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST)))) @@ -142,7 +168,7 @@ endef bundle: manifests kustomize ## Generate bundle manifests and metadata, then validate generated files. operator-sdk generate kustomize manifests -q cd config/manager && $(KUSTOMIZE) edit set image controller=$(IMG) - $(KUSTOMIZE) build config/manifests | operator-sdk generate bundle -q --overwrite --version $(VERSION) $(BUNDLE_METADATA_OPTS) + $(KUSTOMIZE) build config/manifests | operator-sdk generate bundle $(BUNDLE_GEN_FLAGS) operator-sdk bundle validate ./bundle .PHONY: bundle-build @@ -208,7 +234,7 @@ bump-chart-operator: sed -i "/^image:/{n;n;s/tag:.*/tag: v$(VERSION)/}" charts/ingressmonitorcontroller/values.yaml # Bump Chart -bump-chart: bump-chart-operator +bump-chart: bump-chart-operator generate-crds: controller-gen $(CONTROLLER_GEN) crd paths="./..." output:crd:artifacts:config=charts/ingressmonitorcontroller/crds diff --git a/bundle.Dockerfile b/bundle.Dockerfile index 7d347d8b..8b027e70 100644 --- a/bundle.Dockerfile +++ b/bundle.Dockerfile @@ -7,9 +7,9 @@ LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ LABEL operators.operatorframework.io.bundle.package.v1=ingressmonitorcontroller LABEL operators.operatorframework.io.bundle.channels.v1=alpha LABEL operators.operatorframework.io.bundle.channel.default.v1=alpha -LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.6.1+git -LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v3 +LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.18.0+git LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1 +LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v3 # Labels for testing. LABEL operators.operatorframework.io.test.mediatype.v1=scorecard+v1 diff --git a/bundle/manifests/endpointmonitor.stakater.com_endpointmonitors.yaml b/bundle/manifests/endpointmonitor.stakater.com_endpointmonitors.yaml index 7b4e22ae..4577fdd3 100644 --- a/bundle/manifests/endpointmonitor.stakater.com_endpointmonitors.yaml +++ b/bundle/manifests/endpointmonitor.stakater.com_endpointmonitors.yaml @@ -20,10 +20,14 @@ spec: description: EndpointMonitor is the Schema for the endpointmonitors API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object @@ -34,10 +38,12 @@ spec: description: Configuration for AppInsights Monitor Provider properties: frequency: - description: 'Sets how often the test should run from each test location. Possible values: `300,600,900` seconds' + description: 'Sets how often the test should run from each test + location. Possible values: `300,600,900` seconds' type: integer retryEnable: - description: 'If its `true`, falied test will be retry after a short interval. Possible values: `true, false`' + description: 'If its `true`, falied test will be retry after a + short interval. Possible values: `true, false`' type: boolean statusCode: description: Returned status code that is counted as a success @@ -62,7 +68,8 @@ spec: description: '`-` separated contact id''s (e.g. "1234567_8_9-9876543_2_1")' type: string alertIntegrations: - description: '`-` separated set list of integrations ids (e.g. "91166-12168")' + description: '`-` separated set list of integrations ids (e.g. + "91166-12168")' type: string basicAuthUser: description: Required for basic-authentication @@ -83,19 +90,29 @@ spec: description: How many failed check attempts before notifying type: integer shouldContain: - description: Set to text string that has to be present in the HTML code of the page + description: Set to text string that has to be present in the + HTML code of the page type: string sslDownDaysBefore: - description: Consider down prior to certificate expiring Select the number of days prior to your certificate expiry date that you want to consider the check down. At this day your check will be considered down and if applicable a down alert will be sent. + description: Consider down prior to certificate expiring Select + the number of days prior to your certificate expiry date that + you want to consider the check down. At this day your check + will be considered down and if applicable a down alert will + be sent. type: integer tags: - description: Comma separated set of tags to apply to check (e.g. "testing,aws") + description: Comma separated set of tags to apply to check (e.g. + "testing,aws") type: string teamAlertContacts: description: '`-` separated team id''s (e.g. "1234567_8_9-9876543_2_1")' type: string verifyCertificate: - description: Monitor SSL/TLS certificate Monitor the validity of your SSL/TLS certificate. With this enabled Uptime checks will be considered DOWN when the certificate becomes invalid or expires. SSL/TLS certificate monitoring is available for HTTP checks. + description: Monitor SSL/TLS certificate Monitor the validity + of your SSL/TLS certificate. With this enabled Uptime checks + will be considered DOWN when the certificate becomes invalid + or expires. SSL/TLS certificate monitoring is available for + HTTP checks. type: boolean type: object providers: @@ -140,7 +157,8 @@ spec: description: Enable Real Browser type: boolean statusCodes: - description: Comma seperated list of HTTP codes to trigger error on + description: Comma seperated list of HTTP codes to trigger error + on type: string testTags: description: Comma separated list of tags @@ -191,26 +209,32 @@ spec: description: Configuration for UptimeRobot Monitor Provider properties: alertContacts: - description: The uptimerobot alertContacts to be associated with this monitor + description: The uptimerobot alertContacts to be associated with + this monitor type: string customHTTPStatuses: - description: 'Defines which http status codes are treated as up or down For ex: 200:0_401:1_503:1 (to accept 200 as down and 401 and 503 as up)' + description: 'Defines which http status codes are treated as up + or down For ex: 200:0_401:1_503:1 (to accept 200 as down and + 401 and 503 as up)' type: string interval: description: The uptimerobot check interval in seconds minimum: 60 type: integer keywordExists: - description: Alert if value exist (yes) or doesn't exist (no) (Only if monitor-type is keyword) + description: Alert if value exist (yes) or doesn't exist (no) + (Only if monitor-type is keyword) enum: - "yes" - "no" type: string keywordValue: - description: keyword to check on URL (e.g.'search' or '404') (Only if monitor-type is keyword) + description: keyword to check on URL (e.g.'search' or '404') (Only + if monitor-type is keyword) type: string maintenanceWindows: - description: Specify maintenanceWindows i.e. once or recurring “do-not-monitor periods” + description: Specify maintenanceWindows i.e. once or recurring + “do-not-monitor periods” type: string monitorType: description: The uptimerobot monitor type (http or keyword) @@ -219,7 +243,8 @@ spec: - keyword type: string statusPages: - description: The uptimerobot public status page ID to add this monitor to + description: The uptimerobot public status page ID to add this + monitor to type: string type: object url: @@ -229,7 +254,8 @@ spec: description: URL to monitor from either an ingress or route reference properties: ingressRef: - description: IngressURLSource selects an Ingress to populate the URL with + description: IngressURLSource selects an Ingress to populate the + URL with properties: name: type: string @@ -237,7 +263,8 @@ spec: - name type: object routeRef: - description: RouteURLSource selects a Route to populate the URL with + description: RouteURLSource selects a Route to populate the URL + with properties: name: type: string diff --git a/bundle/manifests/ingressmonitorcontroller-controller-manager_v1_serviceaccount.yaml b/bundle/manifests/ingressmonitorcontroller-controller-manager_v1_serviceaccount.yaml deleted file mode 100644 index 3144a9ad..00000000 --- a/bundle/manifests/ingressmonitorcontroller-controller-manager_v1_serviceaccount.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - creationTimestamp: null - name: ingressmonitorcontroller-controller-manager diff --git a/bundle/manifests/ingressmonitorcontroller.clusterserviceversion.yaml b/bundle/manifests/ingressmonitorcontroller.clusterserviceversion.yaml index 46fbc00e..48be8c13 100644 --- a/bundle/manifests/ingressmonitorcontroller.clusterserviceversion.yaml +++ b/bundle/manifests/ingressmonitorcontroller.clusterserviceversion.yaml @@ -16,9 +16,9 @@ metadata: } ] capabilities: Basic Install - operators.operatorframework.io/builder: operator-sdk-v1.6.1+git + operators.operatorframework.io/builder: operator-sdk-v1.18.0+git operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 - name: ingressmonitorcontroller.v2.1.19 + name: ingressmonitorcontroller.v0.0.1 namespace: placeholder spec: apiservicedefinitions: {} @@ -29,7 +29,8 @@ spec: kind: EndpointMonitor name: endpointmonitors.endpointmonitor.stakater.com version: v1alpha1 - description: IngressMonitorController automates the process of creating monitors for routes/ingress + description: IngressMonitorController automates the process of creating monitors + for routes/ingress displayName: Ingress Monitor Controller icon: - base64data: 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 @@ -112,7 +113,9 @@ spec: - create serviceAccountName: ingressmonitorcontroller-controller-manager deployments: - - name: ingressmonitorcontroller-controller-manager + - label: + control-plane: controller-manager + name: ingressmonitorcontroller-controller-manager spec: replicas: 1 selector: @@ -129,20 +132,26 @@ spec: - --secure-listen-address=0.0.0.0:8443 - --upstream=http://127.0.0.1:8080/ - --logtostderr=true - - --v=10 + - --v=0 image: gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0 name: kube-rbac-proxy ports: - containerPort: 8443 name: https - resources: {} + resources: + limits: + cpu: 10m + memory: 128Mi + requests: + cpu: 5m + memory: 64Mi - args: - --health-probe-bind-address=:8081 - --metrics-bind-address=127.0.0.1:8080 - --leader-elect command: - /manager - image: stakater/ingressmonitorcontroller:v2.1.19 + image: controller:latest livenessProbe: httpGet: path: /healthz @@ -158,11 +167,11 @@ spec: periodSeconds: 10 resources: limits: - cpu: 100m - memory: 30Mi + cpu: 50m + memory: 500Mi requests: - cpu: 100m - memory: 20Mi + cpu: 5m + memory: 64Mi securityContext: allowPrivilegeEscalation: false securityContext: @@ -173,9 +182,19 @@ spec: - rules: - apiGroups: - "" - - coordination.k8s.io resources: - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - coordination.k8s.io + resources: - leases verbs: - get @@ -221,8 +240,10 @@ spec: - name: Ingressmonitorcontroller url: https://ingressmonitorcontroller.domain maintainers: - - email: waleed@stakater.com - name: ahmedwaleedmalik + - email: muneeb@stakater.com + name: muneebAijaz + - email: hussnain@stakater.com + name: hussnainahmad - email: hello@stakater.com name: stakater maturity: alpha @@ -230,4 +251,4 @@ spec: provider: name: stakater url: https://stakater.com - version: 2.1.19 + version: 0.0.1 diff --git a/bundle/metadata/annotations.yaml b/bundle/metadata/annotations.yaml index 8122bca5..ce33f84c 100644 --- a/bundle/metadata/annotations.yaml +++ b/bundle/metadata/annotations.yaml @@ -6,9 +6,9 @@ annotations: operators.operatorframework.io.bundle.package.v1: ingressmonitorcontroller operators.operatorframework.io.bundle.channels.v1: alpha operators.operatorframework.io.bundle.channel.default.v1: alpha - operators.operatorframework.io.metrics.builder: operator-sdk-v1.6.1+git - operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v3 + operators.operatorframework.io.metrics.builder: operator-sdk-v1.18.0+git operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 + operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v3 # Annotations for testing. operators.operatorframework.io.test.mediatype.v1: scorecard+v1 diff --git a/bundle/tests/scorecard/config.yaml b/bundle/tests/scorecard/config.yaml index 6ccb4ebf..5710c6c0 100644 --- a/bundle/tests/scorecard/config.yaml +++ b/bundle/tests/scorecard/config.yaml @@ -12,6 +12,9 @@ stages: labels: suite: basic test: basic-check-spec-test + storage: + spec: + mountPath: {} - entrypoint: - scorecard-test - olm-bundle-validation @@ -19,6 +22,9 @@ stages: labels: suite: olm test: olm-bundle-validation-test + storage: + spec: + mountPath: {} - entrypoint: - scorecard-test - olm-crds-have-validation @@ -26,6 +32,9 @@ stages: labels: suite: olm test: olm-crds-have-validation-test + storage: + spec: + mountPath: {} - entrypoint: - scorecard-test - olm-crds-have-resources @@ -33,6 +42,9 @@ stages: labels: suite: olm test: olm-crds-have-resources-test + storage: + spec: + mountPath: {} - entrypoint: - scorecard-test - olm-spec-descriptors @@ -40,6 +52,9 @@ stages: labels: suite: olm test: olm-spec-descriptors-test + storage: + spec: + mountPath: {} - entrypoint: - scorecard-test - olm-status-descriptors @@ -47,3 +62,9 @@ stages: labels: suite: olm test: olm-status-descriptors-test + storage: + spec: + mountPath: {} +storage: + spec: + mountPath: {} diff --git a/charts/ingressmonitorcontroller/templates/deployment.yaml b/charts/ingressmonitorcontroller/templates/deployment.yaml index aa22c902..bc566a27 100644 --- a/charts/ingressmonitorcontroller/templates/deployment.yaml +++ b/charts/ingressmonitorcontroller/templates/deployment.yaml @@ -33,7 +33,7 @@ spec: - --secure-listen-address=0.0.0.0:8443 - --upstream=http://127.0.0.1:8080/ - --logtostderr=true - - --v=10 + - --v=0 image: {{ printf "%s:%s" .image.repository .image.tag | default "gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0" | quote }} imagePullPolicy: {{ .image.pullPolicy | quote }} name: kube-rbac-proxy diff --git a/config/default/manager_auth_proxy_patch.yaml b/config/default/manager_auth_proxy_patch.yaml index a224be19..68c97769 100644 --- a/config/default/manager_auth_proxy_patch.yaml +++ b/config/default/manager_auth_proxy_patch.yaml @@ -15,12 +15,26 @@ spec: - "--secure-listen-address=0.0.0.0:8443" - "--upstream=http://127.0.0.1:8080/" - "--logtostderr=true" - - "--v=10" + - "--v=0" ports: - containerPort: 8443 name: https + resources: + limits: + cpu: 10m + memory: 128Mi + requests: + cpu: 5m + memory: 64Mi - name: manager args: - "--health-probe-bind-address=:8081" - "--metrics-bind-address=127.0.0.1:8080" - "--leader-elect" + resources: + limits: + cpu: 50m + memory: 500Mi + requests: + cpu: 5m + memory: 64Mi diff --git a/config/manifests/bases/ingressmonitorcontroller.clusterserviceversion.yaml b/config/manifests/bases/ingressmonitorcontroller.clusterserviceversion.yaml index 52c41f3e..485fdad4 100644 --- a/config/manifests/bases/ingressmonitorcontroller.clusterserviceversion.yaml +++ b/config/manifests/bases/ingressmonitorcontroller.clusterserviceversion.yaml @@ -15,7 +15,8 @@ spec: kind: EndpointMonitor name: endpointmonitors.endpointmonitor.stakater.com version: v1alpha1 - description: IngressMonitorController automates the process of creating monitors for routes/ingress + description: IngressMonitorController automates the process of creating monitors + for routes/ingress displayName: Ingress Monitor Controller icon: - base64data: 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 @@ -44,8 +45,10 @@ spec: - name: Ingressmonitorcontroller url: https://ingressmonitorcontroller.domain maintainers: - - email: waleed@stakater.com - name: ahmedwaleedmalik + - email: muneeb@stakater.com + name: muneebAijaz + - email: hussnain@stakater.com + name: hussnainahmad - email: hello@stakater.com name: stakater maturity: alpha diff --git a/config/rbac/leader_election_role.yaml b/config/rbac/leader_election_role.yaml index 6334cc51..4190ec80 100644 --- a/config/rbac/leader_election_role.yaml +++ b/config/rbac/leader_election_role.yaml @@ -6,9 +6,19 @@ metadata: rules: - apiGroups: - "" - - coordination.k8s.io resources: - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - coordination.k8s.io + resources: - leases verbs: - get