mirror of https://github.com/grafana/loki
operator: Publish docs as public website (#6449)
parent
56bf3a49a2
commit
dd80d86210
@ -0,0 +1,3 @@ |
||||
[submodule "operator/website/themes/doks"] |
||||
path = operator/website/themes/doks |
||||
url = https://github.com/h-enk/doks.git |
||||
@ -0,0 +1,7 @@ |
||||
module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT |
||||
|
||||
go 1.17 |
||||
|
||||
replace github.com/markbates/inflect => github.com/markbates/inflect v0.0.0-20171215194931-a12c3aec81a6 |
||||
|
||||
require github.com/gohugoio/hugo v0.80.0 // CGO_ENABLED=1 -tags=extended |
||||
File diff suppressed because it is too large
Load Diff
@ -1 +1,33 @@ |
||||
* [Red Hat](https://www.redhat.com) |
||||
--- |
||||
title: Adopters |
||||
lead: "" |
||||
date: 2021-04-30T10:40:00+00:00 |
||||
lastmod: 2021-04-30T10:40:00+00:00 |
||||
draft: false |
||||
images: [] |
||||
--- |
||||
|
||||
<!-- |
||||
|
||||
Insert your entry using this template keeping the list alphabetically sorted: |
||||
|
||||
## <Company/Organization Name> |
||||
|
||||
https://our-link.com/ |
||||
|
||||
Environments: AWS, Azure, Google Cloud, Bare Metal, etc |
||||
|
||||
|
||||
Details (optional): |
||||
- Ruler for LokiStack |
||||
--> |
||||
|
||||
This document tracks people and use cases for the Prometheus Operator in production. By creating a list of production use cases we hope to build a community of advisors that we can reach out to with experience using various the Prometheus Operator applications, operation environments, and cluster sizes. The Prometheus Operator development team may reach out periodically to check-in on how the Prometheus Operator is working in the field and update this list. |
||||
|
||||
Go ahead and [add your organization](https://github.com/grafana/loki/edit/main/operator/ADOPTERS.md) to the list. |
||||
|
||||
## Red Hat Inc |
||||
|
||||
https://www.redhat.com |
||||
|
||||
Environments: AWS, Azure, Google Cloud, Bare Metal, etc |
||||
|
||||
@ -1,20 +1,49 @@ |
||||
Contributing to Loki Operator |
||||
--- |
||||
title: Contributing |
||||
description: How can I contribute to the Loki Operator? |
||||
lead: "" |
||||
lastmod: "2021-03-08T08:48:57+00:00" |
||||
draft: false |
||||
images: [] |
||||
menu: |
||||
docs: |
||||
parent: prologue |
||||
weight: 200 |
||||
toc: true |
||||
--- |
||||
|
||||
## Ideology |
||||
This project is licensed under the [AGPLv3 license](../../../../../LICENSE) and accept |
||||
contributions via GitHub pull requests. This document outlines some of the |
||||
conventions on development workflow, contact points |
||||
and other resources to make it easier to get your contribution accepted. |
||||
|
||||
OpenShift has proven to be a powerful and successful platform for running containers in production. Our primary goal is to bring Loki Operator to our customers. That being said, it is a very large platform intended for large-scale production use. It is not intended to be ephemeral. |
||||
To maintain a safe and welcoming community, all participants must adhere to the |
||||
project's [Code of Conduct](../../../../../CODE_OF_CONDUCT.md). |
||||
|
||||
The tools required to run and test an OCP cluster are complex and cumbersome. The current processes to build an OCP cluster include the slack cluster-bot, openshift-install script, and CRC. The fastest route to create a working OCP cluster is 45 minutes. CRC *may* be faster, but it requires over [half of your local machine's resources](https://coreos.slack.com/archives/GGUR75P60/p1591803889037800) and doesn’t handle sleeping/suspending very well. Using openshift-install comes with its own [headaches](https://coreos.slack.com/archives/GGUR75P60/p1615458361119300). These blockers cause a significant amount of [wasted time](https://coreos.slack.com/archives/GGUR75P60/p1599242159479000?thread_ts=1599241354.478700&cid=GGUR75P60) that could be spent on more valuable things. |
||||
# Contributor License Agreement |
||||
|
||||
Nevertheless, I argue that none of this is necessary. The problems are caused when we bastardize a large, complex, production platform for testing and tooling. OpenShift is a superset of Kubernetes. Operators are now Kubernetes native. Given this reality, we have called the Loki Operator a Kubernetes operator rather than an OpenShift operator. This may seem like a trivial delineation, but it isn’t. The operator has been designed from the beginning using Kubernetes tools and APIs. This has allowed us to build, test, and deploy in very little time with very little effort. It is not uncommon to create a pull request and have it [reviewed and merged](https://github.com/grafana/loki/pulls?q=is%3Apr+is%3Aclosed) within 15 minutes. |
||||
By contributing to this project you agree to the Contributor License Agreement. |
||||
|
||||
There are certainly OCP exclusives that we want to program into the Loki Operator, but this shouldn’t block or break the primary objectives. In other words, the Loki Operator should be Kubernetes first and OpenShift second. The Loki Operator should be open to using the OpenShift APIs without requiring them. All tools, automation, scripts, make targets, etc, should work naturally with Kubernetes and Kubernetes compatible APIs. <u>OCP exclusives should be opt-in</u>. It might be natural for you to think this causes obstruction for deploying to OCP, but that is far from true. Packaging for OCP should be a scripted process that, once opted in, should build all of the necessary components. So far, it has proven to be successful. |
||||
# Email and Chat |
||||
|
||||
## Tooling |
||||
The project currently uses the [Grafana Slack](https://grafana.slack.com): |
||||
- [#loki-operator-dev](https://grafana.slack.com/archives/C02RFD9CWVA) |
||||
|
||||
We use [KinD](https://github.com/kubernetes-sigs/kind) to deploy and test the Loki Operator. We have had no compatibility issues, no wasted time on a learning curve, no failed clusters, no token expirations, no cluster expirations, no spinning laptop fans from gluttonous virtual machines, etc. It takes approximately 20 seconds to create a local KinD cluster and your machine won’t even notice it’s running. The cluster is fully compatible with all Kubernetes APIs and the operator runs on KinD perfectly. After your KinD cluster is created your kubeconfig is updated and the Makefile will work. The Makefiles and scripts are written to work with kubectl. This abstraction prevents any unnecessary complications caused by magic processes like deploying images to internal clusters, etc. |
||||
## Getting Started |
||||
|
||||
- Fork the repository on GitHub |
||||
- Read the [README](README.md) for build and test instructions |
||||
- Play with the project, submit bugs, submit patches! |
||||
|
||||
## Testing |
||||
## Contribution Flow |
||||
|
||||
Tests should be succinct and without dependencies. This means that unit tests are the de-facto form of testing the Loki Operator. Unit tests are written with the standard Go library using [testify](https://github.com/stretchr/testify) for assertions. [Counterfeiter](https://github.com/maxbrunsfeld/counterfeiter) is included for generating test fakes and stubs for all dependencies. This library provides an API for generating fake implementations of interfaces for injecting them into testable units of code. Unit tests should implement or stub *only the parts required to test*. Large, all-inclusive structs should be avoided in favor of concise, single responsibility functions. This encourages small tests with minimal assertions to keep them hyper-focused, making tests easy to create *and* maintain. |
||||
This is a rough outline of what a contributor's workflow looks like: |
||||
|
||||
- Create a topic branch from where you want to base your work (usually `main`). |
||||
- Make commits of logical units. |
||||
- Make sure your commit messages are in the proper format (see below). |
||||
- Push your changes to a topic branch in your fork of the repository. |
||||
- Make sure the tests pass, and add any new tests as appropriate. |
||||
- Submit a pull request to the original repository. |
||||
|
||||
Thanks for your contributions! |
||||
|
||||
@ -0,0 +1,13 @@ |
||||
--- |
||||
title : "Loki-Operator Docs" |
||||
description: "Documentation for the Loki-Operator." |
||||
lead: "" |
||||
date: 2021-04-30T10:40:00+00:00 |
||||
lastmod: 2021-04-30T10:40:00+00:00 |
||||
draft: false |
||||
images: [] |
||||
--- |
||||
|
||||
# Loki-Operator |
||||
|
||||
A Kubernetes Operator for Loki provided by the Grafana Loki SIG operator. |
||||
@ -1,12 +1,19 @@ |
||||
# Alerts |
||||
|
||||
<!-- TOC depthTo:2 --> |
||||
|
||||
- Loki Cluster |
||||
- [Loki Request Errors](#Loki-Request-Errors) |
||||
- [Loki Request Panics](#Loki-Request-Panics) |
||||
|
||||
<!-- /TOC --> |
||||
--- |
||||
title: "Standard Operational Procedures" |
||||
description: "The LokiStack Alerts and Standard Operational Procedures" |
||||
lead: "" |
||||
date: 2022-06-21T08:48:45+00:00 |
||||
lastmod: 2022-06-21T08:48:45+00:00 |
||||
draft: false |
||||
images: [] |
||||
menu: |
||||
docs: |
||||
parent: "lokistack" |
||||
weight: 100 |
||||
toc: true |
||||
--- |
||||
|
||||
The following page describes Standard Operational Procedures for alerts provided and managed by the Loki Operator for any LokiStack instance. |
||||
|
||||
## Loki Request Errors |
||||
|
||||
@ -0,0 +1,812 @@ |
||||
--- |
||||
title: "API" |
||||
description: "Generated API docs for the Loki Operator" |
||||
lead: "" |
||||
date: 2021-03-08T08:49:31+00:00 |
||||
draft: false |
||||
images: [] |
||||
menu: |
||||
docs: |
||||
parent: "operator" |
||||
weight: 1000 |
||||
toc: true |
||||
--- |
||||
|
||||
This Document documents the types introduced by the Loki Operator to be consumed by users. |
||||
|
||||
> Note this document is generated from code comments. When contributing a change to this document please do so by changing the code comments. |
||||
|
||||
## Table of Contents |
||||
* [AlertingRule](#alertingrule) |
||||
* [AlertingRuleGroup](#alertingrulegroup) |
||||
* [AlertingRuleGroupSpec](#alertingrulegroupspec) |
||||
* [AlertingRuleList](#alertingrulelist) |
||||
* [AlertingRuleSpec](#alertingrulespec) |
||||
* [AlertingRuleStatus](#alertingrulestatus) |
||||
* [AuthenticationSpec](#authenticationspec) |
||||
* [AuthorizationSpec](#authorizationspec) |
||||
* [IngestionLimitSpec](#ingestionlimitspec) |
||||
* [LimitsSpec](#limitsspec) |
||||
* [LimitsTemplateSpec](#limitstemplatespec) |
||||
* [LokiComponentSpec](#lokicomponentspec) |
||||
* [LokiStack](#lokistack) |
||||
* [LokiStackComponentStatus](#lokistackcomponentstatus) |
||||
* [LokiStackList](#lokistacklist) |
||||
* [LokiStackSpec](#lokistackspec) |
||||
* [LokiStackStatus](#lokistackstatus) |
||||
* [LokiStackStorageStatus](#lokistackstoragestatus) |
||||
* [LokiTemplateSpec](#lokitemplatespec) |
||||
* [OIDCSpec](#oidcspec) |
||||
* [OPASpec](#opaspec) |
||||
* [ObjectStorageSchema](#objectstorageschema) |
||||
* [ObjectStorageSecretSpec](#objectstoragesecretspec) |
||||
* [ObjectStorageSpec](#objectstoragespec) |
||||
* [ObjectStorageTLSSpec](#objectstoragetlsspec) |
||||
* [QueryLimitSpec](#querylimitspec) |
||||
* [RoleBindingsSpec](#rolebindingsspec) |
||||
* [RoleSpec](#rolespec) |
||||
* [RulesSpec](#rulesspec) |
||||
* [Subject](#subject) |
||||
* [TenantSecretSpec](#tenantsecretspec) |
||||
* [TenantsSpec](#tenantsspec) |
||||
* [RecordingRule](#recordingrule) |
||||
* [RecordingRuleGroup](#recordingrulegroup) |
||||
* [RecordingRuleGroupSpec](#recordingrulegroupspec) |
||||
* [RecordingRuleList](#recordingrulelist) |
||||
* [RecordingRuleSpec](#recordingrulespec) |
||||
* [RecordingRuleStatus](#recordingrulestatus) |
||||
* [AlertManagerDiscoverySpec](#alertmanagerdiscoveryspec) |
||||
* [AlertManagerNotificationQueueSpec](#alertmanagernotificationqueuespec) |
||||
* [AlertManagerSpec](#alertmanagerspec) |
||||
* [RelabelConfig](#relabelconfig) |
||||
* [RemoteWriteClientQueueSpec](#remotewriteclientqueuespec) |
||||
* [RemoteWriteClientSpec](#remotewriteclientspec) |
||||
* [RemoteWriteSpec](#remotewritespec) |
||||
* [RulerConfig](#rulerconfig) |
||||
* [RulerConfigList](#rulerconfiglist) |
||||
* [RulerConfigSpec](#rulerconfigspec) |
||||
* [RulerConfigStatus](#rulerconfigstatus) |
||||
|
||||
## AlertingRule |
||||
|
||||
AlertingRule is the Schema for the alertingrules API |
||||
|
||||
|
||||
<em>appears in: [AlertingRuleList](#alertingrulelist)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| metadata | | [metav1.ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#objectmeta-v1-meta) | false | |
||||
| spec | | [AlertingRuleSpec](#alertingrulespec) | false | |
||||
| status | | [AlertingRuleStatus](#alertingrulestatus) | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## AlertingRuleGroup |
||||
|
||||
AlertingRuleGroup defines a group of Loki alerting rules. |
||||
|
||||
|
||||
<em>appears in: [AlertingRuleSpec](#alertingrulespec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| name | Name of the alerting rule group. Must be unique within all alerting rules. | string | true | |
||||
| interval | Interval defines the time interval between evaluation of the given alerting rule. | PrometheusDuration | true | |
||||
| limit | Limit defines the number of alerts an alerting rule can produce. 0 is no limit. | int32 | false | |
||||
| rules | Rules defines a list of alerting rules | []*[AlertingRuleGroupSpec](#alertingrulegroupspec) | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## AlertingRuleGroupSpec |
||||
|
||||
AlertingRuleGroupSpec defines the spec for a Loki alerting rule. |
||||
|
||||
|
||||
<em>appears in: [AlertingRuleGroup](#alertingrulegroup)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| alert | The name of the alert. Must be a valid label value. | string | false | |
||||
| expr | The LogQL expression to evaluate. Every evaluation cycle this is evaluated at the current time, and all resultant time series become pending/firing alerts. | string | true | |
||||
| for | Alerts are considered firing once they have been returned for this long. Alerts which have not yet fired for long enough are considered pending. | PrometheusDuration | false | |
||||
| annotations | Annotations to add to each alert. | map[string]string | false | |
||||
| labels | Labels to add to each alert. | map[string]string | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## AlertingRuleList |
||||
|
||||
AlertingRuleList contains a list of AlertingRule |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| metadata | | [metav1.ListMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#listmeta-v1-meta) | false | |
||||
| items | | [][AlertingRule](#alertingrule) | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## AlertingRuleSpec |
||||
|
||||
AlertingRuleSpec defines the desired state of AlertingRule |
||||
|
||||
|
||||
<em>appears in: [AlertingRule](#alertingrule)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| tenantID | TenantID of tenant where the alerting rules are evaluated in. | string | true | |
||||
| groups | List of groups for alerting rules. | []*[AlertingRuleGroup](#alertingrulegroup) | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## AlertingRuleStatus |
||||
|
||||
AlertingRuleStatus defines the observed state of AlertingRule |
||||
|
||||
|
||||
<em>appears in: [AlertingRule](#alertingrule)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| conditions | Conditions of the AlertingRule generation health. | []metav1.Condition | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## AuthenticationSpec |
||||
|
||||
AuthenticationSpec defines the oidc configuration per tenant for lokiStack Gateway component. |
||||
|
||||
|
||||
<em>appears in: [TenantsSpec](#tenantsspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| tenantName | TenantName defines the name of the tenant. | string | true | |
||||
| tenantId | TenantID defines the id of the tenant. | string | true | |
||||
| oidc | OIDC defines the spec for the OIDC tenant's authentication. | *[OIDCSpec](#oidcspec) | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## AuthorizationSpec |
||||
|
||||
AuthorizationSpec defines the opa, role bindings and roles configuration per tenant for lokiStack Gateway component. |
||||
|
||||
|
||||
<em>appears in: [TenantsSpec](#tenantsspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| opa | OPA defines the spec for the third-party endpoint for tenant's authorization. | *[OPASpec](#opaspec) | true | |
||||
| roles | Roles defines a set of permissions to interact with a tenant. | [][RoleSpec](#rolespec) | true | |
||||
| roleBindings | RoleBindings defines configuration to bind a set of roles to a set of subjects. | [][RoleBindingsSpec](#rolebindingsspec) | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## IngestionLimitSpec |
||||
|
||||
IngestionLimitSpec defines the limits applied at the ingestion path. |
||||
|
||||
|
||||
<em>appears in: [LimitsTemplateSpec](#limitstemplatespec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| ingestionRate | IngestionRate defines the sample size per second. Units MB. | int32 | false | |
||||
| ingestionBurstSize | IngestionBurstSize defines the local rate-limited sample size per distributor replica. It should be set to the set at least to the maximum logs size expected in a single push request. | int32 | false | |
||||
| maxLabelNameLength | MaxLabelNameLength defines the maximum number of characters allowed for label keys in log streams. | int32 | false | |
||||
| maxLabelValueLength | MaxLabelValueLength defines the maximum number of characters allowed for label values in log streams. | int32 | false | |
||||
| maxLabelNamesPerSeries | MaxLabelNamesPerSeries defines the maximum number of label names per series in each log stream. | int32 | false | |
||||
| maxGlobalStreamsPerTenant | MaxGlobalStreamsPerTenant defines the maximum number of active streams per tenant, across the cluster. | int32 | false | |
||||
| maxLineSize | MaxLineSize defines the maximum line size on ingestion path. Units in Bytes. | int32 | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## LimitsSpec |
||||
|
||||
LimitsSpec defines the spec for limits applied at ingestion or query path across the cluster or per tenant. |
||||
|
||||
|
||||
<em>appears in: [LokiStackSpec](#lokistackspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| global | Global defines the limits applied globally across the cluster. | *[LimitsTemplateSpec](#limitstemplatespec) | false | |
||||
| tenants | Tenants defines the limits applied per tenant. | map[string][LimitsTemplateSpec](#limitstemplatespec) | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## LimitsTemplateSpec |
||||
|
||||
LimitsTemplateSpec defines the limits applied at ingestion or query path. |
||||
|
||||
|
||||
<em>appears in: [LimitsSpec](#limitsspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| ingestion | IngestionLimits defines the limits applied on ingested log streams. | *[IngestionLimitSpec](#ingestionlimitspec) | false | |
||||
| queries | QueryLimits defines the limit applied on querying log streams. | *[QueryLimitSpec](#querylimitspec) | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## LokiComponentSpec |
||||
|
||||
LokiComponentSpec defines the requirements to configure scheduling of each loki component individually. |
||||
|
||||
|
||||
<em>appears in: [LokiTemplateSpec](#lokitemplatespec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| replicas | Replicas defines the number of replica pods of the component. | int32 | false | |
||||
| nodeSelector | NodeSelector defines the labels required by a node to schedule the component onto it. | map[string]string | false | |
||||
| tolerations | Tolerations defines the tolerations required by a node to schedule the component onto it. | []corev1.Toleration | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## LokiStack |
||||
|
||||
LokiStack is the Schema for the lokistacks API |
||||
|
||||
|
||||
<em>appears in: [LokiStackList](#lokistacklist)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| spec | | [LokiStackSpec](#lokistackspec) | false | |
||||
| status | | [LokiStackStatus](#lokistackstatus) | false | |
||||
| metadata | | [metav1.ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#objectmeta-v1-meta) | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## LokiStackComponentStatus |
||||
|
||||
LokiStackComponentStatus defines the map of per pod status per LokiStack component. Each component is represented by a separate map of v1.Phase to a list of pods. |
||||
|
||||
|
||||
<em>appears in: [LokiStackStatus](#lokistackstatus)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| compactor | Compactor is a map to the pod status of the compactor pod. | PodStatusMap | false | |
||||
| distributor | Distributor is a map to the per pod status of the distributor deployment | PodStatusMap | false | |
||||
| indexGateway | IndexGateway is a map to the per pod status of the index gateway statefulset | PodStatusMap | false | |
||||
| ingester | Ingester is a map to the per pod status of the ingester statefulset | PodStatusMap | false | |
||||
| querier | Querier is a map to the per pod status of the querier deployment | PodStatusMap | false | |
||||
| queryFrontend | QueryFrontend is a map to the per pod status of the query frontend deployment | PodStatusMap | false | |
||||
| gateway | Gateway is a map to the per pod status of the lokistack gateway deployment. | PodStatusMap | false | |
||||
| ruler | Ruler is a map to the per pod status of the lokistack ruler statefulset. | PodStatusMap | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## LokiStackList |
||||
|
||||
LokiStackList contains a list of LokiStack |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| metadata | | [metav1.ListMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#listmeta-v1-meta) | false | |
||||
| items | | [][LokiStack](#lokistack) | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## LokiStackSpec |
||||
|
||||
LokiStackSpec defines the desired state of LokiStack |
||||
|
||||
|
||||
<em>appears in: [LokiStack](#lokistack)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| managementState | ManagementState defines if the CR should be managed by the operator or not. Default is managed. | ManagementStateType | false | |
||||
| size | Size defines one of the support Loki deployment scale out sizes. | LokiStackSizeType | true | |
||||
| storage | Storage defines the spec for the object storage endpoint to store logs. | [ObjectStorageSpec](#objectstoragespec) | true | |
||||
| storageClassName | Storage class name defines the storage class for ingester/querier PVCs. | string | true | |
||||
| replicationFactor | ReplicationFactor defines the policy for log stream replication. | int32 | true | |
||||
| rules | Rules defines the spec for the ruler component | *[RulesSpec](#rulesspec) | false | |
||||
| limits | Limits defines the limits to be applied to log stream processing. | *[LimitsSpec](#limitsspec) | false | |
||||
| template | Template defines the resource/limits/tolerations/nodeselectors per component | *[LokiTemplateSpec](#lokitemplatespec) | false | |
||||
| tenants | Tenants defines the per-tenant authentication and authorization spec for the lokistack-gateway component. | *[TenantsSpec](#tenantsspec) | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## LokiStackStatus |
||||
|
||||
LokiStackStatus defines the observed state of LokiStack |
||||
|
||||
|
||||
<em>appears in: [LokiStack](#lokistack)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| components | Components provides summary of all Loki pod status grouped per component. | [LokiStackComponentStatus](#lokistackcomponentstatus) | false | |
||||
| storage | Storage provides summary of all changes that have occurred to the storage configuration. | [LokiStackStorageStatus](#lokistackstoragestatus) | false | |
||||
| conditions | Conditions of the Loki deployment health. | []metav1.Condition | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## LokiStackStorageStatus |
||||
|
||||
LokiStackStorageStatus defines the observed state of the Loki storage configuration. |
||||
|
||||
|
||||
<em>appears in: [LokiStackStatus](#lokistackstatus)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| schemas | Schemas is a list of schemas which have been applied to the LokiStack. | [][ObjectStorageSchema](#objectstorageschema) | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## LokiTemplateSpec |
||||
|
||||
LokiTemplateSpec defines the template of all requirements to configure scheduling of all Loki components to be deployed. |
||||
|
||||
|
||||
<em>appears in: [LokiStackSpec](#lokistackspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| compactor | Compactor defines the compaction component spec. | *[LokiComponentSpec](#lokicomponentspec) | false | |
||||
| distributor | Distributor defines the distributor component spec. | *[LokiComponentSpec](#lokicomponentspec) | false | |
||||
| ingester | Ingester defines the ingester component spec. | *[LokiComponentSpec](#lokicomponentspec) | false | |
||||
| querier | Querier defines the querier component spec. | *[LokiComponentSpec](#lokicomponentspec) | false | |
||||
| queryFrontend | QueryFrontend defines the query frontend component spec. | *[LokiComponentSpec](#lokicomponentspec) | false | |
||||
| gateway | Gateway defines the lokistack gateway component spec. | *[LokiComponentSpec](#lokicomponentspec) | false | |
||||
| indexGateway | IndexGateway defines the index gateway component spec. | *[LokiComponentSpec](#lokicomponentspec) | false | |
||||
| ruler | Ruler defines the ruler component spec. | *[LokiComponentSpec](#lokicomponentspec) | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## OIDCSpec |
||||
|
||||
OIDCSpec defines the oidc configuration spec for lokiStack Gateway component. |
||||
|
||||
|
||||
<em>appears in: [AuthenticationSpec](#authenticationspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| secret | Secret defines the spec for the clientID, clientSecret and issuerCAPath for tenant's authentication. | *[TenantSecretSpec](#tenantsecretspec) | true | |
||||
| issuerURL | IssuerURL defines the URL for issuer. | string | true | |
||||
| redirectURL | RedirectURL defines the URL for redirect. | string | false | |
||||
| groupClaim | Group claim field from ID Token | string | false | |
||||
| usernameClaim | User claim field from ID Token | string | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## OPASpec |
||||
|
||||
OPASpec defines the opa configuration spec for lokiStack Gateway component. |
||||
|
||||
|
||||
<em>appears in: [AuthorizationSpec](#authorizationspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| url | URL defines the third-party endpoint for authorization. | string | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## ObjectStorageSchema |
||||
|
||||
ObjectStorageSchema defines the requirements needed to configure a new storage schema. |
||||
|
||||
|
||||
<em>appears in: [LokiStackStorageStatus](#lokistackstoragestatus), [ObjectStorageSpec](#objectstoragespec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| version | Version for writing and reading logs. | ObjectStorageSchemaVersion | true | |
||||
| effectiveDate | EffectiveDate is the date in UTC that the schema will be applied on. To ensure readibility of logs, this date should be before the current date in UTC. | StorageSchemaEffectiveDate | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## ObjectStorageSecretSpec |
||||
|
||||
ObjectStorageSecretSpec is a secret reference containing name only, no namespace. |
||||
|
||||
|
||||
<em>appears in: [ObjectStorageSpec](#objectstoragespec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| type | Type of object storage that should be used | ObjectStorageSecretType | true | |
||||
| name | Name of a secret in the namespace configured for object storage secrets. | string | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## ObjectStorageSpec |
||||
|
||||
ObjectStorageSpec defines the requirements to access the object storage bucket to persist logs by the ingester component. |
||||
|
||||
|
||||
<em>appears in: [LokiStackSpec](#lokistackspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| schemas | Schemas for reading and writing logs. | [][ObjectStorageSchema](#objectstorageschema) | true | |
||||
| secret | Secret for object storage authentication. Name of a secret in the same namespace as the LokiStack custom resource. | [ObjectStorageSecretSpec](#objectstoragesecretspec) | true | |
||||
| tls | TLS configuration for reaching the object storage endpoint. | *[ObjectStorageTLSSpec](#objectstoragetlsspec) | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## ObjectStorageTLSSpec |
||||
|
||||
ObjectStorageTLSSpec is the TLS configuration for reaching the object storage endpoint. |
||||
|
||||
|
||||
<em>appears in: [ObjectStorageSpec](#objectstoragespec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| caName | CA is the name of a ConfigMap containing a CA certificate. It needs to be in the same namespace as the LokiStack custom resource. | string | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## QueryLimitSpec |
||||
|
||||
QueryLimitSpec defines the limits applies at the query path. |
||||
|
||||
|
||||
<em>appears in: [LimitsTemplateSpec](#limitstemplatespec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| maxEntriesLimitPerQuery | MaxEntriesLimitsPerQuery defines the maximum number of log entries that will be returned for a query. | int32 | false | |
||||
| maxChunksPerQuery | MaxChunksPerQuery defines the maximum number of chunks that can be fetched by a single query. | int32 | false | |
||||
| maxQuerySeries | MaxQuerySeries defines the the maximum of unique series that is returned by a metric query. | int32 | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## RoleBindingsSpec |
||||
|
||||
RoleBindingsSpec binds a set of roles to a set of subjects. |
||||
|
||||
|
||||
<em>appears in: [AuthorizationSpec](#authorizationspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| name | | string | true | |
||||
| subjects | | [][Subject](#subject) | true | |
||||
| roles | | []string | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## RoleSpec |
||||
|
||||
RoleSpec describes a set of permissions to interact with a tenant. |
||||
|
||||
|
||||
<em>appears in: [AuthorizationSpec](#authorizationspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| name | | string | true | |
||||
| resources | | []string | true | |
||||
| tenants | | []string | true | |
||||
| permissions | | []PermissionType | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## RulesSpec |
||||
|
||||
RulesSpec deifnes the spec for the ruler component. |
||||
|
||||
|
||||
<em>appears in: [LokiStackSpec](#lokistackspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| enabled | Enabled defines a flag to enable/disable the ruler component | bool | true | |
||||
| selector | A selector to select which LokiRules to mount for loading alerting/recording rules from. | *[metav1.LabelSelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#labelselector-v1-meta) | false | |
||||
| namespaceSelector | Namespaces to be selected for PrometheusRules discovery. If unspecified, only the same namespace as the LokiStack object is in is used. | *[metav1.LabelSelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#labelselector-v1-meta) | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## Subject |
||||
|
||||
Subject represents a subject that has been bound to a role. |
||||
|
||||
|
||||
<em>appears in: [RoleBindingsSpec](#rolebindingsspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| name | | string | true | |
||||
| kind | | SubjectKind | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## TenantSecretSpec |
||||
|
||||
TenantSecretSpec is a secret reference containing name only for a secret living in the same namespace as the LokiStack custom resource. |
||||
|
||||
|
||||
<em>appears in: [OIDCSpec](#oidcspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| name | Name of a secret in the namespace configured for tenant secrets. | string | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## TenantsSpec |
||||
|
||||
TenantsSpec defines the mode, authentication and authorization configuration of the lokiStack gateway component. |
||||
|
||||
|
||||
<em>appears in: [LokiStackSpec](#lokistackspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| mode | Mode defines the mode in which lokistack-gateway component will be configured. | ModeType | true | |
||||
| authentication | Authentication defines the lokistack-gateway component authentication configuration spec per tenant. | [][AuthenticationSpec](#authenticationspec) | false | |
||||
| authorization | Authorization defines the lokistack-gateway component authorization configuration spec per tenant. | *[AuthorizationSpec](#authorizationspec) | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## RecordingRule |
||||
|
||||
RecordingRule is the Schema for the recordingrules API |
||||
|
||||
|
||||
<em>appears in: [RecordingRuleList](#recordingrulelist)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| metadata | | [metav1.ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#objectmeta-v1-meta) | false | |
||||
| spec | | [RecordingRuleSpec](#recordingrulespec) | false | |
||||
| status | | [RecordingRuleStatus](#recordingrulestatus) | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## RecordingRuleGroup |
||||
|
||||
RecordingRuleGroup defines a group of Loki recording rules. |
||||
|
||||
|
||||
<em>appears in: [RecordingRuleSpec](#recordingrulespec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| name | Name of the recording rule group. Must be unique within all recording rules. | string | true | |
||||
| interval | Interval defines the time interval between evaluation of the given recoding rule. | PrometheusDuration | true | |
||||
| limit | Limit defines the number of series a recording rule can produce. 0 is no limit. | int32 | false | |
||||
| rules | Rules defines a list of recording rules | []*[RecordingRuleGroupSpec](#recordingrulegroupspec) | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## RecordingRuleGroupSpec |
||||
|
||||
RecordingRuleGroupSpec defines the spec for a Loki recording rule. |
||||
|
||||
|
||||
<em>appears in: [RecordingRuleGroup](#recordingrulegroup)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| record | The name of the time series to output to. Must be a valid metric name. | string | false | |
||||
| expr | The LogQL expression to evaluate. Every evaluation cycle this is evaluated at the current time, and all resultant time series become pending/firing alerts. | string | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## RecordingRuleList |
||||
|
||||
RecordingRuleList contains a list of RecordingRule |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| metadata | | [metav1.ListMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#listmeta-v1-meta) | false | |
||||
| items | | [][RecordingRule](#recordingrule) | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## RecordingRuleSpec |
||||
|
||||
RecordingRuleSpec defines the desired state of RecordingRule |
||||
|
||||
|
||||
<em>appears in: [RecordingRule](#recordingrule)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| tenantID | TenantID of tenant where the recording rules are evaluated in. | string | true | |
||||
| groups | List of groups for recording rules. | []*[RecordingRuleGroup](#recordingrulegroup) | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## RecordingRuleStatus |
||||
|
||||
RecordingRuleStatus defines the observed state of RecordingRule |
||||
|
||||
|
||||
<em>appears in: [RecordingRule](#recordingrule)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| conditions | Conditions of the RecordingRule generation health. | []metav1.Condition | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## AlertManagerDiscoverySpec |
||||
|
||||
AlertManagerDiscoverySpec defines the configuration to use DNS resolution for AlertManager hosts. |
||||
|
||||
|
||||
<em>appears in: [AlertManagerSpec](#alertmanagerspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| enableSRV | Use DNS SRV records to discover Alertmanager hosts. | bool | true | |
||||
| refreshInterval | How long to wait between refreshing DNS resolutions of Alertmanager hosts. | PrometheusDuration | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## AlertManagerNotificationQueueSpec |
||||
|
||||
AlertManagerNotificationQueueSpec defines the configuration for AlertManager notification settings. |
||||
|
||||
|
||||
<em>appears in: [AlertManagerSpec](#alertmanagerspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| capacity | Capacity of the queue for notifications to be sent to the Alertmanager. | int32 | false | |
||||
| timeout | HTTP timeout duration when sending notifications to the Alertmanager. | PrometheusDuration | false | |
||||
| forOutageTolerance | Max time to tolerate outage for restoring \"for\" state of alert. | PrometheusDuration | false | |
||||
| forGracePeriod | Minimum duration between alert and restored \"for\" state. This is maintained only for alerts with configured \"for\" time greater than the grace period. | PrometheusDuration | false | |
||||
| resendDelay | Minimum amount of time to wait before resending an alert to Alertmanager. | PrometheusDuration | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## AlertManagerSpec |
||||
|
||||
AlertManagerSpec defines the configuration for ruler's alertmanager connectivity. |
||||
|
||||
|
||||
<em>appears in: [RulerConfigSpec](#rulerconfigspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| externalUrl | URL for alerts return path. | string | false | |
||||
| externalLabels | Additional labels to add to all alerts. | map[string]string | false | |
||||
| enableV2 | If enabled, then requests to Alertmanager use the v2 API. | bool | true | |
||||
| endpoints | List of AlertManager URLs to send notifications to. Each Alertmanager URL is treated as a separate group in the configuration. Multiple Alertmanagers in HA per group can be supported by using DNS resolution (See EnableDNSDiscovery). | []string | true | |
||||
| discovery | Defines the configuration for DNS-based discovery of AlertManager hosts. | *[AlertManagerDiscoverySpec](#alertmanagerdiscoveryspec) | false | |
||||
| notificationQueue | Defines the configuration for the notification queue to AlertManager hosts. | *[AlertManagerNotificationQueueSpec](#alertmanagernotificationqueuespec) | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## RelabelConfig |
||||
|
||||
RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines `<metric_relabel_configs>`-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs |
||||
|
||||
|
||||
<em>appears in: [RemoteWriteClientSpec](#remotewriteclientspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| sourceLabels | The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. | []string | true | |
||||
| separator | Separator placed between concatenated source label values. default is ';'. | string | false | |
||||
| targetLabel | Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. | string | false | |
||||
| regex | Regular expression against which the extracted value is matched. Default is '(.*)' | string | false | |
||||
| modulus | Modulus to take of the hash of the source label values. | uint64 | false | |
||||
| replacement | Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' | string | false | |
||||
| action | Action to perform based on regex matching. Default is 'replace' | RelabelActionType | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## RemoteWriteClientQueueSpec |
||||
|
||||
RemoteWriteClientQueueSpec defines the configuration of the remote write client queue. |
||||
|
||||
|
||||
<em>appears in: [RemoteWriteSpec](#remotewritespec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| capacity | Number of samples to buffer per shard before we block reading of more | int32 | false | |
||||
| maxShards | Maximum number of shards, i.e. amount of concurrency. | int32 | false | |
||||
| minShards | Minimum number of shards, i.e. amount of concurrency. | int32 | false | |
||||
| maxSamplesPerSend | Maximum number of samples per send. | int32 | false | |
||||
| batchSendDeadline | Maximum time a sample will wait in buffer. | PrometheusDuration | false | |
||||
| minBackOffPeriod | Initial retry delay. Gets doubled for every retry. | PrometheusDuration | false | |
||||
| maxBackOffPeriod | Maximum retry delay. | PrometheusDuration | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## RemoteWriteClientSpec |
||||
|
||||
RemoteWriteClientSpec defines the configuration of the remote write client. |
||||
|
||||
|
||||
<em>appears in: [RemoteWriteSpec](#remotewritespec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| name | Name of the remote write config, which if specified must be unique among remote write configs. | string | true | |
||||
| url | The URL of the endpoint to send samples to. | string | true | |
||||
| timeout | Timeout for requests to the remote write endpoint. | PrometheusDuration | false | |
||||
| authorization | Type of authorzation to use to access the remote write endpoint | RemoteWriteAuthType | true | |
||||
| authorizationSecretName | Name of a secret in the namespace configured for authorization secrets. | string | true | |
||||
| additionalHeaders | Additional HTTP headers to be sent along with each remote write request. | map[string]string | false | |
||||
| relabelConfigs | List of remote write relabel configurations. | [][RelabelConfig](#relabelconfig) | false | |
||||
| proxyUrl | Optional proxy URL. | string | false | |
||||
| followRedirects | Configure whether HTTP requests follow HTTP 3xx redirects. | bool | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## RemoteWriteSpec |
||||
|
||||
RemoteWriteSpec defines the configuration for ruler's remote_write connectivity. |
||||
|
||||
|
||||
<em>appears in: [RulerConfigSpec](#rulerconfigspec)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| enabled | Enable remote-write functionality. | bool | false | |
||||
| refreshPeriod | Minimum period to wait between refreshing remote-write reconfigurations. | PrometheusDuration | false | |
||||
| client | Defines the configuration for remote write client. | *[RemoteWriteClientSpec](#remotewriteclientspec) | false | |
||||
| queue | Defines the configuration for remote write client queue. | *[RemoteWriteClientQueueSpec](#remotewriteclientqueuespec) | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## RulerConfig |
||||
|
||||
RulerConfig is the Schema for the rulerconfigs API |
||||
|
||||
|
||||
<em>appears in: [RulerConfigList](#rulerconfiglist)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| metadata | | [metav1.ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#objectmeta-v1-meta) | false | |
||||
| spec | | [RulerConfigSpec](#rulerconfigspec) | false | |
||||
| status | | [RulerConfigStatus](#rulerconfigstatus) | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## RulerConfigList |
||||
|
||||
RulerConfigList contains a list of RuleConfig |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| metadata | | [metav1.ListMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#listmeta-v1-meta) | false | |
||||
| items | | [][RulerConfig](#rulerconfig) | true | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## RulerConfigSpec |
||||
|
||||
RulerConfigSpec defines the desired state of Ruler |
||||
|
||||
|
||||
<em>appears in: [RulerConfig](#rulerconfig)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| evaluationInterval | Interval on how frequently to evaluate rules. | PrometheusDuration | false | |
||||
| pollInterval | Interval on how frequently to poll for new rule definitions. | PrometheusDuration | false | |
||||
| alertmanager | Defines alert manager configuration to notify on firing alerts. | *[AlertManagerSpec](#alertmanagerspec) | false | |
||||
| remoteWrite | Defines a remote write endpoint to write recording rule metrics. | *[RemoteWriteSpec](#remotewritespec) | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## RulerConfigStatus |
||||
|
||||
RulerConfigStatus defines the observed state of RulerConfig |
||||
|
||||
|
||||
<em>appears in: [RulerConfig](#rulerconfig)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| conditions | Conditions of the RulerConfig health. | []metav1.Condition | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
@ -0,0 +1,30 @@ |
||||
--- |
||||
title: "Compatibility" |
||||
description: "The Loki Operator supports a number of Kubernetes and Loki releases." |
||||
lead: "" |
||||
date: 2022-06-21T08:48:45+00:00 |
||||
lastmod: 2022-06-21T08:48:45+00:00 |
||||
draft: false |
||||
images: [] |
||||
menu: |
||||
docs: |
||||
parent: "operator" |
||||
weight: 100 |
||||
toc: true |
||||
--- |
||||
|
||||
The Loki Operator supports a number of Kubernetes and Loki releases. |
||||
|
||||
## Kubernetes |
||||
|
||||
The Loki Operator uses client-go to communicate with Kubernetes clusters. The supported Kubernetes cluster version is determined by client-go. The compatibility matrix for client-go and Kubernetes clusters can be found [here](https://github.com/kubernetes/client-go#compatibility-matrix). All additional compatibility is only best effort, or happens to still/already be supported. The currently used client-go version is "v0.23.5". |
||||
|
||||
Due to the use of CustomResourceDefinitions Kubernetes >= v1.7.0 is required. |
||||
|
||||
Due to the use of apiextensions.k8s.io/v1 CustomResourceDefinitions, requires Kubernetes >= v1.16.0. |
||||
|
||||
## Loki |
||||
|
||||
The versions of Loki compatible to be run with the Loki Operator are: |
||||
|
||||
* v2.5.0 |
||||
@ -0,0 +1,39 @@ |
||||
--- |
||||
title: "Design" |
||||
description: "Design of the Loki Operator" |
||||
lead: "" |
||||
date: 2022-06-21T08:48:45+00:00 |
||||
lastmod: 2022-06-21T08:48:45+00:00 |
||||
draft: false |
||||
images: [] |
||||
menu: |
||||
docs: |
||||
parent: "operator" |
||||
weight: 10 |
||||
toc: true |
||||
--- |
||||
|
||||
This document describes the design and interaction between the custom resource definitions that the Loki Operator introduces. |
||||
|
||||
The custom resources that the Loki Operator introduces are: |
||||
|
||||
* [LokiStack](#lokistack) |
||||
* [AlertingRule](#alertingrule) |
||||
* [RecordingRule](#recordingrule) |
||||
* [RulerConfig](#rulerconfig) |
||||
|
||||
## LokiStack |
||||
|
||||
Coming soon. |
||||
|
||||
## AlertingRule |
||||
|
||||
Coming soon. |
||||
|
||||
## RecordingRule |
||||
|
||||
Coming soon. |
||||
|
||||
## RulerConfig |
||||
|
||||
Coming soon. |
||||
@ -0,0 +1,55 @@ |
||||
--- |
||||
title: "Feature Flags" |
||||
description: "Generated API docs for the Loki Operator" |
||||
lead: "" |
||||
date: 2021-03-08T08:49:31+00:00 |
||||
draft: false |
||||
images: [] |
||||
menu: |
||||
docs: |
||||
parent: "operator" |
||||
weight: 1000 |
||||
toc: true |
||||
--- |
||||
|
||||
This Document documents the types introduced by the Loki Operator to be consumed by users. |
||||
|
||||
> Note this document is generated from code comments. When contributing a change to this document please do so by changing the code comments. |
||||
|
||||
## Table of Contents |
||||
* [FeatureFlags](#featureflags) |
||||
* [ProjectConfig](#projectconfig) |
||||
|
||||
## FeatureFlags |
||||
|
||||
FeatureFlags is a set of operator feature flags. |
||||
|
||||
|
||||
<em>appears in: [ProjectConfig](#projectconfig)</em> |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| enableCertSigningService | | bool | false | |
||||
| enableServiceMonitors | | bool | false | |
||||
| enableTlsHttpServices | | bool | false | |
||||
| enableTlsServiceMonitorConfig | | bool | false | |
||||
| enableTlsGrpcServices | | bool | false | |
||||
| enableLokiStackAlerts | | bool | false | |
||||
| enableLokiStackGateway | | bool | false | |
||||
| enableLokiStackGatewayRoute | | bool | false | |
||||
| enableGrafanaLabsStats | | bool | false | |
||||
| enableLokiStackWebhook | | bool | false | |
||||
| enableAlertingRuleWebhook | | bool | false | |
||||
| enableRecordingRuleWebhook | | bool | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
|
||||
## ProjectConfig |
||||
|
||||
ProjectConfig is the Schema for the projectconfigs API |
||||
|
||||
| Field | Description | Scheme | Required | |
||||
| ----- | ----------- | ------ | -------- | |
||||
| featureFlags | | [FeatureFlags](#featureflags) | false | |
||||
|
||||
[Back to TOC](#table-of-contents) |
||||
@ -0,0 +1,9 @@ |
||||
--- |
||||
title : "Prologue" |
||||
description: "Prologue for the Loki Operator." |
||||
lead: "" |
||||
date: 2022-06-21T08:48:45+00:00 |
||||
lastmod: 2022-06-21T08:48:45+00:00 |
||||
draft: false |
||||
images: [] |
||||
--- |
||||
@ -0,0 +1 @@ |
||||
../../CONTRIBUTING.md |
||||
@ -0,0 +1,28 @@ |
||||
--- |
||||
title: "Introduction" |
||||
description: "The Loki Operator provides Kubernetes native deployment and management of Loki and related logging components" |
||||
lead: "" |
||||
date: 2022-06-21T08:48:45+00:00 |
||||
lastmod: 2022-06-21T08:48:45+00:00 |
||||
draft: false |
||||
images: [] |
||||
menu: |
||||
docs: |
||||
parent: "prologue" |
||||
weight: 100 |
||||
toc: true |
||||
--- |
||||
|
||||
The Loki Operator provides [Kubernetes](https://kubernetes.io/) native deployment and management of [Loki](https://github.com/grafana/loki) and related logging components. |
||||
The purpose of this project is to simplify and automate the configuration of a Loki based logging stack for Kubernetes clusters. |
||||
|
||||
The Loki operator includes, but is not limited to, the following features: |
||||
|
||||
* Kubernetes Custom Resources: Use Kubernetes custom resources to deploy and manage Loki, Alerting rules, Recording rules, and related components. |
||||
* Simplified Deployment Configuration: Configure the fundamentals of Loki like tenants, limits, replication factor and storage from a native Kubernetes resource. |
||||
|
||||
## Get started |
||||
|
||||
### Quick Start |
||||
|
||||
One page summary of how to start with the Loki Operator. [Quick Start →]({{< ref "quickstart" >}}) |
||||
@ -0,0 +1,39 @@ |
||||
--- |
||||
title: Quick Start |
||||
description: Quick Start |
||||
lead: "" |
||||
lastmod: "2021-03-08T08:48:57+00:00" |
||||
draft: false |
||||
images: [] |
||||
menu: |
||||
docs: |
||||
parent: prologue |
||||
weight: 200 |
||||
toc: true |
||||
--- |
||||
|
||||
One page summary on how to start with Loki Operator and LokiStack. |
||||
|
||||
## Requirements |
||||
|
||||
The easiest way to start with the Loki Operator is to use Kubernetes [kind](sigs.k8s.io/kind). |
||||
|
||||
## Deploy from Github repository |
||||
|
||||
The simplest form to deploy the Loki Operator and a LokiStack for demo purposes is: |
||||
|
||||
```shell |
||||
make quickstart |
||||
``` |
||||
|
||||
If you want to test local changes from your repository fork, you need to provide an image registry organization that you own that has an image repository name `loki-operator`, e.g. `quay.io/my-company-org/loki-operator`. The command to use your custom images is: |
||||
|
||||
```shell |
||||
make quickstart REGISTRY_ORG=my-company-org |
||||
``` |
||||
|
||||
## Further reading |
||||
|
||||
For detailed instructions on how to start hacking on the Loki Operator, please follow one of the two guides: |
||||
- [Hack using an image registry →]({{< ref "hack_loki_operator.md" >}}) |
||||
- [Hack using make run →]({{< ref "hack_operator_make_run.md" >}}) |
||||
@ -1,4 +1,18 @@ |
||||
# Forwarding Logs to LokiStack |
||||
--- |
||||
title: "Forwarding Logs to LokiStack" |
||||
description: "Forwarding Logs to Loki-Operator managed LokiStack resources" |
||||
lead: "" |
||||
date: 2022-06-21T08:48:45+00:00 |
||||
lastmod: 2022-06-21T08:48:45+00:00 |
||||
draft: false |
||||
images: [] |
||||
menu: |
||||
docs: |
||||
parent: "user-guides" |
||||
weight: 100 |
||||
toc: true |
||||
--- |
||||
|
||||
|
||||
This document will describe how to send application, infrastructure, and audit logs to the LokiStack Gateway as different tenants using Promtail or Fluentd. The built-in gateway provides secure access to the distributor (and query-frontend) via consulting an OAuth/OIDC endpoint for the request subject. |
||||
|
||||
@ -1,4 +1,17 @@ |
||||
# Forwarding Logs to LokiStack without LokiStack Gateway |
||||
--- |
||||
title: "Forwarding Logs without the Gateway" |
||||
description: "Forwarding Logs to LokiStack without LokiStack Gateway" |
||||
lead: "" |
||||
date: 2022-06-21T08:48:45+00:00 |
||||
lastmod: 2022-06-21T08:48:45+00:00 |
||||
draft: false |
||||
images: [] |
||||
menu: |
||||
docs: |
||||
parent: "user-guides" |
||||
weight: 100 |
||||
toc: true |
||||
--- |
||||
|
||||
This document describes how to send application, infrastructure, and audit logs to the Loki Distributor as different tenants using Fluentd or Vector. |
||||
|
||||
@ -0,0 +1,17 @@ |
||||
[build] |
||||
publish = "website/public" |
||||
functions = "functions" |
||||
|
||||
[build.environment] |
||||
# HUGO_VERSION = "..." is set by bingo which allows reproducible local environment. |
||||
NODE_VERSION = "15.5.1" |
||||
NPM_VERSION = "7.3.0" |
||||
|
||||
[context.production] |
||||
command = "(env && make web) || (sleep 30; false)" |
||||
|
||||
[context.deploy-preview] |
||||
command = "(env && make web WEBSITE_BASE_URL=${DEPLOY_PRIME_URL}) || (sleep 30; false)" |
||||
|
||||
[context.branch-deploy] |
||||
command = "(env && make web WEBSITE_BASE_URL=${DEPLOY_PRIME_URL}) || (sleep 30; false)" |
||||
@ -0,0 +1,6 @@ |
||||
--- |
||||
title: "{{ replace .Name "-" " " | title }}" |
||||
date: {{ .Date }} |
||||
draft: true |
||||
--- |
||||
|
||||
@ -0,0 +1,16 @@ |
||||
--- |
||||
title: "{{ replace .Name "-" " " | title }}" |
||||
description: "" |
||||
lead: "" |
||||
date: {{ .Date }} |
||||
lastmod: {{ .Date }} |
||||
draft: true |
||||
images: [] |
||||
menu: |
||||
docs: |
||||
parent: "" |
||||
weight: 999 |
||||
toc: true |
||||
--- |
||||
|
||||
{{< img src="{{ .Name | urlize }}.jpg" alt="{{ replace .Name "-" " " | title }}" caption="{{ replace .Name "-" " " | title }}" >}} |
||||
@ -0,0 +1,18 @@ |
||||
import Clipboard from 'clipboard'; |
||||
|
||||
var clipboard = new Clipboard('.btn-clipboard'); |
||||
|
||||
clipboard.on('success', function(e) { |
||||
/* |
||||
console.info('Action:', e.action); |
||||
console.info('Text:', e.text); |
||||
console.info('Trigger:', e.trigger); |
||||
*/ |
||||
|
||||
e.clearSelection(); |
||||
}); |
||||
|
||||
clipboard.on('error', function(e) { |
||||
console.error('Action:', e.action); |
||||
console.error('Trigger:', e.trigger); |
||||
}); |
||||
@ -0,0 +1,140 @@ |
||||
var suggestions = document.getElementById('suggestions'); |
||||
var userinput = document.getElementById('userinput'); |
||||
|
||||
document.addEventListener('keydown', inputFocus); |
||||
|
||||
function inputFocus(e) { |
||||
|
||||
if (e.keyCode === 191 ) { |
||||
e.preventDefault(); |
||||
userinput.focus(); |
||||
} |
||||
|
||||
if (e.keyCode === 27 ) { |
||||
userinput.blur(); |
||||
suggestions.classList.add('d-none'); |
||||
} |
||||
|
||||
} |
||||
|
||||
document.addEventListener('click', function(event) { |
||||
|
||||
var isClickInsideElement = suggestions.contains(event.target); |
||||
|
||||
if (!isClickInsideElement) { |
||||
suggestions.classList.add('d-none'); |
||||
} |
||||
|
||||
}); |
||||
|
||||
/* |
||||
Source: |
||||
- https://dev.to/shubhamprakash/trap-focus-using-javascript-6a3
|
||||
*/ |
||||
|
||||
document.addEventListener('keydown',suggestionFocus); |
||||
|
||||
function suggestionFocus(e){ |
||||
|
||||
const focusableSuggestions= suggestions.querySelectorAll('a'); |
||||
const focusable= [...focusableSuggestions]; |
||||
const index = focusable.indexOf(document.activeElement); |
||||
|
||||
let nextIndex = 0; |
||||
|
||||
if (e.keyCode === 38) { |
||||
e.preventDefault(); |
||||
nextIndex= index > 0 ? index-1 : 0; |
||||
focusableSuggestions[nextIndex].focus(); |
||||
} |
||||
else if (e.keyCode === 40) { |
||||
e.preventDefault(); |
||||
nextIndex= index+1 < focusable.length ? index+1 : index; |
||||
focusableSuggestions[nextIndex].focus(); |
||||
} |
||||
|
||||
} |
||||
|
||||
|
||||
(function(){ |
||||
|
||||
var index = new FlexSearch({ |
||||
preset: 'score', |
||||
cache: true, |
||||
doc: { |
||||
id: 'id', |
||||
field: [ |
||||
'title', |
||||
'description', |
||||
'content', |
||||
], |
||||
store: [ |
||||
'href', |
||||
'title', |
||||
'description', |
||||
], |
||||
}, |
||||
}); |
||||
|
||||
var docs = [ |
||||
{{ range $index, $page := (where .Site.Pages "Section" "docs") -}} |
||||
{ |
||||
id: {{ $index }}, |
||||
href: "{{ .RelPermalink | relURL }}", |
||||
title: {{ .Title | jsonify }}, |
||||
description: {{ .Params.description | jsonify }}, |
||||
content: {{ .Content | jsonify }} |
||||
}, |
||||
{{ end -}} |
||||
]; |
||||
|
||||
index.add(docs); |
||||
|
||||
userinput.addEventListener('input', show_results, true); |
||||
suggestions.addEventListener('click', accept_suggestion, true); |
||||
|
||||
function show_results(){ |
||||
|
||||
var value = this.value; |
||||
var results = index.search(value, 5); |
||||
var entry, childs = suggestions.childNodes; |
||||
var i = 0, len = results.length; |
||||
|
||||
suggestions.classList.remove('d-none'); |
||||
|
||||
results.forEach(function(page) { |
||||
|
||||
entry = document.createElement('div'); |
||||
|
||||
entry.innerHTML = '<a href><span></span><span></span></a>'; |
||||
|
||||
a = entry.querySelector('a'), |
||||
t = entry.querySelector('span:first-child'), |
||||
d = entry.querySelector('span:nth-child(2)'); |
||||
|
||||
a.href = page.href; |
||||
t.textContent = page.title; |
||||
d.textContent = page.description; |
||||
|
||||
suggestions.appendChild(entry); |
||||
|
||||
}); |
||||
|
||||
while(childs.length > len){ |
||||
|
||||
suggestions.removeChild(childs[i]) |
||||
} |
||||
|
||||
} |
||||
|
||||
function accept_suggestion(){ |
||||
|
||||
while(suggestions.lastChild){ |
||||
|
||||
suggestions.removeChild(suggestions.lastChild); |
||||
} |
||||
|
||||
return false; |
||||
} |
||||
|
||||
}()); |
||||
@ -0,0 +1,3 @@ |
||||
$lokioperator: #2b388f; |
||||
|
||||
$primary: $lokioperator; |
||||
@ -0,0 +1,37 @@ |
||||
/** Import Bootstrap functions */ |
||||
@import "bootstrap/scss/functions"; |
||||
|
||||
/** Import theme variables */ |
||||
@import "../../themes/doks/assets/scss/common/variables"; |
||||
|
||||
/** Overwrite variables */ |
||||
@import "variables"; |
||||
|
||||
/** Import Bootstrap */ |
||||
@import "bootstrap/scss/bootstrap"; |
||||
|
||||
/** Import highlight.js */ |
||||
// @import "highlight.js/scss/dracula"; |
||||
|
||||
/** Import KaTeX */ |
||||
@import "katex/dist/katex"; |
||||
|
||||
/** Import theme styles */ |
||||
@import "../../themes/doks/assets/scss/common/fonts"; |
||||
@import "../../themes/doks/assets/scss/common/global"; |
||||
@import "../../themes/doks/assets/scss/common/dark"; |
||||
@import "../../themes/doks/assets/scss/components/doks"; |
||||
// @import "components/syntax"; |
||||
@import "../../themes/doks/assets/scss/components/code"; |
||||
@import "../../themes/doks/assets/scss/components/alerts"; |
||||
@import "../../themes/doks/assets/scss/components/buttons"; |
||||
@import "../../themes/doks/assets/scss/components/comments"; |
||||
@import "../../themes/doks/assets/scss/components/forms"; |
||||
@import "../../themes/doks/assets/scss/components/images"; |
||||
@import "../../themes/doks/assets/scss/components/search"; |
||||
@import "../../themes/doks/assets/scss/components/tables"; |
||||
@import "../../themes/doks/assets/scss/layouts/footer"; |
||||
@import "../../themes/doks/assets/scss/layouts/header"; |
||||
@import "../../themes/doks/assets/scss/layouts/pages"; |
||||
@import "../../themes/doks/assets/scss/layouts/posts"; |
||||
@import "../../themes/doks/assets/scss/layouts/sidebar"; |
||||
@ -0,0 +1,7 @@ |
||||
baseURL = 'https://loki-operator.dev/' |
||||
languageCode = 'en-us' |
||||
title = 'Loki Operator' |
||||
theme = 'doks' |
||||
|
||||
[permalinks] |
||||
docs = "/:sections/:filename.md" |
||||
@ -0,0 +1,27 @@ |
||||
enableGitInfo = true |
||||
|
||||
[markup] |
||||
[markup.highlight] |
||||
codeFences = true |
||||
guessSyntax = false |
||||
hl_Lines = "" |
||||
lineNoStart = 1 |
||||
lineNos = false |
||||
lineNumbersInTable = true |
||||
noClasses = false |
||||
style = "dracula" |
||||
tabWidth = 4 |
||||
|
||||
[module] |
||||
[[module.mounts]] |
||||
source = "assets" |
||||
target = "assets" |
||||
[[module.mounts]] |
||||
source = "static" |
||||
target = "static" |
||||
[[module.mounts]] |
||||
source = "node_modules/flexsearch" |
||||
target = "assets/js/vendor/flexsearch" |
||||
[[module.mounts]] |
||||
source = "node_modules/katex" |
||||
target = "assets/js/vendor/katex" |
||||
@ -0,0 +1,45 @@ |
||||
[[docs]] |
||||
name = "Prologue" |
||||
weight = 10 |
||||
identifier = "prologue" |
||||
url = "/docs/prologue" |
||||
|
||||
[[docs]] |
||||
name = "Loki Operator" |
||||
weight = 40 |
||||
identifier = "operator" |
||||
url = "/docs/operator/" |
||||
|
||||
[[docs]] |
||||
name = "LokiStack" |
||||
weight = 40 |
||||
identifier = "lokistack" |
||||
url = "/docs/lokistack/" |
||||
|
||||
[[docs]] |
||||
name = "User Guides" |
||||
weight = 40 |
||||
identifier = "user-guides" |
||||
url = "/docs/user-guides/" |
||||
|
||||
[[docs]] |
||||
name = "Enhancements" |
||||
weight = 50 |
||||
identifier = "enhancements" |
||||
url = "/docs/enhancements/" |
||||
|
||||
[[main]] |
||||
name = "Docs" |
||||
url = "/docs/prologue/introduction.md/" |
||||
weight = 10 |
||||
|
||||
[[main]] |
||||
name = "Adopters" |
||||
url = "/adopters" |
||||
weight = 30 |
||||
|
||||
[[social]] |
||||
name = "GitHub" |
||||
pre = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-github\"><path d=\"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22\"></path></svg>" |
||||
url = "https://github.com/grafana/loki/tree/main/operator" |
||||
weight = 10 |
||||
@ -0,0 +1,47 @@ |
||||
# Meta Data for SEO |
||||
|
||||
## Homepage |
||||
title = "Loki Operator" |
||||
titleSeparator = "-" |
||||
titleAddition = "Kubernetes Operator for Loki" |
||||
description = "A Kubernetes Operator for Loki provided by the Grafana Loki SIG operator. " |
||||
|
||||
## Open Graph + Twitter Cards |
||||
images = ["logo.png"] |
||||
#twitterSite = "" |
||||
#twitterCreator = "" |
||||
#facebookAuthor = "" |
||||
#facebookPublisher = "" |
||||
ogLocale = "en_US" |
||||
|
||||
## JSON-LD |
||||
schemaType = "Organization" |
||||
schemaLogo = "logo.png" |
||||
schemaTwitter = "" |
||||
schemaLinkedIn = "" |
||||
schemaGitHub = "https://github.com/grafana" |
||||
schemaSection = "blog" |
||||
|
||||
## Sitelinks Search Box |
||||
siteLinksSearchBox = false |
||||
|
||||
## Chrome Browser |
||||
themeColor = "#fff" |
||||
|
||||
# Footer |
||||
footer = "Powered by <a href=\"https://www.netlify.com/\">Netlify</a>, <a href=\"https://gohugo.io/\">Hugo</a>, and based on <a href=\"https://getdoks.org/\">Doks</a>" |
||||
|
||||
# Edit Page |
||||
docsRepo = "https://github.com/grafana/loki" |
||||
editPage = false |
||||
|
||||
[options] |
||||
lazySizes = false |
||||
clipBoard = true |
||||
instantPage = false |
||||
flexSearch = true |
||||
darkMode = true |
||||
bootStrapJs = false |
||||
breadCrumb = true |
||||
highLight = false |
||||
kaTex = false |
||||
@ -0,0 +1,32 @@ |
||||
const autoprefixer = require('autoprefixer'); |
||||
const purgecss = require('@fullhuman/postcss-purgecss'); |
||||
const whitelister = require('purgecss-whitelister'); |
||||
|
||||
module.exports = { |
||||
plugins: [ |
||||
autoprefixer(), |
||||
purgecss({ |
||||
content: [ |
||||
'./layouts/**/*.html', |
||||
'./content/**/*.md', |
||||
'./themes/doks/layouts/**/*.html', |
||||
], |
||||
safelist: [ |
||||
'lazyloaded', |
||||
'table', |
||||
'thead', |
||||
'tbody', |
||||
'tr', |
||||
'th', |
||||
'td', |
||||
...whitelister([ |
||||
'./themes/doks/assets/scss/components/_doks.scss', |
||||
'./themes/doks/assets/scss/components/_code.scss', |
||||
'./themes/doks/assets/scss/components/_search.scss', |
||||
'./themes/doks/assets/scss/common/_dark.scss', |
||||
'./node_modules/katex/dist/katex.css', |
||||
]), |
||||
], |
||||
}), |
||||
], |
||||
} |
||||
@ -0,0 +1,9 @@ |
||||
--- |
||||
title : "Loki-Operator" |
||||
description: "A Kubernetes Operator for Loki provided by the Grafana Loki SIG operator. " |
||||
lead: "A Kubernetes Operator for Loki provided by the Grafana Loki SIG operator. " |
||||
date: 2021-04-30T09:45:00+00:00 |
||||
lastmod: 2021-04-30T09:45:00+00:00 |
||||
draft: false |
||||
images: [] |
||||
--- |
||||
@ -0,0 +1 @@ |
||||
../../ADOPTERS.md |
||||
@ -0,0 +1 @@ |
||||
../../docs |
||||
@ -0,0 +1,58 @@ |
||||
{{ define "main" }} |
||||
<section class="section container-fluid mt-n3 pb-3"> |
||||
<div class="row justify-content-center"> |
||||
<div class="col-lg-12 text-center"> |
||||
<img src="{{ .Site.BaseURL | absURL }}/logo.png" alt="Loki Logo" height="200"> |
||||
<h1 class="mt-0">{{ .Title }}</h1> |
||||
</div> |
||||
<div class="col-lg-9 col-xl-8 text-center"> |
||||
<p class="lead">{{ .Params.lead | safeHTML }}</p> |
||||
<a class="btn btn-primary btn-lg px-4 mb-2" href="{{ "docs/prologue/introduction.md/" | relURL }}" role="button">Get started</a> |
||||
<p class="meta">AGPLv3 Licensed. <a href="https://github.com/grafana/loki">GitHub</a></p> |
||||
</div> |
||||
</div> |
||||
</section> |
||||
{{ end }} |
||||
|
||||
{{ define "sidebar-prefooter" }} |
||||
<section class="section section-sm"> |
||||
<div class="container"> |
||||
<div class="row justify-content-center text-center"> |
||||
<div class="col-lg-5"> |
||||
<h2 class="h4">LokiStack</h2> |
||||
<p>Secure and multi-tenant Loki instances with built-in authentication/authorization</p> |
||||
</div> |
||||
<div class="col-lg-5"> |
||||
<h2 class="h4">Alerting Rules</h2> |
||||
<p>Notify Alertmanager hosts by declarative kubernetes native Alerting Rules</p> |
||||
</div> |
||||
<div class="col-lg-5"> |
||||
<h2 class="h4">Recording rules</h2> |
||||
<p>Push recorded metrics by declarative kuberentes native Recording Rules</p> |
||||
</div> |
||||
</div> |
||||
<div class="row justify-content-center text-center"> |
||||
<div class="col-lg-5"> |
||||
<h2 class="h4">AlertManager Support</h2> |
||||
</div> |
||||
<div class="col-lg-5"> |
||||
<h2 class="h4">Authentication using OIDC/OAuth2/OpenShift</h2> |
||||
</div> |
||||
<div class="col-lg-5"> |
||||
<h2 class="h4">Authorization using Open Policy Agent</h2> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</section> |
||||
{{ end }} |
||||
|
||||
|
||||
{{ define "sidebar-footer" }} |
||||
<section class="section section-sm container-fluid"> |
||||
<div class="row justify-content-center text-center"> |
||||
<div class="col-lg-9"> |
||||
{{- .Content -}} |
||||
</div> |
||||
</div> |
||||
</section> |
||||
{{ end }} |
||||
@ -0,0 +1 @@ |
||||
./themes/doks/node_modules |
||||
|
After Width: | Height: | Size: 20 KiB |
@ -0,0 +1,19 @@ |
||||
{ |
||||
"name": "Loki Operator", |
||||
"short_name": "Loki Operator", |
||||
"icons": [ |
||||
{ |
||||
"src": "/android-chrome-192x192.png", |
||||
"sizes": "192x192", |
||||
"type": "image/png" |
||||
}, |
||||
{ |
||||
"src": "/android-chrome-512x512.png", |
||||
"sizes": "512x512", |
||||
"type": "image/png" |
||||
} |
||||
], |
||||
"theme_color": "#fff", |
||||
"background_color": "#fff", |
||||
"display": "standalone" |
||||
} |
||||
@ -0,0 +1 @@ |
||||
Subproject commit 14fe597271d6efc7d77461798f22a6af068300d2 |
||||
Loading…
Reference in new issue