Compare commits

..

12 Commits

Author SHA1 Message Date
vfebvre 30b3fc555a fix[README]: Added --role writer in token authentication creation
Cadoles/bouncer/pipeline/pr-develop There was a failure building this commit Details
2024-02-19 11:35:36 +01:00
vfebvre f38860e8ef fix[README]: add identifier generation step
Cadoles/bouncer/pipeline/pr-develop This commit looks good Details
2024-02-19 11:01:01 +01:00
wpetit 2edd795ab8 feat: add configurable redis timeouts
Cadoles/bouncer/pipeline/pr-develop This commit looks good Details
2024-02-15 15:17:57 +01:00
wpetit 4d1ca1787c feat: generalize siege task 2024-02-15 15:17:28 +01:00
wpetit 6f61073d1f fix(k8s): redis configuration 2024-02-15 15:17:04 +01:00
Philippe Caseiro 017e1e8a7c fix(skaffold): adding port-forward for testing
Cadoles/bouncer/pipeline/pr-develop This commit looks good Details
2024-02-05 16:31:13 +01:00
Philippe Caseiro 086564b429 fup
Cadoles/bouncer/pipeline/pr-develop This commit looks good Details
2024-02-05 15:54:10 +01:00
Philippe Caseiro 2b37735818 feat(pkg): adding archlinux package to gorelease
Cadoles/bouncer/pipeline/pr-develop This commit looks good Details
2024-02-05 14:34:59 +01:00
Philippe Caseiro f2755023bd fix(doc): test command was incorrect 2024-02-05 14:34:30 +01:00
Philippe Caseiro 0c9a387d42 fix(kustomization): adding correct labels to deployments
Cadoles/bouncer/pipeline/pr-develop This commit looks good Details
2024-02-05 14:33:57 +01:00
Philippe Caseiro 9ab785e285 Merge branch 'develop' into feat/issue-10/add-k8s-kustomize
Cadoles/bouncer/pipeline/pr-develop This commit looks good Details
2024-02-05 11:33:18 +01:00
Philippe Caseiro bcc73a97cc feat(k8s): adding kubernetes support
Cadoles/bouncer/pipeline/head This commit looks good Details
Cadoles/bouncer/pipeline/pr-develop This commit looks good Details
Now we can use skaffold and deploy bouncer in a kubernetes cluster

ref #10
2023-07-10 17:02:56 +02:00
8 changed files with 6 additions and 136 deletions

View File

