diff --git a/index.yaml b/index.yaml index d1dc4307621..ccc1465391d 100644 --- a/index.yaml +++ b/index.yaml @@ -44256,6 +44256,22 @@ entries: urls: - https://giantswarm.github.io/control-plane-test-catalog/logging-operator-0.14.0-397286289fcd31a77745eaa3cb8086822f39a3a2.tgz version: 0.14.0-397286289fcd31a77745eaa3cb8086822f39a3a2 + - annotations: + application.giantswarm.io/metadata: https://giantswarm.github.io/control-plane-test-catalog/logging-operator-0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.tgz-meta/main.yaml + application.giantswarm.io/readme: https://giantswarm.github.io/control-plane-test-catalog/logging-operator-0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.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.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.tgz-meta/values.schema.json + config.giantswarm.io/version: 1.x.x + apiVersion: v2 + appVersion: 0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7 + created: "2024-10-30T10:50:18.711485069Z" + description: The logging-operator manages loki and logging related config. + digest: 2f70f1a40e1f9190a33617ee0fa20afc0852641eed7ba49459db71b555271893 + home: https://github.com/giantswarm/logging-operator + name: logging-operator + urls: + - https://giantswarm.github.io/control-plane-test-catalog/logging-operator-0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.tgz + version: 0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7 - annotations: application.giantswarm.io/metadata: https://giantswarm.github.io/control-plane-test-catalog/logging-operator-0.13.0.tgz-meta/main.yaml application.giantswarm.io/readme: https://giantswarm.github.io/control-plane-test-catalog/logging-operator-0.13.0.tgz-meta/README.md @@ -82824,4 +82840,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-30T10:47:20.172797528Z" +generated: "2024-10-30T10:50:18.709738396Z" diff --git a/logging-operator-0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.tgz b/logging-operator-0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.tgz new file mode 100644 index 00000000000..be14797fd1d Binary files /dev/null and b/logging-operator-0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.tgz differ diff --git a/logging-operator-0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.tgz-meta/README.md b/logging-operator-0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.tgz-meta/README.md new file mode 100644 index 00000000000..aab4dd4d3a6 --- /dev/null +++ b/logging-operator-0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.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.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.tgz-meta/main.yaml b/logging-operator-0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.tgz-meta/main.yaml new file mode 100644 index 00000000000..2fe83c3c9ce --- /dev/null +++ b/logging-operator-0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.tgz-meta/main.yaml @@ -0,0 +1,11 @@ +annotations: + application.giantswarm.io/metadata: https://giantswarm.github.io/control-plane-test-catalog/logging-operator-0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.tgz-meta/main.yaml + application.giantswarm.io/readme: https://giantswarm.github.io/control-plane-test-catalog/logging-operator-0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.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.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.tgz-meta/values.schema.json + config.giantswarm.io/version: 1.x.x +chartApiVersion: v2 +chartFile: logging-operator-0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.tgz +dateCreated: '2024-10-30T10:50:08.071694Z' +digest: 2f70f1a40e1f9190a33617ee0fa20afc0852641eed7ba49459db71b555271893 +home: https://github.com/giantswarm/logging-operator diff --git a/logging-operator-0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.tgz-meta/values.schema.json b/logging-operator-0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.tgz-meta/values.schema.json new file mode 100644 index 00000000000..db0ee92c9e9 --- /dev/null +++ b/logging-operator-0.14.0-1e7712cff81ac459d22d25f529f1740875c4d9d7.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" + } + } + } + } + } + } + } + } +}