Commit new Chart releases for TrueCharts
Signed-off-by: TrueCharts-Bot <bot@truecharts.org>
This commit is contained in:
parent
b55c224582
commit
134be191fd
|
@ -0,0 +1,30 @@
|
||||||
|
# Patterns to ignore when building packages.
|
||||||
|
# This supports shell glob matching, relative path matching, and
|
||||||
|
# negation (prefixed with !). Only one pattern per line.
|
||||||
|
.DS_Store
|
||||||
|
# Common VCS dirs
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.bzr/
|
||||||
|
.bzrignore
|
||||||
|
.hg/
|
||||||
|
.hgignore
|
||||||
|
.svn/
|
||||||
|
# Common backup files
|
||||||
|
*.swp
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
|
.vscode/
|
||||||
|
# OWNERS file for Kubernetes
|
||||||
|
OWNERS
|
||||||
|
# helm-docs templates
|
||||||
|
*.gotmpl
|
||||||
|
# docs folder
|
||||||
|
/docs
|
||||||
|
# icon
|
||||||
|
icon.png
|
|
@ -0,0 +1,100 @@
|
||||||
|
---
|
||||||
|
title: Changelog
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
*for the complete changelog, please refer to the website*
|
||||||
|
|
||||||
|
**Important:**
|
||||||
|
|
||||||
|
|
||||||
|
## [blocky-14.0.1](https://github.com/truecharts/charts/compare/blocky-14.0.0...blocky-14.0.1) (2024-03-05)
|
||||||
|
|
||||||
|
### Fix
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- bump common to fix some remaining loadbalancer issues
|
||||||
|
|
||||||
|
|
||||||
|
## [blocky-14.0.0](https://github.com/truecharts/charts/compare/blocky-13.6.3...blocky-14.0.0) (2024-03-05)
|
||||||
|
|
||||||
|
### Feat
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- merge dns ports into a single service
|
||||||
|
|
||||||
|
|
||||||
|
## [blocky-13.6.3](https://github.com/truecharts/charts/compare/blocky-13.6.2...blocky-13.6.3) (2024-03-05)
|
||||||
|
|
||||||
|
### Chore
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- bump everything to force helm release again
|
||||||
|
|
||||||
|
|
||||||
|
## [blocky-13.6.2](https://github.com/truecharts/charts/compare/blocky-13.6.0...blocky-13.6.2) (2024-03-05)
|
||||||
|
|
||||||
|
### Chore
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- force rereleases
|
||||||
|
|
||||||
|
- update container image common to v18.1.6[@904d84b](https://github.com/904d84b) by renovate ([#18835](https://github.com/truecharts/charts/issues/18835))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [blocky-12.2.7](https://github.com/truecharts/charts/compare/blocky-12.2.6...blocky-12.2.7) (2024-02-03)
|
||||||
|
|
||||||
|
### Chore
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- update container image common to v17.2.30[@19ad5ec](https://github.com/19ad5ec) by renovate ([#17804](https://github.com/truecharts/charts/issues/17804))
|
||||||
|
|
||||||
|
|
||||||
|
## [blocky-12.2.6](https://github.com/truecharts/charts/compare/blocky-12.2.5...blocky-12.2.6) (2024-01-27)
|
||||||
|
|
||||||
|
### Chore
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- update helm general non-major by renovate ([#17525](https://github.com/truecharts/charts/issues/17525))
|
||||||
|
|
||||||
|
|
||||||
|
## [blocky-12.2.5](https://github.com/truecharts/charts/compare/blocky-12.2.4...blocky-12.2.5) (2024-01-26)
|
||||||
|
|
||||||
|
### Chore
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- update container image common to v17.2.29[@d7c41a3](https://github.com/d7c41a3) by renovate ([#17545](https://github.com/truecharts/charts/issues/17545))
|
|
@ -0,0 +1,47 @@
|
||||||
|
annotations:
|
||||||
|
max_scale_version: 24.04.0
|
||||||
|
min_scale_version: 23.10.0
|
||||||
|
truecharts.org/SCALE-support: "true"
|
||||||
|
truecharts.org/category: network
|
||||||
|
truecharts.org/max_helm_version: "3.14"
|
||||||
|
truecharts.org/min_helm_version: "3.12"
|
||||||
|
truecharts.org/train: enterprise
|
||||||
|
apiVersion: v2
|
||||||
|
appVersion: 0.23.0
|
||||||
|
dependencies:
|
||||||
|
- name: common
|
||||||
|
version: 18.1.8
|
||||||
|
repository: oci://tccr.io/truecharts
|
||||||
|
condition: ""
|
||||||
|
alias: ""
|
||||||
|
tags: []
|
||||||
|
import-values: []
|
||||||
|
- name: redis
|
||||||
|
version: 11.2.1
|
||||||
|
repository: oci://tccr.io/truecharts
|
||||||
|
condition: redis.enabled
|
||||||
|
alias: ""
|
||||||
|
tags: []
|
||||||
|
import-values: []
|
||||||
|
deprecated: false
|
||||||
|
description: Blocky is a DNS proxy, DNS enhancer and ad-blocker for the local network written in Go
|
||||||
|
home: https://truecharts.org/charts/enterprise/blocky
|
||||||
|
icon: https://truecharts.org/img/hotlink-ok/chart-icons/blocky.png
|
||||||
|
keywords:
|
||||||
|
- dns
|
||||||
|
- blocky
|
||||||
|
kubeVersion: '>=1.24.0-0'
|
||||||
|
maintainers:
|
||||||
|
- name: TrueCharts
|
||||||
|
email: info@truecharts.org
|
||||||
|
url: https://truecharts.org
|
||||||
|
name: blocky
|
||||||
|
sources:
|
||||||
|
- https://github.com/Mozart409/blocky-frontend
|
||||||
|
- https://0xerr0r.github.io/blocky/
|
||||||
|
- https://github.com/0xERR0R/blocky
|
||||||
|
- https://github.com/truecharts/charts/tree/master/charts/enterprise/blocky
|
||||||
|
- https://quay.io/oriedge/k8s_gateway
|
||||||
|
- https://hub.docker.com/r/spx01/blocky
|
||||||
|
type: application
|
||||||
|
version: 14.0.1
|
|
@ -0,0 +1,106 @@
|
||||||
|
Business Source License 1.1
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
|
||||||
|
Licensor: The TrueCharts Project, it's owner and it's contributors
|
||||||
|
Licensed Work: The TrueCharts "Blocky" Helm Chart
|
||||||
|
Additional Use Grant: You may use the licensed work in production, as long
|
||||||
|
as it is directly sourced from a TrueCharts provided
|
||||||
|
official repository, catalog or source. You may also make private
|
||||||
|
modification to the directly sourced licenced work,
|
||||||
|
when used in production.
|
||||||
|
|
||||||
|
The following cases are, due to their nature, also
|
||||||
|
defined as 'production use' and explicitly prohibited:
|
||||||
|
- Bundling, including or displaying the licensed work
|
||||||
|
with(in) another work intended for production use,
|
||||||
|
with the apparent intend of facilitating and/or
|
||||||
|
promoting production use by third parties in
|
||||||
|
violation of this license.
|
||||||
|
|
||||||
|
Change Date: 2050-01-01
|
||||||
|
|
||||||
|
Change License: 3-clause BSD license
|
||||||
|
|
||||||
|
For information about alternative licensing arrangements for the Software,
|
||||||
|
please contact: legal@truecharts.org
|
||||||
|
|
||||||
|
Notice
|
||||||
|
|
||||||
|
The Business Source License (this document, or the “License”) is not an Open
|
||||||
|
Source license. However, the Licensed Work will eventually be made available
|
||||||
|
under an Open Source License, as stated in this License.
|
||||||
|
|
||||||
|
License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.
|
||||||
|
“Business Source License” is a trademark of MariaDB Corporation Ab.
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Business Source License 1.1
|
||||||
|
|
||||||
|
Terms
|
||||||
|
|
||||||
|
The Licensor hereby grants you the right to copy, modify, create derivative
|
||||||
|
works, redistribute, and make non-production use of the Licensed Work. The
|
||||||
|
Licensor may make an Additional Use Grant, above, permitting limited
|
||||||
|
production use.
|
||||||
|
|
||||||
|
Effective on the Change Date, or the fourth anniversary of the first publicly
|
||||||
|
available distribution of a specific version of the Licensed Work under this
|
||||||
|
License, whichever comes first, the Licensor hereby grants you rights under
|
||||||
|
the terms of the Change License, and the rights granted in the paragraph
|
||||||
|
above terminate.
|
||||||
|
|
||||||
|
If your use of the Licensed Work does not comply with the requirements
|
||||||
|
currently in effect as described in this License, you must purchase a
|
||||||
|
commercial license from the Licensor, its affiliated entities, or authorized
|
||||||
|
resellers, or you must refrain from using the Licensed Work.
|
||||||
|
|
||||||
|
All copies of the original and modified Licensed Work, and derivative works
|
||||||
|
of the Licensed Work, are subject to this License. This License applies
|
||||||
|
separately for each version of the Licensed Work and the Change Date may vary
|
||||||
|
for each version of the Licensed Work released by Licensor.
|
||||||
|
|
||||||
|
You must conspicuously display this License on each original or modified copy
|
||||||
|
of the Licensed Work. If you receive the Licensed Work in original or
|
||||||
|
modified form from a third party, the terms and conditions set forth in this
|
||||||
|
License apply to your use of that work.
|
||||||
|
|
||||||
|
Any use of the Licensed Work in violation of this License will automatically
|
||||||
|
terminate your rights under this License for the current and all other
|
||||||
|
versions of the Licensed Work.
|
||||||
|
|
||||||
|
This License does not grant you any right in any trademark or logo of
|
||||||
|
Licensor or its affiliates (provided that you may use a trademark or logo of
|
||||||
|
Licensor as expressly required by this License).
|
||||||
|
|
||||||
|
TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON
|
||||||
|
AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND
|
||||||
|
TITLE.
|
||||||
|
|
||||||
|
MariaDB hereby grants you permission to use this License’s text to license
|
||||||
|
your works, and to refer to it using the trademark “Business Source License”,
|
||||||
|
as long as you comply with the Covenants of Licensor below.
|
||||||
|
|
||||||
|
Covenants of Licensor
|
||||||
|
|
||||||
|
In consideration of the right to use this License’s text and the “Business
|
||||||
|
Source License” name and trademark, Licensor covenants to MariaDB, and to all
|
||||||
|
other recipients of the licensed work to be provided by Licensor:
|
||||||
|
|
||||||
|
1. To specify as the Change License the GPL Version 2.0 or any later version,
|
||||||
|
or a license that is compatible with GPL Version 2.0 or a later version,
|
||||||
|
where “compatible” means that software provided under the Change License can
|
||||||
|
be included in a program with software provided under GPL Version 2.0 or a
|
||||||
|
later version. Licensor may specify additional Change Licenses without
|
||||||
|
limitation.
|
||||||
|
|
||||||
|
2. To either: (a) specify an additional grant of rights to use that does not
|
||||||
|
impose any additional restriction on the right granted in this License, as
|
||||||
|
the Additional Use Grant; or (b) insert the text “None”.
|
||||||
|
|
||||||
|
3. To specify a Change Date.
|
||||||
|
|
||||||
|
4. Not to modify this License in any other way.
|
|
@ -0,0 +1,28 @@
|
||||||
|
---
|
||||||
|
title: README
|
||||||
|
---
|
||||||
|
|
||||||
|
## General Info
|
||||||
|
|
||||||
|
TrueCharts can be installed as both _normal_ Helm Charts or as Apps on TrueNAS SCALE.
|
||||||
|
However only installations using the TrueNAS SCALE Apps system are supported.
|
||||||
|
|
||||||
|
For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/enterprise/blocky)
|
||||||
|
|
||||||
|
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)**
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro).
|
||||||
|
- See the [Website](https://truecharts.org)
|
||||||
|
- Check our [Discord](https://discord.gg/tVsPTHWTtr)
|
||||||
|
- Open a [issue](https://github.com/truecharts/charts/issues/new/choose)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Sponsor TrueCharts
|
||||||
|
|
||||||
|
TrueCharts can only exist due to the incredible effort of our staff.
|
||||||
|
Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can!
|
||||||
|
|
||||||
|
_All Rights Reserved - The TrueCharts Project_
|
|
@ -0,0 +1,9 @@
|
||||||
|
|
||||||
|
|
||||||
|
## [blocky-14.0.1](https://github.com/truecharts/charts/compare/blocky-14.0.0...blocky-14.0.1) (2024-03-05)
|
||||||
|
|
||||||
|
### Fix
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- bump common to fix some remaining loadbalancer issues
|
|
@ -0,0 +1,8 @@
|
||||||
|
Blocky is a DNS proxy, DNS enhancer and ad-blocker for the local network written in Go
|
||||||
|
|
||||||
|
This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/enterprise/blocky](https://truecharts.org/charts/enterprise/blocky)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
TrueCharts can only exist due to the incredible effort of our staff.
|
||||||
|
Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can!
|
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,874 @@
|
||||||
|
{
|
||||||
|
"__inputs": [
|
||||||
|
{
|
||||||
|
"name": "DS_POSTGRES",
|
||||||
|
"label": "Postgres",
|
||||||
|
"description": "",
|
||||||
|
"type": "datasource",
|
||||||
|
"pluginId": "postgres",
|
||||||
|
"pluginName": "Postgres"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"__requires": [
|
||||||
|
{
|
||||||
|
"type": "panel",
|
||||||
|
"id": "barchart",
|
||||||
|
"name": "Bar chart",
|
||||||
|
"version": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "panel",
|
||||||
|
"id": "bargauge",
|
||||||
|
"name": "Bar gauge",
|
||||||
|
"version": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "grafana",
|
||||||
|
"id": "grafana",
|
||||||
|
"name": "Grafana",
|
||||||
|
"version": "8.1.2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "datasource",
|
||||||
|
"id": "postgres",
|
||||||
|
"name": "Postgres",
|
||||||
|
"version": "1.0.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "panel",
|
||||||
|
"id": "piechart",
|
||||||
|
"name": "Pie chart",
|
||||||
|
"version": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "panel",
|
||||||
|
"id": "table",
|
||||||
|
"name": "Table",
|
||||||
|
"version": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "panel",
|
||||||
|
"id": "timeseries",
|
||||||
|
"name": "Time series",
|
||||||
|
"version": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"annotations": {
|
||||||
|
"list": [
|
||||||
|
{
|
||||||
|
"builtIn": 1,
|
||||||
|
"datasource": "-- Grafana --",
|
||||||
|
"enable": true,
|
||||||
|
"hide": true,
|
||||||
|
"iconColor": "rgba(0, 211, 255, 1)",
|
||||||
|
"name": "Annotations & Alerts",
|
||||||
|
"target": {
|
||||||
|
"limit": 100,
|
||||||
|
"matchAny": false,
|
||||||
|
"tags": [],
|
||||||
|
"type": "dashboard"
|
||||||
|
},
|
||||||
|
"type": "dashboard"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"editable": true,
|
||||||
|
"gnetId": null,
|
||||||
|
"graphTooltip": 0,
|
||||||
|
"id": null,
|
||||||
|
"iteration": 1631130053746,
|
||||||
|
"links": [],
|
||||||
|
"panels": [
|
||||||
|
{
|
||||||
|
"cacheTimeout": null,
|
||||||
|
"datasource": "${DS_POSTGRES}",
|
||||||
|
"description": "",
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "palette-classic"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"hideFrom": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": false,
|
||||||
|
"viz": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"displayName": "${__field.labels.response_type}",
|
||||||
|
"mappings": [],
|
||||||
|
"unit": "short"
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 8,
|
||||||
|
"w": 6,
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"id": 14,
|
||||||
|
"interval": null,
|
||||||
|
"links": [],
|
||||||
|
"options": {
|
||||||
|
"displayLabels": [],
|
||||||
|
"legend": {
|
||||||
|
"displayMode": "table",
|
||||||
|
"placement": "right",
|
||||||
|
"values": ["value"]
|
||||||
|
},
|
||||||
|
"pieType": "pie",
|
||||||
|
"reduceOptions": {
|
||||||
|
"calcs": ["sum"],
|
||||||
|
"fields": "",
|
||||||
|
"values": false
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"mode": "single"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pluginVersion": "8.1.2",
|
||||||
|
"repeatDirection": "v",
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"format": "time_series",
|
||||||
|
"group": [],
|
||||||
|
"metricColumn": "none",
|
||||||
|
"rawQuery": true,
|
||||||
|
"rawSql": "SELECT t.response_type, max(t.request_Ts) as time, count(*) as cnt from log_entries t \n WHERE $__timeFilter(t.request_Ts) and \n t.response_type in ($response_type) and \n t.client_name in ($client_name) and \n (length(''$question'') = 0 or POSITION(lower(''$question'') IN t.question_name) > 0)\n group by t.response_type\n order by time",
|
||||||
|
"refId": "A",
|
||||||
|
"select": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"params": ["value"],
|
||||||
|
"type": "column"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"timeColumn": "time",
|
||||||
|
"where": [
|
||||||
|
{
|
||||||
|
"name": "$__timeFilter",
|
||||||
|
"params": [],
|
||||||
|
"type": "macro"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"timeFrom": null,
|
||||||
|
"timeShift": null,
|
||||||
|
"title": "Query count by response type",
|
||||||
|
"transformations": [],
|
||||||
|
"type": "piechart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": "${DS_POSTGRES}",
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "palette-classic"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"hideFrom": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": false,
|
||||||
|
"viz": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mappings": []
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 8,
|
||||||
|
"w": 6,
|
||||||
|
"x": 6,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"id": 16,
|
||||||
|
"options": {
|
||||||
|
"displayLabels": [],
|
||||||
|
"legend": {
|
||||||
|
"displayMode": "table",
|
||||||
|
"placement": "right",
|
||||||
|
"values": ["value"]
|
||||||
|
},
|
||||||
|
"pieType": "pie",
|
||||||
|
"reduceOptions": {
|
||||||
|
"calcs": ["lastNotNull"],
|
||||||
|
"fields": "",
|
||||||
|
"values": false
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"mode": "single"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"format": "time_series",
|
||||||
|
"group": [],
|
||||||
|
"metricColumn": "none",
|
||||||
|
"rawQuery": true,
|
||||||
|
"rawSql": "SELECT max(t.request_ts) AS time,\n case when t.reason like ''BLOCKED%'' then SPLIT_PART(SPLIT_PART(t.reason,''('',-1), '')'',1) else '''' end AS metric,\n count(t.reason) AS cnt\nFROM log_entries t\nWHERE t.response_type =''BLOCKED''\n AND $__timeFilter(t.request_Ts)\n AND t.client_name in ($client_name)\n AND (length(''$question'') = 0 or POSITION(lower(''$question'') IN t.question_name) > 0)\nGROUP BY 2\nORDER BY time",
|
||||||
|
"refId": "A",
|
||||||
|
"select": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"params": ["duration_ms"],
|
||||||
|
"type": "column"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"table": "log_entries",
|
||||||
|
"timeColumn": "request_ts",
|
||||||
|
"timeColumnType": "timestamp",
|
||||||
|
"where": [
|
||||||
|
{
|
||||||
|
"name": "$__timeFilter",
|
||||||
|
"params": [],
|
||||||
|
"type": "macro"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Blocked by Blacklist",
|
||||||
|
"type": "piechart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cacheTimeout": null,
|
||||||
|
"datasource": "${DS_POSTGRES}",
|
||||||
|
"description": "",
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "thresholds"
|
||||||
|
},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green",
|
||||||
|
"value": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"unit": "short"
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 8,
|
||||||
|
"w": 12,
|
||||||
|
"x": 12,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"id": 13,
|
||||||
|
"interval": null,
|
||||||
|
"links": [],
|
||||||
|
"options": {
|
||||||
|
"displayMode": "gradient",
|
||||||
|
"orientation": "horizontal",
|
||||||
|
"reduceOptions": {
|
||||||
|
"calcs": ["lastNotNull"],
|
||||||
|
"fields": "",
|
||||||
|
"values": true
|
||||||
|
},
|
||||||
|
"showUnfilled": true,
|
||||||
|
"text": {}
|
||||||
|
},
|
||||||
|
"pluginVersion": "8.1.2",
|
||||||
|
"repeatDirection": "v",
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"format": "table",
|
||||||
|
"group": [],
|
||||||
|
"metricColumn": "none",
|
||||||
|
"rawQuery": true,
|
||||||
|
"rawSql": "SELECT max(t.request_Ts) as time, t.client_name as metric, count(*) as cnt from log_entries t \n WHERE $__timeFilter(t.request_Ts) and \n t.response_type in ($response_type) and \n t.client_name in ($client_name) and \n (length(''$question'') = 0 or POSITION(lower(''$question'') IN t.question_name) > 0)\n group by t.client_name\n order by 3 desc",
|
||||||
|
"refId": "A",
|
||||||
|
"select": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"params": ["value"],
|
||||||
|
"type": "column"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"timeColumn": "time",
|
||||||
|
"where": [
|
||||||
|
{
|
||||||
|
"name": "$__timeFilter",
|
||||||
|
"params": [],
|
||||||
|
"type": "macro"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"timeFrom": null,
|
||||||
|
"timeShift": null,
|
||||||
|
"title": "Query count by client",
|
||||||
|
"transformations": [],
|
||||||
|
"type": "bargauge"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": "${DS_POSTGRES}",
|
||||||
|
"description": "Top 20 effective top level domain plus one more label",
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "palette-classic"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"axisLabel": "",
|
||||||
|
"axisPlacement": "auto",
|
||||||
|
"axisSoftMin": 0,
|
||||||
|
"fillOpacity": 67,
|
||||||
|
"gradientMode": "none",
|
||||||
|
"hideFrom": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": false,
|
||||||
|
"viz": false
|
||||||
|
},
|
||||||
|
"lineWidth": 2
|
||||||
|
},
|
||||||
|
"displayName": "count",
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green",
|
||||||
|
"value": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"unit": "short"
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 8,
|
||||||
|
"w": 12,
|
||||||
|
"x": 0,
|
||||||
|
"y": 8
|
||||||
|
},
|
||||||
|
"id": 11,
|
||||||
|
"options": {
|
||||||
|
"barWidth": 0.26,
|
||||||
|
"groupWidth": 0.7,
|
||||||
|
"legend": {
|
||||||
|
"calcs": [],
|
||||||
|
"displayMode": "hidden",
|
||||||
|
"placement": "bottom"
|
||||||
|
},
|
||||||
|
"orientation": "horizontal",
|
||||||
|
"showValue": "never",
|
||||||
|
"stacking": "none",
|
||||||
|
"text": {
|
||||||
|
"valueSize": 10
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"mode": "single"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"format": "table",
|
||||||
|
"group": [],
|
||||||
|
"hide": false,
|
||||||
|
"metricColumn": "question_name",
|
||||||
|
"rawQuery": true,
|
||||||
|
"rawSql": "SELECT t.effective_tldp as metric, count(*) as value from log_entries t \nWHERE $__timeFilter(t.request_Ts) \n and t.response_type in ($response_type) \n and t.client_name in ($client_name) \n and (length(''$question'') = 0 or POSITION(lower(''$question'') IN t.question_name) > 0) \n group by t.effective_tldp order by count(*) desc limit 20",
|
||||||
|
"refId": "A",
|
||||||
|
"select": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"params": ["value"],
|
||||||
|
"type": "column"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"table": "log_entries",
|
||||||
|
"timeColumn": "request_ts",
|
||||||
|
"where": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Top 20 effective TLD+1",
|
||||||
|
"type": "barchart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": "${DS_POSTGRES}",
|
||||||
|
"description": "",
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "palette-classic"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"axisLabel": "",
|
||||||
|
"axisPlacement": "auto",
|
||||||
|
"axisSoftMin": 0,
|
||||||
|
"fillOpacity": 67,
|
||||||
|
"gradientMode": "none",
|
||||||
|
"hideFrom": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": false,
|
||||||
|
"viz": false
|
||||||
|
},
|
||||||
|
"lineWidth": 2
|
||||||
|
},
|
||||||
|
"displayName": "count",
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green",
|
||||||
|
"value": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"unit": "short"
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 8,
|
||||||
|
"w": 12,
|
||||||
|
"x": 12,
|
||||||
|
"y": 8
|
||||||
|
},
|
||||||
|
"id": 8,
|
||||||
|
"options": {
|
||||||
|
"barWidth": 0.26,
|
||||||
|
"groupWidth": 0.7,
|
||||||
|
"legend": {
|
||||||
|
"calcs": [],
|
||||||
|
"displayMode": "hidden",
|
||||||
|
"placement": "bottom"
|
||||||
|
},
|
||||||
|
"orientation": "horizontal",
|
||||||
|
"showValue": "never",
|
||||||
|
"stacking": "none",
|
||||||
|
"text": {
|
||||||
|
"valueSize": 10
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"mode": "single"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"format": "table",
|
||||||
|
"group": [],
|
||||||
|
"hide": false,
|
||||||
|
"metricColumn": "question_name",
|
||||||
|
"rawQuery": true,
|
||||||
|
"rawSql": "SELECT t.question_name as metric, count(*) as value from log_entries t \n WHERE $__timeFilter(t.request_Ts) and \n t.response_type in ($response_type) and \n t.client_name in ($client_name) and \n (length(''$question'') = 0 or POSITION(lower(''$question'') IN t.question_name) > 0) \n group by t.question_name order by count(*) desc limit 20",
|
||||||
|
"refId": "A",
|
||||||
|
"select": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"params": ["value"],
|
||||||
|
"type": "column"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"table": "log_entries",
|
||||||
|
"timeColumn": "request_ts",
|
||||||
|
"where": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Top 20 queried domains",
|
||||||
|
"type": "barchart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": "${DS_POSTGRES}",
|
||||||
|
"description": "",
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "palette-classic"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"axisLabel": "queries count",
|
||||||
|
"axisPlacement": "auto",
|
||||||
|
"barAlignment": 0,
|
||||||
|
"drawStyle": "bars",
|
||||||
|
"fillOpacity": 35,
|
||||||
|
"gradientMode": "hue",
|
||||||
|
"hideFrom": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": false,
|
||||||
|
"viz": false
|
||||||
|
},
|
||||||
|
"lineInterpolation": "linear",
|
||||||
|
"lineStyle": {
|
||||||
|
"fill": "solid"
|
||||||
|
},
|
||||||
|
"lineWidth": 1,
|
||||||
|
"pointSize": 12,
|
||||||
|
"scaleDistribution": {
|
||||||
|
"type": "linear"
|
||||||
|
},
|
||||||
|
"showPoints": "never",
|
||||||
|
"spanNulls": 3600000,
|
||||||
|
"stacking": {
|
||||||
|
"group": "A",
|
||||||
|
"mode": "none"
|
||||||
|
},
|
||||||
|
"thresholdsStyle": {
|
||||||
|
"mode": "off"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"displayName": "${__field.labels.client_name}",
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green",
|
||||||
|
"value": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "red",
|
||||||
|
"value": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 7,
|
||||||
|
"w": 24,
|
||||||
|
"x": 0,
|
||||||
|
"y": 16
|
||||||
|
},
|
||||||
|
"id": 12,
|
||||||
|
"options": {
|
||||||
|
"legend": {
|
||||||
|
"calcs": [],
|
||||||
|
"displayMode": "list",
|
||||||
|
"placement": "right"
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"mode": "single"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pluginVersion": "8.1.2",
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"format": "time_series",
|
||||||
|
"group": [],
|
||||||
|
"metricColumn": "none",
|
||||||
|
"rawQuery": true,
|
||||||
|
"rawSql": "SELECT\n $__timeGroupAlias(t.request_Ts, ''30m''),\n t.client_name,\n count(*) as c\nFROM log_entries t\nWHERE\n $__timeFilter(t.request_Ts) and \n t.response_type in ($response_type) and \n t.client_name in ($client_name) and \n (length(''$question'') = 0 or POSITION(lower(''$question'') IN t.question_name) > 0)\nGROUP BY 1,2\nORDER BY 1",
|
||||||
|
"refId": "A",
|
||||||
|
"select": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"params": ["duration_ms"],
|
||||||
|
"type": "column"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"table": "log_entries",
|
||||||
|
"timeColumn": "request_ts",
|
||||||
|
"timeColumnType": "timestamp",
|
||||||
|
"where": [
|
||||||
|
{
|
||||||
|
"name": "$__timeFilter",
|
||||||
|
"params": [],
|
||||||
|
"type": "macro"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Queries number per client (30m)",
|
||||||
|
"type": "timeseries"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": "${DS_POSTGRES}",
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "palette-classic"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"axisLabel": "",
|
||||||
|
"axisPlacement": "auto",
|
||||||
|
"barAlignment": -1,
|
||||||
|
"drawStyle": "bars",
|
||||||
|
"fillOpacity": 0,
|
||||||
|
"gradientMode": "none",
|
||||||
|
"hideFrom": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": false,
|
||||||
|
"viz": false
|
||||||
|
},
|
||||||
|
"lineInterpolation": "stepBefore",
|
||||||
|
"lineStyle": {
|
||||||
|
"fill": "solid"
|
||||||
|
},
|
||||||
|
"lineWidth": 1,
|
||||||
|
"pointSize": 5,
|
||||||
|
"scaleDistribution": {
|
||||||
|
"type": "linear"
|
||||||
|
},
|
||||||
|
"showPoints": "auto",
|
||||||
|
"spanNulls": true,
|
||||||
|
"stacking": {
|
||||||
|
"group": "A",
|
||||||
|
"mode": "none"
|
||||||
|
},
|
||||||
|
"thresholdsStyle": {
|
||||||
|
"mode": "line"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green",
|
||||||
|
"value": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"unit": "dtdurationms"
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 8,
|
||||||
|
"w": 24,
|
||||||
|
"x": 0,
|
||||||
|
"y": 23
|
||||||
|
},
|
||||||
|
"id": 10,
|
||||||
|
"options": {
|
||||||
|
"legend": {
|
||||||
|
"calcs": [],
|
||||||
|
"displayMode": "hidden",
|
||||||
|
"placement": "bottom"
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"mode": "single"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"format": "time_series",
|
||||||
|
"group": [],
|
||||||
|
"metricColumn": "none",
|
||||||
|
"rawQuery": true,
|
||||||
|
"rawSql": "SELECT\n EXTRACT(EPOCH from t.request_Ts) as time,\n t.duration_ms\nFROM log_entries t\nWHERE\n $__timeFilter(t.request_Ts) and \n t.response_type in ($response_type) and \n t.client_name in ($client_name) and \n (length(''$question'') = 0 or POSITION(lower(''$question'') IN t.question_name) > 0)\nORDER BY request_ts",
|
||||||
|
"refId": "A",
|
||||||
|
"select": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"params": ["duration_ms"],
|
||||||
|
"type": "column"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"table": "log_entries",
|
||||||
|
"timeColumn": "request_ts",
|
||||||
|
"timeColumnType": "timestamp",
|
||||||
|
"where": [
|
||||||
|
{
|
||||||
|
"name": "$__timeFilter",
|
||||||
|
"params": [],
|
||||||
|
"type": "macro"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Query duration",
|
||||||
|
"type": "timeseries"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": "${DS_POSTGRES}",
|
||||||
|
"description": "Last 100 queries, newest on top",
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"custom": {
|
||||||
|
"align": null,
|
||||||
|
"displayMode": "auto",
|
||||||
|
"filterable": false
|
||||||
|
},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green",
|
||||||
|
"value": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"matcher": {
|
||||||
|
"id": "byName",
|
||||||
|
"options": "time"
|
||||||
|
},
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"id": "unit",
|
||||||
|
"value": "dateTimeAsIsoNoDateIfToday"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 8,
|
||||||
|
"w": 24,
|
||||||
|
"x": 0,
|
||||||
|
"y": 31
|
||||||
|
},
|
||||||
|
"id": 4,
|
||||||
|
"options": {
|
||||||
|
"showHeader": true
|
||||||
|
},
|
||||||
|
"pluginVersion": "8.1.2",
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"format": "table",
|
||||||
|
"group": [],
|
||||||
|
"metricColumn": "none",
|
||||||
|
"rawQuery": true,
|
||||||
|
"rawSql": "SELECT EXTRACT(EPOCH from t.request_Ts) as \"time\", \n t.client_ip as \"client IP\", \n t.client_name as \"client name\", \n t.duration_ms as \"duration in ms\", \n t.response_type as \"response type\", \n t.question_type as \"question type\", \n t.question_name as \"question name\", \n t.effective_tldp as \"effective TLD+1\", \n t.answer as \"answer\" from log_entries t \n WHERE $__timeFilter(t.request_Ts) and \n t.response_type in ($response_type) and \n t.client_name in ($client_name) and \n (length(''$question'') = 0 or POSITION(lower(''$question'') IN t.question_name) > 0) \n order by t.request_Ts desc limit 100",
|
||||||
|
"refId": "A",
|
||||||
|
"select": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"params": ["value"],
|
||||||
|
"type": "column"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"timeColumn": "time",
|
||||||
|
"where": [
|
||||||
|
{
|
||||||
|
"name": "$__timeFilter",
|
||||||
|
"params": [],
|
||||||
|
"type": "macro"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"timeFrom": null,
|
||||||
|
"timeShift": null,
|
||||||
|
"title": "Last queries",
|
||||||
|
"type": "table"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"refresh": "",
|
||||||
|
"schemaVersion": 30,
|
||||||
|
"style": "dark",
|
||||||
|
"tags": [],
|
||||||
|
"templating": {
|
||||||
|
"list": [
|
||||||
|
{
|
||||||
|
"current": {
|
||||||
|
"selected": false,
|
||||||
|
"text": "BlockyPostgres",
|
||||||
|
"value": "blockypostgres"
|
||||||
|
},
|
||||||
|
"hide": 0,
|
||||||
|
"includeAll": false,
|
||||||
|
"label": "datasource",
|
||||||
|
"multi": false,
|
||||||
|
"name": "DS_POSTGRES",
|
||||||
|
"options": [],
|
||||||
|
"query": "grafana-postgresql-datasource",
|
||||||
|
"refresh": 1,
|
||||||
|
"regex": "",
|
||||||
|
"skipUrlSync": false,
|
||||||
|
"type": "datasource"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allValue": "",
|
||||||
|
"current": {},
|
||||||
|
"datasource": "${DS_POSTGRES}",
|
||||||
|
"definition": "select distinct client_name from log_entries",
|
||||||
|
"description": null,
|
||||||
|
"error": null,
|
||||||
|
"hide": 0,
|
||||||
|
"includeAll": true,
|
||||||
|
"label": "Client name",
|
||||||
|
"multi": true,
|
||||||
|
"name": "client_name",
|
||||||
|
"options": [],
|
||||||
|
"query": "select distinct client_name from log_entries",
|
||||||
|
"refresh": 2,
|
||||||
|
"regex": "",
|
||||||
|
"skipUrlSync": false,
|
||||||
|
"sort": 1,
|
||||||
|
"tagValuesQuery": "",
|
||||||
|
"tagsQuery": "",
|
||||||
|
"type": "query",
|
||||||
|
"useTags": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allValue": null,
|
||||||
|
"current": {},
|
||||||
|
"datasource": "${DS_POSTGRES}",
|
||||||
|
"definition": "select distinct response_type from log_entries",
|
||||||
|
"description": null,
|
||||||
|
"error": null,
|
||||||
|
"hide": 0,
|
||||||
|
"includeAll": true,
|
||||||
|
"label": "Response type",
|
||||||
|
"multi": true,
|
||||||
|
"name": "response_type",
|
||||||
|
"options": [],
|
||||||
|
"query": "select distinct response_type from log_entries",
|
||||||
|
"refresh": 2,
|
||||||
|
"regex": "",
|
||||||
|
"skipUrlSync": false,
|
||||||
|
"sort": 1,
|
||||||
|
"tagValuesQuery": "",
|
||||||
|
"tagsQuery": "",
|
||||||
|
"type": "query",
|
||||||
|
"useTags": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"current": {
|
||||||
|
"selected": false,
|
||||||
|
"text": "",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"description": null,
|
||||||
|
"error": null,
|
||||||
|
"hide": 0,
|
||||||
|
"label": "Domain (contains)",
|
||||||
|
"name": "question",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"selected": true,
|
||||||
|
"text": "",
|
||||||
|
"value": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"query": "",
|
||||||
|
"skipUrlSync": false,
|
||||||
|
"type": "textbox"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"time": {
|
||||||
|
"from": "now-24h",
|
||||||
|
"to": "now"
|
||||||
|
},
|
||||||
|
"timepicker": {},
|
||||||
|
"timezone": "",
|
||||||
|
"title": "Blocky query",
|
||||||
|
"uid": "AVmWSVWgz",
|
||||||
|
"version": 3
|
||||||
|
}
|
|
@ -0,0 +1,380 @@
|
||||||
|
image:
|
||||||
|
repository: spx01/blocky
|
||||||
|
tag: v0.23@sha256:24855b63986c790093554a1f62b58379a06bc10a90ee073906e7c39bf692adcc
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
k8sgatewayImage:
|
||||||
|
repository: quay.io/oriedge/k8s_gateway
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
tag: v0.4.0@sha256:7bdbd447c0244b8f89de9cd6f4826ed0ac66c9406fac3a4ac80081020c251c6b
|
||||||
|
manifestManager:
|
||||||
|
enabled: true
|
||||||
|
workload:
|
||||||
|
main:
|
||||||
|
replicas: 2
|
||||||
|
strategy: RollingUpdate
|
||||||
|
podSpec:
|
||||||
|
containers:
|
||||||
|
main:
|
||||||
|
probes:
|
||||||
|
liveness:
|
||||||
|
enabled: false
|
||||||
|
type: exec
|
||||||
|
command:
|
||||||
|
- /app/blocky
|
||||||
|
- healthcheck
|
||||||
|
readiness:
|
||||||
|
enabled: false
|
||||||
|
type: exec
|
||||||
|
command:
|
||||||
|
- /app/blocky
|
||||||
|
- healthcheck
|
||||||
|
startup:
|
||||||
|
enabled: false
|
||||||
|
type: exec
|
||||||
|
command:
|
||||||
|
- /app/blocky
|
||||||
|
- healthcheck
|
||||||
|
# -- Blocky Config File content
|
||||||
|
blockyConfig: {}
|
||||||
|
# upstream:
|
||||||
|
# default:
|
||||||
|
# - 1.1.1.1
|
||||||
|
|
||||||
|
# -- some general blocky settings
|
||||||
|
blocky:
|
||||||
|
# -- Enable prometheus annotations
|
||||||
|
enablePrometheus: true
|
||||||
|
service:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
ports:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
port: 4000
|
||||||
|
protocol: http
|
||||||
|
targetPort: 4000
|
||||||
|
dns:
|
||||||
|
enabled: true
|
||||||
|
ports:
|
||||||
|
dnstcp:
|
||||||
|
enabled: true
|
||||||
|
port: 53
|
||||||
|
targetPort: 53
|
||||||
|
dnsudp:
|
||||||
|
enabled: true
|
||||||
|
port: 53
|
||||||
|
protocol: udp
|
||||||
|
targetPort: 53
|
||||||
|
dot:
|
||||||
|
enabled: true
|
||||||
|
ports:
|
||||||
|
dot:
|
||||||
|
enabled: true
|
||||||
|
port: 853
|
||||||
|
protocol: tcp
|
||||||
|
targetPort: 853
|
||||||
|
https:
|
||||||
|
enabled: true
|
||||||
|
ports:
|
||||||
|
https:
|
||||||
|
enabled: true
|
||||||
|
port: 4443
|
||||||
|
protocol: https
|
||||||
|
targetPort: 4443
|
||||||
|
k8sgateway:
|
||||||
|
enabled: true
|
||||||
|
ports:
|
||||||
|
k8sgateway:
|
||||||
|
enabled: true
|
||||||
|
port: 5353
|
||||||
|
protocol: udp
|
||||||
|
targetPort: 5353
|
||||||
|
## TODO Add support for SCALE certificates and certificates secrets here
|
||||||
|
certFile: ""
|
||||||
|
keyFile: ""
|
||||||
|
logLevel: info
|
||||||
|
logFormat: text
|
||||||
|
logTimestamp: true
|
||||||
|
logPrivacy: false
|
||||||
|
dohUserAgent: ""
|
||||||
|
minTlsServeVersion: 1.2
|
||||||
|
# -- set the default DNS upstream servers
|
||||||
|
# Primarily designed for inclusion in the TrueNAS SCALE GUI
|
||||||
|
defaultUpstreams:
|
||||||
|
- 1.1.1.1
|
||||||
|
- 1.0.0.1
|
||||||
|
- 8.8.8.8
|
||||||
|
- 8.8.4.4
|
||||||
|
- 9.9.9.9
|
||||||
|
- 149.112.112.112
|
||||||
|
- 208.67.222.222
|
||||||
|
- 208.67.220.220
|
||||||
|
- 8.26.56.26
|
||||||
|
- 8.20.247.20
|
||||||
|
- 185.228.168.9
|
||||||
|
- 185.228.169.9
|
||||||
|
- 76.76.19.19
|
||||||
|
- 76.223.122.150
|
||||||
|
- 76.76.2.0
|
||||||
|
- 76.76.10.0
|
||||||
|
# -- set additional upstreams
|
||||||
|
# Primarily designed for inclusion in the TrueNAS SCALE GUI
|
||||||
|
upstreams:
|
||||||
|
# - name: group2
|
||||||
|
# dnsservers:
|
||||||
|
# - 1.1.1.1
|
||||||
|
|
||||||
|
# -- set bootstrap dns (not needed)
|
||||||
|
# Ensures bootstrap encryption and ensure it doesn't use k8s dns
|
||||||
|
bootstrapDns:
|
||||||
|
# -- Upstream
|
||||||
|
upstream: ""
|
||||||
|
# -- IP's linked to upstream DoT/DoH DNS name
|
||||||
|
ips: []
|
||||||
|
# -- set additional bootstrap dns (not needed, only used if bootstrapDns is set)
|
||||||
|
additionalBootstrapDns: []
|
||||||
|
# - upstream: ""
|
||||||
|
# ips: []
|
||||||
|
|
||||||
|
# -- Return empty answer for these queries
|
||||||
|
filtering:
|
||||||
|
# -- Ensures filtering by query type
|
||||||
|
queryTypes: []
|
||||||
|
# -- Set manual custom DNS resolution
|
||||||
|
customDNS:
|
||||||
|
customTTL: 1h
|
||||||
|
filterUnmappedTypes: true
|
||||||
|
rewrite: []
|
||||||
|
# - in: something.com
|
||||||
|
# out: somethingelse.com
|
||||||
|
mapping: []
|
||||||
|
# - domain: something.com
|
||||||
|
# dnsserver: 192.168.178.1
|
||||||
|
# -- Setup client-name lookup
|
||||||
|
clientLookup:
|
||||||
|
# -- upstream used for client-name lookup
|
||||||
|
upstream: ""
|
||||||
|
singleNameOrder: []
|
||||||
|
clients:
|
||||||
|
# - domain: laptop
|
||||||
|
# ips: []
|
||||||
|
# -- Setup caching
|
||||||
|
caching:
|
||||||
|
minTime: 5m
|
||||||
|
maxTime: 30m
|
||||||
|
maxItemsCount: 0
|
||||||
|
prefetching: false
|
||||||
|
prefetchExpires: 2h
|
||||||
|
prefetchThreshold: 5
|
||||||
|
prefetchMaxItemsCount: 0
|
||||||
|
cacheTimeNegative: 30m
|
||||||
|
# -- set conditional settings
|
||||||
|
# Primarily designed for inclusion in the TrueNAS SCALE GUI
|
||||||
|
conditional:
|
||||||
|
rewrite: []
|
||||||
|
# - in: something.com
|
||||||
|
# out: somethingelse.com
|
||||||
|
mapping: []
|
||||||
|
# - domain: something.com
|
||||||
|
# dnsserver: 192.168.178.1
|
||||||
|
# -- set blocking settings using Lists
|
||||||
|
# Primarily designed for inclusion in the TrueNAS SCALE GUI
|
||||||
|
blocking:
|
||||||
|
# -- Sets the blocktype
|
||||||
|
blockType: nxDomain
|
||||||
|
# -- Sets the block ttl
|
||||||
|
blockTTL: 6h
|
||||||
|
# -- Sets the block refreshPeriod
|
||||||
|
refreshPeriod: 4h
|
||||||
|
# -- Sets the block download timeout
|
||||||
|
downloadTimeout: 60s
|
||||||
|
# -- Sets the block download attempt count
|
||||||
|
downloadAttempts: 3
|
||||||
|
# -- Sets the block download cooldown
|
||||||
|
downloadCooldown: 2s
|
||||||
|
# -- Set the start strategy (blocking | failOnError | fast)
|
||||||
|
startStrategy: blocking
|
||||||
|
# -- Sets how many list-groups can be processed at the same time
|
||||||
|
processingConcurrency: 4
|
||||||
|
# -- Add blocky whitelists
|
||||||
|
whitelist: []
|
||||||
|
# - name: ads
|
||||||
|
# lists:
|
||||||
|
# - https://someurl.com/list.txt
|
||||||
|
# - /somefile.txt
|
||||||
|
|
||||||
|
# -- Blocky blacklists
|
||||||
|
blacklist: []
|
||||||
|
# - name: ads
|
||||||
|
# lists:
|
||||||
|
# - https://someurl.com/list.txt
|
||||||
|
# - /somefile.txt
|
||||||
|
|
||||||
|
# -- Blocky clientGroupsBlock
|
||||||
|
clientGroupsBlock: []
|
||||||
|
# - name: default
|
||||||
|
# groups:
|
||||||
|
# - ads
|
||||||
|
# -- configure using hostsfile for lookups
|
||||||
|
# Allows for using the hosts configured in kubernetes and such
|
||||||
|
hostsFile:
|
||||||
|
enabled: false
|
||||||
|
filePath: /etc/hosts
|
||||||
|
hostsTTL: 60m
|
||||||
|
refreshPeriod: 30m
|
||||||
|
## TODO: add this with postgresql support as well
|
||||||
|
# queryLog:
|
||||||
|
# type: csv
|
||||||
|
# target: /logs
|
||||||
|
# logRetentionDays: 0
|
||||||
|
# creationAttempts: 3
|
||||||
|
# CreationCooldown: 2
|
||||||
|
podOptions:
|
||||||
|
automountServiceAccountToken: true
|
||||||
|
portal:
|
||||||
|
open:
|
||||||
|
enabled: false
|
||||||
|
serviceAccount:
|
||||||
|
main:
|
||||||
|
# -- Specifies whether a service account should be created
|
||||||
|
enabled: true
|
||||||
|
primary: true
|
||||||
|
# -- Create a ClusterRole and ClusterRoleBinding
|
||||||
|
# @default -- See below
|
||||||
|
rbac:
|
||||||
|
main:
|
||||||
|
# -- Enables or disables the ClusterRole and ClusterRoleBinding
|
||||||
|
enabled: true
|
||||||
|
primary: true
|
||||||
|
clusterWide: true
|
||||||
|
# -- Set Rules on the ClusterRole
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- services
|
||||||
|
- namespaces
|
||||||
|
verbs:
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- extensions
|
||||||
|
- networking.k8s.io
|
||||||
|
resources:
|
||||||
|
- ingresses
|
||||||
|
verbs:
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
k8sgateway:
|
||||||
|
enabled: true
|
||||||
|
# -- TTL for non-apex responses (in seconds)
|
||||||
|
ttl: 300
|
||||||
|
# -- Limit what kind of resources to watch, e.g. watchedResources: ["Ingress"]
|
||||||
|
watchedResources: []
|
||||||
|
# -- Service name of a secondary DNS server (should be `serviceName.namespace`)
|
||||||
|
secondary: ""
|
||||||
|
# -- Override the default `serviceName.namespace` domain apex
|
||||||
|
apex: ""
|
||||||
|
# -- list of processed domains
|
||||||
|
domains: []
|
||||||
|
# -- Delegated domain
|
||||||
|
# - domain: "example.com"
|
||||||
|
# # -- Optional configuration option for DNS01 challenge that will redirect all acme
|
||||||
|
# # challenge requests to external cloud domain (e.g. managed by cert-manager)
|
||||||
|
# # See: https://cert-manager.io/docs/configuration/acme/dns01/
|
||||||
|
# dnsChallenge:
|
||||||
|
# enabled: false
|
||||||
|
# domain: dns01.clouddns.com
|
||||||
|
|
||||||
|
forward:
|
||||||
|
enabled: false
|
||||||
|
primary: tls://1.1.1.1
|
||||||
|
secondary: tls://1.0.0.1
|
||||||
|
options:
|
||||||
|
- name: tls_servername
|
||||||
|
value: cloudflare-dns.com
|
||||||
|
|
||||||
|
configmap:
|
||||||
|
dashboard:
|
||||||
|
enabled: true
|
||||||
|
labels:
|
||||||
|
grafana_dashboard: "1"
|
||||||
|
data:
|
||||||
|
blocky.json: >-
|
||||||
|
{{ .Files.Get "dashboard.json" | indent 8 }}
|
||||||
|
blockypostgres.json: >-
|
||||||
|
{{ .Files.Get "dashboardpsql.json" | indent 8 }}
|
||||||
|
datasource:
|
||||||
|
enabled: true
|
||||||
|
labels:
|
||||||
|
grafana_datasources: "1"
|
||||||
|
data:
|
||||||
|
datasourceblockypsql.yaml: |-
|
||||||
|
apiVersion: 1
|
||||||
|
datasources:
|
||||||
|
- name: BlockyPostgres
|
||||||
|
type: postgres
|
||||||
|
uid: blockypostgres
|
||||||
|
url: {{ printf "%s.%s:5432" (.Values.cnpg.main.creds.host | trimAll "\"") .Release.Namespace }}
|
||||||
|
access: proxy
|
||||||
|
user: {{ .Values.cnpg.main.user }}
|
||||||
|
secureJsonData:
|
||||||
|
password: {{ .Values.cnpg.main.creds.password | default "na" }}
|
||||||
|
jsonData:
|
||||||
|
database: {{ .Values.cnpg.main.database }}
|
||||||
|
sslmode: 'disable' # disable/require/verify-ca/verify-full
|
||||||
|
maxOpenConns: 100 # Grafana v5.4+
|
||||||
|
maxIdleConns: 100 # Grafana v5.4+
|
||||||
|
maxIdleConnsAuto: true # Grafana v9.5.1+
|
||||||
|
connMaxLifetime: 14400 # Grafana v5.4+
|
||||||
|
postgresVersion: 1500 # 903=9.3, 904=9.4, 905=9.5, 906=9.6, 1000=10
|
||||||
|
timescaledb: false
|
||||||
|
|
||||||
|
metrics:
|
||||||
|
main:
|
||||||
|
# -- Enable and configure a Prometheus serviceMonitor for the chart under this key.
|
||||||
|
# @default -- See values.yaml
|
||||||
|
enabled: true
|
||||||
|
type: "servicemonitor"
|
||||||
|
endpoints:
|
||||||
|
- port: main
|
||||||
|
path: /metrics
|
||||||
|
# -- Enable and configure Prometheus Rules for the chart under this key.
|
||||||
|
# @default -- See values.yaml
|
||||||
|
prometheusRule:
|
||||||
|
enabled: false
|
||||||
|
labels: {}
|
||||||
|
# -- Configure additionial rules for the chart under this key.
|
||||||
|
# @default -- See prometheusrules.yaml
|
||||||
|
rules: []
|
||||||
|
# - alert: UnifiPollerAbsent
|
||||||
|
# annotations:
|
||||||
|
# description: Unifi Poller has disappeared from Prometheus service discovery.
|
||||||
|
# summary: Unifi Poller is down.
|
||||||
|
# expr: |
|
||||||
|
# absent(up{job=~".*unifi-poller.*"} == 1)
|
||||||
|
# for: 5m
|
||||||
|
# labels:
|
||||||
|
# severity: critical
|
||||||
|
|
||||||
|
redis:
|
||||||
|
enabled: true
|
||||||
|
# CANNOT be defined in above yaml section
|
||||||
|
queryLog:
|
||||||
|
# optional one of: mysql, postgresql, csv, csv-client. If empty, log to console
|
||||||
|
type: "postgresql"
|
||||||
|
# directory (should be mounted as volume in docker) for csv, db connection string for mysql, ignored for included postgresql
|
||||||
|
# target: /var/log/something
|
||||||
|
# postgresql target: postgres://user:password@db_host_or_ip:5432/db_name
|
||||||
|
# if > 0, deletes log files which are older than ... days
|
||||||
|
logRetentionDays: 0
|
||||||
|
# optional: Max attempts to create specific query log writer, default: 3
|
||||||
|
creationAttempts: 3
|
||||||
|
# optional: Time between the creation attempts, default: 2s
|
||||||
|
creationCooldown: 2s
|
||||||
|
|
||||||
|
cnpg:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
user: blocky
|
||||||
|
database: blocky
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1 @@
|
||||||
|
{{- include "tc.v1.common.lib.chart.notes" $ -}}
|
|
@ -0,0 +1,231 @@
|
||||||
|
{{/* Define the config */}}
|
||||||
|
{{- define "blocky.configmap" -}}
|
||||||
|
{{- $config := mustMerge ( include "blocky.config" . | fromYaml ) ( .Values.blockyConfig ) }}
|
||||||
|
enabled: true
|
||||||
|
data:
|
||||||
|
config.yml: |
|
||||||
|
{{ $config | toYaml | indent 4 }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "blocky.config" -}}
|
||||||
|
redis:
|
||||||
|
address: {{ printf "%v-%v" .Release.Name "redis" }}:6379
|
||||||
|
password: {{ .Values.redis.creds.redisPassword | trimAll "\"" }}
|
||||||
|
database: 0
|
||||||
|
required: true
|
||||||
|
connectionAttempts: 10
|
||||||
|
connectionCooldown: 3s
|
||||||
|
prometheus:
|
||||||
|
enable: true
|
||||||
|
path: /metrics
|
||||||
|
queryLog:
|
||||||
|
# optional one of: postgresql, csv, csv-client. If empty, log to console
|
||||||
|
type: {{ .Values.queryLog.type }}
|
||||||
|
# directory (should be mounted as volume in docker) for csv, db connection string for mysql/postgresql
|
||||||
|
#postgresql target: postgres://user:password@db_host_or_ip:5432/db_name
|
||||||
|
{{- if eq .Values.queryLog.type "postgresql" }}
|
||||||
|
target: {{ .Values.cnpg.main.creds.std }}
|
||||||
|
{{- else }}
|
||||||
|
target: {{ .Values.queryLog.target }}
|
||||||
|
{{- end }}
|
||||||
|
# if > 0, deletes log files which are older than ... days
|
||||||
|
logRetentionDays: {{ .Values.queryLog.logRetentionDays | default 0 }}
|
||||||
|
# optional: Max attempts to create specific query log writer
|
||||||
|
creationAttempts: {{ .Values.queryLog.creationAttempts | default 3 }}
|
||||||
|
# optional: Time between the creation attempts
|
||||||
|
creationCooldown: {{ .Values.queryLog.creationAttempts | default "2s" }}
|
||||||
|
|
||||||
|
upstream:
|
||||||
|
default:
|
||||||
|
{{- .Values.defaultUpstreams | toYaml | nindent 8 }}
|
||||||
|
{{- range $id, $value := .Values.upstreams }}
|
||||||
|
{{ $value.name }}:
|
||||||
|
{{- $value.dnsservers | toYaml | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
ports:
|
||||||
|
{{- if .Values.service.dnsudp.enabled }}
|
||||||
|
dns: {{ .Values.service.dnsudp.ports.dnsudp.targetPort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.service.dot.enabled }}
|
||||||
|
tls: {{ .Values.service.dot.ports.dot.targetPort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.service.main.enabled }}
|
||||||
|
http: {{ .Values.service.main.ports.main.targetPort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.service.https.enabled }}
|
||||||
|
https: {{ .Values.service.https.ports.https.targetPort }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if .Values.certFile }}
|
||||||
|
certFile: {{ .Values.certFile }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if .Values.keyFile }}
|
||||||
|
keyFile: {{ .Values.keyFile }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
log:
|
||||||
|
{{- if .Values.logLevel }}
|
||||||
|
level: {{ .Values.logLevel }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.logTimestamp }}
|
||||||
|
timestamp: {{ .Values.logTimestamp }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.logPrivacy }}
|
||||||
|
privacy: {{ .Values.logPrivacy }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if .Values.dohUserAgent }}
|
||||||
|
dohUserAgent: {{ .Values.dohUserAgent }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if .Values.minTlsServeVersion }}
|
||||||
|
minTlsServeVersion: {{ .Values.minTlsServeVersion }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
caching:
|
||||||
|
{{ toYaml .Values.caching | indent 2 }}
|
||||||
|
|
||||||
|
{{- if .Values.hostsFile.enabled }}
|
||||||
|
{{ $hostsfile := omit .Values.hostsFile "enabled" }}
|
||||||
|
hostsFile:
|
||||||
|
{{ toYaml $hostsfile | indent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if or .Values.bootstrapDns.upstream .Values.bootstrapDns.ips }}
|
||||||
|
bootstrapDns:
|
||||||
|
{{- if .Values.bootstrapDns.upstream }}
|
||||||
|
- upstream: {{ .Values.bootstrapDns.upstream }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.bootstrapDns.ips }}
|
||||||
|
ips:
|
||||||
|
{{- range $id, $value := .Values.bootstrapDns.ips }}
|
||||||
|
- {{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{/* Add additional Bootstrap DNS */}}
|
||||||
|
{{- range .Values.additionalBootstrapDns }}
|
||||||
|
{{- with .upstream }}
|
||||||
|
- upstream: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .ips }}
|
||||||
|
ips:
|
||||||
|
{{- range $id, $value := .ips }}
|
||||||
|
- {{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if or .Values.filtering.filtering }}
|
||||||
|
filtering:
|
||||||
|
{{- if .Values.filtering.ips }}
|
||||||
|
queryTypes:
|
||||||
|
{{- range $id, $value := .Values.filtering.ips }}
|
||||||
|
- {{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if or .Values.customDNS.filterUnmappedTypes .Values.customDNS.customTTL .Values.customDNS.rewrite .Values.customDNS.mapping }}
|
||||||
|
customDNS:
|
||||||
|
{{- if .Values.customDNS.upstream }}
|
||||||
|
upstream: {{ .Values.customDNS.upstream }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.customDNS.customTTL }}
|
||||||
|
customTTL: {{ .Values.customDNS.customTTL }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.customDNS.rewrite }}
|
||||||
|
rewrite:
|
||||||
|
{{- range $id, $value := .Values.customDNS.rewrite }}
|
||||||
|
{{ $value.in }}: {{ $value.out }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if .Values.customDNS.mapping }}
|
||||||
|
mapping:
|
||||||
|
{{- range $id, $value := .Values.customDNS.mapping }}
|
||||||
|
{{ $value.domain }}: {{ $value.dnsserver }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if or .Values.clientLookup.upstream .Values.clientLookup.ips }}
|
||||||
|
clientLookup:
|
||||||
|
{{- if .Values.clientLookup.upstream }}
|
||||||
|
upstream: {{ .Values.clientLookup.upstream }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.clientLookup.ips }}
|
||||||
|
singleNameOrder:
|
||||||
|
{{- range $id, $value := .Values.clientLookup.ips }}
|
||||||
|
- {{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.clientLookup.clients }}
|
||||||
|
clients:
|
||||||
|
{{- range $id, $value := .Values.clientLookup.clients }}
|
||||||
|
{{ $value.domain }}:
|
||||||
|
{{- range $id, $value := .ips }}
|
||||||
|
- {{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if or .Values.conditional.rewrite .Values.conditional.mapping ( and .Values.k8sgateway.enabled .Values.k8sgateway.domains ) }}
|
||||||
|
conditional:
|
||||||
|
{{- if .Values.conditional.rewrite }}
|
||||||
|
rewrite:
|
||||||
|
{{- range $id, $value := .Values.conditional.rewrite }}
|
||||||
|
{{ $value.in }}: {{ $value.out }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if or .Values.conditional.mapping ( and .Values.k8sgateway.enabled .Values.k8sgateway.domains ) }}
|
||||||
|
mapping:
|
||||||
|
{{- if and .Values.k8sgateway.enabled .Values.k8sgateway.domains }}
|
||||||
|
{{- range $id, $value := .Values.k8sgateway.domains }}
|
||||||
|
{{ .domain }}: 127.0.0.1:{{ $.Values.service.k8sgateway.ports.k8sgateway.targetPort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range $id, $value := .Values.conditional.mapping }}
|
||||||
|
{{ $value.domain }}: {{ $value.dnsserver }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
blocking:
|
||||||
|
blockType: {{ .Values.blocking.blockType }}
|
||||||
|
blockTTL: {{ .Values.blocking.blockTTL }}
|
||||||
|
refreshPeriod: {{ .Values.blocking.refreshPeriod }}
|
||||||
|
downloadTimeout: {{ .Values.blocking.downloadTimeout }}
|
||||||
|
downloadAttempts: {{ .Values.blocking.downloadAttempts }}
|
||||||
|
downloadCooldown: {{ .Values.blocking.downloadCooldown }}
|
||||||
|
startStrategy: {{ .Values.blocking.startStrategy }}
|
||||||
|
processingConcurrency: {{ .Values.blocking.processingConcurrency }}
|
||||||
|
{{- if .Values.blocking.whitelist }}
|
||||||
|
whiteLists:
|
||||||
|
{{- range $id, $value := .Values.blocking.whitelist }}
|
||||||
|
{{ $value.name }}:
|
||||||
|
{{- $value.lists | toYaml | nindent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if .Values.blocking.blacklist }}
|
||||||
|
blackLists:
|
||||||
|
{{- range $id, $value := .Values.blocking.blacklist }}
|
||||||
|
{{ $value.name }}:
|
||||||
|
{{- $value.lists | toYaml | nindent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if .Values.blocking.clientGroupsBlock }}
|
||||||
|
clientGroupsBlock:
|
||||||
|
{{- range $id, $value := .Values.blocking.clientGroupsBlock }}
|
||||||
|
{{ $value.name }}:
|
||||||
|
{{- $value.groups | toYaml | nindent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- end -}}
|
|
@ -0,0 +1,90 @@
|
||||||
|
{{- define "k8sgateway.container" -}}
|
||||||
|
enabled: true
|
||||||
|
imageSelector: k8sgatewayImage
|
||||||
|
securityContext:
|
||||||
|
runAsUser: 0
|
||||||
|
runAsGroup: 0
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
args: ["-conf", "/etc/coredns/Corefile"]
|
||||||
|
probes:
|
||||||
|
readiness:
|
||||||
|
enabled: true
|
||||||
|
path: /ready
|
||||||
|
port: 8181
|
||||||
|
liveness:
|
||||||
|
enabled: true
|
||||||
|
path: /health
|
||||||
|
port: 8080
|
||||||
|
startup:
|
||||||
|
enabled: true
|
||||||
|
path: /ready
|
||||||
|
port: 8181
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the matchable regex from domain
|
||||||
|
*/}}
|
||||||
|
{{- define "k8sgateway.configmap.regex" -}}
|
||||||
|
{{- if .dnsChallenge.domain }}
|
||||||
|
{{- .dnsChallenge.domain | replace "." "[.]" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{ "unset" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/* Define the configmap */}}
|
||||||
|
{{- define "k8sgateway.configmap" -}}
|
||||||
|
{{- $values := .Values.k8sgateway }}
|
||||||
|
{{- $fqdn := ( include "tc.v1.common.lib.chart.names.fqdn" . ) }}
|
||||||
|
enabled: true
|
||||||
|
data:
|
||||||
|
Corefile: |
|
||||||
|
.:{{ .Values.service.k8sgateway.ports.k8sgateway.targetPort }} {
|
||||||
|
errors
|
||||||
|
log
|
||||||
|
health {
|
||||||
|
lameduck 5s
|
||||||
|
}
|
||||||
|
ready
|
||||||
|
{{- range .Values.k8sgateway.domains }}
|
||||||
|
{{- if .dnsChallenge.enabled }}
|
||||||
|
{{- if not .dnsChallenge.domain -}}
|
||||||
|
{{- fail "DNS01 challenge domain is mandatory" -}}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
template IN ANY {{ required "Delegated domain ('domain') is mandatory" .domain }} {
|
||||||
|
match "_acme-challenge[.](.*)[.]{{ include "k8sgateway.configmap.regex" . }}"
|
||||||
|
{{- $name := "{{ \"{{ .Name }}\" }}" }}
|
||||||
|
{{- $index := "{{ \"{{ index .Match 1 }}\" }}" }}
|
||||||
|
answer "{{ $name }} 5 IN CNAME {{ $index }}.{{ .dnsChallenge.domain }}"
|
||||||
|
fallthrough
|
||||||
|
}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
k8s_gateway {{ range .Values.k8sgateway.domains }}"{{ required "Delegated domain ('domain') is mandatory " .domain }}"{{ end }} {
|
||||||
|
apex {{ $values.apex | default $fqdn }}
|
||||||
|
ttl {{ $values.ttl }}
|
||||||
|
{{- if $values.secondary }}
|
||||||
|
secondary {{ $values.secondary }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if $values.watchedResources }}
|
||||||
|
resources {{ join " " $values.watchedResources }}
|
||||||
|
{{- end }}
|
||||||
|
fallthrough
|
||||||
|
}
|
||||||
|
|
||||||
|
prometheus 0.0.0.0:9153
|
||||||
|
{{- if .Values.k8sgateway.forward.enabled }}
|
||||||
|
forward . {{ .Values.k8sgateway.forward.primary }} {{ .Values.k8sgateway.forward.secondary }} {
|
||||||
|
{{- range .Values.k8sgateway.forward.options }}
|
||||||
|
{{ .name }} {{ .value }}
|
||||||
|
{{- end }}
|
||||||
|
}
|
||||||
|
{{- else }}
|
||||||
|
forward . 1.1.1.1
|
||||||
|
{{- end }}
|
||||||
|
loop
|
||||||
|
reload
|
||||||
|
loadbalance
|
||||||
|
}
|
||||||
|
{{- end -}}
|
|
@ -0,0 +1,106 @@
|
||||||
|
{{/* Make sure all variables are set properly */}}
|
||||||
|
{{- if eq .Values.queryLog.type "postgresql" -}}
|
||||||
|
{{- $_ := set .Values.cnpg.main "enabled" true -}}
|
||||||
|
{{- end }}
|
||||||
|
{{- include "tc.v1.common.loader.init" . }}
|
||||||
|
|
||||||
|
{{/* Render configmap for blocky */}}
|
||||||
|
{{- $configmapFile := include "blocky.configmap" . | fromYaml -}}
|
||||||
|
{{- if $configmapFile -}}
|
||||||
|
{{- $_ := set .Values.configmap "config" $configmapFile -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $gatewayconfig := include "k8sgateway.configmap" . | fromYaml -}}
|
||||||
|
{{- if $gatewayconfig -}}
|
||||||
|
{{- $_ := set .Values.configmap "corefile" $gatewayconfig -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/* Always mount the configmap, with the basic config, plus the 'blockyConfig' */}}
|
||||||
|
{{- define "blocky.configmap.mount" -}}
|
||||||
|
enabled: true
|
||||||
|
type: configmap
|
||||||
|
mountPath: /app/config.yml
|
||||||
|
objectName: config
|
||||||
|
readOnly: true
|
||||||
|
subPath: config.yml
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/* Append the general configMap volume to the volumes */}}
|
||||||
|
{{- define "k8sgateway.configvolume" -}}
|
||||||
|
enabled: true
|
||||||
|
type: configmap
|
||||||
|
objectName: corefile
|
||||||
|
items:
|
||||||
|
- key: Corefile
|
||||||
|
path: Corefile
|
||||||
|
targetSelector:
|
||||||
|
main:
|
||||||
|
k8sgateway:
|
||||||
|
mountPath: "/etc/coredns"
|
||||||
|
readOnly: true
|
||||||
|
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $_ := set .Values.persistence "tc-config" (include "blocky.configmap.mount" . | fromYaml) -}}
|
||||||
|
|
||||||
|
{{- if and .Values.k8sgateway.enabled .Values.k8sgateway.domains -}}
|
||||||
|
{{- $_ := set .Values.persistence "config-volume" (include "k8sgateway.configvolume" . | fromYaml) -}}
|
||||||
|
{{- $_ := set .Values.workload.main.podSpec.containers "k8sgateway" (include "k8sgateway.container" . | fromYaml) -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/* Define path for api */}}
|
||||||
|
{{- define "blocky.api" -}}
|
||||||
|
{{- $fullname := include "tc.v1.common.lib.chart.names.fullname" . -}}
|
||||||
|
path: "/api"
|
||||||
|
# -- Ignored if not kubeVersion >= 1.14-0
|
||||||
|
pathType: Prefix
|
||||||
|
service:
|
||||||
|
# -- Overrides the service name reference for this path
|
||||||
|
name: {{ printf "%s-main" $fullname }}
|
||||||
|
port: {{ .Values.service.main.ports.main.port }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/* inject websocket path to all main ingress hosts*/}}
|
||||||
|
{{- define "blocky.apiinjector" -}}
|
||||||
|
{{- $path := list (include "blocky.api" . | fromYaml) -}}
|
||||||
|
{{- if .Values.ingress.main.enabled }}
|
||||||
|
{{- range .Values.ingress.main.hosts }}
|
||||||
|
{{- $newpaths := list }}
|
||||||
|
{{- $newpaths := concat .paths $path }}
|
||||||
|
{{- $_ := set . "paths" ( deepCopy $newpaths ) -}}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/* inject api paths in ingress */}}
|
||||||
|
{{- include "blocky.apiinjector" . }}
|
||||||
|
|
||||||
|
{{/* Define path for DoH */}}
|
||||||
|
{{- define "blocky.doh" -}}
|
||||||
|
{{- $fullname := include "tc.v1.common.lib.chart.names.fullname" . -}}
|
||||||
|
path: "/dns-query"
|
||||||
|
# -- Ignored if not kubeVersion >= 1.14-0
|
||||||
|
pathType: Prefix
|
||||||
|
service:
|
||||||
|
# -- Overrides the service name reference for this path
|
||||||
|
name: {{ printf "%s-main" $fullname }}
|
||||||
|
port: {{ .Values.service.main.ports.main.port }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/* inject websocket path to all main ingress hosts*/}}
|
||||||
|
{{- define "blocky.dohinjector" -}}
|
||||||
|
{{- $path := list (include "blocky.doh" . | fromYaml) -}}
|
||||||
|
{{- if .Values.ingress.main.enabled }}
|
||||||
|
{{- range .Values.ingress.main.hosts }}
|
||||||
|
{{- $newpaths := list }}
|
||||||
|
{{- $newpaths := concat .paths $path }}
|
||||||
|
{{- $_ := set . "paths" ( deepCopy $newpaths ) -}}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/* inject api paths in ingress */}}
|
||||||
|
{{- include "blocky.dohinjector" . }}
|
||||||
|
|
||||||
|
{{/* Render the templates */}}
|
||||||
|
{{ include "tc.v1.common.loader.apply" . }}
|
|
@ -1,9 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
## [traefik-26.4.14](https://github.com/truecharts/charts/compare/traefik-26.4.13...traefik-26.4.14) (2024-03-05)
|
|
||||||
|
|
||||||
### Fix
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- bump common to fix some loadbalancer issues with metallb
|
|
Loading…
Reference in New Issue