@ -6,11 +6,9 @@
## Exemples
- [(FR) - Exemple de déploiement multi-noeuds](../misc/docker-compose/README.md)
## Référence
- [(FR) - Layers](./fr/references/layers/README.md)
- [(FR) - Métriques](./fr/references/metrics.md)
- [(FR) - Fichier de configuration](../misc/packaging/common/config.yml)
- [(FR) - API d'administration](./fr/references/admin_api.md)

View File

@ -32,10 +32,6 @@ Ce layer permet de bloquer l'accès à un site (ou une section de celui ci) cibl
Voir le [fichier de configuration de référence](../../../../misc/packaging/common/config.yml), section `layers.circuitbreaker` pour voir les options permettant de personnaliser le chemin du répertoire contenant les templates.
## Schéma
### Schéma
Voir le [schéma JSON](../../../../internal/proxy/director/layer/circuitbreaker/layer-options.json).
## Métriques
_Aucune [métrique Prometheus](../metrics.md) n'est exportée par ce layer._

View File

@ -30,34 +30,6 @@ Ce layer permet d'ajouter un mécanisme de file d'attente dynamique au proxy ass
Par exemple, si vous souhaitez limiter votre file à l'ensemble d'une section "`/blog`" d'un site, vous pouvez déclarer la valeur `["*/blog*"]`. Les autres URLs du site ne seront pas affectées par cette file d'attente.
## Schéma
### Schéma
Voir le [schéma JSON](../../../../internal/proxy/director/layer/queue/schema/layer-options.json).
## Métriques
Les [métriques Prometheus](../metrics.md) suivantes sont exposées par ce layer.
### `bouncer_layer_queue_capacity{layer=<layerName>,proxy=<proxyName>}`
- **Type:** `gauge`
- **Description**: Capacité maximale de la queue
- **Exemple**
```
# HELP bouncer_layer_queue_capacity Bouncer's queue layer capacity
# TYPE bouncer_layer_queue_capacity gauge
bouncer_layer_queue_capacity{layer="queue",proxy="cadoles"} 2
```
### `bouncer_layer_queue_sessions{layer=<layerName>,proxy=<proxyName>}`
- **Type:** `gauge`
- **Description**: Nombre courant de sessions ouvertes
- **Exemple**
```
# HELP bouncer_layer_queue_sessions Bouncer's queue layer current sessions
# TYPE bouncer_layer_queue_sessions gauge
bouncer_layer_queue_sessions{layer="queue",proxy="cadoles"} 3
```

View File

@ -1,29 +0,0 @@
# Métriques
Bouncer expose un certain nombre de métriques Prometheus sur le serveur proxy ainsi que sur le serveur d'administration. Ces métriques sont par défaut accessibles sur `/.bouncer/metrics`.
Il est possible de configurer le point d'entrée de ces métriques ainsi que d'ajouter une authentification de type `Basic Auth` [via la configuration](../../../misc/packaging/common/config.yml) (voir les clés `admin.metrics` et `proxy.metrics`).
Outre les métriques par défaut fournies par la librairie [Prometheus](https://prometheus.io/docs/guides/go-application/#instrumenting-a-go-application-for-prometheus), les serveurs Bouncer exposent également des métriques propres.
Chaque layer associé à un proxy peut également ses propres métriques spécifiques. [Voir la page de documentation](./layers/README.md) de chaque layer pour plus d'informations.
## Métriques spécifiques
### Serveur proxy
#### `bouncer_proxy_director_proxy_requests_total{proxy=<proxyName>}`
- **Type:** `counter`
- **Description**: Nombre total de requêtes ayant transité par le proxy
- **Exemple**
```
# HELP bouncer_proxy_director_proxy_requests_total Bouncer proxy total requests
# TYPE bouncer_proxy_director_proxy_requests_total counter
bouncer_proxy_director_proxy_requests_total{proxy="cadoles"} 64
```
### Serveur d'administration
_Pas de métrique supplémentaire._

View File

@ -5,28 +5,15 @@ import (
"strings"
"forge.cadoles.com/cadoles/bouncer/internal/admin"
"forge.cadoles.com/cadoles/bouncer/internal/auth/jwt"
"forge.cadoles.com/cadoles/bouncer/internal/command/common"
"forge.cadoles.com/cadoles/bouncer/internal/jwk"
"forge.cadoles.com/cadoles/bouncer/internal/setup"
"github.com/pkg/errors"
"github.com/urfave/cli/v2"
"gitlab.com/wpetit/goweb/logger"
)
const (
flagPrintDefaultToken = "print-default-token"
)
func RunCommand() *cli.Command {
flags := append(
common.Flags(),
&cli.BoolFlag{
Name: flagPrintDefaultToken,
Usage: "Generate and print a default writer token in console at startup",
Value: true,
},
)
flags := common.Flags()
return &cli.Command{
Name: "run",
@ -49,22 +36,6 @@ func RunCommand() *cli.Command {
defer flushSentry()
if printDefaultToken := ctx.Bool(flagPrintDefaultToken); printDefaultToken {
key, err := jwk.Generate(jwk.DefaultKeySize)
if err != nil {
return errors.Wrap(err, "could not generate default key")
}
token, err := jwt.GenerateToken(ctx.Context, key, string(conf.Admin.Auth.Issuer), "default-admin", jwt.Role(jwt.RoleWriter))
if err != nil {
return errors.WithStack(err)
}
logger.SetLevel(logger.LevelInfo)
logger.Info(ctx.Context, "default writer token", logger.F("token", token))
logger.SetLevel(logger.Level(conf.Logger.Level))
}
srv := admin.NewServer(
admin.WithServerConfig(conf.Admin),
admin.WithRedisConfig(conf.Redis),

View File

@ -1,9 +0,0 @@
# K6 - Load Test
Very basic load testing script for [k6](https://k6.io/).
## How to run
```shell
k6 run cadoles-loadtest.js
```

View File

@ -1,29 +0,0 @@
import { check } from 'k6';
import { browser } from 'k6/experimental/browser';
export const options = {
scenarios: {
browser: {
vus: 10,
iterations: 100,
executor: 'shared-iterations',
options: {
browser: {
type: 'chromium',
},
},
},
}
};
export default async function () {
const page = browser.newPage();
try {
await page.goto('https://www.cadoles.com');
check(page, {
'Homepage loaded': p => p.locator('h1').textContent().trim() == 'La liberté est un choix',
});
} finally {
page.close();
}
}

View File

@ -159,7 +159,7 @@ logger:
# 2 - WARNING
# 3 - ERROR
# 4 - FATAL
level: 2
level: 1
# Format des logs, "human" ou "json"
format: human