SKS Variant
This folder contains the variant to use when deploying in Exoscale using an SKS cluster.
Usage
This module can be declared by adding the following block on your Terraform configuration:
module "loki-stack" {
source = "git::https://github.com/camptocamp/devops-stack-module-loki-stack//sks?ref=<RELEASE>"
cluster_id = module.sks.cluster_id
argocd_namespace = module.argocd_bootstrap.argocd_namespace
distributed_mode = true
logs_storage = {
bucket_name = resource.aws_s3_bucket.this["loki"].id
region = resource.aws_s3_bucket.this["loki"].region
access_key = resource.exoscale_iam_access_key.s3_iam_key["loki"].key
secret_key = resource.exoscale_iam_access_key.s3_iam_key["loki"].secret
}
dependency_ids = {
argocd = module.argocd_bootstrap.id
longhorn = module.longhorn.id
}
}
You are in charge of creating a S3 bucket for Loki to store the archived logs. We’ve decided to keep the creation of this bucket outside of this module, mainly because the persistence of the data should not be related to the instantiation of the module itself. |
Check the SKS deployment example to see how to create the S3 bucket and to better understand the values passed on the example above. |
If there is a need to configure something besides the common settings that we have provided, you can customize the chart’s values.yaml
by adding an Helm configuration as an HCL structure:
module "loki-stack" {
source = "git::https://github.com/camptocamp/devops-stack-module-loki-stack//sks?ref=<RELEASE>"
cluster_id = module.sks.cluster_id
argocd_namespace = module.argocd_bootstrap.argocd_namespace
distributed_mode = true
logs_storage = {
bucket_name = resource.aws_s3_bucket.this["loki"].id
region = resource.aws_s3_bucket.this["loki"].region
access_key = resource.exoscale_iam_access_key.s3_iam_key["loki"].key
secret_key = resource.exoscale_iam_access_key.s3_iam_key["loki"].secret
}
helm_values = [{ # Note the curly brackets here
loki-distributed = {
map = {
string = "string"
bool = true
}
sequence = [
{
key1 = "value1"
key2 = "value2"
},
{
key1 = "value1"
key2 = "value2"
},
]
sequence2 = [
"string1",
"string2"
]
}
}]
dependency_ids = {
argocd = module.argocd_bootstrap.id
longhorn = module.longhorn.id
}
Technical Reference
Dependencies
Required Inputs
The following input variables are required:
logs_storage
Description: Exoscale SOS bucket configuration values for the bucket where the logs will be stored.
Type:
object({
bucket_name = string
region = string
access_key = string
secret_key = string
})
Optional Inputs
The following input variables are optional (have default values):
argocd_namespace
Description: Namespace used by Argo CD where the Application and AppProject resources should be created.
Type: string
Default: "argocd"
target_revision
Description: Override of target revision of the application chart.
Type: string
Default: "v3.0.1"
namespace
Description: Namespace where the applications’s Kubernetes resources should be created. Namespace will be created in case it doesn’t exist.
Type: string
Default: "loki-stack"
helm_values
Description: Helm chart value overrides. They should be passed as a list of HCL structures.
Type: any
Default: []
app_autosync
Description: Automated sync options for the Argo CD Application resource.
Type:
object({
allow_empty = optional(bool)
prune = optional(bool)
self_heal = optional(bool)
})
Default:
{
"allow_empty": false,
"prune": true,
"self_heal": true
}
dependency_ids
Description: IDs of the other modules on which this module depends on.
Type: map(string)
Default: {}
distributed_mode
Description: Boolean to activate Loki in distributed mode.
Type: bool
Default: false
ingress
Description: Loki frontend ingress configuration.
Type:
object({
hosts = list(string)
cluster_issuer = string
allowed_ips = optional(list(string), [])
})
Default: null
retention
Description: Logs retention period.To deactivate retention, pass 0s.
Type: string
Default: "30d"
Outputs
The following outputs are exported:
id
Description: ID to pass other modules in order to refer to this module as a dependency.
loki_credentials
Description: Credentials to access the Loki ingress, if activated.
Reference in table format
Show tables
= Requirements
Name | Version |
---|---|
>= 5 |
|
>= 1 |
|
>= 3 |
|
>= 3 |
|
>= 1 |
= Modules
Name | Source | Version |
---|---|---|
= Inputs
Name | Description | Type | Default | Required |
---|---|---|---|---|
ID of the SKS cluster. |
|
n/a |
yes |
|
Exoscale SOS bucket configuration values for the bucket where the logs will be stored. |
|
n/a |
yes |
|
Namespace used by Argo CD where the Application and AppProject resources should be created. |
|
|
no |
|
Override of target revision of the application chart. |
|
|
no |
|
Namespace where the applications’s Kubernetes resources should be created. Namespace will be created in case it doesn’t exist. |
|
|
no |
|
Helm chart value overrides. They should be passed as a list of HCL structures. |
|
|
no |
|
Automated sync options for the Argo CD Application resource. |
|
|
no |
|
IDs of the other modules on which this module depends on. |
|
|
no |
|
Boolean to activate Loki in distributed mode. |
|
|
no |
|
Loki frontend ingress configuration. |
|
|
no |
|
n/a |
|
|
no |
|
Logs retention period.To deactivate retention, pass 0s. |
|
|
no |
= Outputs
Name | Description |
---|---|
ID to pass other modules in order to refer to this module as a dependency. |
|
Credentials to access the Loki ingress, if activated. |