From f14158daf024e0495cb68c88a59753eeed9df24d Mon Sep 17 00:00:00 2001 From: Augustin Husson Date: Mon, 2 Dec 2024 18:05:16 +0100 Subject: [PATCH] build and release catalog and bundle in ci/cd Signed-off-by: Augustin Husson --- .github/workflows/ci.yaml | 10 +- .gitignore | 1 + Makefile | 5 +- ...er-manager-metrics-service_v1_service.yaml | 23 - ...c.authorization.k8s.io_v1_clusterrole.yaml | 17 - ...perses-operator.clusterserviceversion.yaml | 1302 ----------------- bundle/manifests/perses.dev_perses.yaml | 997 ------------- .../perses.dev_persesdashboards.yaml | 269 ---- .../perses.dev_persesdatasources.yaml | 137 -- 9 files changed, 10 insertions(+), 2751 deletions(-) delete mode 100644 bundle/manifests/perses-operator-controller-manager-metrics-service_v1_service.yaml delete mode 100644 bundle/manifests/perses-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml delete mode 100644 bundle/manifests/perses-operator.clusterserviceversion.yaml delete mode 100644 bundle/manifests/perses.dev_perses.yaml delete mode 100644 bundle/manifests/perses.dev_persesdashboards.yaml delete mode 100644 bundle/manifests/perses.dev_persesdatasources.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 255d742..ac417c0 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -49,13 +49,19 @@ jobs: distribution: goreleaser install-only: true - name: Build Go binaries and docker images - run: make cross-build + run: | + make cross-build + make bundle-build - name: Publish Release and binaries ## This step will only run when a new tag is pushed. ## It will build the Go binaries and the docker images and then publish: ## - the GitHub release with the archive built ## - docker images on the different docker registry selected if: ${{ github.event_name == 'push' && startsWith(github.ref_name, 'v') }} - run: make cross-release + run: | + make cross-release + make bundle-push + make catalog-build + make catalog-push env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index fa5fb4c..b5f4f85 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,4 @@ Dockerfile.cross /.github/perses-ci/ bundle_tmp* +/bundle/manifests/ diff --git a/Makefile b/Makefile index d37028f..1d159d5 100644 --- a/Makefile +++ b/Makefile @@ -256,7 +256,7 @@ bundle: manifests kustomize operator-sdk ## Generate bundle manifests and metada $(OPERATOR_SDK) bundle validate ./bundle .PHONY: bundle-build -bundle-build: ## Build the bundle image. +bundle-build: generate bundle ## Build the bundle image. $(CONTAINER_RUNTIME) build -f bundle.Dockerfile -t $(BUNDLE_IMG) . .PHONY: bundle-push @@ -330,6 +330,3 @@ cross-build: generate-goreleaser manifests generate fmt vet ## Cross build binar .PHONY: cross-release cross-release: generate-goreleaser manifests generate fmt vet goreleaser release --clean - -.PHONY: release -release: generate bundle bundle-build bundle-push catalog-build catalog-push diff --git a/bundle/manifests/perses-operator-controller-manager-metrics-service_v1_service.yaml b/bundle/manifests/perses-operator-controller-manager-metrics-service_v1_service.yaml deleted file mode 100644 index afb1b11..0000000 --- a/bundle/manifests/perses-operator-controller-manager-metrics-service_v1_service.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - creationTimestamp: null - labels: - app.kubernetes.io/component: kube-rbac-proxy - app.kubernetes.io/created-by: perses-operator - app.kubernetes.io/instance: controller-manager-metrics-service - app.kubernetes.io/managed-by: kustomize - app.kubernetes.io/name: service - app.kubernetes.io/part-of: perses-operator - control-plane: controller-manager - name: perses-operator-controller-manager-metrics-service -spec: - ports: - - name: https - port: 8443 - protocol: TCP - targetPort: https - selector: - control-plane: controller-manager -status: - loadBalancer: {} diff --git a/bundle/manifests/perses-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml b/bundle/manifests/perses-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml deleted file mode 100644 index b3763bc..0000000 --- a/bundle/manifests/perses-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - creationTimestamp: null - labels: - app.kubernetes.io/component: kube-rbac-proxy - app.kubernetes.io/created-by: perses-operator - app.kubernetes.io/instance: metrics-reader - app.kubernetes.io/managed-by: kustomize - app.kubernetes.io/name: clusterrole - app.kubernetes.io/part-of: perses-operator - name: perses-operator-metrics-reader -rules: -- nonResourceURLs: - - /metrics - verbs: - - get diff --git a/bundle/manifests/perses-operator.clusterserviceversion.yaml b/bundle/manifests/perses-operator.clusterserviceversion.yaml deleted file mode 100644 index 8517c24..0000000 --- a/bundle/manifests/perses-operator.clusterserviceversion.yaml +++ /dev/null @@ -1,1302 +0,0 @@ -apiVersion: operators.coreos.com/v1alpha1 -kind: ClusterServiceVersion -metadata: - annotations: - alm-examples: |- - [ - { - "apiVersion": "perses.dev/v1alpha1", - "kind": "Perses", - "metadata": { - "labels": { - "app.kubernetes.io/created-by": "perses-operator", - "app.kubernetes.io/instance": "perses-sample", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "perses", - "app.kubernetes.io/part-of": "perses-operator" - }, - "name": "perses-sample" - }, - "spec": { - "config": { - "database": { - "file": { - "extension": "yaml", - "folder": "/etc/perses/storage" - } - }, - "ephemeral_dashboard": { - "cleanup_interval": "1s", - "enable": false - }, - "schemas": { - "datasources_path": "/etc/perses/cue/schemas/datasources", - "panels_path": "/etc/perses/cue/schemas/panels", - "queries_path": "/etc/perses/cue/schemas/queries", - "variables_path": "/etc/perses/cue/schemas/variables" - } - }, - "containerPort": 8080 - } - }, - { - "apiVersion": "perses.dev/v1alpha1", - "kind": "PersesDashboard", - "metadata": { - "labels": { - "app.kubernetes.io/created-by": "perses-operator", - "app.kubernetes.io/instance": "perses-dashboard-sample", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "perses-dashboard", - "app.kubernetes.io/part-of": "perses-operator" - }, - "name": "perses-dashboard-sample" - }, - "spec": { - "datasources": { - "PrometheusLocal": { - "default": false, - "plugin": { - "kind": "PrometheusDatasource", - "spec": { - "proxy": { - "kind": "HTTPProxy", - "spec": { - "url": "http://localhost:9090" - } - } - } - } - } - }, - "display": { - "description": "This is a sample dashboard", - "name": "Perses Dashboard Sample" - }, - "duration": "5m", - "layouts": [ - { - "kind": "Grid", - "spec": { - "display": { - "collapse": { - "open": true - }, - "title": "Row 1" - }, - "items": [ - { - "content": { - "$ref": "#/spec/panels/statRAM" - }, - "height": 3, - "width": 2, - "x": 0, - "y": 0 - }, - { - "content": { - "$ref": "#/spec/panels/statTotalRAM" - }, - "height": 3, - "width": 2, - "x": 0, - "y": 4 - }, - { - "content": { - "$ref": "#/spec/panels/statMd" - }, - "height": 6, - "width": 4, - "x": 2, - "y": 0 - }, - { - "content": { - "$ref": "#/spec/panels/statLg" - }, - "height": 6, - "width": 10, - "x": 6, - "y": 0 - }, - { - "content": { - "$ref": "#/spec/panels/gaugeFormatTest" - }, - "height": 6, - "width": 4, - "x": 16, - "y": 0 - }, - { - "content": { - "$ref": "#/spec/panels/gaugeRAM" - }, - "height": 6, - "width": 4, - "x": 20, - "y": 0 - } - ] - } - }, - { - "kind": "Grid", - "spec": { - "display": { - "collapse": { - "open": true - }, - "title": "Row 2" - }, - "items": [ - { - "content": { - "$ref": "#/spec/panels/legendEx" - }, - "height": 6, - "width": 12, - "x": 0, - "y": 0 - }, - { - "content": { - "$ref": "#/spec/panels/basicEx" - }, - "height": 6, - "width": 12, - "x": 12, - "y": 0 - } - ] - } - }, - { - "kind": "Grid", - "spec": { - "display": { - "collapse": { - "open": false - }, - "title": "Row 3" - }, - "items": [ - { - "content": { - "$ref": "#/spec/panels/cpuGauge" - }, - "height": 6, - "width": 24, - "x": 0, - "y": 0 - }, - { - "content": { - "$ref": "#/spec/panels/cpuLine" - }, - "height": 8, - "width": 12, - "x": 0, - "y": 6 - }, - { - "content": { - "$ref": "#/spec/panels/defaultTimeSeriesChart" - }, - "height": 8, - "width": 12, - "x": 12, - "y": 0 - } - ] - } - } - ], - "panels": { - "basicEx": { - "kind": "Panel", - "spec": { - "display": { - "name": "Single Query" - }, - "plugin": { - "kind": "TimeSeriesChart", - "spec": { - "legend": { - "position": "right" - }, - "yAxis": { - "format": { - "unit": "decimal" - } - } - } - }, - "queries": [ - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "1 - node_filesystem_free_bytes{job='$job',instance=~'$instance',fstype!=\"rootfs\",mountpoint!~\"/(run|var).*\",mountpoint!=\"\"} / node_filesystem_size_bytes{job='$job',instance=~'$instance'}", - "seriesNameFormat": "Node memory - {{device}} {{instance}}" - } - } - } - } - ] - } - }, - "cpuGauge": { - "kind": "Panel", - "spec": { - "display": { - "description": "This is a gauge chart test", - "name": "CPU - Gauge (Multi Series)" - }, - "plugin": { - "kind": "GaugeChart", - "spec": { - "calculation": "last-number", - "format": { - "unit": "percent-decimal" - }, - "thresholds": { - "steps": [ - { - "value": 0.2 - }, - { - "value": 0.35 - } - ] - } - } - }, - "queries": [ - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "avg without (cpu)(rate(node_cpu_seconds_total{job='$job',instance=~'$instance',mode!=\"nice\",mode!=\"steal\",mode!=\"irq\"}[$interval]))", - "seriesNameFormat": "{{mode}} mode - {{job}} {{instance}}" - } - } - } - } - ] - } - }, - "cpuLine": { - "kind": "Panel", - "spec": { - "display": { - "description": "This is a line chart test", - "name": "CPU - Line (Multi Series)" - }, - "plugin": { - "kind": "TimeSeriesChart", - "spec": { - "legend": { - "position": "bottom" - }, - "thresholds": { - "steps": [ - { - "value": 0.2 - }, - { - "value": 0.35 - } - ] - }, - "yAxis": { - "format": { - "decimalPlaces": 0, - "unit": "percent-decimal" - }, - "label": "CPU Label", - "show": false - } - } - }, - "queries": [ - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "avg without (cpu)(rate(node_cpu_seconds_total{job='$job',instance=~'$instance',mode!=\"nice\",mode!=\"steal\",mode!=\"irq\"}[$interval]))", - "seriesNameFormat": "{{mode}} mode - {{job}} {{instance}}" - } - } - } - } - ] - } - }, - "defaultTimeSeriesChart": { - "kind": "Panel", - "spec": { - "display": { - "name": "Default Time Series Panel" - }, - "plugin": { - "kind": "TimeSeriesChart", - "spec": {} - }, - "queries": [ - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "up" - } - } - } - } - ] - } - }, - "gaugeAltEx": { - "kind": "Panel", - "spec": { - "display": { - "description": "GaugeChart description text", - "name": "Gauge Alt Ex" - }, - "plugin": { - "kind": "GaugeChart", - "spec": { - "calculation": "last-number", - "format": { - "decimalPlaces": 1, - "unit": "percent-decimal" - }, - "thresholds": { - "steps": [ - { - "name": "Alert: Warning condition example", - "value": 0.5 - }, - { - "name": "Alert: Critical condition example", - "value": 0.75 - } - ] - } - } - }, - "queries": [ - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "node_load15{instance=~'$instance',job='$job'}" - } - } - } - } - ] - } - }, - "gaugeEx": { - "kind": "Panel", - "spec": { - "display": { - "description": "This is a gauge chart", - "name": "Gauge Ex" - }, - "plugin": { - "kind": "GaugeChart", - "spec": { - "calculation": "last-number", - "format": { - "unit": "percent" - }, - "thresholds": { - "steps": [ - { - "value": 85 - }, - { - "value": 95 - } - ] - } - } - }, - "queries": [ - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "(((count(count(node_cpu_seconds_total{job='$job',instance=~'$instance'}) by (cpu))) - avg(sum by (mode)(rate(node_cpu_seconds_total{mode=\"idle\",job='$job',instance=~'$instance'}[$interval])))) * 100) / count(count(node_cpu_seconds_total{job='$job',instance=~'$instance'}) by (cpu))" - } - } - } - } - ] - } - }, - "gaugeFormatTest": { - "kind": "Panel", - "spec": { - "display": { - "name": "Gauge Format Test" - }, - "plugin": { - "kind": "GaugeChart", - "spec": { - "calculation": "last-number", - "format": { - "unit": "bytes" - }, - "max": 95000000, - "thresholds": { - "steps": [ - { - "value": 71000000 - }, - { - "value": 82000000 - } - ] - } - } - }, - "queries": [ - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "node_time_seconds{job='$job',instance=~'$instance'} - node_boot_time_seconds{job='$job',instance=~'$instance'}" - } - } - } - } - ] - } - }, - "gaugeRAM": { - "kind": "Panel", - "spec": { - "display": { - "description": "This is a stat chart", - "name": "RAM Used" - }, - "plugin": { - "kind": "GaugeChart", - "spec": { - "calculation": "last-number", - "format": { - "unit": "percent" - }, - "thresholds": { - "steps": [ - { - "value": 85 - }, - { - "value": 95 - } - ] - } - } - }, - "queries": [ - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "100 - ((node_memory_MemAvailable_bytes{job='$job',instance=~'$instance'} * 100) / node_memory_MemTotal_bytes{job='$job',instance=~'$instance'})" - } - } - } - } - ] - } - }, - "legendEx": { - "kind": "Panel", - "spec": { - "display": { - "name": "Legend Example" - }, - "plugin": { - "kind": "TimeSeriesChart", - "spec": { - "legend": { - "position": "bottom" - }, - "yAxis": { - "format": { - "shortValues": true, - "unit": "bytes" - }, - "show": true - } - } - }, - "queries": [ - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "node_memory_MemTotal_bytes{job='$job',instance=~'$instance'} - node_memory_MemFree_bytes{job='$job',instance=~'$instance'} - node_memory_Buffers_bytes{job='$job',instance=~'$instance'} - node_memory_Cached_bytes{job='$job',instance=~'$instance'}", - "seriesNameFormat": "Node memory total" - } - } - } - }, - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "node_memory_Buffers_bytes{job='$job',instance=~'$instance'}", - "seriesNameFormat": "Memory (buffers) - {{instance}}" - } - } - } - }, - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "node_memory_Cached_bytes{job='$job',instance=~'$instance'}", - "seriesNameFormat": "Cached Bytes" - } - } - } - }, - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "node_memory_MemFree_bytes{job='$job',instance=~'$instance'}", - "seriesNameFormat": "MemFree Bytes" - } - } - } - } - ] - } - }, - "seriesTest": { - "kind": "Panel", - "spec": { - "display": { - "description": "This is a line chart", - "name": "~130 Series" - }, - "plugin": { - "kind": "TimeSeriesChart", - "spec": { - "yAxis": { - "format": { - "shortValues": true, - "unit": "bytes" - } - } - } - }, - "queries": [ - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "rate(caddy_http_response_duration_seconds_sum[$interval])" - } - } - } - } - ] - } - }, - "statLg": { - "kind": "Panel", - "spec": { - "display": { - "description": "This is a stat chart", - "name": "Stat Lg" - }, - "plugin": { - "kind": "StatChart", - "spec": { - "calculation": "mean", - "format": { - "unit": "percent" - } - } - }, - "queries": [ - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "(((count(count(node_cpu_seconds_total{job='$job',instance=~'$instance'}) by (cpu))) - avg(sum by (mode)(rate(node_cpu_seconds_total{mode=\"idle\",job='$job',instance=~'$instance'}[$interval])))) * 100) / count(count(node_cpu_seconds_total{job='$job',instance=~'$instance'}) by (cpu))" - } - } - } - } - ] - } - }, - "statMd": { - "kind": "Panel", - "spec": { - "display": { - "name": "Stat Md" - }, - "plugin": { - "kind": "StatChart", - "spec": { - "calculation": "sum", - "format": { - "decimalPlaces": 2, - "shortValues": true, - "unit": "decimal" - }, - "sparkline": { - "color": "#e65013", - "width": 1.5 - } - } - }, - "queries": [ - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "avg(node_load15{job='node',instance=~'$instance'}) / count(count(node_cpu_seconds_total{job='node',instance=~'$instance'}) by (cpu)) * 100" - } - } - } - } - ] - } - }, - "statRAM": { - "kind": "Panel", - "spec": { - "display": { - "description": "This is a stat chart", - "name": "RAM Used" - }, - "plugin": { - "kind": "StatChart", - "spec": { - "calculation": "last-number", - "format": { - "unit": "percent" - } - } - }, - "queries": [ - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "100 - ((node_memory_MemAvailable_bytes{job='$job',instance=~'$instance'} * 100) / node_memory_MemTotal_bytes{job='$job',instance=~'$instance'})" - } - } - } - } - ] - } - }, - "statSm": { - "kind": "Panel", - "spec": { - "display": { - "name": "Stat Sm" - }, - "plugin": { - "kind": "StatChart", - "spec": { - "calculation": "mean", - "format": { - "decimalPlaces": 1, - "shortValues": true, - "unit": "decimal" - } - } - }, - "queries": [ - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "node_time_seconds{job='$job',instance=~'$instance'} - node_boot_time_seconds{job='$job',instance=~'$instance'}" - } - } - } - } - ] - } - }, - "statTotalRAM": { - "kind": "Panel", - "spec": { - "display": { - "description": "This is a stat chart", - "name": "RAM Total" - }, - "plugin": { - "kind": "StatChart", - "spec": { - "calculation": "last-number", - "format": { - "decimalPlaces": 1, - "unit": "bytes" - } - } - }, - "queries": [ - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "node_memory_MemTotal_bytes{job='$job',instance=~'$instance'}" - } - } - } - } - ] - } - }, - "testNodeQuery": { - "kind": "Panel", - "spec": { - "display": { - "description": "Description text", - "name": "Test Query" - }, - "plugin": { - "kind": "TimeSeriesChart", - "spec": { - "legend": { - "position": "right" - }, - "yAxis": { - "format": { - "decimalPlaces": 2, - "unit": "decimal" - } - } - } - }, - "queries": [ - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "node_load15{instance=~\"(demo.do.prometheus.io:9100)\",job='$job'}", - "seriesNameFormat": "Test {{job}} {{instance}}" - } - } - } - } - ] - } - }, - "testQueryAlt": { - "kind": "Panel", - "spec": { - "display": { - "description": "Description text", - "name": "Test Query Alt" - }, - "plugin": { - "kind": "TimeSeriesChart", - "spec": { - "legend": { - "position": "right" - }, - "thresholds": { - "steps": [ - { - "name": "Alert: Warning condition example", - "value": 0.4 - }, - { - "name": "Alert: Critical condition example", - "value": 0.75 - } - ] - }, - "yAxis": { - "format": { - "decimalPlaces": 1, - "unit": "percent-decimal" - } - } - } - }, - "queries": [ - { - "kind": "TimeSeriesQuery", - "spec": { - "plugin": { - "kind": "PrometheusTimeSeriesQuery", - "spec": { - "query": "node_load1{instance=~\"(demo.do.prometheus.io:9100)\",job='$job'}" - } - } - } - } - ] - } - } - }, - "variables": [ - { - "kind": "ListVariable", - "spec": { - "allowAllValue": false, - "allowMultiple": false, - "name": "job", - "plugin": { - "kind": "PrometheusLabelValuesVariable", - "spec": { - "labelName": "job" - } - } - } - }, - { - "kind": "ListVariable", - "spec": { - "allowAllValue": false, - "allowMultiple": false, - "name": "instance", - "plugin": { - "kind": "PrometheusLabelValuesVariable", - "spec": { - "labelName": "instance", - "matchers": [ - "up{job=~\"$job\"}" - ] - } - } - } - }, - { - "kind": "ListVariable", - "spec": { - "name": "interval", - "plugin": { - "kind": "StaticListVariable", - "spec": { - "values": [ - "1m", - "5m" - ] - } - } - } - }, - { - "kind": "TextVariable", - "spec": { - "constant": true, - "name": "text", - "value": "test" - } - } - ] - } - }, - { - "apiVersion": "perses.dev/v1alpha1", - "kind": "PersesDatasource", - "metadata": { - "labels": { - "app.kubernetes.io/created-by": "perses-operator", - "app.kubernetes.io/instance": "perses-prometheus-datasource", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "perses-datasource", - "app.kubernetes.io/part-of": "perses-operator" - }, - "name": "perses-datasource-sample" - }, - "spec": { - "default": true, - "display": { - "name": "Default Datasource" - }, - "plugin": { - "kind": "PrometheusDatasource", - "spec": { - "directUrl": "https://prometheus.demo.do.prometheus.io" - } - } - } - } - ] - capabilities: Basic Install - createdAt: "2024-12-02T10:49:35Z" - operators.operatorframework.io/builder: operator-sdk-v1.32.0 - operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 - labels: - operatorframework.io/arch.amd64: supported - operatorframework.io/arch.arm64: supported - name: perses-operator.v0.1.0 - namespace: perses -spec: - apiservicedefinitions: {} - customresourcedefinitions: - owned: - - description: Perses is the Schema for the perses API - displayName: Perses - kind: Perses - name: perses.perses.dev - specDescriptors: - - displayName: Config - path: config - - displayName: Container Port - path: containerPort - statusDescriptors: - - displayName: Conditions - path: conditions - version: v1alpha1 - - kind: PersesDashboard - name: persesdashboards.perses.dev - version: v1alpha1 - - kind: PersesDatasource - name: persesdatasources.perses.dev - version: v1alpha1 - description: The Perses Operator deploys and manages Perses instances, dashboards - and datasources. - displayName: Perses Operator - icon: - - base64data: data:image/jpeg;base64,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 - mediatype: image/jpeg - install: - spec: - clusterPermissions: - - rules: - - apiGroups: - - apps - resources: - - deployments - verbs: - - create - - delete - - get - - list - - patch - - update - - watch - - apiGroups: - - "" - resources: - - events - verbs: - - create - - patch - - apiGroups: - - "" - resources: - - deployments - - services - - configmaps - verbs: - - get - - patch - - update - - create - - delete - - list - - watch - - apiGroups: - - perses.dev - resources: - - perses - verbs: - - create - - delete - - get - - list - - patch - - update - - watch - - apiGroups: - - perses.dev - resources: - - perses/finalizers - verbs: - - update - - apiGroups: - - perses.dev - resources: - - perses/status - verbs: - - get - - patch - - update - - apiGroups: - - perses.dev - resources: - - persesdashboards - verbs: - - create - - delete - - get - - list - - patch - - update - - watch - - apiGroups: - - perses.dev - resources: - - persesdashboards/finalizers - verbs: - - update - - apiGroups: - - perses.dev - resources: - - persesdashboards/status - verbs: - - get - - patch - - update - - apiGroups: - - perses.dev - resources: - - persesdatasources - verbs: - - create - - delete - - get - - list - - patch - - update - - watch - - apiGroups: - - perses.dev - resources: - - persesdatasources/finalizers - verbs: - - update - - apiGroups: - - perses.dev - resources: - - persesdatasources/status - verbs: - - get - - patch - - update - - apiGroups: - - authentication.k8s.io - resources: - - tokenreviews - verbs: - - create - - apiGroups: - - authorization.k8s.io - resources: - - subjectaccessreviews - verbs: - - create - serviceAccountName: perses-operator-controller-manager - deployments: - - label: - app.kubernetes.io/component: manager - app.kubernetes.io/created-by: perses-operator - app.kubernetes.io/instance: controller-manager - app.kubernetes.io/managed-by: kustomize - app.kubernetes.io/name: deployment - app.kubernetes.io/part-of: perses-operator - control-plane: controller-manager - name: perses-operator-controller-manager - spec: - replicas: 1 - selector: - matchLabels: - control-plane: controller-manager - strategy: {} - template: - metadata: - annotations: - kubectl.kubernetes.io/default-container: manager - labels: - control-plane: controller-manager - spec: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/arch - operator: In - values: - - amd64 - - arm64 - - ppc64le - - s390x - - key: kubernetes.io/os - operator: In - values: - - linux - containers: - - args: - - --secure-listen-address=0.0.0.0:8443 - - --upstream=http://127.0.0.1:8080/ - - --logtostderr=true - - --v=0 - image: gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 - name: kube-rbac-proxy - ports: - - containerPort: 8443 - name: https - protocol: TCP - resources: - limits: - cpu: 500m - memory: 128Mi - requests: - cpu: 5m - memory: 64Mi - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - - args: - - --health-probe-bind-address=:8081 - - --metrics-bind-address=127.0.0.1:8080 - - --leader-elect - command: - - /manager - image: docker.io/persesdev/perses-operator:v0.1.0 - livenessProbe: - httpGet: - path: /healthz - port: 8081 - initialDelaySeconds: 15 - periodSeconds: 20 - name: manager - readinessProbe: - httpGet: - path: /readyz - port: 8081 - initialDelaySeconds: 5 - periodSeconds: 10 - resources: - limits: - cpu: 500m - memory: 128Mi - requests: - cpu: 10m - memory: 64Mi - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - securityContext: - runAsNonRoot: true - serviceAccountName: perses-operator-controller-manager - terminationGracePeriodSeconds: 10 - permissions: - - rules: - - apiGroups: - - "" - resources: - - configmaps - verbs: - - get - - list - - watch - - create - - update - - patch - - delete - - apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - create - - update - - patch - - delete - - apiGroups: - - "" - resources: - - events - verbs: - - create - - patch - serviceAccountName: perses-operator-controller-manager - strategy: deployment - installModes: - - supported: false - type: OwnNamespace - - supported: false - type: SingleNamespace - - supported: false - type: MultiNamespace - - supported: true - type: AllNamespaces - keywords: - - monitoring - - logs - - traces - - metrics - - dashboards - links: - - name: Perses Operator - url: https://perses.dev - maintainers: - - email: gbernal@redhat.com - name: Gabriel Bernal - - email: augustin.husson@amadeus.com - name: Augustin Husson - maturity: alpha - provider: - name: Perses - url: perses.dev - version: 0.1.0 diff --git a/bundle/manifests/perses.dev_perses.yaml b/bundle/manifests/perses.dev_perses.yaml deleted file mode 100644 index d1358f3..0000000 --- a/bundle/manifests/perses.dev_perses.yaml +++ /dev/null @@ -1,997 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.0 - creationTimestamp: null - name: perses.perses.dev -spec: - group: perses.dev - names: - kind: Perses - listKind: PersesList - plural: perses - singular: perses - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: Perses is the Schema for the perses 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 - 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 - type: string - metadata: - type: object - spec: - description: PersesSpec defines the desired state of Perses - properties: - config: - properties: - api_prefix: - description: Use it in case you want to prefix the API path. - type: string - database: - description: Database contains the different configuration depending - on the database you want to use - properties: - file: - properties: - case_sensitive: - type: boolean - extension: - type: string - folder: - type: string - required: - - folder - type: object - sql: - properties: - addr: - description: Network address (requires Net) - type: string - allow_all_files: - description: Allow all files to be used with LOAD DATA - LOCAL INFILE - type: boolean - allow_cleartext_passwords: - description: Allows the cleartext client side plugin - type: boolean - allow_fallback_to_plaintext: - description: Allows fallback to unencrypted connection - if server does not support TLS - type: boolean - allow_native_passwords: - description: Allows the native password authentication - method - type: boolean - allow_old_passwords: - description: Allows the old insecure password method - type: boolean - case_sensitive: - type: boolean - check_conn_liveness: - description: Check connections for liveness before using - them - type: boolean - client_found_rows: - description: Return number of matching rows instead of - rows changed - type: boolean - collation: - description: Connection collation - type: string - columns_with_alias: - description: Prepend table alias to column names - type: boolean - db_name: - description: Database name - type: string - interpolate_params: - description: Interpolate placeholders into query string - type: boolean - loc: - description: Location for time.Time values - type: object - max_allowed_packet: - description: Max packet size allowed - type: integer - multi_statements: - description: Allow multiple statements in one query - type: boolean - net: - description: Network type - type: string - parse_time: - description: Parse time values to time.Time - type: boolean - password: - description: Password (requires User) - type: string - password_file: - description: PasswordFile is a path to a file that contains - a password - type: string - read_timeout: - description: I/O read timeout - format: duration - pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ - type: string - reject_read_only: - description: Reject read-only connections - type: boolean - server_pub_key: - description: Server public key name - type: string - timeout: - description: Dial timeout - format: duration - pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ - type: string - tls_config: - description: TLS configuration - properties: - ca: - description: Text of the CA cert to use for the targets. - type: string - ca_file: - description: The CA cert to use for the targets. - type: string - ca_ref: - description: |- - CARef is the name of the secret within the secret manager to use as the CA cert for the - targets. - type: string - cert: - description: Text of the client cert file for the - targets. - type: string - cert_file: - description: The client cert file for the targets. - type: string - cert_ref: - description: |- - CertRef is the name of the secret within the secret manager to use as the client cert for - the targets. - type: string - insecure_skip_verify: - description: Disable target certificate validation. - type: boolean - key: - description: Text of the client key file for the targets. - type: string - key_file: - description: The client key file for the targets. - type: string - key_ref: - description: |- - KeyRef is the name of the secret within the secret manager to use as the client key for - the targets. - type: string - max_version: - description: Maximum TLS version. - type: integer - min_version: - description: Minimum TLS version. - type: integer - server_name: - description: Used to verify the hostname for the targets. - type: string - required: - - insecure_skip_verify - type: object - user: - description: Username - type: string - write_timeout: - description: I/O write timeout - format: duration - pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ - type: string - required: - - allow_all_files - - allow_cleartext_passwords - - allow_fallback_to_plaintext - - allow_native_passwords - - allow_old_passwords - - case_sensitive - - check_conn_liveness - - client_found_rows - - columns_with_alias - - db_name - - interpolate_params - - max_allowed_packet - - multi_statements - - parse_time - - read_timeout - - reject_read_only - - server_pub_key - - timeout - - write_timeout - type: object - type: object - ephemeral_dashboard: - description: EphemeralDashboard contains the config about the - ephemeral dashboard feature - properties: - cleanup_interval: - description: The interval at which to trigger the cleanup - of ephemeral dashboards, based on their TTLs. - format: duration - pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ - type: string - enable: - description: When true user will be able to use the ephemeral - dashboard at project level. - type: boolean - required: - - cleanup_interval - - enable - type: object - ephemeral_dashboards_cleanup_interval: - description: |- - EphemeralDashboardsCleanupInterval is the interval at which the ephemeral dashboards are cleaned up - DEPRECATED. - Please use the config EphemeralDashboard instead. - format: duration - pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ - type: string - frontend: - description: Frontend contains any config that will be used by - the frontend itself. - properties: - disable: - description: When it is true, Perses won't serve the frontend - anymore, and any other config set here will be ignored - type: boolean - explorer: - description: |- - Explorer is activating the different kind of explorer supported. - Be sure you have installed an associated plugin for each explorer type. - properties: - enable: - type: boolean - required: - - enable - type: object - important_dashboards: - description: ImportantDashboards contains important dashboard - selectors - items: - properties: - dashboard: - description: Dashboard is the name of the dashboard - (dashboard.metadata.name) - type: string - project: - description: Project is the name of the project (dashboard.metadata.project) - type: string - required: - - dashboard - - project - type: object - type: array - information: - description: Information contains markdown content to be display - on the home page - type: string - time_range: - description: TimeRange contains the time range configuration - for the dropdown - properties: - disable_custom: - type: boolean - options: - items: - format: duration - pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ - type: string - type: array - required: - - disable_custom - type: object - required: - - disable - - explorer - type: object - global_datasource_discovery: - description: |- - GlobalDatasourceDiscovery is the configuration that helps to generate a list of global datasource based on the discovery chosen. - Be careful: the data coming from the discovery will totally override what exists in the database. - Note that this is an experimental feature. Behavior and config may change in the future. - items: - properties: - discovery_name: - description: The name of the discovery config. It is used - for logging purposes only - type: string - http_sd: - description: |- - HTTP-based service discovery provides a more generic way to generate a set of global datasource and serves as an interface to plug in custom service discovery mechanisms. - It fetches an HTTP endpoint containing a list of zero or more global datasources. - The target must reply with an HTTP 200 response. - The HTTP header Content-Type must be application/json, and the body must be valid array of JSON. - properties: - authorization: - description: The HTTP authorization credentials for - the targets. - properties: - credentials: - type: string - credentialsFile: - type: string - type: - type: string - type: object - basic_auth: - properties: - password: - type: string - passwordFile: - description: PasswordFile is a path to a file that - contains a password - type: string - username: - type: string - required: - - username - type: object - headers: - additionalProperties: - type: string - type: object - native_auth: - properties: - login: - type: string - password: - type: string - required: - - login - - password - type: object - oauth: - properties: - auth_style: - description: |- - AuthStyle optionally specifies how the endpoint wants the - client ID & client secret sent. The zero value means to - auto-detect. - type: integer - client_id: - description: ClientID is the application's ID. - type: string - client_secret: - description: ClientSecret is the application's secret. - type: string - endpoint_params: - additionalProperties: - items: - type: string - type: array - description: EndpointParams specifies additional - parameters for requests to the token endpoint. - type: object - scopes: - description: Scope specifies optional requested - permissions. - items: - type: string - type: array - token_url: - description: |- - TokenURL is the resource server's token endpoint - URL. This is a constant specific to each server. - type: string - required: - - auth_style - - client_id - - client_secret - - endpoint_params - - scopes - - token_url - type: object - tls_config: - description: TLSConfig to use to connect to the targets. - properties: - ca: - description: Text of the CA cert to use for the - targets. - type: string - caFile: - description: The CA cert to use for the targets. - type: string - cert: - description: Text of the client cert file for the - targets. - type: string - certFile: - description: The client cert file for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - key: - description: Text of the client key file for the - targets. - type: string - keyFile: - description: The client key file for the targets. - type: string - serverName: - description: Used to verify the hostname for the - targets. - type: string - required: - - insecureSkipVerify - type: object - url: - type: object - required: - - url - type: object - kubernetes_sd: - description: |- - Kubernetes SD configurations allow retrieving global datasource from Kubernetes' REST API - and always staying synchronized with the cluster state. - properties: - datasource_plugin_kind: - description: DatasourcePluginKind is the name of the - datasource plugin that should be filled when creating - datasources found. - type: string - labels: - additionalProperties: - type: string - description: The labels used to filter the list of resource - when contacting the Kubernetes API. - type: object - namespace: - description: |- - Kubernetes namespace to constraint the query to only one namespace. - Leave empty if you are looking for datasource cross-namespace. - type: string - pod_configuration: - description: Configuration when you want to discover - the pods in Kubernetes - properties: - container_name: - description: Name of the container the target address - points to. - type: string - container_port_name: - description: Name of the container port. - type: string - container_port_number: - description: Number of the container port. - format: int32 - type: integer - enable: - description: If set to true, Perses server will - discovery the pod - type: boolean - type: object - service_configuration: - description: Configuration when you want to discover - the services in Kubernetes - properties: - enable: - description: If set to true, Perses server will - discovery the service - type: boolean - port_name: - description: Name of the service port for the target. - type: string - port_number: - description: Number of the service port for the - target. - format: int32 - type: integer - service_type: - description: The type of the service. - type: string - type: object - required: - - datasource_plugin_kind - - namespace - type: object - refresh_interval: - description: Refresh interval to re-query the endpoint. - format: duration - pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ - type: string - required: - - discovery_name - type: object - type: array - provisioning: - description: Provisioning contains the provisioning config that - can be used if you want to provide default resources. - properties: - folders: - items: - type: string - type: array - interval: - description: Interval is the refresh frequency - format: duration - pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ - type: string - type: object - schemas: - description: Schemas contain the configuration to get access to - the CUE schemas - properties: - datasources_path: - type: string - interval: - format: duration - pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ - type: string - panels_path: - type: string - queries_path: - type: string - variables_path: - type: string - type: object - security: - description: Security contains any configuration that changes - the API behavior like the endpoints exposed or if the permissions - are activated. - properties: - authentication: - description: Authentication contains configuration regarding - management of access/refresh token - properties: - access_token_ttl: - description: AccessTokenTTL is the time to live of the - access token. By default, it is 15 minutes. - format: duration - pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ - type: string - disable_sign_up: - description: |- - DisableSignUp deactivates the Sign-up page in the UI. - It also disables the endpoint that gives the possibility to create a user. - type: boolean - providers: - description: Providers configure the different authentication - providers - properties: - enable_native: - type: boolean - oauth: - items: - properties: - auth_url: - type: object - client_credentials: - properties: - client_id: - description: Hidden special type for storing - secrets. - type: string - client_secret: - description: Hidden special type for storing - secrets. - type: string - scopes: - items: - type: string - type: array - required: - - client_id - - client_secret - - scopes - type: object - client_id: - description: Hidden special type for storing - secrets. - type: string - client_secret: - description: Hidden special type for storing - secrets. - type: string - custom_login_property: - type: string - device_auth_url: - type: object - device_code: - properties: - client_id: - description: Hidden special type for storing - secrets. - type: string - client_secret: - description: Hidden special type for storing - secrets. - type: string - scopes: - items: - type: string - type: array - required: - - client_id - - client_secret - - scopes - type: object - http: - properties: - timeout: - format: duration - pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ - type: string - tls_config: - properties: - ca: - description: Text of the CA cert to - use for the targets. - type: string - caFile: - description: The CA cert to use for - the targets. - type: string - cert: - description: Text of the client cert - file for the targets. - type: string - certFile: - description: The client cert file for - the targets. - type: string - insecureSkipVerify: - description: Disable target certificate - validation. - type: boolean - key: - description: Text of the client key - file for the targets. - type: string - keyFile: - description: The client key file for - the targets. - type: string - serverName: - description: Used to verify the hostname - for the targets. - type: string - required: - - insecureSkipVerify - type: object - required: - - timeout - - tls_config - type: object - name: - type: string - redirect_uri: - type: object - scopes: - items: - type: string - type: array - slug_id: - type: string - token_url: - type: object - user_infos_url: - type: object - required: - - auth_url - - client_id - - device_auth_url - - http - - name - - slug_id - - token_url - - user_infos_url - type: object - type: array - oidc: - items: - properties: - client_credentials: - properties: - client_id: - description: Hidden special type for storing - secrets. - type: string - client_secret: - description: Hidden special type for storing - secrets. - type: string - scopes: - items: - type: string - type: array - required: - - client_id - - client_secret - - scopes - type: object - client_id: - description: Hidden special type for storing - secrets. - type: string - client_secret: - description: Hidden special type for storing - secrets. - type: string - device_code: - properties: - client_id: - description: Hidden special type for storing - secrets. - type: string - client_secret: - description: Hidden special type for storing - secrets. - type: string - scopes: - items: - type: string - type: array - required: - - client_id - - client_secret - - scopes - type: object - disable_pkce: - type: boolean - discovery_url: - type: object - http: - properties: - timeout: - format: duration - pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ - type: string - tls_config: - properties: - ca: - description: Text of the CA cert to - use for the targets. - type: string - caFile: - description: The CA cert to use for - the targets. - type: string - cert: - description: Text of the client cert - file for the targets. - type: string - certFile: - description: The client cert file for - the targets. - type: string - insecureSkipVerify: - description: Disable target certificate - validation. - type: boolean - key: - description: Text of the client key - file for the targets. - type: string - keyFile: - description: The client key file for - the targets. - type: string - serverName: - description: Used to verify the hostname - for the targets. - type: string - required: - - insecureSkipVerify - type: object - required: - - timeout - - tls_config - type: object - issuer: - type: object - name: - type: string - redirect_uri: - type: object - scopes: - items: - type: string - type: array - slug_id: - type: string - url_params: - additionalProperties: - type: string - type: object - required: - - client_id - - disable_pkce - - http - - issuer - - name - - slug_id - type: object - type: array - required: - - enable_native - type: object - refresh_token_ttl: - description: |- - RefreshTokenTTL is the time to live of the refresh token. - The refresh token is used to get a new access token when it is expired. - By default, it is 24 hours. - format: duration - pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ - type: string - required: - - disable_sign_up - - providers - type: object - authorization: - description: Authorization contains all configs around rbac - (permissions and roles) - properties: - check_latest_update_interval: - description: CheckLatestUpdateInterval that checks if - the RBAC cache needs to be refreshed with db content. - Only for SQL database setup. - format: duration - pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ - type: string - guest_permissions: - description: Default permissions for guest users (logged-in - users) - items: - properties: - actions: - description: Actions of the permission (read, create, - update, delete, ...) - items: - type: string - type: array - scopes: - description: |- - The list of kind targeted by the permission. For example: `Datasource`, `Dashboard`, ... - With Role, you can't target global kinds - items: - type: string - type: array - required: - - actions - - scopes - type: object - type: array - type: object - cookie: - description: Cookie configuration - properties: - same_site: - description: |- - Set the SameSite cookie attribute and prevents the browser from sending the cookie along with cross-site requests. - The main goal is to mitigate the risk of cross-origin information leakage. - This setting also provides some protection against cross-site request forgery attacks (CSRF) - type: integer - secure: - description: Set to true if you host Perses behind HTTPS. - Default is false - type: boolean - required: - - secure - type: object - enable_auth: - description: |- - When it is true, the authentication and authorization config are considered. - And you will need a valid JWT token to contact most of the endpoints exposed by the API - type: boolean - encryption_key: - description: |- - EncryptionKey is the secret key used to encrypt and decrypt sensitive data - stored in the database such as the password of the basic auth for a datasource. - Note that if it is not provided, it will use a default value. - On a production instance, you should set this key. - Also note the key size must be exactly 32 bytes long as we are using AES-256 to encrypt the data. - type: string - encryption_key_file: - description: EncryptionKeyFile is the path to file containing - the secret key - type: string - readonly: - description: Readonly will deactivate any HTTP POST, PUT, - DELETE endpoint - type: boolean - required: - - cookie - - enable_auth - - readonly - type: object - type: object - containerPort: - format: int32 - type: integer - type: object - status: - description: PersesStatus defines the observed state of Perses - properties: - conditions: - items: - description: Condition contains details for one aspect of the current - state of this API Resource. - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: null - storedVersions: null diff --git a/bundle/manifests/perses.dev_persesdashboards.yaml b/bundle/manifests/perses.dev_persesdashboards.yaml deleted file mode 100644 index 8b85909..0000000 --- a/bundle/manifests/perses.dev_persesdashboards.yaml +++ /dev/null @@ -1,269 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.0 - creationTimestamp: null - name: persesdashboards.perses.dev -spec: - group: perses.dev - names: - kind: PersesDashboard - listKind: PersesDashboardList - plural: persesdashboards - singular: persesdashboard - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: PersesDashboard is the Schema for the persesdashboards 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 - 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 - type: string - metadata: - type: object - spec: - properties: - datasources: - additionalProperties: - properties: - default: - type: boolean - display: - properties: - description: - type: string - name: - type: string - type: object - plugin: - description: |- - Plugin will contain the datasource configuration. - The data typed is available in Cue. - properties: - kind: - type: string - spec: - x-kubernetes-preserve-unknown-fields: true - required: - - kind - - spec - type: object - required: - - default - - plugin - type: object - description: Datasources is an optional list of datasource definition. - type: object - display: - properties: - description: - type: string - name: - type: string - type: object - duration: - description: Duration is the default time range to use when getting - data to fill the dashboard - format: duration - pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ - type: string - layouts: - items: - properties: - kind: - type: string - spec: - x-kubernetes-preserve-unknown-fields: true - required: - - kind - - spec - type: object - type: array - panels: - additionalProperties: - properties: - kind: - type: string - spec: - properties: - display: - properties: - description: - type: string - name: - type: string - required: - - name - type: object - links: - items: - properties: - name: - type: string - renderVariables: - type: boolean - targetBlank: - type: boolean - tooltip: - type: string - url: - type: string - required: - - url - type: object - type: array - plugin: - properties: - kind: - type: string - spec: - x-kubernetes-preserve-unknown-fields: true - required: - - kind - - spec - type: object - queries: - items: - properties: - kind: - type: string - spec: - properties: - plugin: - properties: - kind: - type: string - spec: - x-kubernetes-preserve-unknown-fields: true - required: - - kind - - spec - type: object - required: - - plugin - type: object - required: - - kind - - spec - type: object - type: array - required: - - display - - plugin - type: object - required: - - kind - - spec - type: object - type: object - refreshInterval: - description: RefreshInterval is the default refresh interval to use - when landing on the dashboard - format: duration - pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ - type: string - variables: - items: - properties: - kind: - description: Kind is the type of the variable. Depending on - the value of Kind, it will change the content of Spec. - type: string - spec: - x-kubernetes-preserve-unknown-fields: true - required: - - kind - - spec - type: object - type: array - required: - - duration - - layouts - - panels - type: object - status: - description: PersesDashboardStatus defines the observed state of PersesDashboard - properties: - conditions: - items: - description: Condition contains details for one aspect of the current - state of this API Resource. - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: null - storedVersions: null diff --git a/bundle/manifests/perses.dev_persesdatasources.yaml b/bundle/manifests/perses.dev_persesdatasources.yaml deleted file mode 100644 index b1a9321..0000000 --- a/bundle/manifests/perses.dev_persesdatasources.yaml +++ /dev/null @@ -1,137 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.0 - creationTimestamp: null - name: persesdatasources.perses.dev -spec: - group: perses.dev - names: - kind: PersesDatasource - listKind: PersesDatasourceList - plural: persesdatasources - singular: persesdatasource - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: PersesDatasource is the Schema for the PersesDatasources 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 - 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 - type: string - metadata: - type: object - spec: - properties: - default: - type: boolean - display: - properties: - description: - type: string - name: - type: string - type: object - plugin: - description: |- - Plugin will contain the datasource configuration. - The data typed is available in Cue. - properties: - kind: - type: string - spec: - x-kubernetes-preserve-unknown-fields: true - required: - - kind - - spec - type: object - required: - - default - - plugin - type: object - status: - description: PersesDatasourceStatus defines the observed state of PersesDatasource - properties: - conditions: - items: - description: Condition contains details for one aspect of the current - state of this API Resource. - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: null - storedVersions: null