diff --git a/index.yaml b/index.yaml index 0db8d44f3b..b8c9aa8106 100644 --- a/index.yaml +++ b/index.yaml @@ -37550,6 +37550,22 @@ entries: urls: - https://giantswarm.github.io/control-plane-test-catalog/logging-operator-0.13.0.tgz version: 0.13.0 + - annotations: + application.giantswarm.io/metadata: https://giantswarm.github.io/control-plane-test-catalog/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz-meta/main.yaml + application.giantswarm.io/readme: https://giantswarm.github.io/control-plane-test-catalog/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz-meta/README.md + application.giantswarm.io/team: atlas + application.giantswarm.io/values-schema: https://giantswarm.github.io/control-plane-test-catalog/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz-meta/values.schema.json + config.giantswarm.io/version: 1.x.x + apiVersion: v2 + appVersion: 0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96 + created: "2024-10-24T16:45:55.729816348Z" + description: The logging-operator manages loki and logging related config. + digest: ffcafa20d4a5a76ff8c8d72620f35914281eab1dda18e717aae0f3478614d2e2 + home: https://github.com/giantswarm/logging-operator + name: logging-operator + urls: + - https://giantswarm.github.io/control-plane-test-catalog/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz + version: 0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96 - annotations: application.giantswarm.io/metadata: https://giantswarm.github.io/control-plane-test-catalog/logging-operator-0.13.0-8c0d7a007642d20aadb30132b97c96b6546ea816.tgz-meta/main.yaml application.giantswarm.io/readme: https://giantswarm.github.io/control-plane-test-catalog/logging-operator-0.13.0-8c0d7a007642d20aadb30132b97c96b6546ea816.tgz-meta/README.md @@ -72036,4 +72052,4 @@ entries: urls: - https://giantswarm.github.io/control-plane-test-catalog/vertical-pod-autoscaler-crd-0.0.0-9925886a8b029918200779e160c758cfb3c660dc.tgz version: 0.0.0-9925886a8b029918200779e160c758cfb3c660dc -generated: "2024-10-24T16:42:18.188231612Z" +generated: "2024-10-24T16:45:55.729023172Z" diff --git a/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz b/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz new file mode 100644 index 0000000000..0a7152465d Binary files /dev/null and b/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz differ diff --git a/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz-meta/README.md b/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz-meta/README.md new file mode 100644 index 0000000000..aab4dd4d3a --- /dev/null +++ b/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz-meta/README.md @@ -0,0 +1,49 @@ +[![CircleCI](https://dl.circleci.com/status-badge/img/gh/giantswarm/logging-operator/tree/main.svg?style=svg)](https://dl.circleci.com/status-badge/redirect/gh/giantswarm/logging-operator/tree/main) + +# logging-operator + +This operator is in charge of handling the setup and configuration of the logging stack at Giant Swarm. + +It reconciles `cluster.cluster.x-k8s.io` objects and makes sure each `Cluster` is provided with logging agents: +- [`promtail`](https://github.com/giantswarm/promtail-app) instance +- [`grafana-agent`](https://github.com/giantswarm/grafana-agent-app) instance +and the necessary configuration to ship logs into [`loki`](https://github.com/giantswarm/loki-app). + +## Getting started + +Get the code and build it via: + +```bash +git clone https://github.com/giantswarm/logging-operator.git +cd logging-operator +make +``` + +See `make help` for help. + +## Architecture + +The operator is built around a central reconciler, that calls multiple sub-reconcilers sequentially. +![image](images/logging-operator-architecture.png) + +* Logging-Credentials are created if they don't exist. Then, their data (credentials) is used to create the next resources. +* grafana datasource configures Grafana to read data from Loki +* loki-multi-tenant-auth secures all Loki communication (per-tenant read/write access) +* logging-secret configures write access to Loki for Promtail +* logging-config setups some Promtail settings (like which logs to collect) +* logging-wiring ensures promtail-app reads configs from previous steps +* grafana-agent config setups some grafana-agent settings like the `river` configuration to scrape Kubernetes Events +* grafana-agent secret setups logging write credentials to access loki into the `river` configuration +* Logging agents toggle enables/disables logging agents deployment on WCs + +## Gathering logs from WCs + +When the need to gather logs from the WCs appears, the logging-operator will deploy promtail on those so that one may see the logs from the MC's grafana. It deploys also grafana-agent to be able to scrape Kubernetes Events. +In order to achieve that, one has to label the cluster(s) one wants to gather logs from thanks to the following command : +``` +kubectl label cluster -n giantswarm.io/logging=true +``` + +## Credits + +This operator was built using [`kubebuilder`](https://book.kubebuilder.io/quick-start.html). diff --git a/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz-meta/main.yaml b/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz-meta/main.yaml new file mode 100644 index 0000000000..414652b5ea --- /dev/null +++ b/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz-meta/main.yaml @@ -0,0 +1,11 @@ +annotations: + application.giantswarm.io/metadata: https://giantswarm.github.io/control-plane-test-catalog/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz-meta/main.yaml + application.giantswarm.io/readme: https://giantswarm.github.io/control-plane-test-catalog/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz-meta/README.md + application.giantswarm.io/team: atlas + application.giantswarm.io/values-schema: https://giantswarm.github.io/control-plane-test-catalog/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz-meta/values.schema.json + config.giantswarm.io/version: 1.x.x +chartApiVersion: v2 +chartFile: logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz +dateCreated: '2024-10-24T16:45:47.178424Z' +digest: ffcafa20d4a5a76ff8c8d72620f35914281eab1dda18e717aae0f3478614d2e2 +home: https://github.com/giantswarm/logging-operator diff --git a/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz-meta/values.schema.json b/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz-meta/values.schema.json new file mode 100644 index 0000000000..db0ee92c9e --- /dev/null +++ b/logging-operator-0.13.0-e85ef1cffed88f5f4580d26e09b87154e2c6cd96.tgz-meta/values.schema.json @@ -0,0 +1,168 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "global": { + "type": "object", + "properties": { + "podSecurityStandards": { + "type": "object", + "properties": { + "enforced": { + "type": "boolean" + } + } + } + } + }, + "image": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "tag": { + "type": "string" + } + } + }, + "loggingOperator": { + "type": "object", + "properties": { + "loggingEnabled": { + "type": "boolean" + }, + "vintageMode": { + "type": "boolean" + } + } + }, + "managementCluster": { + "type": "object", + "properties": { + "insecureCA": { + "type": "boolean" + }, + "name": { + "type": "string" + } + } + }, + "networkPolicy": { + "type": "object", + "properties": { + "flavor": { + "type": "string" + } + } + }, + "profiling": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "port": { + "type": "integer" + } + } + }, + "registry": { + "type": "object", + "properties": { + "domain": { + "type": "string" + }, + "pullSecret": { + "type": "object", + "properties": { + "dockerConfigJSON": { + "type": "string" + } + } + } + } + }, + "resources": { + "type": "object", + "properties": { + "limits": { + "type": "object", + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + } + }, + "requests": { + "type": "object", + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + } + } + } + }, + "securityContext": { + "type": "object", + "properties": { + "container": { + "type": "object", + "properties": { + "allowPrivilegeEscalation": { + "type": "boolean" + }, + "capabilities": { + "type": "object", + "properties": { + "drop": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "readOnlyRootFilesystem": { + "type": "boolean" + }, + "seccompProfile": { + "type": "object", + "properties": { + "type": { + "type": "string" + } + } + } + } + }, + "pod": { + "type": "object", + "properties": { + "runAsNonRoot": { + "type": "boolean" + }, + "runAsUser": { + "type": "integer" + }, + "seccompProfile": { + "type": "object", + "properties": { + "type": { + "type": "string" + } + } + } + } + } + } + } + } +}