From 79a54b27b63ccba413879ae7bb44f901c7e497c8 Mon Sep 17 00:00:00 2001 From: Eguzki Astiz Lezaun Date: Mon, 7 Oct 2024 10:02:11 +0100 Subject: [PATCH] Removed 0.10.0 with mike 2.1.0 --- 0.10.0/404.html | 3326 -------- 0.10.0/CNAME | 1 - 0.10.0/api-quickstart/images/geosight.png | Bin 198806 -> 0 bytes 0.10.0/api-quickstart/index.html | 4367 ----------- .../architectural-overview-v1/index.html | 3938 ---------- .../design/architectural-overview/index.html | 3826 ---------- .../docs/design/images/1000m-overview.png | Bin 146275 -> 0 bytes .../design/images/arch_observability_1.jpg | Bin 283941 -> 0 bytes .../design/images/arch_observability_2.jpg | Bin 285786 -> 0 bytes .../design/images/control-plane-overview.jpg | Bin 109055 -> 0 bytes .../design/images/data-plane-overview.jpg | Bin 245070 -> 0 bytes .../docs/design/images/gateway-placement.png | Bin 216658 -> 0 bytes .../images/high-level-multi-cluster.png | Bin 364810 -> 0 bytes .../docs/design/images/highest-level.jpg | Bin 72314 -> 0 bytes .../design/images/multi-cluster-layout.jpg | Bin 399046 -> 0 bytes .../docs/design/images/observability.png | Bin 53788 -> 0 bytes .../docs/design/images/ocm-integration.png | Bin 114401 -> 0 bytes .../docs/design/images/request-flow.png | Bin 374884 -> 0 bytes .../design/images/single-cluster-layout.jpg | Bin 376787 -> 0 bytes .../design/modular_installation/index.html | 3456 --------- .../architecture/rfcs/0001-rlp-v2/index.html | 5274 ------------- .../0002-well-known-attributes/index.html | 4059 ---------- .../DNSRecordStructure/index.html | 3595 --------- .../rfcs/0003-dns-policy/index.html | 3570 --------- .../policy_status_1.png | Bin 18956 -> 0 bytes .../policy_status_2.png | Bin 27708 -> 0 bytes .../policy_status_3.png | Bin 67663 -> 0 bytes .../policy_status_4.png | Bin 76260 -> 0 bytes .../policy_status_5.png | Bin 81655 -> 0 bytes .../rfcs/0004-policy-status/index.html | 3596 --------- .../0005-single-cluster-dnspolicy/index.html | 3624 --------- .../index.html | 3580 --------- .../rfcs/0007-policy-sync-v1/index.html | 3526 --------- .../0008-kuadrant-release-process/index.html | 3647 --------- .../example-a1.png | Bin 270738 -> 0 bytes .../example-b1.png | Bin 275553 -> 0 bytes .../example-b2.png | Bin 272439 -> 0 bytes .../example-c1.png | Bin 274404 -> 0 bytes .../example-d1.png | Bin 276316 -> 0 bytes .../example-d2.png | Bin 290482 -> 0 bytes .../example-e1.png | Bin 287541 -> 0 bytes .../example-e2.png | Bin 287550 -> 0 bytes .../example-e3.png | Bin 334115 -> 0 bytes .../example-f1.png | Bin 272470 -> 0 bytes .../example-f2.png | Bin 276483 -> 0 bytes .../0009-defaults-and-overrides/index.html | 4297 ----------- .../index.html | 3532 --------- .../rfcs/0011-policy-machinery/index.html | 3555 --------- .../rfcs/dns-policy-api-changes/index.html | 3464 --------- .../images/architecture-multi-cluster.png | Bin 150505 -> 0 bytes .../images/architecture-single-cluster.png | Bin 76590 -> 0 bytes 0.10.0/assets/images/cncf-color.png | Bin 24146 -> 0 bytes 0.10.0/assets/images/deploy.png | Bin 91193 -> 0 bytes 0.10.0/assets/images/favicon.png | Bin 658 -> 0 bytes 0.10.0/assets/images/logo.png | Bin 5690 -> 0 bytes .../assets/javascripts/bundle.bd41221c.min.js | 29 - .../javascripts/bundle.bd41221c.min.js.map | 7 - .../javascripts/lunr/min/lunr.ar.min.js | 1 - .../javascripts/lunr/min/lunr.da.min.js | 18 - .../javascripts/lunr/min/lunr.de.min.js | 18 - .../javascripts/lunr/min/lunr.du.min.js | 18 - .../javascripts/lunr/min/lunr.el.min.js | 1 - .../javascripts/lunr/min/lunr.es.min.js | 18 - .../javascripts/lunr/min/lunr.fi.min.js | 18 - .../javascripts/lunr/min/lunr.fr.min.js | 18 - .../javascripts/lunr/min/lunr.he.min.js | 1 - .../javascripts/lunr/min/lunr.hi.min.js | 1 - .../javascripts/lunr/min/lunr.hu.min.js | 18 - .../javascripts/lunr/min/lunr.hy.min.js | 1 - .../javascripts/lunr/min/lunr.it.min.js | 18 - .../javascripts/lunr/min/lunr.ja.min.js | 1 - .../javascripts/lunr/min/lunr.jp.min.js | 1 - .../javascripts/lunr/min/lunr.kn.min.js | 1 - .../javascripts/lunr/min/lunr.ko.min.js | 1 - .../javascripts/lunr/min/lunr.multi.min.js | 1 - .../javascripts/lunr/min/lunr.nl.min.js | 18 - .../javascripts/lunr/min/lunr.no.min.js | 18 - .../javascripts/lunr/min/lunr.pt.min.js | 18 - .../javascripts/lunr/min/lunr.ro.min.js | 18 - .../javascripts/lunr/min/lunr.ru.min.js | 18 - .../javascripts/lunr/min/lunr.sa.min.js | 1 - .../lunr/min/lunr.stemmer.support.min.js | 1 - .../javascripts/lunr/min/lunr.sv.min.js | 18 - .../javascripts/lunr/min/lunr.ta.min.js | 1 - .../javascripts/lunr/min/lunr.te.min.js | 1 - .../javascripts/lunr/min/lunr.th.min.js | 1 - .../javascripts/lunr/min/lunr.tr.min.js | 18 - .../javascripts/lunr/min/lunr.vi.min.js | 1 - .../javascripts/lunr/min/lunr.zh.min.js | 1 - 0.10.0/assets/javascripts/lunr/tinyseg.js | 206 - 0.10.0/assets/javascripts/lunr/wordcut.js | 6708 ----------------- .../workers/search.b8dbb3d2.min.js | 42 - .../workers/search.b8dbb3d2.min.js.map | 7 - 0.10.0/assets/stylesheets/extra.css | 32 - .../assets/stylesheets/main.10ba22f1.min.css | 1 - .../stylesheets/main.10ba22f1.min.css.map | 1 - .../stylesheets/palette.06af60db.min.css | 1 - .../stylesheets/palette.06af60db.min.css.map | 1 - 0.10.0/authorino-operator/index.html | 4439 ----------- 0.10.0/authorino/docs/architecture.gif | Bin 439345 -> 0 bytes 0.10.0/authorino/docs/architecture/index.html | 4203 ----------- 0.10.0/authorino/docs/auth-pipeline.gif | Bin 568634 -> 0 bytes .../authorino/docs/code_of_conduct/index.html | 3377 --------- 0.10.0/authorino/docs/contributing/index.html | 3913 ---------- 0.10.0/authorino/docs/features/index.html | 5241 ------------- .../authorino/docs/getting-started/index.html | 4034 ---------- 0.10.0/authorino/docs/index.html | 3426 --------- 0.10.0/authorino/docs/terminology/index.html | 3478 --------- .../user-guides/anonymous-access/index.html | 3692 --------- .../api-key-authentication/index.html | 3757 --------- .../index.html | 3793 ---------- .../docs/user-guides/authzed/index.html | 3930 ---------- .../docs/user-guides/caching/index.html | 3769 --------- .../deny-with-redirect-to-login/index.html | 3913 ---------- .../index.html | 4061 ---------- .../envoy-jwt-authn-and-authorino/index.html | 4040 ---------- .../user-guides/external-metadata/index.html | 3773 --------- .../docs/user-guides/hello-world/index.html | 3788 ---------- .../docs/user-guides/host-override/index.html | 3574 --------- .../http-basic-authentication/index.html | 3802 ---------- .../keycloak-authorization-services-1.png | Bin 265966 -> 0 bytes .../keycloak-authorization-services-2.png | Bin 257670 -> 0 bytes .../keycloak-authorization-services-3.png | Bin 278584 -> 0 bytes 0.10.0/authorino/docs/user-guides/index.html | 3476 --------- .../user-guides/injecting-data/index.html | 3762 --------- .../index.html | 3796 ---------- .../index.html | 3784 ---------- .../kubernetes-subjectaccessreview/index.html | 3884 ---------- .../kubernetes-tokenreview/index.html | 3824 ---------- .../mtls-authentication/index.html | 4007 ---------- .../oauth2-token-introspection/index.html | 3867 ---------- .../docs/user-guides/observability/index.html | 5440 ------------- .../oidc-jwt-authentication/index.html | 3730 --------- .../docs/user-guides/oidc-rbac/index.html | 3857 ---------- .../user-guides/oidc-user-info/index.html | 3743 --------- .../user-guides/opa-authorization/index.html | 3768 --------- .../passing-credentials/index.html | 3811 ---------- .../index.html | 3880 ---------- .../docs/user-guides/sharding/index.html | 3789 ---------- .../token-normalization/index.html | 3851 ---------- .../user-guides/validating-webhook/index.html | 4161 ---------- 0.10.0/authorino/index.html | 3969 ---------- .../authorino.kuadrant.io_authconfigs.yaml | 4488 ----------- .../authorino/install/crd/kustomization.yaml | 18 - .../crd/patches/oneof_in_authconfigs.yaml | 415 - .../crd/patches/webhook_in_authconfigs.yaml | 20 - .../kuadrant.io_v1alpha1_dnsrecord.yaml | 20 - .../config/samples/kustomization.yaml | 4 - 0.10.0/dns-operator/docs/RELEASE/index.html | 3517 --------- .../dnsrecord-lifecycle/index.html | 3389 --------- 0.10.0/dns-operator/docs/provider/index.html | 3617 --------- .../docs/reference/dnsrecord/index.html | 3674 --------- 0.10.0/dns-operator/index.html | 3697 --------- .../getting-started-multi-cluster/index.html | 3571 --------- .../getting-started-single-cluster/index.html | 3742 --------- 0.10.0/index.html | 3432 --------- .../samples/kuadrant_v1alpha1_dnspolicy.yaml | 13 - .../samples/kuadrant_v1alpha1_tlspolicy.yaml | 14 - .../samples/kuadrant_v1beta1_kuadrant.yaml | 6 - .../samples/kuadrant_v1beta2_authpolicy.yaml | 18 - .../kuadrant_v1beta2_ratelimitpolicy.yaml | 16 - .../config/samples/kustomization.yaml | 8 - 0.10.0/kuadrant-operator/doc/auth/index.html | 4210 ----------- .../doc/development/index.html | 4060 ---------- 0.10.0/kuadrant-operator/doc/dns/index.html | 3940 ---------- .../doc/dnshealthchecks/index.html | 3580 --------- .../doc/images/kuadrant-architecture.svg | 1 - .../doc/install/install-kubernetes/index.html | 3703 --------- .../doc/install/install-openshift/index.html | 3980 ---------- .../kuadrant-operator/doc/logging/index.html | 3391 --------- .../doc/observability/examples/index.html | 3551 --------- .../doc/observability/grafana_trace.png | Bin 222423 -> 0 bytes .../observability/grafana_tracing_loki.png | Bin 131715 -> 0 bytes .../doc/observability/metrics/index.html | 3622 --------- .../doc/observability/tracing/index.html | 3629 --------- .../images/authpolicy-control-structure.png | Bin 60035 -> 0 bytes .../rlp-target-gateway-resource/index.html | 3793 ---------- .../doc/rate-limiting/index.html | 4255 ----------- .../doc/reference/authpolicy/index.html | 4343 ----------- .../doc/reference/dnspolicy/index.html | 3913 ---------- .../doc/reference/kuadrant/index.html | 3442 --------- .../doc/reference/ratelimitpolicy/index.html | 3859 ---------- .../doc/reference/route-selectors/index.html | 3473 --------- .../doc/reference/tlspolicy/index.html | 3582 --------- 0.10.0/kuadrant-operator/doc/tls/index.html | 3637 --------- .../index.html | 3803 ---------- .../index.html | 3749 --------- .../index.html | 4054 ---------- .../doc/user-guides/gateway-dns/index.html | 3721 --------- .../index.html | 3715 --------- .../doc/user-guides/gateway-tls/index.html | 3762 --------- .../index.html | 4602 ----------- .../secure-protect-connect/index.html | 3968 ---------- .../simple-rl-for-app-developers/index.html | 3541 --------- .../examples/alerts/index.html | 3492 --------- .../examples/alerts/kustomization.yaml | 7 - .../prometheusrules_policies_missing.yaml | 57 - .../examples/alerts/slo-availability.yaml | 212 - .../examples/alerts/slo-latency.yaml | 212 - .../alerts/sloth/slo-availability.yaml | 31 - .../examples/alerts/sloth/slo-latency.yaml | 34 - .../alerts/tests/slo-availability-test.yaml | 47 - .../alerts/tests/slo-latency-test.yaml | 47 - .../examples/dashboards/app_developer.json | 1693 ----- .../examples/dashboards/business_user.json | 768 -- .../controller-resources-metrics.json | 339 - .../controller-runtime-metrics.json | 776 -- .../examples/dashboards/kustomization.yaml | 28 - .../dashboards/platform_engineer.json | 2616 ------- .../examples/dnspolicy/application.yaml | 50 - .../dnspolicy/aws-dns-provider-secret.yaml | 10 - .../dnspolicy/dnspolicy-bad-strategy.yaml | 13 - .../dnspolicy/dnspolicy-healthchecks.yaml | 23 - .../examples/dnspolicy/dnspolicy.yaml | 18 - .../examples/dnspolicy/gateway.yaml | 20 - .../examples/dnspolicy/script.sh | 27 - .../kuadrant-operator/examples/metal-lb.yaml | 14 - .../examples/oas-apikey.yaml | 48 - .../kuadrant-operator/examples/oas-oidc.yaml | 55 - .../examples/toystore/admin-key-secret.yaml | 15 - .../toystore/alice-api-key-secret.yaml | 14 - .../examples/toystore/authpolicy.yaml | 56 - .../toystore/authpolicy_jwt-k8s-authnz.yaml | 44 - .../examples/toystore/bob-api-key-secret.yaml | 14 - .../examples/toystore/httproute.yaml | 29 - .../examples/toystore/kuadrant.yaml | 6 - .../toystore/ratelimitpolicy_gateway.yaml | 30 - .../toystore/ratelimitpolicy_httproute.yaml | 50 - .../examples/toystore/toystore.yaml | 39 - 0.10.0/kuadrant-operator/index.html | 3977 ---------- 0.10.0/kuadrantctl/doc/RELEASE/index.html | 3452 --------- 0.10.0/kuadrantctl/doc/development/index.html | 3415 --------- .../generate-gateway-api-httproute/index.html | 3509 --------- .../generate-kuadrant-auth-policy/index.html | 3997 ---------- .../index.html | 3686 --------- .../apicurio-security-scheme-apikey.png | Bin 9423 -> 0 bytes ...io-vendor-extension-backend-rate-limit.png | Bin 40320 -> 0 bytes .../doc/kuadrantctl-ci-cd/index.html | 3775 ---------- .../doc/openapi-apicurio/index.html | 3645 --------- .../openapi-kuadrant-extensions/index.html | 3460 --------- .../openapi-openshift-dev-spaces/index.html | 4085 ---------- 0.10.0/kuadrantctl/index.html | 4049 ---------- .../doc/development/index.html | 3945 ---------- .../limitador-operator/doc/logging/index.html | 3393 --------- .../doc/rate-limit-headers/index.html | 3395 --------- .../doc/resource-requirements/index.html | 3464 --------- .../limitador-operator/doc/storage/index.html | 3770 --------- .../limitador-operator/doc/tracing/index.html | 3383 --------- 0.10.0/limitador-operator/index.html | 3583 --------- 0.10.0/limitador/LICENSE | 201 - 0.10.0/limitador/doc/how-it-works/index.html | 3502 --------- .../doc/migrations/conditions/index.html | 3447 --------- .../doc/server/configuration/index.html | 3916 ---------- 0.10.0/limitador/doc/topologies/index.html | 3571 --------- 0.10.0/limitador/index.html | 3643 --------- .../docs/http_server_spec.json | 305 - 0.10.0/limitador/limitador-server/index.html | 3501 --------- .../kubernetes/centos-pod.yaml | 15 - .../limitador-server/kubernetes/index.html | 3830 ---------- .../kubernetes/kuard-deployment.yaml | 42 - .../kuard-envoy-config-configmap.yaml | 84 - ...y-sidecar-metrics-dashboard-screenshot.png | Bin 80203 -> 0 bytes .../kubernetes/kuard-podmonitor.yaml | 15 - .../kubernetes/kuard-service.yaml | 16 - .../limitador-config-configmap.yaml | 16 - .../kubernetes/limitador-deployment.yaml | 62 - .../limitador-grafanadashboard.json | 2154 ------ ...limitador-metrics-dashboard-screenshot.png | Bin 70285 -> 0 bytes .../kubernetes/limitador-podmonitor.yaml | 15 - .../kubernetes/limitador-service.yaml | 20 - .../limitador-server/kubernetes/ratelimit.svg | 1 - .../kubernetes/redis-service.yaml | 13 - .../kubernetes/redis-statefulset.yaml | 55 - .../limitador-server/sandbox/Makefile | 126 - .../sandbox/docker-compose-envoy-3-node.yaml | 74 - .../sandbox/docker-compose-envoy.yaml | 28 - .../docker-compose-limitador-disk.yaml | 31 - ...-compose-limitador-distributed-3-node.yaml | 58 - .../docker-compose-limitador-distributed.yaml | 24 - .../docker-compose-limitador-memory.yaml | 30 - ...docker-compose-limitador-redis-cached.yaml | 43 - .../docker-compose-limitador-redis-otel.yaml | 47 - .../docker-compose-limitador-redis-tls.yaml | 45 - .../docker-compose-limitador-redis.yaml | 35 - .../limitador-server/sandbox/envoy.yaml | 84 - .../limitador-server/sandbox/envoy2.yaml | 84 - .../limitador-server/sandbox/envoy3.yaml | 84 - .../limitador-server/sandbox/index.html | 3801 ---------- .../limitador-server/sandbox/limits.yaml | 22 - .../limitador-server/sandbox/load-test.json | 18 - .../sandbox/loadtest/Cargo.lock | 1874 ----- .../sandbox/loadtest/Cargo.toml | 10 - .../sandbox/loadtest/src/main.rs | 26 - .../sandbox/redis-otel/index.html | 3437 --------- .../sandbox/redis-tls/index.html | 3381 --------- .../sandbox/redis-tls/redis-config.conf | 7 - 0.10.0/limitador/limitador/index.html | 3443 --------- 0.10.0/search/search_index.json | 1 - 0.10.0/sitemap.xml | 613 -- 0.10.0/sitemap.xml.gz | Bin 1525 -> 0 bytes versions.json | 5 - 301 files changed, 491287 deletions(-) delete mode 100644 0.10.0/404.html delete mode 100644 0.10.0/CNAME delete mode 100644 0.10.0/api-quickstart/images/geosight.png delete mode 100644 0.10.0/api-quickstart/index.html delete mode 100644 0.10.0/architecture/docs/design/architectural-overview-v1/index.html delete mode 100644 0.10.0/architecture/docs/design/architectural-overview/index.html delete mode 100644 0.10.0/architecture/docs/design/images/1000m-overview.png delete mode 100644 0.10.0/architecture/docs/design/images/arch_observability_1.jpg delete mode 100644 0.10.0/architecture/docs/design/images/arch_observability_2.jpg delete mode 100644 0.10.0/architecture/docs/design/images/control-plane-overview.jpg delete mode 100644 0.10.0/architecture/docs/design/images/data-plane-overview.jpg delete mode 100644 0.10.0/architecture/docs/design/images/gateway-placement.png delete mode 100644 0.10.0/architecture/docs/design/images/high-level-multi-cluster.png delete mode 100644 0.10.0/architecture/docs/design/images/highest-level.jpg delete mode 100644 0.10.0/architecture/docs/design/images/multi-cluster-layout.jpg delete mode 100644 0.10.0/architecture/docs/design/images/observability.png delete mode 100644 0.10.0/architecture/docs/design/images/ocm-integration.png delete mode 100644 0.10.0/architecture/docs/design/images/request-flow.png delete mode 100644 0.10.0/architecture/docs/design/images/single-cluster-layout.jpg delete mode 100644 0.10.0/architecture/docs/design/modular_installation/index.html delete mode 100644 0.10.0/architecture/rfcs/0001-rlp-v2/index.html delete mode 100644 0.10.0/architecture/rfcs/0002-well-known-attributes/index.html delete mode 100644 0.10.0/architecture/rfcs/0003-dns-policy-assets/DNSRecordStructure/index.html delete mode 100644 0.10.0/architecture/rfcs/0003-dns-policy/index.html delete mode 100644 0.10.0/architecture/rfcs/0004-policy-status-assets/policy_status_1.png delete mode 100644 0.10.0/architecture/rfcs/0004-policy-status-assets/policy_status_2.png delete mode 100644 0.10.0/architecture/rfcs/0004-policy-status-assets/policy_status_3.png delete mode 100644 0.10.0/architecture/rfcs/0004-policy-status-assets/policy_status_4.png delete mode 100644 0.10.0/architecture/rfcs/0004-policy-status-assets/policy_status_5.png delete mode 100644 0.10.0/architecture/rfcs/0004-policy-status/index.html delete mode 100644 0.10.0/architecture/rfcs/0005-single-cluster-dnspolicy/index.html delete mode 100644 0.10.0/architecture/rfcs/0006-kuadrant_sub_components_configurations/index.html delete mode 100644 0.10.0/architecture/rfcs/0007-policy-sync-v1/index.html delete mode 100644 0.10.0/architecture/rfcs/0008-kuadrant-release-process/index.html delete mode 100644 0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-a1.png delete mode 100644 0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-b1.png delete mode 100644 0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-b2.png delete mode 100644 0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-c1.png delete mode 100644 0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-d1.png delete mode 100644 0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-d2.png delete mode 100644 0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-e1.png delete mode 100644 0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-e2.png delete mode 100644 0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-e3.png delete mode 100644 0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-f1.png delete mode 100644 0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-f2.png delete mode 100644 0.10.0/architecture/rfcs/0009-defaults-and-overrides/index.html delete mode 100644 0.10.0/architecture/rfcs/0010-gateway-api-metrics-exporter/index.html delete mode 100644 0.10.0/architecture/rfcs/0011-policy-machinery/index.html delete mode 100644 0.10.0/architecture/rfcs/dns-policy-api-changes/index.html delete mode 100644 0.10.0/assets/images/architecture-multi-cluster.png delete mode 100644 0.10.0/assets/images/architecture-single-cluster.png delete mode 100644 0.10.0/assets/images/cncf-color.png delete mode 100644 0.10.0/assets/images/deploy.png delete mode 100644 0.10.0/assets/images/favicon.png delete mode 100644 0.10.0/assets/images/logo.png delete mode 100644 0.10.0/assets/javascripts/bundle.bd41221c.min.js delete mode 100644 0.10.0/assets/javascripts/bundle.bd41221c.min.js.map delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.ar.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.da.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.de.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.du.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.el.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.es.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.fi.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.fr.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.he.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.hi.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.hu.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.hy.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.it.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.ja.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.jp.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.kn.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.ko.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.multi.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.nl.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.no.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.pt.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.ro.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.ru.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.sa.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.stemmer.support.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.sv.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.ta.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.te.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.th.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.tr.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.vi.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/min/lunr.zh.min.js delete mode 100644 0.10.0/assets/javascripts/lunr/tinyseg.js delete mode 100644 0.10.0/assets/javascripts/lunr/wordcut.js delete mode 100644 0.10.0/assets/javascripts/workers/search.b8dbb3d2.min.js delete mode 100644 0.10.0/assets/javascripts/workers/search.b8dbb3d2.min.js.map delete mode 100644 0.10.0/assets/stylesheets/extra.css delete mode 100644 0.10.0/assets/stylesheets/main.10ba22f1.min.css delete mode 100644 0.10.0/assets/stylesheets/main.10ba22f1.min.css.map delete mode 100644 0.10.0/assets/stylesheets/palette.06af60db.min.css delete mode 100644 0.10.0/assets/stylesheets/palette.06af60db.min.css.map delete mode 100644 0.10.0/authorino-operator/index.html delete mode 100644 0.10.0/authorino/docs/architecture.gif delete mode 100644 0.10.0/authorino/docs/architecture/index.html delete mode 100644 0.10.0/authorino/docs/auth-pipeline.gif delete mode 100644 0.10.0/authorino/docs/code_of_conduct/index.html delete mode 100644 0.10.0/authorino/docs/contributing/index.html delete mode 100644 0.10.0/authorino/docs/features/index.html delete mode 100644 0.10.0/authorino/docs/getting-started/index.html delete mode 100644 0.10.0/authorino/docs/index.html delete mode 100644 0.10.0/authorino/docs/terminology/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/anonymous-access/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/api-key-authentication/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/authenticated-rate-limiting-envoy-dynamic-metadata/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/authzed/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/caching/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/deny-with-redirect-to-login/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/envoy-jwt-authn-and-authorino/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/external-metadata/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/hello-world/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/host-override/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/http-basic-authentication/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/images/keycloak-authorization-services-1.png delete mode 100644 0.10.0/authorino/docs/user-guides/images/keycloak-authorization-services-2.png delete mode 100644 0.10.0/authorino/docs/user-guides/images/keycloak-authorization-services-3.png delete mode 100644 0.10.0/authorino/docs/user-guides/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/injecting-data/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/json-pattern-matching-authorization/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/keycloak-authorization-services/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/kubernetes-subjectaccessreview/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/kubernetes-tokenreview/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/mtls-authentication/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/oauth2-token-introspection/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/observability/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/oidc-jwt-authentication/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/oidc-rbac/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/oidc-user-info/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/opa-authorization/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/passing-credentials/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/resource-level-authorization-uma/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/sharding/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/token-normalization/index.html delete mode 100644 0.10.0/authorino/docs/user-guides/validating-webhook/index.html delete mode 100644 0.10.0/authorino/index.html delete mode 100644 0.10.0/authorino/install/crd/authorino.kuadrant.io_authconfigs.yaml delete mode 100644 0.10.0/authorino/install/crd/kustomization.yaml delete mode 100644 0.10.0/authorino/install/crd/patches/oneof_in_authconfigs.yaml delete mode 100644 0.10.0/authorino/install/crd/patches/webhook_in_authconfigs.yaml delete mode 100644 0.10.0/dns-operator/config/samples/kuadrant.io_v1alpha1_dnsrecord.yaml delete mode 100644 0.10.0/dns-operator/config/samples/kustomization.yaml delete mode 100644 0.10.0/dns-operator/docs/RELEASE/index.html delete mode 100644 0.10.0/dns-operator/docs/RFC/distributed-dns/dnsrecord-lifecycle/index.html delete mode 100644 0.10.0/dns-operator/docs/provider/index.html delete mode 100644 0.10.0/dns-operator/docs/reference/dnsrecord/index.html delete mode 100644 0.10.0/dns-operator/index.html delete mode 100644 0.10.0/getting-started-multi-cluster/index.html delete mode 100644 0.10.0/getting-started-single-cluster/index.html delete mode 100644 0.10.0/index.html delete mode 100644 0.10.0/kuadrant-operator/config/samples/kuadrant_v1alpha1_dnspolicy.yaml delete mode 100644 0.10.0/kuadrant-operator/config/samples/kuadrant_v1alpha1_tlspolicy.yaml delete mode 100644 0.10.0/kuadrant-operator/config/samples/kuadrant_v1beta1_kuadrant.yaml delete mode 100644 0.10.0/kuadrant-operator/config/samples/kuadrant_v1beta2_authpolicy.yaml delete mode 100644 0.10.0/kuadrant-operator/config/samples/kuadrant_v1beta2_ratelimitpolicy.yaml delete mode 100644 0.10.0/kuadrant-operator/config/samples/kustomization.yaml delete mode 100644 0.10.0/kuadrant-operator/doc/auth/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/development/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/dns/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/dnshealthchecks/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/images/kuadrant-architecture.svg delete mode 100644 0.10.0/kuadrant-operator/doc/install/install-kubernetes/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/install/install-openshift/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/logging/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/observability/examples/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/observability/grafana_trace.png delete mode 100644 0.10.0/kuadrant-operator/doc/observability/grafana_tracing_loki.png delete mode 100644 0.10.0/kuadrant-operator/doc/observability/metrics/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/observability/tracing/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/proposals/images/authpolicy-control-structure.png delete mode 100644 0.10.0/kuadrant-operator/doc/proposals/rlp-target-gateway-resource/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/rate-limiting/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/reference/authpolicy/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/reference/dnspolicy/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/reference/kuadrant/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/reference/ratelimitpolicy/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/reference/route-selectors/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/reference/tlspolicy/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/tls/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/user-guides/auth-for-app-devs-and-platform-engineers/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/user-guides/authenticated-rl-for-app-developers/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/user-guides/gateway-dns/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/user-guides/gateway-rl-for-cluster-operators/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/user-guides/gateway-tls/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/user-guides/secure-protect-connect/index.html delete mode 100644 0.10.0/kuadrant-operator/doc/user-guides/simple-rl-for-app-developers/index.html delete mode 100644 0.10.0/kuadrant-operator/examples/alerts/index.html delete mode 100644 0.10.0/kuadrant-operator/examples/alerts/kustomization.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/alerts/prometheusrules_policies_missing.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/alerts/slo-availability.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/alerts/slo-latency.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/alerts/sloth/slo-availability.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/alerts/sloth/slo-latency.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/alerts/tests/slo-availability-test.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/alerts/tests/slo-latency-test.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/dashboards/app_developer.json delete mode 100644 0.10.0/kuadrant-operator/examples/dashboards/business_user.json delete mode 100644 0.10.0/kuadrant-operator/examples/dashboards/controller-resources-metrics.json delete mode 100644 0.10.0/kuadrant-operator/examples/dashboards/controller-runtime-metrics.json delete mode 100644 0.10.0/kuadrant-operator/examples/dashboards/kustomization.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/dashboards/platform_engineer.json delete mode 100644 0.10.0/kuadrant-operator/examples/dnspolicy/application.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/dnspolicy/aws-dns-provider-secret.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/dnspolicy/dnspolicy-bad-strategy.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/dnspolicy/dnspolicy-healthchecks.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/dnspolicy/dnspolicy.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/dnspolicy/gateway.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/dnspolicy/script.sh delete mode 100644 0.10.0/kuadrant-operator/examples/metal-lb.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/oas-apikey.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/oas-oidc.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/toystore/admin-key-secret.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/toystore/alice-api-key-secret.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/toystore/authpolicy.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/toystore/authpolicy_jwt-k8s-authnz.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/toystore/bob-api-key-secret.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/toystore/httproute.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/toystore/kuadrant.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/toystore/ratelimitpolicy_gateway.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/toystore/ratelimitpolicy_httproute.yaml delete mode 100644 0.10.0/kuadrant-operator/examples/toystore/toystore.yaml delete mode 100644 0.10.0/kuadrant-operator/index.html delete mode 100644 0.10.0/kuadrantctl/doc/RELEASE/index.html delete mode 100644 0.10.0/kuadrantctl/doc/development/index.html delete mode 100644 0.10.0/kuadrantctl/doc/generate-gateway-api-httproute/index.html delete mode 100644 0.10.0/kuadrantctl/doc/generate-kuadrant-auth-policy/index.html delete mode 100644 0.10.0/kuadrantctl/doc/generate-kuadrant-rate-limit-policy/index.html delete mode 100644 0.10.0/kuadrantctl/doc/images/apicurio-security-scheme-apikey.png delete mode 100644 0.10.0/kuadrantctl/doc/images/apicurio-vendor-extension-backend-rate-limit.png delete mode 100644 0.10.0/kuadrantctl/doc/kuadrantctl-ci-cd/index.html delete mode 100644 0.10.0/kuadrantctl/doc/openapi-apicurio/index.html delete mode 100644 0.10.0/kuadrantctl/doc/openapi-kuadrant-extensions/index.html delete mode 100644 0.10.0/kuadrantctl/doc/openapi-openshift-dev-spaces/index.html delete mode 100644 0.10.0/kuadrantctl/index.html delete mode 100644 0.10.0/limitador-operator/doc/development/index.html delete mode 100644 0.10.0/limitador-operator/doc/logging/index.html delete mode 100644 0.10.0/limitador-operator/doc/rate-limit-headers/index.html delete mode 100644 0.10.0/limitador-operator/doc/resource-requirements/index.html delete mode 100644 0.10.0/limitador-operator/doc/storage/index.html delete mode 100644 0.10.0/limitador-operator/doc/tracing/index.html delete mode 100644 0.10.0/limitador-operator/index.html delete mode 100644 0.10.0/limitador/LICENSE delete mode 100644 0.10.0/limitador/doc/how-it-works/index.html delete mode 100644 0.10.0/limitador/doc/migrations/conditions/index.html delete mode 100644 0.10.0/limitador/doc/server/configuration/index.html delete mode 100644 0.10.0/limitador/doc/topologies/index.html delete mode 100644 0.10.0/limitador/index.html delete mode 100644 0.10.0/limitador/limitador-server/docs/http_server_spec.json delete mode 100644 0.10.0/limitador/limitador-server/index.html delete mode 100644 0.10.0/limitador/limitador-server/kubernetes/centos-pod.yaml delete mode 100644 0.10.0/limitador/limitador-server/kubernetes/index.html delete mode 100644 0.10.0/limitador/limitador-server/kubernetes/kuard-deployment.yaml delete mode 100644 0.10.0/limitador/limitador-server/kubernetes/kuard-envoy-config-configmap.yaml delete mode 100644 0.10.0/limitador/limitador-server/kubernetes/kuard-envoyproxy-sidecar-metrics-dashboard-screenshot.png delete mode 100644 0.10.0/limitador/limitador-server/kubernetes/kuard-podmonitor.yaml delete mode 100644 0.10.0/limitador/limitador-server/kubernetes/kuard-service.yaml delete mode 100644 0.10.0/limitador/limitador-server/kubernetes/limitador-config-configmap.yaml delete mode 100644 0.10.0/limitador/limitador-server/kubernetes/limitador-deployment.yaml delete mode 100644 0.10.0/limitador/limitador-server/kubernetes/limitador-grafanadashboard.json delete mode 100644 0.10.0/limitador/limitador-server/kubernetes/limitador-metrics-dashboard-screenshot.png delete mode 100644 0.10.0/limitador/limitador-server/kubernetes/limitador-podmonitor.yaml delete mode 100644 0.10.0/limitador/limitador-server/kubernetes/limitador-service.yaml delete mode 100644 0.10.0/limitador/limitador-server/kubernetes/ratelimit.svg delete mode 100644 0.10.0/limitador/limitador-server/kubernetes/redis-service.yaml delete mode 100644 0.10.0/limitador/limitador-server/kubernetes/redis-statefulset.yaml delete mode 100644 0.10.0/limitador/limitador-server/sandbox/Makefile delete mode 100644 0.10.0/limitador/limitador-server/sandbox/docker-compose-envoy-3-node.yaml delete mode 100644 0.10.0/limitador/limitador-server/sandbox/docker-compose-envoy.yaml delete mode 100644 0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-disk.yaml delete mode 100644 0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-distributed-3-node.yaml delete mode 100644 0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-distributed.yaml delete mode 100644 0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-memory.yaml delete mode 100644 0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-redis-cached.yaml delete mode 100644 0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-redis-otel.yaml delete mode 100644 0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-redis-tls.yaml delete mode 100644 0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-redis.yaml delete mode 100644 0.10.0/limitador/limitador-server/sandbox/envoy.yaml delete mode 100644 0.10.0/limitador/limitador-server/sandbox/envoy2.yaml delete mode 100644 0.10.0/limitador/limitador-server/sandbox/envoy3.yaml delete mode 100644 0.10.0/limitador/limitador-server/sandbox/index.html delete mode 100644 0.10.0/limitador/limitador-server/sandbox/limits.yaml delete mode 100644 0.10.0/limitador/limitador-server/sandbox/load-test.json delete mode 100644 0.10.0/limitador/limitador-server/sandbox/loadtest/Cargo.lock delete mode 100644 0.10.0/limitador/limitador-server/sandbox/loadtest/Cargo.toml delete mode 100644 0.10.0/limitador/limitador-server/sandbox/loadtest/src/main.rs delete mode 100644 0.10.0/limitador/limitador-server/sandbox/redis-otel/index.html delete mode 100644 0.10.0/limitador/limitador-server/sandbox/redis-tls/index.html delete mode 100644 0.10.0/limitador/limitador-server/sandbox/redis-tls/redis-config.conf delete mode 100644 0.10.0/limitador/limitador/index.html delete mode 100644 0.10.0/search/search_index.json delete mode 100644 0.10.0/sitemap.xml delete mode 100644 0.10.0/sitemap.xml.gz diff --git a/0.10.0/404.html b/0.10.0/404.html deleted file mode 100644 index e81035406..000000000 --- a/0.10.0/404.html +++ /dev/null @@ -1,3326 +0,0 @@ - - - - - - - - - - - - - - - - - - - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
- - - - - - - - -
- - -
- -
- - - - - - -
-
- - - -
-
-
- - - - - -
-
-
- - - -
-
-
- - - -
-
-
- - - -
-
- -

404 - Not found

- -
-
- - - -
- -
- -
- - - -
- -
-
-
-
- - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/CNAME b/0.10.0/CNAME deleted file mode 100644 index bdec7cbae..000000000 --- a/0.10.0/CNAME +++ /dev/null @@ -1 +0,0 @@ -docs.kuadrant.io \ No newline at end of file diff --git a/0.10.0/api-quickstart/images/geosight.png b/0.10.0/api-quickstart/images/geosight.png deleted file mode 100644 index b069b4fe419aefd1f7679069388fac0b033242b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198806 zcmeEubySq=-Zp}Wf`pRNigZa19io7AH;jTb3^8<#hzin5mvom%=b)6dba&^_J@7rV z_df6Y?sMLCpQG9&Ny>Fao_hZu3ucwM-?R*Tx@b|G&D5a7qZXP(9rJSp`l?u zxqS=x=C-092O8R45lbm4l^0S{v?`8vW|lUlXlSw@qqMPf)Z0nE=&L;}Lqk`4YWFrE z5>4%?#f=PCiidXy=OiJDbS`TNXV zTg_tC)e)xz*-vdSyqgI+58^DvS6^Q!^4Q8obas>d2(11YLP^_2xMH7umArH^6P-Xu z75oY_!7A(VV`+YKol5<&h^E&%#Pdd~de0s=>k+^R_LeRQ(gzhRW$S*>@GUNtyy||# z(X8YJksxdSK!Ekp@zIYcFTI*40T^5c4_A3#i810Ciw2Nl@1dJSi6uOaFo`Vrb>?&@ zA#<_Ufqt**n+|@)*e+Y<<%YryncT2kVzXBIrwZ>!(t!@IHC)`o=3yJ1NeK?A1Hy z2DCRGNT5+hcFhJna}T>sZ6f*bgz(XgpA_UPoCxAK=s#gp#>6sM;T#C|@UWk^lppqB zzM{ptjOmd1_#ut{4P*GdOFAJ^e(Ej|7QgNld{F`P>WjONZxKiZ zNIuh_L_7Xozhm!q;Me`Ye4g5G|72U)O>UJ|!5r9CN`|NHYFKa0XmS@)wg-|t2o&6w>p4XK=|CNeRZlC^{x z@9)d<3GnZl$;U+;9IN^aIvRQTOee+_K=1(4m00>cJ9DR{NK}H=?>ChL5^_ zcA0;jrI2i#4R8ykBkNJ>;XwO2%^BD>l3;P_iP2|!-qU@BfrePXz`*c_LsQ#sjIQ9> zU1cE>aS0oQG|&V_nj_?}i6}XQ31-!wQcYW)HIl_*PzcbN&)%wgLv#CPD((Gd-`7v> znI+#DslKUz$@5)A1-+w@`zv+<2E})huNa%R&LuGf(3Rfu%s#5RTjW=3f9T{(nu1@4 zk$msw!-u@@LRaY+0_csy1n3l+vF<$k@rms5gBQ=a3GO|5ZuV&Z6L$usuD^}6Rk*h- zq2qnQFelo|PyVv_d*r9@jB{A>Lda9KR%IhUe*5)=7cc3JS&I6vr)6Y@Z;K@J`wT5a zJ?_^B7|96tky?n~dP1x~%F{ymgrT+dQ3(+nRm98E614*K{MPlaW^PHv#z{JyNB0=# zof3V88;L33wk?QwVT)0KgNvJ7XAj+2eTZQJ$8$5cdEY+#{$=*XEWzj758mazyZ;pP z6~!FE9B*Ar&22=$vowyr_*Fba%WGp2hg%L@4x$eDyEjYxPGU!uAALG_arD?u?eRzX z4#ueP;mSz_>|;R&`;vUq(zfO)0;F6R}fj^#Tl zEv0tIXtHYxYgVkgY38oqAKJ=e)UeBMNbR%G;uY7!W>2norzIu)+*9H_MOquGv5>Pn zw49@vHY1ygTB%{4tE|DPQLG}K;`5?j+b``^=J(-QtFGakL5u#X+`i%$Bb1pB za^v!=b)ebH?%fdf&(Tp@DJ0;09qXWB=E63oV2G0WfcwGeLE*u`0f%i`MLEBWuzan8 zXQfN6OLAy*Xpqv|9^NFmq;#RAn%JT!4jGV)Ywots6h%$)hX=SOxP*80c?%$;QLhk( zA2v?c?i|P+9<3UVoM-g@!XNA%1{ckwz-G`uUwH!fW39e^pDmL_*l*1lHMuv*`y*(4 z+6ef{c!IeSUsbhy?fyFRbChXR)~0NDHBz;>q^Km>A$nJC!K77`!HJNDFtuGSVu7Le zfzVwNI{%UneI2Vje7v|^QSlIdTM*L5%$CGX>vcujW`p2RqU9GzLw{XMUGI-(jLJ}Q59cTRwU1$MLp>-i*?3ay~ZPuv9gh46&IJa%7 z?Z|{th18b87WWp*7ROln5#;FU`QZ^2-EBG%=>Tbsu&T9`^+rb~`y6Mt)tn8oZJou@ z*%QZ%mY93Sh6TQOMkvgNgP`n4*UP9Xz# zEOEV8Wn*8xB}B-W%GneYgB^HunjX9c4t$@w!h5&}vU@?X?B#AGy896OTXx+>BtwkqJS z);qzogb&|^e+^%H2ojX0q|W{@K)OyX#9GFuz{kdKV>p^_Uu*xuZC}U9W_6U<1o2!) zI^YrcBgw~%j?Wj7OdC1Os{ZL8`&9d)`jkziTe^Y;DdfYFh-!I`3=?6K{Z+NQ{JZ@p z(Kip@?cU+LgCNAX-$^JOA@L)6Z=y1 z)%d%8LR^Mr1reba-uGSmeKnq18L#&Ya!$%Z_$tLiBDA80+f4Sg_KkLsC#dbY;7`pzWH-=YYap1qoAi_dv$KL;v;s| ziX7)}yNi|)!p%qX_Z?PCbbLpuLD7m1`TXo_V|L27*`~pF zxma12N`#8m2@sHX-+}pi$@lQ?M)MuBvM$~vLA&K9-2&YNbGp(2v&t^6WOb2jYsk(d z)qc+Yw-uz(qK1aifs4=l#j?9 zXNDg*1g`#x3mro4)qTuS^pT}Eh^Wkwb_bsj@u~GKGWXL(xZnp~g*K~V29Y=0qdS-eiBjl%CO<<#!(HLDA&RFdD zT2yH?EQK=b*(1k%ulb$$89*+)@A=DlJ^5&aHr?FL?+wsJ$vB5{h)RoUdD+am&Fx+i z&J)%%@+gTx;sza$HTrX{3;PPUvYV8Wg$bRO2X%+X7FOzdsRR-34QuH8Pn(`s1|8ZK z+4}pqB9SV!`kqMoWBHI6Q4Wx6@S1>2%W+40{tfM3g9U?HH_>^IwvZEwN=PVt%smK} zf9}$=rR|En?bRTBOg(3`<{ffQjDMF#I%_7Z>M7}#BLCyyK;jQ zv3RCvp_|!WLDod|xva8E@6yV`7uR|M_{pUHUiNabCa0|t^+hM5xS}DWp-B6)HbyZi zybo52EbN?!zRbDALO9NN`+(0RubM)`y28xG>3uwo+}BC_WB9r08Q zDEp;kbTS(Y444TW|1=%?BL4e|?s|!GwnK$M@)H zX#SRHH~$)=1iYjE!hsj+m_Oe!K7T;N0{(X&c)6vZ|6}wWycCRoe8zkN{Dvl}F7@IC z@UCv+Xle?9TG%-a#gYyHU)-^m)rF#=ky(uz2~HWN~NCjHmp!2d)aSvWb_3vqI~y1H_>@^IKWnsagq3JP*Q z;pXJ#W(P*FL){@xuiV%nP`W=)@{jX8GliNsTG~5V+CgYh=Y3^t=jRTZdOE*&+-Dj4zz?uQq5aZ(E77+R4 zfPeYvzc2Ye4%PYZL%Dgl{&wj9`01Yy)r6WlO4->07j+W*?+yFwy8rXXzYY}PM9uww zti_)T{l~Y!N{eBOaQ@e>iDBpd*slUMlG5^-vIg)Dh#Be+Jr?+f>CboI^NrTD+c}Ho zXlN2>FP=$ixZT*C!b&7sLJG`s9!*bmZ2GKixC2oMgW2vSQY7-avJE-t_L{ ztA`SA&~BjLyiGv+?>@W?yuV6oZxJXo?Gk;B;cq02Bxb`2eXldLk%$R6Gq%X8OWbva zziE89a-DH#zRW5Tv%iSker<98ety6j_)7I$YaF_I%A3Yi=AD!Y)88%|YH88^6ES|b zynk##mIQDQ>a&uSo!1(E6HgH9H@o)d&MNo<_mI`-2Z_1!?>G6+;kPLr@vbwDAQm0- zCZ3`%))WWfzm=UoPfI``ut<5GakNh`v2RnxqvO{YGWX5=#ua3;)>bh!-1$NaLqaZd)eDOUC z$#~*xXq#_8`WA!z>fs1D>=T_#Yd2_$EZOHwcdfoKre;2nwN;wJmT04}(ul2W=f|Pr z_)4cX*qg7YetEs>c-j*O-A8U~OH1FDIKigIvY>i7o(p*}KuRn)_in*t^souLzt(w! z#C6KsRZ`Eo=r*O5qM_~YC13rmL^l?mC~zjO)q{bBC~c$M6E|l>pQv%2TikRDG%?T{I(gSjSkJM&Jn>jEx)M3>Mo_52V2FcG3JsUG?N{}pFts(K(vNa z+%m9oDO#Ujx`LK0pU<#N@%Oi7ktd;e3y;d-WX_?Jz4G<8N$(fyHvS143LN%2`z}#H zN)HFsTSiM3=9}=v0$iuP8KtL$S&ZD~-g_Z|Eo6pV%Dd>tQN(re^jk=66qPE~op0AZ z7oB3~M(O;*_NWw?5w+)L-)gP?%!_jddyD(;Nq_4JBye#C4Q5qxEx)Z_XoF1-$#_?T zbu3cfuYcx-Wxa{_+^%K>eO5TuagWmE?i{jewKi#emMrESSOYt`=ierYg?uRFw5k#r zbDu#ek&F|5peAy#BURGLQ7aw8VJH`UUQRf{ZNFM&5*9+?s9rI|j_$wy_~P-uvzvb` zzLjoD7P`OK*=o9u=~9%u2e6mh4nICJw(<@rsB^>PKhD6eyz6#bDXKrYiv`;?Tr&7v z0A?Z)=WCq#7kA@!`WPEkntoYHyXA4}bTmPOUeR{cdH zCyf|=#b9{aH@mu1GX>$Tvgd2vFJ!$b#eKXaqj(+r4hEFL;aXPoiaf`aa3s4JpoS+G zrM>fQ2KuEv-11J{A$OyW>?+30ST)&`qmSw#<7H~TQb8-yDju`nu^5N079*7BlU%1i z0``G(WX8_8M{v1|D!Zp-^IPYVj9$FP*RG)AhBKC79q;lN1Cg0&mclS*uKA%sb!Dp3 z9wFt6$jbEM}4`cKI=32d8TKU`PYHJnhBw zeSBCskgMJ{T4*=3I^lX8>wPq~VIJj;l!WAcO|YwB{(w&tjgxoER=Sy$03jDfe3LJz z7`KWuRcj3aO_Q}zdOJzRL8fY23|(go!?oHw082^A_{H8>a;W}niY8!qND44KQIPi4qrn9T@ULR{Zdld7SC8+d)ZNx_Y+K zVMPAr*|tGrw=WjuuSJ)YIP>kQvv_OcwM^KAMbh~;1@ZZIsa^WgI_ao$rQyD>(10Sy z5V`oGIN58jebjU%iLr2`-faoczv#)^;_SLbwGfNML0VahFwvuc2xY;{*QMG94(@k_ zyj9xkmLE@hOxTwEz-C>{kHn_bb1v63=@mT=_CA``$IZ0&kw{mzdCmF z2_lX@RkrPQy7tEO3em(*j$RQf&^?=qp}@>FX$y_WtH`kRm5Ly%zlI<}edF&?vJe-1 zwxRJp=+m*7d#@i-Z9vd|R(&s=#K8Xh$=OEn{3jV|X2BMncxs#Gt;)8t0VVyxwivLF zApeX_Y1%=}JKje<7yG?5mNyd%`s@J94;NS-HQC4`y4bAfvXdW{SFc6xhOIQ)ly+;W zG~}{ohCa`|_YYeR9`xrWA6WD2`Kc&8EDG2rf~%i`iC%jzc9XB_GzZ`F^oa08>shty z7=NTUSq6+nBzU_@fhE$jE#_MH&pA3~Qw?OVCkXk17w4fiVO-rYwMoi<&0IDIjE@;qG z4etqmj@lt2`-AhDD>1bv%6gxVqqGg~nJ@LEe~=gY5+=U; ztZDJ$45zvQQhGRy=?*wEo8Y>Ip0~WLzx73EzIuc?agC|GQ=0Kdd6(Z>5S0P@z3>zt zHBB)5WIm|mP)nb<+})Lf)-296npsZy4h9xpz(Z|3=AZi3h2`^SuKJQtswNM%~I6Z~lr2NbSM5mt!m=ZBQ(H4q16t=Ghzsq_&0dfh3nR@!9q? z=xD+f9&0}BzVW%^(#C4`SMsHkl7ZXz_n5X(6c5(`p$z-J@Wdc znN+}Opc~Y}k`Lq&8R-+FaF}WUQ3~2K>Im`R1+XesA7+nZumCc8L8_&yc2H?axqiF-RsE3p4Y}W(7TP;g5U?Uat7(r9JXj8Tn`+NE<-VVJsLEyd?J_m6YB}c-L zy<8^70P<#$`@>l^VjP97eDQ2xDt`6D2ze9;cnDC9%hvdl{Fn8)zEYWQ>($<_{w zN0O&9u`;o++UJzK{1zs5#-yd|zLeH2o|s?-`ShHGS&mddUQGfl-LEr9DC9j1qglHjnHsYu3^L+LQ<0kDK=83T53KiHni zrY)T7sM$DRiGRBZpoAd$7(FYsK4R@vRo*Qf?6-2?RhFW67usYh@2684dUx}cY}af= z7sO|+)$F{*aZKk)0&~M(&CkhDexX^)mh#8LE#2Et#HAEk4EHlx+@ix7uiE*6V^Z1; z;*`zTcb~mHH$l`N7wLCjZBAvoa=2{-zAY>JOf0~=n3r#ioUB%ZtN~UkL4-cOG1c+& z-f!b0Up*3(%&XDiQMvu{by)l)V|rHk*nV{-85a6nK3JmE8?u;=NyLSD{l zJosm{vY~Buar0K|%OUMn3Tf@p7 z@E!nG@L6fFX&N_YpW)inv@`5>uoe$02kJuyW(&Xmzy{O|h$rrSy!qScDkbUmpu+60 z?=S(T?W%&Z5PcKR`|{MhFWocjth;>muqDRee!?QUR{!TLe0|Fn z;-GO>K0`g#RD-9vw0Vv<1aT+GKoA21kduWNn#IM59fg^)9smiE3#%rfab-rwX@ID@ zPI7VMT{eAp9@-QC0}-sR^`U}C(hOkWamjGJHBrcqNWQl!TC*xm%yZcMdob1sn|fz4 z+8m!Rjj3nkM%RnZZsOsR+3OkbE#|#7`F2L0--ZjisHQEvl*6_^t$6mbOV>O}6RrcO zV{S)(nT4fCnH4*!p_8gj&6wHgvJq^neA3ChJ}BO2p&Mi}Zkf$4XBTU4!x6jE3*(qX z_;?-%5h@9kyz2Y5G2^wbIO#Q@2*hI5&*>fyY1XYRCm2U*Y83*~2$(As>|1)kS_O_9 zdF{3=1oQL;o5mRO_d8jbv<82SP!?mpJQ{%$+b|Yh@Wg-y6nKa;W3VaZBwrNQo%N=D z!zH|l$46A6^xNP^;o~39%o5W4MeT;Tt}p!(o>`@-k3LaX{}X#A)~alS+NHg9EWCQ; zuzp{@c5&Lg;sbU@O`*MjrUgz|b!LhWy)OWIf~kc0@dRF8efAXw471|JZld@Q@t^Zx z@tP>Cl)kz|;;e(5m%ep!28jW|yl$Pw?5}^s^X+?wgqV0kBRlcGhfQiI*tGhwjV8>{ zb*g+-0Jl4YWw6w|IPJjkj^Z84GXUh9v=D1CS(%OQ%yDh7l@euwqQB}uB9j1oAPC;f zPWB0GAu%k==>T9a)l`i$E3ic>EIUhOlK~2~Tf>#F`WT9pW1l>%m@?aNTg!~WS!b(1 zP;)@!oMZRL6ADDK7`d!vI+#J;r7p8ECON5X0!}zi^Cq5Y|IgoJs@uFTQq0i()n3Yn zZFiD}5DktxnPw8j-xoO8?-g%L3u05#K!yqmsNhzeE?UoTI>h&^aN13j_1-AevZPx7f4|W&$^mJF3kGjGfzwc1~3{Y zWnEPxOXDgCoA2`u5K6Uj2qO$s@-ls;n9=fKS53x%fo3ePZA8a;Hq+p}00b7H56t74 zmy=?BA!I zQ-*I^vDh=sZI`;jQRxslAuy1NC{cyv6}O^W#FGmg09L&@E5SystgxZ>I3z+zNHFV* z$9h`bhdT)Pm59B%4{M{5o1Sr?LdOgVE6X{Zw~iT)#$J{U|^ zR~9X#6%};;S-yKdWA~um<1p}nd147Ie69o9D@Fk%6=eD}>?aUky%U{>$1qzG2n7b8 zoUmZZAd#6d6r$3Y6l^8^TE0?%9K(#KoQIj$znAuk#)ua^e{lb|4)q2)-y;>MuM`k~ zs1{Ui3q8NV;XG~08(Z)Aoe$96pz7KlDrgU%_Qg&Ue)ZnMf}a5aphv+Ud2Zq6v5Kvk z4{Lx?UZ5_V;$imOH&oVdEjyW7o}*kta=7^;p~>WEN%bc`>HvMaYI>s%%=SsQfsm5* zynNzFdDfLB>0?1oP=|7p>4a_NN54yZd$y|Cx2FYn2pO8G058p)ooG-t!%VR9kujMi zem?&dymHd96L94TmU&+n4*)#(96Q*Zs}dGtJ!c*Q|sEDa0r=zhDOSrJIn%RtIi{&Q8r3IUMjaEki1J) z_PeeOwe#zOZykBh>Bj*{wiO5wijq!dDbL8==(kXFZriz>%u$hND|wci)_)BViHJhw z@94jig1xv%Mao>g&eqH|Z*&9hFhu+>)n}bn0)T;){lRKqi7ULG8zZ8_w#+qo+F`dP zCNl9TA233e%~`LS{M#s@U8;lcfh|Jrb#kJdv%?%FDM|Uj;Jblai6kfok>aL*3lDkv zfnt8tB#eF3XE?AimF>aWZzH0{MFy2pU#UCXiux`W4s9)d_+q2RBiSLKYH4Xc{U&mrcIrybg; zN^BtHUu#fVQ?;D|F;B!)#=gR=%GABR>*Xzk>~rvroAAX00AJ7k0iS~3vLmOat{}PI zQT<&ZAgU$(a;(oQA@ELRP?Tl`hxdk=X+u;_a-SWH0Z9z) zOxgsL`avih^y@DA<>_T;^#I6|-i9qY|4Rx#$bC63yGWlNmenA3d9vWJlH}S9*qw=- zPL$EC_dNbsSUJYvb6h(UWmC#gGI(3$e5(>nscxt7g%@|?o<9vW5P7*8mcLDAKC%4p zz$`X$c=V?#kQ`LME3^>&Vrj;0A!PI=@{qAGo76Hgqn5iu8$Mf9yLn$(WcL{|!-6bU zBRo$3bhnLWA@8Bo{D;X^sm!c&`6WQ7bE{ldo%_nIM?MS{{vKW4WDxdsxhJ3jKCDGF z1cixT3S1!o9QP5AN@y{ALN0wJ!?Lo!7X?z1jo?O5a2Soa7-=vMe?Pz2`N4n}L6-rQ zaBCv8=K&Q|yi|I_vcpAhi!Qb=vK-=D^dptOhIdfUx45V#1Zxu7$?hFIDQn$GlcyuA% z@5P)}B4rJzl*U6cUlU?(*V<`p*7i1FW-1G#_U4XcsNACL*V7$6G-=9&r9!0`J2>x-b0`S6Vjgtuwm zQ+l!Ui+xlC=5;cMy7$;=vcJxzmKoV#GW>0w$_oejgIPLG$gnc@s}_IZKNU z9d@~&jIvpl85#>?s4|v;xQ&hzVmf{Ihun3Rh*wu)RwW{r$fl@~o)k=Jp6u-c%~xcB zqdd57^;r-{&1wcO=QVu8%{)3_v4ukQ+6mmY$IKVLb#eru>}dM4SB~VbEY7!F1GXw= z#G(xx+kYrn|6X=)plcEm2x#!h;YJYxSuDqv6uI+5qS{gyaienSZJ-@ z{vJ0=ypbrp11MEFT^9U0YjQIWsJ!Q32gG0JK4?{}fk|3z1*~!Y9_#{A#c~_C6ZABO z>+JUJ!FXVjdcwwM^1lsz0Xh87a{r5*{b#xVRnGn+-T#vC{{O_7Ncfk~ge2%#Ck=!D zMN|G)(yi%%^gasxYY4$nNBOEl%}?1FE;y}WxNEuYv9P+1Qu};{>ozK8nY^$ zcZaUk7o`G4rxHV6@c2scxsEykeTBcDjYQ{7A+O6NQgnYkvmE|w9DwEKc6@w+V7AfjRPdpE!NFmcE(-+s*=254zT1MO4hR)|9<}EiGk1Vcxg|y=x7&(gWtG zNF$c?AJP6xUH>E6|E#6|5$%80(*IcPe|A7A|FPQtWN#(@W3~SYIQaetkonhB^sA&Jd`gfJKi#m7*=`!+D<>2 zn7J}??S9gTE_eUmfN+W)Dt$+vOND;ZhuBvNU-%KV$Lgog6PE*m z=0K{r2+Xbg2xaCXNy+xdH%g{lgrnGaM+~4XCShVKfBd$kKkM3A6khFzFUreO)M2&{+bhz~EVH#gkJUpiwrP z%dE?q3+Nw+ef41t3cs2%26`*wFNBNyBg!SLMN{k>l!pBcS8nsN%-(QHf5y(TgDOI@ z7GLl*TwR{W#-1Z8;f8uow1S>#e(Ardw{eykO;vAKiR=R^!$->%vVQ{u>;SYJY(y*o zm5}3UZ%&|kv>^+!g)3e)Ao+a~cT5yONGC3!zokWir-zJZ`LY{m%->Cz=^};pPB{nO z{$(Ly%E!2a>Yk9H@uma{38r3`Eu_0kq}9pEurIZJS2L4M=MNlLI)kr-%^k&sUDkiB^$T2e}xI3G%Sq}n?HV%R_qYWORI{kM;!GeqHKutSH zei#9?YZ*WfiMNElD$c63OL3O?HXb%X0!YCZ)_#Lmg)Zx(TuK6Sqo3Vvqhh6TYFE?b zc|aqsm4@k_$4h~GS7#&e=QC61#F^Re4ve73hIHvBZPjwi@{fPTN|e*o34$pIi@Ps) z=jTpI4I;-*0kX+`9JVJgGaq@LFYe1@Rl8a6*Zk1chp>S6BzjMH;N%aO-<$^-5V+@> zcJpb4*;b6@X=rt4xuZ=9`EwvcO2(G;NilJUY_~dCIqne{_|L5rGpOJktK@kj_wrw9 zJ2XvK<_C;5X90as_vE<#7Rtri+{~&1I#Y!@k;md>>C#g)VPZ#a`BVW1Z(Naw!y)A( zM)^ZDT4m!(7F80n-JmNfpsu7k)SFObSlh~wU<0s*Ci2tPTKK1I^4)-XB=(seY-zg| zVmE~4a#(q2T}L8tV4X8E&5woOKwH#cW?|N5N3$EF$9|_H+4NN_#n*k`^=FvHm-e#5qTPpcQM~?f7ms*Do1Ka=vjBc9n|x zTQheU6AgIRjgcXT2$<|<$vNaOBJb=hJxna{5Hu=K+FiCa=zmn^1}v4#zV9UI{j+0n zmeO5z{u$m|cp`i};9I`K_jAfUnU=(2`g0P)M9(CwRTV3?JZ2#0Qgrq?Tiv#w{svF= z7@oA;#0vomk`M|m?xLFY@h&@uieT>AqqjI5WZq{s1ofavS`x5V$>v)}26^8D+&y{D z`bYgC$-_qdAzh06+l1$v1DwmTCP&hs7|8sQ&a0tsOC0qFKV)ZI?23aLQ;$4e=huRl zsA)6Ux8PS|4vm-RTCVAe0JR_N^U-;DE9rDB@+}Smjwt#}=MS_!i+#%CYu7tFoS?%K zJV`0AS-aVR9eG}#yZAj}znsmr+brw&>(Iz*oFMwbt&L(*pa<3^e-j+f?GnQ0X$ldx z<;C0wgAUfU#(b;}rd5wyRAs1Q#(X^M@b=M!_U$W~=r9GcB~}XP6{Rj#D2h5eqLotC z(aSyXGsj0bHT{vq-9J40_EnZDNo_}{Oo0|2(g-)IqwBP8mjkRRI$D5+?vviE?cSvDL zqR03eiv48DkL+4y+*6k^Bgy%G7e7URCB@L^G`wnce$!HZAVzh&hUeVCI?2e=S&leo z$&+cQ!N(GR<<0R{g?Qlqz8qUZ_7*?`fW!9ezRAhXrlo;i>qy-=XtCkpS?wg~IeYoT zU!zSI!{b4kT1Lzt?p7DHcW1A0_47W^?d%545Xf_uzt(c;&aSL%Om#}Hz1&R%OhKB= z@sjnWfFhpouTjuxF?@Sn2k4d`ugk}{_2nLD#!G(LMP||k3edyS==YVyOeH2=CbsDJ z)#e@AsEGl3nYUTPUG$}!c}T!^>nYV%>`O07ABwCk4sg4sl@~n+3ZxxXC!br3<9f(= zY5AvkJ%viTLO~DHC!KY|sHaR;%cbIf$=MR`qSZKujsSg#gl*KW#%2qEi&aVlog{W$ zv~nAm@H0FXzfZ@&uIqJT?(8e)^yx?%3rtNf$}cH~y&jOL`4wQ_`t zLz@O0^Uiz_EM)3AL%w8GAdQyZG4`WvV%LNoR zt7pCQKd-&9+9Ipago&Tb`mL7sEypEHSY}fJ-7DiRPG4wz0NR{qVa)02x90mnZH1Mu zvEcmt&y}iE(iLt$xOu6ZGLAo;SiE&S=mE4!n=B|+{G9xr9x5c_GG&_Gbs@(??qgJomSHc4~>ro_mTgIHb(s$XSlOnm^>F{#yUeaSNYW z=I54`eA}KVHP)8<+k>5v+7vs%M_Zf6KCt z>FLXqk6E3pR!4E?PS>na_3jz(V{f3|tys6;_;1j26Qx-=? z+ARPGGO%*m!?XW%4l;Q{jsDUNzwnN6> zkB9^g#>|stikr+U95d z&dvF!Mw^Zfs-2oYwKW66p))9br6(H^^p9r&T>3Xt*CMncIeaD5G5?U{agEb)Hf_ja zl9A|0C=Ms3!4TE?NrbX-{oxsJbvG%Pj0#1Eis%Go&QiHf69f3y(X4N-sVKxW25D&K zQ)mWw3=bKO4N2%3mC)6NxTeTbvUS(6u-R7TlK*(0XrvVwUgmGI>0P@OW;}fEzTQrv zZ$pBCmDpdPBv_o#lKJHC=#%!>Ho8AY)$Dwg|*HNE|QK0b|1+lCh>px)5 z_?#!nf+n`>HnvZW;aBS6N$8)pDV)s}L=Ois*R&XveIH5{ecb1)%CT8ddn0*9ataVX zrZ#E)Q2i04RXfLSJE{IAgE{9500K-dE94E4j#o;r?gV;W!iA5wKaM!k*&u-vhdd|I z6%ePF!S=C6$a`W_vhb1n105(|zFX=Q^BSrRJFd}_Hpg2ReTp(XJRmxN&UoX$t~meY zcf9PU!-I1Hmd2Klqs#P0VdJX{_(x}t!(h|sQ(KdvMM5UlUwZgViN&U4*8I?yknxs; z4u#s2O1Rj>rgfGh89=mlrF6Y`u@p$Oh+DnauVWe&1rT>@9DjVwZvOenHQI*3kX7t( zF@0zYJoFf;0oVIn zSzZLTIc&)Na*4BhE5^6|;tCrR&=vr%h#Ut`FPBRh^{mKf-h>a{?Gi z;CTdRJte;AiTz}ZFictaFhj@tP*Z<=lSmUTiisEHfyQi~Qaz3Lq)$e8(y|*O`?&8syR4#JfMTm-BOii`f>r48$)zH+jUwIUDacF(O3QOCkF=SL!#x=fi*nU zid#|=+O4|y85xIZCD4SiIxgf^#AUtVR&HuHu^~z{!r5Z}>Cd?Jp1|PvkMX~y;eD-e z$^g6t5aF2tjufYn&nbtG#GlFp=H~oqLIBE%NNG}OFEtUx;aXB0xG)%bB+T^1 z!^6o8nx5>#hN5_Nc|EwPr{CyTIZOh9Z2{K4hl>GZYn5vnGNc{U$-yd4Y?JGe+221H zT#G1i%`LbH2tUmBEd*OM2PBx3JSQzo*4W+9hpL0WsF|&I3L~o6N%Snf2Tmj>vU;G2 z3eqIaH&nN>@qfDC_vO$1Z>s-y`)_y?&(Nta)8Uj@s$-n3b`xQ|Q*FK?eYK{BS_1u- z1KkyYfbM2LerxF`_w8c+;}*UBYR$%n7Mk7%28)1<2V}I|5x>}xI@m1tS-$OTU0iPl z5&E&OUzg;F>vhr2STgP5%^hS@=a4M0(KW!cZ%SZ+a|3^R{Asnf?Lyr?XK;Q|4L>y7 z$j!$|K^*B6cdFPeaP>CG_-DAa9Embr5FWXcR(oC3ISo0`FK7+WQ5mS62OUs61UW5h zMDi51M2yI0gl(F2SNqYgi##gp-eVO5I8n0RbY+mDo-pdc065mkf5Y*4>?-@dQoUlw zUI!bMVBHvM(V8}Z@OOVeabypR*c9}*Gz+u;$z>-yTy0q_(Ff?lJ2gu%Tkbq@zBw*G z`%CPcnjl?9T>stZG>sU^mOTaiT{1UmpiPxMP9LDEW9_ADy(Y1EC0$L?p1Vd=6^S0p zcGE`@n6r-}a(wa#=%1(XL_j6XR{V{GANM=E%g4;vRoh+w{RvLG1iNz8FfDTBM01-ScXHuX?i(9nVuX3PixkUj~)S zjqb+OgD>1Z7nP`o3oP~4qEb(ap&dX=J}K~Y1Fd#jfO^~BKi>?$JhVGy<|ri>ntNwr za=um3-T`qq3l-iX0l2MJ0DAC4FjB(=P!0W`Pb1WgJ=`tm4|6)=+m2I1uBTavE5f2Ae|;z4zaw4Sfva-+^vJ0rHG^w>O?5;hL*u zsGu1q3y&b97m8oC$1)}vhDB8d+pJZFlWhF}TIgcomz+aCfut4m=2OS;DF1p;WFzX-22+a5Fne`Y#H1D*&% z6DYV6oBpCUR!j=j=zeiN0nmZTOP9rDfGowYj2c_roM`b4t2OdctxFdqDrW;U&W0TL zfB+Kh;&k>(&PRC3hL3sHJ5Q#Fi9>mzN;r^3n&jIzKZQrsI;|yM1s4l5*zQ8*JZFmR z;)@C!fM<==o#F#+{J}h31U!qE^x; zC(~@=j>6+07UH|j>bsNsoXtRzg#e)DDYe@fUoC_7TQ2sm7*K3v9ccHE2>`|>F0wR} zTx)!fj^S`hRH~t&m&R-770_-u`q}p-(C6+Zc49s4z7ndbr7JiLAkRsu^7UKJ7aL%^ z=HZD=m67_iWI9N#Ab_^|(hk7F52+BOMkm(o5Vn%V`y~fz^3h%SkGVusJUk9o-Bwd& z=37XwNKlN4F*7x^XO*VWAD5srJISWYx*gHo9g{EpoI7t_YLW}^x@=at0gRXV%owAd zB!AA9a|BFf@I6r(4?q%He48R91CW$tijAz>p5n0UXcYCo<7_y21n~W~t9(XrP1zI9 zZJVRC^d62N+*!AViBvi3&5KGQh|dVn9a=>@L9fyBLgP=<$)E|Z{H_YXmih}UuhQ}C zZtsQbG_d)0x5FV=Yt<6|e3*HAgcyaHNG#Ohtz|24|x!CKB>abEB2aq}u@Qem< z1~hYydqIJx^#eu0%#-St4KP5J%J4Tdxjfao0G_@AG;hxQ#Olw&g5$;ruJfKxq*<1RRG$0Cri!>>X+wKhaARtiF{wiLu(JEN;a8mCHLcxF`cbF>b$7hifI#-N24hd%m7o>$|^&T9gqC$mkbSd+M6x@WcK=^-AVQ$%t* zlDw4U(nS#*>Ne}^zX#KXh2!WH2%F1$Tjp-pDUOIjSBhXY%SGNbE7OSR4kSB&HD;6I zoj($AK!8^=>48l^?mUCs)!X)f*lbTrpLuce5qo&Rm0;RE$+hC801 zIo>)mS_^tw15toxj1xYCUajBtJTwpnf|bekZ8Jl|tGrzvQKy>yp4x?Y>ta^-{rVEy3<|B< z?QiNAm&Xa($Qv@l6$9O6p4(K!P5v`FM<=F3%4@kZwVU5eG9G@ZU3@E)R}y)C%hT#A zKEF7CSlb|#JR#4DVhJLf>2JRFP)|N427D<4JWyxc4PXiDk86}}Bs&kUmF!A;b8qm0 z?3t!i>dxX*KTWde_G3(TgC-ukOuM(m0uOXzwS4q>r5jewCmmW>nsyeVDFh%_lQyaf z>w;0DWLV$xnARoj*W!&0E8Cw=B|5F7{>tCT^CT$VkYDq)Q;&AUm+r^i^+Z&sGk3p^ zJ_VjGvbSPs^4&HLcd%2|m!sa(j%=f_R*3`6DboyjIqA3&AaFS7d#HDQ#W`S(d{2sZ zd38tABZ`^;GU^%8HGH|d7Zm5--7cF>l0n-F7?G4kr}y2K*55HngBL-4Wa`0ugrE%+?)3asxRT2)i-T86VmScK&QY=MCL1rfqmL?{!><*LhUwrtC zUrKHbTbq9*#J2E~`u^)1n{pu3Po>KVr)_#4pmvIO@4S-vG{zt|;vj%~a@Ft#O z8A$z7>jg%mqk7iicD-aGkkU`69{MrAR3xfK3tpGui>{dsOdT<#=@kc$dG>?~Lue*! zYn?UyW;#XR_{^R5RUaQ;iHjZpO?meLcPw+6Xva2N7paT=Q()(f_x{L5A)n*=;+}5I z5j=5A3O~f^0P*D?+HzwW)^3;$c17-}Wxp=%??0_w%c5whskTmrRMWm67V=LR&t+bs zmaEMo~iVz z^KDOgABUnM19hLGk~1rZE-o3Zt)Qn%+XETrI^9S|mCThxAeKvpgJVsf>>cSF1HAnn z04sQ4|1hvU{1Ug7!C7PA(T*8+%Kf(@YRVSs$xy2RFYcrFvG5ah7SWWtjh=}KHZq1% zy28j$(oe~_7voV>7h+K-mZ3txcM2cP*d^!9WaLd~k#o&WeqULkrkqrZ(TGZ>u$yFr z`DN!0JbG=*86&!U6?dBQB+>`Kfhx=hx>T)7M3tX%i)voPrv>@Z2e_e)N9v24!aeUP^3XR1nKUU z?jCwTK)SoZ0EwYt=#Yk?JBARXyE~-2yZ>MIweS1+?fZH>=8Z4Z<6xHS{M1?t(l0WE zEfDoQF6n0f%#k}X87pX{?A8K12s=_||8n8JFa2B&m@t}%A=W)S=;tZ}sjMs(s_>~-^N z3=ml+3uL_}EZ0cuE%4oX6}l3tUjuaiZYxUrdVO@vT#de@%Cm=}XBCiP`wY5rcjKWN zgCq|79e9$O0>zpHP}3)ATHo)me)GU#I>V1PxGB zovS%c1!FG|(@{C6Q2bcALVB_VcG(NGY39+}iPCa;+DqkLu${W&z3PFM;Pv>J!$#t! z`dvW2s!iUPO29(RhEcZ0df64^T<)(ybE}m8x|~955&|Y*xMeYFXc&FM4;So)qO&$R z^OhYiEoRw(JrdiXu_gHS;o_vuLEUM|eEf{!p!LIEwkA+^`E9M0!Oh; zEE4vMOaQ4 z(sTL=S6MmkDW>|XySv){%3hARG?FzYxZVYN&vxs)$M+$NqC~DCW;ZbyFs;7*a;!D* ztaSE8p{yZLcd^a&am}r9xtg|jKS6a&5{>0`ak#_Kzo<3ner%VeKFe<&$eyfan0 z_BT9WGI_NS~4S!3#e#8DxNrB;EK3Gj9dYrzwDsV}_ z-H7={JgfFcIjO{Hpn9_4rD4o$-9tm6F`&^|sm}Ze_*c^cW_{IO?N=WDReZx6OCpl$ zyyAcpkvVoWUF+QB_n5Wv^%W`IjC@iEt3r=f&q(CFkD zn_BQmmLs&^`aNqH_C=R)TCz5bO0E3|WUM}E z2G^e2TtB2Xr(DD*2X+DTlG?S`ruPhP>AA(ga-@dcH1A)aNi>dgUrCMoqO-FAK=Z}FQjjz|?(%PqRXDo9-!|t=YdlF|R zYv;#aG|t&J6?9O(T>z}6>txFb409d&`&&{>ue~%u3CVg5rWPYjU-z@l}*@3 zjz#c`oSI72MzrtLK{uke^Y(oGo+$zvbp0B{CfuuFSo`pDhMWCzKFf{>5FtU^xn z3+FeVeZ^{kjL6Cmx878d4b+QeG({w|YUIh~xUsIXsQgAadT0%7o;vaI1^7r3=n~lJ z5M)!cSRr#em-akx6fNC;g;oLWwe%tL_E!ndVJOKB=M?V*q01pLj!#-Ve+!+*kp{4D zGo`c|Fi5(yB05@MUD}O$q@hgQEBXMB0I(myz_i&Q){;eG!E-V(FTU6Ew5sK9eUiuK z*U$d_aNnEqd2F)E&l_eY)>X$FiRs(hguBGR0A7J*1Br~9Se#ChQ!{6gf$jS&jt~_T zos!QoSrtUSS1JPyuCjioPpVs#kioeEVfzc7|UmAbh-y9sQnu(&u}*r$BJq_w}9(#p*S zto0IZx_aLNzs6B7X_S{GYY@HdB&Mb*Za103bBm-Q;E|u5hsE@oHPw!{-Cks;b~i~+ zwGmz{R%u_h1A9DD;NfYMc8{fgoOYI#90O)a4~@||^FB#6XhgEDwoQ{WWT$s?_P@_p zl{QmAJ+^Vh?9N+d(grC#I{%}dYt%UZ`-uez&ub#fJze0xy7wnv#S^X?>xqH;1k{ab zS9mHx6K|sJUA9FGFjPK~sX{-h5Qi<|Fc&np+DT|P*l3|#OX+iafGI`ftF>TR=?9d4 zi*a9Zjg@NCViR|F1opVk^|}+c%SOK-LZXlX^Fjh4zpY+q-#r}IPeJLU2BYn(p3-{< z*ce%~5~#f#u40@xi?(o^m3FLf#{5gGl2|x7NaoKlBAyYsZl|%|wQq%qlHY!jRqLB~=mJOO##>s;sAc99jPx=J-?5N$+vqsxmTua9 zLL-Rv$+88!-Cj=J*!XYtPr_cNGja~%=)mJhRyt#1;$V#Bn}tQKKhuB&1xREyymIxg zD7R1lEP5T7J30Y`gr%hUX0~E|?C@c-{!_Y(6ZZ(e%Z?U@jdC)dGZiwghK>5iuYr!O za#I{P%AARB;15ZeTm*Bzy+fYQ7PJ>`yW!fa5?K)XA%Fb-vYU$hFHFZ{bh6gej)njH@^JvqQ`I4? zxS@Z4hD`8{S&zw}do?p_)wP$kY@BZP#K<{u@(zH0c=`1EYMwK~*uG^fT@)>S3xMQ22W{vxWagXN zu%r51EeFQZfqL-+Pw`JS29lXHC)7CNlS~mlxfUlDZde%U^0cE*>rm(_#0H4Hx}2^l zc~4)dy1p~Y+h5nPtk(JbnC#i}e|^wV5JXjZ#;bLe;)BFrPQwcEw0T>xOOuF3c4zY3 z-oiABQK+ONMIxeo7hC+&sVyMwlBn3O)N9w-49)rAysyjR@=!WxeoRewG#`l00=$6b z&K3toWi)6W6`bAWKb(%3t%{4LR@i}>VjHfNghp(pn!R{+cCPb>ooCE9B%drKM=QNGQ%N{cs5__bk(Q|5Mn2SdmmKhxQI{i2Gyo;? zT?Xb-U!P`?YD4Ad&~FVvXL&g@e(oj}MNPv#Ok?4$OvZaqCjRfsQH>VS{1Bh5e@L+`&-)kX z`K+cijc^hk_n_I@c)RH3TdTo63(>zyLu*O=?mOSiwmg#AEHs1-rro#U3~0z*5wj_i zr)(&zufE}5#k)`1U-J9H=e!4d#P)T({{Hejiy{COc}$S9zGbl(S;%8G+>)WIt6WaC zX2VU8l_(EC;`j7zr9*z&?h7``s{q$N|8B`TszvWVjP>i z(;Lq$NBQHe1OMo}=7fL(nZFop^RL>VO)M)b!on03!1D2cX@G^g#+r1^jHb$w{#E^d z|7U0wBYPhp23za=1IOZ_8_bx8E7b}y~auTZegRM^xUOVTgYb3$b4ym;MHn;aY#!F1QY7*w+Rj~ei zuul{z?Q=DOdW?Isysd7rRNY34+abyNfTq^0w`*R9-)=Jk?)rLnqLL26Qu0`yLR@Yi zraCHRsWv(qv5>dFPAvxf^J>dby_4C96c_Gq!CjxnhZjbDa@rN%`OY7=JoNOi(aPyR z;DR(t^#kZYpHYdn1(R)VxZ%}CI^<3Lj`j3r7N z#4ME36~}-ilQ4XzWquo;IxdEF-TgeC*J(pt3@<*ds}el|oPMk&fvXiO=&tOi?O4=N z*dEQW0&bFR-UX}6K+)wkc2@cmhYD0yH!@fBG@9ZVG<3Dj1e7_O*PBnemtVvodMc$8 z=$e+p6UoB8=Ph3{6;veNXdb8;1G6Kbjn$#J3p2uoTr*2t93x?Em(Vd40P*E&yu-!Ei7Ha z4|Q@lbQ(|;Bi^_0W7Ds}sRMG>!TGwEi%Ea>p5alwu~rx#Oi-Dqbx&hRxUm^(*lvNl z97+I-3%|>4sp{O$opj7HMWkyFGo#*l3wy5pT<0bIPdUyvzkHJ{fW_`v6JN|(&MBGq z4HmKPv^NJoP3*JE8w_?7d4}+RKHik*j&0;zzaK2Z1x7XEY1Kj`BM6uj-gY2Nh$7dT zJv7e5vTx?qB=T%i3Snl91ggYbjhAKjX7H zl%hfkb!sh1%6dLc_{V~lBP}U{=lYpC7QIj3Ty7*kJY3H>%?>`~j^4R~w-a#Cp!AxZ zCNr&}P;zamx5Rw%HghhqRPdtLM=KQ*_WG6B&mm$O1-!{EW~I%leJ=&Hy^nsSnK5DS zr+8eZHI3&$^tyRW`;q9tbQ^=(?3*f#p;{P5WjM7_S)C|K7F}#XWn`ojtC{xQuZY^j zK=(+b!&8Qu?yk6tDGdez&#WaY@=G=LZ)8WHpm+_p!^Ip-sy$pu*m${ZEBetm7w2fA5$#EpF|oBmaITRX324-%04& z$?UCtdq(`HLXi^QZk_6Ub4DA-tydr4wUR+1cw48()zAg^8;V-RO3FjNDYn&9J!d>v zf2G^9ug~r0Yfx|b<_)QktS8E%eAhQo`j4DSSTxI#BMF}-dQHxNm0a2uxh%|fMDzqI zvUF9(yH?f#Z~pqfRU|@Ihvc7PzXj|-blpFTHng74|60RCZ!jHCj8}9V7(tXXnFPhs z{>0kejUi^zle-eue{nikFN4*UNC#nm7i%E!EkrjzkbqS;~ zca?CkWWupWDc-M=Pjz6EzPQ{fi?OW{-$!)?X>AO&a-8pa^&Jq$c_dpx1Ac>Vmfsdj zKzQtJ8kQRcfNK9F+ux_>6GRD?fK-} zAd|0~TTw4!1w0(@Cy}p*?32Y*!npTB4NCOtMRQ~|BNt!kQMXu8%Uyiqh?w!uOTuY* zIcrL&oj$NWJ;Rf`qkGnXXxvgfHL#Sdpd$}u^d z$(H?uDa@h8wTs=9H|{nz)O_d9t2rIsu@z~0U6~HxJo>f_NIa8Dz2gaDDKb{4^05(y zX(3fVx80&>l7LAP3!_|I1dZbig<%risB~m&7aFNh0$nU~9$lw1fznEa9GSLOi8fKi z&gk}?hZa%vacHr7Rx{+#=Yg;cYr6U`-Nr~neylD}ZCC)tf!z!&IPurUgWJJ8V}Gw- z{N3fd?q|!9yf=Ff*4@JxZT&M9KJpq1Yz6tjrlVDMN_TVPV3@I$hrk@Zi^keT|$%$pm6t`gzTOlQ;8AK+IUSnA*2Qtl$n z)g1mz6YRisnI0u1wWCfE^7%o)Z9zWJ3+a5v*2o0FKm7eWH`zLmgLyorkB#|gMBH`< z^1V>{Jcb$i#s24K;rlAFLO!0Q#{1&<+UzEBq^BDLYz%zU=`QonaCG?(eKw6fLf^?A zmRNVlUku)K)T@P`js4&@VK70e<;9+G|2=qRvR$!0TWQpIW_c{hv^c!3&f>YK<6i3KqX{Wd}|zb3OH`CCAMRe2Y9)lG979!OO^n@qIlSJ8?JP|P;K?rWq(plr!(Fl zCD;9UMP^I_S+b4Xm8#Zal^}#vxOvN7*8vvrk{{w--jr`#IAUl&oIher%jTFo(TMDsNuT^C9p==n2dYM5l&r&9#r79K zRMu6iaosUKEca-6yx1Eh1a{N!TFNH4a1DZ=!%KCtnm+K8Be^mgte-@rgQd_&%g%fY zcXY2BTW9Uy?8ldGP^*3*YtT@{t5fjZGL1U2jeNrC>ztYEfl}wnNS0JAyQZ&p#YS^8 ziOcS+c2YRPzZ%d}Kl=I$1BrKec(Lg=_`{5eVOq^xtXnD{hWm-rakRxh`N;X{Y-qazx)EmT4RIjyF~Sc+|$5nQp6+J`{#ewvEkME%rd^n(pFOpC0G``gkAGaoDGgC(Y&dohpzVlJQ+!#& z^PZhl*m{d>C0GP_uszJo9OruLqb}{9OTx3SBh@4%}4c65d2-aeQ63x*ae zOHIxbZQWL-iM2dc-q*4Oyp}~?BSXzj#I<&F;xaMRKDc;u24qBRQg;Un@T5O=K`iXT z-y=wGUj+BZ?Wmc*HBf9I$`1KkNQDhPot)Ivf=Rq3x3*g~5z@_y4pG<%4e(M^|$d zQpE#MdcX%KUt1rFR{3DlFX8qyO&{c}D^ zS$KfTSYd!OYizl%w0V+?j58K@w<@RZ(|&Evv%AQjo`cg4*M$IJ%C-+0DQLI1c5vDV zrL93Gw84c~waL%@v?oLQ^6Xz91oEd2WwY1_y*VQ$lc+cRZRttxWNOg>_4m3wP+9a2 zC?+yWmk2`(r zKU`RQpU6I)wk#7&yWWTvh$P=icC<@#W1=yFD}J#~-UNGH?8wd4><*ql$=R}na1Bhdr#Ot zlFvC3{<=3!kg&X?PQ5_2Azf&)S&Zj18mDkzrD+VDuwpg>08oXfcJt5wW_3;+YxS92 zb{Wk+uVmSQKM?%#?GCeoCY5@z2Bc02FF=uaPHikVOkAdBRb6!Q=6pvvf&^?6zu*4# z@=*AvfCs89gsrmB=Xk}WutX{NQBD?o1Y!&lszM{~&fYVeVmrzV9$C3lRjn%FQ zTB$+rI}rYKz-xH43L@pkSKmp81(5Z3Fb}rnVF~Q!r23CgmDQADO~-|)OKdWKh#%6IL} z7vS_vm3k4-#)jL-DK!gRxtzD{XKQw8s;BQ4y$(lrKvA9=-rxRRXF%B@yn8COcZ?U- z3l&jppWPQQ`oChM9gC{~_+cC9j%_swi9~oL`9br|#(6cr#-$Q|hvq!b0y~(xIiu2l zLccy8!Yl9&pc~a|eAbQnRS{wFdJq@U^xLkCHq&7d%jtjoqaw!q9v^{|NIX59h?!rQFU$+=(Yba-K= z8)ox;0O4w#w}aQVE-isB74)#s$|rtPNXSVq-S34g*ex^^BQJ)?F+*DzoMn`P{`r)zUPAZup^u_UMITsq4=rM4z6DBm3A4+$;N7q>?8XIt3Fg^*?A5Bg^`d)V1iZdeWh#Fjx4jHo6LO;2mcoT*C>>?cQxav{CQN zZLS>A;I_*kA0r{k^PUpx_E?gl9e6~Pzu&khXv&-Tya#RzQ~@Yv%p{l%MqM|+@Bd`H%V8xq%xW7L z_KW1Q0%#hC+v0P>hJ}SwKoZLVZiU5{^_vb5z}wf`#FL{&Mn=vo(5~UX1yB#tK&Zoa zp=)M2!fk7`W9EyE0d1KBOqqoTQkUOe92c#g7EaH;`_MIsuXbMByN}Z8rdbj%o6x=O zNn_Al)b~7!*~qS`NW}X`A5qAl2B%OB9TA;oGYYuTU4@yiGp{sG%ov;cs$9PkCZKEx zx;`t&N^+?c|3=xArS2nFb~(3Le5@4O%V`M|3TrE?aVM5;DlQ^Py3Jfe&k4~)FUZRL z>PRJ%0_>1ZJd4MIS~Dt3{@;xJ&)+S=2iQZZUa8S!_U7o0&1d%W3UQvIzX(bolYWEv zdM_xB>o+O$JS^CxBq*wWWukBj^Uxa)u@K8SlPz>b{U8elDij4IbWXZ9jT>O|Drr3J z2Jj+DE3gsb^kb=r{XokeFHn7FaxUv8%j3M>i$e#}u?;Xh+geu7b*3#n)eZh6$7DSs zf!)t^_tb`W5fpx~iFZU+qc`wj4e#4UA>USIIXa4$T;OpD>ZKwW|=9(HHlSd;D<;f?C zNTA?FgSuQBWwrhzJi)RHDu9al{R54nnd<>bvINv$=Z3mrM$8UKH>S(VG|h0fLuLgn z;uUYtPan0L8eH-tFAg@U_=WC?9l@4t`NDUuiCEFwjP*F?gHlzw6NiM9Fg1ysuclS5P#E<}8R&J$Azi+8g5ml^m$vdMB@l33+_=}}gi5}Kk zlBelb8h+nUWv(oj6NFNsGnsW=(8#6>3HntN1CNBO_=}c1$HbipI|gun9H>e@QB}QK z)&w}mvFBSZimlj2en9V$v2}Ni>bxCqu+>TsB&>*2%`mm$(CsG?b8cZrEloBAe z1dNkRz`zDl%jZ3|eABbTz+m4Y)RfEU;ZB0X;zYf2#+WL7!s;MG_E<3WK4yM2Q!0!| z640A)b1QQYYwE~QjJra!0ZBI~+TVc=qD+Sx@FW*{Uqg`k*1A2M%v4MCcyqQh{hvlZ z&KxF*GPA#QltalXanIFJhhwP2vx1O#nGFcc*Kn_gGn#V6uUc=4jJfD)S{aB?I@~nx z_0`Ycc#;e$EgmUXO1i+5Gl-7)^~wV66U9bKzXSCl!GleFFJ3twC&fIu>-3L0=h4BB zb9}Tc)(eGysp84Hes}o-@*oSSAC6&JcJt$%qqA;_ zpEN<#c{7QqDg$F$IKocEDGjCd41#5FNnGU+QNU(1KO!rSl#N~Lc0AnE9;3C>zjjwv zr(XF#>M`(Jqj-^ScyvP@tEc@6Fl( zD%=>aQJ^=OnST{aqdiDPjcwxG8xU#vd?wsJXty^LdO_SEE#aGavE|@BsKaSx4lnIP zXYS|0S!u8jDpuQHs7wbigE%k=5T-WW*jr9Vp|W70fxCDXlHXhD)v{w!C`2mgDL!E} z4q6;b&YD!qm4657z|RdM=KmVU5XRAum;A1%j`i5AX}0!ouc1X^Gm=r>K{$!qfV^N= zu#y7fKE<1KtsiRexP4Arxnc31j>qK$iAphLx=;Yr{vXDUqh=C(&Owh`3sjusA!;*6 zzqyLzZ4J#zbGtlJry22-ZU+$W~aG{+dT z%@XK4x;%U;JYHBQp++ZjBW=FcF`H+(emWh*LqE|*GXDmFezFF%?l0TIDB5jnu3cAW zb*azixR&5p^nq{DT2BuLK#bACzI*IO8QF;}R&m~xaxzH_6nQ%E=D34bSq^rKpIE$_XHoDQM_u7`#ne z+e#x}Qg@eXz)}UfA6rP`%0ff+6KS1gT$yojPysshBA4~FI3!;D#wKd@-LFR|5-)9cPD5W9Rl&Xe!89U3r$cOgZip48+gpc$RSFZ5kj}X*QH)F=mF+hoqhzWiP!xlv3oQ+L(F*HWP>SG>r*-hVv!7y9`UcEn_4rP%UvZXAiqj;ALAz9WxQ2a^L~? zmUTTz%jB|(w1wkxPutW!ugO~6EDv3%^~O#jxM#MhqY^YD1)ezp$wsB5^{Rk&xXS)Z zeJ#6*3f^*hGB|k&a^S_@jMVA}`HH>KQ6}O0I(zJY?A7g`lt(vf0Y7QgsFfStj~hpe zBsnZ*+oGW#3)km*NEzBPfDZ7{Nt3RYuFj=TvNv-19A6=Y-|nlcO>S4vm>)3i7MH|r zmHEhVUvE0VN5JOn&ms&VmWnvR-7oBv0K=UDG_}Tbo|n8(p>aDPOSK{pazN_FMwRdhy*=TOotMsfcr)o zaUCpa+)NynTIu?J_nf~Q%c0~%8_Ldcu;X%^W%MOfM&0TO$oY-H?KN_`UWz9UO^`CU z_8;<(Amt%da1*DzQ=2Z}A=*cwIZU)~r%vs9Y}<6m>Hy+t|J)h+PDw7F5l@uOifXDG zoFjb5YS@8+{O`;O;JSZ;h)AOZ>Qq^ab%m#*b0xUl5c7JI{iL=}MMp!-f}>Ib2Bl$+ zVyezKpdc@EI?<`F%TnMUpxSPd`pxI~-oGT!A>COlX6H2jv^N^w=d8oio_oV@ZW|K% z9L``hUiX(tZ$hh89+hs^_4TG4hu4K(L69PI`UksOn}yG_2sOSb4+WUOjvMYI*;xBU z93+1+2LqnZYp`gyn9J=2v6eT+-W61dcZea-ZCnd)JxsK6ngl$p7Z_~{JkGZlHVQ?mYIJ(*<*k#9 z$utTCX7f7*xR=iznyyn?DTs`AQv)Eek@~13;TM2UJUmlrfHYF9Qy;qM_b3QhAt!(_ zpbo2==KF45bak7`uU__ZUZQZp6F+zXWOJmMq}G;^%Fi_h?5Ws^w>+U>)m4ZJxIQ&i z8%#;>jefKG;=X7V1%`Y1M3h4gOC-4wE`_aqqPYF0-vHe?bFx^+lBpkama(mT^{IOV zK6MWaw0BK->HJ>6rV7RXA!UnI_~{yYK83)Szg;`Sr?@$|@MaUwNW^hVN)Hz;RoJh! z+C%im}_zrk_S0y2O*9cu8-w~7_PiV+#)=m<5TRqI$ShO z_)pEkLs#WLL7G>urne9q&r@}AR*$!!K>?h@sD zX<_hPAC&%dk08G}ANMD>jh-BEmFUNg{hURu?ZPC2c}GrHseV(+qSqy{MZ=80h~RFW z@Bc#M%F7ombJo-N5`7#HB8^3dvlGC%h>;A(mwh_2NrDrp1S0Ln2|;zD;nM<4sotxO zZoU*XT=8>Hh>%=-0a>-Og-K-;K%N48le-Z2XWgPvLL~OCbo{QCZ%Z5izkHh(%H_Mk z%AxC{kiNa)GY~TP zo#+3Lzkr1#vpjrrPH6GxXNIaLQ2i8Kb42-n{O!%pcd9v@r=<=WR$=h z@yES5S!_BD1|K@?r@iyuK?MBG|%TdY|VMQzJyks%1fv9h%Nd~+TH zr@Vu|KV517qAUDv2e>4|*)o(n^R)KHYKA#RypDZwHsf$5zh!N~E(<#Pw?GIaoBaDL zq&`-xo`a!jAYJC(Fqz8ZfWoL%rxgqJc8IWEYuNwC&tCTUPOe)0%w`HDCeal*r)5G1 zNYxy>|F|XO3bje-b5DpS#O6Qm(!|dFFUTqbwI1BHY5b-f)(@qR8+}FESlYWX#gVmX zG?tqo9GLk6knaT3xo=oAhfZI{X-!*}v@DF2Lpc*a*=$9ARWFF14oNff`j14TlrH2F z)^qKNkC>)Q1FG=fCEf={2U&YbD8W?NkX^tNlv~Ivb+_*DW52yPh(s9y8FRh#-rFLV zjoS;rFFJnlU+9L62iZT{zT3Q(mbt-ZrcvlqJMcd3&$)@r(Jq0eU(&~b+n(QH^8$+7 zlsGKkoga%a(^1`lj-I!1%xU!pC+xSepv^zwk!_DKz2DofZp3)nO->Prb%~=H6Sg;N zPkUBsRVV{_D=3NE$oVyYT^dh&_J*gzg91<#5e}wKHv4wPRl=diz)m{Vkswvouj%H; ze0+RKLIdP>Qq`6q^FLpj!zWa#Sx#oHwk-fw(KSd#ALRC|5+~E7Ph+?Pf@d<*xKdn) z`P$#UTbjodNSaM1PWJ}W9W9AWl@J$LCytH=drTasyj&iB#A2(!?eHVqohr_JFB6SV zUL9NFI6=9?%z#7kitQ0_Y3TGtZAVOZwIZ0}!((F`jVklh`uEy(f64dAD zFRVyH2-HUH|JFwQt$#YZN^-4Mg=o7*uLgsGrKNEYvr7yyA(|77=NxF&nBIvNAP0m{ z8f^`Ld5@)kBNR#;sk1%FK31Ah;DaEs%4>Mtg z(vJR>_CX83aAt@rRuqj>d)*Dwic{a=5O z%RiyeaTDncVf+p>*Z8o81@+XuqaqsZ+XNpgRJYX5)!OZ<)ChaDHF{L$j{p1!&VYR2 zM+B7DK!R{qxle8WJyrH2OOWn^uH$H`D_kL>u z@QUmLqdiy)f90*FGDDRKDre>|rjcn*ow`8B^+IXHAArK_zR_7`S*_DffuV9V!TEZL z^7;fXjwyVbfAw(5PsHN{7aP=yvkA#TK42CeOcK+%aNH-km)1piGx<~J3kkpJdng^K zjTyvUVfm>#qEb!9PiVJJ=zkv}{;8!?e0}Ssd~N*{POFjvw;VlQr(xhHC;$nrUUKk3 zlXz7Cc#Q8_@C9F~8=*8YHG7}jx@ELEUWRHEUBYhSJ{{D~jA{Z74b;!Tq&Iey0Rt`c zSkW{PZaMZPHO&4g7lB)!+E8j@Eg4247ZpVx(6iSY3uf|sS@WYqqx`esNL#&7aQ)|X z3X=co9>0VUL^XKYsoQ4S!Wi(cm*a>x#T&8OG63+1ep?wI07QLh)pA2C*1oheL-amo zNkzn@-S%%A$FdlTS~Qd*)3xk1*To!F>%&&B2~MkV1Hy@CEuPnRW@h6%z>o`cI1AO5 znwyN)YHy6EN(4DR{rR;0JUQ_Mh?z^^(8uN(bx?Sx4W9~-0-~Py(VWb4U`-mc5d^E^ zm*_KGgsra%jgPVd`aEUu(} zUu5PU0#uCp<{C;e_~!$#x{jmpJ!iJf=f5WYhP6p}IUfDgdM&=G6d}+!Q*K?ere}YH znE`nZ#f8#FcYdEA-YPXdw_M|y9%@ap;l2d*9z5=!YO^*`JKEGK4jWvoR7%qpWT=V; z--`QK z5|xC$oKxn*lF!0W*x~w{CNRjBOOM_iJn_8b)&|UT|v=-%eFI7tk8&cddcs$6@J02k|`cb zA>k++CBT~_n;Np{vk6G#z!i44(u%Alaw13U4=7mZ%G%xb+%1C;$#m}|Ddo0DDNegd zf5389dXRgo{yra9GDT}zBW0E)81E5qw50;yl16QC(hI2sySul3ans``mJB5ln{Vm; zrj0SUGht=1RTfoY#L>EMPp8%p%dsHa_D?1uCorM7Qvb`&1Dn_WS;dtaC=KhfFscI; zHx=l5Q+7k|vk-+07{=?IUaue06ITeeF`B(#0we7+;TxNaA z)lLYwmyf((19@>@ivqp6!@vQCXr2gq{$XbnKs~b+5)5b|Z+3Gtxp=ONR!;zH`9G{F zb9dW{2u^J?10x2*T@`dLp~dX$i#+DljN-w}rV4cC+Pfh_Ihq}=q$;~_xo7~Pw3 zEbQ4FOydyDRr%X$ES&$udPF>zMdNdG7G7qM6E+hl)48`yMr0HOD@WEPTJh=-1a8TF zcRifhB{|>YZ@E0VWq$szG{aN4L1YUZs1kHa+v)swz~OamS{qlT4qHPbuRw^UV}b6} z;CNX^xeKCgtmOyCY8cew&oAH6npYI9<|BG=Fwsa->b4zq|42Ultyj;W0j031T=5xQ2{7tBkeLqsIROUHvnQ$vf1AglgC-> z%a{{7S*j}mEU?oZb>>F~l6N2c@m+V;eC3^;IjRqbwdo?)8oMHVB>PoxxGZc%Zq7;H z_ZzwVC9M@irb>msx(C1!$%6wl;`!YKP9Z4GZ`o8AB4B<3%?;$yyjc2{RLFThI!^m| zmFrr!&gpoR%I0HEMflLJTGgKwC~de@ei5?6m{K~QBqYAO*tO^%s*+B-P=ERghek_X zEBruKx>}3ZVudFph=xL7(K@?#M}@3tGohG!Q;ku?tUn>D##-Mlheyq0=HwN;FbbLN zIc<&Oj<#9*lO(HmsqE#(>9RW0?R>sdst#9tQ6RzU3hmJde2%knLxkc43ga#cH`o}^ zm5#~l?)dmn1uMdI(86I1uxu%I1Y1h=XWhV!%UK{lBw7dS)d?H-1S(S+OC@a9>hcG4 zIUo}+0(z_^JO}q$iec~SPv+{4QJZdd=-VpL|64IZPeBmX;mMxG$X+Gk`%DIcy?49L z*>pM?qg@`JcEGae!8~q9WUe@vgU3WugP3dhW|-Jb3jA3#KGgQ7C=D4`5k}x;Vp5%? zCv!BBXb3}am?^=}-U<71Kxy>*%cOy5-2(CPlTL2crt5qH3!MnYt7FGd2ZU>?2V&&RD3z|*?}$A4l>#~b%Z zAxB|&oy6-Deq{IKkoUuaAeZ^HKQNFYs{ZB%kQeDxtFoP!AD{R>2o~FBJRo@>Y_D7? zIwg^`kRHdE^MNxFfEybWcjTkD7juXCri|AckmJ=V2PfoJhsqvmoxzRv%5Wu^5#e52 zhO)O?wReUB$xj{c%}aM&g;#X#=RlYV_ID>ZlH|nI?fKSnV@V0=)hMn923l-&S%A$y zB`fZf#CG{kbm}m@)M?8E8h;32QFJ{)(4E}0g@cnN^jFYx$xsgoH;n(XbjYrd{j2P^ z7Mr} zH%`d^5Y&PCqpM?MI&E0vnb4;`H3(jhf;Yb=mKD{z{o&CLB*~m7dV+e^sC@X&J=%OT zd?1#`!DuM^%Y8V&o?cpYy!QFUBu*q;Zt3O<2wV9Qr@1AYBLK$;cz?If1dx!GLUgfd z^yDZym4ZY>JZM5xVbysANhbfDmQF zQKt#4_jKKt6Z2D9!WRj|atvJNIC$;Kshw6!(jt)BvR0=uA7VA$u#V@ER{!YQ!S8$b zc{!m(7AngDOqh%q)~w(%>4;im$YbL&rpSd6aN|)$9jGcKn3J>d-2_uBhek3DLK(DE zI>U%fGTNv6EUTU^D0xX0Y#;H5j8K2247{{Da8zq2L1<0%_L+2uqN`Cv4ZQMJ1R|2h z3($90lmb3Cu@!#Nx;kf@X5p{;9j)}z#SFLp&KRK%ajpS_IG&7s|CvXM%AHftYWAiI zBjVKXyt?zKq%|8<%GpjshBXJAzBF#JdB2t}WW$ETkg!x)P~&UR;viP}p2m%sh^dYI z2e;*!R!Ateox8(QLP1jCJ9bk9C=+OOvijG@{{{_TDbYvU$U9xHx>YO}begt0<4B(3 zcfh_l$D&AAS)O+OqTbkIX|`Iz#_rBI0!%7dZ2EmRr|5LQX6bc$^(fQzo)>B2_H6i! zqr6R60|gD0oV1IH^r-(Nbo!#xJNOxiR27^nlLcLC@#H^p8m^ZvZ2l9M4ZtVh$d_7x zYa6%Qa!=pHGVIOPb57ncYZJE#`rhA!ao7(llmD=u5y}NvZaqS1+iRUQfP@5rhj^Zh zaTA zZ6p65dv6_8<@U7=D}sOsC@GD!q)N942-1zTfOO}kkrI#+X%LX^?v|GBX0r+D&Q0?z z&N;s^-tY08=REKC-#5nd4`aXp_I&!98tL#qg9am!!aqv{ra$0(+ zygb#QV>MTw5qLuXwjEz{AcSZ_ZbK>O$nfkqLTfaVQCY?X!;|T`gzOVvQ~*mz>5x`O zG3(Ha14t>f5gMr{!tFtT+^{90UA@PzoTIMjM5pomU7e-R^8$k&!_h(uGu`+xaY{+G zzZ!)Fc$@G`0D;{4Y~uV&?=wD25~YK#s;?-egv3q1-LF$$yx!!cpEYjJ+9r%hk~P}L zL#^pJI%97eeLcqfR!zTXeJ3SoaFpL8=;^0>L!pS+H7t?ml|6?u*9(i zElW%SsuKbYIUwV#{`h{Y%Jb$5LjO+O@@;47R)VYS*o?E|yWozv>UZ^Gn#N#R{9qK%98fmKOm=YtG zHyb@+%o1Oz0x4JRav#mrysH+sF=;4}GUfqR6xj57+r!TG<Tm=G@nDS8-FG;)%e_JX29HI3Mx3Soq=cbuuSUTe zK}iKtX+HIefc3*8;$sL73*l-vQ_{B;O={wDI{l96N691kC}M`qAwBPhroOfxh(74o zr?~|Bz!~Zln$Jn{Io54|1e_eJ&Tfff!SuvPiv<2ic`1wMD}=ZojC$SkLGOzA1KzejTGX0DXYw*kEKdhQ#k z{-?#dJi#5JsQKpp!x1uv;2t}=5^j$Lv({7r@*2pZWayonk+WYgj56gI6$ zU=l}{&Er;wrzcDK+(#SE?v)_joi4Xr$F*W#1jq|!o7|0RYb=Zx{;j0473k(WOqqh^#7(w^Jo@v(bqblozkF3nS*^_(6&vEURB0&sx`1@Io)~< zNOz@vjvC$h>1}a$r370S6y)rUos+Dz&mI(8j zxR7IkVbM2_cE#r^%)*Y2%u7BoO~j%CN9*JrK>Jz5t7r-^xR83w8?$BTQ`ECj{HwKc zwYsit?Wh+6xw!9+HFN~MdRY~><&yQQ`SP_IyD`dahN4iI=A_Ydk)ntif2zI7z98p&Q%cQ&naB3IOvLK zs*g2t$SO1S$4X8vVC?<&qOZ~^KvdWq>H|g2Y5B7{+*gCVF_ebcu>XcekCWiG2a)@3 z#srjeGv?gSC85^V&Gp}_jo=udPK%_tYNO6&e|7HA$L3f769qY<2WW#R}--^~JNR#z$Rbwg;`u?8NMVvQ;9F z1G^^IAj5kV-&RY^$ty3$Q`2WYqL_>x&#`YKlB9#@l$w)bl+m)s^7+-#$beFco^nI3 zb}|U%qm0DNm;nih9^;2x;s$p=UmVxO2TZT~;o_w}PpF#f-fE|cr2yEIbZ}pfE&NKd z`M~gj(LPpCZ0~*2i{5zlK66LKv)hhzVqLbM&=yaD6-+yNb~u)sJM0XLO8k8{d!ehd zA>Max!MYV90rTQ*kGO)$;!W|m8AAc&rkg$2FL93^4DjG;)U~8c0+-WLcPo@BS_j!3 zn|oWPP-}0}H!F~NSe%g4AssK7d{<>hZG^TW?nPn$U%bZPiH8h2oc1;iM4Xm16%xJ2 z#b$k?V^!8QE+~~AGvdX#1U0dxZbvEF?vly%y6=DdXjXu9@A&y8Sg!#ph*G*S>O#Y0 zxe29ujcvvAkWQEeM-fEK|8L46PesW4QT$_TOl=hGr6=7yj!l)bUwOHOs>{hsTiOF6 zNm++}|JPt`BS*7#W^s?x1u=e!)2;|{^FnTiT%{KKvT)eV-o0B45Qo*&3f9YD0#~t2ZtBq?wriKl??LrPnP==BTii} zPxlLyh8S4T5>K|EV%W4Y^2{E4Ufa`^nbAxM&QVW;tU>!3d;PYSDT7!u;e~%WlI1x@ z-7As6!9@M`+ay2t3fxHqHA(hWQT_Q#gJGHor`OL6x^Z3{PF~`w`U+p2V=AZ*m=32u zcGwx6qoF2VLA*6W>xg58 z2uLUL2v55);OQz^jLFKSy<&xZD+v8lJ5RXfXeO-Ynl&JgwM(mPxr`)jpf zs%zL9tK)5mn&On7MDL^SxxPX+-mD}!I$Jdgyy&~Wa;ejQacSvzHy$mw>&kXDG@27l zv)(?i7P4Eg6{GgC%3UMUWI>URZ&S&9`+>inYcRnBz<#^Sp>d*F=$hz<#h$C`pvH7G zhCm)O(OvvFrv{6Bwl!{ zS6F7bA+N5UpF1!-6Me9`JCxffYL$FVAazw4ej!{Zb+XO-O21S3`L~3jINt>8fEkNU z`n0Bwx91K&Xn)V8JW<=8Ej*GPm5zNL7tO3;8AvG0Q?{1*%Ih*x2K&`sVQU-xV_%JR z^XMenOdzbI5ret6)G13x>$-*Fe`>!vpkrMlYr|V{#BkxvqMYm7;}Xgip@9&j?gTj( z&=#4jg-U+^AjZ|!PE@lom^b*{Ln}9{2HSZ#D(0AOfwoM$%#gn?kyEED7ITGU0Vo)h z{JL(};`*h1w^8r`F1B7e-G|!ekTL)Z(t}sp05$sV}#xRpS zGf}8W0PM&UhXrA^@aHn+wbi%KX8L!}n_vMscyIDiUL3V6!9O3oR^MNI9LXw%A&J)L zc9S^TdsU=a@o7>bg8m&YXZ9@a+Uf#QN{aCP_{D3Wi$BEEXA7-$*hEiea5*~%HjHtY zEmsmhn))QB^Xe%}zH06}p-r?gZzeqMzF2OJ^=ql3wACySyF336YUi8rtm@=j_VZlu zNB4LVhtWs?;X)OYsnql}NO7%HFc!$biyNa_l@-{AQE zhPfxG*l=dF(cOs0dhbil)-_f-zuV~`d%vpM_z=UplGofZldC?MbDT`(O&&}4OE%L< zW*{zV%7;||qu4i53@O@Cs}~+MmGX_Jo(7e-Jk-SICRG7=`tg-5_a~eiW-3M9rY#4^EUlPdTZK$ zs%!|nH&Xxv!kJkmG2RVJm+eMg5Z+I-2SW-6syh{`YudX{(R z+qcyoiAY9<+{H4k%Ghoq^MmCcGcJ{4%KBAozclNg5`u*~!S1e*_;`kq!zJwB`Wt{> z4s88PsN>;E!D!a*ovW+@S?xAgAW5f%r>yO=PAw5ng(@m0Hln``ySjj{Z;a`zf33uh zrVYzStZR8H&{_HumrcE_T%Tj_gY4bDc&xe)`V1m0RIXl0e9jV>WPIO2-FT>|>1qXw z%DsSzFUMPJ;Ze*K(5eA!ny}ncBNIk)XG+C4ee`_{M;i=9gLeDLX=W3JBSp;PO@k*S zyvfVT?h9sB+@?OusAzH4;`Yn}Vulu-oVzEINsI*4vf;DK0^az%9yeDQ&>B1c;A)rX z9)r?^M1a7XVSRfxLk2_`W}tNt!RZF0qJvo(>Vt;qN@>Ylr5taAJTx27OU0x7{3eoO zpj}6{qo^S|iC%?H_O==txszcp67NUXxC(}dy)mjt%r$?L%w!Nk%07E2cj@@?M;vRi zVp>O^bX1$?2p|j?nJjcEHCx7kOxCTanEF1ePqLW#y8oSMt3rm0_uQp2H@oX}jeRsW?qTcuRUP-G z(#od{L1D{{dw@sM!l)v`#lU8FP5CAmFM5fz%Uw5-hy9uUr-w(mhC?BpqT+;#I{woO&=}k0M6smDQ}%l8K~yC))7~lY~!xL85M8F+rw0|t!S>ddO%^I zgu~J`JA|8TFe9jGunOGCTy!>;k?X+8nJQD&QQQ%F_oM~ku_qE9CdM%1^%JC>kuXwj z<7yOhrBKGi&X9`DSp0e$_k)!#VFFeIYbXP_4O8KL;2+$dhCL}&C2sqkUy=wFRz9eoM*fUhImoTGgL)b3w}_uv8Ue#&0H zBGb+cE(VfmFhTEbAq6;^R_n=bf<`^jeFhE8$3Z#C4eK@3D(%!8$s|&@>F- z7UkDx8Y6c1&DG*L1E$bR8>uHREG&yQ++m5xg81FhOjm+=KX00zZG)3)zi&h;b|WQd zOmtt#j&1ABmriwFh)bANE5NgwJ8P!ut@J0a9%f3B?vncbU2^q?{1#bBSd8?Y!-AKP zxux^u_yAaR&|QGmv{NGt=ySOMJ>e4Epz7Yw{%#idyVJ@1X7Mx|&Lg(+D!#(eXq;Rh z@jauNv_z~-@IvzMdxEPPhFen~Fzv}wVRNLUp8zS6pOF}u8z|x_-ETGO*a9be{w^Rx z$j4IU(NXhs+3<5czcDw~7PNJPxKcjEtw)i6H;Uf8?`i z1kQv#(WzA;WVVc}#q{|SO$*TGIy+M<)jPwAXLl_eEe*qc+<$d}smUy6KtVNdICIuF z(BOx*S}UUAK(%-e*e_4^UyT3Wxgx&I`S!k7ep!ACi2XiHNcj>~^*TXsDf9vPs5^b_M9y54R2+ zPx5o77p+|+vrzqv63uOriA+_w+B)y+{b4%i1#wo5-_Yr|7lHM0*Z~w)yk+6+QY1vyP)@nNSm# z1J+HNmP4+xCbge6E@QR;KI@Q?A(%(;O)_58n~;6;ba|>zYRVl+@Mcm=BJ|stZ(qe9 z2s$IL*SDT23JF!C(j2>zg@dBtfq%6OABK7<)z=Q$SR5i{`$S3{Ut#mOU??V`Uz!+( z9B7({l%7Ru=h!;1s5T@a9Uzdg9G&r6>kQRMLSmHVJd=ZZAPQXRH}2pHHeuCb=TRt= zz|m!3&_$mNB6t@byruxGBm#HG!w$&ABpyb|g{os3p-!15{?=3G-oLI+sb-G11-b+i zO0$ww{ergR^^pkEiCo>~N4na7>~-bb6GzY9-K%Sq$B#vgXD8*E(S~Vdl2Q%()SVMM z`Y$Q~D^&?Rc=L1B9RzJYKFZUpE?Bf9|3Dz@_sVcTb^riIcC<%$n~fLJCjB^pr-#P% zERCiDr7JDFn!6W33cmN-cotvd1OKClqOrnzyK|)*bJBv^$6baQb&$>1Knua#Q5a}y z0Y+lVE$0`jk0b>89Wdl6iEncunxps+YxmnN-TR0;v1I{*g`}nY0i1r6Lk-*o z>!-=d{9+c<<&Y!ppF3TX6litSV?I)dx)uGPquAe)kjqyFH=_e@y4f<(WVgCg@{$xC zY2lIGGnM+_1LqjZPTKPK*Tf_#FoCIBiYA8amVT0iil#DEWi?_+{h-7&Hh3GK;|auC zg6r25ZE?lW-FwKq)36e1pBDgjzStIMp&Q7w@P%c7XKGP^a}s~y5gFOf7ly?Rbsd@3 z*+N&fqZMYf$@%Sj$3cCMHtgs?*T6_;8BMkF9p{HNl*Rqj5itD-gK#qDU==^8xgbe) zw92Uzr2`Pl5>=pNwPXwz+J%|~A$FcIGgAGBbt~RA@0(GIwjAe*ln>cbfTw;$DHf8k z+@tF9!Y0gkHv6u_(Cit-e__LeZ+$tuxLAmXSuhj&01S|~Pp6nm1?e%L%{R)dSstl6nNhHp!b3;8&Y-!FNkR^bm4I{mwYT5 z@i#si<3aI91694HAIFXyrk=l==i-;f+hl;HXUvGF~yoU06;RemP{6=07Y zj(f~an%Cv(-y!0%JQhMK7hV6*^;L~tyZlZcd@f)?STE8JFgaspO3RFz0v=l(Bf}wX zWJ-lf&9p&GAWOk68FN0PCtkD#{>P2*!*1av98_V3SyC|#wQ7~#PE67QoY5sKm2mcd zia2lZcTe}R*;LAk-GE0*%m1{_hdGksuJMQ9qg3qR^QNhXsg2Y)K0ToC18|>U5AU}G@`E3j&3*(So6GQ|8tXPy-(4h$ zzHRRe2=Km!U2W!Y535Jo! zS6a+GrcB=I{EOOM`a#t#x$&MR0*`#=`Up+kHI1lAW83y*Nl-2PQBeFlw;!pGXt45wCUZud{lk2q3((@S$7+0w zPmX6i01XmNG-I()QoG}U#&-crjqw-t2xo^1+R`Eypp4xmv#H3Z@nW*dN^pC!rf2*x zUAf1w&hbXO<>V0!xmq{q-~Tu$ls0Qj43s~1$T$SwT1hJq$^kU(;hpB12&L~~e9 zOC^+hI^NUqKbW>WOBF@qrAV#Rz^v=so+=wyj+S(EGiMUnhq*Lf`eiINfE-VLR~u?D zcI3*3*6*}c;?l<>9Alc>9SQoh5|MOo&JI?ncd)lUz4i-oZLoUyC;XY7@j%jI3qJ$8 zI?JhsT7NeUq?D1o5E-%Lr_GnQharxHr+gxkU53ADgLP29_q_|mApE&T@Y&X$e6py> zmIRB{-0ZZgj>tC+5zLIgG?PS+tJ1Uf?XKoi2G#%vX?oH!=Eym96@K~aEW{h>KoOKJ zJZuJ@ZD_pCfjO?WAF}g#OqaN48Q{anJWjnhLU&$q+j(qge+b^ysyjZyIxTzjg~>(( zC@aN-+p0qH9DhEJm{)bt@q=gv9nspmBU?|jSc6g6l29AgD_N(5sJJ zIG(5&IEs9s|LNmsGQKdVm`gXAwtUs7vaH$gkSwb{(7aqNZ?9o16dh(`$;<>;B@^%b z{KDGq>D?lyl`d>{!JEsn9yfLv5xm0nSD4`S_Y3$=-A)AJbgEtMXwG$0e~zM}={E0; z$6*L(K!L^Sj6pbyg{s>2f~|9SPM)F5^fP>tF!rZIi_|^0`Ze9AVPu@s4weR)&&5AP ztapZz04X~lgl-C_*v0eQ+q;_~5%+mGQ&N(}6t2NjK&IEDv8DH{5-~{kqdQJ+)eJY9+oEKfheM*(;@xO9;v7ZWc;bCi~M5G*zfAnON+-UV4s!5?k%foXPT>( znYuepzgz8eXV(a;vpLK(lTQ#0ztmi)wY@n$-z*w3TOUz8KPno|n{FzfX6?}NrYQ?C zvRMYIgzNQ&$AQW2oE7IA13x~nP^JBP_OE_zC(8%HYrg^2sPovN~Xh%+N z&G2mpi`foOBgRUDO{JTw!=}O)L}4>usiaenFP^O*KP(#AoUR7HbGfpU+CMw>g<%x6 z_@`IrF=zS3()3No`4+Q(XZmI6S8$D%xaCKT?Zl~SJB!xoXxl*ffKKGqXR!w&=B+ zs+ekKzdlc)@;#ew=IW;Fp^`iPOLeFSvn+V@#7}Wsk0F3Rbf`N5Rd(aOYGGIs!x4bVzDqcn%sCb}H&&@xT;%kY`# zivJ#={`|>v(f1QO{2*JCHJNKo-iDykWe|M%FRIDl+ea@E$%!AtN&0>E{&R%herG|>S`&E`0TJQ#Jc!_<^`b=UHDM(D*)`>oG|~_X-M^Ugy7EBf zRRq*AP)Gg-P4?&e%=39Ms20lQ4CAIF4J5HA0!e8mX|cb792!6VXiZmMh;NF95Q_C5 zSj#&@^BPpe8U`@<1Y&X+Qqn)W_wQZ8`S;|LWh*zB9DDX82K>VHTERFC8!*9hwxIpN~V+4my_Ea$b zK;qpvVE@rkqy{|i>-q@@xC($lsv8cPE8jT^G#>mntIOzx%b+?E@Hj2Q&+<=6Ag#ZZ zJ{zP2o4TgOI{E~Wm{Ja)4F6D=Tn5dcq z-=t&z)B^ZMxi{Y|{FzSW>!~6RpiJA2i1OKHsoXn z%ECzFdF{pqxJkP4is5K@jH!VUnG!)7jc%y!M+?Zq_Ef)LEB;z+;rIQsXKW4|4^4Cr zSNk%*aSKLeQvOXLg6;NW<0sH7?%x$d0e!h7&?;eOGTWUaIRYKXVS62{e$blP;54RS zTCA8D9$CpgJ_0>-$wTtr|Jh%s2ZAtRH9M#|-cul8)PG510YGD*;JJFyCHFT5Eq80s z+04lF_Yg`XKNg^uj6GHR8T*2gNu4WZI8&OkM~}f{se^7q@O|;Yu)-F)J|o6Mg+ zV=v?fC~)WKrWxJ>a7=`NjKFswa{YEB{BImb?XBa0n)%23d>lYbO-sv>ThLR09lIgm zVfMue#N8@KWgT7}Pw3bmjGBB7)_e;O9n;^S&IINJ5p`3@TM(c^_Pukcy4*&JqvsnO`n#>1qSMQMIx+x>O2tPo;YbW(7h zeKosLaH0lfc1%Fq#E1t3Xw`V5whnZ&0IjH}zuQvV?J;cc+x)EJ_0a_376x#OTmg8U zo}(9hYDWix*Fq*E85#D|O|(O@bn9qu*PE}9?csC$($DR~m^G_k@d+7F*ME-!Dm_ZK zs(w+eU+{mk{J*Rwn>EJI9cix>37Ylz}5>%+2s z^7ote@eZ~%KE@QaLW!O;Awc$OcFiCKEd5ta4{{L{aAGL%AB-X1^~A2WS)!@1m>BxH z{4{GrNyN@`yh;}H+~2VMZ;F0@y(lLFsPfnXP?}-iw>MxY>rnv(7vXQKLcVr;FppwT za1p&GDIbxLNGEVwWt^emsX4M5W`W^>D=CiK>LZ{;{(jY(_}*`;@u#_ylg|Tet5!sX z+018fnvF1baRXt8*I)*YMz7x(#kaQeQ6CYsPH$lv-Cf^F9@h|7wzJ==JcmoT-X2D#Gw@0Fw`1$|oEk);SZyaZ zqTejzPc!;}|1u9RIf^f318H)(%o~JgAYJ*4^wUt*<^s|;Jh&|ggi2P|$2`+BMxQCh^5dNS zix2-#l>F=0UcCj+Or2CLTr$YE3RL}lF1UaHk%k%9;>7!uB8vxbxv{^i68!!g8hCM`agb>1peazl{XA5X&1ls z*~E?huE2ac-LOEYAR~c%DXM7Ox1~hx)%*Z*@kgQ$-%|txkdupJ;oyphcz?Vr-^-oM zoro&?_&ND^s;;;13X`-=D>JKTw|o0f7@IrX%lCYgN5u3DsxR$Ug{55NMX;d6wHP;f=w z*QVj5=8AkPed6~&c;!0?9(TQkJsxMGV)*?c1rP8QP3V8L>~v`ei2mJce$q?jC>R-D zFk+?{E822Q0LXuZg$t(;8$H@X4>`9{%e-15@bEzSErY(nWWKi^*Hq zWZuA5(OWof^n=d7?(FR|&Eu1E{leFc2MfCc-uY?GBOD;}`ES;B$Ll5iE9>lF?MXJ7 zATY_+DQ-4$UXF%+3jg0<6MX6^5(>tdXe|nTR!UAZa)_mYJ;0NYNK8m1m;5zQ@hqjz_L3UIqo2Et7t!$y;f37ai z^$+IyUJ{!wWPVULemMPW~aaGSBei z&71Ip<--pH{ElID%xI6DKD1CdFBL$R_k=ONGIQ!Avy!iZVJbwNc$cpm_l}mn#>B+1 z8f1M(!BHh2gZV6y`fq<``4VWR6b&mIFVv#FLWVLm4a6}>GxO;5^RD*NZ4n3#L?&3R zFZAU#En&QLX={-0iTg+YN2ldAjDpcHQ3o(9k<-qYuKQ%pi)rXN7C5ODz?ZG*nKMh& zD4VsAh*EOlG$znQP}i0_@T!&Q`Bn8?e8Px?5^fXP!OvNa!BChrCKfAoJ!i*mDg@jY z74M4mmL+P+$D$qwxcWc*!tZE>6Nhn#(wy>KhooCY0U_s-G*XFR(#p+CN)wE+C3e|N zgd0q{Q}T(p%f_Aj62Z1-CKICO!by3L_z&&{CF4glDKQUx@W6I!Zh1Lmm!n%_rRggn z3Px0<`956I`lpd97OpzX{l>?Q^9q@JwA`f>p5%HO`h@>%!rSj)oOicN<`@#W6vofv zqDzo)?s0yTKC|7>PzLA+p;Av+U+xf?O3Jyo+jDJ4VlQWgPIPDqK15TjIa!b76cmI_ zN<}=t?e3utVUaRYH89lhv^HM*!E3PFaMBxiNXZq69TWJP2Vq^nN8yU!8l%rR8u6t= zh{Pg41D;SNEa&=gq4VY5j<v|g|NF62{M_;!)F8&F|Pky@!glzWJ^*7C8b7~c) zLsHBQ={B>h_8L6ZM%Fjq)^Zu6%*f!suo*8GI+N3Z_UfEEi!{TUDN8erM%&`sFxl{l zIVTMa!L3I%C9PxJcKwL{wkrzqgMEK3!ySPOgt*!_)cZ-el9V&MN}D%looE<+@y9`M z8M|?UtT(tJ^Kv-I*#8iTUacWY@N$hV1s)%CR8db1%ku3N&1TW!%@ z3XpZwrcZE*#fhIuj~p!l|(T=_!1cWw-Iht4gA0MLNTIBxtFC^s_;Z=7l|)n?t9}LFa7E zoFzyx^3={}u!-rf%wC}?V2iI3L~iT~nNsU-OQC!?AT&7VXBa>8+fV#FFPER!?)DFU zlAIW!hLkv0zTlgtr-~@I^(tSEa>Eb%W%cmnmF1qRqH9XK7;}0AtsHOh1Z?`B2A#^0 zrcn>@SaizXHYQ_3ai=$7=8-WsM6-m$1jtb_L1EeCGZT!oGfGUfLUDEAa@n(?@7?k zkkDP&`iNM)#5SY;U^?ODMU0L#mwu8`o{I9xv>oPDC!+QV3_><#m{1V(?Q3N^ID^UE zr*Ff0bUc~%qB&93SG?$w+(f@B_B+eN;)3G!rCCaq3y|nFn5lIzC~7$Qq94lhy0WnG>{*$!(FUveDasj4RXbV4AtL- z64|~Sk9juj?~Fv{sW`8ew_?onpmvfl`IEYRiDXb^HdeGsQt{q!FKo@A=~b?fz_saH z8Msm8u;`8v?)4}%otf4cxGFOlp|QFM6TH#{td3nR&W0vOlj5?~yyW$VC%g)c^@MCp zw#<%a*B9GnjgBm zfI=j5W&mwTzykzjgK;n()q03xs#rH|G*3eeOcvVI+NBITjZw;d_l0IWRV__Qz{tJ{ zCVeC1@f?;{vr@Zh=dje_R`l?=ufeFPvsQcXkv)t_yIw@wV;lW!xe8{`?CqyeV{5SM zT3h9;vT4UK$C^Xc|6**{cF_5LpX;t5nM;$X!{%uCVL$hXhN!R)OT)n@$N;lerDksI zuC7nwMgr^;|MF;rY_RLj&Wq9G3Qkyf&5FyKU4!kiMCsDWipw`A&0Zs++5vKYkC#oz z=bFwVvsLFBAmkyXuBx^2byh(ulgyi-m9~*JR>u(Txx;RE4(bcODuM9^Fqp!2=xo)c z?06RTd?09jML^ro!~dXnw|Bpjlqs(lu80gLbY|7NJnM7If_cFCt#ax-A;;#CS9*st zk2kBh;>(-Giyi09)uL$z|KFrTQ5f|ma@ zvhk$+d?;gp+30rm;B0MV;6p!|T^~fZkx{*VQgg<3uFmg%qAd5m)9#tx1Vj)D4?kZ? z+&og0vBj4xZBCJz-IYf+MEHmN;1&5ZFHH;#sFS0piH#JJqAJ#fl33GOSg^CJ@aO}w zqXK$DQVBLUHvP0&HV^kvQ-AjE2;Bk($+14Kv~0irw(G6s()ovY}Wa`K~?YUpBY2cA+0tlPQ)Q%o*Y0VteqW|KL9U9oA>1*m0bf3zI5f3tyrYOr2IQ$mO`o?k1{h~k{ zrB&uaumY=4x^A<63P@zeWRWG4<0gLh_PnZ^bB2}6u(c!tH`9;MdK_ zJ1kchN5Rwn_ZeJH8YETn-#uoBC30N^kEDZ_oK<@kGP4_CdDJozhL0*Yxr|I^|54L@ zd3m_O2u5L0g*;k3wT8U2@9j;9w=qX{S8DQDUA9t+N-w!r z4e)K_)Lhq|>@a^0HjCBWE4~oXX!*=(TwN0Otd7K7?dATrA$QXlmvf!^&BDz@;}+jU zecwmWi=DZr_oST6YVn85wa7M3cE0Pj2=H4SdlT=t@g{ZIG4?~IqABBKw@c;gEJtBU zIV)2+1tli$*~Y&wM9o-jQ@C!;(T&rm3ZYsM41D7DQBi6I3oVL7GwgnU-RA2Vzxaw; z{>89Sorg}YD$B#ubvKf)Q(}XM_3zF0YrD&LMlz)i5Gq^6_>_JTSU1-gb=k2r>Tw>{ zjs;JkXB9eC)qL8Gy_1C@G|+7xb=A$ml(Fx(>bz`yLuD6Y?~eWwlh7sE?Rr^tXGMM~ zE7_%VOAjF$Gt6}~fsBPqX%>c3<=2w!b3t>tt3>$T&A69~g=<5D-BiH`%3lYGx_1KO zG;Nfr-laU(=CVB<%yyVvK8DN+y$P%4G_8@LvTJZ?aDvw{8~x)YLR^bn)khe@kw-PX z5yqR(dG`GvvjFpIfMh4OR9pMZMgK$eeSi8`>At3v5W-nJZ~JDm%=V|yag0?`b!`{+ zXYo&7S}-~J5WP1Qa7*kx&npIcw_N4pzXHqsp7O5QNW0!scyVt33wh*xaGA1CwsZ>5x)_$IBjVNE-cczR zO*XUI!ZIOvi*G8fH{;?UB|5J@Qrp^+ZF}6WRDea}Cqrz>X+>2*vpYc~t zy-`q9Kx7;wy#GlC>he>T)zBr+_?3hPr44cwg$%>S^>Ze~>QMDAd>o3}j1lxqtx=LMoQK69ArFLIggR=3VyyNd|pI*Kn(bDFpbm0an#Ur8%=anJGQyC$FQ zzCbrJ`SF8f*6jW2rb~tCINMY2WqEi(|HR%G72^wJ&L1hwQQ?^USO!)Tg7AFSU(+Y5 zlW&WnNIm!7?A9D)X3%@i7fSa4;L;)*fo3Walbios$(~$gQJtAr#-{8tYJS*!G${xma1^ToIR&xUKE5o)TWSs zF`B4IHg)McP7E?n>v8bhxf)sjgpp}bwzQoY{!y=XfS|55$^BeRxi=5ym^t=@Xs zvOqn+L+sMW6=o7UC_uL5A_Q~h@ArYD;}+z@F~@nKc2aP)4HnhGa&(OKmljvQI+G1W zR7T9ypyiXxH_%~M=S51)`}f&yv}=`k=IkX$;WF^DkeV#$g$$;razz9irM$O*kC{VN5Z+c+rA-x!OPMWc;-Klb{d3%3Oi)}Au)AakV z<{^Db$G{|=n^=f%kTibA31^;IRljYy3GM*K6my+L!yu`SAhs5zmY7fAHt#I41KIlJ zcbGIh4x51s2d7`^gi~*DaG~8LYuMV*KcUvNgwjVqvYfrLUGh5A#bcvPZ?W3Heoy9u z0qdeC*;{t5$iNFI6Xw!C+=T8Ri2vtG;Q@9Ej=LA%G-#57GcAy6-aS3oDew^gN> zbY!CbmT;6w{Ju%?s%hEfrVg49U#@-8ROgVP4p03}Q^>G^p04=Mg!Rj*$~WB3g=SIW zbZ_A~(7=X$=o{x<{}4SMzHqH7CfXQcH6h1*twM20QA=xaNZyQDo=8!=^;f1CM_0!i z+$e(>Fnjm7R$4px*s=!&BgYNp)9^!#sga3p1q%XWnEOen5|;Z>m(k0%@;P0GS$3|} zyI42RcZRyOHwk%~)FL{D&r9c-)9lYUVeTwd$F+)L25=~0*Ipg6(^ARxWVdCVCPN2r z{J2`V2Hm!cIPx|^#(T4nO@a4)c=}cdY&9Hfl4JH#IM|-u^`-bM%X;2~)G26=uOFl~v25g{6ALdB<4nYgfJG57v!zL>wIk=C8e=(KRW^T59)v zr`=;5E8b;D7_dBoXRH_Ql(95MVyIRHnJUv{GqyYTPri16wbtG5iOWi+U;XCbG75iF zboIrR^b5<4#vuLIBzQS3t;?!a)x^N}i=AR&j1vUI>5%V^16g;QVziyLj$DnALG1Mj zyMC&;8XLG<+GKuha#Jz7JZ%u?v1-ow^}Ige;E0W7Pq%6UMtX&QfO)=ERUo%sR*`_( zKDih0N&TpC5O3DJShP;Nwq%L@8k&Ce(3Vr?$o0FB6p`<6bj5Vsu9raAR)SsL`z=^0UyOxHeKu6g4fraq{2 zUcAB-cv*1t5S}@z;oTDy zY{uiNP+T11?olg|++8JgOW@WVs@J^j+F=$TkbAECz1fB|!_HGJcN@cSvf5MZcOgvo z?)_8A{M9~^?F+7>X$$3am1A$Y!Ce}*(GTzJDWBw)M4cty=xk^!=UVjR_g%8;lm|VB zh*NXfd(L#*wvqZt6F_ge1z+w9W(KBFA%j9zi!0HGHnSo0(zQaV1nh$y5@kvzEF_1R z=wDBR8VH+H^hOLETZb_)Ofr%ksZ(&@UN1D>yyRnAVAhE|$>7tX`$tM3-5V~iV+ra{P#>VdgkB&rTo z!UX&Zc2BDyH|!0Sb8OC+#y9lxBhxR#D;>Z4s62q68z=rO$R0T^A9fhMY8CMzxn6*C zdpf0%YwSamXU1(8&Q?VV9Q9*%UfPYDTg^3L3M%ca$+H=M_bM?f+{HotKmtxwYJps} zaOs4AmM6a4CH6~%rG=(NTV$j&^bb@tVu z*VUq9P`Vd6R0i2XXiX|{Rex~8&CQ#mn>vl5?A4uxi(8HrM->nxHs$*icD<<3a%+7-rj%2bhOU)D+c z$+{0=kZJZ=;T2x8(dCpT-U8$u0*dQG_)CY-xKn0Y+XLix(>g69-Thff_;EI)xj)>5Hx+7Z0#SDyBoDsks1>FkAg|L(h22A6(i%+n ztEv^yIN}^fFPOe+yXYM~oZT&ie{+OpHtAmrX`BuhhmgFP<)z9Mea)*QSO?!=fO&92 z6PB&w3fQ`LqNO|k2$XfJBR_(!w9p@nuDS43!_#Guk^EmC6NPW^Mn%&O?M+4~QVI=! zhu?#{Q;mUU(GFZ>*@*iejo-}+*yB~{`-om0LMYakrZ(7RG|ST5GnDmF&VnV|Q6BCiVrk^$2 zizOmHcUYh?agiM=j({p?Nb+pXd-F_v{}BO3(Fvg5)|x+GFm2Dv$z@cyKCtw&lQS?a zU3d&N%8k<8DGB3Q)UmxN(3(vZ4QVo?_weV!ZJN&YvOs;MfjT&jU>`6>AvW4S9Q%aF z&A0x_Qs@ble2k&X6SxlSq7JdF-I`&;UK@F2V|dEwn;|~_nf<+Igv>5ZAB4;>Yg3zA zAd8fscDb!CdXmB_aC5-04lVl5ko#R?`$LgC&1FPE`NZDj@;0wXzY!=*H|&H`u)0xN za&k`-4n%e>rH=0*b1_?uX)>F*>5lST2Xbr|1|e$ILKtC|gLoKZ}6mg$go z>z(1F`;l1?XPigFvo&pvKjJ?9Dx#lB>W(Yg;^o^6Mh{vzH}>iyQ9P)NE7_UlIp&<3 zMaV{gCkb9f=uIQh;k&c90!IDh%K=}80rOf^p*f4{tS)nD%kD|#7vQmUZPu`DM z81-E%Tdrw7avR07DIa?dd19%a?{ZZDsaKnh4|C*vVrC3mpo!zPYOH$KYC@=B=l>yD zXon-v1C#B^M70_Ntq2F>@M3gb^1G!tx1_oqmwM2x2q5~hWz(5>a9jm*6-9fXwSi#a zw>mt&UGH!dHbeN{B${7=ob~G(;d-qs|Dk!hAN3WJ+jPASqTi`K6bTJqV&;UzVU)-l zbXCto#E%oZqo2)X5oI4Y39dQrT!`m313wOTS~ev3M_aZ<$RHt>$c#L^o}sCGjXk#(54+E(tEo{IB zOWe`lMgTfL7(r(7C4~jg!s4gp+(z{S+bcCBudF6eWIep!E+AGXO(S^Qc4iH6k218T zqoZ38jAAIP5g6W(k`vXtHD)Vd%$5dKm56Ck5heF6P``sZbohgJRb%J{562~RdDog! zn@U>Q70L{UqH(r(+RsKUt(Z9siVLt1kqTz7uDOlj!97XzXkjHFR%|GmHxeTp!u3bM9GM?ccrFX1I3&eO!_2v0E|2OoHXNk;*a4 zw-8O8xGFW+sNYuyiX@^M4~7>&)Tq$jNtW!WqeK8BD!Vu#`_Vd#?2hk0B)W1 zpO&qW`7YV=<8nT$3_Da&8`n&^2(6Zei5VV!k?g=zwr*fSsdfKkcVxsY>ZbO>E`D1hcyHoP5S)Tc`*?_vWct39A&V)YgX+Z1rPe?Z?#U=p5w~LC!Y1_|oe38q(gf zyUy;&*menk!i!XC>1eI;uOi(-JQ0T0#=pl87)ZYrzn&-%*}OZUdoZB~&r%7;4EgpX zTh+EYa?){sJY(5!A9B&F?LMDJp`r;Ssf#Ng;!jNiGc+a=9$dgE|&lke&+r5OdxDPsJ~`lVyvZ=e98J6YPiQwx>&AlbRZ}hWXC;vILk* zE1@(T5i~QI$JVuG80Z}aJCOcUMlMDI_&?=8GCv1NI9 z7d+|ypA%j*2?8e9{1VRWeT;{7w^1!@zGXV2tVyq{YaEOfKfHl!#eH5fC6^x^eXez9 zL;~ROp;n$v zBhwgRXvG+gmD6(ldCMf658Ep8UHhDG^K**@R3YFKl!?;iqhS$F%*dxiwJ;My-m`9! zXRDMN$`{u;Z-ZT_7AM4UsOG3m(=Ii5<5#^}0V$L70DPv$v*pnX;7w}C%a7i{X3Lc5 zSd_bQ3A@eO)k{aRQ;g+49n4-ZWL!mpkM9#p{O#Vk0PIZQk(r@ z(5z37#E8i&Cl#%4u9h`A^L8Y-?MIC*x#AD>Dw&%m}6kW+uwHk7D`icqnhPgmQBfe6f$-W zdqmwya?u^pHaY7oG>JDIpa@IP!3X;c9i%0v^nvh%HwVd%l)oEC`DzfYbC2OY+XGuk zL=j2`pcL!&yId6*c)s~-N@UF5+3=tkY{GnKjB*emF`p(GH^eY?K10zP8i4givjpTi z##G+DBD#%f372uaS*3I^>MCc2Gc0cO*{r(7Gcft;aVtqJyMKo)C5JvcZGmS=Hs2=KkoY+iyZC>qXhhxl{IF+ zdl%rjJ<}ZmapJRbtVzJig^~z?xT=%AeXjyY_jK_2qUZ+S-sr{IaM*HpWj`E#=64hzuYXiIz5I?5tJZ0E5T4ySpJu!0 ztr|Z8M%X;eKi_B0|E)&YB$_wUY~d^cwY=_ILUb_yen%;@$K3ps`MIkq0+_C2<+DSx zr>1HXrO#)Zv*uPEa-p?R*BOV|lG|5HTFd4RMhSGC*N{)~0XP3;C8vX=jssph8722W zqm;mJUUL`=n%2ha<&g&G@fezrqoZLr6Mh$Hu^iv%Ob;HlN~oDE-M1X+tNer~5)Nb> z5jpCug>s-wW*wFM1W&U;rM|TY*>B>zlsu<{&M_9db3WwTkMfPeP`hp}VX>=zU{ZTa zdtn2kQlh({IZ8u8R;01d)+$b^ROW~Hn3w`HW~hF3WEnfGN>i49e?h$#AK~XoDx1^; zx~jU$d9CFP?;OQixy}PNs78DEtgXc*I~bRmLq8-e2O(29RJ@xg zpY}M!h!3r*K{GAamUoHK&?&yYKC!KFD>l3(KanAaLNn&36uN|*0Q<>%EIY_>y&yCX~VPGB9=iF8G%Eirsc)esPx}}vG zqI+ND8%*gPuxZkc)|$PAf;WhBRI}$CTO~?~X_Ps_U zgB|vJkuyD4Q%R!KbX-{!B`sQ|eR6_e7I$JYDcYl$qVX*Xc9tUbty_4FOW?J&n19b0 zf5B-fpXvF4AGxq_+U`nSYkf$?Y4mh8|6Dy=-$&R8qO7xNuG(rzl{rzZs+uQ}oJ~T05gJxP7x;a^=MPm3Razvg$_A(Iu$h-##65W&;OKr%X7wII`w$C zDB@Md9Ol@n*AzSK&L0uuXlvGQ0?bY1m24#S72R^~^d*IF@7Qb|GCbl)%h;^%U8~Sq z08wVt?Q*ksU3OnF^G%$@w!joS3S(Flocq37tVXp7rJZcyCgk^g0OMSRW`Nq$lWf!e(q^?&rL!eX}*&mN>;_^yzS-JYmD?ZSd2YNn#eZ@_djMZ zP}KGmY>mCc-}HW!Xw(%ITZ3O#5t%;|${?00}u=&vd&*{pOw_^=g8Ynk`*zthRkanT30dXLQ(# z^X_>>ZUNnmV;&ycD&qjARxFU(%HLb>pVorXab><^RC`N2;a{O1nYP(bmdlEH_nS3f z!CNdU?QIDN?!vG6ZLW?hVR1b@zqdAe7gR~q1VT<LAK^(QX6U?jaPo1EVD?9Du zj-g=g{YsX$i-exZU`h;o!a8Xs{R)rKgtb=%EF(YR3*p3&I&hf4j2PLN`*?Ktb+{-S zrCTq^5sbQ1fOm~=+W;pj@i;$Iuj6QAgXb7#Q5q4%R?GiESN&`h!>Cc{v9tt$7~Us6 zRj4JbXh-dZjm`mujRo~_&SMXzoTw6)3tVZN$j@1}THojyOnh!$7#zmXtbDT{Pup3N z=@P_xC;iF;Vl3Vt0=>t~Q!{+wCr#vyYFv%CS{sy3`Ic{1AH4cF1fMH!*gw*u5mD{LUHgL)ic4)zt>cC1_MHz)q&jH=e3K#YA4Qf7ST0<$unnXl!W*=s^ z^QKv9nTQ*iL}$4E;7B$lnT6OKbYyDVgj2@Mgj$Z*tLcKWrj;qnJx$)d54>LRAlEpM z0o&xB{CXPvl7S;awi+4&{F};j($mdg2%iYTyPXuBuo-?BzZ^&eF*T{7F`Furn6cr1 zbS05nrl%PTNb{Tn-H*vV(uJY%^;=vb~c32F#I%uv_`qUlNBKVn=n+}^}w|M1q* z+IW?v+nF4nH$!Lqy51AX{P%1Q%!}lsM)JTfYQ@#>sCvV^aY#_F!WNe+C_{YVS1W;>Z{0KBBfS2vCqtv;ssS2@hlf)xcFUb`RfeFMP!f)zQ_J@5{{_F& zj9hfbC2bc-P`pUvJ?6)Q`ufX|^v{eo?)j)DCb}9sYZOT@geRtIU9XwV^Y7c?2p3`g z^rUoSLs#pN%Ii2S^9plQ z_x{W6Il97D5PCd0$i+L*w6VHoaYfiq7>g^Zr2-cJC+WqmQLD<(yZK?gXkn`{U2Xb` zPQXn<#+B*g1MxLdO$m=TIG?v29Sq>l_yOtprR=p`E_;l*8SWX7o{79xQIJQK+OVWZ zv}~u~vilCr_!8@$qE+XNC@^0dCAc?U){qy&TK^+OfGB_F{NQ+{q;qJzr2vyiq@p(r z5XLoUF7%bY_?2_o(T9HLZa<1|)YTRRl&DV*1-Xor-P_*D4eKPWv&v!}an5Wh3$B`u z23~_@09{Q;YVb+rggI@$g`*8uH?haDdoU>9Qpe(6c3E;MDcNb7z!m9Do5gT{w@6d+q30RpMnOG!$(vUgV!RLOi;np%G_vCk z8$pew$dF@u3QNFoT<=pqRi`yhhBFh()fDP?4Xs;tnf2C~Sqxx<0n~hY*)0inzUC&); z*i58lYzGU?;PllEq18pT>CpKQZZ5+liK`sL_UjA06lIV~`x-%6j?Fv7`>&*VyPL%~pahNa`7;@9GABE=16N#J7+Rr&A*uzoh`){RD~ zH>%dDkp&fSKmq!8*e!=>cP3Uw>vJK8Tc7rO!k&G4g*oLqkZVD?|pU=&|A7py!d{Y&z$W`cB4V5)B zHr{+Ivop9Jq*(pDY5QP=TrTIGtT0IaGi^yT-Jrb%Q7pE`1js%72~!AJ#rRNF?hd36 zo!LUL8B4R*{@`wA%#hZ>TQF|V8E;RFc$=wKow2sA-q@f3YYgf0gACC-8=6L-I(r8` zEw%V@xBE@r+MAF^k$?6AC|n;xA(Z9X3-wueae5HBs-+fvlmASa?`)y8<+00&1l68W zvd}Z6?^D-EBG{)~)L64pp+0O6BR$6MNw6tZH#oK4?j1q~9PVxlpXOsLQ%#I&4rbo% zV(P^=nF(*C9oO7aA%HTS+Pg;Te(&n5iTNNzNpN6QWf5gq3u;%(DTP=-{yQ_bS!Y{= z*r=|)nck$C(1L8dGCxw->vh1#Wh}nIq(a_(e{wXw6&7!7u&^=7C6=-AS~aeQVdL8g zg1R|#|B+m>##rl=YvQ{w;k>(mGoO-A0EMkk_N8dpW6-wh9NV9k3kYvk>rT0!UoA90 z5~~g1JOt6g@w278QQP8`HrXvqZevG-F^d@DJ(7WQTD1cDc9|BT+FqOJL|EG!ofn@9 ztoSFlK!qeIva;wE$}Bf;Cbo-U9V<^>AuMGgN+= z*mW;#%F$-rVy#sX2fuH55}vV0bu5i$8b%po)Dx}i9^bdsw6jQ;<{S&tyg%x=Rj&_9 zxVJrGE7-gBFmH5%0y*bR-)M@)7{VK_6ZT9iuk1i(-*Hk26U*dbddx~nZ#}_&ocE?h zyp>-cjcZQhXhq&8j7x5sZO<_^`H=BUPl&zoWGA-nxrds$c&8=78ZRAA<1Lp!{poC% zz0GCcIeQ{^I9ErV*l9bD6e~?WG=_I~A|Nd4$ex%O@M3MBPj%#(&+h#lO9Wo{5cmkY z6kx7Kg^Lwr)3fE^p*qjqMFtMz>G8N~6vY9}SZ)YozpAh1gxUz{XayB3>ugP%qS4yt z=KCCJ-m@eK6BR=A^0i9xqUGDHFXT{o*fvhRB()R;Fr*S0XHLO#?)( zXO`mLBreqvZ%;{;pudPgznSAWL%e?(ZtA$fobzT)Cg2O1e`ww8+u>t#jw2WvSS)^J z4oIPCbI%xR-m?fEK7$-j*g#nVJczg;>KQy}Z>ia(yX~{pOA@kCM_P-GJn+IMjBz0a zeM8!K6g)xTjXC=iB0AM-&jxoF(b6I0bjvDr*t4~8w%B|9ap;`cp;3%D^!ne@LlMZ5 z6dZe-#J>3`hgTnG<2HD&_p$JH2DDV0PYO-+xb`rzg{d zl5-c-bFwFVOP}s;jiw`^zk#*V$5YzHK%gAKa`SO>9&UX@{QFX;a8N}Z|1Fbv0^cvV z&Ryndr73K(AB&#pl!;;FFfn5=b@y6fc|gg|p=DtnBxB&FkadgW^$bJ_bL@|I?3Hg! z($g*0+TF}V+CDcs?w8{o%@wg@KLRXW zn%uddC~Z-hZ}4`in22h5chqB7A7qlNKc|yzRw3HrrTAHV^DSIjuXegYHgnNf5i96 z;CswxC@;o-wp6>dSfS(Sa(q3% z{$4ytRmbBU#<6ZDe<<)^H9r7l5C*d!MZ+8%L<$ePxCf(i3+uG8c%C+98En2hc7LOC zWxZgF^!%i~aN)u3WRK)XlAsngXJ6S%`%Mj_cd9ihwGpm=MoxysHRX1V6u^5uBBotF zN14#3*}%#djm@olP`?!39D+q#z}{U?THb*mT{PK;;9sDv432fSE04z%<)b%w>pS-~ zO`@U2ub9q{%XywP5by&+VutqUw0bFru5Jjrj(%2RjKPK|_&POVf8o+?67Xm<39cO; zz!)mU*dRdr9>15dDs5(T96YBJt@&!}BP>IxOGXgq8g+d|#^2PTeN)RvJYS1794CZ- zsEc+dCL5G|*2ZRCYowo6DsHEI4JgvN4W`d-nIv zxCT$6zHLeLU~k=J-JHGEH)L;Q;3ope-GnH;_a-Z%iAsXqY*4YrW50L!Lj@L|zTX^K zhC(+1#Vbcuw8-R#nmfUGRgM|17ady&FU04F&o9Y5iX~Q7$7IGLeMI}6T}g{|U>bKL zY6p}^)OX_48>R0OJ!_9%=Z>tnJpwOi3X3XVKRBv3`vhI6$t~PV2-2gLj>=4QpQ@cc zX+#;Ljee!M@%ZKh%Lq}W=fvU}JWhIQ>%htFZ*4;wl{~1r8jyT9F~&XofVwu;vbD^W zd85L7^Q~Je$>XRT9%mf-&Bn ziv86uH)6ltWrWs98+M(2;U2AVFm)Bg%0DUh(HcEnkC0I8eMxWM6Z$ER)2@Egvtk^k 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�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 - - - - - - - - - - - - - - - - - - - - - - - API Quickstart - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-
- -
- - - - - - - - -
- - -
- -
- - - - - - -
-
- - - -
-
-
- - - - - -
-
-
- - - - - - - -
-
- - - - - - - - - - - - -

API Quickstart

-

Introduction

-

This document details how to setup a local reference architecture, and design and deploy an API. This will show the following API management features in a kube native environment using Kuadrant and other open source tools:

-
    -
  • API design
  • -
  • API security and access control
  • -
  • API monitoring
  • -
  • Traffic management and scalability
  • -
-

The sections in this document are grouped by the persona that is typically associated with the steps in that section. The 3 personas are:

-
    -
  • The platform engineer, who provides and maintains a platform for application developers,
  • -
  • the application developer, who designs, builds and maintains applications and APIs,
  • -
  • and the api consumer, who makes API calls to the API
  • -
- - -

Pre-requisities

-
    -
  • docker: https://www.docker.com/products/docker-desktop/
  • -
  • kind: https://kind.sigs.k8s.io/
  • -
  • kubectl: https://kubernetes.io/docs/reference/kubectl/
  • -
  • kustomize: https://kustomize.io/
  • -
  • helm: https://helm.sh/docs/intro/install/
  • -
  • operator-sdk: https://sdk.operatorframework.io/docs/installation/
  • -
  • An AWS account with a Secret Access Key and Access Key ID. You will also need to a Route 53 zone.
  • -
-

(Platform engineer) Platform Setup

-

Export the following env vars:

-
export KUADRANT_AWS_ACCESS_KEY_ID=<key_id>
-export KUADRANT_AWS_SECRET_ACCESS_KEY=<secret>
-export KUADRANT_AWS_REGION=<region>
-export KUADRANT_AWS_DNS_PUBLIC_ZONE_ID=<zone>
-export KUADRANT_ZONE_ROOT_DOMAIN=<domain>
-
-

Clone the api-quickstart repo and run the quickstart script:

-
git clone git@github.com:Kuadrant/api-quickstart.git && cd api-quickstart
-./quickstart.sh
-
-

This will take several minutes as 3 local kind clusters are started and configured in a hub and spoke architecture. -The following components will be installed on the clusters:

- -

Verify the Gateway and configuration

-

View the ManagedZone, Gateway and TLSPolicy. The ManagedZone and TLSPolicy should have a Ready status of true. The Gateway should have a Programmed status of True.

-
kubectl --context kind-api-control-plane get managedzone,tlspolicy,gateway -n multi-cluster-gateways
-
-

Guard Rails: Constraint warnings about missing policies ( DNS, TLS)

-

Running the quick start script above will bring up Gatekeeper and the following constraints:

-
    -
  • Gateways must have a TLSPolicy targeting them
  • -
  • Gateways must have a DNSPolicy targeting them
  • -
-

To view the above constraints in kubernetes, run this command: -

kubectl --context kind-api-control-plane get constraints
-

-
-

Info

-

Since a gateway has been created automatically, along with a TLSPolicy, the violation for a missing DNSPolicy will be active until one is created.

-
-

Grafana dashboard view

-

To get a top level view of the constraints in violation, the Stitch: Platform Engineer Dashboard can be used. This can be accessed by at https://grafana.172.31.0.2.nip.io

-

Grafana has a default username and password of admin. -You can find the Stitch: Platform Engineer Dashboard dashboard in the Default folder.

-

Create the missing DNSPolicy

-

Create a DNSPolicy that targets the Gateway with the following command:

-
kubectl --context kind-api-control-plane apply -f - <<EOF
-apiVersion: kuadrant.io/v1alpha1
-kind: DNSPolicy
-metadata:
-  name: prod-web
-  namespace: multi-cluster-gateways
-spec:
-  targetRef:
-    name: prod-web
-    group: gateway.networking.k8s.io
-    kind: Gateway
-  loadBalancing:
-    geo:
-      defaultGeo: EU
-EOF
-
-

Platform Overview

-

Since we have created all the policies that Gatekeeper had the guardrails around, you should no longer see any constraints in violation. This can be seen back in the Stitch: Platform Engineer Dashboard in Grafana at https://grafana.172.31.0.2.nip.io

-

(Application developer) App setup

-

API Design

-

Fork and/or clone the Petstore App at https://github.com/Kuadrant/api-petstore

-
git clone git@github.com:kuadrant/api-petstore && cd api-petstore
-# Or if you forked the repository:
-# git clone git@github.com:<your_github_username>/api-petstore && cd api-petstore
-
-

Then deploy it to the first workload cluster:

-
kustomize build ./resources/ | envsubst | kubectl --context kind-api-workload-1 apply -f-
-
-

This will deploy:

-
    -
  • A petstore Namespace
  • -
  • A Secret, containing a static API key that we'll use later for auth
  • -
  • A Service and Deployment for our petstore app
  • -
  • A Gateway API HTTPRoute for our petstore app
  • -
-

Route 53 DNS Zone

-

When the DNS Policy has been created, and the previously created HTTPRoute has been attached, a DNS record custom resource will also be created in the cluster resulting in records being created in your AWS Route53. Navigate to Route53 and you should see some new records in the zone.

-

Configuring the region label

-

Configure the app REGION to be eu:

-
kubectl --context kind-api-workload-1 apply -k ./resources/eu-cluster/
-
-

Exploring the Open API Specification

-

The raw Open API spec can be found in the root of the repo:

-
cat openapi.yaml
-# ---
-# openapi: 3.0.2
-# info:
-#   title: Stitch API Petstore
-#   version: 1.0.18
-
-

(Application developer) API security

-

We've included a number of sample x-kuadrant extensions in the OAS spec already:

-
    -
  • At the top-level of our spec, we've defined an x-kuadrant extension to detail the Gateway API Gateway associated with our app:
  • -
-
  x-kuadrant:
-    route:
-      name: petstore
-      namespace: petstore
-      labels:
-        deployment: petstore
-        owner: cferreir
-      hostnames:
-
-      - petstore.$KUADRANT_ZONE_ROOT_DOMAIN
-      parentRefs:
-      - name: prod-web
-        namespace: kuadrant-multi-cluster-gateways
-        kind: Gateway
-
-
    -
  • In /user/login, we have a Gateway API backendRef set and a rate_limit set. The rate limit policy for this endpoint restricts usage of this endpoint to 2 requests in a 10 second window: -
    x-kuadrant:
    -  backendRefs:
    -  - name: petstore
    -    namespace: petstore
    -    port: 8080
    -  rate_limit:
    -  rates:
    -  - limit: 2
    -    duration: 10
    -    unit: second
    -
  • -
  • In /store/inventory, we have also have a Gateway API backendRefset and a rate_limit set. The rate limit policy for the endpoint restricts usage of this endpoint to 10 requests in a 10 second window: -
    x-kuadrant:
    -  backendRefs:
    -  - name: petstore
    -    namespace: petstore
    -    port: 8080
    -  rate_limit:
    -    rates:
    -    - limit: 10
    -      duration: 10
    -      unit: second
    -
  • -
  • Finally, we have a securityScheme setup for apiKey auth, powered by Authorino. We'll show this in more detail a little later: -
    securitySchemes:
    -  api_key:
    -    type: apiKey
    -    name: api_key
    -    in: header
    -
  • -
-

These extensions allow us to automatically generate Kuadrant Kubernetes resources, including AuthPolicies, RateLimitPolicies and Gateway API resources such as HTTPRoutes.

-

kuadrantctl

-

kuadrantctl is a cli that supports the generation of various Kubernetes resources via OAS specs. -Let's run some commands to generate some of these resources. -If you forked the api-pestore repo, you can check them in also. -Let's apply these to our running workload to implement rate limiting and auth.

-

Installing kuadrantctl

-

Download kuadrantctl from the v0.2.0 release artifacts:

-

https://github.com/Kuadrant/kuadrantctl/releases/tag/v0.2.0

-

Drop the kuadrantctl binary somewhere into your $PATH (e.g. /usr/local/bin/).

-

For this next part of the tutorial, we recommend installing yq to pretty-print YAML resources.

-

Generating Kuadrant resources with kuadrantctl

-

We'll generate an AuthPolicy to implement API key auth, per the securityScheme in our OAS spec:

-
# Generate this resource and save:
-kuadrantctl generate kuadrant authpolicy --oas openapi.yaml | yq -P | tee resources/authpolicy.yaml
-
-# Apply this resource to our cluster:
-kubectl --context kind-api-workload-1 apply -f ./resources/authpolicy.yaml
-
-

Next we'll generate a RateLimitPolicy, to protect our APIs with the limits we have setup in our OAS spec:

-
# Generate this resource and save:
-kuadrantctl generate kuadrant ratelimitpolicy --oas openapi.yaml | yq -P | tee resources/ratelimitpolicy.yaml
-
-# Apply this resource to our cluster:
-kubectl --context kind-api-workload-1 apply -f ./resources/ratelimitpolicy.yaml
-
-

Lastly, we'll generate a Gateway API HTTPRoute to service our APIs:

-
# Generate this resource and save:
-kuadrantctl generate gatewayapi httproute --oas openapi.yaml | yq -P | tee resources/httproute.yaml
-
-# Apply this resource to our cluster, setting the hostname in via the KUADRANT_ZONE_ROOT_DOMAIN env var:
-kustomize build ./resources/ | envsubst | kubectl --context kind-api-workload-1 apply -f-
-
-

Check our applied policies

-

Navigate to your app's Swagger UI:

-
echo https://petstore.$KUADRANT_ZONE_ROOT_DOMAIN/docs/
-
-

RateLimitPolicy

-

Let's check that our RateLimitPolicy for the /store/inventory has been applied and works correctly. Recall, our OAS spec had the following limits applied:

-

x-kuadrant:
-  ...
-  rate_limit:
-    rates:
-
-    - limit: 10
-      duration: 10
-      unit: second
-
-Navigate to the /store/inventory API, click Try it out, and Execute.

-

You'll see a response similar to:

-
{
-  "available": 10,
-  "pending": 5,
-  "sold": 3
-}
-
-

This API has a rate limit applied, so if you send more than 10 requests in a 10 second window, you will see a 429 HTTP Status code from responses, and a "Too Many Requests" message in the response body. Click Execute quickly in succession to see your RateLimitPolicy in action.

-

AuthPolicy

-

Let's check that our AuthPolicy for the /store/admin endpoint has been applied and works correctly. Recall, our OAS spec had the following securitySchemes applied:

-
  securitySchemes:
-    api_key:
-      type: apiKey
-      name: api_key
-      in: header
-
-

Navigate to the /store/admin API, click Try it out, and Execute. -You'll get a 401 response.

-

You can set a value for the api_key header by clicking Authorize at the top of the page. Set a value of secret. -This api key value is stored in the petstore-api-key Secret in the petstore namespace. -Try the /store/admin endpoint again and you should get a 200 response with the following:

-
{"message":"You are an admin!"}
-
-

Policy Adjustments

-

Run the Swagger UI editor to explore the OAS spec and make some tweaks:

-
docker run -p 8080:8080 -v $(pwd):/tmp -e SWAGGER_FILE=/tmp/openapi.yaml swaggerapi/swagger-editor
-
-

You should be able to access the Swagger Editor at http://localhost:8080. -Our /store/inventory API needs some additonal rate limiting. This is one of our slowest, most expensive services, so we'd like to rate limit it further.

-

In your openapi.yaml, navigate to the /store/inventory endpoint in the paths block. Modify the rate_limit block to further restrict the amount of requests this endpoint can serve to 2 requests per 10 seconds:

-
x-kuadrant:
-  ...
-  rate_limit:
-    rates:
-
-    - limit: 2
-      duration: 10
-      unit: second
-
-

Save your updated spec - File > Save as YAML > and update your existing openapi.yaml. You may need to copy the file from your Downloads folder to the location of the petstore repository.

-

Next we'll re-generate our RateLimitPolicy with kuadrantctl:

-
# Generate this resource and save:
-kuadrantctl generate kuadrant ratelimitpolicy --oas openapi.yaml | yq -P | tee resources/ratelimitpolicy.yaml
-
-# Apply this resource to our cluster:
-kubectl --context kind-api-workload-1 apply -f ./resources/ratelimitpolicy.yaml
-
-

At this stage you can optionally check in all the changes to the repo if you forked it.

-
# Optionally add, commit & push the changes to your fork
-git add resources
-git commit -am "Generated AuthPolicy,RateLimitPolicy & HTTPRoute"
-git push # You may need to set an upstream as well
-
-

In your app's Swagger UI:

-
echo https://petstore.$KUADRANT_ZONE_ROOT_DOMAIN/docs/
-
-

Navigate to the /store/inventory API one more, click Try it out, and Execute.

-

You'll see the effects of our new RateLimitPolicy applied. If you now send more than 2 requests in a 10 second window, you'll be rate-limited.

-

Note: ❗ It may take a few minutes for the updated RateLimitPolicy to be configured with the modified rate limit.

-

(Application developer) Scaling the application

-

Deploy the petstore to the 2nd cluster:

-
kustomize build ./resources/ | envsubst | kubectl --context kind-api-workload-2 apply -f-
-kubectl --context kind-api-workload-2 apply -f ./resources/authpolicy.yaml
-kubectl --context kind-api-workload-2 apply -f ./resources/ratelimitpolicy.yaml
-
-

Configure the app REGION to be us:

-
kubectl --context kind-api-workload-2 apply -k ./resources/us-cluster/
-
-

(Platform engineer) Scaling the gateway and traffic management

-

Deploy the Gateway to the 2nd cluster:

-
kubectl --context kind-api-control-plane patch placement http-gateway --namespace multi-cluster-gateways --type='json' -p='[{"op": "replace", "path": "/spec/numberOfClusters", "value":2}]'
-
-

Label the 1st cluster as being in the 'EU' region, -and the 2nd cluster as being in the 'US' region. -These labels are used by the DNSPolicy for configuring geo DNS.

-
kubectl --context kind-api-control-plane label managedcluster kind-api-workload-1 kuadrant.io/lb-attribute-geo-code=EU --overwrite
-kubectl --context kind-api-control-plane label managedcluster kind-api-workload-2 kuadrant.io/lb-attribute-geo-code=US --overwrite
-
-

(API consumer) Accessing the API from multiple regions

-
-

Info

-

This section is optional. If you'd rather skip this part, you can skip forward to the "(App developer) API traffic monitoring" section.

-
-

Geosight Image

-

Pre-requisites

-
    -
  • python3 and pip3: these are required for this part of the walkthrough
  • -
-

To demonstrate traffic management by geographical region, we'll use a tool called 'geosight'. This tool resolves hostnames from different regions, fetches a website from the resulting DNS record address and takes a screenshot. The petstore app has been configured to serve a flag image based on which region it is running in. In the 1st cluster, the EU flag is used. In the 2nd cluster, the US flag is used.

-

To install 'geosight', run the following commands:

-
git clone git@github.com:jasonmadigan/geosight.git && cd geosight
-pip3 install -r requirements.txt
-playwright install
-
-

Then run it using:

-
python3 app.py
-
-

Access the webapp at http://127.0.0.1:5001/. -In the input box, type the address from below and click the Fetch button:

-
echo https://petstore.$KUADRANT_ZONE_ROOT_DOMAIN/server/details
-
-

After a moment you should see dns results for different regions, and a corresponding screenshot.

-

If you want to experiment with other regions, check out the Configuration section for geosight and the Kuadrant docs for geo loadbalancing.

-

(App developer) API traffic monitoring

-

To view the App developer dashboard, the same Grafana will be used from the platform engineer steps above: -https://grafana.172.31.0.2.nip.io

-

The most relevant for a app developer is Stitch: App Developer Dashboard -You should see panels about API's including:

-
    -
  • Request and error rates
  • -
  • API summaries
  • -
  • API request summaries
  • -
  • API duration
  • -
-

All corresponding to our HTTPRoute coming from our OAS spec

-

(Platform Engineer) APIs summary view

-

Now that the app developer has deployed their app, new metrics and data is now available in the platform engineer dashboard seen in the previous step https://grafana.172.31.0.2.nip.io:

-
    -
  • Gateways, routes and policies
  • -
  • Constraints & Violations (there should be no violations present)
  • -
  • APIs Summary
  • -
-

Summary

-

You now have a local environment with a reference architecture to design and deploy an API in a kube native way, using Kuadrant and other open source tools.

-

Cleanup

-

To destroy the previously created kind clusters, run:

-
./cleanup.sh
-
-
-

Info

-

DNS records in AWS will remain after cleanup - you can remove these from your zone manually.

-
- - - - - - - - - - - - - -
-
- - - -
- -
- -
- - - -
- -
-
-
-
- - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/architecture/docs/design/architectural-overview-v1/index.html b/0.10.0/architecture/docs/design/architectural-overview-v1/index.html deleted file mode 100644 index 66c7dfac0..000000000 --- a/0.10.0/architecture/docs/design/architectural-overview-v1/index.html +++ /dev/null @@ -1,3938 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Architecture - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - - - -
- - -
- -
- - - - - - -
-
- - - -
-
-
- - - - - -
-
-
- - - - - - - -
-
- - - - - - - - - - - - -

Kuadrant Architectural Overview

- -

Overview

-

Kuadrant provides connectivity, security and service protection capabilities in both a single and multi-cluster environment. It exposes these capabilities in the form of Kubernetes CRDs that implement the Gateway API concept of policy attachment. These policy APIs can target specific Gateway API resources such as Gateways and HTTPRoutes to extend their capabilities and configuration. They enable platform engineers to secure, protect and connect their infrastructure and allow application developers to self service and refine policies to their specific needs in order to protect exposed endpoints.

-

Key Architectural Areas

-
    -
  • Kuadrant architecture is defined and implemented with both control plane and data plane components.
  • -
  • The control plane is where policies are exposed and expressed as Kubernetes APIs and reconciled by a policy controller.
  • -
  • The data plane is where Kuadrant's "policy enforcement" components exist. These components are configured by the control plane and integrate either directly with the Gateway provider or via external integrations.
  • -
-

10000m Architecture

-

-

Control Plane Components and Responsibilities

-

The control plane is a set of controllers and operators that are responsible for for installation and configuration of other components such as the data plane enforcement components and configuration of the Gateway to enable the data plane components to interact with incoming requests. The control plane also owns and reconciles the policy CRD APIs into more complex and specific configuration objects that the policy enforcement components consume in order to know the rules to apply to incoming requests or the configuration to apply to external integrations such as DNS and ACME providers.

-

-

Kuadrant Operator

-
    -
  • Installation and configuration of other control plane components
  • -
  • Installation of data plane policy enforcement components via their respective control plane operators
  • -
  • Configures the Gateway via WASM plugin and other APIs to leverage the data plane components for auth and rate limiting on incoming requests.
  • -
  • Exposes RateLimitPolicy , AuthPolicy, DNSPolicy and TLSPolicy and reconciles these into enforceable configuration for the data plane.
  • -
  • Exposes Kuadrant and reconciles this to configure and trigger installation of the required data plane components and other control plane components.
  • -
-

Limitador Operator:

-
    -
  • Installs and configures the Limitador data plane component based on the Limitador CR. Limits specified in the limitador CR are mountd via configmap into the limitador component.
  • -
-

Authorino Operator:

-
    -
  • Installs and configures the Authorino data plane component based on the Authorino CR.
  • -
-

Cert-Manager:

-
    -
  • Manages TLS certificates for our components and for the Gateways. Consumes Certificate resources created by Kuadrant operator in response to the TLSPolicy.
  • -
-

DNS Operator

-
    -
  • DNS operator consumes DNSRecord resources that are configured via the DNSPolicy api and applies them into the targeted cloud DNS provider -AWS, Azure and Google DNS are our main targets
  • -
-

Data Plane Components and Responsibilities

-

-

The data plane components sit in the request flow and are responsible for enforcing configuration defined by policy and providing service protection capabilities based on configuration managed and created by the control plane.

-

Limitador

-
    -
  • Complies with the with Envoy rate limiting API to provide rate limiting to the gateway. Consumes limits from a configmap created based on the RateLimitPolicy API.
  • -
-

Authorino

-
    -
  • Complies with the Envoy external auth API to provide auth integration to the gateway. It provides both Authn and Authz. Consumes AuthConfigs created by the kuadrant operator based on the defined AuthPolicy API.
  • -
-

WASM Shim

-
    -
  • Uses the Proxy WASM ABI Spec to integrate with Envoy and provide filtering and connectivity to Limitador for request time enforcement of and rate limiting.
  • -
-

Single Cluster Layout

-

In a single cluster, you have the Kuadrant control plane and data plane sitting together. It is configured to integrate with Gateways on the same cluster and configure a DNS zone via a DNS provider secret (configured alongside a DNSPolicy). Storage of rate limit counters is possible but not required as they are not being shared.

-

-

Multi-Cluster

-

In the default multi-cluster setup. Each individual cluster has Kuadrant installed. Each of these clusters are unaware of the other. They are effectively operating as single clusters. The multi-cluster aspect is created by sharing access with the DNS zone, using a shared host across the clusters and leveraging shared counter storage. -The zone is operated on independently by each of DNS operator on both clusters to form a single cohesive record set. More details on this can be found in the following RFC document: TODO add link. -The rate limit counters can also be shared and used by different clusters in order to provide global rate limiting. This is achieved by connecting each instance of Limitador to a shared data store that uses the Redis protocol. There is another option available for achieving multi-cluster connectivity (see intgrations below) that requires the use of a "hub" cluster and integration with OCM (open cluster management).

-

-

Shown above is a multi-cluster multi ingress gateway topology. This might be used to support a geographically distributed system for example. However, it is also possible to leverage overlay networking tools such as Skupper that integrate at the Kubernetes service level to have a single gateway cluster that then integrates with multiple backends (on different clusters or in custom infrastructure).

-

Observability

-

The Kuadrant architecture is intended to work with some popular monitoring tools for tracing, metrics and log aggregation. -Those tools are:

-
    -
  • Prometheus for scraping metrics - and optionally Thanos for high availability & federation
  • -
  • Loki for log aggregation - via log collectors like vector
  • -
  • Tempo for trace collecting
  • -
  • Grafana for visualing the above
  • -
-

Depending on the number of clusters in your configuration, you may decide to have a monitoring system on the same cluster as workloads, -or in a separate cluster completely. -Below are 2 example architectures based on the single cluster and multi cluster layouts. -In the single cluster architecture, the collector components (Prometheus, Vector and Tempo) are in the same cluster as the log aggregation (Loki) and visualisation component (Grafana).

-

-

In the multi cluster architecture, the collectors that scrape metrics or logs (Prometheus & Vector) are deployed alongside the workloads in each cluster. -However, as traces are sent to a collector (Tempo) from each component, it can be centralised in a separate cluster. -Thanos is used in this architecutre so that each prometheus can federate metrics back to a central location. -The log collector (vector) can forward logs to a central loki instance. -Finally, the visualisation component (Grafana) is centralised as well, with data sources configured for each of the 3 components on the same cluster.

-

-

Dependencies

-

Istio: Required

-
    -
  • Gateway API provider that Kuadrant integrates with via WASM and Istio APIS to provide service protection capabilities. Kuadrant configures Envoy via the Istio control plane in order to enforce the applied policies and register components such as Authorino and Limitador.
  • -
  • Used by RateLimitPolicy and AuthPolicy
  • -
-

Gateway API: Required

-
    -
  • New standard for Ingress from the Kubernetes community
  • -
  • Gateway API is the core API that Kuadrant integrates with.
  • -
-

Integrations

-

Open Cluster Manager: Optional

-
    -
  • Provides a multi-cluster control plane to enable the defining and distributing of Gateways across multiple clusters.
  • -
-

While the default setup is to leverage a distributed configuration for DNS and rate limiting. There is also a component that offers experimental integration with Open Cluster Management.

-

In this setup, the OCM integration controller is installed into the HUB alongside the DNS Operator and the cert-manager. This integration allows you to define gateways in the Hub and distribute them to "spoke" clusters. The addresses of these gateways are gathered from the spokes and aggregated back to the hub. The Kuadrant operator and DNS operator then act on this information as though it were a single cluster gateway with multiple addresses. The DNS zone in the configured DNS provider is managed centrally by one DNS operator instance.

-

- - - - - - - - - - - - - -
-
- - - -
- -
- -
- - - -
- -
-
-
-
- - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/architecture/docs/design/architectural-overview/index.html b/0.10.0/architecture/docs/design/architectural-overview/index.html deleted file mode 100644 index bfec8a79e..000000000 --- a/0.10.0/architecture/docs/design/architectural-overview/index.html +++ /dev/null @@ -1,3826 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Kuadrant Architectural Overview [Draft] - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - - - -
- - -
- -
- - - - - - -
-
- - - -
-
-
- - - - - -
-
-
- - - -
-
-
- - - -
-
-
- - - -
-
- - - - - - - - - - - - -

Kuadrant Architectural Overview [Draft]

- -

Overview

-

It is important to note that Kuadrant is not in itself a gateway provider. Kuadrant provides a set of valuable policy APIs that enhance Gateway API via its defined policy attachment extension point. The policy APIs are reconciled by a set of policy controllers and enforced via integration at different points to configure, enhance and secure the application connectivity provided via Gateway API and the underlying gateway provider. -These policy extensions are focused around areas such as DNS management supporting global load balancing and health checks, alongside service protection specific APIs such as rate limiting and auth. Kuadrant also integrates with Open Cluster Management as a multi-cluster control plane to enable defining and distributing Gateways across multiple clusters, providing load balancing and tls management for these distributed gateways. These integrations and features can be managed centrally in a declarative way from the Open Cluster Management Hub using Kubernetes resources.

-

Key Architectural Areas

-
    -
  • The Kuadrant architecture is spread across a control plane and also a data plane. Kuadrant can work in both a single and multi-cluster context. -Currently in order for all APIs to work in a single or multi-cluster context you need to have Open Cluster Management installed. While this may change in the future, this approach allows us to start with a single cluster and seamlessly scale as more clusters are added.
  • -
  • The control plane is where policies are exposed and expressed as kubernetes APIs and reconciled by the Kuadrant policy controllers.
  • -
  • The data plane is where Kuadrant's service protection components, configured by the control plane policies, are enforced within the gateway instance as part of the request flow.
  • -
-

1000m Architecture

-

-

Control Plane Components and Responsibilities

-

A control plane component is something responsible for accepting instruction via a CRD based API and ensuring that configuration is manifested into state that can be acted on.

-

Kuadrant Operator

-
    -
  • Installation of data plane service protection components via their respective operators
  • -
  • Exposes RateLimitPolicy and AuthPolicy and is currently the policy controller for these APIs
  • -
  • Configures the Gateway to be able to leverage the data plane service protection components
  • -
-

Multi-Cluster Gateway Controller

-
    -
  • Exposes DNSPolicy and TLSPolicy
  • -
  • Configures DNS providers (e.g AWS Route 53) and TLS providers
  • -
  • Focused around use cases involving distributed gateways (for example across clouds or geographic regions)
  • -
  • Integrates with Open Cluster Management as the multi-cluster management hub to distribute and observe gateway status based on the clusters they are deployed to. Works directly with Open Cluster Management APIs such PlacementDecision and ManifestWork.
  • -
-

Kuadrant-add-on-manager

-
    -
  • Sub component in the gateway controller repository
  • -
  • Follows the add-on pattern from Open Cluster Management
  • -
  • Responsible for configuring and installing Kuadrant into a target spoke cluster
  • -
-

Limitador Operator:

-
    -
  • Installs and configures Limitador
  • -
-

Authorino Operator:

-
    -
  • Installs and configures Authorino
  • -
-

Data Plane Components and Responsibilities

-

A data plane component sits in the request flow and is responsible for enforcing policy and providing service protection capabilities based on configuration managed and created by the control plane.

-

Limitador

-
    -
  • Complies with the with Envoy rate limiting API to provide rate limiting to the gateway
  • -
-

Authorino

-
    -
  • Complies with the Envoy external auth API to provide auth integration to the gateway
  • -
-

WASM Shim

-
    -
  • Uses the Proxy WASM ABI Spec to integrate with Envoy and provide filtering and connectivity to Limitador for request time enforcement of and rate limiting
  • -
-

Dependencies and integrations

-

In order to provide its full suite of functionality, Kuadrant has several dependencies. Some of these are optional depending on the functionality needed.

-

Cert-Manager: Required

- -

Open Cluster Manager: Required

-
    -
  • Provides a multi-cluster control plane to enable the defining and distributing of Gateways across multiple clusters.
  • -
-

Istio: Required

-
    -
  • Gateway API provider that Kuadrant integrates with via WASM and Istio APIS to provide service protection capabilities.
  • -
  • Used by RateLimitPolicy and AuthPolicy
  • -
-

Gateway API: Required

-
    -
  • New standard for Ingress from the Kubernetes community
  • -
  • Gateway API is the core API that Kuadrant integrates with.
  • -
-

Thanos/Prometheus/Grafana: Optional

-
    -
  • Provides observability integration
  • -
  • Rather than providing any Kuadrant specific observability tooling, we instead look to leverage existing tools and technologies to provide observability capabilities for ingress.
  • -
-

High Level Multi-Cluster Architecture

-

-

Kuadrant has a multi-cluster gateway controller that is intended to run in a Open Cluster Management provided "Hub" cluster. This cluster is effectively a central management cluster where policy and gateways along with all that Open Cluster Management offers can be defined and distributed to the managed "spoke" clusters.

-

Single cluster

-

In a single cluster context, the overall architecture remains the same as above, the key difference is that the Hub and Spoke cluster are now a single cluster rather than multiple clusters. This is how we are initially supporting single cluster.

-

How does Kuadrant leverage Open Cluster Management?

-

Kuadrant deploys a multi-cluster gateway controller into the Open Cluster Management hub (a control plane that manages a set of "spoke" clusters where workloads are executed). This controller offers its own APIs but also integrates with hub CRD based APIs (such as the placement API) along with the Gateway API CRD based APIs in order to provide multi-cluster Gateway capabilities to the hub and distribute actual gateway instances to the spokes. See the Open Cluster Management docs for further details on the hub spoke architecture.

-

As part of installing Kuadrant, the Gateway API CRDs are also installed into the hub cluster and Kuadrant defines a standard Gateway API GatewayClass resource that the multi-cluster gateway controller is the chosen controller for.

-

Once installed, an Open Cluster Management user can then (with the correct RBAC in place) define in the standard way a Gateway resource that inherits from the Kuadrant configured GatewayClass in the hub. There is nothing unique about this Gateway definition, the difference is what it represents and how it is used. This Gateway is used to represent a "multi-cluster" distributed gateway. As such there are no pods running behind this Gateway instance in the hub cluster, instead it serves as a template that the Kuadrant multi-cluster gateway controller reconciles and distributes to targeted spoke clusters. It leverages the Open Cluster Management APIs to distribute these gateways (more info below) and aggregates the status information from each spoke cluster instance of this gateway back to this central definition, in doing this it can represent the status of the gateway across multiple clusters but also use that information to integrate with DNS providers etc.

-

-

Gateway Deployment and Distribution

-

In order for a multi-cluster gateway to be truly useful, it needs to be distributed or "placed" on a specific set of hub managed spoke clusters. Open Cluster Management is responsible for a set of placement and replication APIs. Kuadrant is aware of these APIs, and so when a given gateway is chosen to be placed on a set of managed clusters, Kuadrant multi-cluster gateway controller will ensure the right resources (ManifestWork) are created in the correct namespaces in the hub. Open Cluster Management then is responsible for syncing these to the actual spoke cluster and reporting back the status of these resources to the Hub. A user would indicate which clusters they want a gateway placed on by using a Placement and then labeling the gateway using the cluster.open-cluster-management.io/placement label.

-

In order for the Gateway to be instantiated, we need to know what underlying gateway provider is being used on the spoke clusters. Admins can then set this provider in the hub via the GatewayClass params. In the hub, Kuadrant will then apply a transformation to the gateway to ensure when synced it references this spoke gateway provider (Istio for example).

-

It is the Open Cluster Management workagent that is responsible for syncing down and applying the resources into the managed spoke cluster. It is also responsible for syncing status information back to the hub. It is the multi-cluster gateway controller that is responsible for aggregating this status.

-

The status information reported back to the Hub is used by the multi-cluster gateway controller to know what LB hosts / IPAddresses to use for DNSRecords that it creates and manages.

-

-

More info on the Open Cluster Management hub and spoke architecture can be found here

-

How does Kuadrant integrate with Gateway Providers?

-

Currently the Kuadrant data plane only integrates with an Istio based gateway provider:

-
    -
  • It registers Authorino with the IstioOperator as an auth provider so that Authorino can be used as an external auth provider.
  • -
  • It leverages an EnvoyFilter to register the rate limiting service as an upstream service.
  • -
  • Based on the Kuadrant AuthPolicy, it leverages Istio's AuthorizationPolicy resource to configure when a request should trigger Authorino to be called for a given host, path and method etc.
  • -
  • It provides a WebAssembly (WASM) Plugin that conforms to the Proxy WASM ABI (application binary interface). This WASM Plugin is loaded into the underlying Envoy based gateway provider and configured via the Kuadrant Operator based on defined RateLimitPolicy resources. This binary is executed in response to a HTTP request being accepted by the gateway via the underlying Envoy instance that provides the proxy layer for the Gateway (IE Envoy). This plugin is configured with the correct upstream rate limit service name and when it sees a request, based on the provided configuration, it will trigger a call to the installed Limitador that is providing the rate limit capabilities and either allow the request to continue or trigger a response to the client with a 429 (too many requests) HTTP code.
  • -
-

Data Flows

-

There are several different data flows when using Kuadrant.

-

Control plane configuration and status reporting

-

The initial creation of these APIs (gateways, policies etc) is done by the relevant persona in the control plane just as they would any other k8s resource. We use the term cluster admin or gateway admin as the operations type persona configuring, and placing gateways. -As shown above, in a multi-cluster configuration. API definitions are pulled from the Hub and "manifested" into the spokes. The Status of those synced resources are reported back to the Hub. The same happens for a single cluster, the only difference being the work agent hub controllers are all installed on one cluster.

-

Third party enforcement and Integration

-

In order to enforce the policy configuration, components in the control plane and data plane can reach out to configured 3rd parties such as cloud based DNS provider, TLS providers and Auth providers.

-

Request Flow

-

Requests coming through the gateway instance can be sent to Limitador based on configuration of the WASM plugin installed into the Envoy based gateway provider or to Authorino based configuration provided by the Istio AuthorizationPolicy. -Each of these components have the capability to see the request and need to in order to make the required decision. Each of these components can also prevent the request from reaching its intended backend destination based on user configuration.

-

-

Auth

-

As all of the APIs are CRDs, auth around creating these resources is handled in the standard way IE by the kubernetes cluster and RBAC. There is no relationship by default between the Auth features provided by Authorino to application developers and the auth requirements of the cluster API server.

-

For Auth between Spoke and Hub see Open Cluster Management docs

-

Observability

-

Kuadrant doesn't provide any specific observability components, but rather provides a reference setup using well known and established components along with some useful dashboards to help observe key things around the Gateways. The focus of this setup, is in the context of a multi-cluster setup where Open Cluster Management is installed and gateways are being defined and distributed from that hub.

-

-

Some notes on future direction

-

This section is here to provide some insight into architectural changes that may be seen in the near future:

-

What is in this doc represents the architecture at point our MVP release. Below are some areas that we have identified that are likely to change in the coming releases. As these happen, this doc will also evolve.

-
    -
  • We want to separate out the ocm integration into its own controller so that policies can evolve without a coupling to any one multi-cluster management solution
  • -
  • We want to separate the policies into their own controller that is capable of supporting both single (without Open Cluster Management) and multi-cluster (with Open Cluster Management enabled) contexts, so that the barrier to entry is reduced for those starting with a single cluster
  • -
  • We want to allow for an on cluster DNS Provider such as CoreDNS so that we can provide an implementation that is disconnected from any cloud provider and provides more flexible DNS setups.
  • -
  • We will look to reduce our integration with Istio and want to provide integration with additional gateway providers such as EnvoyGateway
  • -
- - - - - - - - - - - - - -
-
- - - -
- -
- -
- - - -
- -
-
-
-
- - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/architecture/docs/design/images/1000m-overview.png b/0.10.0/architecture/docs/design/images/1000m-overview.png deleted file mode 100644 index 5ef2397b2fc90189f7bfbb0da6c9c2405d2c0955..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146275 zcmeFZXINBOw=Im)LfZ;R+lpjF5d{Ge5RfbgA`(=BWE6n{BIH#+AUQI3ePhX6#oBEP~hON{HG}>TrN;h%$iV8 zT#lijV6cxXzbOg-Ky^<=Nr8fZ{!6M#kAS~9Xn#%DiGqUv6#BK#JypgP{*u~RS@kOQ z)b9s>7dviI^z9Q|kwRHPPSbs09`E6-wO%E&S2OUlOtdTDAMF5bu73vK-q`>8^SfoB@`RohD?VOTeCx4i0H;<~(Ce-@L5Deecn;7Xuu(ZIcBCs@VL^2f z@94X`_x((?{C>u3@6^K^OtW+9hNt3ujJ&v4X2Qis4OM<&(9owVqCE-&Sd7+?H+jg@`qQ&<8~G6EcCIpU0dkn^>mfFurXvB*5|YN?X}9VZ)EON zp*4fepn1BFIovGKd&P2MnLBasR8Wv~Xsa|qQoE`ut^P$e9=8!n-@syKLhY}ZN?It5 zT++Uzfaj5s4dJP|^^`S!!ac|TN~`LT78QL&%XUXx#W}aC`nb)zcTCw)W8ocrg>T%` z3+@h1P1a{Du`vWz`zSa!x2oWl_qBbU2}BE*l|PE1=)1}sbg6!c-G_7XYkah8^}XZM zC-J!ZwMN6o3d{&%es?1S;)CSkO~csC>viHh{y=E zh%Nj$A(rG9Y4%R2dEoDlcXn5J1vkG~+`H}IFd!8tYWsl2^V*1FywoAt)im;DRN*qA zK`PhBqign52Pj&8z6uM=YJvWp7EBZIgnrH;DYs47_*5;twA-BjN*s&BoLo&E0JiaV~1VQi0@EhjG9N|xIH zcOMP*-{7nMY20lT8i(q*QXSgObQ)l-*uHXst;lG@z6Tbsd+x)*96HYb~ynP2-`ma;7gotaZh1#AE!I@_a{!&_#IX&|(c5SbOwQZ)i#O+3cyT^~oLX~o1|KMc0Vo4ka zdaToslrkbygG&7c;ZvNw@x7?m?{QGGqjn?TQj}gU}U&>+E znf+Y7z8dF=aTYJq`)<5Q7j1MC;f5_0+)gvDeK%o;o;!QcuIl6|i@zx6dEmA~3DUo# zM^sfw+IOv>IO&3RmccQVsA|3Ku=T;r81c(Vgje*-eobbgwbBE}gp7HkW_-PxEAsD6 zyp&*>Mq756rA_7$jrh9{<~g=%sbd|yIhmCNuf@1~HS-G(YIe7>X54f=nKAThaz1&N zNZyHI+E3HgXrq>TZ#~v+yzZgOy_O*lEh9UyDS2wT;7_zO%!Vr)Di8dYn%`)8uY5^g zHX6lktet6BLW&Xvrx%KJ4r$YND6&+q%(67BA^i7CqFrEO>6ld3M!o)_{+BV(WBj#E|Z+I)m;KIWRCK zz#+(X(|kY7e)((*vzvBiJYOl^U#)kyGRArRALK9S2&X$+L$O%h&P6K+A(xjOlbSp& zd&>{=!7Op>3#>Ke3zI1-`}I!xe|UA3 zp{~m-O^g47lxNpxj^uNf^Ne?H?@t}z&6HYmT+NWqoqr=Y!yoh z&K`_2O~!kUEWUSYPDt9zo;O-aKg%l+)}E|bfAbR+m!aO%b_nRh21S>p2Q>a-_gk?% zEbb`V!L^U?x%3^k|E&7%omcx}^KC2$MG%yhr@{)d99Xr!-jcE#(rqucaqXBWJUh7f z#kNPF?Zny#!*se!Y$QK%jX%be#K^;cE`*nR_ynEQio1fs+T5Uo@9Ny(xIdo2H`5Ut zAEf)1utX?QE`NU9BJ7)6*!q&+i33a7PYELgI~BBaw2Qy{&lmhr1=z!?KLt^a2A&pN~h}>A{j%TH5kK-7(r{-3F*;K zk7s8lIpAxX_;ha+2!8)5e~R#DZdj^)tIv97oE>*{Xp((0{ zo}PYlNSw=aeLBinSA#qLvTMe!lY{ab#%|f{nZUx|e%(w_kVE!o=F2z^b7 zIp`k56Yq`fsr=am5eSy$cl0&x%vo>1@i{sU{3k8-kH7zH*~>pr+^mLk4WLS*>j)=p zoQBMPnr8v#UtNaEc71mNL`=cHBT?)#d3n4zQ4a;g4O#RSm4Ua3Kr|0YwzP-`06a6uQO4(?gaz; zUPE*e-1@u^g+K)e9VzSwG$>&O*GMbCL9{&l4uVAsi<_K+LY$E6jX0ml8MrmgSfq|| zm`scD2}&G06Y{;e_{*0X!}}m;-YHqc-^q8>IbQYotWL*h9G4;DxH33eGkC!YrvyleSYj=A|fN5mD^rx9-fulsJ$)d_hGDY z6|G};d;H$?vw*#dz~5#9+e%5c5PK?s>NCaQVx}a7^=WX14lcQ;+W##JMec;?9G)g( ziwU{RWV$PzqzAz8!vow!0Bd&>@B#9}J$lC2Hdy-c^9Fz3UV5P|p4163hQDHKzly#5 z(RS*S;v|!Op_a7o&r34^A^?3S8;=YxXAat`m9t?as zNK3sKDNA{J8g2bS9re)PRUXKnISYaMF`JKMTC4X3&SL%=pYDI2j$!v6pEhJFyoTer zf1DVM{BJ-tf3P1sE8})c5bU+Xm#x)%YZ*tw`44UxqfBw^s2#TGz(e}GQ9Qy_K1VJ_ z6Ma%PZOgIafUI?q$!K_=rU46V;&|=94P1t_c_C0C)CP|XL1L5<;N+YXxWkejCz#`C zLfz*A_vI(w_axl65AF-e5$ULfD^MV%7_PzX2SGGr3g z$8iX=lQvly_sf9_FLB2?D?Z@i4^`Gt$0k3fgRM@A`cJk&VcE83ol2U3h7F^qH&4AHMpWi9|so|&H15=YsUjsbbs9$-I@*(CrptgS+8yigltwD^OZ~qj|Po0r& zBvoDqAdm5Dz~v6=S7sz^fhvKve-N0Yrw4y~eY=5HIhu0*@1ZzXDyJm01aa~b0JRIh zdORfw!P6qn)v+U$f`&sh-EhdQcY!|NMPT`jo4QK*>CYG(N8x$WMuk9y68jm<7CjUv zC+$ox_l%=IRR`>I=~T-(dU`>N#mX3=O*-&QMrHPYqLhj8AxRLN@2GCo_cb+(v$ba@m=YwWldf z0l}~7t~8OuLK~#5gDAA5jg4WkTb}8muvx<4mvnUnJ;o+r8!nam)ZXRwIig2RveQRr z+9*_$Qk>_)E5I0&0aK!9xe3pN0xmpX*cK!cc>X7y)UVdbM{*601+ZjXJ(`xMh^jszF*DJt3N8JJK!;V53fYRT;PyKM?aQPn_fUv-= zPG5(QlM;Q>N%Zlv1|`y*oRF@$Ajv8~>a9!3jAOq9-O@o>Fk-%*$0?4 zjbO3ZT<=sHID1tL1Uv+EE*)cNkPnlF1pn*=JU2J#xedACxzDB>R-~v<#A<+Rmd=kI z;^e%C`%2xcmf8&u>p}t%eOmCapP`E7B@7W!4~1$L6pWEg^DpDCTc^-nnIo0EdAzXo z|3*gJ#XmtsJDk-&G4KKSN77-gqZ_8!B^oJ5Q=Gm(*#8D1D z1`57*ay~-EIs*3a2}VxvDg>M$Z0375SF~p;m87WrtqAw;Chb`UZvYiW7RsIFH79{u zJe?%V%b=&ct#0t02sKIRnHB%T7aVH^9U8j4P|eAnvn4tH%|qH^S*bD;AyXypYAim zacDp|MAfLv-G@|t2T*d(vsX6oYkJ=3gp&5Vrvg}8>cu5?OaKp<)>Qx`D9R&t2>uyz z!>lU%Z?hykk_6ckaPwWnBq=TbwQDt@Bj~H0%d(jXuYc^I)a}f z_9YnzI!u-xLM#a??a!6m2!*2LB9^kN@$Tcb5G4=K%#DIkAVV$tAraLA0(YKJFwc*pnFNP5~Zjhevd*e>t(2jd0NBsi5kJ zo<7kV7nY(D5Z^%^KrSFPnD^7<9fj|dt_95@2n%5wGASy8^!1qg%sk>Z0Y|@n9TvfV zz!gvw(^FC!wfSB6J+0>9G0ph}uh#h6q|AE=bF!Sh)DOO13(h0IH1o z;y^K!8G8yVUK6>Q1BDy_>|&e`<^gJM>m%8Tm3-2^;@f6NEO3S!2dSA<>u&8mI|omB zj&ut1!LpPOECwfvEL3ZFiOBuWw*6)n7TkvWHC5Pui~ajQ3%mqyHNIGV$#pA1KO(U!O?bGgo=yII8r1jlh#dfpEH0;uWD*a;O&rr z_eyP3vZ}T=6lby#q_t3d*4$51Xoa{0Jl}1ISSaOyL&8V0KSNy_&L5x+F(aHrfNC6t zixnZ9M2w|%?VqT*4QbmN5w|n*CuU+zjzgJbb|RJ$&ikG{r@6{(3Ni51y}2yS&kAth zTR$SyGviuYS}sK}^>N`iUYLVXS+%;&_MM#RKrZJ0&+o!*R^OoThj89ygV1!-UFHZ| z+|_LJ`E^p^Q0Kq*xPGx>={Pmp&ul}cAGwQOiJsoBRXJr)r36dk=Nrd?k*ZriDv-Nw zk?6BmcW14m14@t5&P`gV^Q(otuK~SiyfZ9n3fNvbT9!A3?h;+m!jp9oz^;Yw-*1eR z;OA)GWMxSv_%1%Y^KPyCPVsI?e02$=N13H`|M|YlQTfNPfdgk4e%R&?wAb zVV`RS8lhuCL;YAF`yg#4ifq6MJ&~qffADNyx$z!Ow1}2-{w=U}rEUXw1PS!~%)tc^ zyvF>8z5MF|=22F$-0eVcyp_Vr(GDLpVveE zFnBlSm5=SBn#D~!KzVa^FaC@+axi?LmdaFRzDQqj)xE*QvW4#=ubh*J^?<|H5!I30IbHb=!!FUe6Ye3-8FLbbv4r!T(TOk^O;@ z+U4af#Plw zqYT0RNpXhSQ*<{94qO%b^_1X7mk}?D%_g|pw*H(P?Mr@~+RQP$(W*qp&O%QR{qC?- z_(JO=4bab`(mT7WVmn_u=hpFXqNcOoI>*A7Wo)1Cyj=hONz1Al;9@rwBM(r%Pur8# zut$~H7;Y~mL>0gL1TnjI;O{FnBaDj?>IBHOK09mI%m312^vUy>=}sP0+mU;inp+*! zqf)#S|H1_7Z?l-RkBEj1KW_I@@k*fVfU}Gt~x_bQ_p#F)f2Z(zQ%}D^z=g29DT{u9?&;p z36i_2ZSmBW4N%YIY6t2Z+w}Re#oho%)!EV-i@%oKb^X&h9-J6wtgox^G+5HkPa{;5 z&I_sMuK#fj5#JCG#TSMEsOERy`tRGz14bK3h#8(rN>GlLKZTx_R-UHYM)hVqzeoJ| z+k*_L@fG*RXhJSxE`l=^j^C9J%~};vli03pl-Zmc9Q-aT^z(xf`&9)6XwRs_rqTO6 zJ6#39yKo%(Ct6e1Xk!}R--VN(9!%Fk46pJC(>jUt)L@1U(eiK@RRO1Z-|O4Nr++nL zboUT)GW3>|qp$G3rVCGL*;$Bi^&S*hdfV%=RuLsff`^xWW5S4BO1~8;v_L2MT_1M) zsQB8mYONM2{LrDIJ#WDC$U7~ke7EODgfSt3VJy#FC4r(U`a`wN+h%8V0oDH#ZP(#| zZQ4r0u1Of_Yn;ff#Cdj@{Y&v*P$Q`uksJ``M;vV|T03`(0A2#Gm=>?Uz7c!b5S7TO z*{?6aSyHk3_xt*DbB=v=;=k~@^Y1FchsSUX{eBo89Eb88bQ*Z3&KO9EBZ3E_RXBgx z8FI$b2ft(jQtA}v>sGm{aQ=s9dhqY@ZZoUU{6fjDqXqw$Kw z5e-$b`6Big))y@S6tOQk`oL1hHuUYVD!HXOj^bN?0Ht@+BL`TvHSr7`XBm3};;G{$ zmYCs#;T{?D;U4NT4D|HW-g7VEoR8v`2zyJ!6bNasbRpWU!T%H8)8VS}hJ%opAO>f* z*BG;(J{rvCas`ofh-IG($_4ZN-$}y;xgIc4#U?*TX+s-w_XLI|J)>SJZ5mFNnnU4V$zu5P}ujlBHtsJ)ri{55sI&a4yBegnDe0p>^7~F)*=g|Cq(sIl5 zCVtCStdogZD(dY8gD`&!WooI_$E%i8IWg|?fi_Zz`^`yo_xS3E%SWgS(z5=z1;XrW zFX)KP0A*49$6Mc;-;eYhhu+nN>x0DrBjg{s+w`vxH(2nL`je*IvXhf7UYDf_V~I34 zR=_&eiJm?ma(cJ*a0tRQW$MzmxxU-) zJv@335c_VmMaF@r#k4;T<2L9+_6z|+y59xe}Z17jGfYA?yXztmVlMsJ4V|SIp*`lh%G(sQ*sTpX_S;Dr`oIciRPE5+C1| z^e8AOL|3+e)9mN*-8<&!D(L>~WhXyBqo2`08G>%At}@_bXyFdf#%y3`^GdqTM^De7 z9@BS!UBe4(nwRn{c;evMk(+xmgriPVQmnl%5?E-4RN?CgU8P>j7}7!~Ak9z;Ppw^>u|sJFvL11c~&N_(4sB2maiY ze7@U}AaRhgx*y2DL)c~@1ozX)9FI13l0PhAt~s>PRAJh#qJnzVFV^@vukBSACk>BM zVR8`rR*V z+#r!W8M1%_e|z{Rl07`>`WV{mv+@Ggaq0ede&e}SfjvgFQ)n41LMzWp=R}3>%_Q!{ zt?`BX+kB$2h{H#0tyguLLamU}^ta-_a3)mj;v5S@5J^?a&s)7Yxx;~wZ?^nPK)z{R zM}$@_jS!wG9N#D_LqsQ4*+!39o)X05RnB{JZ+{0gbsV)KIX5o@ac{Zvl(4-%;h;c} z|MShmx5b9$6@vjgy>m=2gH*=)WvWlK)|8%wz2KP9zutwqAtvoj`M7wual#Ja61SmR zwl{7jJ!Fq{=~&Lw%|CkUXh=&3|~d0FF=UlkWX02oi=l!9 zwYpndjsI$umVxX>k4oI#O*M51w~i+bDE!R2RDotfSz_3?iR+@eA<2R?k3b=(Te26J zqLOq_li@E?AJ+5n0oO_B1}FehMRFl9q3}kyw&wU0atuh1ygF`xW3JXiIx-r!D1kPv z-ZuVN_3#_hz!Bc{)qy#E>QT@JE!cmzscY0iDaw6)y++|?dxLUx+)ZhGLt5!tqjKbE zDBCw$Y~t?LyjX_CW{OH?L}cc$ZI>+ZndRvgkDdyZ;#s-8q`%;`CKuiY3?gED2i_`| z;8$|Cn!5()hN4B&Z!M#eMxu8r$w+yGQzQe}Cpa?ySs*OZNRwX_w(+2egm7s*190(WYMy?nB@DStvbxWi~(y4iA0!oVX* zWVtCN0LugOxMyaP`m5dka z6a%?$T{Z9_N6g`egW%H4)Z4Et-(CQDj}EjJdc!(qP1qSB_AHjI8FJ%Op%xTMt~gdy zybbS!cm6bQ_C3v6ymweBRQl8&R4`wxF<)(HXU9tl*xgOW@QPaqRnu@-UTLgU2B9*lH8=UoZ>0g9FWF} zf=4uVM?!N)aYVYR!)UPIEtv47G=-gBBx5=dkjAM82f>DA;}3!X{3sl}EN`zQv}Ngm zHft(GB2ziq#4aN8SVT_35sT1@q?W`Ad=K;36OYz;`-hKhEJPQt0p2QIPn$b0kthef zB3|lo+p3xJEr7;}?rY23FTI~W!PoSQRBsgJa^b}~vJBQ;y_f44mgiRm>I+(HPBgGd zo#)@#OjO*c*;SeFVvCo6Zk^}mEPaEo#hnf=(XxGy*^gIwxr7~6WI5_JUp>fgsKS2w zHfr=D&{k^R!PmVfZOg+yY>7R2&w6?k%GElk7L_5Uekk_&*_W(8GBS=r>-=RP*&fJO>w`5T_B5{;|+fv~HzGC`?OiNg_k*^5K@i*s6r_*IZ z13g{UaSoaw2I&;E-Z-_q+>l6oct8Ceqg`BRVgo2bjvr#EVPW^%wNy~JQMob_!C$0I z^mBWt4|12}9Oea;QXfjVMoM2h0~Nad?r1*s7!vH5s!M8_`oFq@iv6y3ZbeW@#?Fk~ z(Cj5!a&;l-u=$i3_Nk7(ZpwLroD`|G#C>B!poki;`nV3qLAW6?QqT|p)(#?zqxU{* zKvWm>u2qH(2S6o>Z{t1y5!~mWq>ruFRJNZTeN^GM{xtZoux5-eAy9C9uOGg-Bt3$C z(do-dC%JWPcf*aY4&{>_f|FGT*Ci~3+t5UV=heRvfL~+_q-JBQ@>&m0ene;6MMzke zyQm9vY$X(*TH3kDXNf`&hv($O7GB*iOJCTQeS0(1J=E3wPfL6Q~Cw?zmm$wl=7vPPd3#-#84Yy!6M4 z^*EkRI+)$q-qO3sM@>P2#nV19rODdfYd&9z#kcQ+!}JFqW~tgdJ^=4g0E~c~-v0JL zZkEJ=nYJkK9U@_^wX?g!pb<7w=;uSGm($L{Hzo@ZJujKY{%qR;z7}$PJxJ z*!8)Aq=P&0cU8+j20=?9(vVaX*`rya?8*d4k`QR-woALsz3+qK1@Y5=vwE%NVX?pfpMX@u{3G_*=%bh1#;gKR zBZ8=a+hI3fsgBKS{@=BQOBqdj_;kL-go_W+RqIJie4!dbJE%p2#UA6;K|RF3U4XKN z-ZV5V`4cV(0>-8B#LxR}N1qUJR4@=39dn;urZycrMqoqqU&T_jS4YV($ENGnU7*Yr zp8{*B`YNA{S|3Bz)R=b?+Tn|S-$zqa_UV-hHN-KYrUg{fl7dSw6n7F(+=c{#`j)lq zQ&KFV>eZJ+*`!N#a~B#R8a28@tyuvOffsM6j~g z(CjyztwLN~g!d9EyU`_`)c2%)eHvQPUSF+{+Pr~t==uWnn&zIknYLXZx^%cEsai7o z5-aJk@+0M`f7;4~fS-8vTB<-@kf`=mZS9v}v%oF=R%o)bxEgYYu=n`p&*5@thW#lY z%F>oHG6H5Vwleq_DXml3uf}^%@Y4)r{&)^J zA6eu8j5~C&q3e@EDxq9a!P>!?9uHkh5So~~^0ZC!@6Ciku$=D#Q1HKecvc0r)Drc9 z!EPX1zl{GwxEyQ^sj^T2+Bo&UfBX&Xd9aM1fkF&?I0VEy3javeemM*)=py$g<>8{% z(7;vy>U9RK7I-_u3AV8szqKdOJBOXPMdAY1PqxWsc0*xhTfH|+IzscHeZTes>YCTk zu9$H|O_-!NKzF4=kjb$Kj;@Vmtl5&YDc(aSFLM_`LUS1>bWbgi5P`b}rZ9JUT@ zpC zCh4XNAQvnawLrn$;HI!5ayzOE_FJKL`X)C*(s1ZQhxkKKqZrhJn!ul-x)k+ZwHV0nkgdv$*V`OOCZ}q&_`S<2nqVw-~T z=-aly$?srWV?-oC(0BYT*am8zVzDlB!|LTMSZJAJE|WP{C}sx{nTCWWoW(6CgkmU# zqi&8!@pGOpQ8jOe1(8JU#0F+OQkbA8|2 zdx09m@{M*#hS+acf@}i4L1-dj$Rdp*5c){i1Gm8Zbsv)|Y)NDPn_L0?f1SlOP(V6E zX55Zo{Nqvoz!bIX?#-FBT#YtF{nV7E{d(8{N*p--p!G0n1xNkoTL7MAX&_{XEtWZf zHuSvyo?`Iji7Zr3&b;$Kp42KQ1%g6g?ckIpfIbZ&>n+agr_nf6<>~xXyud<%+}lo8 zmytliANZpAB8b*Nhl~Hz)Yu58O>Ec(lGp)NXm&>-i-V4^48m&k^t~e&xq#{l(0wag zRb=y$m1K*_G|1E>zz}Ij)k+e&D>Y(1p((7h$PFOnf?}etE3_O26UJn#oWIPm(CZVV z18#s;h5Q{83%DH{dcsK={GEyO-2iTbZ>Gl`gHr8&nL&~o)tZbjC#Uq*bTXWgUMF?H zBhqo^3Bk?OftEs5c^I_RgMffR9aW^FJ)yN<4@U6>ov67!fQ^iQZ=*aHUrPHz9x+l#Oj%Z?Z)ge-Ta7U;*G}5L4=yjA( z2)_;rh(kt_9?BZd&wc85VI+;p6Cyui2k26hM38%-jRMjFMXbHzVvaprNzpHbXyJ!= zKmh4JuCfGqnjf-A5UEqO~pj>wn=LKe6}NLFPfsVxuiwzn^T?0X^ zi}@_*X8(0Q_sjw0RNLh9QcT)+v9Ef^8$@wP8i#~us6huqR{fv8YWBgX2Z-{~xX1ez z*eI%|W=oyzDPre@8e@W*etwI@eiCs3W~2pVJVEMcX!8RQ0OA&OEN$<5Dpz~qqCfzk z#e(Q>f-D0ees&+84uU@Fje^3AatFpXAlgB757CZM1=M)toCa~{*(lQP!LW)zrFi6Z z&^YdEeu2t897~tb%qz9?@Pkbk+kpr0}$uUO`w5>#b!6H z=-D#I)wp} z1VBA7Is$6TSQ=O~=w0Cq{map!k%k1#RKVAu1p>InvmCG&d>-n4;Ql0L9FzJ%!bw(T zW*mYADWaA9AnbXrrgsQ7t_SKF?+Nr?A(5G`JO4AmqIviX5>> zib9n4Htle`^E=vMRhUvk&DnUuEMo`K09K=w`2y&~$X z621fSLG2mDIczhiL1si+AmC-uC3&U;pD~he91EjAM^OK2LV67K-$0ZZ!GBOM(uUdr z38{LGTr5ErnhA2)cjRvb!Z$cdMm*&wOj=${8JJw4j{O|0Tfj^0fC@oSK0hK#=5^a< z;WkjjAaAJWY@^`2hJf6MIA~6S$oO9vFdIV@2SO*<>_9PCL%AHwHLUdSzi@RvoWUWa z>_(8+GEjWu&&Q8SkhTfn8ajUB{K9>&hw@b5L*#)Y;RA5g0ceEcg9#OsNRgT?_fl~ zccd0#kXjz0R-_6bw(Qee5b#0bbuq%ngOLR{EmSLb`56i0#CWmd&)P-}`qxVkX<%O| zW~YAXI%UVbCc1k~q16CAeq_^7;%Zk3{{*v5h}pbBn)g7cqaf{Dq_Zwx&x>(>q|uLT zK+>tZ@>Gf?FsuvZwQ{shHiXwKXse(`ScjDiQrtOxeZ#2lrt-gmEX=;O56(Cf@(@E3 zOkpG)>xYPiddL$p*Xbbmz3+sGH8zy4j@wBPkeJ|u<6DQSp=NPr}k zVw_0SpO!&;@4uroodk6Mt-UWJ)-Hsq(^r#_dQzLf0yZ21kOmnS?kLRRneQ;Zpr=R7 zCve;kmW398-W*35XmQ6tP<|6yd5j2i1GQQ|q_k+a-1_Pq8gcA8XHkc=4&*U2R0SlE zrE)M7h`5L8?*YFC5{3KUx1cUCjOl7wp&470Dxi;ZmQqah1}y9~-E5#LNzU$X2%sdp zYokC2n65fA2IC`8I;fNvQk6igf{8UGxz=hC9&*)QEDoeW!%%bFMhVVe`09}^4YUEn zqZ~w*t@^=L)E`25rrQXK)EzW(7aiW0R5K#DH9tS^N%s>BXDmWpIz(L>uY~HEEbr9? zs~RNJLq$1b)nD!^+-7h&Y5gGx-V!(YvXQVhXS2;+z~81NE> zP~4uL$VwkIWP5gyKVOP8&hklZqy`=UYQ`{Nfa+kZdePn_{R+yjAQc)YBcY35Q`sxt z%F31@z1FllFG>JV2p{vY=Y{DrlC$K^{l?_~-v&Q-*DOd5b*=mz>fc{;t$Csbrss^5QE>uplmOFBBXnJ^g z7Rlqm2+yGwU9!LzL-0M+vf5p@ zvxb4(R;?HR_CbxL7%FxKhKL=bsf>$RgD=F~_DW!;QBDfD@rn+&Q&}u2igpp>4iA#O z@IZt6-kj`p&<~)gg#4YwimTC;cur0SNvZnEc{u z>>mf7m*{|G4fA(?Km2m-4YN0Vhc^nS*Js(#(b%~*+jaHl0X{+F)|!h~(S(%)B>0dG zpXP2fk-A=T;|VrfCh^Nr0a5HH{-YR<&Y3_>@-Xf)bPZ`xrG~~kp#rpyQ`KWW7APfE z!G6McsY|f@#{z@b!g|q}k;k6UwiDf(-yorcV6xyGpJzH(@WOMmu+eAmF;D=ISl?L4 z2STH@tesk)grz9ZG<4f(NWoCTd8aRZX=!QcV+?Vc+&j4#<7ubxPio02AIk+SR;50X zAz6vhISqzj+d8HL`AEue3RSS=q^M%{N{|K-r@lhUhuqT8_-*2duf@a-!$3V@kV|}) z1Op@umM=8HKth`V(ukCW4Y8wKfW@N5{7-uBIE#?}&x~DPqp0fHFpfea4zeRp)g%*_^32s7@vT`5GpTJl(N02sE_;di3 zzoG_t=%Ce*C6TB7g@p!y zAuCBCQda&5h5~aRY<3yOyUaz-PRXU z!9cHHR~bi|*sE9B8-V=^`RFp|hWmCZRGbHubIIn-9p!*>$dwHRnxJX>2cliR?YA8y z4ni_-R@$5gxsV2cU8?-lI|8p!FpHWAMRRRbwA1WJQSeJ<=X+iQxXi*Eq(WQ+2ug~B zFif5AczlK^@5^|%>Fz_SfPi%>bS$<;q)4@4#xXc5Dbi7yD8bu6F5ano*FU)Pqtma} z$au#pa&_G>f%#&HEG2mYN7fq6^HTKX1DTo08YB4WFaI7{Qu^;9+AunF`1!w(7NieQ z{LhPv&_?_}f8A1{a=CxhJqUeJ{WBxmBZ`t(C@}O1o|6wj=Ov;Xjo!-u!u-h297Ckn z{Pl(xL_(#gSkeFLeYVFTz>R2u7?4dur;haVY##z|F!Wj1c9N1fz%d~Vh533RgaiW+ z*Py9t4}MW@?ogSd>KGx5&i#EWSphh6%s4rFL2ct^Y? zAmBoR0wEo!9z=+fS54MYzcI~@lB=f-$-NIV>9x?O4graE1V0Uh-an>_38*9|Y|U>i zVoibYC0^HxFYAlu`Q+%IxOudE4lo6>E2gM?n6T4 z=Q^Sbee3&e@7=$bY@&X!qCzcHY}fShi39YQj6fKXXuKc~e_s!8TVWwiY8)VaQ})r9 z#>SwRXN-@INcqlPuLZ%y2_pM#r45V!{z{2G44ZxT5quzm{MZx}_w%x{vcxvy3OHe- zpcrZZnZH_jiuu)~S5atq6pg7sL&B*g2tEgswWK?7d@?gLtE=S|fSL=GiEz2*AX#}n zK4_#WD1hWap!|mmOu>>LDE0~E2EiOg=V5pP)G{eemY}4zvV_+I0ZVm`J03*a^g_%K+ zQV2bV*Qr6gyy+3wY1{g_rA4j$yz6UtCsJb*p<=~7H`k}=1HmxqTs0-S2+ZKYZy9nP z9v%v{{0ELmZ?CZnZYVKmvKc$fJVd9MVi&@S-e|GfV0^reiwhdHAk=s0{9(jjsT zSl9#ww$!+Vs8RIV0$fv85n?LT+tskzvcsLBno>#+~ct6BZS_#gl30LL4`cX zlk~9E4u`jti_*7^>C5;Kc`}fyUSesFFTs1ZADVBV+-w)AQE^^!mF);art;@HSUP%| zlq%5H#cc#Sh&*C^y9)1zL7x?LSZTg_OD}dU`}EjU3I1XzqlY619e<>#^qU=G5O{O= zIFKqoh6<2CN|7+^)GE#kuu8|nyR+3UcW4%!q#iFXdShIh73@HaV?!6xbMxeCJ>YZb zJ4vksaszmQOL6`lo^C9WuxlYH121FBK8xm@r^0H^+m_wE7jf9%B78Q%*a;nb^-KXz zSOp+A(36!bS4;2$)!;cC25-s94Z&vf2JEi%ZX&OXTQh~wc|PX~?6CV;8vfI^O=JF0*Hb2C?BEQ-5A!R z;c%PJbBps^>|YLq0U`-wgIj;1t9F$1-k09Bhc^ufW8u{dXs06^P;t2UjTWG1|r)*<2xKepxzT06C^h`QXh zpC|tXb=F$;qNcK?<@0EQTjZ*j&q8LA5e(IQ@TxFS;)x7GWhW?Fzco5}Efwhil(c?k zamUDr%@4Oamp^D*QRlm}czXdawNcC75$XpUJiE)vm72KFQ4rk6^qkTAhks*U^XurS z`Zvi+Mdda(V09e8^r1b#z<5t8>(u0rT1#%f+~MAx(HH4DR7|L30rGfj%Madn(!G5d zZGFB>dD6;OkcvPsSm~v$sm7)z&}W&aKfF*Z3IYkDfg}!BAr~s_JZgH2jjKXetwge&3oXYtzy>7Jc ze89q^?Y|BoBr;$ZjJ!atV7eqaKAu&Gu$uGPvc!Tj^J11CAy99`OEqxm*zu~uLPrh! zM&d|c(x3pUE3-@RJYdsW<6Z#G*iHSM<%aCPX*pnOs$Fmi51&SB9u(4?igzPKxq5>q zGq369+$npzVr0E~zT$^VD0(iCw?S{eb!;p#A$pnD7uG|3vl+l?Z&D03Y}KH?BmPt?v>G}-w$Qz#S++E*{S3rIU%G9Vmgl?(La-Mb@xDr}Y~MOU z3Ga5H-vNu&ix=QFgx@Jn&*aI|LN+oi2LI^ZN~i%*(ZI4>n2hV=5B_nk3->xiqLpmb z)F#TH@V}~TIm6$*y)o-%b?hy0(PMQ|Zo_Ok2A+2Zwq+z&4YI2P?x>P`lE_w@fP}`|bCw2&AM#0-D%b)NEVW3P0G}RXTPBdG9kh%4CSU zZ?hg~=zxk!OWPu2;rJg=!Ce_x?rfDd&TZAQ*s;F?dBke>t7!G`xrMFSIor3(x|5(h zl&7Kzmfu+q0UQwuyc<(Z`Zw2Ck5^U*Io&?s(y}U00>V$W?2?gGC+fqF?Jh@O1viiI zCTs*QLmbzbYqgcxs=-?w?f%mI<&735X|15OBNT894AyvVOh>sIET4CCQ3+kJsbOt| zt+i>JLsw3Nx6XlyA8wDK>_LqlfNl#04$8^~;E(zC%i(7Swj3gc^+B%`{5pia7w0#q z2YHdHX6dsXyHRF&@yOpPX?#2|to*|zXG1qZX73#c#S73N%eB;7Avj6!pCl0sj4H!j z+MXj9Md8Jx67r~(2=?0$On5i&iQWia6{tMFunXpb@b{ZUfq1mg#vE`XOuY3KO=L^%ssYmsZ; z$6Ip=Tr-1q8c+iR&u@#8uvVtUHiDI=p=`&Y#oLRM*cfz6EF5o@A#lzNf-Cx;F>69n zTD?eH>iI<1p$@76>kh75Ct`Z7Jyr9RIj4dL&_~Iq%{_<)2;)6z1>ydu=g+;(%SCNWE$m>i|CQgk?_jfwfT0w1^0=Uc91Zwx)zQx z>4SmC%S1rff4nirjDAf_OrWqfF3>cR;aU`c7(aN)q+~t3b|tXeyDpWX9?bWsk1Y)s z;FJa39C(!s2v@m`Jh#=giVM+8l5UilS{Zos*NGUp?Ic>;l(fSN{G&epfnL;G$TKJ~ zjv#|T)ovrdaS61^bILa!xqGcksQRiy^LnXciuWT83YLjPuVTa2y9KJOQdAR{z@jwJxU{roo~}{Cojbc3CxX-lY`u4RX1DknffwoLX}neVZkg&iKs19iJ@|Upb6% zLExZp+|V#}6oPY#P4`cuyLj^+_R?=WR7LBP`gWpQLQD{>5jMA++S}N~Q8N`AGa|L6 zo47*9iR;&yr7?mlTc(-+V62X6Z)4J)yx#>y$Ikpu!&>H(Bc40) z$PF(W&%xb5Qf~Cpb&)zf@lS*fr>rLm2Za{gzu`8m*YP3;&H_En0BH9~;>bo*>FfZr zRh3IEJq(>D|wa%_ZVSHF?Z=_Y&2o#p=ARqflWC$pdbe4f6ATc zc`2u2)WTuxoD8-^r{;F`J!mlD8RUh1sdZ#2Os z#fFXWYH`b-R>yhoxAd4Sc7ImF!KZU6Y%Dyy&}n2#G2JT1XUjG5Wzna7dq4_wYS*KDgsMIO zqd6ORNH3_~v2-Dp$8Hiy!>w*!BRKQk!twY67deZm=!@y%Z^U`8(k`6@5u!z6?z z8eiNo*G$;?Hm@{>oE{aPpiphtx8o;-C~rG>%^OMz6HGE<_~%wj3*SM&{sq9Wm+L9T zcx{hg@rgIAVek7InwN=Ohqo!z_OTltLA3~o1c}!g_Sm$u+$>!XN^ovIRiYRv}*+XJImrX)NXk)9FWYQnofXNq47v5eoC}n zRi;L2p&AhQ4ojEQ<5ov~KixgW0S7>bOuN+(QaC!%OV(A>l1yyQ>%KePlRHw*;2yRp zH8xVcoju)OVDbF<^V+UAHP^iePq=*rJU8Zb6La_bU;YB`3q-Yr7?c|Bi`xut{~vo_ z9TwHvzB?w0A}S)%ZUsS*P)b0;KsF#<(h5pS$I!4rzycIRlul^}r5RvEM5H8#8er&# zp=*fqEc843JLkI2f9KENx-Q&qnOWtc&Un1~%#201E!zuv^9rr{Y})jc$YC_7Q|@axkGAlql8^fQKY* zARC!I5zH>jAL9F54X)^yvCTzGTBSK7F=I`6!w}Bf`rBV>oDz;K5ael|Z>`6)7w5I@RTYDIa1a zPH2phUkZEcr&*<`Ww?&_;i>^C!#Woq?`^&onPPrTWGOxB<4n@>B8>Bwe zj);uZ)`=Yi*!t#=~gmvZ|`6 zoIG`kSHPdgo$8ZlXPtom1ulZfJ}tUwx4+thvi4Q@!oEJ{Y8F zNN^05;4*5mAqYD-I9vc*g>y1EEJ#+7;dyOluY1ZwJ93QZ4jnp#R6uL?Q81ko6%~!Z zL`Fo&ObYw&$M-4AFw=5PWy~&h@9dygV?kg2>@dm*n|qAzczb(~jHCMo%W18s3oue2$2wn&{EPiog!=-67cfuk4BL` zI4+2aS@;Ssc4m<|@SsiE!sh+?p_dlpXL;Q(t3`{{9H5p|v5qa7CDinx`_$Pv`5(={ zDR4jh|8&^Q9&-8Ci=&^n_E91?E)zxPV5x5ul3rCQwhLcG+4?$^I7#vAJ<8gbk$^7rzj%k)(s=T3FN9)PGST| zmK_A|h(i4LCYv&)_h98HL?=6ab#0+$=-UEa`{uTQk9cyA%58YWdhMZcZJT|c%X?R6 zvtqdW^DloYU3{TSadNE5C$TQ`Abz9CVoj(v56HFA41Ysz&aoP!liXU_=3!Bm4saC9 z?7W%AV5<+VxM%G+%>UxjQrj zM1ML9JWgjrqG)&P2Xe0MBmrt9zONq8n4-*$+1c6gzrK+?<}0rbeyKM>{0nc@@jXSZ z^JC64{-q*;p||QviUi)Fe<)bfU5-5inM7i72|MR>%-`x$3D?J__c|u!wA@n566*uS z1Ag&8!q^pz$860s+=vjeUM&p6NnezS#^M1}g%7&CqXT=mxVZ@ri-)3~cm8-?d3$K( zF{Xyk+urJoZBKqx1YeYHbs-&M!_>dlZ+gyGQdnfkHpK7Vir~Ku-q?#K=Kr*8GYx85 zC^3tFu1XZYJV`jTl%%Aj^gO71MK5qs3TJia&Z7bgn&b+!+Kr_d)~tp_ zK2FYOnps--%rWt_e%d0Uw=Bek;JjZ9jE?c|wMX4gog(3Oy^|%e)+F35XeaVDllA%J z3t5WM6U5zl*X1{&3+2ZdCy;Son7HU@+`gvtVu8*ORv(CGEEd2ze(u?Fq}#K*3-wTC zy7PU0P_|l#2BYXfB(ba;v=;p?H3h@kWjN7MPEM|X`*@5)U54f_D*792fhQQ>t>PqB zd-E1o9@iUU7C(HJx`A~Fcxqi>O%V2WnhVW}G0L~Q87#C0(}cj7o{|^!vF5MQ@o{bX*P&fvoVeL5JF{L$sQyL8blon9 zBsJiBAS;I8Lhxsv#7`$!Ho@5KX#Vor={5^q8gSV|T9!@P*=lc&Lcg@Er5~Cho}xwK z=H&dD?y)xzzJaig5v4eRtJ}${D=FhOm~zfpneNmSU5h9*>K-I#F{&6ra1^Ifgw^7+ z9(D!eOJd{j+YW+lb^6`jsl-w|&nj#eb~nP9R|Ve9a@GrC_5OasD9Z-_{19Ko{n_%p zf}6CJ@m`l8eNegN&~j@D$~A)OZiSC0T4642>_oLYkNUICRFLO_U1p`WCnHj9k%Wsv zF$B;upc0P4D2Q|wlsZkGu8tOFcj1foS&%U%_Nnv;sh&$J#b0r`BqfFG;6^V`^e4;B zAz=g<6)Xfr2_`DVR`fsUtecLZtKVIW)WzW-o!6CAP_V)w*tVFmsA-|X#Hv8e?iY#K z*;jf%xEd{oaBNj(=p0YzuA>Y7Om)ZkugLy#^7r*)e3tX1z5e))eSb#-%M9T2j9_hP zv4n2aX1ll#tw_JCSA*Bq=l4>(0mx5X=ZTq)oH{bPaQiES(KW8|s45pKp^UkT3m3F7 zI_j8dh(H?F=aP`o%h=_%#;J|=ev>)IIEvltM1m;1iOBbo@T2+H`NKns(L;FcU5!z% zrE%QJP^q2!S6mmWi{Who)sWWCQ8#+$F0Pzl7Sq~jP*>i57(~RH5BhP9pOD&mmcl9< zt5H<`t>J?}=E0Lt7d0Mhpf4yjb>?O(tC(5g8sAypVr3kSTkWyJaE-qZvCedn32q;2 zyy~-aOcjy@80|@jaKUOcd(C>ZAK0q7F(h312uE!LHyPdZzW_1xdaW5~_M^8JI3N<3 zHN|Nj9zI4%ITVvuqot$x0H3M30Ei_uw%(d3dHDFci+{hK2?bl=ab~U2-bLINyOQK% zCnQFV`tH8JO2n+VFqM0(WjM@ba$}y6N%8bBFUc@Y#S1^CO~!1k=w7F1WeZyy&rpM8 zvQtR#RvjI8g*d-A7)Z`q*e1m@Ky>dm=a$`Twsb4<${19>FtfPx3z8Qpg=?RG)~B)y zn=GDoBO@bw*l@7~(#!CBlTZb5^ireLOOnrSd%hzW?%v%H5Ku)ebzx^YO*^x^U)kH? zWPm}AsB%!IUV3J=a4K6?s`_DbnRJWWQG1H7W2W?+G(aeV}a%RUN6{w zA~?|3UP?^Ffl!2T@P?eOX1#v?!VqZhnA6e-oHl5siJaVEY>NK2DK|rGMRj00824Zx4JZqcTmM|nVE%K(0S#a>AfVW=O%^hSc z&7^QbHn{DOyCs+=DRQ|M6acVWk3K z8$Gqe^8AS^T0-X%Agbo{l|PgCM06kOXsu=2rBCH9YB8=uYeOU-vQ^p2s@`Yg>KB0i zE+YddI_qEzgI>V!zNv}C5Gr|%<1DZ4IacrWhuKEBPY#a*!R?`t=Nw||Im~$V!Pg>m zY2zJ$#+fno{gvcALSc^P`Q+O{A)5W#eL`7S!=Mw)S>>imN=ks}XjIkIPLs;=E(ya) zDNdW4ox{EdPP~FlP`74{6RQsSwjZ%D3RX`}7PpbXIYq%hTw; zgV)pun{Y$A_D<$c0s<>EYA!TXxI}}Ixv}{U~v|ydk8Xu>kK0ZfzHVDl$91H zB&;>8%NF;`zC*_(s|-C_CxWmS9sZ?>*$=i4C{1?=YaO(c^`MsOBB3U1PWNudWa02F_mfGU)z!=dXP6gRr0I(l| zPg)=EMRU~3USF&>HVh8^9)*NMn{crE-W}nOC(2;)zpww-S}P?upa=%9KU`S~HhWY- zVFfuu0}gCOF5iPlCqSYiHl%MYp=Ft1Gtu5Jr1vAH{QLT!cZ4A$_5bCyddOrXY+QyK z66~LAmPgLM+dP4cvh=anvD=t8AkeiwZf-atsFDoJ3t%M|9^O%vhO94vJu}kWivu&V z!wrhs|R$yHzKiORV(@OfI6#2jQT5e+n=05J^j9BNK8p zqa?{Qd3#5m++SR5b$v1y4wbM?IC#iv7!mDFl*C0R7k^6cr_xv$Ah8C6zRCv2*pqzj zzY;fl@@RJ&cgf)F-kng*uQcz)?DVITe%RMA(=Nw5L z_RvHhRvY$qBj1_dH6t}8Cuc5h@9wTl4-wdM*fIoP^9SAec+&XU@l#Kqo>Td7s?_4< zKgaU#1%HzPW#XjjQNbg0GJJNYj=u0azJK=QsXI>&9(=@d(C^;SW(}_VOT7v?O(g2l zO!W+PIZZXWfRT;+S)GeB0<&II8guyV%(cU)1iz!{x|*SDlc~A6{N)8B2IaWTi$bM* z^47Z5WULjZtoJbKM8ek3LS5#Efv{cll{Yu2ws#>{BZOo@D-QAlPwyk{76r)G}IsA7Rm=6=4 zUM!7`j76#we=e@0;k7AJ+lldPlO!T(1&vk-f%Uj-lMUU+<~gBAZ~o8EPW-d}E-b~GfLlOot0?U?;9IpqSc-@Dnz#@8e+M^sdV9i6 zFCX;2(c}LdzMi3;R*3tJJ@+1(aGFvmdb{t?TLI0jzP%Zju69~%xA6K<(fC19TTdeabUkPbjHM$!*kB;2C5i(%NUm|psltOI!HjQdr z%+qx)h1X_Tjr5hKMvIEX_GD^pTc^gC;k>t5H_3A(W`cx=Q`T}*%8g=|*;0q4MW?}U zGN3_B#_w*)K!3wh+*hVDO&b{~({=I0zNZwF-Zi>E`bgo@RRva^R0KYQ(rhE|ZB2aE zZvUvZx{##?Uq|`knh`>I;IczFAOwZfLI*sB5{>1tvBm{UV_psp*>IznOIboSEoYgS zQaX)dCrODB;&i!x{;-ld&yyh;(s-GcT2>dU$`h8L9$VQG7lT*D^kAJ34^8_T-dYVt3?{?;gjzrfCZbWopw?=#O9vX4w$@=P>K$R=v|~ ze_qhuqArxL@t-%K8h(Li2%sz44)Q-d>{@4MvDkdmMqZnw%ZL1gzn7UDv2y~D0zr&G;IrJJS*2q^-{*@qphRv zH`%c44yHzLlTU`R8x8>;=)LZxl0GNU;ig8Lp8bdu!N8_^`(4g zOJx`;AN1aPXYJ^WYmovzYTlRc+i?nNmR3I8&QzBTk+(8=$;GRPU_l69`ecCp6ib|I z9p(PO%RVqm6CA4^hJ+JLeAQr;tnZu)H*Cam&#rzQ8NvDZ~@!nRWX#xvBSKEty(5 zQ8mNm;DG9|ag0Kj3qp{rPm#^`Jr3nq7k4_Ad*)dQmiTt8Ho8i33^$ghSNLvy$$5Mv zqYW{bw8DRsw`!-GbV_L~&q>*22X4E)RVOQ({W|Mb?oUBIIaOdK=Df)f*^~@Tuxy*! z=j@tZPLMw}7pJ^3g+uoec6hzXeZ<%~Rg9qlK1V&RxryN22vj|7)vsQ;izr)*CS`7m z0U8b@HbHZzx(5GZ&$sr{=4;{i>^hnDStmyn3{;Z7t%;7;lDumB)^X|MAh8IVyxf&+ zaKjx(Nv?lD1r45Vj+u9&tVt-9zRoE_)PWX*+$Y-6ALmy zp1)VTq0UrtHk_9W=a3lJd>m+tBV*e}qSI(PZF$@}EwH&u4i0nK+VQ(|n}@o|^J{&? zEa)MF#G*y$ts^iS7CU}2yiGSt1#~txA}5idTA6KAfRr}c(q%K&>%>5uc%#fM*gmsZ z#;0GLu2;0vIqDhR_z_AhQ`a&+#BYnmg{*-I#%u~&PaU&tEqh*@ec6isI4Kvswv9V>0Ph2wJAbc zH`KG|>Se=Lv}P&IbvMVBp<7wEm_*(0K|oXQpLQ-j0c3+8%doq7zfK23x-CWz2tSA|oGfb)z&?!d&hC`%3dN zzOw5%KNrT(+nZ99R01Pr1!Lx8*`06E(^{WvjPzj&>9x!_C;7@*No@-LaSSSt-VcJ& zBV!XPDUMz1S8lViZCIId>wY4P1Ta|znQT3rD)!jZ8=ke%Xy;LKmXKqI6$_vJL%4JA zQ@PEddW?L|Zfedz7`w=ocg99p*L{dP6=V-ZZ~Lgu`jnYXn<6;JAL)m?)3yO|wgZw( z+2#xf?z$rQBJb)F!e)G5_<=kCm&%c3qsbnh&qn=MyvYV>NAm^-&Zn}W)t1IuESnQ5 z_GfD0Axk<>wmweXasFrcde+J>%#@Mqj%ZP*Vae2i$lBscWh#xfkBS;;Eq8@_bUL9Cmxb-pPVn&iSw{AcoP?>qyZ3%CVF3BX~~TJiU9A`Lnpg z^80tZdWpDKEUF`3yoRMIuw7;xKPJ*t zVwG%6h!-?j$Xo@dztebGzLI2?-mO1lMVtLob$+R6*NgkUeWhiiYR{Aq!*V++bS`{1 z)|EdohsAO&;ljm>Y;s_Fn4Q&bI;Hqfd{lBDk>sqWGYUq;OM7#M7!2r!i~qcInEp;k zSCuNJTr96QU>up+ge!mEPcAa|k^gpojvjA#(1G~%@On1AKWVId+vu3!6yGq@EP^8t zG*n+XJ~C3Qag%eM>E5OAsm`pdO$0mzGstgG?+^6}jxpLS#IW~$U}BMUdPZ1W7LIOw z?B}}tGtJ-!1}g?JgYfCS22*3GjUR{&b29}9aZ=S^NR$bS&`BP4oYJv*m^iCNN9!`}WgZ_|w{ zR~jZaA3l7@;=|HkmbEJVDz@dzl~uG5FR#{Gzei{rF>cq5piN54#dsG>!p1Cb zC`r_$N24gb?NYd0xyP!VrMT1jv!BalUKI~@(nPCeYbWGBbfei$;&5v`?UaDT{|w&1@Pc?TOmHm zqFRyN@ zsnr;VqQM|v#;iYq0M&pc)G~8T zaeN^g@fVA0LTcM8#4IWwyiv3NQR|o4Nh)?Tk-SE{5uZI4Kb_6~H86=D{w!O1-P)G8 zqnPokvJ(Nx9MdAD8Y=Yb-{W6+HNFiJw?G=Y9zQJTKGGJ&KlkB6(_~krsMCO=@8!`! zrGPnVAfgeBh^0D2R=f} zq`z!`mjU>I#*gW1h0#A~&rH$l*N5}hgJLk8Kg)Yw4R*!%k?KYy5xmy3>hw(#5L{&L zFML+#iyIh6d51SOXY_j#1{|(bsI_C=XM3C@Nug;Z%SVr%wz*XLO1qg*Upr1-;*7*4 z%4n)wmRC`EZP}jw2?9caZR9}9m-B~kHF1aE8%N1{EQ@?fP>9sOEpX`e86m5V`3c=a z2WY0{*L^&Yeh=7aRTKAEweMm|?(-(+X%Vh34{ujjSD&5k>EF6lT*i6-qXZzZ(57IU zj(a}D?efmG2+|&RcUAkV>Y1u^$_1|V*o8~_t&lvF#*K>YKL1?0-8gmuqt}~C zRi@dF)wK&FM3X{WQrsadJ{B(A+L_KlA18z|OU<3>;x{%jtqjj(uF#nGnBo1Z@j5NS z6^5>9l0-nTc0TSw!JDuvB@c0NQj&X3o)_6$z>9it9;m~QP{yoKN!{_~`iXWNZ!^IC zb?c3z%3V){`-&g7WVA`awq%&mM`yY3pO5f5l6-w|pHWEX-?2Rf^~?0@@|8zBS_f)R zpQ;!meSI0rL9(oDN^r@s!|Wm3G}1t0Of+S>>S}mT^|qwM`(`cwIM1Z}wA8)88x*uL zhHU}I=$ywIbVhs2Cfi6J_wT=#t${qF*4)U{i3-3zc=pDmCKRjR#2PPw4E8$XZ@SHy z0NHp7pNEB@4|`oP3Xy!`+b^~nWnQjqW(jzS$&GVM85O5@jyLcuYPVI7);gSYxyf=R zLiIIAz10XBtf5gaH&?@-4)}Jei?tEg`pbm_6h0bzbX7T7ju6KAQj+|lh?F_9@uv?Hs z{CXNYJG2rR=3UP@w;Hx6$ceRlN^MDpmg>r0m5K{TEAFwaaQ-kKgVkse+q0$L1K%Wh zN5mMp7Nf(9`a{;TtO+aqWQ$a>e(ZCRctwkh@oEQ}VvkoW8%~Mj*_&z2DvlXjiVZNN z3XwUSf+tThF^%M>$lBvb{Z9)i)z8wZAq{xFjT!FtDJUL65egFVxopA0$?Y*yODhua!j_?)J+t6@3Z zS8S1oK-qRgR!9q?(gY8CxbkY~)tZf(-Gx zo61*s{}74O$93KoQ66=kZeQ@=-$UkecR`HW)4c|4T7b1ud0QsHq8QLH!uN+yS0K>( zO%0Re&?fgt(zoMbX1I^k$B%Hj5N-R*bhw&Ewl?AodP-fq@_#P4pB|V`O;7)MtvsGh zqE)oog6z}pf&1Rs0I2gAm`s;FP5v~t515}4*(6GqoV`2xu=_Yz?{eSZw z#gWgl*z491yi|eZbF~Q30r5%^51$6&sEru-EJiEgbaj*A74e0}U$(J@$Gm0dToMya z)2!j`T}brLr{_skYoXl|j|l6nO*3mgjO&@0!ApCpk1>{j;Bw7EUhmxISEOB^vLRyfEMZ7K8h89W)Zdh zL%)bd3z04@JgPn__q{vc1h&2W0ps2t>4)22VKyn5S>7`bSV`b+*jL(%O+bjX*1DD_&&C_#?gmdG z%0%QUlGy6jwCQwm{=;P>`ETD_GDlLqgD1p6r9`^l0g%sWXcd@>yHzb#$=U!bIn_2k z@Z4|kJ!JJwPaR)!(uLUm@+RCpKEZjDyzXTq+wx(JhXa*Q3jx-+e~^k_Jb$I3WT*jJ zL$`@us%M)|T5q~YGiz!JZ>7{3f#|^* z-L?(RQP=x&?eoII#JJe5|NPv02e4S|CQqM^aWW)a%l;d>1>dTiraN}0K%-d(H-zr_7KAMKIW|dzA%vHEVZ<47Fs$ToILht`>WPV;AYc>(FG5LVd$FDmk<|>!oN9A5 zb^-AUS$?-GTAS`!QBCt;1~rBcjuV3SFTgzAEs>0U93%N;^cu*xefEvm_K2SOx@L=H&bvNq1B)tL;97?)Xeh&suZ8 z@}rezvw*w>N4RO%R4k4AbhISbFp(bE*}XROasGIB`*BR08>5J|Ru+H+5bz(bR#35u z-9ecC69SIWXY;lcK0{p(bV_XyrhdgWHh06z=_+Qe(w127nd=RqPa+mDXZlA_KR7gG zj4x8=i>&PpjuxI?*smb;H(LJn`0h#$ern6AcMD0Ga!tXVkga+0seu?NQ!`GT$<77K z0JOkMQ{w_+Q36QCG9uPfg8#(&d=s}Gb&w^$9glAtp-U4DIMP9XMec#ff>h09q>&F# zgtR|Myd!c=lL7GC;G*1}d(oSI2&ujl%vkdD=*+`6Tf;nxicqz-sNWSuh>fy$@GdZ} zQXr;%6$gNoFHI~>BGMT)#t8gMm)|zTFiy07Ap{6nODd)R8(FcmbnT`&b{1RvgNF{4 zJT+Ow(Nsj;13maAZfo&no7tOP?3faaXdH`heyf(*>$x($WLe4CWnS7)E@}M_uMs_`BmF_J~-15JJ45SKu?r-VrZS$~~d&!lH zxsc{&L2j!5tjHj8P5(qf0(ga@+m2`?7xmot>S}iQ&#TovSwbEiu{|Bg5cYaK%+ap?0V|~U0T`fg(g}8 zw~`5@pFy~V%&{@IEl-du5iql-oDi3WxU#?1!ic*qvqWe_{-T~1qQ>2Bjjf$Q9J08$ zOO2%G)>&cTcUVd&_vf%5eAlhjF~pMFh~FJ2AUepSQmr;CZR}q8Ew~P+KtQq3J0Uj(J@Qs(FWJnUaWYztfiA z_3PLFZfT5~Omv~nlzBN8vP8N1*$aEHX!|F?QN1GXkD$B9Ua|)R&jJF=xLRYHH#t9; zEC%%5!KVK$Tfr+Vab6NY#pL&ea4~p^!s-mUQnl|dxb0Ev9?r`d$y2-BKVO4Cd#?}r z4(lhUo}pwJwtl|*?S~##s~CV&`{9PCL!w{TT_(|`KEAJ}F7>a{6W=5^(f`M^6sBXrJ zZHEt+=Kye?>c~h&7<-TSc*c=~cEh)XY`(FvJ3qnHHU%%C(el;F61(T+dJ3#x;;;_d z=bH!qLg?IE=HH|aG5n2_=F&I!w41t|-m)7|1x4%vxz^=qeW20&Bq`IN_xsF2#98>e_S)#r@T z0mzbOuA`vc$N!4KLm)%~8Kih9I}f}mdRI10;zb3xr#Q-I9um^x0I&4W@KF-%-;0}W0VTp~Wzzw$gWZ?b@t+jw8hKh*JN3Y(Ixtsp*&H*2IaNYNkS4(1! z!nea7fgatr8LV66os76M6hqW4PJcB(sva5-4(&efXL_U+8e)L2cq}fIO*2TE+xOL= z5sY=b;n?OtUTD4->BKhVD>0X?Vvuu`kOCBX4Ib<(pFBVfI^0@_EFvyb}hs{1O#&hY&{IrTCnfg zs}!y{>XKpTU+ z54(D&8cQ&BOs8ky7t$rCY3UOq>gS#^06OL|DEvk=*pI>h5%#4thv4BnGI8~Te}nsY zYBgoX4_w0mX$yf5_o5_RJ~rG$?;NQ7p$PSOc4QvE0ljf|Y%!KYe>;Agf(og$C-hzm zIyl`|y~HMm=qFGTnkDh>^Q{4bD1GSdYGqJZ%Bk%@Sg`JU?a{Rl%bR(5Y;vI2rpO~h zq#}QURgw$fU7~5;VX7Gt*qwBVHusHt!!;pq*^o*M4toH_g4BI!8<4IkD6&a5S3)H8 zl}~#Zdjwh?mI5{oD<0r(zLb+yp`G$!KSCHjaa{^WzKRYA5_f*fhTsnfV;f+@1F-G_ zrBcZx;eIbnaNzUKwFSOq)Bv4?m`enk*Y39A?}ZBKc8D4W0tmZYZS4A03Y061Wp?_{ zBXX_JhdH)ksm46Ax*+`luTkw=Hhd<_9O)C(^$`P=YXyW!#&Sc0qyroU#y_%MZh!Jo z>;TF&!>mY_U5@CzhDIK8W6w$7gNC9IHr1I)`hA03rKiL37@$Tl6mZejr7A?S%PsJj zZ1>TEUFQ4b2E!T;EN%_0jrw{KaYw(;x=^y%r+HutK9SzO7{q{las3zQOI&i4M^CK6 zCkH-N5tUGAIQR#pax*|>qlFgGbnrQvb3dsEQN0G4>o9tM zu7SB#nN63*_pwv0JBx3hPlbhzwDwDuL=QT5d@}r`JNR&i1=bsJa{Sf=kT0nOo?sUJ z*wBz=7~6K?;|I13fcu%o*ET$k%!dn@2{?^C2@GM8%6O86Z(%vjls(oM#d)Lb;}kyU zqT{o1ydLI}>E!&I;p(Z-?egQ$gU!g@yF`Bj>{`0ak||}TR%3<)eB4rFSAryk(zx{- zlOfOLyge=aL~FBXI(NzO z>R~kaA~d@C#~nJi?JC(2My<|y#3x5mPFNDe46Su*=r#;X$tjCCMz8qdD7sJa7F9rls&(G74pqd|reTskVef zl{_8HulGZ$xrr$@_pj(;y~8^`5mUgpBt&fPW%PA=v&vc0vZk5c-PKWjb1GHxE=s!l z&(a6z<5z>J!0M#u>L0n;MOFFA`3FB`bj-uF1kV0d8OIl)@1DhA2BmusIhtVNzOEIe znFaDGh;AIa%R#q7yBE77WwhR$6S2>fG$^VYHhX}xefi!rEX9#tY8qL?BO4m;bVWe* zJ)KcpPDK4#^$f_9aN;!5FywlBV3wxmoEC3xQD0%V)6BZupZsvnaJVW|#C)sklp&EU zZ~AV}pwW$AXlYxLir$q{9eEnnsQX&1KB1>F_Bq+x%RL?4^hx(a;oW+z6nev9TO-d= z`-s56Q&caqQ(D;BC-(;(7K+Q1{hi*1k#E_8nI-gVLgL%C zjYv+6HpLG=n>XiP-89FmLHcrC*>ZGTdTU)EUz)e|ylDIY%Ja_}5u^j?e<1J~nJ?U`sMO$Pk~3M0v4+xcN5z0?$v**%1hv*5?6;n zZDXUOxEv8&tu0N7Yq4A7>IXrmX4JOpMEXO1z#+0QK14M8%p`&ebQjw5;RK&i-G& z!hzzkso;;Pzv4bM#%Fh=O>0?zkxOR09hi%Qm=H+jHLTF*T6-1zykq_I#lAUW9vb(M zjK;3HudsCI7~te+;^Ix$nGXO|`qztkAA4`CXcv)Rd3)imSqBqFkKeF|F2}J5+=TAn zUUi09YsO2R;Qg{c09!%LApGO;Y4`c?ZK_bI`QgD^n8@g8v#wB;ypk@>BcC3bmc;6_ z!i!5jf1(FBr&s65Ft|0XrX&1)qNF&hOtr{mRt;;5lax3^OaHK#w6u&d=s_m_`{lMi zL%#MWE{qMY=bk>g`zlt&a(Ex=`hUmKu`CSQ-E$_Q;R=u58`ENpre{pQ;rmQvAVT;= zEM})hZG0BI!59M-^|r6|Pv(uCQ(6y-YIOH_nAuvC-8QDIW!3fi9~*8y&-n!oCF?$x z*(a_Ta31b_zPbI>Uhd93tLvW(c7q6Bkb>6dZoW&3#X?Q3^TJ1+jD9Sj0V+b%;~2CB zA%E1d$|Q)2KAqXfrWKilAMJ8I3!|411Iig1)(??z6s{uCDgb}{QzrmJ`D!py*f>_$ z@KWOv(DI{u2X4pA>X>)l-Yv!t{si89#^P+a7zD9=&N$;Ah z-ZL&ff7?xJJu}~Zz*yyyJbL@Ymg~>d92iIh%`InVy}$PYOlM>~?rPa;5UVXG{^~x| zT>8*|8GDoGn+k)M{f1L6KIDVr&-=c8Lt$`>VT9U6z{mwJLIrN1;gCs7u*%2R`XP*s z@!o$@Y`fL!NZ5s5${h7wKgJYK;W!#A@=uCMasdEL$>W0W$H*5biE?Py0>*- zPTa-stCM#rENJFBh}((EIv~Z;;gQu*Y`}ZFbV-z+$A5_L?q3uNE`@|)tAL=%*?^3? zhO()2LDl5DE7%L>`%$!TH0~bvOQ^_e*iQwl4lO?RZmr19qd$J9S+83wi=iEpRa#&r-cwa&CB{t0 zNRy+I*ZugGciX$B;|Hkb-bJ4i_53^Il~l@^Tc_iCigpu_Fpy*g$!4lAZ(YIOH4|`^ z%^Cn3wVZkW8W)X6PwT~ z&fWRPnMk8x+g;Ph!Ovj8`Xej7hYkZQfjFX&dg10x7^`U)Be*lc3-m=nlPR{)xvT57 zJ5iA8)uX+-pZl3?-PpFm#A!b6;FA2*%yqs3)^pcY+flS$h3AkDOJfZEMd; zwBVDU(n8j~e>X-6^M<3DP%3b8_kYH;cNCn@a{ZVC8c#Kox^zta{-Gc^VMi`is(bp= zZa@Hi8Gg3qS0GLAp~%=`>pc3yN}DT_I+hAtkIeKGMoUuxWp@m4kh383J}$gc6}#4Q zzf#2y+eEN|;F~u48+E|SF5T01D3sKC@E=hZdHf3wu4}ifwD~Yjqw|b+1?Rg9_8&O# zHY{eMwZfv_Oo=ewWW;}CcW{5b=b0d^?{h5s?Yb3*iV{RPcZ#&LHZU3;rEp zVbpg>s@F>j5Lg1>p=`*2%UlU|U?cn0v1FM<^Fq1eB2&HU`nRgsR|lv7m`}hL3=O6W z8$a69q=^-_70n{;&un6)AYXZM5@G{b8~`rUw6hy!UV{L~bPF#u+8KcvO_(Z{l^TMJ zfN$0_;m+-s;X_i&smwC!2cc{9E<`x0}UkbL2yM)f1E zysPIFIf=RV5pqUwoWUQ3U^BIDv{pl5-aLQRrs?SMM<`p@uF6=|)m1Tm#jV%qZgHQ8R|iwPWV|0TC9k?OY}Tl~ zzxX`wZ-WE{gCIx>{$S(J`1n*0)Z#*Z*W!=?rquvCaIP?3G+NdCP$0}5SfXVy2C`}^%w)-GC2=*4i40#oKV3gxq0A2-!Ftz11mESkN z&ffk+*wYr!$RxJUqrhc5&E2hoX=Q?(GREhg*6g8m^+UU4<+{fiSmvr+LxHl>{Il)^ z=?E${8Ay#<7!6hZu#|+UpBAs)%$FzM;Qo8y>DVshjdBkcp0=xO=&1x5TdWpS7sUF& z5ZAl5zhY+v18>WQl*Bgs6sy8qrxU|qd`V6Z9#5axQZ7%{KA(S@F4E^1qNdi6S|lB1Kv zh-0tb(Om}>5I)w@rCQ~T(88GAZhqhMeLAH{4_vE$LRh!jNn#IRS+Ywzkt*CFGX6^o z?6O$Gl(^$>Q*-}4=v|pwuJ<#RH{iAi-{mDk3PUJL<9o5%;c28h-UkBDVx=HDJLv@& zH~UI4c+(jwc&P(Q)9mXhz=KSYyxnQ!STLWnE9}`X$4nq^>Fh`8|96*;9Y5Y&uYQT) z@P351gZm{LRiv?TY&wap2&^`~UbuCu(X`RSPq!Oij(V42wnD8$#So2ef+YmLERJO`xC* z7f?e}!DAdnuVjj4497kvy&g#7c!5n}%W%$mR|*HzT@%1qcFswFXz`lua>e89KM*eK zHu)fs^E1<;_$f<&y8JQ*Bdl&A_&J4!Os)=PNPP^iQ++iuvpXxpgf;2tAZ{9qkMyxuBs(|0v#cWa1$5Qg4--g;mPRlM7k8dVLxm*W>0i?CD{t{* zMk6%D!{Z?r9@fInA9xq@`x)@3-7we~#K>8a4XBWp|8-szKR<|G;8u%h5m>*Je;+v@ z`uC+F53T@Zh^kcUk@>$Y+r;7?UxM4hn>_#Xi3By>5~t5>wZK~q4dWouD?Qr>1(>J* zb}zlX;jhXtzwJKwj>=ctKO5KneBama-`2xF`8vRBn*Vca_%A2=e}4Tx!}7lk;(yFx zZzy~n(*CpVX7B%-061SJSUOuCJ96Z;C|eiN-~j4t+P|LTi|qgyzQV|#|8p3y7VV$1 z0;EtXhIVz@@Qm+kh!aD2DJ%U2&|e7HnTbbdArDI*8MNJruc1ME$afg277~(UBYHFZ zJBJUT63Tv`Nxatxt}@_tY`|uBu{i*}+>6yIkir4E6kxgKhWIfBo*S>DqtmD*ckY1l z>*lltq8uWzgW8!1Oe_<$nABE25W$htO#WOdmk}Ke2(lU=`2P1oiV&vDDt>&(qwmSJ zu*x_{0Wd3StCbr`8tNVZ_t)Qjwp77=^2^k0`(=PN2ziqNBx>SYbv=W)`*l22f6(mz z6}rB`TYnLCexTijT|gnsiFep6_PVp~pCZWTT|mY#Xzla*$_+;Occ{@*oB&glYrah6 zr1IVjfLzN}sza0JdkZ8sCxU6)#uA;=Kus0G{!NI$=+7|e=iDFOkNQeProz|3f)F?B z?&X%LKpsh?K`NH1<@G;p0y{U1<1;AVmGE zua{2H(7heycp+KaUtV~#;h&9-ZSbU+o*$vilP+$re$xif`w~G+X)b=Q&YT#$!dPV4 z{B=je0tNMGq$Mi*m^LQgf9fxu!i%=NX=IZd#Fz7>9@!gnyP}sMN|lM2T7Fw<)4xRp z7_0X%#i9q`uEzIX;}rCOt=mE4%mhFazsv_l*Aw#Ml?o}&KtfCe49Y)#hLqk8B&Q{= zob1&B`J|2#nNKcXMR8#(az9j`i2oL>@zfX&8Vj$zC#xIB_#od~1hpt}>rf`i?^%?`fIVjS6nw+;Cso|?^Y>~6nq1fO zJIf6CykmN)Wuw&gO#6rV*JJ(#On(I={qi#D5Ug1R zOs?>*Vm#b?loZP56}MBMJx&2q8gv&=Nqw;ag(|k%lPa!%9=R{*yx_!Mpwzx}`%&!xqPu2wBd3fGqr%&%4`j|{u9{v88;iC`5=p^gGq<6A+`;|{?O^a=e7I~ zuf*)}+Mk2|n%ps?xA&nUDB!dulyBm!2ikl|L=W<3D0`9I|Kje=!>Qckx6#$0c8azX zMJN$Tl+1Hd5}D_)l+0u1%nhg%rI0d~d7jBKR6@pO%uJ??%RDb@t@raR+IyehU+4UD z-uIm6x@uo`%X*&YJA9`5{@h=_Eppoe%9jJcq;D1;P*q@#5p!9#hkAPu?nItC5}K;| zKwNTDUdhSQ!@Xgz*X#2B!C*>2nXmdGQ;`kqgq!9q)d_^}pWoCGlQgBG#n}{ss&E^D zo!qLubT&r~qei93?~&XE1Ktkc1x))}C$o*elr=9!EPwlM#&nDsNm-%#+mWRld}PG} zvIZ`wn~?_)+3_6#ENPIBb`ZY`YFI;0jyVDdCVx4imwzc;%?KEo)|*3J-WPhaWyX0- z07H6{C1~zM`dELS?(G8!g%FKOeL|*g;dUURVSD=Y*DA>(n1lp24$<9zLAkc2GD@^g z|B==8Yu6_rJZ4yVv846^!SEm%LUtfq3dF9n!8VzRFBwyG+p5`1U}20MAg{$spa>v% zL2vrugqwt5V$#s1Zc;wo1167)tX|m8o^scKp-UG&RHyV44&1cvP(9t@N#gCu3vaw+ z9m8iGQqw8ydhRNQ+A}F?zl#WkxSrrk^}zs-v}+@Dl<5pcZnK3Fy#@GrW~i^mg*U+~uZ+e?ruW$|*QZhbg`i3)AHOZ@Ixhe2(*_CkFf&gLhK}C^HF)SGXocUyI(Bi@7N$?dy661!mANnokwx z`DO_%|GMp(ArLqWK6N4ya-(EbP=X5 zpBKmHb$lvETxal!&C_E8b(d!XM1G{d!+#_!dT#Hs7rA+XL{%A8*tPEeu|nEh1gb-a zRKR9HaNgQ{WzX_ti6-)(;D<$+guqMpT0&{ztr@bnK+@s^i;KIb_3st#jJ`;~Y)smO z2`is9yxx}R`P?p*pDWGRd0cXsU;Jl?am#PJ!cCLXtP3BEbwa-ahbH|}Tfsu3v!006 z=Y7sB6NQW4N_eI2TTZuT<_(nwvhR2R)rhbN8yc?U7r+$C2Nz!Ba?{~% zPL?L*QH0Gcj}x^8(?X%Tv8TWvEDgL%0aZ(qM?;WZ#rZe*J*Zy_?Ij z^zyZgI#7Pvhuhxt?>DbHuRs+{SpJZqbnNWzw0*}VvmC?uC=Fb`^*hk^(_%s=9my5u zSU$1&PfLfXp@w>{Wu-cZc{YFVcPPD;7+eqK0#F9oWMTz2Bvb8(K1LLZtWP1$?mC)e z%pie3QG}<}%fBx&U~t@MGdcWFc+#tQn8=P?i^!pJQn!kz3H?iGLAtPMlrvO*i6F-n z|9-mX-RvVua75n1g@Y*>W_MjHtuVLAPenB?dwdlkQUfPt0BT-PgtE7^>Q6O!mZ`g4 ziWM%zlC7+Xb_ySCe2d9v;H~PoRUpO6(ja$lNKbZqxhcoto6zLv97GUGzQz#Yn@=tx*P>ckgzA>)||NFJR5f-S8`e$Mzc& z05YKZ;s5Z>K$Lr!d@RG{VT5ZL|Cfuts+XvT9c030H<{7%3%^ zpl*@`J~@nB{qA=)>0wC1L4Ygi=?;6I3W;OC$ip5%_AGRwvswXX37dILM?hLWgVvy@ z$QvKgwu+6QKZKprF^brpvtNu*j6mxB8-W9=H;c-ZpjM1H$`G*);$S`0a?Ww_eak6x zAtcHKABKuv_US!QJxJlSUOO|49W&43rvnU{iU}q_g@3n8&hnb%^?_e4{~iKTgwnrH z<+(e}q^@4*-N;wFV)FBH4n|?c4|ZW>*v~HKUt-})4Of2Oq(4jEhhM@?8UfZTnX;=~vGl<0ABP08%W_ab5zCJNI--;AIkQ4+dC~2l80*j!g3t=B9 zR2{%~L6IT4j}F3YvW-5bqc$zeo^L+l;^TDhGKB^er_;Ho&wmemL9m=lYuD;e-V0-| z8E*GpZ@*Ju(V`c!JSlYBplP}#C#`~o2COM|WxBu70v|{Hj6vv5h=1t3`}%-+Wj0;-V3Db9+S8~J1m7HbM|(*}8;aC#7M4RBUadm10EFfDgx0 z1J0R~zrA7c2p~vsPAU|dZesAX0QcUmASjlJu5d2*E%&2O6c$-CaHyXk>V4sSd#5&M zqA%f4QQQl7LjK{iHlGo)0RPZzr}OAcG_}ycWce=Q+qb?mU=GKwdC! z;~J)QZO@+qYwxw$s8#8On^op)yHtG8gnMJXLcn82vC_UObI;%j!?fwE!F29f(a-t~ zc2hxY68oZl+#twi=yx{+D1ErISRb;bF&H?245l#Zs2Ey#>>M zBd7#xyk3iy8uhjSO)0|^t@9KwQMvht~~knt&$3R?nQ@X2k5Xx_S_xO z;}Y(|6r^RDnoL%|^qJ`CNZY(K$PA6|X{sY3GL;lO6(4uOF44!JwuI=>F@pj9p3dpIRf5u8pOPrN#zG5Xw>bhtSYx8)}1u4f@ zx)50}PZ%2XIP>r~8&UJ&aiBP8U$jxPGR+`yH(9+mZ-gVY|0)yz-7X^&Gg2C5E8S#< zYZ&GU?dn`_T6bO|Mt`k0ibQR->T@@i*z6`QLF5m8n!c z(|-CH)>sxG-5a8C^8Iwv1ro6)K$OjL^qpDXJ|0TRaO4M2HxZ3_9p|^C9<^z~Vt3=I zZrvs_BuvMHa14TOzP+*1-h;D!pg3|eleQ-K z!InN~!Y$V=r`X~nqHJ0wXs!ZLa@-}IB}+FWg;$X~Ke)S_u1rL#pgCu=t|OiM<#EB{ z=8IQ}IS-afQEsz!p^9ZovwSZ%>+{@QCmp<&a6CmmLh!o2!(<%c`GwE7LbOVA^P6io zA0dXcPPe`zP5p2M={ZNXrSHJ;wN#`gupk0qcl&egF!%g+S#Jqi4A7h;az3DAz{0s= zfEGB_xZ$U*y*Zqhp`>{{UaaDm4;UuqsaMIb{vLnz`{#uZ%e6fMJe@fp?ImFRe(0Y2 z<9#$dov&y2vboH5&9-_=o~g8{c)7{e9}yq3`AxQH*ORTFlald5rWI=D&6TrlFJq1u zV&7l7WhH5!QF`piT^F&Rt%n4_a@~61{iyyO1OHQd&oGKxUUxp$htQ)u$HURy9YJ>G z&QBNz^q0fRx2CKJb0lI`1qP}IzLdTQ6CoMpe%3`>CQy(E2l3BM!oWk#J^UtJY*aV_ z9VzsNu6Cx`)I|5lCghR24&0VH95PgvLMlr?OrP8I$$*7+bLyY?Vd{TnkE`+G*|#bx z4j1A|N9=7j;r2wT?0S| z?;L`v)h}+J;#d;xo@300w?mE|^&BTv{~jB&==QMr-bIbD^gN0KI z-h?QbcY|J-wrsVp*;2t8;c}R|dwi3g*Zt4FU>wOO!I4C%E{C1%_3L33#$9=Ln&dza zz3%WE>T?9FTKIu2_CR{N&-bpn6jt3IKz1$|E-ykyxIgx8<9-XCdh1AG?*{vHLd@|A zH=gm!e8~D!BHUiO^1j}2>DZ^6CokL`;a?ex2*R&S;^o36ab3hvx%#Il&Iq*khNj2r zY#Wr$@`uaTIuf1FUy~D3zZ*WhSm;vTOL`!6@4jBL4Ypb;*Gls;jf=|#pTn@ zu<&9Gv9u6R+;pmVW%-pvNhce=u6MoF)yJeuGJWmun8AZUBj9BFp8mj&N6S9jN~Jk@ z^UK?mHYV6llz;t&$mB)trh+X&a5JhHzFiRJ#9=f)K;m}({IirIu;Uc#x19b{tTM=( zX>^|w>-`98H`O9fj3m_?ynhwLy{Cm$u*sse{~lk;)w>}*675&c_*1#Ok0rT`Q&YJ) zWVaoE!4IZNd+=S7udi5KLruww3MN3*vdgHm)+?=J%FP=F+Hvq5&Y>Z_Q;o?uJJ@;N z=a6d(|3ZI}SjXv0wL&bmk`ysMV6m{u4{Fbex4_e2C8VyYqt{)374ToBL-n2M1E1y_ zLf)S$b-8wWD@b71(|E;H;%_EsqJYZD=|jZeA%A%15~qca3b&mU4^|rA{$4Gj$-Zt{ z(-|aP2`|IQI8)SUOLtD+cO> zFUYH9^f>GHEC#5f-j;0*`O{sx^!%Ac;%K}qVb--`$+Z(+L?ws}({Wydfq`WGj6%?K zPY3wlaqUNtGd^vJFX?|>8KB>@>Rr+MY1(joqjV(3XJd>$oX}`|mkJAb0B63;L%64f zReSNX-jUvXoAD#&KN?E)?~xdYx;6CfMSRxRwX|vsRb$ zyx43nFs#f`cFP;P=7XW=Ix+wH%;vAk;A1TGNnQBc$%Mx?2cX1@`a(gj*|YQ%nqk<^ ziRMPYnoEEvq>uT-y7d0TSrBtPSJSzX{VQve{WJILUrJw1PE&GmKT&zNrFlyH#8o4s zScMO&W6vJ3GF)dUl)EOtwJiRr*5}jTvbv%VhKm(?i^N=uHQw9Tyg~itn_EQsbpav%YH=4eI9??m44zJch zaiP$CrJ)t>PsFa*U%H{z@4ix2j=rN{-bW>Vz!&h^ZwR=_`4kC2rB8eSZ+3S!kY~dW zetK=`?{}h5O3eFXP3L+A2`?3)m?+k9yzp(Q@~q6hfmH2^hsv48qtPC-=L)RwYJpwC z>{5N*pNy^A)6YTuicyH0ndxw>eRp?vf;$1GeBa7+O8?`-saFGBD5)tI*P0Pm>Q4r4 z-o_#21Mn{um|f64a|EomuFFR-HCc}-Rv2a1)0L?hWQ)1Y?quz~!zLuu2|{H@{=Poq zG(PMXbFkk|Pd=Hxc!y=)Qjp#Xvx`9oACZrM>mP~{5|304H239!o~q5V=79@pUqOi^HUpi z38`05V{pe(N=^-si;!=HR%)*vp;*3LJxAzBSm48;LGPfQHSzP^_d=Z{!XRn#gPrRJ z9`ZR;hydKXWFOWR5}V&5abx#8)5C-x4hyez2J+v6GvKUxl= z2`TCJ>&;i9u=Zs?r!?m#w>AzX885AkKt!tlZGVhSzx8o*$nQ6|?7+sn`BgY6hB_*5dc({8 zqLpx$$P{3S7b$>XMl&KJyaTaY2^{bMi4Z=DF$v9J&qSpj*?KT~9C7n)muRbBwjef^ zmY|)Nd+0oSzC~}-0v7C4>>AN5rEPQzcHG1_?D)#~YvYrh5CI~QM?D+yD$^0FG|u(b z<0vH~)h6?3d@rR+|`f?B?htijr=Q`2hJcj&-{<4NpJmCU3@)TYye<@kUVyOEP z&zs+Vx8@lQ&cjGM<9@cy6K5YCQtMV~BGt^(l*}(Z2+t0{{I^fbSdMD# zK{isw|I;`y%aC}NxY!I|4k?CvtR`bP`$0;}=2J3lrcEv$S-*Z6mF3MyRGLsxA``YU zu~OV?MMYTpOQLUsri{-kwSKSHmBY?A+Ip{Efsq+Gr z-SuPReb?d#LdgTw!VDCn|!#55=XrmM@oY~M&k3JOA1)2(QWdLsAk^0K zmJJ^@g+VGf&_xmp|Y;YqvQU zD7lMM!bY!1O+(`GS6=ngL~62Err5N<&5E;~mJDAPS|iZHNY?@_eVRBJCGa=AeNEPpCSuAHkLgw>*o71wZIOw-Vrny5mg+mYvM-WNk_#eCq>O#+M!bYDO@?HT>S z#@dq4jEBYX)&pb`ItE>R<`5zkF=5J%Bvs&X@yZ1~er^1ITIl43a?-C%mxV=>B;1uf z#EFiLtI?ZpknYIJr<;h5T4&c18-^_c8U$+$& z9ixM)CbPEFzqjWEHHJo2(3K>(_*f|g4H)KXfHL%JHi2ZcGA+l8@a~htb8<*bgjx?b zy~QYI!|U#m5+ddt+qxTC&B+_}R0_g6z@fRjhg%D6ur6ig;vESRDb61g4}BP&i$f_r zdi)6F8hoa}cUpits3>WPqHMG0WZC*RHW?%|La8XdyZQ*4sHXj^SmjIZ^` zcNP~YV5zhqyXY4hkk85al*&!BS>7Hmx8Sz&%{$JT7*m^Ta)Rnqj?O>#QP_7*uB&)x z5^OXtY-JTWv0sK0+SVLyMK8w?XUP)yztDzJm##sV*hE)3(&#sT3F-aZ>AN$bKCtQv z$vCGvGLE4G(Ul$rvuRXFx4m4=hsO<5P|DqO@z#gLbgSPBHLuevn9*M3%A3)ftqMcd z^6X7gd%pZg2>LkrmF@!B8R-R5PrecY3oh9Ue^`{fBx1b{pw&kGQ}PXpeT#!hK)$Aj zU{^XJ)T=GEGpunz_=k~MZI1caZ+<}C5}^#_?)~G*P3@dGQap!AZH{o^%P(TFGJ3-XXg-6OWiia0O6bki!DP7Y z;5MmY>kiOJHb=hiG7LCDiGbCK-0u@-K4>B0S&^8xLq|~#dl7Tc2x3LYbfUyPI;L65`(YBKP{vGxZSJX?iPikj)(&mi& z4xp*=UZoPMnj4sdsGFRyhiar^h?6gnc5=8b8c`q6g1!VG7R$$E-cDG)FrDwR;((A= zkqzar1vVFE^F}fxVR1;oC{|5mvF*|Y!@Tb}B9xEY<4im{GIei5Md7Ia1)ZNCv<$Gs z06|<=I?m&z0s#sM?$e)KkurnN;hc7)>Y(cqRNH2j8^n?wQ0VXNN+g}V6y)Ovkyp1~(- zW|fNd;)sCSOl6!qxN>i8*G=0u@$*x60OOB^|3F<;Pu>4kD`*dxQ1kID6oJfwi6M5e z1Pz%Q)X)(U14xZ4MqdNO>aONn&c?B`up>ez^zoNV8M_A`hKN7@cyxTJiDVmQI{1ra z=#BupJPBVxnucC?`$oiQw3Xq76a6&Rl;4Oj_DLk z@Dr-Dq&iyiY7Baov|s!vjZRR8@-!9N&f&9mApZUIvzpENdwj>-aZBM?#sQzzToI+- zPb6WP(;bi4`%|9hSk#yndDWL&bWCNih^|=ud^c&?_OYOM!PF3|wmF-Xzx0JC3iI}k z8~9Jzg#5|){U1lDYQ~gdc$Nu65~A*_#opo%evFk_!((}|%;HoB12<!^aUD``-drC!EVGb4b){rVndOpY(MZvt)%ZgL zcjG>5xxeF*t;V(ONzI0j6MPKDr(UM{k4s72dt^)8RDS7Z@}hoe9qgh1T28f#|{DME#?cOOZ5V03 z0d^~*f`W0GYXLzN;6B`cmSu5R5GkMI$=nfX-5Y~T1$R6E2!%aaqSJY@-{(p6jHEPx zeDosnhLLc@B4WFi4ko&J4SZHO;Xc;i&CFs4CcEaaSYW@hUHlxe4i~~m0n7}9DCWjw z`onJFJ-dmZ;F$qn_H&ESAu|V?_kr^O{h-&Rs?KO%!V8(oLjZS%=yA}wmnUhSA`iW9 z8uZ(A0+-+>2m}0STS8Zc*f>*Oif7|+_X6)(cLqUSxG1J?rQPx93}C*n;=zJY8ZKT% zW<3=zeXS#~-7am*XH#V95pfka-ZQ^)HryDQa9ENZiGJhLEK1&vsqk2U&)@WneXMt_ zX1Z=g(Q9o46v-dC{^W7i8@{{DBG;!YBhwn2a+M0J3kY$W3zg#vD}EKKVG_(WTbc*^ zXBnYD-&1J*iQ)HD$;Pyl^QGyKfx$>q;c}SBsjqli0Q|m;c;LSQp{d{h#J~fK9EP9I zUO6Q_ue7TFUAzo%d<&37TENt}c`7T1jlGJ$nncZ5xHj9a4*SIQi8ECHuSl60Hirb0 zdb521nbMlE|C>Bgq1{NECxn*x3W~DzMe8z*TePL02eiKc4Fb^k`<7Nfo z;e-a|?Af`re)SBEIjg+xKCK(a+r46=0b^2k4nVd~3F$A2e)UHCh^G(cDkeKZ{$9O! z^(*^9cju`%%@5j)1C>A>0CvvEI@CqgXzC9<(O#QDXCEA>k^G&b{Nn!mLs<07Q^1?* zmHvT_QE(RJ1sNHzsaC695$|)&-w%xwr5Fd=CWt0Q{_%ifiCKj+%p#ScGYv*_B*qcL z4ltz72iQEpC55k5(E@wSV(Sf7*y}n7cQ0TE3B|o*k?@?6&s+;}gVy69C^QV&8v4qLUtI zlR(4+2ol^7_CA7;JXS63gkGKoSpv)7gw%NDw+u&84D5v%@4SvNeTATFA1b<24Wr!M z`T{y*qQ;JzW_t|h5dGI)#Y5r!5OzTTuqwM-x)X~h7qwN~HgFOCE z>ZoEiIu9W35{Vw&kfY3o>Jbszp>SvfWG0HR!;1Aiu1uxNT!mHDcWb-z=a(|T1L)LF zWwKcSx>8^yiWwnbxqL#mV}KnariuE2g%Y(~O{PB{Sg?Aj*s4sUW4;Ji@3TQ_oL9Yz zpCJY+UPZ=Iq4!f2t2yNHK{z36yPoW4y^aX8Xw|DNsL`)chS<7%d_0YDDLMXK(l$ zIJ*UD;pc&WF<7|^^~H?L)P3G}AylRPUMX9FO-prlfB)i%>wOe-GsB0@=CM!y<`t?R z-6&2|F>?L=O}7Z&=XY#zdb9bHKMsnK33tG}QT5JImCAv??IUJg!R_N2FZPIek#Ef~ z-lBF29Ij1QIfN}M?uA)eHij7z0c&)61>04XxB9?e00E0upu-73V{$Oo3Lh7gTqh=vt0vllzX8-VnfptFq?z@bD1(#5MY$){ro7b zS8_mobUah-3CH+NHSn@03e8A)GiS$NhJAPypAwivKkW`aAu?>#KIuxvCbK~nP%8aq z(Vs;cEyN%_0qUr#)4e=3{49CZr~pS$xf!01sTY(9*QT~WfKn_9ee(3z+3;`a$Cwl2 z9`7@U)_rK!b{-mLH!&?C3Wd;JYCL-6U)M#bm_COq+WQ&Zf@^Bd7Rk2)$|#{%eWn5e zgXI`U4$F?;9Ykgx@}M9*s*f^=B``n6l!Zic7K58OvnoTq(`#DMP5Q#O)6q#Dxz^IF zjk&k!;&ML&zE**Wz0$v*?lap{8s#+g_BH$30~m;K-L2|m2=>+$t4zIi>t6TGAi)u^ zZN34dJD&aksG5?mWDR7Qa`{!$yac@l@KLX0f{vYkd(o#u#%2(6b%zi%`>g+Hh+XdI zZ1&UQx`L* z@Z2T+T=ohRMy)^P8AxuA?hKseSKInYUZC4`cJ?~DWf?!}1g})rXn`b13=4I~$9^AV zefPM*e;kb^%DrB*cYT4e(vqE(%!9$Zm)HGVoCF+bf80vtR9N?Mi2g2HW6MHsn|g6( z!VnR)|(urJ(*-lOGV|-?4jltiX>;=%7k-2DS`j%4Y$rrODwtVHE=pXuj^cI*)LwC?0 zi?^d~-x_3f1bpdMlo?oc9w#b9pK9emQD^@U|G535G8_hr^Wg5HFb zLR@#IjYlEAloFx7uAUr7L-NJ$`rpZr`wC!Qt@UQQH1_!8c3tECv`xkZSVoAvVyNJL z;nC5$9tHO)H*zWCGgN)`_4W+ZXJ+Chc@0i9SuRUbXBP?oe@ zguWEn+ytoy60vy(w>FFCM%=;hhU4bjC!~TdS`R{E+*`+huwfvYVVGqEp33fe`{6RM z>y;}0V6M*vCY~tY)4OWj>7ONJ0i6j5;|d9Pk$kr_wemO9ZG_(s$*C-C?N{&{2oWE0 zZ(A(nBS=X@0RuE%2q;We_5Ya>G+C$6H}@#81A$1Jj8JjbZaZ+ha-H$S^*aL$S$5Gn zWT<>WS@P2r^?;Im7RW38-$hdUK{iN{yW}A)|k4#^@ z*D}R&RUrEhZ1Zsqpxam42t3;Y3et1zd4;1tdF>uafMwa|L{Og;7vHf&(g{_-LG-;@ z16V!?5kfxq;|TgZxDBm}Rm0Z_t8&YXnYC9r=b&_3)XM@e6+lP@rc}z0ky~fqg!HnJbr3hQ#@NNnu+>7H$382{{3t7rQXGI) z)a#Xo_D}|H*777loCYXs$en`xeKwU08<}&eRr+|e}t$Jss}6^iEb}nBwF@vDvgC0eHxeVrqJbGJ^PlFvQiq*VxCZT0 zsJOr0!EfM#<2bmICzfx07X30C<5& z0^8*5Vg819qA7h^4<_JsT9%kr8f4|i>}n68zVz>$=7xOBD>kSc-hKV%Cv0N>n^A06Ju^q?nH#0#Y(@79RQ0PCv=^Gt4qW7d+56tw1sA=3uT8 zH2f>!K@BRqVbcNH_2Bu4-fZjPBOFRdIn$TYfBUE|$_t zp<8QgY-|!#5JH_--ZNZp*9HI+sm@3F;Cfb$tdIapK@@y@R(z7LuMDQ`s5*}6Za(r7 zKmGM9B1N(2=5d@24v|~9%-irxJxRf-oZ$6JBT-Wl3c*NGdFN8GhC(fX9QLVijcN-^ zqE1zS;2(B?pohr4O;G}S9Z~TdRbo1{XCLkj=0tRO1(F%SC|z*3N);ljDCx&eVh_An1m#*>ceRt8rg-%gE)cGcqBX-sPhRI0D&11@Re5! z{N1=bkSY+Ajc9zpfL+M9d?ZuETrp_;nAs0kMSH6MF)$YA8 zZByMiRe6V$nTtLxM?mquV_HO* z(RCTi>)NWF;>&suRAt_OjYDh~cehsft4A%1D2m{N0P_()t?8d_@&MJpqn?PCN_lUY zHtvX?SWpgcm5Tj|Cyx~PN5e_NWSPweb`4G?KG580z_q^=$~0ajwxJa)d2ztSKU8xG z$mUc`3op*hy!M%)*uwzo2lgp_*|_N_|9a=+pr0TX?Lm~j>RGQ-6jPIWSjuH9uf?Nz zy9#f=;n``|^AS?Cb$reqR9*8nwz0hd?AP=vECSnHpskiF7!Pt~k%cv&RHH)?`@9wu z{~y$*;J&A{u}_V}ovDfB5;^XNnptB8&=PQz8FS2?9Hd{uWKFv4Z;<(83Mkus)f*5` zMy(HSNN11DTu)h2`=)hmp{N(#K{d0_8T&wWvNmPPzr#JReUk#k8H1GAcdpV9z>yI- zw2*}Jk!O?GCzX9BY}}fl_b~PTCr%Sn!%#MM*QsBtn*d7!HZ`8yYEK*wWS^Srqaaap z79ZR-N)M)%+^7KRr;fU-AH^ry>ItoXzht~7Vgq`4AgM4g-}U7S3aQw#GsD8-Es$i9 zx?g7@Ha#T(>#10R2&Iq-_~TXzUMu$Qf2=Ybk4$Lf$i%p)M7wvN3=qOt6 zR0XmFKw4)=ay#MlKeqeDlP7z{`m?gf*q(<-InfOA{rptB5FdnN8b7A5_Nmk@y}lB1 z-()y}4F>|RenDa&;W6TP;kepD0vSnEj^yh%Iq_oaFFus?*uP>=s2e4hU)#hq7-9x6 zj_PL0+8`5ERg%Ttn+n9sq{12NH0A2IAErI~R}a{Tiy}gT$VgbDYa1LGf6j*^$C&hM zXJ@VYJ{JRw-jPvbfgK)MUEnWy0C!~(>`1T3@|Ybapv9RAC1l6FN08pB)x(7g=I8uD`U9hJJzH6)GsEC^2(X(Xj0dM3={Muu zE6dgfM&6h?@{Ei-6peoG=LX0K`ocBA9wXvIN^_wGMEgqU;Sm7EQ6E=Elu9+3TeiKp zgQ4GgxjNlKsh&by$~iHtA}_l+VHY6(P^J9W$Mi+h4}U_B(x)pTLb`~)aZS?GEu(D zP@w*hW8jMoPw;0~wB1_*Az|=O^|%EQAv;lv#6fj zjPjJeU8rKQf6EvsL+G~Gf`YHH$Br8q$^n&KVH*|@SnZwG%gsQPloAMqjav6&`ZS-p z+4dbz!aY(jI^J&u3c#Eo;06lC)wtqc10bxX-vg$;KzTM1Fwdg&lWZ{1ofbZQ1kfBOKdd5v^T?iCjAWN2n6R;9GzV9gF6#7|MPSrYhKVBN= zEk5Z38au)^ytx{#CN>{wrcJtF+SrhiGY=e*lr@fk=F6+kH?6 zMLMTo3$;dBQhO1Fbr4mmv~^*`oAy?8CqP3an>=(~X$)V*@tdz#oIj5|8Q3*M-Wovt zka)y;^>dI$ix6PCb^!|o^$Djkh(gTAGyA8SC9i-nJ_p*gF1UdahnFx{5|sS$cD+Lm zwyHqOirRE5vT7-fXuIsTFxDM3c7AhpHWQ*EiOZWbQvYjsC-zyALObncK#GU3=JuXu8&|nX%$5dW3`A)h(e^!A0lm0#6)%zB29J)% z(+mngpnRQdu|U1m@hk+0VMk%Z!NW%KASyZXKjJ@ce~gan zhew0PgrjBNe#%8&kynVMUU-sXd-E07ut;S0)R_eKGustGRrngSF``aiKd74wl4B*@ z7OL4i@}F0e%ZKi0kZub4i{e(rzfxhiM>HCU*(#$dV;d^N}h0$krZ1oPUt zlCwbyW@@SCE2Im;J>agBk=PPr1*zO$e~!5$fAnU3&Iku^@_1>^lVLn5s~J z4ieul2LCDjNc+A1@L^md!3e$?@IVnJ+Wz!sZL1(Ix7BZxg~;37`KuB{=RmN3KUqix zf{3kt0~E<;bylLGuB4BJ#I%R+(_X9V4ShU_xJ{Mq(V-_C0)jD)5pMBpx9 zF7gY;JJ=seIT_hqe!s`YMz21s)7C0Q(yOqfV&MoQs#)~_R2+~i>YJC3+r_2N>G}Nr za~P~vFzMU4Qj@3mX2keM(X#SJ%kBr`Aub+G85e|JV;7H|@5!J;nJf3d*@4kw3oNas zhu2&O!@GGd;Ar!hy{*&6`J*Q)@a0n9bJ4v4J01AXds5FG_VMPl!o$YmQ|kFv&~Mtk!>dGtAZYU4@ZqYZjaFZ3PXKbX@NCL0_omp?-(yIX$nJ z&K(^&_AMci3(psc@=}IrGes{Ggix_6lRGJ?lR1`G=lFDL+T~u7!|=j|_uomASnmiC zQnf`A-9LkgVrnxl&Cm@tsxhamW_=;!@HHvhSm53ELN)TPO}cbVTpNH;I-!E z^Ft&N26ySf?K^(e0@q|Uk~%pEsi@e>Kf6gZU21D1E*Hvwzmj z^t+b*voRau#y`=Ht9FyCVoBpKIyyRR3j9yx5g7^!ZcFV$l`#DC7Cky>mZH8*OoNNA zg~g22-E|j(=`^&+nWYB?&d%KW`D|9COK+;pY)DgugJWe)w<qMl>1mlw);^O5WBO;UnD}j-ey+Z3vki>V_j>S?nA_UgK(LK; zx!vGF^jlx%2nu@obnLv=_cOtg%vl;2Uc$exx6(^8k_c@vb}P}waxAZoc^8lU9IV=+ zr@JQm{Rd(7rH{x$aXk7GitXl3QFP)JgR9ItVd4*5xfZgG!fAtp2M4{-va;fY21nH> zLzaXT$p`|P)T2Gz%Cg1j*wls8rSI9a{f z!ot{Pr9d=cu>@vjFdZNI_GnF(Z7Gkx2DQ>}_TADC+jjK0C+uN)3@_;Vm=pX8FUC8} z3ub*LJsrAFGAOF9(@YyFTeC!V=Ox>jhaz{L!?JBm&EoIi@Ls8(hK(lqGo!aJB`!Uk zf7%^+1W(Ua)eG)nh2BD_S9^CR*O$(6;#;#;|1r3cUjLolC{e~g3lN2(_}BY!{ws(s z{q@f(gA>gE)kRkM_tY8RM}L|UP^hCPckTqiz^^}c<^QFxF7bW2vLYXjYG&Oj$vFuJ zV>din*-=iyR-NS$U_UPGSX$|ToL*bZb=mKiv63-P=TJ;d9&;V=^_d62x zzSPDOuj-yYMb<#aBz*Ut=D1R|0{+P(D7~HfyD#;p{a?F2h44_s>h9R)36)hA5mr{#S$t*88~Fc~Zr)$NDF*moGNx86Iq7SZ;=`c&C#iWYf%>p#CE9Khsm|DwyzO;&cRejNLJoSs{; zgw6L6ENhla{3?mP>NV&x5_4A~O$32b|p@d*fg>`glDk#m{0Eh81`@3>dypJHm|J{q<#64qlGyBiv!q0i}0q=ax#Jip{WH z#=m@#KTn^oueZ>?;W>cv#kF6U`~$e77-#|E+P?nBUfEK7LI6Y_B`Gzu&PjOaOX3yccc!gaPxmsnPxmZ~@ zmuXDNAL=rM#Sztz?X~vo=~FX$sqhurZ>SmJBGLw!Wa0JL$FP`@55`s=F-J|@d+xFN z;^ChCva;XbEd6FPpq37Q<89_8zSxdF1FkD(-K}+u{IyOx$k#UCk0ENv%Ie>53uYxW zZ6e!*Z)$paBtXdU7!6GToO3wQ>sl1AKz`|oY}hiQah22(!q;bn;E}!EMl@xpP+~tq z+cKZQqtVmQ#7Jz!!?z%}m}o{mp5j>H;<7y1CKhe5rN7nN?r7ZcAq}P|woPy4_tbh( z%D8FR`}KjU!ImiUZ^ed^e`}!3qvlw+kJRS!BvXf-b`3qR}V{`B9uGks;Eb8z>tY z#BLO=&(v~M8RxMCV`j^RSXm9dj4ggAJ=@hKxo1E1(*tr|+|z@(kf?qd~ zg`lo#lvaxNjq;XaDPgsDfrw}M&S;nZ)OFB7|Xxtmr5wkypmB&Req3 z=zelf2CC;ZEF=2%dG+sJ_}MV0bFVtX9{M8_u(N`E_c|$*zyeNG{5K>&TzL z^?$G7NBw`&UHw0QYUwbDS;4_=Urtx-N^@8zk8obxO?B_VQe#mF&kiCy@o2znuI%a4 zi8fdw2`Z=dGCY0yG&qQnmWC!+Qcw&W9QpF)nF!TRWo5nFCF#L#KuIAJ`w;f|yf5Jl z>)o#h4}O{@ti9pczx~;XyL3E;CuwL1o2$1Ubh-kwlnJ)9At&a= z@bGYaeVp`P{I3=kKY!wL(dkrfd2J&O?$oOIwk1+RXT zp1!6CE5*yonn~KA${DQ+4*|POz9znhm9DFKl5$zVw@=1MvDe|(6iV1Aq2FA$+Gpme zuzmXvxINKC>P1b=JK7Z_eAwaKII+S{3u$Q5Sz1%!sUMZY`PisPC*7m(X65Onhd$3# z@H`(J5RvdEd=MMnj2Zm9sGry?jBCeM4R}z!EcbF%*tQN}E%&5)kO(@Z=JMiFK3Bxo zn_o1nn*|Z>MH0q%*$tQ}Zp1!3dF|S@`#s}ILBSetYp8^XT&Zo7#l&%;d#h_;&LF3< zYc<*3OwlJm7?@~Fa&0w{PRhSKhQuWWmd;z)719R?65w)js2_AYgLt){Iu=~Vq}GX5 zIpe>s$cM{4+-#O2E(H6q8OX}ncRf*tsfn4xT%J^ON#5Mte21SYE#A;Bs!CHpEBrIu zdwLz`nHOqjatYWhjDi;Uuo53P8Nfdp zZ!1qvo@n^1`Q1Mis{aFH)BjtWog6Po8}AQdI3c#ucW!f;Xb;|;d>uf7L&~PZN#48= z1|XO36WxEb<2i*zAr}{u6^#lCFl&6VpSf5nH5GRD$NY3|CDOOa`@^Ge?sn9L-k(Z| zX%rp*7?|`uUS5vFK$QGVuTT)P$Mz?*O$skO8F8#m>&ytG;N^Zw%MtU|=^6PW(hrd$ zX>;b3knM{lQU&Qo$#&C7?Bf>5UCgy1JrC2pdsl(>tkMe_{L80t9ynMGUTP`D6T|0p zYaq^)Z5`V#Ad=stM^pWd|2cJ@T88uI&OMWV^S{`8@1Q8UsC^K#yaI}-NLEx(5s;jN zf}$c|1Q7uR2@*xJzyJnvP*8Fd6(tHtkf@SWavCxtIWrC!W|-M?2l4yu{T`{2osM&J$GOh>#<=+(5U6#X z!IjCL4`OG@&CMk&59Z_qv1Q?Wj%R-Op<`}oX<1B~ts%^+3K~yHt&Rm(f4WCJfAaOO z$6RW14Po};8OdMpqo2wd8dihy92!>UMyutPE(iPg$Soe+r@z|F;*7t3bK%mBn>Q=p zJl}PsL_XG;S!t|Hq*uB;HB5s4ZSvuTW{W%?a z?zb)D5z-6IPR27mq#Yz&?xmVv0~4v4KiL$0d#ILQ`ajUeqEruF0^f z;-(h)IEGNeHY?wNov`?Tu5Gc~J$(P^TYtVki7{7?va_p=AY7?;8dNODmR9rQU8XfM z&9l!_pXk^rM7W~;fGZHP`eJn3b@aRSD7}cq18i+1A>Eo{(u&27^eULthuRF#R!eXg zcbr`)v?mPb)CYXLE@*i*eU#!(dCA1t(VW{(K04A6U#8Tjd$WztxtvbtFdAwvlbPKULUW@H){9F{eeDf(Up;-2Puj}=CCnF=H%Mp@7 zCZxzOwu1xyWziyWaJ&pNM#iKV)(p?(n24p@jL}MaZAWA~({5*$kqa%o1RxG2;o9$8 zO7xUvXA6&Zz`eP@7z}gUzpr;VT+LFr_S5j3deO@J7_0v-c4{7aiy5pc7z#Pz98X}2eE4g7yR*%Pe--!pq07i{{>WU)p7De zT3P@eGx{biYu3+ixjl!%Z*I|5Cn5G_-+H)UXD2P%c=&C5W^iF4L_SXsoW$e6+9v!K zZM%23r^80d@Q6xKfWH8FRCwzeFri7cT2w!-FIn=_g-Z-`_HsN%3)>N@A^$S+ zmh~@KP)RT{^Ry2xOUpyN3a{JFfJuJ;{=F^^XP(Jl!$L$GmpTYcJXJ8c@9Tv3P@muO zphBo4t}EBvwu(XW_t)ZB5ij~~36rVeaQ&c{M^t#$e5kj)abzp&aY=Bv1k#h|gyx#e ziYLqmDs$#Wcy;%tUx~U@`O=$fui<&FJuY~$qg403cV7%VYtb)L<=F4rk&R=K8G4}< zEsGgzOq4Plw|gADAZA}jUaPUK>T?Y+K#Rm8-?g<_?esgXanT%~(} zn>)Guth^e?L^7~Ph=gT6J*)Fe%lcfUN*?j?O5u^u-frHztsm)^seC^)7u4;%QWTqnWP9B*H~DC#_02-VaQ^_OZh}vm_}k?bPF?8IH=z%8TKbcCp)3 zyo40`LCgDFWf(W`7}9#~YYPx!85I}K=PvgxxgTU?Om-)~k{o|F=vroXB2_EXEXTYq zO3K!|wb=G&y>s=hWB0=ZKU_7Pwa+o-L%xbvUH-(l3RTh2L!7r!k$YldVxXEbH|I3e zR4roo@y5yX!JHgLGlkK#GwN@2@~y7kzRmjX-8&(Rj!zw*?kSzpCqF)Q>(im;aXU2h zicEJ~l^F8M^#NO64Q!UDz`Y90k*=xRur_<{C3?Ani~LfK*S@WJpluSH+qtm1INkkb zFgizBrH?q3r{f>QC1-rubv88K44XC061Ki_kJ5^MQfg~&uTIK|_uu)?yWC{oM&m#EJokRwIY0}OTARE+~Td!CB0&&tM#`asu3tzKX85(5|8cEBR_&UUW+(PTIP>%nBUS%eB4_Y zA!cigRdy+jpDKgGdDPV9hoiBMLji#@V+rDJd5a7e*xlx(om0au?BxmX< zNtZ4z%ni1^lbK0Qyr&{P{HkFjKn+~s@_4So&&zMLZkFtAu_`?=S^(DZ*xVPe`zAkq zkiowmFUx}hgOS?{Y!X%c`Il?71rou%GRQB#fJ;P6yWLU3YN{Y63+-NG63cQuS&tRG zd@uwEfpeu8D;~ORej;AsqzN+Tm7ON;$KcXXL=xlB^>MmOtRFmL9f!=4xsYL%k~VIz z^<#KdTBOKem%001h=9a0z`c)k=9m<9T(Q2*D@{du>*XuIE&t*y_DT zS?bTZ^T8~kB8l$cXMf2w$xn|&5A?aD?Xn|-)kE~bC~WlQWskQn0WXi6aQs{X%SGCXQfH~1s|g_< zEx+i3oSu7c1Ng@l2n2tBy9}fngF_6VOIBLJ|Li8c*@jv zFqk#IMfaXLiXpOVFniAR=H&PsJ9f+lqPd!)`)437Q}bdGD0I36v*_p=YhI1iXiT(Y zq)!!o@_qFC%HMD;BMY*W41yZcAKL~KGEHYm6CRzBZYs=f2Z2uKXoaSD_2i_CJaO|hYh0;R z>|t(hlwjqWw;KoU4}YZ$2?f!$yU@6Fa^d2;ycH6CdxImMpu!QEEBClIqF^M7Vl{jF z=FQCeeZ3x=wivW-+M#ST{30FOv8)|MEUt5YUscBYcwu7yU{#QLQ*OeErJg14^gqxA<)lM9S`76aKoxn^E~o`c>M3_}L@UBrp2(mWzALXt=r2yen8+#8tAG#O1aP)=SQ%QU6Iz!-c5_G@gZ$xJS^% z2+yNp&sdG?V^~r((*x!NWA?V+5fWQulRq`y?7{H?ENAKbJCT81$!>?S8Mv3(Enb4jR!-nc|cfYp(A~yXSOk-r_jKMRO-|_#pJdFG~bM_g_q3|nz=~DZ6ayoUNo!%n) zZ!rG_vrG#pMr_LapDq5{)9UIGo1!%Soyj|LTK#gwrrYZOwmj{eR=)&C#c%xb(FQt4 z-lMfN>AV{k{!_T7_vcO##qNJsH54&Eqx_5|VVZX1F$vc?IPU#U*NE8|^4)5Y!CqQ8 ziumuYbJV0c?%=JZkqO#3*Oa7jsm$qn+dByVbJ%HO?-^PV#YY=k64oL&;XUBmouN`g z{WO-=K5;z#o$iX{|LhY%i&umJ{rUGOh^N{5&cNyW_ij9jJd^XqTlN@xeE)Z0mNjWk zo=nCbK}s99qbn$qu$iZph9h`mh@a_m2DiZtk`~yQ89*By+6IqHTK?Y_j+~)wAQK?H z8*TAeysD$aCSol6Y6a$>;%KYf_~vEad)vocp_KF2x>q3wX`T_mN~GrsvwHxS#et2d z%vTpIcE#V%;|0Gv9s(OpcNo{~f~Rb!Cyj3O=X3OJT>4;UR_ zb8l;4x4Sz&4Jm(zyD|BR1UW+E0b~H(q&ZZ>`2(Y(qW-!MRxrG3ao5Xi4AXRr)?LNb zR<}6?dITG2W}@;L^4u)er()Hs3+=6qHgALMwEC;(mLsn(<&LrZ#m!!bX=-b;?BCDz zU{(rkVr1M+9{$F&B!nrMG*CX?IhUDo}lc748*8PWl92BoJTWm z-?ojKaI|;iDwGHSsP?7JBtm5L=W-=IrKpWz7jpSAkA9ihKA{hsv^K*{=ToeTCMXC- z__l+q`MWhdACJZRi?WAdeD>Oy%^qhzE%hluk>EKqNn&Thk%Hl{2M9B=5U$S#1-mg#sTR6gl=hs`;EQU+ySCS`-iWk8qe% zv*~(}e15GeFdbvf|B(WSkW1;ee z6z?56&SErOH32NUD@ANaM*=jU7LLH6!C?2tr!h{Iuce6Y03BM*b)nF^CHL<43SXP1 z%IgO3->W2dRXM=kssOmElfqX;TLl3g>x;fc_%DKhpyn*%$kE-8>c7m@%RH*8m%+0M zxvk3C)QM3z+R5{UF&-#}P6Gd$v-amma8-G*Y}ArA>!KX#M^fZ44@$DwItmt(+l|_A zl2>fj7TR+!I_`v7f4kxGDg)RpQ69LLA@T%5okHa5XjyH*Zu#Xya5GKsn={SoE8y7> z4)*HRs|uI`AuW~(DJdsm7CykbS(U9hqIgm0L30!O@5@W?xVZ;{WH8~jQ|Fj9e1H8q z961f~3B|Uz;n7UVa5nR}owW7wL4>QU$UYkSLG|`Q+Fu@3I+T^6IKd>+7h$3S>{7z1 z%jitttE!atX$OVC(O zeoT)475O3);F72p)_)K@mlNzj6G~o5CS3`CW zoQC?fBO4%=N_~2^JQKWhPW?CpsP(xJ#N-jzhEpj_@uVB|w;)KC(q*0bVzTOhgQAB= zUQ5YB_+6c6EFP8*c8b-;NQr2s-)0%rmpqp7#lUPz!u3}3yG@P0)7dowHnmMmh+xM& zr+@39qk5U3dK{30j5hsoH#0MPR24*m*JuUvXMXU3r~iN;H@j^gYc1r-CQ}HE!`in@ zwsgxHL;1jR{{5`WVyB616{owaLr%T!>O|`FZIu7k9cgT=&!ZEeV-r7B6~Mw*OEYu~ zp6=e#Ms>GCb_{u-!#a zcC|6=BLH&Qm1f=m~tBalAh3G+mM$sch**H#;Pe~)lnI}&d?${a>3!VQN%sa z-xRXy0TcFB6PbvkcQE7UgdQPYgb*;_24k#ACbD8notk?4J+QX{xppWad+y-u7%GK; zJ8!%Muw|~~SO+sOaqSGWy8vC+)KB_&1r5ko(3NL#I82z5vFJw^0 z=p63W!MOVNnsYVp<(Q5sb6A7tK|(O?_7~xL;_4SEA|Dhl{=~Ud9rk7irU$@u0pl%r zv(VM+mRBe;Vqy?5O&6WoPQ%e6??Uez>(F&#T$m<7b&sj(j_-7e=HTdGJQIw0e2HDu z>hhhr!AXNo^UUfAG4nyhmmJTg0ZBy6aKORB_CDXSe?h+mv>Gw~o1AQ5Z(`>w$kz1;Zn-pcT$!FM@ zjA^?3hIwf&eD728uAq<`DE{UY+x2m6DP zarA}E-=9T<(+`Yxeu@|1ltTfQ4cGQ*$ge2ZcZ}CRou(AW z%{25QvSJb#scG!;6muzieji2!C=rUu@066-_QIH=)ahxC8sQU_4B#6guqB}e<#_-j z2zR$64Wl)ZdMjktfT@eB<2GPok|>)RZmsv#d3?JBA`d$Hd6Ub;?jh%o(r8MSfU3x7eL!+Vm#PMPYF) z$%e9JsXC)*h83y{=A@x&N~|s3np7U9bzBo<5SJ)CJLZ$?s6M{%Ya1L7ydcd zcSc56wREDTtcHKRZc28udV_TN)EFxL4_7({X2VuV_aXWy_eg-_W17})3503bKxRq z*L-}A3ugM1Gswt}hj^%4)m%}sf9&QuJ;|)>=H>>TiH2tS0~Bz2+#1}R!>vp$P~g&{ z*3xBhwiHa3RY8BaO;x0cUR?a<&Ce_6pNiDW@}U&j0LmK9TXqKG zssZ^)I=3J(x{P+8Z~h1oL)TF6rpDaMQ4eph+l+lywFi|H8sTDp}R-+3rV()HOk9E1|H zB-CV3rjGxzQF*RfT@nn2%8xja43SJ6X7%H(&kyg(Lha@1&71pC&E3Z*DVXdOz$Rmr zddBZ2pH>x=!5C2*VKP!5h-|ve4vu|E=Q&>Ne`4xX56dNO4&^TRh33hYtob&re-6j6 zI;e*2(hn`ln2;ei;Oxi=L3WWTvV|sn76P$~2PPz);_KI$^d%RDidAoIQ7kWWSCF6F zeKEZG@J>rettRSmCfuP-{p%^f7SSa6)5U#(C%!T%!|yCQrXCnMuOI3pyXZk=1o z(R8!@4qFa+_129UspA=xpTKh3qPS_VsVR%9x`j7@_yrRb1a*{q(Sxtq+XS=kpu|i9 z)VZhp%ulU@NwjS4t$=}CU6>H2=8-S6pj;3TYItKMSqggu!&w^N?si`;hvM5qLI|Xr)C=~|WHdERgn29ld3023K7NFO zzDCbQZiBs+aC0l-h-!tGh5@mg`e_6nB>!8bEmwY!IMxv*MU%sDlHNjRBgOt%$9?O& z#XgUOcb`)~|F?70|4;FN;KJ5F|3`-K-_8FIk9s`LZj&7cIC6Mk4%5&p;Y3;6{l=sr z)*xK>aU~>*>~cU2=9GJURF~)Ph_@*wcsk_XEBA65eyug|E?h6bPP(LSu%?F3VEK<* zl71Qa`-a4hF7UXf4O-r-2|3QRWH}KA4#ei0wf#bs7G>qX`2|~V;juE|U!dY{urk|z zg!_#(4ufpMU-~dGf?Kz;n%bgR0~ixRP;`xweGdgJZiCe7Q+mac&EpF;6^ttPgEW54 z4rf+Rb>@JP{!_l2d4s)eY63j8k7DN7il@8DQYNl{et*kqkS~Ap`Ln3W3178n@yclH zQkI%9{<`t8PcXUy3Yj?Yj7j~n9j)JRO*pTE_1_1WaePIOY{v>!dLXQLb77oNl^JNa zWyOilta=O2K|#=$-_0uOl!{Nv$Ph?ggri)e znaEIrsVH`y6Yl1Xlav~b(9%!;^)Z_hjypNp=nJY;4; zy`B;L+xPEzW(p^lU{bB5-Od%BDWjBr$jGSglrU{fNSpS`*s10`nJ!^l#p?L_he>C) zQDg&nJgLKh5`DKgb4(hn7Kv)fErj1s-Gg9~4^5?hSiVp{XWj8Bu@k=pGWIoHobs+X z<9N^kK_5FhV8)oC>E6XDX4WbmE@5hph$nD-J*(=wYeI0=4*PapxbML6Pt%VNGKq8M zF~3Ism`vu}vYqZnJ#Nb<2_2)7siv(d($u@X-bq z0x~1u;ZRJxpHK7t^Am_L;kjcb*f3a5z?|04bIa0?iI`7N)k+t*nq^Sw7nAi)HN1*Z zg}rk~icQ?&$75bdxa+(0b#*y%jO%`}^1o~vIsSx&3t$vK+^+}9?L zpfJvOEe=YNIsvR=Cnvw?IS;=E2ihTCHVNx|*lz0s_804Sfks;1bNg+}wv?OD;{{w) zM<@Cf>BFuAO!2j}nyA7Liz6gwUqw!Xe5go&+3?=&I-D|hzj~w#SpS*IX&4INu&w2N z6sFhVwzMe=Us^uc?`>lAoEA+`R9UZeh?jTEu6F^XEMJ;XW|R(?kS$7Wc)~Y5=wUH{ zAVRwvy}AkO00h~~F_J>bF6Uv*qHuul<4ExRumr@BIOl($icAdtC7ow;We_Z_g=Rv3 zodmA-zsqoaDV@51Mf^O1%1<3i$2!qI(RCQlbz?Sr9GJVL%Fj`&OM^j&faI0u%pju< zwxHH&IrC!pnH~8?rXTfjx*HVq3qB0=pTBqw?{IkAl%!I?zAxl2Ucg32 zHay)<|LZn`;mYi=nnT#FJPYj+TbM5OE)l2iogG;#T^WhinZClvDAmx@8p3?!e1H$+ zfF^mVDSAK0hd#Zl>i4^Gvh995twRi~r7Gxb4BX~_pjyW|-M_CyfjzX!{nU8&*jK&B z!)>*r;G|_zJvnFqWUGAds&;OS5=KQ z-NDld+M^2)&_Ti%L(7jm7+>S3$&4Z+jxun-#Y`&zIYc&q9oOy;d4F~rS_c!^LJ#4J z*C1H!&R8lMo>R6U`%VHq<~*L4sHYlss?%(JUUcz{`*Xq)F7%dtI0@=PP#itlsF>Q?-aZibrtWuOa7+Pvt? z;efEN0vp5nTaZr~fbWXT*ahY#3%Eu+MYl!utlrohda~Ho=-a=tBB*R1XQZ5v4$Wp4 zARg#(TiOU1_o7h^?P4wl%1fQz_PaH-%OjG1zBbiKXTTH&2Up^>)Jyek*is<)<%C6< z^66x(^!>47)%a>%w`zHL57_qOOr}5DEfe35K(|2rrFX);JP5CH?sJXh&`i7a^5$G# zX%X`O@N>-ni>uQnwv5}Ue=;=pV(8^FXYn;jG`!Cn#812}|s_+UI2GEK8_hlInlLk!Z8y39PFK2&NqLt=CrVGz;$j z{wfCyBe^d~kgy|qw8Vd&_~ zT53EDNe^|LN1;_glTFs?A@;44v@Qoc$U1pP^C)5q8To<^!{A)i(dQ$#%P`&cc@?le zU*z^WUG%H+^oDnwBFaxOH{Ll=My9o`&FHy8o~*ShiqHO(=iF{}PCN$b&ddGeTVEcX zn<{l#Y-ZlYEbz-!KtRB15ib;Ff(9s<+}@6Hm+nm)vC>{uEYQ1!NR2MdB{KgLp642ZB^(hy-lI zc%7!QRCJ1mDzWq9p}(N(mhlLX3*Csuf<=umTOkPe@l0GZZF%%9<-J;T_IGw2^+gGJ z>zaB7>yiayteiu)Wqu5@i32l5&|SToQ&tkLhy|fQD1}K*`o6Y=YoDU2fS4yIk6GZ( ztNo@hGnBA%f$U!>4rN;8i$0!bvmVz)6%0(oSG=hdgwBa=6dNnLF2lQg=%tSEv9p7y zv@1*%-f?wGJNqb{AX4O8uO8Lb=|ULDMeMkWV$11bgKlsIHQIfNxxhaOiR{n^?qvX* z;}vkuI0J2u8z)~g^+7mxccd7w@B5qS`7}wkEZ(!Te#N*>bTXHh5Rh1pQ>l+j%GkN zBYFOJ0BY8*0^}OXJ)T`mOSmErt4P?*k4BYAQvd0SwyrdoUtgmeQ!V*Iv);1}P=9jraXK9eWTBUmm z5Sfy?)8&f?rR_2=CnWZlQgh#_VIE{UnL6%HqA`+}!t*OqYr-laD(hauEWmOuabLdP z9IUp^Ap#_B7qC`K0{RH8B9QwpyLnO2Tb5QU%Bn^%uAb3YN?ppe)Gb zi?7=v3)UE)lS9Nh3SNB6qyz#2q$zjnORI!&#q(UB+)3?~xFBkQ;2QOAdu+}&#BNP! z=?0gn-Hp~PDyOU#;*00h{Tm+i2yw?()!g{}y6WB&Ej{OVougK!BX8&AiBq8~BpCDX z<>m0Ou#uP+WWBr4R8PC7P+xwD|Hl+rWcD+;dW~>MC#wAh0%k zIuF-91vIX1`{|6a7f*Nl={oZJBXCq^zLc_Dtq_8-la7$kObbvkQFv*$&P!4BY)bSL z2TvayBS7!ZEEr_>*bQUbG~d;c$8&WO`GrHuy1KfWvGmwX4GHrT z&(oiustV#@Lt(SA3z;-(2#Q)kR=s&~94Ro-WbnmDfU<;)C-9dE}yeGr-GupNv zwugE?g@DnhZxk5V19cJ<7Sj&lqgn6bFRUZ|d`P_q^A2djs#ha{Kx1tYRR6`gUGtHlyH`&B@|K#8g>CP2!Mo)-)6Wve z&KM4OO=8&Hi$@)8>h|M;*Hq|&V;#PRoNjzo;?3aeFIapCLrm4Lh}fb6pn6)F`~h6) zSlJuY2|fFF+CrO|<$G{jC}*!w+P!wnd~YG-Ul1Pbhpa{j*vcK2`Mun)PX;181) zHX~>WM>&KD+&nVEf9acZWIGJxl-WF;kVGMjqSj8TJFqa(=HRP|x0qh}+Pm%ie%xCJ|aaQlWd3gcl z>(LNoM1JwHBD7tIU~8u^8^iv%xobx2WAc_?NT%~54#cFb}=;*c{!4HV-v z@v+S0JF1Q%9=C8#CcJjjW*IUfwGq&z5zg6n4$NIju8k#N8zk}Yn_$o{^!=$0OMG4h zS;WhwJ~*;(Vhx4$lwC%xMt#@I=SE%1AO;pPuI)e!eyo#pY&{V(C#O_8$-q@=-ME-X zCvnPUI(K>ab2s&_fSyLEK%l_LuH?AA_V)N{Jib(Lq|W^?=knlFo2lfWi-jOv3!g)0 z!eSEY>>-Ol$-Cr8ga%MEyJjX)!l*9UUx7H$>FNd6rMT+3K0f`3#KWhrfICh)A84k@ zU(G(}d!VfpuG?nzXYx?`$B(C>Bf@VGG(WX+B(1$UewRbmWo&XC`C; z6Ffh|^`4iPI_d|g!;}R=px~Yp7nvt!8Z2ipu~f>`;!aFmZWGK54(7m^zFHg)wbQmc ztS>b;4}seVgIEj3t>_&u^#T(7TM|7TS|Bu#oGBPg0#pR%du+?OLGIt!949&7IzMv61*vRDqGb-%L`mnWmYvO^R5H6 z4YxCZkw1LuVpGBU*L+$PkhpV$HcEc#cQmIV#LVl`J&eoU0S;IU`)O+xmX5tZMSb)c zz)6=Il)?>f#mdLB_V;yGgyRo8vE-93n; ziU42%JSq?tmQfY>Gic6nS(>SvxX{RsAbzxY=KA&PEoqbZQlbaS+7Z2=+m$+Dp#u8@ z0=RPVqQj!Ctq<4u<4gGCTxyI2qEh==^57B5830+J5;AeWjdTGlPS1#osS`P@#}RT( z?QTeVZ!ct+#`2fbLnv%B_*uuW@5ysOHGXO8u{=UlA5=U?CGNO5V%p#KRy6dZZ(y~g zmtA+IWhqvCQjB_I{37ZG=jc67c#EC8N?i#-Ut|u#_C{ zn~%K-f)}wrd_X)$N~122`2eUxt>>kO&TOVvJmXBLWJVZQ4jA^ax2kVwWu`x0=jj1* zRZTQzf3Tboue=lG>08yLr)&}qcBDsL=>*8#AtzM1di84av2}os7SuQYI}b)fcA*s~ z(has6qEpJ-nm3W9kFd;xd?s!}MiXD4D#6^m?Y3hh@1gDsf*!%YXV0>r{zKg zRN+Ngj8R=AfJHt8I{+RzkRM&>;7Zh)Qz-KjX zeoP9G&Nr~)xVfn!1%E{ksCyu|69)35sqxInha(^QRK;7Fi-!*5 zLHPyW4MfC4lgYG$0irorBB2mhvzTMkd;wB8uD0NNk2v-EFaAI+`0?AVj%tAJ%Q4jh zyt@A>R^iCvyimYhYZbbBq_@ywh0P;7v|Ae;t>BminO(^mgaB@*4_ zOAF&nDjd$YKzEBcB?2{2I~x>n+L=hM%_S>?N#8IPiqU&us3y?c=F`#h?jF2a9_@Tj zuyok~iWV^7zoIQP9_r_yt_zX?%%~L)dQB(wxllm{(XzIIs97ao9&+5=rOtg)h3g%F zG>sp3idrN$#L7y6>J_@h2;xVT;95xK2NJ!>dl?x~&pjv@#M)h4U%rj+p+I^aY}p;x z{%xpu;5!;0A8vP1ky#kZQjza?O5MImglwo|bj2tt@gd5cE5!u|H_>@+q!Iu%(4iRH z9OsVFLx>${GnM{%a$y17^u{@$f%EowLRQk?d_z2p0W7ph;`RhxISQ#bLc-csCBi!1 zU60D-`)g1Yi-6{}CE0Ceh^kxxodsPDVfVaR6x=TbP&yblfEt?V^9hN8cNX=TfekkO z-X@}-DqgX1+KjENT^FuieR*X|qrk>1Ove0R;|th={kJ6rwnV@d&3{{d!4^;0a{K#w z_dkuD{bu@U?`WWqYjRVgk$b(?D0oqGrf$*l`Wt6H@3V` zOSrcKIE=0%9UAAKUD@(SQ4iFzH*t-p4Th9)mqQE3xuZaDLA zOFZlYTY}U!w%k@pNc4c=RR0@JI&b5Z-_KYR4F9Sy0kaco)|+<1K8H4jYzap_-DBqQ z9T@NHA4}DQ#4T|4@BeJxAD%P=56WcUgq(a(l? z6WpNlVD9G4lIHt=?`*;sxKhT%?WSCCv@r9XhZr#K)K9F(Fpu_rf z2Ypbf8}a?TY&Ft(yo)bpn(+fphQX*v$`w_^u%- zbTiPu{8TUHt+4BC7m2cUz5cgNEVT~^`S7v33AY5+pamCny!fpKvJI9JX9CSL*Dm(0 zL9Spkl~rAd`s|C`s{*_SW^3LX2lir!_&2~FLQPL`t3;e3h(=^D0<*TVO-nzt#pWJr zumbG`XS|5ps;+js^YTlTIqV~%wUs}#CGf-#w>HEd2<74E9U_|EDF^60TNl>nUbZr7$XtZzF|VOyK(fHmxy>2oKbo*E>cDUPo`z!t!ghL z)Az4G-j406>UNL9;yuC`jT4fP3POzAqE-~0h_W(jXhiA`s14LVL(ZK{TCRVNtEWYO z%G6=jm!GUf-2&pyNXTL|o>Esp%KnH7J8{Es%~dO-?jmsGax!&+IIJ0wc)}5yz0_s< zml2=eIoQ%EoHu?}P_3^Fo=}0ysxG2Mf>y&GMkJ6SIhiK%CS~HaxU)C)mN#nCirQ^D zOW!E_oz89_>YIhVd(CL>sv-{kd-amf+SLNOd7=Ve?*9@GE}BT;OM;)(RH)WAiOp*J zNvT2?UoSlwVBAYY;u6?yt6sB+MA!#ub);`s%DYiwr5gi$PG=>0Xia$NpD_pYx_#@- zFCOW8OvkvNvEH48rl$*#t2s&;qGk)U1~@T8O$Ed_qQQKGkT%f-ICwC+?&3vgUU1-{ zc?f(s)Liy@sQ|UfA~w1O)HiWH-PROc(jPxQ+aS5Y+MEF-+_BR3JG`vmFt5cG=oFXe zv$G`;G4aEW8s?Hwa6?Oh9v$P3u2rpkjK9v zcK>ke6}X-r7rdOdA&f_=#t}r`h%J-CIMq@|TOE=3b#qh5?dc@|hIy6=+Pk#j;bV`w zDJui}=Z^hwuy8j35*c4c%52ZluRPha0xg->s6z@bwS)9c)ntesYCQ<@o{WR`Lm{We z-!X&8h#)l1(d!Ypx-l>d=63e2feu*oUjgq8JpFl*8KJTpgFkK0rG#; zJ`*zt-2j~q3f0h;_|gR@7{dwo!K4_7kFFykyrPr3qMGo4pf%A7J16S2{LkseUARE^%Zl>d6oCrspmYBn_Fg04$(LvsgeQkupDug~d7d+W7hW2US; zFeN~*3Ym2TON>G1e6!Iv2HsjlmHGN^>(PJ($QP~ipX^?miOto8=ZeHxVtcG%o`gx< zxT2Y7Uf%)bfui1qmx2Kge;oD}cP2sU{bfreFu(dbM%<9tkaIbwS}aa-Yx7;`Gc<&6 zbg>51C$SFjv_mZ1X0 zy2_8q7>6R}5mxN3NW0q7;6RS7-BhzR*6#)IL`v|B}W6hsR zBJ>cb4PjCSp9mdhEMuo;`Du|X(aZ}MtxTPEZB!HKRSnhr6N&Ygg=l1NKVvU{Pd^>^R zDgf>2*;R;wj5_y3&R__YI4a3~qjMM9=b5q#w@=;4wl!$5>A2@T8lVPUYpB&LrhYr< z1~h2LAz`elK#uklRuHH`?NHi=FlVTGMA)J`V4nKkov6}S9{pkxW20G5p3ES|Baf9d zS+Tv+!f;!qw(03pP)~4Aw_w)O5CFlV`Jwh>r2NJk_s1F4R7}Q42-A4nL#7}-{ zAf{Wp$>6W;=C?;00xT||ek4hp%B(>BUm6e-#MsWXKMG=jE;4L33rwe4XD%cilpMF( ziF^;zhnR`OXo0lQid4H4dAZ^9>Use>LBwqBGEMBY@(Mf>7?EB69X}XhC=X(P3#uRt zfUH^$($P^^8xNN9d=7C!aVUk6aWr-*5IO*x-`j%&&z&Hll}cnsjZ;VrX|@;z0AMVe zc^a;OO+|a7uE`-;o$F#7oO2Tr(jp6QkQOmhN#oq z-GE!VO-pwrNfO$zMJGGZuS4u}sc?uLZgl>b6kvkeK}+PV+9YbjMq&aM*enz!0daiR zp%6y8*AZu{pChA%nC)o->!v|bTw(7I&GA-6l_Svni(1Z*1wCm0brY&+SDJ%P&-muk z&hUfdhQXHEB1$$FFCu?vp5{)O<-vC@cjOfqm)o*G`jJTZt=n5|BOTSJLl%eqkDQ@;mbIOwy#C|bLx$pN4J z!Nu`!dep(NnO+p69G*k}?fOuqxu6cO{K50=k&TQcHdJv7KToS-;=lZ@UNymUn!8o8 z`ClSt%Vc`Dh*s>yzKyhNj0Dt({fXNhME`AJg)L&R<$v~(hAm8I=|BHV*2Zqb77^GI z&Rr3xScg)=6zcg+et!U$n zI=PT73)>Q1pXQ)F8eop?|kKfIJSJ@3c@+?qawGC)CFD zph;LwS-BWEWLLGc!dC?HKac*F8+a9}?t^-M{QUev1l9$FXpSqwrDTBWGy|)QH2NYj zp`>6rMh)`xM<<6q5)W_1xKohy?5E|i0wE9=C#s}q#Q&8*264z3#Vy;8wIyq?yHD{B zE*mPaAOX{^$r{7)Y}7PR`RgWObrvwIm&QmJmaf|*v%@G{*C5z)%bQ{Zbp91(l|JaX z{Xb1WzNVy{uAuLR1SJU7{r~tj7>fUg1@T)zrC{tJNM{=oLc#}{IyEX*^Kt6XnNjG| zjd4+VyE=c7D$eO)?6NYP;`0a3O0z=8{>jDl?Hk$Eg=x0(#ZErzwDaA}+xS&;ZEf7d z01N%w@V}LVjbM>t}HXBvCsu6Srhjaf19Cx@BhRbK}me}Ql>r^;)tPH zS=#|h0|N?1HE6u%ou-oV9l?8vaie zqy<2$aj;-T=aL zZl?YoW_>3N6;w64cDL}DF3s~}B^b9m4wb-9g8tloLJnoc#+5YYyJ5K$qrngOp`XL7 z4w@TOV9JvK071Ge;|r5eKi+(#QSm&qtx?<8z@UK?3n#Adck~lFs#l>=EJDXy>;9>O z?yf)3G&DOAe^htxw(|*|i15M)myJ}*OYOf&pjQb{^(5d(5A`(oSN&R7C)nDl;uXU8 z?;umByonLCl!J<90A+4bUyIrBY@d|oLG4{#njpfMwc`CL5#B?Lh*}F#sQU?!`9CWE zgUmNR58#mDf%g!&{nogu4?TlY`{3pFU?Q3Zj=`=!zHzm!E2P7_u@V;#N*+Se=+KEA zUJP}B^<4*m;SUGkOT2jgqJ1=t+ti{?%Y%Zd3kLH~box1^J@H<+uEPduNRzN@0$1h^ z2CJQ;k#Y`D-!k0!Hpkd7Ate2+$`edOAMDwiRa;!G?HF)ALnCXIF0wHt!?{0Kn*`s zodg<3IyaZdL_&QxURn7lHrJr$kj7Ib2C^wTX6&$#1#q$1BtM_hfQxd9>s&We+5$Qr(>5qbji;js3eu)dJw%h;@l+AO@=qSTusxbIAEP8 z+sioGDI~7~%5Ha%*d#uwDB2=R>?u~p<238xAwa4PB`hT04FXxurHDwVn=k_<`Rd@f zhlq*M6jc$5CZ^97QCMW4Gh-jlAcnu8^sly;Us4SkvoMY&O|6Hzitojx7K z`@Z*q2Dz?7r%~!cTL}dNUC=UML(V1*Z$)P^FA~G4ngesYGGAcX_>TR8y9vL`C(K$m zDEuZ@mc`Fm*A=RRJu4<%x(RWMPUO=3OTXD#d?>tdMrV5Y)3D>8DmK3CMX|m1w$!8$GTQmIl-gO0{v;hfmCOiqw;5wY53!p($wWzPkz-9tzIvf*!+Dn$6liCR+_Jr zhQ8Qpm8-)>{0futXT%7C@uQfm+bpG zWM3z#l%2s~FbP=)*@j_w&Rczc-_P}2&wudz=DH{|?|CoxeU{gGopYbtH^XD!%Uj}a zXg(d@ef{~)r!;$Z9;AJ7;?#?uf=_Ap3qHNf%^;_sEqmRZ%4_TabMrn)v zN$P(z8@nV_-zi4y#FnB*`h2WcUi;DQeHCA3H<@f^OT9N{Q}5^UFSRs*rg>Y<0gA1i?W*&NtaS+_lv%lnd|C(bVQPH;B}?Ck$8sHG@h_DRgGtCkQSVh z#*N<@B2VX}S8sUp-7W8Jx9qTWQJTzLzxj54YK!3L?lq|X1l_tCChiuZe^6Ld zZ(|OhfDBgU^u97eo;`7bUT)5-Mw-GtEId}PWaGgC+_nz z)i{n^Np@v0x<6q;=M^EdCv~OUR{Ao!A;_nPYZ981Ks!uNr0X-hj%KSgsdyJSm87eA zwYogSa!2yq#I$-DsY{9|IFv~w)>5CdFi_r$ldiH+h8r}A@^z@pZn8lXfzh=FYFd!GMc?dJ$3>e9~$axZ5<^0Y2U6kn^od0{!tOl@@4U*`e4tE zml;9S>Qo}})usCldZoDmG8U&_J?)cLswcVGe$74BB2RY?iqo>PaPhcKv53eC@$oi^ z@X*kdhJ?r2z0HDzW3be8 zfimwgS8P)RHs!Q03)4f@=axJ#URvkwCt>aYRpUB4aMhl;mS_60XRNWK)X^1?veMw>X&z-;_?!oz~ftZB$j-HtxEyMfc;C&EQ2je5vj9 zVhuDGVGY025iOQV+~RNeA`;1oBU5l~_#A_>>2A*SN3!^-_n&W!ogZ9k>(=I_P%EF>xm_p5UcMenk4P# zFot>YVlHAvY9B!i`V1V85!@qNFR)5lC0c$Ie&^V5Y2E<5Mpf2sY4(-=2A<#YvlZA{nLGyuOj&V?ao!BhXthCpnm3hWdm*_Jl3$a-nU7@I)&F!t5Go9K1hWluOVCV1Cb=YtqW05(j50+t};~~!y9K{RPaKmSf+v;>PQ|@K$C~|y4pZr4_$IfDVT$^89 z5R`mmS>@{+bh{-M4CLdM{jh37W*3tccR6`HAuHZEJ!%U6(Jn zP?d?$2~m4dJ7OO;q0Ra1nKMi6Q5^w#Oe-9cclnopjg5QNxcjnEjwLjl=PK!lqpq{i zVSQVhd5M8{ZxDT|2swGhLX39n7J;VQirVl1ci&z#7PegcBpCV>Bl}8VbF&314%>go z`Sy&cOO9EuFD)*oKM81V=EeAhVa$E);OGgWx)EkNIU_@Dv8&dmC9pE-W*Ng4`2_0T z8xan4E=j_T&SfS96(JS#dq5b0bF07UbG8f2{H8whHXl5K>kScsp~>oig=of zHmKfISZ86cT*C>k6+ycM3HR2e@&iG<(+_WM`S>Kr*ZG-QmpFuL%!rLHE^cZ4TqpIA zJnL76>u>JJ|4u}q>!ipt9fR#FFofY0mS-VRXM{9Ie~o#t;gYB&@on{BltAuRNkxz= z{_e0v^*DO0cTbn^!lLWq8!4%h&!2@?nqLnqx1G2~c5Z@xvdz3_j69Di=NJ!G23QKM z&dMBHcdwZ6LJv*uTlMs(Uz@`!s@%tro9u1`B^L>;G6*s0lsSa4vkLVWkwDBd4sXQK zqqH6N?D;*`qYHM*rYke4yKE;)_SXG?Z5Af;)UN5;V{xP(pI?SjCg=Y#qraJ_S>~Yq zGLk=Y>s%N;XwL^X?@U zrk$1yn^Ic<1Ee-5RyAd0P_kqH^q0IkD&Ub~NU2O$P3|tE1(o@`Z60&#y+L;&fwt&r z=e{S|7r{CprshiG4KN)b&JA*s8&hX+?F*Bo3 z__kB2@^z=US3Vqm+U71q`lm3>*x^iX|2d=ktLsBBy=hY!6PkiouYN_QnY%-X`{erz zEtjvr&c2h->LjI~i_2Qq(=&Q~D!#vaia>)pHTtiSl>{t;E_aI?C)D%f)6%#%FHJvx z$EMBOOmdsv@W^PDh-+-5lx0u{DxAg9zjFBv%Qb#VpAfTQTB>Y1eEfTJ^MVI9t@}dS zec6UPky$TNlJj>@l)ry}(!9#4IwG_ed_ZbY+@89bnpIeM%;W9xGP&ty*k`R!_5+Rk zE_tl2RlakU%TSB!0T1}gTE=_zg%h}g?^+p3-Hsj6Y)U*bTQUKpsIPBop6YBeQQi3g z&1i0{GorYwj`CqHIwzjKIK=?9!Oc?!|9dJwh6jMc3iphFV=6psaDJljeEfp9Edd-S zppK4bzYnY%ofuNFw&3Bu@D~?-C>!FBbc{(5XI}lVPr(S?9nMudE?ZCg+@9(gd;0Oy zg*(EJHC(bnJ^?5wzSr^d-Re1SPYQbtbtp)QY79uQvS!Y{5_&Z?x*n7UZ#&(CPA2Q- z@7E_?qTv-g^dfnSjszz6>)Tk3smQ_orKm>@LKL z9|&d}VUc|OqMXU$F#sOPh8g&_aV%EW*Y{p(_ZaH~3k&NNWlY#K%3;{iE>b&BzvQVW z_UhHEG3)))avYM5y{E)8sezZv2qfm$S>W5#8_|= z?$gS!O}GkMRj5d9&q(kCu;~3`%xW!YS0j_+Cv?@$j6K3+;%*^S|n8*nI#e{2(^`!4;S+Y|i~n+xy+c$B-Kg%fv+*Xb-3 z;;O)&9C;08;@x~eJ9FJWVCR^R;SEdptD0>m!}v_>8K+eCbD5XjgdmQTQw8kk(29GyLKdidIcWZRF&#@wow zDW4PqO8>&@unN(lI-)E|ZHwQkZM541LqFzYx`h7cqnr}`oZ|%ta6h_H!>yatE{r1w zw&_DxzERb{G#_PKmK;|FxwuMxd%Pu(_BR&o6^V}412Ca>flXvSUxM1Y^N`Jx_-Ct+ zoBU6MhNs9cl;~HFzR`^HGB2Z0(O~UR(b66m3M5E z3CoVQPFFmTYEqQ7Nz0PD?*ZNO{zG3KJLY5_p8C1*)m0y5i_Xa z;2r$9d_ZPXJA3iWQ$boeh3|0x_thoMcQ=BDDyi6wx!QFIsy4j+{$<7FcF`F_7JPN@ zeWi6{ZBYf{{h~h6X77qI9_4BN%AGen=uJTwOvcsXl)TmQ^dqz6FC#a)Lz~ISZ%t{GjhjjBDMD(QeM`1*BNEF=O`*nsu1< zS8-g|vRBDxw09ns1dDsoE#SC`)8ay7np)9A@M1a-IrgIxl_q-&(J$LBs2*fN`Axn4 zv!3ADyB9BZO9@*PC$)g_d#xuxVH7D=t^8WR_DyVy=;NsHa#{lL+86dBxSla>PpyS^ z`P$d`0Fvyrqjkp%_%&P@C?p9i<3#jMo_n`-p6tASF$iL}0lYEUQ_ReamFLR?l;oLD zUM%51BPJeJ4H`FT-+FSuZ$0Mr>GW^BY)_icnU$(2$i2BUSa`qTmDH~|@(|fZ!hP0I zmKr%uECVbqWaqo_-I69Q5^U1Aaa7s?o%|k%WOKfZGoa>m#4akmIU#bf<0`42OV0>; z-G?*$6_-nV`L#+Qt!?e4bL&+7nqOxV#;+?Fnf7izB#C43t22uNJ6M@`#otxI$Bj*G zWRHy`4xg@^MPss!%%h*FlO77#?^MuOANt_~)cF*!jJaKHrB@U(65-VyB4yaUGjma z8pJmN_9j9XuOHQ8_zDC6NXFOqZNil-K#M|y?o&(APF|%+u$xo9u$^OXao^l;IJ13a zwfrfX%A!zKu2D0_>F;SoH25xntPOO8>W26fG#Vf3S=b>^Mv%dV4Q zX0G4CMqT`4e^2dnoqYdO#H((dM|ZlY4J#wYYRh(&yN z2%cvZd=T^W4~q=(Ylv3c)w)+uzLjnaxw(dA7aMzkTOqJIH)OLdtD5f=!FkOpFf9 z$4)T>6vT*#ED88C+QT4Zv`KG$nkK3PN&xhaO!Dc2zicB8fdgz`rts5n5H|bWX!s0( zd-Tz*|7&x9L5Imqtqk=OwcWL&Z_I7_i(l#+qQi&p#~Z;;WhPk zle*L-fMun`uLVbPD#FuE%^i5XR7@1}jz~%yo3V}kZ+F{#5uCJ8W%If&qp}eOlE{CYD_rLlr_(`QjiH? zVL~B-4%^RGz3Bs1*mJWltFdh>c(@wAhyQW9o(aB(L~Cut1Sr^lY*chg_$&*tJ9*A} zn4J75xr0jH+rj^Y~WZvx?YFEax+? ze9T-w{(gs_O|FA>Sd8e)j>3`iK~g<4zBxd3ZAJar#rs+q*nMCt9;1c4!J}5!vhXWj zU<<9W*z=B`@z*BYW`JBh{f)tlqq-((<>kM=^gNOec934DLI`Q>zYaBLVVthhZZ+1v z3iP6(A^j6sioxrWrSqo>VUYHWaOeApsMBD zRhYG~gsp_cZiBlup02942bjUvvLAO%i1&4~k)>UO9(hV$4{~*@VC)gpBl1ylEK3oR zbsBNv`x6pOb$YN;1XB@P&z8g=%9@%dFwq510a!_| zzXHlDc1$*dFqy>G!WsQS6Md{~W`(F7WN4Yl*q6}(c1GMIJTAvWYnYVdE=1^N`S=bc1L4ER%&sHmw=%|1{Vw;qgjh{7I z9_EFSj#=!S@!OS1uz}s$BxAQqDql1vDhCgRq^kE+Te@D5`@NAHSv=X47hr;- zLEQ_llMhe~iTD0_sl@J4NjG#cOdEBpa^0-f8jn*mH>Vn0y7Y$GI+#1Mt_(>o4uY)+PJs6sC1-7TaxGfS+V%$giPv0ye*T^~=qSkK zLqB!pWJHgq@dA(or^lbdT%T7^FiH~Ne^YkuhFWWyo=A|_mXJ`<4j3Kiu!@sDu5iiX0V#F9Ye?|@ky zSjKl+0Pg92gQ`Z^bk#)R@B4ZD=eZpwy&^fSrvplKA~i2`75rIsC%abEXNOFU>-3E* znEh~DB24nrLtK+(iSe?`UF-}Dvt^vP#>gcf|D<^djXTe}bF&I6MU=hOpTO?bqaNYE zYPid9xN5|>V}2|$GN+-5C{#C2#QyN|mjG31a)ukp%=INWQl-D#HiAku=;FlP<|_mW zU2Unb!D?~kbrk9%*T0>;-~jW397JGnyF~`wNhS7qP`Ki!^y=?gPWV`sg{#!TyniT7 z>t+rtPEG9m-=Z+3kzMe&^aMzAwUIO`wO zgM8xW^blaaX%(P;9cbMmn|32{n~Fz1OFYS0wk7qky;$+}%%Ma7A0NBis?{m6F*>I> zHINkwB81YI{7VENU*|r*=Qp%ye9J~KK=Quf#*EvH)%=*u)>?2k7jg(l@2x5~MRDg} zxl=b3^tKOUhnvd`0C-#MPV~uXLIo{=`2E(Qt=;Ha}NihKfI) zeSh*Zlo7nKMgzPH<0CiVm7!`IOU7F*82(&shL zoF*FNzd6dXBFFxEoRV_N#T;cCKTX6i-7z%wsXfYTm<#ml*Y=@O^AK^9(B%FS8v~;= z0IrVt)FjRYpL{p{RJrOvI?%!$fF$w28uWnEUfiy(`M6_p(rXD2rBj8Iq`m9O{mTHvDl~x%^1_ zBJ(JO9>5cPTvT{l{;P0`uzqx~o$7h@3`r-F9u@Jur3GgI`}RG56*&pFfMBns-eKI#G$&H}AR9p!|LyabK5p+xM}?+eJ4D^~LS~VLyIFGY_MJtXUfS4BqHwpo9MA zz+uKoA!tNzu6g%7Gjj3cki8h$BP1zl5q7l2SAmv7gzY$FOOCO#r<=;tSyTJT-L*y` zhWRHEB-_~B`~f<}a32D7(%3aNHa-nBO^A!N^-JCJwaF8i6rIRjs5>yDI4Lw8%QZ$I zH_T^{%lOG8pf{gOQ@v|ACrflKY-G0x+WrEMP=0ccA4geW1@DjuT#6wU*rgyCi*9oo z*^j`i$TAl@44#jVW=Ri@ZhXBDr6D&vDRj%;;GAMeMD1Dxq6;7dIv@lHz6cR^raUOI zj=Sfoh&uSerq|AMGy43UhT-;?kYs~U2~jPYZLxU`uoR%Sa>&;KsTio&&@NE^A_`kL z`k@rB%V`JBd1!=eqbva#;uO#eD8Gx7fZ9Shzla3i84r5^V(Iq|8J|n!;CGw|5r>HU zpBpZ6pCgB)TD&pqrYO}y)d4e~cy?`!NKiN@o8-f9f6rzO0GUg1q~UETtQ*Y~u5?rU zhZC@HNZMr@Z78NhB?k2sxhHUD;a$t_g0^ZK?AoI9-I%o0+1{pG8wT~NQw2ZcXRgm> z1)w>Z!k_BvyI_(y3ukuvDfuHZdFkpg{#zkG&3@*>PCnUrT`PFykQFr6#G#Dv_a?Z2 zr3>Nb6T9u7CQ6fdoo;`*QOFWNbL1j4NNvWQW=N%;RSXKM{xqeDO6(8HwI^?^0l)Zn z+#4Zk=Tx*gO6Wp9?zBEixZas2V2YA8mj&yV&Fz&`2UGaPmT>v|)Zy(>%(D*tssnW; z;cA1Gw~_yFX>Q~1x?!6E*G5x>Zb{JE03J)ZA^p>m)L4By_W0s>I@Ub`TM zD&>`G)0nzPhX|M9f|`H0*!D}iy#D6p;&&VmslVnXxaYQ7P)2w>?U#8!U6=1X zvcZYhO*!$6HM?1Vo9_s))YdjOj_0(v2Tp+Re@;O5dHIB!ZT(k1&qWg1W%X7-+sJ;7 z@9o29Ss;5>1nYnUy*9lgVajhme!Q%2vkXu59cQu12+Jik?)=BD%enuWxhf@YolQLD zF96oZs&OegBo%KQt(RwEcelhMZu0OExHA2JuB?%FcP+{Iy$}W%?X5atDbQ%TC2Y$S zA^V_hkB?dZ5Qqr-iLFG|>v*wZeBOyP=B8sFY#c{*YAj0ORE+;QRl9eM{mqZ20SJ0f z=3!dWWxK{$Yf&t?SLl`|V{A(?8*o^#W&7XJL+uWN;R_Re^r4LkdTjl}kI>Cq`f{r0 z4IHc*;?hCt*`y5=o=&Tfre897FQi`MSaExJxZC*`&9%KieE9wEOx*4j6&|dyqTk0i zX{hTq&9rAFPX~MgWroq0Q$E(bTxIwLF@|88b{U2W5z?xwCD~f8%cK`GPyu!0f^1kpJGjYz2WjXq?b= zQ&Q@Zs@U?(Q4JZeg6Vt)W!pl8=F!FA-qq1k_ZN@<`ei-zl&inM`W11E_h(GQRJ;t4 zS;HtHkC=J^XX#mjxm)`U+Oou>*U_zlx54%lX`Rbfo!*H-TeimI{N(C`@{#~8rsG#! zecITwVlG=hB}yLv`RE**v!MpGq>GT}@J)-=$Xo9YrBJ0|h#RL4=xk^3x9>MQ-ed34 z*i!tXD?9cJF-1vQKLy+uARR!IxZ9={JwdLkvk#TY{x^U_9y~0kW_|za06xVFuer>Em(+>V3V8+3*IB(wIfzlH*fDa{ zee0F;ukgp|0eM^f`Rg}=c{;8Z8OIo8kKZ;1733CeK8Tm>5tRQ*VT=_SFWD8*!}$Nc z#QVL+R0xDJWe{7wOuV%7%6pw$!;wWw=y_GaXJ-&S?k!eKSJsr2nP#q$obL0(P=CJn z04w_P(yz@!N_K1llbRpzx7zMi!8`)hZ+$P7LD#X&rO22(Z41yio@(T|BwC|0e817G zrC%LAd%|b#-XI#!#&F<3DCgB8qZmp10Jm8s0k=J{6rz##Pf-K%^nOkyWUoaQ)-$wG zMoGEx3Cls&>wcSPk@e?U#zK;xMS{CKpF1-O9c1dQ;4w0BB-~D(1_>#488#g3DvAY# z*M)3VWtOEFpV5TZIXYh<{heB1TifOv=Dp}`d*8{$3;MfQPX_l1sPMVD0e#-M_kVU( z)*rIQ!wF;K7pYI= z<WHncm@HPG4%OaU$ZfP-QUXnf%RG(Pj-p%PpA5?>SAC9oYV7Oa9eEM~29 zKiE8OF)@K3to_EJ6V4`6u5qe_BBT67>0_YlW4gGNpYf4cubrqw$^Tf*J5Mob{GLRo z`-S7;8@z#stbQbxpOVF;UrHxcxy@yLYZ!gBuw;#VSNHMb<4s@)F7Eu#gXYJGTHE!r z&!jQGwK%y~6Wc&5&flrdeJ!MoO8~NJ$P=BE@cGa+e$*WUB1!+hpd!&w#G$vnSgKc< z=cIIqX+Jw&QZ#YVYvq=RJ-I|!{xdT~i7n-j4oMQSYzxnBdj*j3y%2GncVCEh!?2(| zv1(3M7IyRU3btM!i^Mbh#4$)&wr$$E!cvM`|A}B4^#E|SnX~`myQ`TkJziZY%cGOu z0k%fu!DlPPfjBuY?rSKvC8VpkCb)~M5@NrI?%9+tlGTg&HqX2X@ydV4du$dApm~3- zPyMgMZJiH6=0RcZ_xe0)m0X@dXVear*5ihX74PE~u`&-cdu^{28A+2B`bo@`8E7HE zb-Bl9p@O*hzK=g)7?JoR|Cx(f@R7eO=4v}ecI+1!1;cCC&xu0=M0dUAFy80jv3w`J zA@6R*jbnojSp1sVNTf985Ig%(jl3_r&IjcrB`e&-3)vGZcm{1(UVZYG;(^nj`0wcf zGYM}D)upe)#Ig!nMVY$of*t1Kao;YDc(>9Cf<9-P7I~CPaF%JY1=cV1GM*?~t!`B) zGXP)ubCLB)qg%zsY#T89^+))8_x$Gbp7omfZmB|hd{+^aPih>pxohhC;PL`ZwS4wP#2mo6xd6=WF@q%#96npt#%})A^RpdKcJLV zG?rc6>l@C|R4ctr+r>o+0k~G~7FEI?{rhmNE%}G`f!6GzvRZ(TWCe2qmbBTH*lINC z`KzL@a&bkv64vnoh9V8R%Q_ny+*8a0_4|+X?GA!V7{`kkp=XbelFOG*h}wc5q9GfA z^J*$eKVf0X-F}rz4}7aCEdyC5DjkVX+|b7qy7KeDL#{EZg4b+WVjbhV+{wOVyBgwY zWQmjYAKh}!8hN<-{wgiXZ{br2K$SnQQ&uPcamxcQIj(t-3jya~x5nm=?09V2uO&@p z1Mx<}oG(`wHv(8ZS8m-gT)dmZZt(o2E&H^y^+6M3FZ1;N68rnElMr712R7`^20L2< z<_<s_%u=HKy?CI`DSCIHXHCniC{8C59a^v#aOn*&=;W|$i zV2R1$ODQ|VSKxPb1PRph?p>!pxj4A%opEP7^Dl&+v+8=0A+I z1~m~g6MbjzxDO2lLiCY%?LP*LIbF^L4ahB(on1&15k~+qoQgz_E2(yo%Br!#I)IFs z*^JZy$7rMu8YiEUzYUIXd3fEiF`A?afOKV6BJpqB8enV0jF|P29zG@M ztK{izZ5ztZCvyngXnnxGP7rFyBr@#XD-?I=tOVgsGO#z?jQ=xk9}j~A%YhqH>{OMi z+O@17NjFA{pAJ`GjLp-ghW)AzVK?dTSL$yAu}dcb*Au?hk3un>f*|7WOGA~p+3=C@ zNI7D<+f-QYZ%KE$SkNgNH{E8^skbPiL_oX&CGY+hP;W6BP=C!8%i5J00tPH3*s@|vqR$(zr3-Oj z%i37h$^YmOA@LSu`lp-)`L3VM#nZLV0Y#;seh#3?>Pw>t&GO=W)NScVpg$6e{{uo2 zW56a@k5wr{w56G~{@BwjW*cEc9fP*q{{ST_yAYHLiE0tl0~q?_IE0Sfox7Y}wb~qX zh&$j0%)WzR{`2y)$p_>I;0Q-Tds%Nik@xiNzS-F7hM>>-M-Z}PL)r@ZPhN{}T`R^VBFb7W>cZ^#8r|{~hpcdHDaUm}Qv)D~Cc^ zI4v%YR{mJ9DZ`iYR9i&puJ`3Sr&F)r>@K6|{85<3FMsTBJZYQR0MZYNH`}-M>GY%t z(H^(>%EGfmMwC}oO5A19hU2nzl(kGki-GNO-k%eMy@EU^Gg3?Qsd zMD$yhxxjNIkh1yh$>F%rkY2fvuy#pfQ;~Wmy;xzH?XPEw$H$A-7YqVQV?1#gy3{w` z!JT^p>sc z7i0{uiV!2|M6%bo0{;O_8|u^pL3zN+^B-(RSnW66ULBPwk{uSQ&*eXVN;!k?L*<`N z=m&QIh$Ib!J5)N3O}VmOew+w+NGH;I9s&`BX_CEVhFJW2jnN}ruN-U5Tv=#dz0G!{ z{ONa*X&lu0X&y{|ybNI85}BR#v{hKbedH0IaUzj#BEyMJ%L32zfgjzqTi<9DJ45`@QkyR$oI&FXe0%YdK<3v;qS{3H0tFj zFMk6{7m%P%B$SYCgL7Hto&sZeoE`&1zo*MYx+yha%3naoy8Ek0Iy$#+hB50qksUVKG@obaDmge%PQP$6+w@oq-vEHdzFe zB*wrXVd&}JcKvcJ`xZU2)IV4G<6>#>%wB#z6LM*r#`Pzqe4#GmjAc3UW=<8v2GtbL z*iv6nM|;_EOOuDzi>(4BvpMQ6OWIIXO{gMwFXP?rco!W_9}W+xmS1DXHmm=LX3$Z7(M>xadGa)uBHD{Mvq$(=WJKC=(FYo`==iH% zYP58Wi*{rH(g4rGR;x44r%$HG52}!vb&Ann78Gm_l6>`A00)TL4J2R1@Coh|XFy_Q z+z}iTUb3{B1DY+!E&qWLNyDYnUeTp<(owVIYN(i+RJZmAUV&*z#CrCDs>v1kKAN3e z7q2<^#IvI(_fRj`zx!1y)F#|~N-;+?zvFCCr|`t@r1X+lKGN-n#-~K*Had$3@#B9$ z|d)7Bm&&{ye1Dq4nAwiMrH5r?Z$ zf6Faed^<|0A?u&E*DKjle>i9nsRrF!$px+^XtVxV9_~Nn=WFTBnZ5NZA8E=?lm-q7 zwJ(k@s%1cJ!vojvV`d$lV*#gb0tN?IZL|9!Q`BX2Iy{T+(;*sE!S?#FQ;Lm}36stV zeTVmAY9)wsvNdNvC4o$AKtY0@bz@6g(Wp;wd}I4N#d?*KQ5yqT3Eka6mQ%LgYq+Y{pbwYs}LDG@ou2CU~oO+ z1S3Hq7<20{r_x_(ng>=-WX7P-`yWeU52G!WU+falJMrsLSJ59teQR$3ZHO4fB>>4& zDF-5Q&{drER~L`+7S6y%aoiUWAR`;Hw0SH?h0sE`Or{o_#JWMnh0m>oI#2gsPBlU! zsx^WudT2@aH|cNUXBI03YS)yW6LTPoa9=?E@*o}(PeXAPhKmXBbH>{EI%K}KX_t*^ zHUzm?sJ(x>&q{uK*c#rX&_K{B0=7AXC)<@1-0M%9#y{-E z7hB!$b*mcm{Ixup-mo8%Jme*o)NlQ6>ai^rT7jP*@WqvWTY9f5A?nrQa?maoJ7^{@ z25tV7y~h2$wG2q~rDj3XqCVl&wtJY7_gB@hMS83H4#_x?3(OS5 zKf0L<41!&6?ee)ru9Ja8+l>nJSPW!0jVo2_0KM1TiEQM~012D>8DMWr&5f(4HCu& zJx17U?#^`{*xJ)FB1JM)xJKV`d$}9VqkC((UI0HCFFjOu$fQY?iSdtYqntT>SDu?z zP1x;x&fKh106s!7GQzIc_s6^bVl@qO;C3_~Uom+B{JaqY-!nhGjc=T<>Utvcc6Xrh z@#&i4&tRIP*oo3fMuq6FUxdjO0w50s+6o0HWt<1brG4=SFf8fpY?ZrQ-VB!!a}=G= zpXg_Zh_mY9?rGm#b|+M~x?jJ-M9h7@J*|Gez`w^oeClHDhn?Wvr!eS=V+?RU%5R(= zX(K*<(v2g{EiUB9xl@T@PLcB9rp%&Id{v5-nJxOQ4V z26Jte6ggm`N+6V~Tr9ISoIX2n+okX2z=k9VtgY*SJ)V5gt#o^x1?rT2pUppB6^ppJE-cmc4Ej{1aehgQVIHu~_#S zS6Ji)FtR-GoN>gCMJVU>7Vd2gk0jZEY8Rx+3w;N zn2d)*n76~FJH7B2R38FXeE)lVjur-}K(;$3aI&e1tbOw9zv4`?O~?dJ#NqrFcl^=f zu15vAfLA6+Dz$ikB0lG01K}f*sIoONo6auFl~1kNu*lwtIu*5@B}Sck%-Um{33*!S zEgp5fzAgTh<7EW<<+Ha(C~q##=+`@9@j3Q`x(T;JS}o#)q%uI^BP9PMA1;Ohs}F=* z`V1TMhljsEd~nyiWufyM%TuV7vwCzJW65rZ%3-&__<>XE%aNkqs|5Y|K^_>fR9_v? zy6g;UCcosg&onu>$`7yzG+dGFV;Aq zG~Bi)!r+aq%-TRqAk+ylZzma{{$jN>oz!|VqjYX?c(EGrQ(nK7H1lYj*nn{oxxGl< z9k*g>oRAM6;Lx_BzS`OSRmG&4?ovQc)fN>G5ezI6KB?oloq?ef4;0qikCcW4-P0 zg6pszA-{w6X7p^Vu=|G;?%n+L%6%sm-IjgJxe5<-?OeY zTh&XI4?5JWbvWV7ML940p1O|3+ki2d*1xH4{+P|3uw3KK@BRl|_>ea*jzsPc7!oSz zLPMe`2xz=MX+%nC=2%X?Vs{4AN%R@#yLoVo%IhG`vmVU9JJQ!Sd%e zd&VioPS>xfkfkp3sKVXlA>gt5giKe8fK-x98e@o1gSF>IJz3J~yVUCng5*s!EhQ5Q14twXZrA&@*?KJnT_ygX@r z*?h{m>xCC1Vec`oE%rphve7;QrkbLDwW!9@qk6(^I_bCi?6INnv8UgY6x8ngr3pRK)u!=U=-_NW1z= zRXPXD=vEltso_&s2Z`V<%-gmH(68|U>3qV8QbkL`B(HLM z0{JswA4eYhU}g55jWjOKG6%x!p37a2t}M-jy@X6~u^EPgxL|`Ry?I{sPEl`qNGkBo ztnFK+LEcar@@(IBYA>x5E*qg{@SxH~{?W-p`>FRgRFz!^?E`<@cIvORhz>+i91#}Oz~-i+=k=&PpafiZ>MekCFCcWHC~Fr*q0 z;|EFX7{HLGIsy3cR-M?MJv2tdL)N-%fsf8LBN=#~dW$?_fu0vu=HLeXUX<*M?Wj$| z2ArtK*7u730(5A+iLg+jbHEZyZj~e3@rTDx^-^51s`mM6T>!=wDtK=^0aGIKYqkUM z%suQo?wOuxho0;=wh$GF`GY~u95RlPs?V{XDc=)73dZ|n%G1B`XY*ydr0M3>S6j${ zlI89za>TYu_-^&pysb}qwiU~kl&guEwu^dV`fqH>M4^81+bqj6^|wk>eLqu_0IWEx zj9W45^+>yOU&H74JIZe+bb`}jUKFH3WpZx&j$M-T8UL{MIA-cr)wq4x*ii)qIa3`; zu^$A=M?ql0$g@d$-s;1accuE=7s$$c()up99$}FdM^e-X`_re0^np(AaMb^BlK+71opM753pC?U^{vRMJv7I2m`rGf63I8$ihx7DEUZTI!zUmCgtt7}X zX=1|Dxacxd9zOCfyV>wI4)JT^9+YB;_%q@2AnSo|&W2FkK||KNi|4-(uy|&TxEt#0 zo+7N}9oYx=RoZgH&woz6$hFr+sDzFrgJ=q(lF3gt7j~a`hTo?JZ;xsE-sbRK&a(C* zc1e$UvTe&)cJ}Z{Zk7N5O5Wk zb?fISZy)#Z@HTVW*s=6nh{>bEh%dIJT_T}214s>(VCU;sqW*2pfQQn36*wi-OI@w-FYtwPr_>f!Gr%#_Y*kLmyZ1~z@8}gp+b%pO1 zMd6gn=iNCb3$96A7X$>6uuAU8YL#G%Ys&%&)A}CT~Bctl+i{&AbQ3NcEo*7H+Un)d_8JINGy;EdA`B zS5%F(s;oO?#%%}tMT|+$D-8LO%G#A#MKKcA8h4j!-(^+uTEORMGE`dFZ~Szw*&31n za@vzL*Ik97EY;NXKJ8V zup;0MTxaeE48Q*@s_5zRGt|eQ^*TR!IVx>+>KX0lwBRyU@ODB;t4fPYJ3~xk_og^(>>q~ z&jwEZctVw4Ut1fvs`_}e&a8f4$kM_qA(7dn4&x%Z)t^okoQeV}zBlHoOPYmW6u7Hb zZc5uc14fJJMP1K4q`%tck&b2>m@Y3&DX|@Y>u1CB3Wg3D)O7XOnZ-UY8&9j^@vA7= z+c)1@OgN@&=J#zqR!HzIybWzsVz+6rM278*t;So3hI9u*w4?}t_7RhphC7NhC4ZLc z=-Jd*BmcCwE?$d*0yuRI-QmZJH&Y28x>4AO(WFs z*4*l6%1D^5)pvRmm|{E(!P1Ez?^0*%GNjiZ#7)-n#fn+O*L?hGpQ|Q_R`d$q(rbxb z4>CO$^mEpJwO#HRD{8fbN6H9V4-M}T^DbUFQsLx;(2bzoJCz}yjtWZwz9@`S^`vwi z)P6{O6+5XZ9NH}ff@o@YBr>`IRLo{ulYYUfsyv~(0`qtoS8Scj z?tMk|&3&__xm;d8U+0(jA85ByEsp$6S$D>h+B1t6GgIzec%$Bfe!xn17tT>xLbeYm zg^LR@J`uKO&AEAAI&F8=pv(6+WTMwivBA!!`2na#9dGsM=3tp@pNSmzjELy{;1Q}j zm;kIo;`lC9RVNM^3CEg6C>wZr8&;ilmDpPLojsGw4~zmToat{qCHv)5Ia{G4=T&v8 zR=yjPh@_!0k-gV2Lue_G#cW+{t;NO&Gh=lTCWB9ckj3G9B{kyrp7_#Z>FUch91|0$$8Jyb3b29s-Iw&l zeMmpO%RwyDm`d?U(0!09Kf)0=QQ^?Ex^u8ICwOw-5&p=gdGAPU#pfmCy@AZ$gVXL+ z?$JI+&CORf8f3&fG~DrB4$#do0+Cr*Oh4jUdH>_b#Amz^hXOonhjkXa#o#FuRsN=l zG+K=CBHiOCN@T2XJ|Jv5*+<>r1b z3dL>Q4dd)N}Qkw(d}lxzF#_cuD!5GH*vUuV?T>UwBSfi+flxenjL$iWwvJa(2tIf zdBlbGo>MeEr|k3W`SZ0J{DRqv$C|Cc6f_`V^n8QL4t)BszCT#z_Q;JlU6(3qDvgQH zA0pwR%HL#gV$7nLR^5=)q_O>h*C%y;+D0+H5VIL5*Iu3_R5j#~7-VQohlhua?XO74ET>T8EsvJZmkr!h0E&6phER20>POq`MCJIZ$-y{zQ@L*o!TEtegQ*NZ~{RHPt zT=-MKva>^|P1+Gy`5%SQ*5_~nqW5o^*W9*DZocOIeVAeFs=OQ`18IUAEjvxmr7Pl` zax%D!SWdRaOR*JChnJ>FGMXUAvFE z`0WpHfM4C__EGJb_0geIIfD%XoT2B}72vRwu;ZE)w(OBqY~cp6=bWK_o_( zP(qT}Ns5lf-T#%e)er zBUrC^juz;DJ^#1_reSP+47#-4P9jz2XW8JT z^*Yl8uXWU|VzB*Y`k_#dY!R*-+jn^16LCa`8kph~e)bmbqap&{J3NgkwHlTg_lPri zh#BMJIN`5Qc}x$Z7V;p138npb0;XQ-yM%Uofd>e-nxdUFyz#JE^->bxLx?A$=J|MMIhoRzKTh*<~h<1+MZnww-O9_$5-@+o`W(afT z%3#Rlre)SY9~6A?+GV2Sr8+AGX0gvUA^^N_zyY?@Vc!#J^7IELKL5UNEOPyZxJ!38 zpCrN5)RdKiKVNxfQmY&f?puHNYcQe}BFJ6Orv*evHUQr*-ffJs}8&<$LgLFwohF36Lpo8+|2ubXJj zHU=ojM3(SqTo@f2x5m9~F`xT(UCE4Iv1b=60Ks^JEA@_1G?^C}BD5}O;14k`Iey!L zYUJnTRard7-w~p)SB1XjRm>IZ52kzkKLO&k84ekXp>$oZS7A(V0I%+UAj2afg}WIR z*>&QymX~!6yaO&WyaI7~f|W^iBZczJR6vMeQe+aJ1Ij1JXv~!7xRG*1s_FJlWk4C8 zuA66S1kpByZ8DcTlL|-9&2QzadfWMMew^G@1RZ1@l-Hclm zf_?zm9i^_;pGIRHgDoG{K-lp`*g6~Rzy-H+yMTnt&l>DHmz7t$Ii<`d{#bT>W%hUT z3ypR>SXyqd6U53L==~wuWyVsN@w@Olfh;~bnMH9R^QX-XnU~|iUg)1M?SP{*7hR3e zbo4>SJna-)N;%PUd3xP@a~HlUO_#&S)paj)7;Vhe$!qF@CBinaa<OG?ac#!JeS|8 zENHlq|N51d)4FZ<={5bFrY8p=oXYp3Z%pv^eh*p1RAkhUGNxK6kH1*xT5T?LmMM=u zTps%PAa$@8Pa|A}k|S^%=Hf(S31Pe_XR}}SuO>%W`GR;yKc|0vGc+yXmaa|f9!vax z*n7{Yrnc^H6h&;Hcx;FY=n)$TqJRiUQB;hGpn`}PiU>$os+16HaBQGKX#zo%E?q!s zP*g;EF9D)bLJOe>2ubc-0iW}{AMO};+;Km=_ul^=!!yn~?(DtxTC>mJoHL>+y{$3M z^`3Fm)O*PKPvx0EH{$>dT+ZTRo28G$GXTgMvTo|0?o?%aFQsgfv=!B5C0#%U*g6HhpGD zVzjr)?H{xHE8!j^Ihx&{(Ctk8x}$zv{>Ys0o2$NGsUh4@2R zF71EUlrW2l)3(({&e|bQA>usQgWCXAO!VwmD5new+{Y=u;w}{7j0+NIUhe%Yz$Y+1 zxsY&OT}5fjr{n@(@0o94wg79IWv8cVpN5gM1E@7L+=c{$ zJtad6vc=P0-f#rZ#FVc>%sq5O4YG{O1rBp&GjB2<_dfAn>x3_|_gBS|E(|Hmuvy2U zx?`*S^@Ld7-c$5kt3bW9HkrqwvH&>VdgR7)Y8XDtJOs)jV9l-yD z?`=bqa6la+%HB&h4vY?zw0mloIfeU9AMb@1Vueu{xe5IK=1|7f*fZlBg^C=BGnfcDR9os|B$5Ee(NF({-q@9H7!KtqDa?|KPt8-(c@Vto2xuQ=BwpaHo8RA= z&6UlB#VrYqVKD1LhK{w2Q6ch)GB4*j-dEizO6gxnb{&xTiFrF{OVME>m;kBle7Le9 zgq)LK@SYyk;&M+yOy%;&k$@bh{6ui*8#6bF_iG;_>;%-bT!N#L3g?{7t0CNi>Z1q) zA%J!M#^ci$0?c`>$GwwJwLhz2L3t;khoOopPas;WbbI^*0^Zig)(imfeBS50^@hD( zOE+w?t|?}PPt|u^FO>zj{8-0?ZCd4|@Kb<&p2u@*oh4oa$pL10wGj|JjcJY79c(Rj z_h-L6vhSyih8Z9=5ESFG!<*e=XPr6;4}>o}&g%wNo}Jicxz7d+i14G-{iG=iFpz4y zHM9z!euBLls0s`YnJJFdIv%VZ#en@EfQ$$E+-I#myxr+Qgx`^VFe>A(0Jl0I-rq`_ndh>=41W$|F!t|nUwgm1$q2Jbng z98yrwDLt*)uTY7o(ZC4g(A5tgTu5pOD=n70z7Nr>2;DZRk4?%DcQEmS_VYDh{6)n-CU13W-2~TRh&gmKd!rqKrF7$7e|V z>^1=m8KvYn$N|-mL#;r9=2lN9W`~V&?!^N|kfP0xJGBi%fW*9pyY?VZP8}|fSKq+rHNmgP~5rj=uMJp zjZd6?1nFr|qoCkIx0wmXK@Cn+?@BJ*PVOFQ_a5S z=-?&T=vTkDaiC;n>==>)+k#C(p;TxhD=X6 zyi75;a5kVNb1RheajW2W>yFayXg<)`wc@GniHSQ zJ_Z0Vtfr5}<|QM{mvQpwp;JY3Bi;>e@JpR8g$rXYBGamWS^_3w|=tJhl5U>r#URw^pRPCq1`27S?aZ->U0$l=&HQy5WXL3#{}-v zOzb)?O7FY}PNN2iFFRB!vUW#)F{-QHcEsV3KwOQdb!xEmKFYzQWg5qQzqAne5&j<9 z$a*ea4JD^Kp=JZ0^Nh3Xp}NY`quFIDubW|&eZ4n){fez;yC=i4{Aj>c-;T+AmWxIY zhJQODTozyp7FJCW=qbr}Ap%QymLZ6Ebp315pD)>#qB9L=PBrI*^lyiQ0fdt6(Sv}p zY5$trM69oDSr39%J#S6>2-BK0U<%{U2^%4|$C%913u%j$FfGKS+&(`P(9k8>=!n$1E!H zGSLV-McnqCX5TV zI}rkW@YS)0c5cyQa1+8-QZ`QoAjL$vf>Dsv&D{pKOPcie?!tjZ?>- z#K_tli<*8;Y1<4~({QN7G@c{Q4if6Qg{Dvoxz^?xSXv8Z3eoS6&|0qza-ciMS?{9T zc#rRL%l?AwJ8aDBDCg1sH%0_w5jQ=M9MEjA=lfs3Mr|k`%(F5N&a*3?gZ??kbbv%W)f9K9N+#Prtf#5iazb-= zKHd85UNGeeH?rCuuUUC+n@XEx$r#`-yhVuvm51%9ebm{AXV($NiUvt*EZJ?$=HP(S zevLVSBWw1aY|dd8PPb6(CF|t5Jn)7JCCe(zX_Nv_s1dm@&@ihNvb-8s^$}8XL!}H# zBVh2d!Pmh}esU^3yrj5#|NEb>r!Dkd-24Eiu)@W-j^`T)9*Gdod$ejY6B6F($3GYt z`S-Z_)Ql-?&`duGm0Nad3KJF$(dW#ddK-z;*Pd>dp!A-&a}9LvEERwN`%B&5O^;L= zuGZu>m(34`P3AeZn-Tz1L_B^sYQMsaO0KCc9^`l$&daAY8S;L-NpB3_UWqj(H_;Cj z-&+b2XbwC6bJjl&X;nna7hV|LX}4u(#8GRQf!k$N7~#p}nUur{`TfR>V!-;Uc+!s& zKRt~})t2GxBmr=w#!yyC+*8N#W>#AdU>d7$>AD;V%rdmHK=v!ib#L~$aZjO0#q*`( zd%q3@4KjsPXurwfIj@UM&_?>!$^hQ8)M<4rD#J17h|Xm4US4xRNQ5V?`_{5+T2Q8E zW_fST>m0rB7x^t-t)qOVvn?~U1;|hkG8Z|kPJp7!ZI;wlsQat6y7>{Ryv&&3rtU1& zd@cP9a?W#HuYDl53{f5c+X)jVdu7f@%TgJOqZszsa+jm;oT*{FkEtYgY7FovV z<(BhPtoF>)aGrm-v{x;ltRpy?^+jPP0I8|09vJ`i^%&(@f6C5b();fL7yG zsdUaPg*v+oI1D`|P3=e9E-$A?&Hw>>@XdE|7173#o^dolrZ#{1wPEStTg?4EUq!oZ zqq|zBQa1MUkVv;q$jpXYzxl9MROKDu{Wf`ByZuX~oN-`-LvBH1)*bE<+_Rb~y6-xq z%?^1VfmGQ~%3s2Xkn#WOO6wi6SDx&s43T=>`7^|1DbqvjO*xeFLVaHL%(GljLR-^V zprQZ)_AM*zXXo19+EqN!E(=8VDZ(uJ@5a@n%K9PAQ^safyAoWSe2R2aSr(k%5?*_` zCf0yw)sLDUlLE-*d=Rc4<;?K7jj1?{5M%m?$)7Ad zFV-Knkkgk)1JJ>Y>&p}wLXSD0yvbd(IGXmLf^>@#?%`&jtsX`pAkAC+Xs-o0A}X)U zKIWnYQ={0kE_q!V38Pa7uuHtVK3#6!0SpOYau;ps^~P6#FHkWsU9sAZPSn4YHgs(` z8?4eFMQlLM_|b;#hVTKWXQ8?-5xON*ML;;5qM+<%2yJ+xBTzg!dfDS`&)o|;j~Dp> zhNMQf6wr`!Dhdi}H7?D|FlQyGyZ6StjnO6>*k9{r2p5gj9sU=~Cn&6TCtyszgah!u zA5)?y9;R94LA>5+qJkr&y2+mNf)}9|;gb0U8VqVc1?+38yxSaSb{wqvm=;j_YtsRl ziDoacmtL$j+qU4Ny7DAd_I+A)B@KLYRCQRJ!z@riRXh9kqR8I9yP%BXXF*UNPcy4c z;ngO$;HDl?(o2}c*BqykzkcaL1w`*vb5PQ*TIc0E8J~Z*#kr!`IH;=z=k;mlC+G7p zE>Eo!08-jGT~tike;D^mpi?d>7lHm8gsN)+hw=f+dY1U>dRIC8Wyg-{B^8tVCJGTI z4$N`epAWo_F_?Xt6};i)Z~ra=Q1jv!j{cf1E)ux=05JYhMAq3n<8Bbc(8H1RPPcg! zwc_!dmSG<&f;wbg5bE{4?SO=mUOrnPDf0tLR#1q%ZBEpqSBcv*XDb_KMZMwE*F}${tg8>N~oIhT;IfBjV+7m3nP< zM@ozT)Pm3)J4{5!m5PrE3@J3aoc;%bK^3l_V#^t710H>lPeABHVomC(74&_T1B937 zjmzOJ89{yLn-S!GNOA+zLNi828=b&=FiU*k)9EP5@H)t!mF|~jH9H>@mShkg)xwIZ zQi{)`R|dK4@4s-%0a!1ethr-PtF&O6MZ3?U-!UZ0C5Yx^v#f!EN7h>p|7H-|S{z&7 zzxHx706QeDd#L%@VLK=mLWMImhFc+R1b*~V0HPL6v+m6N)BZu4ZS^%!jd=nL{KK6J z&@>^1GRmxJ(CYHmRB#~~gGi&OmZ{9W1ew?J`D=(z$YCf?ZeXt2UEpR=EW8RTSm{&3 zRt499Pbqk6mMufHh}pOFp+A#T)Cu7sumkd4v*)Iv9mfN%x$osuS9zF`;nE%xy?pC% zHqC~r>+B04FN2U}dHSS(;XH_Mq0AvxtJlCDuHwqCMFfZR#x4i2In_#L_(Cb`a z(7P3Exx@Py#+$)C&?ffMI+yj}NfOTqo6HM4_DfvR&Gg{ghDh0}4zA1K(V+eDnObHvsTKgr|JAv4b`xqjpwBat7ew%WrQ0 zw+j@`AV~5W99Ncu;a{`k2e=Ia^my^?#|J5GXO{3ZbE9s%8|Qv3LzcL#Kss2E4LgpT z1+3JpT`?(EOg)Z*lh)Cnp{h#w!@kkLFFNvvNvoxgK6rSar_bfDKYW8 zlR)?~vWcVEplrlNm*!QnV46$U9au>b8Rt|55TvoFe-d3;66?9QSj}lMpZ_5A!Y)6X z(m1K8;}h`JP^}T;Uv`IMY*xwI1(im06IDYH%FRI2zZh#TS0ty^e}Yb}$Q51wez!Ha zq3s#Yxn}8Jpk$TY=HG#}naq$<@LbAopEkC(GH|=>`Ks%$C6vjrUAY}Mx4aXBV5b|c z%RB*B5^V;pT`<^!cL@NGj8t{L40%G?Yot+D{`%^V@lCOtY z^tbQ+I{Fm#z0v3<>fU&V)szhwcxbJY2xaGKhR5M>4T#Fi_XBz4V=1Sgj%pyp#HR@@ z+1;y{G1mcSlBDSlu_fOmu2S9Oy(T8)^6mSjv16ZGt+LISaTlv}>mYau*%nh>t5|6L zdHtY|<=s7`>2n!N?#G-K+}`WXQw%Ob72YWo#YDg0UQ22HB{40g7~Q{*?)V6>i4Eh_ z;F}Nxij$R}k%iir&IT*pN7Z={Y$7qWHY}gjB7WMD_#0X|^$|W(Vw0uykm0 zhIP<6H7gVP#ZS(6JentcHTHqW!Qj@q?bsNm%{1Bkwd$nqRVXQK7!08pj6kXr`*H=yqLZYJ3-WM}JQ)?(Mf-0%P4qgqkLB2nSA_(uJRGyOX zTV5Z*plG7G6}Mu3jN|2d@A%NY5?|=M5X(>9tSlo2&DP-GJo)y|g9knZ4FR5{B$hw} zob2nfF=sbeK7Z$CPkvbxwBrd>)r}UOX!D+BKF0)T1S!>l}s#VcD)Tl!%%PPU4b01Wo>MpfJbxn=Y=-XaOJH(z<%gowOoQ zl)!}pgVR&rlwq(!?#T&jifiH|-J#BX>T{aVMxhPy-=?rM6g!)JUE&dWCNG_Qf-aS*$Dcf+|V{$JBIy=nHAMu9&?Q_igq}u$QD*)7v zj?>Hp}-=@C&3>c$-yuvn7!%5lFV&C0+ zhte#xgrEcF&)xs$9ZZwt12!B${X`Qs+8r@^v|=XZqp@|hWExZAquX&jFpT6S{3p+@ z7uht9!p%tCzO7FHzZ?e<2Ed%!B{J6nnEAKvsZ)^~o-(B>C@J+(29sE{zdXw{@7%c( zwp74^b`Ws!kVQ%WTX#*r$^5yeeB2gIH#usu0G>y+sV8OSH_}MjLk|u=ye`eR@`qZe zNvWmeG@E~9*A~|1&EKtzgBgF<=JN;a{j!XwNsx=YMDIY?|MY4=yYN39Dqs`-r!NO0 zh5zYB0-NwZ?O$LM{x|7H0^u>~Yw6Is0{+E$;yv`*IE$RPg)6$gjmcU9r6;~;_mX=F z;%zkO3cc8qb>WT#IT+)iMF88~&UHT^TW(mgj0i7bZWjF4IvBsc_#of2Z(-V3jlvVK zs=0k)^`I$uy7>MWH+$4V*_T@w!o62dLdDA^MBJV|Xp8>lEQ$*3b}Zh7fpLiK&@Xle z7x%gF*jHy^gbv}|tK^n}7_z;qB7oqA)oz`E&>$=n=CxSB|N37R(F?OIGReE3D@7yZ z;jduV@;o>OQ87R)Uq=xR}vq=V|x(4yGOq=Sc`Tpx(VZhhSBZ z;he0jzQyg^y^3e)zkRfI2jrj&JxsF*64wq>z4Rnl+G=(c&%W!BxF6)izd;#mXgLiH z_me)`G=IoHz_aqoLZ@u*S4GQ>%#hSep((H}3MxYHj&B`mCsgv?_1DB*TA`~Ay&31A z#oX1b=?!4X?8HRLXmC4SFHwK=U%Pk}X6(ezO%0(@hC>jG2h5WVRJ;-1K@@m525gZl z*gZVUn#vpEQJYz4TiUnk(8iBhc(th^vgVO{#tU$$g>Cjdn*!qip*?mp%#G|X%^reI z?-)!y^sZdP5#mXD0)ro1hN=`2Exh@ILwR%)7h&V@V?9rl#Zih!!zRI4jf9b=Fpmia zq~$>8<^&n&IIo{(j6EU1lO*sjsYrZ<2GL;eHbJj27=wTg5h7W!YX8;54*rMw1r*@= z&-H(Yo03qD1`)Rntw6&Ik^aIZArFhuJr!A{WD5Xq-4sRV2*SJezp_(MUn}m#?cuKb zwZq$72U8ya&ov1%QaK>*AP- zmLe|Q(;^^}1V0qV6nS=D|M&e1&%HSst)@k|4Dm=|Jzkz=CVNJHH__gdVt zHKKC5Fk1uKvot~*k`HFgJ#gyD6-#|3%3u^t>9lq}qx`RSz(_38KTNS)s8B%HHa?E z5YY+!bCN%nKz&8R=hY|Hkc->iSU46*#aAR!g{tJXHy~i#5jz{#L^!06(jO6O+Moc2 zXuyOOLzu{6k=6EI`cJFCq-BU8zCwTyhU3J%3@C3eV0huCrbr(aCZ}@G40V>_uF4!X z2ZpEGP}o=H(IF%9MVD?b@TafMXUnYp`xBqRIE*{(&&{L-#++qu!%LKT-j1OxkG~qzRI42WoDv7x4WI%;{CC z){{o>S-2#0q31lBkB7PFT>-rh?yox@y+pLdqyQM1Ai-aqfVPNtKAgRo z=+NT+LcGdnU=y_6Hv)zE=kk?6b01M3{)$(-G;h4Sy8FY2eDMch2gqz;GA=lsJUxiU z2Hco``=h)(1BA+dE`42q;i7STdn-rVBMdKxJXi;~(B)8R;AvldK=JQgy)YA$O$uyU zA!#6M^v6B{2lKFVK_{B)JV!L3+Cm|<5)9|sTe;3U*9a?m;vDEz_5Md6$W!o4&-wC1 zn4fSBjrv97_u^j$JWjwG-M(F=Ka^R~m~cS@RmSSwZfk4f&K3Z`G51mzj!<&_&m?9T zisRVYLYtG`3LgZ0Dzoy>J&5KoC};%BWuXhgE(3K&gvs)7#(U}56F3qlnr+pk<_hg5 z|CjS$y8XqA!G@tdowX|ZbyGuz*z*tbW9eAJyOeFsSFvYfO9a-8ChMQjf|#5glzb?; z4nFm%u5A3Iq4widkU32I@RhKG?wz|an3fNgj}I-bG~sWhJtoPmaoUXlux^TtChVy7 z^*z~6gEr(%XQi4{vXfE2{G^Zf)JuP=aWK%iBt?1!_qX#LS|>gt*fsJXyJa~=CEci^ z!};*1OG<0w?N6zTyJ#QYSnhLWber^Kd}3l7?HTS++A}B%hGp=WnaEk->mmB&o8c>EjTQF zDBrOaH|fzySKv`!(sj}0kKE>oT*bw;p|x$&1dX?FB^>>am7xChUn@i6-#(POxBp`m z_±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

$?@=QArCh=?Vi`7v!8cj{3kB8AS zk3^374>e~jT6l!p#dBO3BKq1Q;O$ggr{moaN7FCrl6yDVsx!G$dLLH4?jM! z;(}nh78X1SS8sL)T(?v8p0~Spr+&ngQk!M@Y|fH=X{+dC*fD{IK-r~2aV!*6cbVkT zEnl;t(!wXGOdbEN9-BOo?pspzsZ<7jWtDW|TUy$YOOuNhQG-bk*9jp!Y{o*$$b*Pl zzOG`n1vPSfDO2s|D<1d2%;G-VQP^4rtT`9yIc??aV04^EKu`5>aY=6|zpADtb}wb0 ztn6SvC#79jlnYv_6$+?Y52{CMh9^VT)c^@{RRBH^G5-3#=FO|)`8o1Q`1JE!f)5fZ z1v8`?=Y@{iB4uk$mT(zEi5_y!o$M>u^)-x33wmWc(DcsAa}~&|7ET&M3 z5UsTqo>6+CcL;Skv?isB)0Rr7c0L&IAd^xZ`Q_m9W)ZKM?^o=>x>s!unp>80+aWmpOVtA?&gOnf0zXKY z1ryiCs+vZ}xLJ{2wjF&Wxw3C}fWfdF$AA$>hmaWz@SzuywQIPlh%p|HOx?N2;53`iYyKf zMd|6$S<=l+0q(?;K8BN@tLnA1K}6ANl`5W_5DD1QrUcRLma#=OG6`PWOe=^ru2nJq z`CMyM?A_k_dSM54E1+RHoi-y%AJl{q)=HJZLjVb9Jh6VIDKByRS$wR|f+%K~TiD|l zgoNn0`ceHd+mR+7N0uSSBN+0f$@}`E^?Qw)oPz^MhV$1t!)R%$uN7Fv{GwI6z?UyM zqDj4|wVk#^r$X+8^r=&){IWVuzc(fqi&TY3*SL5-iYn!y*j`?efYx0Byp7%UqxM*& z@0+DhFsrLlKpC?~dmZv!Ud|;&btCa;a&dpli{JyhDoq`DqBA8qv;K@sfBG0kG^l#E zFt)n6MO?b2vw)(P6Wv(z0*Ta-Y}64qY&04AP;rcOcQ)U5wzR$up;U7s}MO$hNKHdxO>0tOtHf;Z|&Z$$$?~dYA6DozW6a5a`n{cH>@h5 zLNitiDzL#9XTk-RJ+JDvFD`U!hV^lPSSVzpj(p~{PII+g8@Idk<^tWH=FJh;?bqe^ zyDrr8peFAP6K^ybc71EF*N4{U4bt9t8J>0V%k>PfS}mU&M26ypDC0Q=cl8d_PAtSwI3ye<;$+Jm zRsoFSw*tkE;OxtEKIDPR%On0mXJ23Ex6M0!J|G2sJPXEk$w60yErF~38`C$L_xBYx zr_tuYa9>I*AyO$x1r@SV5;yF+vj!P3VRT;_Nj!$344QyQB%g~g(}87(A`*6OLs6Uw zu@jMD*0G0pCaU{bFv01Jwf*vzePzGYeq$7=WWV!bnvP{6=SO&KJ?MkFkz-kaHld&% zZfDSmYt$jdRDtlWO>Y*^X5D-04 z-IZu?-?k#Z)uCLmpicSrC@(Bb!^1&8q9}_)PS8n_!dr!`&RwcEY(SJe+-Io&9)6;Ot-9INSzwOIG*ZeT~{VHn-3>DFlZFzhzjg7?WaTkN3k`lWyK zhx~VkcXhIv<`%A}!+gx?0oY`DhPP@ErZKx)*?a*9ir%Pa)GX3dffbEPTU|;n$s*O$ zs4OIWN11P1G`I zCMl9l%kA5b#af>u)EZQ*9FM35@&t-(COauKRJ&Z-YXR0VwYWZ9UcH!~?eQXrUi@ms zw$1{}I+$uB@5~5XjJ2}1+fG3RsY2qnqCyPbtf1|mmW=7;YZf&z`vne4O@bn7_3J?e zyIve}aV4;G7Aeh*bQH;(lwDJcNsQ>E!`#CKa%VyWiwrmW=7G@=I*2x6JK>Sj9eXF} zIVK(4H;yvmF6#0*$(x3@>$vP~((Kcjz6!j&@pq@+u`$>V7ai#-ce+|5?w#6DuG}0s zyEpKBcBkXcZ{w>E#jYf7p%$Dv>OyIW4Z$YKR$@9?QTg-s4D;0P}o{yqS zFJdG}v-RST6F1d&sK;^whjzO>#g-05AYF?tXXI^Zcz-%!zawkAEj`abp))7{h*^v# zITjC8X#{AP)n??*qT3#Id8-js3}SZ*ZdGDv<~Q3z z2iN>>uV z@CO6&MY~mfqpaWK!m5DLM26Wu)r?bM z3?9i$nq9&KAYGvIoJWwTa&he-LxzM7NnEZnGjkzqbsAm{y;^DZJ^|5MysO8ENVpdQ z-No0p2vMMi*-b)#;h8zZabG*({47U@e!D+B+AF%RK)hQ}x~x>WQijVW76H>6QGeKq zLds4&@3nt_#}(Ea%eQ_Gme2u~9>&lUIg@Kw7QU7fxSLkk3ND1>)SvsAz8Z1+J(QHr zcpTqj+wm}F((+s*b<4SsZ2#Q9OjwN-8V~`M864@jCeC2X@KjwlH#46HpCy{LFSR|Py~-Fk%)hvY;vk6KqH;C=nDq)_^AAOVdJEP!@7#Tk1jth8ww6v zj-O9!NDVgrWdPd+s8wy0+>1Ec-&-@V%agPxL}7)&u3_sB;AawQf@%OTms%OmVV9Nrc%s;+N$sIGdFeZK6~80r0ac&T1a{7Zcw zc=n3oT~X;=0<)zqL_zfdDQwq#Iq$RBZ&zbmi_pw%y&^WjJ)E9@58yKPo53%7c)Rwy z^#siMQ#G9GC>zuI`o7uT3JPkpV8cR^d$5kdrH_rwF{8+s=hrIYL26tB&x*5UWbQ8- zNk;2Lrj^PTRiy*XhaO`j$Z6&rX1%!QsGOgb&Qp5qe;q$x0aDM+DjXSz8ND@T)MlN6 zSn@k*O{cZs>>RVh8-;0CU?0Pa`X9saF)D#K= zP(pC{5}GOuwuNbvWV-g{@^e?;I_sQ&(u-L@;W?}AeBy?CMgke0F>06@H>nfXo+m$XY^yqi;R>Tge)cBp~ShXXd_QkE4IL?dG@ ziqeaQ63y2_97x-(b8PR8V?_YPMn^)1Bwr$ZNe`dekfYcA#)6002HT0?nKU|vf=L|H zkq4gn9RE=)yU%Iy?$F%3gL<>wP|i4AZJcCG7SKbCP6-sBxz@-Vh zIAXkUIAX3s0o*aq?K>6pLsu9|J`|c0nVKw?^eoa)98-W?T$9FX^_woU3vqymZ6Jc9{D(?u~HGLnL3{gcvk&)&dJQ-@UWe@8P zOrqv{+2hzT6ecP}LBFt(;zt8bi`!ZqCE*M$DIQPK0zurqp%O#+DH@4>u;q~yT%kdh z+)Ur5#PtI@ut@Ao)*8CKF}TDitPoz2px!)2W29t@3P}1LT3RW{638TEMZF3lcv9V^ zqxO3$6*7>b?Yi_bzUEQCRhaSjk84KWmuwy8j;!ow;c{Dv{!yUog-I}JGJT^^y&5l2 z2n8YyCNGpiH}wKw?wxAGT{4}Dav!2!9$DAx=v{5(+Vu{?(X%W`%Tq$)Jf%{y(OU)Z zwDvBp?-Hon{DO(uU(^j%Ir-qC%VsEqBIQ9%({%%t0}9tI?eSGR@XC;`V0AMn^#0J& z_p};*k6Fzr&!idtt++K@AC!G8E`>{A8xz~+UNzzRhio)>*%!9FNK7hdf2B%w)xJq< zx8^cHyV#7p#YP1^#cZtUY_26*WiCtI^^oW~eFY_OmcN)E!fN}@+W0936pquD8<{=b z*vrxLrn`gaAYz1%M0PN#%T;22#*&zn56R;9WBGW0PP~vZLs7sKHA9lFYaWa$$Ep1&Igudj+q@{9~~ZKP_a1@PtcpJ=fjm2{dV3y^x#*S z)8oPG%K#_7MnB3Y@Bk3mRtc>M90zxE8z;4au(5Wy&TA9Zh7Qw6`>L#hJu7@G0;@{^ z8&Vsm7d|9AcS#JA{HsF#5UB%*_&JqR2IKei8YGT2YKxcp!#y#oAqtT{Z0cxd2Tx6h zb?6`#EfpCiKF3|%ei7R>_cL%4?RG0hWv&Vkt7X?_KUSm9E)cJZ+CV-iCChOfg&em(YI*W^~Fs=hRY`0vRj^#kAb2Z`CF( znXM&JNan!Jgo+}WnBAHi{u|#C!tu2(bBkcUBvKs=b?KxyN~x<_piEooTyY8dhJwUE z;q1X&4<|V7#ZKPnJNpCF?n{X@Pu}S=i>Nd!5SzeUj7r~x{`zI@zoN}m876xk%}%bn z7TB-qJV~Ub_^Uad<+Z1R4`2G&9VuT?mYAi+mMSD^xV1kol;zFYUcg*>sM&GqG)lVb z>&r`f2!@@OSPodg;^JMGYWGI`qxk<$tk0J<`(J&3CFlI++M4=1`Mgj2+7`Y{wbL3t zY}c9W9PTmg{w#)Ei^0Ukq`eX|vT3?59jw20u%&LLC#L$_Q@8u5{o$49l5v8HsrJ2# zUj8p-%F3C-;l(hXt4`t~Um|fVI2%|0k<1VqtAqw89)C@8@zv_2S2;g^n(1B;-;OGe z<2%rsiN!UcGxzupFpWBlW9m6B+LWkYU{{KUtwNX! zP=lu5nj8$5^yKY^2c+gaoN3)ii10(1P87ia$<-!J%YDR+b`hn26_3V5#qQ__Z_AK2 z_Md>Ms{%^)jBWP|PJ0ASW|JYrjoJgoFWD>Oa~JzV@7IOa(qe`U(4^FH-Jwkm^K1N6U7zkh!~3=dg}H%`Ghbila^)r4;uv0>j;GFy{tmVhC3HovbsSt4C3COa z-+qkp^>|1Q57L3*-2(L$KbWnH>O_hJ5}fn;Xw%UybFFWjSIT_C(GI#~NU3eaYQwNL z0?DOdhDPlou&~Hf#s}gd|i*IIesIZ zxkU~7WaYuus97VCO7eHn6xKBD+Khg2$YlwhJ|F2 zr~EUr$B$+-njgAAtnq?!EmNn`p^}1fXebs62e8^W<8Ga}>~^GK?y$Ca%O2#ib;5+h zeW!Qo8gr8mT~1!}J7pq)?etM;t}u>fJ27hLpp8gl9^=&>E*yGxKk}6nWObdI8^MpN z>mK#b;%!3eDc+q<6`aof6G@3cTTmET? z0u>xCsKc`u71&Z&PsBWXoAk@CYes1 zTsLnxeKsvO3>@eb`l7GhHfZTX7SC>>|Hwwn5%W1=m)wtbYM;eKl*kX!b?+1N#8jPl z8^-;b)1w{>_18=N@ntaq+nV=r@=dWM9JkJ4{duo;x%4`BjGTC-rSB3mfVxow zxjfa)>-lx|X=vy2wW3BUJs;UTxfMri{C1581`KOsKBbIVCeM9a+8^NIWn{)rYD=`< z{FD-O@Tk1Qe%kX=&egU(gG=g6srF3zz|rYYk3V#wk0uGF*{$P-C2#G!cR`m77GOAj ziJ3S=^uZ!VN8FSd$c}mcNO;RVNx3F;TeLlN{b5~oSor!&QTEv4&L_M@{gh&d+{@Oj zBRUjJ^7k!7mlE=-jC`rg?kg^SBX*m23vmvn91G}2DkA9Y>eNWs3`ZLs)N5mD2uVQA z#K4g;)x5JQa;@PNxn3TTSFH>k$EW~o0-M{Dwog3Yr{98y<~)>wXxnxw;KbYVoV86s z1H=L{ ziMW;@0vKd!Xj@CH_`S^ok9h8eHJY&0G-|b5LWfc*p@W12 z%<#Bmr5kbApS4EL-q@1TKxp0b4SZhSBA4XACS9Ts`M|P0f#(kD)SlmVlZY_gNo{fi zSELG*!lcT1rf)8Y=r>W#@vZ#jtZr0m?tuQ+5RtAcm7)^!ef_3#!oZgI6abFy<=NT} zQ70wjb9z)%V%pzbaQZFTZIRGL3wI7otz{B#7cVl3Z)dJR>~iv@Bag>d8Yyhh!zGj( zNU0-8*<(!H6F}z@OMl6Dvv5aLYU0GK8HhL3kv0dvQiak0*&iJpBobIolx=Fu`ULc|XhKOr0=^W^fk;jR zi#ngg_CL3-Gh)`)VcR3~Pu|$SMvgrBYNmJ^`DLmTzcIT%&u8&9>Tn^z`;G5}60c%L3O3Opf8UOW#f>Al4Y#pYZFSBeeJ-aVJzn zS4rCZ`pFv4jD>laWm3w~*`svg6bnT)mFqL4*Y*@X>epV>IQ>Yngf)lPiKrO)5#n{( z%I2kgNGQ^h4HF^JpU`9p!PQ^0ad2KQO9r+(ge4tn#gdDw>+x8eS%l2i6_(+BvTeOp zDzfZG*!9nNSFuK7av3C3?9(s0qQ^1L}rkkKh1AAQy4dzcSl@~ zz1)l}F*mK6v14KmR9;bIsHthK&AUOawuYOQ`S`166ju|}y_cZt4s^{{CpZa1AUv|{ zJug?p7mACl0%}LDavdm)HCTwynFTi_$&j?;M>8znMtOI3R2TKkiJ)z$Vj?DvfiD7t zOK9%Fh#MJ`+6}$WhKoXsHTLYhovuk8x0gqJx4y#m033dWCJ7Z!M&y4@mx&wixXsq> z!0B2lnkX99M}F|>iUSyofAq0^3BC=BxJOy?YUWMXXAc_gbU6W0x#u_c zMRFV5dL5QNQ6GN7AAc~Ox3E_BQS!v&d+|L%BrAS$qwA9mnQb@rmQx)b;OzS|pZ{$$ z0|%wfE^qy`Vcy^wyLPJ0`>)!xUt|CIEi=zlgZ$76Zi$Du%d{b&xE@X~OF5LkD=+pL z`^4{*u6Hhb(x3J692|WyY9Pg2Rd^+NnJdR1&_k1r!l_S2)VrQ+tmVv>tsE=s_c?v$ zpT+*M|2lJ1*=<8FAx0-K@5xErfhhCOVxHI&1oP!%yZ@Q->qCE$!!CA_ibj1%*a^S* zS%iu9HrK`E zmB*j`{i(mWzf^8ZkB!V3!#`X|Uww3kWu_cH*XA>Wnm>}T{wPMv{@mU(QCI%HkiR|p z)%3x?++LQ0I-kWN=kAXm+1P}oTJ!X*>H{Nlb!Io_H7n=4M#aRM{|y&scWn6POsK>= ze)!Be0w|LIWeS(W-Mlb8u=Q+hnjJewd-z!l{#i_LO-%d1r&Hc_(b46f#m=~IdriLo zGBtJ4>n6TG_gJA_EDBs#S)3~-4<36bwrB6J&hR^f+9JOv9{jX+Y81NR81dyBqodjJ z)k6Pi?EIuddW{Wvw?n_{3FI-@**(RM8_Q8jLHcGpeZtFak269eHx6dr15L5KN?syL z&z3Fvc$peg(c4UXbu62Ge^aC1#ULpESHB#^3JiT}Y}Q@~dPOAWf<7Jrd#Z0Bp(r1> zq#PeY*&VcT_gelhO@iNsHk~U$v-mez4gj9OeItY!rGXmfAwHhU`SAYw)5$k{uSXL8 z$~~$TwhuMDz~7m3AC+qh&E}#N%|2a5zpR*ysvIY8n1nQ^N0CijR#(wwJ_6%Vp<$Jq z%6xTtU`-I)^~Jr0;u|>{yoIaDWXC}E>;1sRn&f1Wmw=D}0(+$Aa?Jok!Y_<+r-uQ@ zq8NPp+k)9)dLl|iz!rc&R2*0jT8&agDEU%#bz-pm_&A#P%}R+pmv`<2tB~4<@Jhvt zSP;#h3zf7TGtQB)fJ+!AT27kj);Ah-I-&bD$11vgidq?GK3PA1o}yvV_hD$G^KBNt ztp^D~VCTC9t1}5h)-^swl7lI?yS;UvCtRMp*E~=>w1{nW0I@noXtOog1Q94)oIlu5 zPj)awhc<(y))jE@NeJi6 zGCbY;=1p8;aAL@G+a1}eP$N^z`Z7nTo^b)^IXp}D128@600&vBCR)_jx4&;+pU*g6 z2auAS9fWsB9sGhM%W#bOLR8bm-FBbF5OMqzmojwDR+(zZn!udo{|#-NkPyJ@xZYIy zfDm4(v9UjdlhTFm77q`}PeE7W2Y@hAI`Bj_^o8a!7vU`_ff=W0Y3s-e$(Q5yx0*zE9neuPr_vzT`BmpqkXl!2)ruT^2~Y zdwd3kmFf`*&4PyRblA8(bW;>%Y*uS|*dJ!3$Q2Q@%HkEuT;qnPgUYG?QuoomtBo6> z9bpPB%Is&2WIaIY!q9VyoMfqo(w56TTj=)UQvXP17TJ;hvRnR|Fg~tJ?)}Pp_f4(J zQ`8&{?h}7|NjJK-P=87k%6C{wkem)Dxo2h+>NNU%n{bjZD}TpU8sQ-0{Ur6?vDSzf z@`@4GwG+HFiNp;Ox%fFQUXfx_N0c4b9h%}NUw_wa|23cItZbcwR03tUyU{FA>Ue~m zH+^X+r%Au~XeCxEu*#45XnoNJZ0d}m%eQ@RbFfP|KY{H)AXkEF+o~E5*@q>gu!OMl zK~2wZGsocv6kssn)h7xC>6Jl>UJhId4z`FifRv_(E9ekRAzR+)Q})Pq z-J{sGYv73Prp?;S!XP_jm`Vp_@x&zs$#>%EbiZ+Jht>KH7)kuzz+=k8;+lMW6|2}g zM~U?fX<2FU535R98i2LJirq0e3HaZv+1G?JYZ{8!xz};^y7ux_$lp8(uifx$!zju0 zFla_nNT`r$;U=5qg-($O8_?CUT_iXb+LiZpd|!=W7cg^6r9!`AV5SiWx{gjr!`S|g3}MILU5R3dXb|pGriJ>M4vK*Nf{{w4fjhT!{HcV0(dD1DFOD7 z9nyZK6GysvwbZvtuM)t7k|?Je7&?$6)nhMMz^aOifJ=aH(A;y2JAG2ozp)au3%fE4 z206)Z2A8CQ@l~5O(pqN)&Kbj8weHb-G&2h+&upS_nqSl%LnIXL+T2GOJ3 z;}_}CmrF{CdLU!6c$bIlD!uk>@qK*U{DJqzjg_bSuZX0Tn;0iEi=~cTSi7s_pIblS z0Yf$ubD}Hn!%xl5e<~64yt+#@Tv8pMw$&R_X9nq{%+EqTU zOnYr|_R@n3oZiMs`?rHj@_1KnxV^&a1-MwpTb7<5fbS|h&93d~hdXiMf4D)w^IHR7xWgu63g75bl$M z)n~D*iQm5X=hsF{p3=&m=H9C~(q<2rrKafvP%LP60wAAZ=OLdmG*RKvZ_^IbL%o67 zBl-;SR_aHAUiO0Xm5JYuYSQl?(0Nkz0lj?;NG%!AE};dT4pw~W6Ob3y8B!)h>K)b` zy^qi|>U#X)9t~aksBe=YR4R)G8)wgqFHEN@S)jsPQ>Z{j+_oW=!L-zOPA zn@u$E+OhFCdwOLA!_HSo+L5?45tVcJJqr(Upso%O!qXo8@}c0(mTRTQ+XiIcMTxyx`%~?6ONcEJ*^hqb)^pYOi)GX$ zWB3>Z%xS@4uOD{e98LZ_IRUPt#8%I*-g+S}Xkz_TD?LschXF zM;&!WMF#;vnqxrF(1sF_t|I{{0fB@_AmB(3O+yKt84J=Gz<_iK5Fmjdp-Do(kq%Nr zKnMZpJqXef{pFnB%o*lAbKZN-d*9!=_x?V^KYOjs+Ut4Nvscz$<$1nekAv%|OeKe4 zy}{H;?d(wUqIT`4uenY||AU#L{#F?2$#orWc<7_!xPnah!JHa%EKe>Zn|j7JDCHBu zRcAwIzw(D8Uyr>GciS3dUiffKe!$jF@j%8w1>WKjFi!B9-SD>FQ%`+&h;A#-#ibW` z2oGlg8y3qxhLaxP@Pv6;ZzNcJw9y_H84*?L1`nCElVn*G5t;t?Lr&L1iaZI=tpy%w zj~@l7?NeYiG>n%#5F`QD;uo#g!#B=-X?vzjWtsVGTz5vhxkFTD_~}9=f+8JJYGzEg z6@S$Dp~Yd-)Y4JVtuAG3<2$;;^B0!Z^HWtL=~lpjo13}MVxdE|F@B4K9pn&tij8s_ z5n5ceQI1UYpjn~L5gr7nF704>ImcuC){J6X2k?;fNZ!*EY?orz*jW6NnEi}|^-S@> zxgh3C7!M~(r}wo^{d=5umsGOG*HDUYqn!7(XI(gFKZLXhRk3EEFy-~aq{$|`tg=KO zBgd4gVwgm~bP3NG_31ujW4;9ko598{-XxmS*zwpskM&N}3cd6@@X>P>=Spm%Yf_1V zZ{Bnt-NzV$(v~kFMB6V{g22`lW_-=-&he+!GFH3%b@fk)i(RN_-p?0wbkaz$yany= zADJp~E6fXe8{=c9zyn)Gt<<_rF$umpAZKIwol(ahrc|Ojf|cJ^wz)|QTZj+uoF9I* zpQ~5aO01AuvBWQA25lz&3=cr8_|wDu6c#dyyKipLE2Wv|bRe%%OTTI6Rn0&7E|To7vl+bgHA`BPCO_l~DJ(nkFb7n6hy8p#D)flHCD$GKy$!0?Gu2jdP&I`tV zaZ#M$>WN6g;0b9$loQ2Xtr4csp>%aI=KZtl>Q8Jb-{%ZK6e-NUl>l0w%FkaYClLkb zVYQ?Lv6%v0xT*(}0aG1Pg*H#@>NJLe;`^*h0&6^S9wckuE;7%QbT=4lj}JEFu%mBj z;fxt9U>?KhlB^ICUujc<{R(~^$s3S-MU#r3BSe!iKu)~qjtUa;GMg{t$qyP9WshQo z+p(_KYZtd*L;<-e;bBx!eOeL0H6o(G?|uVGD#lc&jJ&j5j$*%wavv=R53}LOw=`V_ zuadS*FE7}qQP)X|hu^vCTbF^Hg`<|3pXT-QAz(YdGI~`Jc0ER~N)K3$TdOQV_E`e` zOYHDq@S3lD;DyYIn%D+VuM8=wzZxThZPqIOX(XN)~rAb0C4uaWLFe%;7S23b1wB+#&+*e zvs#zh3#NXaWreWGGAovE3pkHYn;(grwQ1B_Z=&QrR)P!JKWa(3oPMTdJ3RYJ4rO)- z8z-$LoiXn*@D_u3Y^la0GJO{a0OIx)w=kl$xyJH?G_R%&U^4l~?c^8`SmejXd0 z$CMU|u_T1Hk8Vk!KXVype5HV^uHl0zY2GC%rM}_ZnvW#r1(LQi!Gz1zN?^-XFpse( zgO~TUTKD-$wd`wLmnz?LeF6T%{f#H-BmZDS#3fU5dn)AiN5_Q=_p=#$*_FgC7l&)d zD2vzrc(~>I=iF@0Co!dH_82!U=}8C1x)NP)p5Lr+ws{6ez;TcmH-`AyGJN^JHotxe z23>79C1WL#s4tFa#&IGRI3NI-FerD!qfXV$(1G#%*VT1*D+NvI>>d=1!!gVMd29#NTLGAf2Wh<3r*wK z40k!$qC-6Q#f#r2|1_zBa3`FMiR)NV9uN-u@%0c7Fb|^?Wa6xfrGf%E-rN2uhDmeb z69JYM_I*|g8BU8B58|z5MkV_>E-~lImEpl$d`f~qc`Uyff7cMN&%&`^@p=B-d^u?E zU(^5NHeY^K{NVM!%dhOfKB9Acs(9RO7GJU3+jYwt5~R14Hdi!#O-<`eeent;>?cMj zRqgv2lPfNjx67y=_!jrP>RWWW!bN=E;}=arK+nPf5XXUy;|;W7A#<>)TnE{3@UNk! zx~3AXWqXndiVdMJnb!CE-8?`DGln)_;bX+c?Wrl~tmj-7ko|+_onLDCFQ2zQKv_)Z zPo`+)VGH|7%^sCz0kF>4pUU6`m>5F3yv3C=XQ92&uyI*w*16PD+-_@pk{F>V`ORN^ z)4utgC4S8u`kfbwR?{i&m+w@l$E7p&2Cm<@E(B_2a5ks{f$QKQ;#kj*l~O{|H9LyK zfxO0yK3P8fE{lZ}{Hr6+XnDWZ_s?8EJkbkV(Yp2V?&xPOLq!8|ZfUm?L`v~?ao-0c z&n~tS!E3b5F;L+n%}gy(cJI@~*4co*O)WFa@R1hhRsS*836>=VQj9OfW#MKEgS5EGiE7zc zPNPb#b0CY%=4BtKT`aTyK223o&-}YVP#d|@ERq5Y;QOQFy_Ns$@!m0M;7jPRLQvCi zECS01<>%*-PV&(wtEy28u&TO>1>b$mXaOA5Q)OVCKz-`LU+Y>0`faM>e}3#>$*gI+nHPd%$gJ~JJ|`^ z9ed}kqKqhHwU5$MNi&{Zwvp9im-_f7vaOfZ6{78*ZV8Jb+imC<^IBY~UkNq;ED=RA z5F_qAonksbcK5q-9{eKV(DC=M4Z8{X9oCtT3q~j?=|mmzBlt6yM$TuhOaqT=zf3JU zm3%l&om!=0WObs$qbQVv>WY1XD(2+?(Wv>MrGof7*HYYViKc$(6(1to&-L{nhSM}C z(qqS_m5lexVs<7or0jA5AV`M`iJ$0KV(?!pT(cgsGomd#&h0+7t5PT^6dCa zoR3BgOTxQwzEWkw54T)1uJhr{+2zax!dnD0joa}mDRoa$9j}?x#dRno`j3pkeO5yv zt)y`?%{4|jrnuUE<8;SL?7}9PUuQRqQE${fuVzJN6PcH7!M*9jo%!SG{S%C0c6U3;UPQat_|49} zvUf-H0`L5h^8eu8q3`^oDkT%|2b{BpAEv(rSu*(58PdG~kAYNSvG#N+xg~dlY9vdM zw7=(m>BkAv>&3M<=CQUs_lXGMM`thjX1(iQG(a@h2u{ya$^x(?-Gveu(@_^%AQX~e zJ4f1}7!i3c6==0Myhl89hN5h4XB$|YSc+Kp_Olb9@rz^%I52nBDqQhd>or#w3$|NU zpB&n&(eL8pGvl1G zVIk^kny3|=84Jedi-+4&Py?Gm zRbQCgYJuyy6#Fz#L9&NN(}dRpgey~cb}3zW0ngktn9{?yZ&7_=du>yyyw7Z@ustlY zG^5M5e`xrmhP;6r*#4b0{z|;Eo|e{gu8K51Osx6^a~l&^lUyi7#0TEtXsM(zMi#ee zp{?Tg2pb{hq0_ttu*JUBue;9;11ZzEL3cD$Y>2zujTUZMDm{ce0j!M0Bvqg&S|2m! z>U8B@*1M!o|cAj!#PQ6a?Z@I zn%Zz3p7`eP-_D^`nX>D=vssqEbx119IoxcmMDs)Ts@O5D%dIx*KZ zgCH_&`ykXKFj&`1hFqP>Aw8Sx{LE#KmR(dM4KnD(3p@{fW(1qt3Cua3Gxie+A zo7y^I`VNd1G5;9dojY8D%`<U7Ab*Hd8++;o1v$IJewsT4oVh3q>Ax_t~MZVYvt`kjtMn;=*G{la8X zh4fP|47{B*vaH$FAcwN@pNoXz-STZQl5 zR({Lh6h@Nu_BqrDZV6_7Q1IT|BbHcCzYDN4b$n3Nd{F&HFC?We$jr;d`b`Tk_c3&* zVB5sL6{n*0-OuFP=0T^Ct|cf!fsC*FEEuvY4GT!(uzg^B*(zsk+qZ?r?c@tX9Q_iQ zh0Yl75)f~X0?iEW@;u0X&11dJHk|`|nfrQc)e=1WgyYqaotqES_1`Sl4i5VYP5m^! zi7HhAmGf;vUJ^nSkU9^c#|D>N-qSw95(36Kcr;qEVgmJ1WO+@Uk5L?tu=<}rbHVp4 zLngzzKXY+-Z>LZ{4DbI|<+uCg z^H;o`~({@oz+A7lU~-@J6BlK{(nPlpgNCTX)k zCb@%A)9HwmrtSn}M8(G<$wYzn^hyNH!2Nhz#IwfQkF6D3QJK6YY2nM^orLWv!8L)Am+6@yRNi6`N7e-?TpQ*@Q~V2_u?J#9#uBtNoMQr-L?zx`0>MF-NuDIFYOTT-SeBPJLK}IC#0|&+M_xu zmca>gsy&mY+C8gdpr2Ru4%S?NB zqSmop5!cyaF^!p*+LsR`KNc`PriJh>YfV=j@3!6R4_mI?`RysOn*CFI{vU^|*7To` z-H6rPyU`Lnc)aPtf#lQO`Xp0aNI`AYtDVKM!1(>@Z0)~2bz@K`C)?{ny0rGqb>X@D z1=%kCD{1exa}Olfvf*p4>!uZ3$!{-c1+AEU=BoNI``crIf3v69!;sU;AC}LEez3W~ zcOV&RvG56^9l4pc#ym1x8nU3XIU4-0yoLDo5WBX5UTylQ^_}326`KAhW_R}A-rdE; z?4IuG_)cuLL?HM2ReE=YCZ_XVu-Sp+jwx|Rc~@#UsKfnC7HzAL;|CP*;kU=M{`NlO zuh%^h3fO!Sw?jG;rTtq{=a+6^`iH$BE+g3V4hB_)cu!R^dOG58m-f_;YCR^Npq<`? z%~oOoPf+L#Ju75TpqrbA)RKp`(CV1Aj6sg_bXgVD{3J`WFvmCM_g&Lq|thjm(S{QHfGL5iUBMsJQnNK% zxx~rOIRnNC*T%t_>xYRh$4+Og8lT*x`X3=YRRy^0{g zL93s#7TDs2Wp!C&w|0eTO36SfgoCkh>t^}~)r7zr9<#s#KbD{ElN<+OlBS4DRSj)0 zx+Kf`v@vUpd$)b6pvXWC+d6MuEitOdCd_=;5!zg-Ng1Nv-RxSmZ_X_rdfP+!zK1)z z?=72Q>RrzhK@wMsYtIe0FOMffud83q^Z--}y+(CJ?ZqfAx-pKTcHue#qEsC%Rt5Q29t*qX1q9rC6B+MY4pbcG&V zW;ZSNq$=dgPwU7_JIW#3?$7^G$rm4Udp5hDZ{g>~O z*D9aWnxh!4x$M0kx?XZXuNS*tuTF2K;4jioUfSiDX6Gfi*T};>Uq%#;rN9IQ0g#KG3-owvJatS?d0p9O8E&At zq6aG48l;8ft=L@@nb^jMHN)64-ly>|Cx>CDn4@T`?{81NM9arQjH7$oIcU^CNoIYG z;QTDty7mi#TV8-%&CFnkDWyr=G5iE0M3!1`vjzxbAlA(2|2FI15Dqn z@RLaVgS4nPY@`U^daue=++7T)1O))`4(ooaVdOP3V4+gnysXq+6%v=*dj{Pp`HE&z zZD;34GZnHI#HB7zHW$SeW!RT%B2V4meev#DCGk`f2NBkl+y@5hAA!LWB|$>zgbnW$ z4@L(A_Lo27m&a-s|M6G-pE^R~I;HIhx40f*C(U8f|$hp?UmEZQR}dBqzTw*QLlVmpJ_JJST&4rm^kszCOiHeLLfis7Ws(vdSyfU+Y?9Yf zhcza&N3>8>y+QnDnob(+G!@lr2kn0}bW*@ZE=?(ByrPQ8FWWRkf`jAQcOymm@o^^3 zGO>F5N(r|!`OP#s4qJXwQFfMPEQN6uH91%7joeVmskhNobk-vpT~I;}tyPY6vD$k5 z_TKsZD&Wtq@~b8Odi`g*$|*SyQ!U%`VfpzF4De|~Fp>Ms4DYPz$kte069NZs;pvfR~B$*`}I?3pE*|{-Y5y>_Gs2ex$I@9HX9`y+?}Q z(G0^qaX+ZdUjP{N$_Opr z3#${bt~*yfb?xO31qZVF#h=Dj9uKTMF4_57?wc!Pzh!wAb*lHqeW~Map}Hp{PGAmX z1G|?$Z6iIm5n~C5Ck|)s{+1Q{QxM0Jf12*EedEv0@Ry&}pPk{)&hWP}_P=*$5YPIi z0#IO3L7q>a-2G4tgRLjh^-uYxno}+eN!p8$+yHJVO)#dj6bJQ@c{z~pguUCiP%>f2 z0A|ssQdwMnT_h3h=rZs@+6?Y+8^*z9_pA?I{_|t;m(T8>-`T%TB>sy!!_%pZZ|wy$ zAB-p2z5Hol*v*%mxdBro-HvW=mRuxDXb?)#0ACnXcOmaeLsQnzC8S59H&m_Up$^mW-XWUi-%8nnnF@S@D4|udUaMnAZazBLu$YTRD(DQ1{Ws z|LdZ}LKfpn9`#desClA7{rXxR%OEp#0$}oL09^!Q zb8ip{kKlI6tFz8XK)T%Rz_`nyspUbi9?#++1R-+|sK&umxwUTdZ*0Y%qWO`vl{)?dO39`=aQzwnzeu$ATT)nsjo3XR7z(}KvnIX{`^1$Ma=~mDC10Ec|Vae7a zUOS4q1haXF2T3Q*o!$Or$#&>rS6-rw)Wu|}ns`S7hXfw(h{}^2G7FA!K3&o^2EkM@ zhKW2Krq*9PUCV_#T51sn-Rr+Yc5=QLp@k?QHVsd5hR8%=lW@{m z(|?8i4@&rIiN5~CRH5Vw-6qWR{kBwiuS=eug`#UR2hOBJ9BV^^W3)Q1cI5><-TD9Be97#>4nk3vgy(l^+8%43)0yaU~6M-77wMkTmwbIeU zul{vi^E7=H4M#|~<~Fq~8F@LD4BKqsUUS2^?RQ9O4R15ri_wMhvGgUrO|}SqMRxPF zj_-UoDC|>YX1vuL$H8&pK-_H-I1c+w7Ifh-Zi>eBbQ|BpHip2xrgoCyETv8#dV_CG z%XW(_#cqV5*_=RGhVJyVxQWmU8>3q5^FpIf) z+hsnhqiJ;wXnU4EIzKrsr#P^zLnMadTGTm&paM5c3Xi8}SS-p=sD&SHIG6hBsX3zi z5N|toE@5;NeN2J0w%)M7fqnYPhE0-=1?CY)`drPpobpQek2-D36h&G5JLWCHQc1qGiVyt5vs0 zM`snFO@Uv}nlx5&ON2|s?rtCCJm%Z$S))d;0~5~n%%{+kTr!hgN{{Px6= z{Ggf^hjRF+V`LxsK{BF1fk>_qY(nEg7;o9nVkqH+`N+|drwV?RAisrY7o8PVQ`wQ7 zC{HQ}PAU`r{Orn^-CS^qx<(AjgF@FLr)?Q-wHPT!Y&9peZ&PY`9mmSYcKsv(yzi(d z+txpXi<~+AX8EkOyvnc|6J{WuHmgS>q%N}%1O|(QTDQBR@|$Lyl=PM$;)3r$&}m*X z&pLDKyRX*>no$MSvE4qa&9y{f9vz?BJvOo0l-l7k~FV5&!yioh`m;rF zmt<9edYzH1&JwW6Lqg8m-Yc*`Uu}85zE6^k-a7i@zuvrWOire4&4WVRX5HJY6Go)m zdPhcD35_gx2c;6eYw++Yr6l@9tGq{MPf6V%9GVC+6}8+kF719#jv78NanI!A7Dov$l-r|&-ogT75Se~D8uVK8;~*f zWa~A^>jBgPsr%-owzR%h8(Cwx`cBHP`cMev3RB7F?p6zk&qZ3o-yYFU%{=jAIVDW!r`bd62?Jx)D3%0g% zFFgD~xD>?9OsU37n3o0%`&fPW{6w~FjchnQ_gUVagZdNLJQ`h7IOk$!@%q9fP%0)W zW(cO1Hm`#0Nl}pTe0aKP`DzJCMKPJK&o2=iI}O$Y@uqt)FfcHT6KDp*z-;sQpKn@| zNGREs$l9tg&?!aTMN4UqLeE9ho3XlxN0?7?t`-H5sg$<%+pqq0D*!%8d5I;=NxE7y zwdML)?}Fbz7(oH&PmcuzK~mVj^kZ>D```2ht9Q*=@jV>?o_jMOH$S{7Yb6jSw*r@6 zPY4rulYWsrF63w=pqc7tVFZy1yLrA|eI1MjNWYy%1D0aV|5vS~KV9TN7U>HF#6B>6 zJ71nI3z|p|jo5jse+ii3W@pM!p=|y)=>@+fqz73`ugYp;Os}b%skbsymgd3{?-F0?U=?ijLpxB?eezQ z2hy0*SQy4Tg9dMR&qFqxF0}E@zP`$BOtrpJvH_-d=5>|ixr$MDtz3xAYMXx&o3G>ck_Dgn=v*H>h(99y-^ zso15*PB38SC6cqvtVHF&!d8Y!{uYzA&`6ATfEfpIW|1{=>=%UlgL3|z>5|6&uIsqMtsI7P%P&dFe1Ch?}vZc6o=Nf z$dc*?Vgm{hBySGN0{}xP{QC5Fo3kUflgT$Hf-3@j9kXVkgsIz1n0ds2s>3cEO%cE^ zMAg!ml8bjv?7t?|E4)OVu3%J_hQdQbv`&uHc6o5Cd+?gUc+6DLs*bv_r6e5S;+<>1 z*G(wAsY?nJS%k-b$o%cJZ#Ma0D`kUJ>Gqp9WHvUuwV3IB@~Hb zf@Zo(D@N!cBZ;qTOW^WY%e(78siAxWc7qWYmi8BA;Q4& zCf3eOCU%+=yt`fMm7vZx3KuxlDx+p1?N&c2KsiYxlTwMM*4NG3BQEJ}lco})O8mM| zxFt@!+mzC^gN^vIAfm*!K{=bZvMI$B+NMaQfui2F`=0|R67;=6A~c?op=buY{Za8> zqS}O8$tNWfv>U#EIg;+hiE4u&di&}e3LXosTS-iTr#u(36qkOBYC9TV8TF1JF0s#7}Ssi!EU$EjE-^(=Gb%L5*Q4`t<0#bW+KVKBCImKh z&pvrRLAlcV(#ja5MHcbItC6X+B;mZkDspA|`ui03sEDE|=-Rql=(86CBB3qO!$nK} z%YbRQ`}NF=cB_jYoAe zffpyGdjtJ{V8%nd_YKmZ;|PVo#Nm0G5)EzTa`rgj<~&LjwH5$t6S~RaIP#mPd*KZn zNIT#gzHU+OLHs%1`11J}IjYUbpu+9yuXxT$t`Rn-ppgLy{D|7+Re1AZWM8qQtQtKd z>_lv*cL~%u&KXqLAG|neIHfy3psy8793&7nki~zeuy{xqJu23ap4NWyMkfC!hPY>y z!CR`f`rBY9ad_LC^m4X0VCVEe1PXha@J2Uq!6V$a84MA%#$P50yjNZSOFfAkm>)HmWQvFtWF{oj~1~D_=L|J9+s`vQ}al zS#OgTuj_5YVDSson3+ERJLUfA8^?}of9Cogt@AS|``yd#3yS(8Wt1zo2g~M4ylv8R z6M}jz+J8U?UI?=qP5aDsk+AQFZV=2c??si_`!OMLLk6BX1^Bx+AOX(|1e)q};#bF+;cSDkwi`Cd_`jJQ%Yp|&!RsAv+ zXsu4;C$V^VzK7J9X{Taj=a0P)+GxIiWgF44%m3Va@4|ZM4)V^2iD0v(u-?6C--q3i zt44RYiaxdMU#NrM*4)nK3;J6b^S4~UFirr9{t9;BjJ8yh*l&fZxK3pMR)hY5Lb5*` zF8EW-pGNyzFZ#2m{rS83ZK(Kju&MgOqUfXPTyv6P`>7=9IMTcvE0a7hc9MXkBmB?pqmq70-nu?Pwv)$Nhr3Uy( zNIHMCUW7S3^*{ZULH^s?B@^pW@YxQur93x)l4HT@&OkPN%|hho1}oHuTX#SNYW3^0{u1UJCbPo48gobEy{$ zjhHfVv5zdA^%--*QA0D@Uxy|2j5eY?zaB&RmfjNfzYFSv)BA6TbYX?tOZAB&>w6KU z$RzyYsP*<_++`-8v72C{US$a+p)j*Ga_Yw1pP!OHzrX(jXA@UU^6v%2x`rMP?q2z5 zHcF1tvt%d^ z-d{4mjYYm=CvdAp z0~S~k%I22~K*p!{+feiK@A4j~BW{a_3*Js>5%JKgjMW_yipb>QQ3rg(Z_1&L&E0BW zJf6)v5pVw~eoVSpEZ8*4n(L_Prq0~{8s+EN#_ik#g_2(#ve=K`)d?oO2w2s={9B>? z7hF(IBA@%r+&f0C5Od6B)DOu!skzO@34CL($ z@QUX(F>lw|)3D04mY?Qq^W2j2Cbx*euJHI>c!2j6Ih85!&>MZg8cisIb7Z3u7&>lH zaG-gK@jSy~%T~=rD}p6AJgnGC;%=)Q<@|!1#x34{@|gEt%#L2tGzJQGt9$7)u({Bz zrj;)Fr0>m#^I<P{MvKQ{WjzNbFTE~Td z>z`mTVcf!{X+;19LP5=LL7}=FASSWakr{Rtl=XG{v!%G9ODkd&D;%~=yDlowlGa86 z*>XsA_8UjIw;pxgY^}s_0ME?O&3!710lCzMM#u9b2C&p6QWWz#xOGR*^b4M@7F*X+DLSOH`tZlP< zr5bcgkQHI;S~~EV>qu%Dj-ki4+|202DEXn+A$2=)KNaxpj=A>6Sc??Ae7nFlpGoDG z)PTIbIiT{D1Ppz1!)~NNk_qq{Wc!}_75((k!G(3+)b(1i{ree)q36h-9=n|T6%Os7 zI{zP}Mcrb%n9g}2A)GA}u+drRY>;thoC*#=Ak?%+L_|c@2k?a}$thpOG-On?W$K5O zaQ4NF?mlLa5@2SUR>FH{w?2L5@?G=%;@ycil+Rp^ak=eJ)3h2gk+_6Cz^KyskNh!U zFpBzuMY4q#u#o_QR3Cnpp?_Lvqv(EF8ne;2S?D~EwV89HYhToH1!iupRSklyIuGBx z$=b_f)?7y}xhY1Ec4GlqQMG%BZ}UJEuk#;E5y~wsK2B5Jki=EcJ&G4ym^TK;QX8iT8l-}icoNUo+u!- zTispG-!=selGuw|OT?$$o6ki+MC2RpS^L0xfHl>?!aiJeY7j#*2?Nregz>V^-uyp) zlWquX)=)+LkviwCt+1TG&KAULES>jd?t|bswG~SR)p_bqLx$BvfeSV|U;BBAEwh(b zW#nAePPGN;oDHzoz3r;j%hV!SAqLAGps+wT@j}#j61UIdH&ynkG>3lm0O3>=*qiNZ zpp0sv_j#**A1TBx)|bxMPbv_{p$Z~y=W-ZO|K2>if7l}U=r_t3U_rafc4RMfs_Xu? zUum`Hr>@Ujy8V#((E)9mq@tIWb20-Wzp@>D{fN}zHxF28s zVH^H8Hw$V^mm>=%SoI}Ww0}Bhv3J*XyV`5f@Yh|$)3gv@S<(aiEK=T)v#&Rs`jNoq zuwc*1wNXf|(Y@-K4-Wv*9sQB+-YwWKbFSmrc(p&t&kYMyPbR6}=28ZrA$Y4mW(UJo$Gg--j$;Zqkh>&1BT=RnFf@oOy%MtY&$l+U%VlnuEj! z4QttuUjEihRa;t9K8S-(yr1wgghMLP=<@ZeUmE#eIU*go(d9d)@58KeaxJW~_F3QC zd|JoDgjQOl_$-OfB*2?dOR-~)V=uYi^AkLk=h1D!M{f9Fl)DzhHe!KHy^5#YNGuOh zF&A6ZNtV~R9T7b?rENQ^4iYVlP2%oj2De93{a(V!Amrvke0(}~FLXR0cfOh1wRKXtcGEoRx5`uHPksKH2}qNrKN5z zmq#-9@}l1`OwZ}=IxO^?P?xlfS33&J$~aKG!uY3(t(zVESqW}#))&y8rEt~Ih{9ql zaZ+y2Jyz!B;g?MRZ(fmL%QV!0*RuuLCN+$8Q|I!JYDfyYEV?U_(bi6u_Cw6U~m7*+e>FHavSu|ii{Cx7u0 zPB$+xF8bn%a*4AWU`v5o8Z*6_R5bL9gwuji*VB#g@6w()eK_WMmHpZ)Uh z|KRfFV1$SDL%sFp$)xWxX)^`MV-C4a9hYD}#10_^LUd;bg=XQ%5-b`m3|9)51(wo9 zuX^a2Dr43BU}l%L#0g31S%z&4yY@m3Y`st+1460K49;_XQj=l6$}NY#?wyzmS*PHD z)_j_zCApMPaL|I8K+Rq6NvIuAh2Ip9KKJ||DR{^VBo0|)UszjU`S%3b6J`0Mhi3$X zt@B{_0R##mwP-!D8Y9Q~jly&-iD^~thl*Y6^6sjaMf5tog>+UXFEkFB`5D~7@~Gut z>t7~N@$*||W-xw!KXloGQ-+g`j-&7Hhv$~1rz;1%4bhd4zPBU#eic8 zMHB)6R}-!5Dn|OALJy}q`8#6VzNjzjryGz>_0<8=IoP6+sj-z`hD6FgYRDho{|^R4 zu5Wj+NXW5^!KB>OUZ{mN$|*{3t8AIWQ)o(wia3hp(DJf;!rCVH`7|7)e)e-sTDWlP zs+fH$YpQ0{6Y9<3snx3_C0N6hgef4NqH;w4T-JBLi%8_Mh}TWTkfc1O zeNw{0sGqbQ74Er?Ov<_6+HG4={Y8H*B0PAwX+CK+8ml$aU&pVkedcycuC>&Xsh4)^ ztUrlG3;Lnw)h~_wQuW~&Nh#9w^?+SZi4=hQ-PU5vgvI;Hly&KARqy`T694(TJBc?Z zV*A=R%VNOZ8Ph{Tk)wn<-HXK^qBGCF297!8w;`X}F@mnjY_H3avRpCDa($&um3p5c z#B6TT@GVL22X*7uQMqZ8J|z$05;LPE=-uM>aViBt8M8ou6wAC~mpZ8d*R&Bf@ldyN zP7`IK+eDdzxpbQF;c7omno1&f)nezA1~h|z7@gL-BD6s`Z;KmHG+|UQ_`ULSB4KqJ zR=gaB30Oyc#Eg$Fgt~QV#=e>KXj0&dvLX4(fY=HBO|x5*KBQtRu@V?c1v)Inrb+b!I{_hp{VdoAnjtsrmpXd#gUg5xdWp$yePcyRn8cvi#V^N|p1e6);+qTc!1{j0V5sUM=K1}gEDc9*>)s9uNGSVW z%C!p$Eh1)Bm!EOG7-HQJ>EdP_*1^^%J%4?jX8<4GBweD5efuHAw^E|7=Xr-4jtH2{b0JP3C zG^0klTO*Eck2k^m1L;R$EI2m@IPqhYxN)cd-4{2uM}j3ZzS&BA%@5{=N@e-d12f%)SGXt+|xQk@O4X6 zZ6g;zky!4QN3w_M#!A-|PUJVrf~qwWJB=_DOGa;tGQG`$*KuiN7O)+opUYE3cUq}h zAmqr+Hy6#bNt5$WUF+cBkg5;GUWu7DgN+TqJ(zTmij*GC=q3qLhm{Pna9USTAIB$iTdm(*715W*c{rx`ed$JY&8U-k z^FTe-S~#hFP^(y93QH*b;)CbphsVO1tI3yr!3o+1XC+}!CU6`N2QCl58)NT=P55>0 zQO{qIT*>!`@1VD3Nku!3k#S$Ndsp+6Sev=c!3f)DUV)NV3et)=lMs z=>`+jz_^N`m5fRNNoB~j@b2UF#8;z!#i&LwN}dBLr7mq#NaLfwFsk%e>FFVql&1Ez zcWTy}=Vna9row>{&(cdPT8FcHjxqBo(GAsSY-A>DWTSOTN?v^v0@EVTBEP8PMVc=} zj%=q3I1P#?>lsIk>gwuw606v^>%+rzPnxg=Z{P+?3~wtAcXXP5Z_L!X!Q_`78GWrB zqIsf8mu2B=>zN6uf5`N$n|dCG0~a*FbzoaNCH z0Tu}OI?m(!s{1GBqV`Xhw_1BQD^I){o?Et14GfqLzGYauyx%9ifP+hUC!VY1^knym z+$YP*-O5V9C;h%zanp|F3>y#7(~A2IvdZsu=LH993Zr5$^3v(7@)Z1B)Q`#zLzhxc zx5%Y>g00>q6G0-3jq**;B=Q4E>CsP?fEp%0GT*BR zBKCXJDN-EtM*e^VjRY>%_Cw-0749yipN5hP2rjoK2}F1bmd_OxpawgnoQgzZZ`zjO zKDA8B1MrLGNocQrEi3vy&;z@(yf5p~DyJ~)(S>l$Hy~uM7sFynQ>GtHhKi=mNxK*M zeEb$NPd=~iYcPVCJ_GZ8+aRQP^)2HuPYKFLS9dPr3B31KZt^7F|56<{6;YgX(P@9A zs~~}Qf8h&S^8KOLGs0o%!juIE?*a4nITZ4SR}mpxpwbU&B_4a5U05_B9r@%$mx8EX z^St8Hg>Q0ehZYkoPf*|=KrjJER6&qUbT48G%wa=}auduxGpzN5<0%&4MPKCGd^Rs^ zbZa<0*j&53X{bB3oi)1U%kg3@vI#kTS9;OA&Tvx$g@9IssfVG|n`NNRSSC^-AJ;{ zkIQnsgJdj6t`R&lOHs4pa9@1|xDRK$BR4cxv0nFvY+D5?ZOkf)KG~j%$FCU#Q5Ab!F|J}e5u?f3eP6vW-CUE(nyw4idy0cJcwys zv^S^|triD^j`@PW93G$h-o^UL-6XyaC2RiS6zA*rqQ?2+40vn0yqvP%OKb0_cM=fx zxmz|;V8z;jGR2dXqM)NWjQ7yaOHFTv`MehbY`S{8P+nc@Fu2r8QeZv2H2BW@#9hn# z{LyB!+xqV9UeM%f5KtV9Ov2zm{7j5QZ>23~yKc+EeKJWjXFyxTU3~{%X_7|$Iz*e} z;P{wo_|zON!}MAwbmFkBG>aF|mBa6Ns>B;Tqi0n{a2s*X%6-gl+cczEzF^J%ihdGn z{!^6`C{ZecT@07%`?N!C9*%FEK6zCp-BxBpCVV`kjGPu(rctcQAp^b>WW8LhxJlf? znG03l%TI;viut_NzF<%X4@=9IFUj>zRJD}GinaUBu!HX0^g|IsTRSP9Uvx|1L|?nZ zkKZEY_N$ekD^b>tCAX``JlCUrO(~IO2@_|cWmV}O{7EV;-s%SIR4}3F?Sls1{P&bc zUeb=b(@;IVEfBJs?8Bt_0l38{;=_yFRrb#f%1S(^r_+wg_<$@Irypmf+??_P*1(oV zmHpbMmpNdrpE6lfB~6_k*qafvM?dBIT7cTW<1{bsjl7%=F-3XxlvRe(zCS&RGHzv~yQL&Op%R#Lxy~4g) z-4-8!Ml!x}mUIr8j_WLRWhz{fq7U$4wX%|YSQb9YqdfQD1k|d#R`ym&qb+xDK%^e! zOKaHrdcnPy>ppW~(5Wyt?F^&ls$6FZx^o?s=kN+j?B6BR`{0m7%=HIRtYujDba zPv~4RaTQxmFeChksmPAn|6+hjnA|=Va1_E4Bwwl{WFZVj`&VxFSyoC6sS^}z3NzvM z9^JlPrWLQN#j0o34qHpLlTKA468h;kllp5A5lucGXub5BIweL4WVdKmiZ5`mU^vpZ zVdMCB6-l6GZw^3mJGL}kEG|*4XgH(OZ9t&LcBXZ}Jq}WX|M0c^3Rn51WciVtPBk5I6Rp+QKgRNWcocRopaAoJ| zy{+5|iZq5EsHH=`;T+YisQ@t3AO6c4YG@BqlMF?R??HBIC@VGAA*UdK*TnUz<)Xol zq2cpEgjyqy{KDeL<+8F83XO%WJG}w?-HBi{o{3W(K1_E#!y}|c>V;8_%P-3%^#Iff z3GdrXEl$E~I`~T5uvCJS5{IV@vL%6z8?>*|QeHP%6*?t12yxAOqY#*uj@1%BE0_)V z89~B``+3DIT+QI1hGQ@r^1p6&|J{P%U9yoUs$%Q18O%;b2DP4`3P)F}j-^`HEebDxd*nuMrc;A&1NTGuM&N$oqDvmy zZ{1><(gKj$$fagvTClwydor|6wfRg+7Y(vSu24lDX3`x5J7DI?dnQ!r-Wb#TbRW2T zw(&H~E53KFE^hIhc!__Em8G=CvrTz>yXz`#X4h{;PJ*R_qnG8qlL!H3M*{!O^#AzA zAyafVlh?F~8ip_r`Gb=hQE3)ggOyg-DMO0Hu9N#}mLZJ7O=*|~8$au_fMowa%)NI& zQ`z=EisPs=)~C^BvVcZS6E{H{3HFeV|km5^VB^DLzaqK`V-j%q$MRSxx7Sg_|_Z*!beqW zL1%k^H`XDq<1ZpWW5_rA^Kg0EctWG>5q`KxktEJIKln6E3Ki5In1t|vKl*YY-*82f zeb7`7-!u6IO_SA#a?1VHA^x4bXTMqr*R>;KrfNFzJbCm3f3^QL->=I97a9u2-Q{O3663!N+q|-Q z@Ffxdt$Xi2@O8bflOX2JCx0k*PSE2=y7NX>k=V8?`&hqO6|)8kWkMxavd+I5jyd>{ zK{W{g`dLK#rjVACT97Giy{UKyk<5{=cb_|3oHV0pZi$oGP|kg=9kLK-R+P8|!#9a5 z+)X1dq-gSN==8F(Wc|HVMkzhU#FANMOv@=Zhi3}T2~4W0?6+0R_RiTB2&%pnYgQ|K z_QOQFT2ZH$fP+9<*6a1nG=YyCK26P(8LXe(aC`+BP_*MxeEvZFPNVE?%i?rd0G45x zQEW#2Wf0{U)>O_;S{|Sr@rizlbfKk6WJem^!z2%BAmbGZAqyrTO1ji#T~Y+WE8f%^ z$JA4qH?j`SQFF-iyWMl=rCrJ32g|~h{I_vfggP7^%&3VSa~=!yq-y5){ch5ahrGQZ zPiT&WXCJ&|7hB{;S6(|K`vKj1a`)`SyeUf?f2UZnonPW)nC0>H=%qxfgrlQs3ENXRKAjqaS37Fwt$tSFv8*W~rcgNYr9f_@g?g!F}0g$&$@ zJWmXMo#gCdr>G@*oRQ)OcCu#d6pz%jFm*jra>voA9IT%gHutG3u!dR~pOX~L%HO9P zxzw$8vMVxHT72T|YLu-S2S>H{cpp!52-iy05*daE9=6)QdVezqlP`|8*=uakp0TjKc*O0U{m5>`*B_Gd z2vh!^V)L2&wZksr4wdbco?-N`{A@h&SYDHu(WS`D3wW+LZR*+hZ zK38p%FqC}rT4yj@ND$?y=3BB;vB#9!N`qfpkUFMeMGjU$iw*vPCQH_)_5DhT&ZGbr zU9tSD2_wbC1j)3*q@{VbFHp55DoZ+W8Y--UpSYt3>ze#tRq~YD+1VySe8=Yp}3IG&jyK_4`D>6!Ig4eYq{DbSU4<>SVILzfZlK9XgK-IPq z@q5+SZEe>=Ik$oZZl#CqW$Bk2iV?Z&qAVVeKE=y2nQ5YHH>QgLVXJ2uuMav(LJBvjiw z9%j>MzE-zfzoLV8UTy*l1@?v?sR#P0{N=Q1*dvD zF0~X|25<#=cGg|0H4T!^>Pt{jeZFD0158&UK&7*2J_>x5JR?QCy-kE~Us*@b^W1(j z^13Xc2V`y({5s#cY)zUPoLZXE$f)*bLgm4;Po8OsKjw|-mx{2G<{=lsRC#vJ9p`B{ zb73&e?&d+N*-aC{-8B%eg34~o zP5x`EPCq?Zet;^Os_ZlgtYk=X=SN9H_(WqtGZrEOB3YwQc0HMr^@WnHL)X2@TAf~M zb3mPCJO7$yz0npcr469RPx>WI8z*+w(N>>0{KVWR!}cgpX}eKRt@5MxK! zq`)fOV0X*j4z!t^h^Mzvut=ttl<*Qd(;V~l1M_^VjmaN6f(rWi_=z=%>WOcNxBGOa z4fNPmFW9i!zDn5mw@tntOSb}-5R&jmuQh0d{J@%nss5Io^MDt(RRLxw{DF*u9K#g5 zPfBSSby+)fVxiH$KH`*Z=}K1=gKr)-5VRK zHZ(QPJ=Zlb`1(QpiL+NHk?8(nG~3C{g%Xwk0>7{2R(v{_AEdaoNC}pDZ`*Uv-sd>olU(!N$#7jGWFx4t!Ow-uTZ`H^EFUad$H_ zZ>;6|1<$T8^@b85bR1?DYX*Z=+MO)M_8X&Po#NRv$%B``5~Ucoj~rF(xOigo&ZU4~ zz9fhjj&ly$)Q)Uv+t^`v`oFcrV9u6cp5uXSA`p?dO!G{-@CQs)dc5KO*`nQaP~8P$ zSNHR8KktBk3ewz}y!v8K)@A>AkI%)?GY=~}#k5aYh2JPU0spd}|IWQGZ}V8pO6 zwiP>tt%e3ASIhE+=u@@<0XoHz>-aGgnJy8p;*$fl9MB9QO;kjAiuOof@$uBJX~G@h zv&}>j#NY>9X3W_>AQ`vGBohjlCFezI|~WM;d7+;L(i7ZBwf*!i7P}{Ny;i?#eJ?D81O0}H)){+pCUF`$cz-0{lO&vcjo3_tsKWc z%ukOrmYnm@Yg0awQ%XdzCVZOh5X+YFdo|d2vWWXj=2Db>R2)O>K-k}ARy_}Di$!LZ zPv<1lo$_^jt3qPvMD85zz_!v{i)|aec(p~ptBySmuepd2T;_=LinzDChTuZ+8r-M0OkJ<5!f3Tea_2$dr9)JwvAVTSroL5q%Fx%VN zP~*t;5_Sde(8x*kImj$AXglF56G_!?BFBN;)20~w(W6mW;KPT1bPa0Cn+Vt&I8#X^ z4*0~CMFEX6XzV1_kdWa`5&)nP_4F5T%+utD-)?XYA*0gt%6?KJxXW{YaDvJ{CAIYg z#pCCAq&$$u>mWFtsL4VKxQM+?IKFcn4ReDzd31N2psu#@B?gcP#<4II3RM6C9sY}< zdX6KSlyDCtZEn`So8J1PlHYcp|C*b-zOcx-AKLaIGHW*#l_?mJ1Qlu9W>I6XkCZ6;Ke118+DJX>Zb`3w<#IOY-gW=bXps>n#Nw9$`K1eWcJZ9hB@xrZ z74=(Z1`nQ2z7Nl>T75CfQ&H<6!RUpw`}eerZw`Wv6r%K+av*=pPGMkZ3rS@LG})ZH`>1ek5_?i zwIL}=jt1uj^q(&Cn@odXBxOgGM-Ap=OVog>sqFV`cR|5csQRt(mXbc-wU|+?ZNjo* z`esqsjrY34aI#Pf-Z!4JT6GCzM1{Cs{41kS7~8}bE~q>qho9`Fpe|{tfe@5$l`t6_JH$n5 znKA)TQP#rJ6DpuP{bcO~+I98&mqUP&KFx4XpJp*JceQeLoev#On>r-(u#}`->6hJN z*MJ#{?&{^yCUjYrfJyRX4+4^4rlp8n?Z4s&T`K^(Z$kpu=caWlwnT}4Wkei*DhK?E z0k`knQ5K(np9Q1 z(SWlN%^bV_l^wf=6Zn34fvz{wsKVNnXl_4e|6%T4yx@l(RR~0`1wXC z&)s0HtOxZ!jt^y`3|yw^y6P~DsIToTjb^UN4#inlmv`7lGsS=Ta$HA(Ca(ZX1e}}S zAkt6uGk_ykWO7L30 zW9wfHB18SQ#nA)G-6goX#bieB+x$R#CM-ua+;703jrPjDiVsfmK7$)LE$&ktF0SOl z@;rY^onGqlB!My{&ELo{GurXmol(`^=>?ZPl{nj2IH)5JYfzYnzop;HjfzT*rUjqx zgGr}Qm~?;p4G6^kz07}QjK4KfIAW_DW<+7bN9`)cw<_!UdCq_61lhl(8FjR8sR96K zrk-lRknL=IO~;t4RYK|g&^|PH)GO(&uGnEu<>c!amvdZ74_aOBXe-IZ zB7F)jSIXf3lbNsj8x8;Q?koI)zQqa?-~aHUM{zUv_bDAmqLm7q)GmV{i?{&bEIN`l zN{6U3WzYHO%6KMAlrJJg(xwTsQ}#^I+G_&L;>bPP$2#ho?U9w*d5Zu};xgQM!mbN_byqUS7>iDql3L33UwFNKOLKl*=*UvI z+GYL+lfi(6D5K-J(m^?;6>}(cv!~arRhnHqcS1ov1`pC%U+7yue|+dIJl9(ctA!;$ z;I%P&vSam5>&0e36;}HMOa0;4!%-{MZS|`UQ#?sK%T=Ct_T^Hx*m=3Z&pE(a;^isP zEY-fCRn{4*lx>B8jR)XNQ9`Q?7-Kf0DI}zEMS;v&Xh&qIR=1=K+?;(LLYvh(F>>IC zkl~>Em6R&9u21r{_*QEKghq{fK1R)5d#-of985x&=)@pM9YcXeNsx#0>Cn8MgZ=E~ z%N%Fa!u+%%kCE+vdPnY>(V^vK+*qAUoYzu`a}8BBwOXY=p&Sp%`&D7#XK5qD8DTwP z&5hIU0Y(G|={cQX@7t-00R|R3U`jYeUk{JWIsi`N6 zfgpFTuuWt51dJoN_sdC@5&E_&z9AXCgWdSW%~P3Y&h^ob`Oxq@dQZNLwHvk@>^w8I zIKE>?oLQ)yD^L8bPwJTt*p?U*|4)`5aeUOhGciffgYVRF}V6}THRQ12Y^ z7*{d7nm`kR*jJvC&40Tuvm&G)qHYHfda{{W=T+w=ld+eXp>04M*$-qWzj>Hqu)7&v z)50Mo#AV&qxS27p5w!ViHc8GV7Ee6>Y@pQ{j|F3Vv*O~iF1#F#=$E6zGZ<3_U%nnq zZVuflRi92DmO`_S5vW+#vDJOU+l5uXiM(K72iO0PD(^|o<&=gC+*a;zcqb>9L+m+^2eCQJ(9gW}O@g z2mhQuY^agDJkPK%dUbMG2n8m=)rf;qLJndHM2uNpCqhdr=$;co#IoA6$~Q21<|n`+7nLW!l4fqYQhi;9(|8jkfk{s%4aR~& z3@M^rFC2~F<#=r!*x(?PvVX0~!z%973ybO_l=mP#e*#?9JJRj`R3;}wqxrCAk^BLcM1K9nieC+Po#TgLvwLF8zCB<_mKEm+ zy5G;JHl1SGWstYOt3B$>0g#U}a+shSDSb8O*qzCf*Dk{~gu-D62_04z#r{k-!J~JLvm7NX5`oa&Z2!b=K^GsYvaX8HVIkQe);LCrk3$7 zgb;IQ<1P8{U=rg0UMcS{a=fQ78^%!bM&8)`obiCimcp5fQ6}apD!#@1=;$hlM|D2q zcDvgcXXrzRjl&m;?`bHTS}*cQcL2otNtMhdvAmpw0A)ARWsF5dQq+vEDuBzAU5lBg z?@-)7XL8EDK?j6=c{*vt$5XK3b?aJ$M81n``MNJev@jI!5mnqUtr=`du%osT8G%b; zua0GEeK9B$VqDk!Lpr-GnXXaMu!+&r>t2sjH(N!@Xw(k|qcgc^oJNTV$+U1bJxt|A z>7$e3|Ku;Jv2$s4jl?wAk=n-BYVrmzEhS1pP;)!6v=Y2iq2K%RRp0t6yy*(@>PhC| zLSdU=Ao0=fB|WHv%13xTt!5QBHJlS$AIAi&+}cH!zgWBWVp-3=zra-_V{@s&agkup zuKX?f{F4ZLas1C`b6xS!jk4v4T5b8AA7chf1^F)F15PAOM-svPHddukiV)q9y;MO+n|V4-C}1X)h_ z3f2@t6;Lb3mMG@;E=%}ey(X7yDG|??zZ5C!mWTN6BL{B37m#UQ^E7R~+q@R_K{Tvs zm=b(ZKQOn*-MlouGbGSaApj~LzRuV6St@I-8H;Itw+jdPS6E+le1(0LhtE20wQn?% zJ^XeEaQ@&P&8Ip5#ZE8|oDE$6+wXAxvxHXqJMZvp_aAh#>H{3M#&jMI3axM-ecn4> zcFxbV%PUJ=(?!DTa%<^JLYftCwTjD-vRTh(5seEqgR#TD!)|EqUGAS}$#Qq^WOV@S zjQo;el=9f(-p+x>u9NLBk0#&}#Aq*UYsmEMFo(w6M)!`W;0EH%<1Ot>9u*+G>eO?@>VnAWa zQ-stBO&3a9);M?sHr4nzb*;RlCDva*=N}@22H=7-Vxl2G2uN2>4Qoc; zOk{p%Vo0%ZpPk0)S#Dbo0h}V+5o^V^)j5ftRm&q_?LP=@{K{XQRLW=JiOm4RngLZV zDZ{eXr*g_jNECrS4oEVymX_w`&7!duw_l}3jB%c?mXg|7{@&ydJu3eV5u=j*Nlgfb zO=ajKzTX^)T7Z{5XuJ-&ZeXKvu5>4zq+R}`L`q?=1Ir9x0quHG%iYuUK?&>E;X`4u zw1kx|&~?{BlDYYaR65f3+T{`)@ssfE-kzt3)N&zN5UGvWLY6LHJX~Ub zVHPd3ks<{Pd1CI3OXNQ8O6hMCR;5WH*;Yj$7;IGif;{@k$P{KgtcBe>m76kBpr;Vz zV_OpaYnXg_ZL;+X^b964;h>r8<(5ywwh*5* zjZuWSY4Wt&l&Y&)8??CbBD1DVywkDD%^9}HNO2xAko>GJu->LPev7$ehx_ICm1BFR zm7}V?ezt(<-7hS(goQvWN~a&+6A1-6E~0S*HBU5u-{UtG*SykFGv>siC22MG{O&UN zl_En~kG$km$!#eYXNO|S47rASS!Kg#xuc4W;CIXZ(^xN^cKHVzyR|JR7rL|Acvn+^ zlAkpOUW83;WThsMif<7-^+iZ8k#z#{T|L%oM)eZHhe`= zy~So95BuygalGSMQMFyVKA3_EnmR8@(>33j;9(}6ZWgh`#s~BRg2qTE_Bh_p2u(Oq zPvPrq?l0T^KsC3S!9A5C(PM0>j!(LPAykVzQvffP+{PHm+x%?%a{oQ>;iYzJ@&qS^xGUARC(ZhbY1){`9Byo(SAp_ zF{zyimL-`sjpI!vl(FOMZ~G}$ZVA~5`4*sEenJSngG(eFDz`_^Z$bb3N!#xl^zEDh;HU zYO{b5ORf!;h4@FCT(OVn_xhTeV`^Q!0UB$`L;b<$AUkt6R4~mszA!-A1>~b-YS+1` z0EwadF>IGCQ1DDBS-tD(x&!3uL{GbHGE#Y*CQq~}zgc9;aQEKXiNqzpjtTTAX;$YG zRz)*1iSvvq%!3a*wb1SdA35X{V2KH(m&x?i4|dh*v^5#Zs56+UD|(zZ=4U}Nhv)9c zSz%V`M=FGJ0~NU`SMN{QgW-$Fh=$oruAGqP$GQIMJ2Tt;tlW|1RSW2#fMn+j$|+87 zrY?ZK=B#CShG`_`-R!qeY8`5tCesz{t3?v4caFRK4`6`Epum=LbFH500HeaIFRnJ3 zYHY}0i6yZxaAZtU2hvQ{cB|kDC$5SVIF`?7Ncz0|pTH#8yE{vz!{WtvN0d$NWVq=a zo?=+iAhQXA&4~>pUVtoObgEM$27Hw`dBUiiYUdZjBjbR|#C^{k@`HMikyjSsJUcm5 z!50+8qsh4pvQ7emVc0GCK%cCiJ{zFazdoJcivB^hzpS*O9mtl;-t(C$AWbBx3*oE4Ta8Nz+wmMRxb{gcUFt`9^E5Mmx_#N5TcF+r(DSQjO@EIy zE;H8F#Tt8cCgg6CJ>`WvTm1!IG35+oaB{s4yCxWH6O_IVnujZv(K6(^L0^{^C$!Gr zn;zAXjt2x<;}f07uqj)ggyq+s_yN0{^<||OTg$2io?WC|x`^CdaG#sXloBi{CKz|B zC@l>|Z4B{ej&+;M|H1UkTdBb9*}&{y*~(b6Q0tXpk54F;`_ZUFI7x2(rmn+QJQ}^4 zxN0G3lBvq7%9u0QM(^`_DPFZ>dpG8uH1p?o3rOU*zpK1%wwsY)4O`H-u;_bM6!h4V zTGKMKZg-H_Nh__F!R=955+eKq z>iPSeExC_4-WPnScMNT1=l`**N(nZO+)P(6Xu0QLVc0rJWWhH&!dueqV>e8+9w);q<|gD>qxfuEcw*6)VQR)0( zZcqXDRj*Xp+Q?qIXV+7`gnVc4s_OY^5<_J+79{yQw<6mIaQlM`+W}tAXFAnfUJt~0 z%lONd_Fb-37xR?D8`w5DhrT!5+|bnwp!+kIWnDk*Bab&X1{AES5pw@y0mMY5@ZI}YD}^`-Ze?ehL^<`l`8FfX3k81Jrgfm=EO z@3Eo>cR9BnF=&k$B44;Nx`Zb0(a&ao?o9$4$_^>Sz_j$@?qsN%+AGk*D2NcdU%eN8 zZZkI=kkS<X3E*qq zo>j}#)FiyC+<5DP$#+i@iMOXbEvM(VRS8Rs+}Qj>e}X@K*7I?HiS_d&zjTENMzbRZ zC#%>IgB+N~%gxIBNpfPbc|^ohXtOgu4}x)j8574=Nu%f)0v%pMW@3_~ZaG=;Ph%y@ zoGGczUR>63^|Ur)*~*j3fsM(1&_?_6bwX;#ExTJWi`(|2kp0Zv<+{Y-dG0&^3f=u# zI?(^_@)R!h78vk?#nTDvOsH!tO?E9ow<=aO*`jf%gI%3sgT44fKugAJM*kxBpBKoI zhLVALufgfG>pzc$$=)-`=(ZwY-o5DZNoAbBAL*Q@i9ig^*Qc>M_xjfE8ZYmSf>wG9MuOwp!~thH-0~g z&n^9(o39Q{mWphs*B`YTs!I;Zer$tcWVDd;fT6Rs1B-6rZLCFu;gDEF>@VJhx+y6= z2ATrZDcRZZCT`sdm6W-Vz1$Pc^>*e3SCuf5yZ3C%k5ctS??<;!7y6$l4OpncnQG^j zUi&NbxThxPx-Dh)HbS#ql~4LypqcS7;6L=_Vl!tusjcmG-YTjJCqHt0-FIA7?y9(( zQw!#-7|e%WWOb77_4u7Pg>_ zelf}E={Jsv0ZOLU%X}&6o;6se-*}o{Zm858(G|NXbF|APzo5Xy#a|N@t7dX0lc%%* z8O)0W`6c886X!bF$n#%WDYX$%cl$N^>k9%6n(scJTA_ih(R+f>AfR7|u3-%eR-A$N zk?Zu4+E$S!UdQb@x)HwV@ap5gVj`^o3z{UM_tu?=+#lTdlOPeTdXP=<W>RL3>QGArj;e~l9%=si6b>s*Dv!z;gh9k4^f;x)F>Tw(ySlLb@kq2rOcpE&x!0o; z5w8&AWJ=lQ3iRx5o=F=jdf6ZL)2x_gmystabF*1#V)8j-$Xoy$NDR~&wmxqpjiM8-ktWY?+xXl%pCt`3#d{Ej5ZJ;bIfi+GF*yKO`pXwY z{NeVD2ANxE^BGV(c~skY1i|aZo07}xij{W9_sLvlJWOlYYK8kd0Y*>G3GkAw(^&&0 zabX`h5RY6xwPQZ=8P5PAIVz|CQ z?13F9hwxyf{Os4wf1f@T6%<8VyrQ?NZfoVYVVEdg-D`=DDfrRZN-CGVQEQ{}GG3A) zp=kX^;5u-%Ci-HD8`q*TAF`FWuS4vk;RU3p^@B`{Kncb`dz~fBq+H9<=}&X=C5)w; z>UUnp>TF%lW{Lcj_4nj!pjokI6Se;uqpozRH?+{pjx%?*D0nc?!h9b?jFB5`!igSKK6 zsE>U(Wbp)=6l}#b4%BVOl;o%;0hA$nH47uM>rmM7bO|e?_B_cKYgl|1`#rI|aXvxfRu~rK#^bQfZsd`|FPfEk>tiP&FyI67^IJaen!G zxj8Rh-mV6%TFW>4Dvh!Mh89^ah1I&ZX;`#BDHfQlC$?%DRnws(!q=l)4(Pg(=dJe| zuyY8TRM|PQX%MH`)O=aBa}?R5dVy~Q(|>C_*p9Ux==*$K{js3XB-KtP>V43Y)Q+guBYj^r{rRj3UDo3_nn_|g1p*muC2(9xc+HL)4;_#$ zQA(TKK1IwL_biIMgUv-dYDrGoZ))PG9qgR5Sq$|Wy2}4ySLKyzXM|^1Pho{(Z`wkm z(c}g4#0%L=TRQdQ_S5u< zGu9QS?B5Lvy>zR+_?^+|C?;=o!N~2oeWTiZs`<-%{z(C= zurrQ8Yz64LpJe?A5D>+J1ua$>oB=a-}Dj*uvpv|h)Ez8%XFenF&;w{Wt zNF3%KGw?taq?WYw-^hFWI;4%5G2i->|V(fxtbS)!baBspvq6a}q^Ed%5J1o~FQ-03=f{|b8WGCsS z(Uq)CwR6clqJ8gu%5m+C3f%%E)u^r?Uk|NRJ~qwk6`=_mQ40C#&cnO;A0FMWIcMXW zuFRKsd&*B$v-Cp3M-GiamkP;LyMVm1wPM~@YbI2uA+V>IVKYDm06g3Z#?>_QtUawv zAM~;`npY`ll?l9&vVNSsGVLG+?*Y)*88n~1<-ghYXBfYQRjyZXL9BiWu*4Po;C@y@ zW^hU)a>cx5iXO&xZ+_%BAZ*?*too*;-`lrA%-5NPiriES)a#68`k0eB$p=7W>y~Q3 ztktVOXZcT0NDEr=Cx-)%9mD4!J3K#fd{dZ%^-T;Q3x}>rNNw{+4Q|m}D~zl08Pam4 zL7HcH(@yw=-zQ|n?&_n{J+fyLlyLh#?DEOp+JufzP5ztfRq61>u7kMkjG63*QFzLv zSBsy?FVgdF)%x^0Z71o}j#AdHSIGw5|KN@MC-{ZqAukRF(;mvwcX|@%4!LL(#j~RW z4$5*rAPkLSW%L^TiQfen;$I{&IXAUE@AZta%)!PPM%^gC*6#{k&ck7wiB;r~wc(4s4-- zCeM#LgN!opB4Lou_qFm$W~^6gHxp=seq9%Q@3#A-aR&|X{u}~XS6tiXRIBitWxCUX zbC|k=c%|NxLbq0}4b>05>7~oA7rH~^BZoWJjZ5?owgqdU^1F%7s?CP`-Rq3=II`mU zmcf2%gZU7d`H>_4>SRXq$*!LJu)ZMLgS?{+wGmCB{R5DxD*t>=)#!2oO<`M@C6-a+ zk1*oJN}IM)_UoMOw&>1#DZrrNWL?UEB9(tjI*Bi`r(DIsja@oz#P~_(F~PbeOpgt% z18m1W=N%>4yo17Ql$0$pG<3wTY+^rhbgLla9-{UD1s^#S)=y13jiKv~u#X3}mvNLX zXZOVA>W<`WJA?`pY-^Dq>|_uxKEZv^2WgW7r&+$H<~q}d$9q3=q~7P)>YCH-5m_?b zEBJ|xaVaq%Rrh6MVTXeTx8~)4wGMwT%OSYEe`yC8M$vw;5|BN$!-O9ESmP10!SfEU zy&d;k2QIG;k7?%#-HIdWu4SF>-OIMcjM}`F;0k8BG2{3Vp0kfEhd0W+jiN{CT;X>gvyj(MxY$u4 zLZT0cu-t_M zBaX___-z4oXxgowuXprP;2G(@@)m1kNN3hMpKbB!i;4#+s*U`!qSGtxnN^VeEV^|+ zs?|h-jjHE2L>E@YM)!s#)~vhd?g+k^Q=ieh`f?m{r89MHvth%;AzR_Rr%o1G$);TN z_MzgOM}L{~zj%<>z8FT7MeKA#eg{ZRLs$1hT%ml(~^G&Is-MwI;QuF-QD(qq( zapxA>Oo!T1!c?G3Xpl9-pq&Q3|$ekD8GOThd1>PhF%I_C~ZneHL+WsYh=} z{QblSV6jiPjpTObP^+TxM-EFS$UQMt#Xf3(&w@DI%>STi@Gi0tiTt7}5OTeOVKLfX zXA$je$|GIy^MEQNav>t3X;a;oGpiqJPVH85`=K8hwWh5^a3;ZvFJ<)eSQ4*jN^;g??aeCtfE&1Z=vEQ4corwQ#TQ?|4*{u zkjeir9>Q#DzjZh_NVxgjC5Rp3Sv9pQN&P-;*{t0WU|rD=duwD0Ds5^i_>m(IIQFnQ z{md64@pAW}&r;CjnA?E~0TTX&;CuP|$@>38%6uI(`qL)tp`zus)9TA11#7sjsv1f? ztk-jQM}E}o|4BZw8zDUW@XZM3ik%ki{Dr!oZ5A$F@IWKP7s}wsVx1^-M4xYFiBvfR zn?dn-3FRAPomxA2IFes&GFR0jOB7zMDq7l)^@#c)oxUq1w~NIQkz~GMRlRour7X>Q zC0!nD{guUsS?^u(Oe?p1s7e!vL2w^NZ>nmr56%|E8~x-I^2SqEv!%d|p3fBUHH6ay zEe{qaOF6R!EvrjdG@+qRiN3KptQ*b^RhWa0MFbBHIVMZwq>AvTmv{L1f&cMQ)i*`D zSUG$(ge*PWDG#Y&oTzIrBihicWs=U5^_MUv>ceBaJW>QYt3;So?W0MkiZ|e=mfUyt z_=lk+NMoNHrU3xz-OF@&m|H++0ummJpO<3pIXYpT2L_cRA}+< z8C5o}5xe9>lKT&nO|5<{&c9Z|dg-+Uhq;j~fKpwMtY6_6F57GxE4M2pLcB!_7@8;Z z7`HBO#|c=G+fKh-Q=g+C|E6`~^4Lu;&$svE2@V1l z7KSvagp^;rIlKmMAKfY!v05$@m$c`GQeA>dsc_}N;I%yx>@Zj63ANLpaE5sX`QScs{HCj$|If3j`NGV%q2|u1 zn$NC~SG@p`g$sV2qh(bSCuRMVPP_Q-~7uKVsAtkYB>S3*mxz)EL}N<&h9^irR<; z>C<516hi2Cq}`1*>~aYlQ?)!$IH_%|Xk43|9fdrUFy@S&axcly_s6|PE)8)CanVLH zAqX{acvMYc_zfz*zhd9Ui?treuly^<&AKvXO8m{mttI6x?ENLc)YOpBzGX{C*u<+1 z=CcI6kwd%US)7}_(t*l$X*mt!@?_0E4-rVQwISWaN6MX+T#@=c_DBA)3%Js>X-&>W zANdg5h^e*LCFg#!Sa;VPXWO|}4HC!o-j#7~`np^_$0=pAq`2rHX!*TsRI?Hr-rv+Z zYQwQ0rrG9{1Wn_n)rzzQ>MqYwnhiYO*Jn%5|+TD2J!U4o$Khh)z~sD`&fIEmSDvK(V(!jHejj{A_M`pSoPhctz?P zx-{A<^%`l}%B`0zuY<*|vy^wM;d<}BFtRwl35g6l*XSR2p%^?hZ~`y=hR&3`e(lBC zriKKRicfjT`=!q_Z%=uv<13etlUFyCc4*%C0N3!`W(+s-JmzGN{AE1} z^~6S?;})EJZQxT6e-X9*l8|7w-Mz=*^6YIa28fUYlDf`VLvX4Dl?+$zZx_7IXT)R; zDf*Y*h$kfwE#51|>X0~Dp!uxfv;T5(f9mhAUB9YaWheKrw5TeMgFr5@OBK>iP{K9# zh%t?T0qNO~qH9Ldn`j`AI}Zbw#8$50hZAbGD{*N!RP^$pa`}(>S;Ca;Nys zDrf8AWbsje<;F~wJvqRNe+g`l?sE_Kd3tbYBGV#&sbn7!{XT6WH8pD}wVgQZ79}hh zdz<6L@kjq=fL{?xr0mZJ)e)ie?>)uO5D4p4C0SbWJyS9PtNO?_(KZQr6NdiA5{x^d zur|UUV^?28!b`Xbv>mUd%lmOPONhKqf6Mok6xM@P=eh(#Eg>C7(wj-61Ei9w>yDDy z+>4C>UHH~F>ku};4(p5qOwKZEaH8T>^W>J!=%O;c7l0k!xeAN7rUAhroD5EOSa)sX z@-e*iFaL(vKmExJd94655rRa>hzGoXhv063t6a*6Dju+x0469CMx{`y#T7|&j3YNB z^v+c=Ro@-s+`LZsGfMIZ%Sax3^@=o&z#S1KQuuf zAi(4x0gKbv{CoF;+q*8Lz9$Yw+)-h(qsLV1!OCX z@VyQq;~lIjD6L_3aAed4#5V9OEi*+Rvfo==-2*nQBCpbh#ry&_gj6eN^}-}G#V7MP z5r-)q94eX}p%gAydNHdt9b!M-PT#}>Kcv*?=TvAPeMl*8E^#eCcHcTWSsXDL#pF0+ zq4erYY9jq-B4w|1A9Gq)dt&Mx>yh`KjZz^X+|fB}A&O891bXd!*c_uf+)s}CU2N~j z+P@n4voq=fh@E*GyCX)ORrZv$1fH%d+mMk$cSxsQqQ6}{56WNtcV*sB9L^ugQb1eE zrYO|IS8W#uq`>~Nww}H=!b*_XA^r$VY1-6$)=d}buGd=|nR7*JyhQ`9GCzDdpsz5i zyN~W!G1K+;Z#mHdfhDg07jf?a)Yi4G4U^>9PHY?pV>-5DY5)VF2uzP-icK}B(Md#? zKp2GRC3ajuw17<$%?J=GNSGq9kOi?#ucio$Kwx^6=)L$??mhRPoSE;=ckX=u{NJ8o z_8Mugwbx!7y=$%aectC8J}PMW0MPUIcT7c;MUil__O6pFM{^bbN0LqFd?rtuJ_}@8 zr~h<|-Ccbggt_=#y(b+!J#y~>rNrCy3V7h{)jP32rs$+sgvbthgI1c%96k&D_V=#- zyJh94PSQc!78S@CK7U9l6(s^h!w-G+k%a@Rq@qX=ZO(yD`4iT&UmAYmfPyU5FY{`a zEp4A~ZAT9OAP~W&{l|SO2ZA@=fgJP|m&g6)m1)2M7tD^`X==>jXMtOH_gsB*)jV{y ziZYH+i%>r5r68`QaKC1AX7IwGR><-5j5GC>W+9F#0(Rxk%7C5qe-P-xaj_98z*xgE&tgh$1 z{!4_qFOElOaYPBmwL$n#|L!>c?K;7@+c*FChy>n|Ey>W=%WtEFK}Z^W-5-M&q_}5> z!8K1@(cLK&Cl#t~6fS`3ah}gp8W?73_a?!)BKsttFU%)XbPP~#DrW5vXFR%)9+dWw z%CJixuEY%&aVQz19z{jERo-uh7;b(yA*3xrbk<9l^PhNFK69)f=vy=36G3u*FeW|dUAwWmhcvLJ^0iSG^E*s8~R z30oBc02>olpf1ZLrrt=uM-{sNJ?P%?x5ZcGlo_iT7Tc?n-ebAKu?xaz>y?!_4n6b9-CS49by>%j`izu%ZSHS z@YWLexA`tNMYaLX(XKB<(8A25t5#V~p7SY^3|!FpN{_&AbV8v!qEvU9t$)1`z|PCM zMPnuBiI$sox9LvVgD)iR|L4F%4JNryK6xY^J=@>R`jHymGcae|ug0V)=eNH+i{oOLOc{`^le5r`L}>^~uNGb*Cve%C|oY z>>!{!@tcn+ms*vaK728&Fz{FHukQBlkgaRGzHbW-SWyhb&t>*~s!NzHEm$RH7bHV= zlVMeP`i}iz9$ZmVd3zZ-w}OoxCg8Z83QCm*H5wYiiOthd8-|Kk;V?pOPU7rWcZV(_ z2Cu5V@!UT}Kd&1L>4b}B^;@&=Enf#K8zs+~K1rS1D1#xnd{K;WwXxUqaweQ3hP2nP ziR9!aCgj^H3XddC-I|jF3u_4({`Q6U{Vz5TWK)E^qMiAk5UN|fhu@`_e|7vnjxQ^s z>Jh`EPG?F+$4b|KQYiBLzPQ@!5WO5UG;j0YXDxpB^rRdM^ZEP&O zi_1&PQ@_r$?S+^(BY>ftFw><8QhChNTe`iQOzWwlGrd~Tm3Szl>`E`0v?}|o76R&$ zin)s&R_O5r;uOQ{tUvv;OaE~?AH0|W8Ui}i`YSEVCDDfR0zyKJTzXp&dvNYVQgx`B zp2W&<)+cOs(*3?XN2X?+Mo9S^cJ@2`v$rea+X%0dMDD_<^qR<6edPm5@qf1bZxVu? zxia%is=d2&NXO0FxVv^(I!_slXK{RoUKCtkSlp_(FR(EN|EpEAQR*|l z3dfW~lF{{dPFkug2Oaa7?S$D7(>V*7-RQL@x6ZXi^io)^_qdVjq{?6gY{#{J`Qsbq z8NYI3Ub>WM&q6wep|DaNG^e^7eA?o5{ShCV{w~TXqS?g7VJe*g zfpMt@gN0B-0=nNW1}MH<^eG>3&S3Cc$=cR(g@*eMjvHeRo4^mwgwg8=!&LCy;wK5i zTg=Y6O~paI&IC+Zbav`Rc*!e;((#C&+x^##dlX|^kchGBTm*0PKmAM@d8v=}}glO6G3a=|$%`%X`b%WuH6J9AGmDYwAv%CO4D=LtcAbONbp9 z1^QO>GvzWesOJW)gvs)d23>&jJShS)7C_3AFv_l~)ec}9H#ylbGABv&!j-VVX)K(x z5e)Jn=6AF75~kiF=h*XeAYe{H+Yg-)tvg8~J==-wmM85iDP_Z*NssM~qLuWD5t-{9 zlkM9m5%Og9j?G};3SO~o0!qp{ud}%JZT*`fh1IgG4GWQYRgv;tsLmBM5NDd%=V^b; z&_V{LyHdhNuZeH_I&7;yy=eL#pq7zUi1%)A{bBSB(AV_IwjgXL$aJG5gu4fhDOWEp z@Ws_X80tzf6b#t2nhV&uWV%sUF`L4u97hNTHI`v_!&*kMfnlT{Qp|Ly{WkQ89K1hC zxkxI^QzK!yd0sZz92VEoHKL5m=glh`8gi&9dHt8${C{bhVLvZ(64fdiEyG~5MbogP z=mOKE8rein9+=!fo6w4)aUnMg+T7RLbjbcRx9TNojM_w%q4Uc9KjeE=(jFTZfJMSk z267fAUf@}%1|L~x>Q<+bYx8u}W3hO83*^wc^Gw3|B$Gf`%C&K5HHupSX4=PKhL21$ z7oXl199Qtsw35{OU=xr503AXjVlHw_ihJ#r6vOdv%l-U9(@VPHOZ5OB{#;wbd(Obz z+DuGYyB_6xYwEmiB@znxEbz7u6x?>rq+cH4UgfZ)mh29|aNud*L{%@u}hOs>P2A&$+71RjfxvkP4*S0NR#S z>H!sC2${cEusP5Hff23)Lx+-A__Lme+-q~qJ$m%`oU=SwzVQ;JuFFFZi?;K}+?vYj zxM-cwij(P4+q5L_K`czr8alPnTHXOsI}Is@?hLVIngoeZ9;SqkXwj0$Uy%09U$~Xv zhUK|2t^gsj;YQX$7snwp`9JlAx00%`$5xtcEXcyIl_AWHs_X5Qo~#O}ET70sHfIFT znLw<@RW5uN1NA(-5lQ={F2HsH>kA#OvlNVDlSUeJ^_F@Yl{QO*5D8MXVm8=t|1zA`@(`o!!a3Ipf-&m1BPI7aNvp;pucdsCCYe ziuU5GZ1pR_7JO;b0R@H`24e~%ufp6UF?G*Sg;Nt7@$@x2Ju(UvJ%wBg?lVLal13B? zy7$M%=sRHd8)9TNpco%+cuo<<8eo8^Wo^Cp_T;Q_gvrt1}D+xgAXXg7DH3PbXnI!*0K9^(c4vYVB6hw^co z8z`Ss19Ih|fx@6cz49pKl%?FnDGiO>RN&hv4!A#@4%VA`F)sj+dnq9B==JR3(9XF7 z5tEe%&xvP(J9dc6mo}B-ho`jMq)q^(CzPhiCwZR*u;d<-N3g#yNhNI)V$EJ%nrD)C z?)H4#&2#v7P52dWp;F|yI&pVkP<9~8Fp_njS zp%=?~d@HjcamsTh`D(SMsRbo|KW1b((oMVF-G+ z1w5*+=>8=CZ=W9h^c8aU{Q^i;t?f>6K(~y(Vh2l_>1Rm*wdv;XA73X2{2W(@~0K^kGo$Om!XRxwO@| z?$^rnc`^aTs_JjE>!{bt6!X2Arw9g_nt^6N*k0luI$>FG-b>$b!_NZu5wbCe@Jcg; z5_W#G(rZMocYgLHE!VBTP{nx&Y=%Lt!UkU)DmsRWVI7x$sh>%vYbr@~v#{bMH{r%3 zui2>B;TzBM##Dk3;Q%l=F2xv2S>7K6uuOZLk~gM=8N#4QAJL7F9*Oc6ENO1^MbAt2 z62+OE*=LdeU?b$MMw?41wS*1@8}+3x$pw0;dE#It`6F~r*ka2XK$?+~N9i(Q_}5?3 z*9seAJbBXlbiv~y^mqF~%MmhIXgqZxNXs?9v%(DI?(SvNb&i-VxniEr7Z-);A%3XH zWL-HXSMOFln1Mzy^m(6%`0Y_`RI;O% zo7v&T9AiJaAJFh=efHMO z3OCX%bbE)^O@!!=30hq;?6_<`m*|CSeW0{%CG_Se)RXuvV+aTTsg)Lv(N7+V=%IOsDW#1kLBwd^S_5XM1z% zk*|(;RwMBitB^8`KYdcr# zIXvXfE*5H^@YR!?^8`aPbrAV;93fJ|T!2Bir$1A8MP`sD>-+|=Vxn%_?;z2yyL+fn zl<^ovgkJO{Zkw&qB%w(&Bi&Em!pZ}wMc=3Ql&9tnJ*dbqC(4RkOC@9qd-G6-k@tr6 z^=i-z%cLq(d!Nw$I6v&XQr}z7WTA#ND>1hhrqyBw<=G=W^$NJ-GyC#6`;$HE1}CJn zgx+gGlJTC*zK=lnF}JA)?{;_rl)LOiK7h7{o-PCyXDAJCo6$`4+O{7x3AMh8YDkX$ z9*?(5b?C&)8)`q!evfQ3!p`(~X5n{a9$ZQ(UG$1#kwm4w5$$ ziO#bZOgEBFO&I{`5y;iF81RPc>?Y4Ug7IqhR%P*L0q>U0;VN~VD3>#hbP1We1+{K@ zS7#J0&_VGpvWxoz$Ob@PxT-y(0UV}8;)p3U1m|Fp7Aac7!a2>|gIYrGiDqa{Ubs?j zzGr@`;rbu9f`+dKcEFmeq|2W!9|uVVW{K*`W*kVbqGa*59VZx5mhE6BQ?CIP8K#nz zxl*F-o0t-dqx~|H-=)CU_yjtwX4R=1{oDqIEV&=(xu#bo?D81ugF$ueb5<*59uCJQ z>t~vF!bA*y?@~QuA$DvwdwH;Rx${Ev&>!s-PPZ4UhQ63I%lXBJ&yD!CiH(-r04K2ROv(Ie})_8Xd7D1+)1?x;J&lJWONC`>@&qo;l>eKc*acXy| ze3)^(bWwh0@CxyfJX9vG<4DSdpJERsndA~j(yf#Thlv<}b1_t3jmxu#Y*h`p=SCE$ zQRjlJV=KTomxsa**#*WVHe?p{-!6NElwMTKQfRP@DNNa*N3+Ri?m&YU!GL(v>Y1?Y zpSO7&N%AMUJ8{xsp`)`yE>QMBa)+a@ZZOicXK-*qKk!M-?n$)%TwZLe`bY?7IyX1j zo}pJB2hYh(%$d=WXr2N?$yH)9zPA!`j$*nGgPSPe-E+%kX^#z`lK2}CIvg6p{$?2|1%8x^}&&G52x~w zyE`8=z-@9*_b7h2Q$HN9w-W!hTqDM-N9r|k3SS^yP@?&5xGviQ;vl1bta4&@?W+%` z;ANd4)M;z#3I+weIEDt>NiRHZwv(6{KH`wq;7H%(nT^McX7wxD&Pvf$zeMa_LiM1M zbII~`9Y3A+K(s^ZYtxUZATvl)Ahzl5jyuSvN9R3Xf>vng0E}%RNME1i4(XB>{qi2v zk7p2HkY)P`2a%o-0I_j-!6+dCb+6lmZ7K1ww-cmHT>Hf=Ldmh@VK{78^%Zt zG=#t9tM1Oz6QSM{5zBtVdeEy~^F~pdw)9L?(q2al)zHa?8*nd^xva}7=>$?9U5G&r zkCuy)q3dCrmoxoz!k&Sv7sXQjC2&=gWR>=F-Y`jhP;R#b)f z^Bj@=@$bt&0RiB#$!;qedXO7>{ExxI_(K}`u<77u$g`O% z6^jC!!v25N=EECI?^w_EM#PgkRfCyo`vBMQhDaH=(!0XV1XB+gS?LTuf4=|E9(?j< zpv>?^$>yDl)fy}@7nC7DYMkA^ms-q-6q5JcJ<5}!O%Db&IU@p~aG#<3%$}oXnMTrKrpgIXN3#lf*oA}$gLUHnL=#U6oK*@{P z$5xFS4R!JmoO0x~OijyK4`qjPj~iNudeKlxXzti{`I$ed*oQ@~o&ihV^+uk7hPGyq z1}FQpQLu1crX)kRHH0QYYIs)MRSt;gO&nU5-??@)QS9o~&}T?IQd#=Apn1)ElgDG5 zdMI1}bQlyq%}*r&w8`|pQ5SBURHCwU4$HlOMrq}^K;Y>4pNT4BzB*s;t=V9E*VH<~ zeHZJp2Ag2>Tu7)W5tl=vbizprO1UJecp?>^+uYpub>Ec;DkE$uXTf!${`7(4O~vFR zt{RT5-ISmzPG6$+$)G%IAzhG6?Mw$cKTFB2eF({e)Q6&WQF%RGjk7IO{h7ypXD_Lt z^6fO=RhI#-%4^vV4ue#{Js54UDG!ke1`7#^@nnXKzt=8FEtFXeOHy#dH^c_I$j9Ta zWQLJ3ZTCkuRlsisthddni=>1EMinzkN=$saDWp0LdRI;7M1e6@d7=VQc740@okY{Q_zyh@4AXHOR~w5dB8=GZ8v1-h`# z&b}7C!clr{Kf1W-e4$L$HFJX;gzm3OwRG$!yrCfQ5OP5yZ!|InG;#c5vj3aU0)E@- z2lIU!N?k^xYy$&meSleki0FpMCTW(hmgb|F;yNQNvCJcvdyYgbDU+vgyw_2#nR0>Vks^A@--eV`Rr4w#C;eC|eCK)>;Ra)X} z`}A~-S%!yU3H4^LNzC@##9R__0=w|UP&Qhku=o6OUf%X7rUCC0;k*7`0~hm)JzODH zCvDlb&@FVuz*E#R+U*@UOTSfCWM#Cy0=5-WQoy%4aO8-Aw^r0=ftE8#&&IpHdgZn2 zH|gIsTVdH%vm&ZpXJMO;JnfJT>1slZV^~XrvF)B|&Jn7TUGL{T{9u}=x$2Kv7Z2|l zsuD|4j^sJG9?z!fNQGHLTzu#lNQcxvSW24s{@$XxgkY_Ry*g?ti#pLpi#u{9c-I^C*pxw6>p?BOR+w@^ZlR%~##{sX#tHM_AzYP}GgLT?CicH>3Oxo&&2e^@^iACnHI zNwxxX5Y7ccLc;V*C1&g>rVe!#Tv{bcOlXyXlZ~CQ_=w#Zq4zHoT<|2%R&mjM%sx1hVo~KxDnjcTltUIC z;A>srJQ`-U9QVjF5ln0-5oe+5?37nA|0sArku~T?O`c|Z-iydu5lKz&4)pq?)Hb^| zeUn7yt44aK1DVl@-wlR_+gCB22Mx{^!_Cc)EAqrC!Z_RcP`P$1d-iFSd-}t_PQOO2Ekw9GN9dDv!GCzhLpN zAe_HH$iH1CIoWYjN1Lvseik6vIuHEaFHa7g+zEHukyo@hI5b?jB48NC{*B+R_!|-i zKbP#TI%LlmjR1*!XWHv!>)W6!3q&s#fDPIW9>yy5)uQe&EtZX*4J0*{1JH37r|u8M zHSe~jgd3_yM{QQx>@7Op_X-R&7!DN+i`9_IR>l(x^?D5Y#b=Tu1`CCU>UE|On8TU< z;#B4RaQw8ctyIdu_zcZUl!PC@S^tetXS=WIXm`ANO8f3M*oH+)3G3?Wth$)(z!Wkx zAN*E5l0W%h?_60D|HC3WaN_GRP|9M)-Jt?vccXjy+R>2O51NwK(p?9ZWbY7akUI@N zJ~>q74WCF}4*+;8-`rD6VkVhDZ3aV5v^0!Ofr$Y3Lze(TJ;>PV$G3K9p72fDDWcY7M) zcK&e(hL2P^HDUAE-3+V}J}I*WB_u44g%J|U)6U2EPw5r9g3SmRT*XGhyIM|Yv^_k6 zTZ7OR-_yBzFS%h7(Dm+3B*rUHMXV=+SRpip7`^*C=Y0VFg@6`z!1DwsS81%(k>^ z5jj&`mkQn$u!#pwJEXMl_D?1+Z|l#tgq*iK)8JHfGiuW9oZqN{a)MWhSMofJ>{f#% zGQjp>i=@ZlFLl+lLVvf=zzANjz3KcsfkOf9xfu4o*32M{O<8k2>{L8t!Q6nfu+9Xg zNoWFLcocc_)lD*RKe}t(Re_y-fiocKGXT7~@h(F}xj4O}PZry};W)QU91qYJN_Jmo zioV^D&PY*Gt3#aO=gWN~E4PYI6{T_i>P9sVzep+^$P+Cp632#(puUjK}?HSj#dc{Uj_>GS7r2X@KEx)xeO&6$eql9C=lKB1hwzFFy}e=yPwY)xIDGfs+7t$ga}^|Ivb^c}gaB&u!A7Xz(V9l>4VCJ35TlUuB+=6zW`K z+TC)+v^mJ`8~Z=|kjW*60Ffg(3t5{*F(OTfXfY5(|&|{TNfU z^V)jE{Ih_KzX>8}Z;HR4o+oYDeafl5v#k1CJb>##GDo&P$6dD%`0Ah%e&V1NW`rO5 z%ToML5ApH;26o__{NH@R$0J<-Ao^JVVaFTp2&nAq%llYB6CL!38(b}Hga2Mnc|A(@ zSHkfXo8~gk(NZ{_33+_ZF0kotd%&7SR~pSZ6f#ZE@bZw5z(ZRB+yzc*2l%XDp7 zNaVqI1ySmgioZopPYg1HZoBs;q;xLh>3l1tq4A$q>N>)JZ>5q7g2m4dqWigK#F@ID ziVvRSAJGb$D={PL7ar=tMfK7pMpcf$%ey<~fg^9K|2(LvE8yhn`V5)wSt{dDh2RJI zFwZpKTbp94E#1B()MAW{Ao#luJ9}X-41|2GO@WI7>wx%Ldd2sGDGJkRj|H(OK_8MW z#|T(dYy~<-v;i{@WVy_OOvl2RBnjb5u(q}iZfo0_WXE;l<>+hb7WX@|jRX4^ z_n2uRGN@`@J#Z&=l|5mOUk)61_2ZSmN~zdC8a(s;MIVi= zGw)PK0V5wxIT^l~5EeYHh{>ypoQlq2l-D-J6y8p(uU&Kg;5ynbM0W#?Xtn9#l@r>e zJzMkFSEuR!`TE{EBM*%TG{dk_09G(M@7vN=k09*a)B{ENpWF0h4dmnDOg_Z4r(tie zz*gaP@KD}Fsbd6YinnHQr|{#AbvRa;X5JF|P}jUZx2rvMHu~c%KZ}_ZFi#ea{#h`S z`g|o|vW9?DI_;edX>Ro=rRrg(eNg!ubF5@L5&B@ic8}JG-cbw&bK$pO zsSma3uY}MU+`(KiWS;PMKQQX&0itMqBO?aDnH;4nL*+Z`Bqm4|&7Rp`&mV~zI^jup z6uZJu+w0hgU6kbSL-uW0;%XvsT(82~BQ~}vdyyqgU zXAc&N@gcj(Uaj6U0_)?1zn1+tcGv?bFd_?I**m{X%}tFYhwIHGritG2tk(nU{6K=| zt|VLLP9K!xr0@{^0Lc}csNh^+dYSyyO@n4@=Y*Vu;RZK8sS1N1-mjuZa~gQ$UuxCL zUDm|G-X7o8Aw;VAA$*mW_3ZpKOyLt)ij)-V+BS4+cWiY}p>v}2#f3a8q8(BtIRF5Hky}K&P zj!KyI%~4wpt`v_jGFVhK9KM7_REANOasHhA{f~(&xp-ME z=?EW%k;uUm&Qf#8V<{>hW}B1hVTSH^Gj6N72_Bx;Y?uUt*iplfund&3uD-dVOcl)L zO&o!jIPtUId_gd@Wo|*NZO6j;COhznBQ=<#Jdf_wZ|Hmm5TORdq(Wsj_1Y6Ci14uG zxzX?52(+!9X0U30z)_5`LvDBlnR(@jAl{Y=*lR*= zfA#CCPl}5+KL(%=+0+!7gXx9i?bMZ`Z(~17MML|0eB%~305DGxa~Lcdrl4nS+IB7Y zg6`^ITtVl@am01nv?I4tv>I3{dSoQ6eI>n|cOx;ORdEM!zN$jnXa#wW3Xs0L{^rO# zuyyPF?f6#mY=HfUx~(s*59LS+mqUW)J+ZrF{tp6DMnA*Mt)m$zpM-O#Df?Iip3nnm z-pC={LT_|iTiYqc(tYw?G}{S=v^fyjXsxt2)q8<7>ci>%6eb+E-8tieN-cKzQqRD) zhms3LBab4|J_{`8Jri@i<%(XDs2*P*>xRUPU8-<-l3E8wIa1xhp|&B&3Qm9XY+P4O ziEW53=p#enGNoHpX=qTl+qb|7YCHonrAutv4=`s-So#-kN zTK>={;GRKdo>4k;IR(+b*ruCn->8fuiGsvDOIaU>oksk&hbeqtc8nug#P@NFJsA9; z)l(?h$HQPkAraSrheh8{#rWj^1efL28AX0L6tw)9#cT0Rox6GmF(0zo-kew&Lc_2^ zcEEOunt#OIz#BTQKa60`U;zm(Xmwj2t+EnVT1bDv3cVE8QB9s;&Cem6=io-vS&M)c z@Xu>s&8235@l>wP_U=*2c#v}r$*;!{uLaq*4xSM~&!p?eE+(_|QX8AzpO1gEX!~Zx zobCh|OB_R!ujAgcuBS~80R#!Nx#aE+_jx0(O;MLjr6#@C)83u}zfrwmQxcU%lpHOV z2$M)HdpG#h>z+ppVZHsv`dvdcj4jgX+Q_}>_cE)^A^S`YFk0t)lk!eFrM?1(QR0Py z&90bQ+uHzuV6B8+)Qt7KkB@I*PFua?m-0>l3iy#GH#;tc@Q?`rpfAR{gW zNAHFcK;l})_;Rbt8;JpZKom`PtkV11(do{`@&9=y4qwYNa(TV$MD^xn8|`7fCpA@v zoWFO|))X#-27?z9p89>k`Sf#t*sJyI^02(QYAVOg&dlLC5d3b@I|WjWHbwCv)&2HS z#)bv}sR@T)I0ZIY<-F1DUx! zuQb!C&OMa(*waah(+Vsq{{Hg!|FkjxF0{^j+U^PSr(q6qP}Qs@NPI`W{sQq))IL>2 zxXqA~N_nnqn%=xik8~#F_Xc^;hwAYEKV$5^aNC|q7;kfoNa=Vbc(%{i&EW0F+L62- zQ-=l;o)KOpTOM*Z838e8ctZ@r-tA1b`3!)YoHbnVG>*1H>iLn$fZbbbG}LCz+gzzx z&&#R@^dp6F%Aa_zi z9-5<(uZM^&Nw}&^TNbGk1%geYtjeU^njS$~6WQiP`_SA<B0OAjBF85|YF4EPEB#%DFzbnl1ak^gepBH_B@EXij<8~G8fk_*;7w>PYaJ5!dG1fIHZ=v z7EpI{^N#g{oLD@8q$T~^7yjES1#7$S*40~1-XBL=iT@p(ULZA2-pQI|Rj&W^|7mzm z;MTJ8_od}oRFcmf!JDBOclQE@0mA4I(w>YAQbz0Dx$jjbFG~OHD{bbTn`IXCicQdN z?E}?~$pb&-ssVPs=_KvxdCek(lDa9Y{XklZE*Me&_JJF5lvg~yLn|QmiG_Wq6Z@h$BXUgv#BRmyvxY*c#*4_pR%&5+8Us zD0H$qv+Dfa7nPO#|4jjb)YrdtqSen0kSDy$L>XqidtQl%A~Vz@Cnuwueq=4j^t)|g z37qi>a+7j>;5eqp`AkKYTg1SaafwrjWjLhjS8D0}yt8F%XqM_RA&JFLAHy;fj)ae; z;zEtT!^;G&A#D|t!O5+jWQ}|~rDn>WW%yB%hxSu}@74ag{h5D(yZd)mExtGj5Se_+ zr%=MrcrOO6oK4$(ar(nyQ#X{q8Wy z?3_mh9L0^TGQ&9W72Dt8;u7l$md}RA^e?R^i`{64(O4We*CTLsRNX+yCepyj{PDg^sk z^sy!CE}H>{>G`kxl2HhPuaeqm&fM&FhVsL_Prlzbc^m$)#N`v)Fh@8%bSU_Oy^Dv# zVd5Nw)jhn`z5_Mzp$X}_&zf!u)5{in^JW^%%Jz8$FeDjG>a*&wrG=Dckc@cg6oSqb>@}V z1$m=pteiI~(rvHw1AHdoB&2tCzvs@1$CWh4rCCmIsB4Cnzb-6*I&XXWTgZRi;a?aE zZB3=#u8l}Emro(o7aYRu4v9yNtzwC=C(<8|7U?AoRQf7+rLEujUUz8vUe+8Bw0KvwK&kgZLk*fbo}Hw zZ&S8lFWol1oEZL1j)|h9UxJZ|G~d-@iEHXgD4VZ8oo4i> z!KuHxgx9#sdq9{C43Y31zoO1(m;4|YqWVa>M*VvN%}$T<)Tg{tVFeocQfPS_>U>^V^ZPP905 zbCdYN^-J{^ts8&+XnQ>{(1lPzyLJH>5~6t~T5b-O3Np*|5BlcDyG(QTgL*p{{If@>Ya?id`` zU=V(D5M(3L%$gZ58120^uUjAdT@{fWg{AgOH*Aeu{o{3v*Tz>7A5xUc=~JOxLZ_zl zM{XF>FB;Ok2XH;eOxo^DvB6F>8jLn5%M^>VBNRsjpSE25ETBKVVvOrnhTSU-yy(?i zip%6cba2)!Au`(=2HH#g-`3-_Y@qO#&=UKs3>bJHN2v=|M83BX%%%p7 zXb*zsa})5%Ea8N(Z z@A0Xf6?cpwc4CNKa}XJIWf)VqA}VVRIq+s+O~lPs74c@s!Hr|iAl(Lj;&G@p{UT0w zGJxoM&}l(k+hX*Cnio!lO~I&*=dP4&aTg<1u+fej#*hD8*jb;>r=GV71FMw8vf-YI z1^%PiphW%YOl?*I&Ieu|rW?U)Gg`{TE|KPz39T?0jkfEEBHLTkZmrY{nt^_go_^jgeMAZ`=uI{7@up}>2gViy=Q5pK?nZ4an1J1Zd+?>h#*8h`LJ z1MDReYn)l|189)aCAfvae(Y6m$jb*Od~k1*!oxH|$`Cp&kl9(NN$Y4ZR#4+ax>lH; zyu$^U4+IuGho9nGpArYdt@4Ik^Fl|2Y)y1Qwmw*xuLh&&=C5uLYBvzD|1nh~KbE*< z_R5-J`=g{aRBs6JG#Fiug&ME9wghCDQ%_RzRPuSrrX1G=WfFrrCKCU9#OYH*Fe3Gd zLtGnzdty`%)GZC&kn5R406UJZdR+u>?)q8g3nGx-RIKvRY4m7MM2#E1#>z!XvY8SP zY$odsg3H>E*>t`kR&TBi#%8E}$Q8b^Z2>5feYvr?c#|BMWge?++jhU1;=y1VHVv?D z`fsx-MlQZ)m94M|IHwudWYejTn~;!@ib`mHkpJs0iAbhHErQ6G8$Nwip!l1>KSbIT zhsy~j?ZnRlE{_ZDs-)Uc?C!^>15fL}!7ffNQ53m>r^h!Zk6G^i$HJn2NB<9m{w)&J zR?Ge`48Z?n>iSBG&yZP@?J*1dEbz1px~<wm%? zRn0s&*oqc)6^JZ&^_zf_+LKl+dGX z$*ha_hEz3+2Ms0)CVAQ-69o4?AQ03g4PKEnpTA=ui;8v}=V4kF38X@x&|C6AOG~-X zM@q;h1Tx`8f7ceP_0p343>C{I;XF>g3?>quOUbvHiSL$RS3432jiC9*E5T;;rKcG! zoiH-U8K;yuBW(9z;@Br{SUoL@1w!Q(wY<-MP|_@zW7B3&-Y55r-1qnMrbozMb^XId zLdCgSKkL@V?Kv2?qdOsGbCaLO75Dp{W-)2;=Rx$wYR>wxuQ+5hU4ywqssvC{Dzl=V zm89!yZ1D0_L^|J4kX_8>E|XE0zE6i~>*J71cdioh0quM$Z2HxZO3ua&jRyBWmMa5{ zY#ZjZ!(Gs07-e3lX}?H|OTS%GGA!R57R+i1Azx`(_Di0Ip;{wmE(VzeNfKYixamI4 ze-A{C)&ZV7%h5*{7~Kc(?;&k+DWiQ*l`zZ5j}(iLN(&i4l+-yPb|&dCiMs24MH{G` zeI*Ni-A2>((b>w!4!7$KocO`b`PB)qJJ>>RpmoBBcC}H_AwKY&Wjt2Igv?23bKS1D z3z|rfw<&QUtBJ0nbZ7%za0-T~?tEt_-Di%%sbuOiom)V*p$ldfp&+f8NSD$fp12>at}owX@n%{bn~ZBK zNvD)lSkk8;#>GTdpQpD?I@n$$fsnVO6V-Gl`e}rJX<`BWQgyC!Ww)~!fMVQd=APuviI2bxc6tk!cb*7Zpzz4_kunEj7 zELS#u!jI&iGMa$J`P`b0ur@sqfx;UC$0w43sZM=j>K6A5P1LGp5l&BXr99kIMB_9ghkNdIhb%_`IWw~ zgv3@2En&SG;X+`}ClWbW2#JX>-P+b+oIdx;*MHDM8th;B)-9c*tg1CU=(@7v6=)_r zdL9?1Zb7Ock?YOOc)RtQl7I?81oR)Gv7S9tz+NZA8-uHkBrSUY%v?JRlM_?Zm#JV> zW-aB8$QW)KO~zQ7%r1fTW4FYf_jbA3ZE|)eHR0Sr6Uwb8$y}W z+oN9<0R5{yH#_Y9@ttgDMY>~}IZZ5(ou}8y$zLEbN*|Igkn&~MQ=WrAETboN+CNcY zKo9C_X!ZT~K<)eWKJ9yJ?W~Q+{Mm&lwed!!rU$>~&5YJxd~Hwxe$}OlWt}N(JgcX- zw5-HVr&l76Xl|WpHb?Aj4<%KPPpv_s7>1g47aCmsDd{%Y#<3z)D=e`dHqXG3)5GRA zdFE_JJP?7feGY{e?$N@x?9H@WxgrnB4d^q{TUx>+nUD&gPCcrPs3SND)xwpY5BZ%7DEZFc1yvck)Gq*$Ey()&ffMHp!v122Eqdv_s5 z%UF#?;n{k@m2sgKD4BqQ3kC8`;eLyre*S17l%1GHV!cfRm!+X~WxuLbLwFtD>iNQI zzEFk}oe9KLjpe+MSPU74z*uZP(E<3fm8kG@x)O^wxm2WmStj}(Qx?kREH{GH(k*X^ zr>l?O36{$4j~G78PjvbR#qP3cthZ;neGIvCm>*4=KPns1I5FUdP?!wRu`;n9?BN_Z z2#A{ZMwuPtq?ycoFEDiZ5q;vbK!Ey}#~$M*Z7-^x{2f2t&+Ke+3OsS6)o=Fu}I@A>t8!ST6Sll`S?U)ZgG78sLYdCYs)Z~I>~;d9QCotyZqZZG8h z;xsIKf4g);=RfA-hqo5HNw274HI|*@?sQ zPsl7&)sVVJb3w#xFCMHno!5kll=MARL2|hClKSvZJ)I^|w_?eXx%@Q4Hm~|qp;s6; zld1P#Rs;Y1SVpXQA4(cy`jTup$6a$EC%w2Wdtuy-^M}{txpB;RL(Zw{J+DyB4XgP6 zfN!_V=NpvYAjf1v_5d*wdG&{4p{I}PqyBbjA)ecHs7edjdxs_DZtWpe#1p997HTHH zU$}bYwEtl^xlQ6d+IX#;?fsBNp>K_jFCx^mc=PCJY0PX$n`|94gqELB0o4O7E(3Jx z))gb$XlI{8HC2BejDGUYz3|A@H<+uFd_fXNZohFBgoMQSGKB@HBi|;wXipUMklQ!& zILh~3rboBv>Ez4-Sz+q?}O@oC$K-GCXIyVFh{N=5#x9NUB0-*$P)5f36&54_*bEnbSM> z2lMzVLpsn`M%hAt>|J3rUSBVED8>V010r@*i0-_G8drXwTgysL(ao$dSH367?WW8} zAL3;8czJeGIn?XkQ(umLi@w-uRi|;Wp|H!|Oh(6%>VMu8v!}K+N|I$Q&6(QNg#dsT zf@NB zX3b@o&U4^}#H4x;iGEz@>{zkzodF{?JP(IOhBLeBeMo9H4TzL(SRUG3%i7|b9u32V zD3K8u305f8FVw1)YV@iq%IxvnErr4lFsI>Yr#v_REH46MxUKW>sU8mkaOP)Oic{cQ zdYvQ;V@LV_VeY*H+1}g!aowl;sG>Eh$1IAYR_&hFsNIm*qqT)lf)K0Yv{q3Rwc8*e zk*E<75xVSEyF{ohh#i}Lb3fQ$(rB8pJQ)Q0OvEzf4PiN~#e`R@|QX$ftQDoz*lrG+y&b=VZd7KWC z1AL4xFD-TF=_j()f-#O7Fv-T2J~4i;5{+Q#hL-SHD!g%;Gb=Vq#Bw~yq?T?RkV+UH zN;aA?R?9Xh=%P?8Rs9tTkiv!bqQgk~^_R?rLz~Nmh>`2{CUlSqZ~zy#dBNuHfp)gH zOmO<|ogDsgA_$F_tXdL6!dd1*!|$LarCVQA2hdw{axI9|6CdNWC8uM)ve;dsY`fDB z)O^E46w!zti5jKWU`5rQbC_(~yKNA>W_68TF`LEwJCig&#hcJ-7nm%f+jPPLoKc5s z8h2oCid;8ysJyo#rkl2NbMuz=$-Ml6^6n4kAqzoNw)p&PKhT}yaX01Ex(WxhW571C z!)CW`!SkRaD9i-iJicKgB|QnGR0t-s!^OC1KP-a6$16BbRvZ<2X)%STPG51>P17l# zinKEkABZkN`?(L)bQ-+RRa%lEdxmCJyN*cOgL0ev!8U2(9!0i=P9lrmq z^uL%#<&}$ys+(!yWW|tohPeo~%HHQ%kYh)0>j|w%-F~Z44fAtLV z47Rsl6JBm=fx9o*?YF37064dPFwvh>tQNI9Lg0>l1kQ4Qe+jA* z-_X=36_BSvJy)ID+P@P$h@Sr3sAz&vEJe&=jct1O&Xf&X`D__zyL}*Li>U`MNmX45?U{l)qLKK79G-tlkWbts7hqS!tg0zT3+wv zBbc>QF{`RXQ+DKaUG~{TdaUCI?3l zE$eas%+@IMtLBuQQbW1U;9q#!;hYuF7(NClhPLf}vW$X^Y`J-;@60LLQmf_9az{%h zn7Vp|gQI7q`AquBDJ|g^3)WU2@w8!fo*^@jh$yCWOj>t!xbx#ahZJSaWm<~Oe4oX= z1dpi7vGeQKJLRYs*@n;6)fM?{L`@iGP=74D+-OcS9q6(^)Mgq03@%V3vH(2xGVQGW z%?$)4caVOMY&{2?`1@jyDR#{J(vuRZ1I>0PelgK8rcwj|086qw&__%lzOe*>VCK8w zPl~d;<)D*8&zImz$zN+0((CE6yi3yjEIHegAAQ!Js^aOiomX)hpf)ryR|;Hn<$V$TJxF$vWzy@w#$6XDpQs{k8sOJygyyfVM$0q8G>xIQP@bOcfw zdbE*Eu^PaBz=;)+*TlRR?P=+kdQR(<44^L+B~Wx=(Z#dl2BY&|Sz23ae9PZrZgol& zl)}dJLecgGE%nz^=^rO$CMGv+qG8fxo_Ni~rx3|Eu1U@hI!vrHqs>Y*^6BF2VB0D3 zrKvS0Bv!R*PDf-am-7q5c|IRBhHFZe&g3Q^(QwD=1x6P`+1AB|>QhoY(|wXZamrFf z2DWr?7^NtLI|hz3NkeT9LhGA(?8LeTFc(n?g4I24uww&f?W`Q}w>;jAy=V`S<5#s2 zaaN? zHO@r_Xi_J-JtW)aqN03ejC;upsQp9egHz`=SXjO{2G;5RK5RrPE@m&SGqiVj;e9J} zSV5E7@1$MByRBIEn79XgMvaltv`^sWemjz;pe-2CiY;s%aT(9={1)X*?wh!yRRWA^uU!zEu1wa|ZMIiM5pC=WA|6CLaj zxlu65;7zG(J_EW6nbZwrkK|Hq$ONDpM&eo7Fa^UCKK!3sZ9Wxp+o|eUFN@dqURjEc zmXhxqnEAXO-!_fg_W zM+_=qs>Pt28ES5T!9}y zv0H9+VGcb#NGB$X%G<;bVyWn;o_+;Qph524+bDPUd=hw<6C6d?Fwyup>K4&5Dy&q| zjs&iY2@4BfH4yd*~E##(fGrJP zta80hy8c)1$xY2@|CRIga=x9C$KTK|w$O=&(gnnwRryHgw1j#yXiPWHGBfUfmV8~e zf1^N>e1Bj(I|#l|Lqk5eS80|tr4$)wT_ndTaRaM6n*mDH*!U@4FxlX>mR6q}sbv8P zO>s0NZ#O>JETnAf*~zsbS9@w$4Xi6Z8m?-Ls+nCHeDRr}rQncg+kKV4tH4}!;Xrja z=$%(hht4e%A%TJZRPHV(Q}MLP95QyGVEqj8B@O#n*LST0nS6X!T*4F#>$&99<7h7eJbU~pz*WULC*NVHwC-qhJN#{ews zEIL`xx~k;6hPzHreE% z>&(9zb}$A-66GYAjsCzD}vf#SD8^70HlWbSTiY@u@*!^ z9L#Gv;FprxIhJOPymO#3r zhIAU}9Y;JZ%kIppzQJoe?LtV?>a-d`EX26$b`MoBCch4K4Td14S~8Q1<~=^vq@;t# z(v<5mH3421>cU9N(DqCEV-1E`-90s=T7!Vv8mb((b=mf>&6&$8u+uGW={{A~L06J3 zQ%ZD_#R7);#iVyuTbZc^&01PJ0E%Yhz*YGQ%kq9Oc;4)4a-WgG$!xjzRxKX4EhBri z#mB}CNL$E{^uirAH{0rg0&H4h?1sZMdmEzgk=ZR1T^uEynG&4Sk&2^YN+c-=F^&6M zypavY6#Js`CVPq6P zcB@pTCUXlabKx22z4V1IF;F8As0ReBwU|hq7$1+jF8PLFQzm2V>wZTn#X99MqDG$T zQj`EIap|g?Z0RlD1?Bg|9%m(?Mcm3Ml6B)*;ab^^$8viH8qpy0Eis5|$fV>u^XQJK z%;ct_h)k|%x)_Ju$#+W-LOY z>E5==-Q85{0fG;fKE$)cN^WKaj>$;(619?J8lvM7DERhowu3BzCK>`Ih2%l^di-}w8#}9>`t}@ z`4BT&0Y+SI6U#_&YRjbeXVRcUrDh0#=Q7I$xi5cPV14gPE1_trdM+FLh_u*RvpVQO zKD~RlW3My2md|W6YNwNU<52(UJKq*%fBRHfUNsLJ;QevWDqvUHd)m$F`iBv%v5#cu z)6iF~qJ?TXB891QX^~wUMxHZH8k*XKM6Y9ZUZGyZZsytCZ-3|4|I8KId5{?m*Fc?v zzU!v5`up$ugA6OUF`e9}zp^COZ(Z?k+I=fzVBqqDk{7@XaCN!z5h_jR63&Nip(H#* z4vPQr&E?YehF4IY2g98#9t>vM=K53D|Y9dhuAKf_+S&Bg-nu5V|+CHj+o^1x( zDQLz)o^Nkn9y%LZ(I%vR(jx3;Sw@7y<6)dkq|y6cyHD7Iln39QV#y5#gN0w&TkB0{ zMzgn-aLbj?THS8iQVwZ@yNV4Eei$gY>P_V47YAA9kK0BQyhGa60!HeV#rw{uv75QP zv3CE0EXtwhA@dSUnL$iG+S^^UjEbT46-@v9M-~6V#lhF^bDbkRzSB7G`;mos$2IT{ zKsY9&eeqWdK5k~PE;+}7aL;NBP9kRz{6?@F&0x%U)q6eo7apSRaho${_F#ofq5M2* zTcpJx1IoTrKrj<9Ap+~^kW&!VBXnj!i_I(OY<+!~IWutel(ktu^C)QT5txx}y^8#h z-<$HjU-JBP^OLKd!*6FTM%zyyw-EyCrYjyehnMqHKV8le?Qz3R7xkfPF5n_xzMOkG zB2k%!sEEpW@!;V5SN~Zz3-=;a`*}aCriE!t+riov{F{X;GuvzfofcnCE&*8KBK8qz zGFvJe*)rPsMCRcn6~I!GTS!8s;_AXJN8LuWgMIUnx{bB@NS+J~SE14EMD&V6Nxa4C z^!QLnTe)g0mN3`DI%@fn2wd}Qb6f3+muc-fJ418j{jMU|Jgm!qSssf-p@o-J5MHZv$r2=_2k%m?U2;!VK^}k zwPvQqGpmiT)ve~|>@i33Mlf8vn?m6rq{pVMhawJA?f{fJ7lJ(%at6Wz zyRRaV*J%>6?a9||#H1O}9FPMl#*DnI$Xc+zZX1Et4n9e%){CRjhfVQE1Q`zKlp_t2 zk%I1AwdXLsS(4htMfP$fs(>h*J2O{Zew4qLH#N>@zH+`Bt)eSRjgtV`yL7PDx1TcX zA+c&$#X@VHZXA34`SSiAHo_c@^gb%+ECh6+Sc>@b$*eP5>hT$}L($ z{X?AnuvO`{N@0QD;>;5VaVB<-$S>e6r~J=tg+pHuUnwyif&+ID42k#_&i^qone^ z^irLBMI>_ch)mtMKczI2r0gPR`J7A=o6kHp*z9OM5EM$C3rG%zqgvm;Txm7m<`4SO z|H)^9y#p>l@;VE{!SeeCo%t4E*hLX^ePlH8&UJ618A zjE0L-zuu*$>K}JEiKO&$D(vL92|AcH@n?q08%)pqZ(ExWeyd1{u_{Z@J(2F@YlD@u zmU`q26%TwliLp*cHl-tqfHVH5{I#J8jd3!oN4`x5kOBU*gKkq~(PhTz>CWom?u?=6bac zxM=RY7^RSt!IVT!4nzf0LY-$DZOHQ6@zK7Udocl%BA^*mrx)O&oUnHD7d6(AkTgsX z@3xkI(8@yl7=+OIFy^Tx()l*jop5olG8)Q%CN_TDQDD% z0jIP)YV^@iTxw93n-ah*!~#RKqu1HvTBqqVOrLkAW#h+P;YzG}w2GU-+d_baDr=0g z_MKkz|zE@T?^y`ud4?tNN?I>`s4P ze?P;Q5r=R=oL$hWujah7GhVu2)#;TQS7U@X`_*^1y1-)5^z8S)hp?&s7zUSDU91eB z5*Q-n4$JU`X1k5>s(YbLgV`TXr%pfK?kHY((ygw@r_rv#Hxv^WEctq~VI50TXsI7Y z4FqT#QD%~|kKEl7hF{)W^#~gAJKLt+A=7beJ;!1AWPYfR>MYz~MS7jKmc`n&ww34d z&JZdoe7&P_2>_@{!Mj5Vq)*e~aUfE0vq6A3vJm3fv}@k^hoV}T1UEJ8q!%xG%RlALYb18 z{x-p608A5TQ+43>YLOY^*i$RI+OOWmQ<@HrIK;=5O@gk{hULOJu~bmo?Tlxpb45T? zeviG#0SP>^09A;J!X*SuJ@S{oofp$EsTyn0(F&YqM(E4Whsp4W{MapiYNHzZjN(?=+V$`fDHSoHN$!9a@@bgXH(u-*Ec#yKD&Jk~e`iG*3@Ro7M?D(;_98(Urc?6^As_!xm$)haCuIaOw9 zhkWC+TuDe}Fm96&D;jNX2oMF?u3?CqrIx=#S)Us9wNQb_6tiv^n30^r5(g z;wV2>E){(MAcLrCU|vq!6BeP>5bM+eC>3$W4BZryJECWV<7sQ^bDWjQ{x zA0`fsn&+e`e2|4CC~{$gc$g;Qa4|6{IN#k9CND?(wGR?)W{t~Mc=Bspk($7P!N+_E z;9`b9wz+8wZQkeXFV=1EgGTteTVvhLM{8+A$S;-Hn9hlSGunFogdUB4fW3dGMikD_ zLcoqo!LuIOreQNs-65!V9;&tB98;n#0AilC`1(j`YHBXrd^0up!@UwaL1x&*W*q$1 z3u4oHb<+7bgXA(dtl-#ZQg0%t&Sdb zhBoC~gPR<~ZOjKJyLWtpy+D-AYRzw_$J_$k)y|D6gt{kKNHBeaIi~Jo zQa_C$@cV^+CzulBsq3ONp-O@q!2m#EuTu@kHWA_0Gm@?g(fdc7hX2Nu|1aqeKA}wg z;e(I0*V)GF_v-WKH-o!O`U`fAyBbG~HJ(|pr6!775M0}eOc6}G?HB!f-;G23xBmP) zDD!5Yw)DMjbcsP0-h8>ex^49TDJ0(S?d_nrPE`zoNAhy>BD>mEmIVZ&>BX&XaaU>y6$S7Jyp~ z#cI?)x<8&1?=5z5hreoU4--XCA&^;Kti%tjnEe&Ot z2!tc=fhW81`T_AWSI^|mOuqIu2`>0F&n}Xn5>liaT&ixw5u1FBA9_o7x5E*RKud`{ zTNs>cb2ILzg}xjaQ2o_P_AAQ~e0fxld*p?oh!P{=A(c)dtKvAE0WF^)H$+544!(QC zBcs1m>2d2|-E^Tp+@M#?^7f`x3whpWo!mSDO|q^AnW({VajQX^9aup(S>WQ7%-=ML z?DvY=CMQF8;ZXz(%Te!rJ0O3*CCE2Z9zk<1!XgO9KX18@e_k0+7@#4Ovd+*rm_`B8 zt(wCnaWuk~UG>qX-*M)jtrw*&K-I{F=phMN*PeXrt9(=>4~d_=M8r~=;fP-+{fDRK zBVBaC*wYKh}65^ zW8-1Fk4G_Iw(O!QcU$HY05xJH6AOumCO08EcpN5USrt)LP-<3Z^Zdn$km(pp&lGpV zSZ#25k7;E#fL_`(5MaY!&m}iq1QU~NWu7Vap@3^|hi?2{!M~Zp5{MJru7`%m zwl-agGq$>4`BJ1PY6PGHZTdXZe=S#s$H+Y;2_4xo$=J@+1ApJ2fA9Lpy)o`x^2qj5 zoF~%-?p!;2_%pAy_3(u{Rnm^Dp31*h=zsmz5w{Vm_fx&LKe?k-oYkdbGvlVy*W9i_ zN`eeb{g#>OT%Dro-<9$TI~6g5mD(AppZc-SL%^>^M`*Jnh( zU>@mO<_n}W&?%T^f`*TQ+8% znU>JS%(tz9%E^rsh!XU{490+cnR%$ChCwoK|Lgz@%jqEXuPlz9d~o$8E)OAt)n8Wh z31^FG`T;l{@3Qihe2#6ucV&KOBE<@<z;34giPRoJ_$|kKGF9b$hb>}%7 z#>{6%RfNqPKKYhk+owzagPcPqzmp=lbAl(1fk2JD9oG`IE~JoDYLI zb5$fqo+bP+mPJhRTgGsPcHz-UEk3(L?WIQ3BCq~IEB@{$@w05%)oU)nnVBV2yc)MK z6(+^=HtZ71hm$BU(V#ze75{SDvZFF0#CE5;`MxMqtjhgAvTrzy1Wbmp+?$Lc8i%KB%Y(LU}^n2sut<&?{>bdNjO>j1ckmi>Wa zp-XcNDt8l^s`Km9ip<_YnATDTJZ%?T(Myu4>2&Ch)_Mkf>c*KWn3&l(ijWQ>*uHXq z@cTF){@xoqG5+Xc5Tnjpbi=ZFi~W_={XZt-{Mr2;*Zik%GJ}Td$?5%Ew^G&nP69H; zmXv5E?BwyOT;ZB&(~z@tLm$6tKG}qF({QyeY^ZcAW#?_fqattR++h8gP%}4@D~_-g ziSM-9xrB?s<7Id8+OAXnB#l1)4RkMKcJ%o$)-G-#WUOlC{^rlBM-Dr@Hs#fPCyQ&0 z0*6`-qJ&>BW}hKl?QFrTFs?Q7#qkTIBrDXl6>MjcV%EDZer18T&)BUT;y>|I@?v|v z=CC-~rjQ4uM0Lkj0J{Nzyiu|WSLU)}M{S9A2{WcMS;_Z8%BdY+%WEWw0cNCR6P$dd z_!Buz2-lE!-+Q-y0UJT9t3gsS0INRK9jO56p_lF3yH&_KBePf-mx~TEVm;@O_=&a`#!7qV~S+lY2;eZ8|K{fr<>-L>$!oDBG zNj7+l)vlH041Mpcj@HaTT5MfTnLEiQ&mEuwgu?xn9+X|KhdZb*SnTTUIeCr3Zf~S^ z@8G)pJ8ZldZ0@;)4OJU%cd*+wIJTpW?jMQMTmoTd`)Ut>$VulwgS)H*p(s$XNRWAr@ITazm>-T0x5|#(6GSR=* zJK8S?dmM1OUpSc^IbIN@qY}_zozYRE0%5IN?G(ZM@PV)=PH?#1e>g4s9+5*97k zboa?f3x6N1G*_y3t$U@rSuj*3BG%S?m|F=o??10F{AZ0G5p_n184nk z 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 z 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 z

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ΝK(l{xs*rCz$unXFW3gA%09tFCh}6(EO)k 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�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 diff --git a/0.10.0/architecture/docs/design/images/control-plane-overview.jpg b/0.10.0/architecture/docs/design/images/control-plane-overview.jpg deleted file mode 100644 index 70b7f9c1269b5b76a0e2842e8680c4cdd381ad43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109055 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

~x4rd&L_6$%P$Uw>Sc)X0M$nN=1HZ@&ysIh-k! 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 z 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ℜVu1O3BYsjg*m~|igJK?l(P>1|Q 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

jTv<9NwGt!?>V2z;{oSWw!Bo#Sb1m2z zH(H|k6t|RWe~bW^Ep%vhw>ez|q;K$=w10SYg!!-M3J7ojqVf{r7*;9JCy@cv6qiXl zcJm@Lh9D*~6+KQ@|57%8-K-!@5v~3mP259FB%Zt zU9W!*#6@o^#98}l%=#rHEiWIC%r8tzxPV2cprCA=;yJ$?{ARZxe-4h*EtvV!s(dOC ze;_k&p1$<#jq;`Cj{^M#5A{+kYz&rUCQv?8Tvi-(v)-HCmXZ}&6tNMEespUJTRw?L zciAaur6#^`!#`#YS6G-z?{B7i=R2Q>DI+⩔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 KgW5HF;<;BK~4icv} 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
W>>*cO+Xn~p8-f&^e&c6N(t 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 @^i}k2s*Ovy?LZ~c_X*j5%p~3dkW$jr) zC%=XuY^c2jwWCNEIK&-}OJZMjcGg{E_h>-a^VWq7XD=^PRRHHzL zfkH}JI$uDT8q*ci{-D}M=<*T0-_>U`BC8eWD+g;_D1XnBOvla&Q^(H! zxH-p}H%jkZ2lhaU#9dnm@^iP1;?;gKCl`B=FA#Z(Rv5LIhDrfoPE$QE`432Km_;nQ z<`!(>aDyq;GZeaPPLAd_hB8|boA6ISnFV_7B(Ly!#<~Xf|5dV z+Qv8Uk38DmIf6V6aWeZMI_W{w$Zc}gd$_T>6EIKN8RvWH)m4j4-N|Y@i?&* zgE?ab9TCNdqL-U5uhz*7q^g-TL~IW4$<-HgY(I>CU!2M)a~Lh1Q+7oaw$`k9*gMQ) zSvu2!Z&b{u3|BcVq>A+RXi1x~d6pDh1ECi)G)PQlAdXPRl&;GO^L8Q1mpW zYWI!@v(Ipz_2Yc(%*h>HQk@EFzXSsi>;NIB0U_=2v0WWbq|HWR{L%N;^9`ztR)q(b zs5;UTx+>Z`p5fHx&C3%U;^p0Lf1DjjYX37W@j2bGlk90wzL9^Bgb zpfcW?+bde*;X~EM#d)v4X4F*b61V&7cRo7pdg8x$G~`ucLVJ*!=?y#XGCI*E{WKc8 zvS0V6S%mg|FaNfREBA|WAPEYcGz&+u!56?w-}N_{0#UWf5mImKr>`8ODI% z@0iums#=P-J#ykw)@iDb(|S7$P*9GOQrU-_AP2HZd}B9^5owuHv1H?I-TBbjdH>e3 z@@3qxp&#nTqvhI2g>IDQ1Ic{!5d@qe*QG?rg@}tSi81O#x@|%(URm7fs8m*3j^PXb zzfTr#5PU6{OKCmdifI`(P+Pxg*tvn3D8}f2;LAXs4pp^(K!NHDgbfAk^G6Lr;YW3K z_~J6)n&?$OojSpIH!MYlOycLbpc)sU&=TD`hF`-dH#=yDCVD0Y`h% z6l2vUcRd11TWNPKz}38gp41xvgzq3Q40-_GrJkYCdddq$>2elW;B(B3e*&md$9Nn3 zEPJ124ak{QeDVO{+_dY*>J0A0gcN{o=71x+lHCg*^Y2Oc`%0-k@EnRGHC0vH@9>pq z;a=4{Er50hp&&(mArzBKx=$J@(VJssSo^Cb6T2xj+U~!^o;v63YptamRcE&NjWahV zBFG0hLB-EJB)bTZ6Iso${nI5P54F^AQTI$;!(kmtok#A@qv}g}JE-C;f}UTjK~i=d z@r}n2a>MK#{;fc{$rOK5TLmHI5%K}4!GOox0#dUpTeehP8}VZ$IoG860U@BVv60o+ z9@(1#m3+YPqS7!N?`gSb1Lbqp%b5yd9Y=|})HX7Zo&@4z_EQ15w~>OK)+aAn{QmjA zBzxahk&U@eCAD;TzGR?>Z-bfd)RYiN0)dEU6?yXMDRu04u3@p_^>ihHoSqpdA)Yn@ zLDnY~^5z7by$Ej$cn;yLiaa(?3`+Xsm{*4JF}-3X&}t@Esm+YmBpMv;hzvwdCTam5 zDB*D;n^k;!K>?jMZOu{U`#hXyH;RQ7Z{oh~#KDj3?O~XXY(7wOp5vF;(hjlitBRi4 z#Nu}H6dQF1`M&S{`tn|LAcJY7{RK~CSvwX!-B%PrBK_%VeaQ;?rx$Z`F0RZ2kfBjD zpMj>Ft~oNfOn#j1NN03iph8_>3+3C%X8nTuINzlgKD6su>yqlDRw5)%Kj8X zki;bC>^+FIQPT6d&etB98auMMNiNjC^>d2q$&H8@_Vgp0QW!#p-_<&K8Nv>rs!Csv zipsp^`wn(bjZqP;bM3{6HiydF8Buy>7KIf!V1f9#MYUx^Cv`)*VZ$`?@%dOm;yCql zfpa?#ot>UF%q(7W)IEoLb}P$HTnjSDG}YihJ#`@DttUI>33PM8A{xD*P=nV1?R&je zkP;Aha54Cfwk;B9eon7Cv!53bU5vu=o(-s^=ow{K2%7{qAmbB}`Ga7=()=Il28iv) zWwo_VlfrnOtq5&RSF(+C&B~j$Ga`z4)6;Z)I7*yjoY6}@5byDQTEVAWe|oxdr&!xi zcVh=>Grh0iA1?tMn|iNLy4$tllHusu$a#N{gAADq+7P4y#9h2B4CK@N?geY;Ic?~0TEe|qtw}n6py{+%>Oz?pC`elh zy4w2PGYeJZ-H?;{i9hdb5}f|#K%)g5jofir%goCC>V8rCc@d`L8L0xHZQ;8%by3N( zi9bP~mj%#89*$9Hq=r{Gq~PE-gBV3aJ#;s#$mk`Y8j=@iI9#MfPzU6rcmwQvV&Mx+ z+Tit>JAk~I>@9MYrZs8*^re3ow@KbC8(hVrnXkHk0{~4Lzx|L=bSI>-~!t| z%N?!}T_(>x=+9t)N$h~F>aNyj2`a^2gAkx3#Is!k@Gt#M6hcHccXP&0B0Y?lyu_8f z0eJJ5ZIMc^KIcOXr=|*({1(BU>l_sTy7I~#{9&D>iZ6P9S`tS8Ue45Cyc0lH%BB>n zz&Q&l6OxK(Pn6dy+bg>A(^_3F6*PpL$;prZrI0eGuZou10^MKL?tgujR zjtWzt9F5@hKh5S@VoHHeB8tso%UB(Z`_XB`ZBK z0|xU-!<)Vr*=?OCWPAbOvtEkhJa(P{rwG!mHXKNbXT9`|nS%_6_~o1v;5<8DYzdgN zXmZRseYL=ScK!LPY8Y}@_7aUJMqvL#&J4vy8l1~|TZ`ly)RL=j-ezZmx4|0olSd9H z3pTriFfr#F)~+pOp2(*W86BzpHGhucGjx98W`NQW9HV2UFnlI`mfN)dsN~MTTaOE- z4kHx@4zewBph|v3u(20EbI4br*;l1Nbmc8c1x@wWxqACF&z&Vj+9R#9-PizF(8%!) zbre$x{WQMvGu@*o0=u0`6cja26=N|az82P)g-zm1(LD?K%p%pdhtxFpp^hg~Ki@Gl z24zb_=q)aJZ4vfVg?5FGZe|8GHytKyFG!ssKxWrJ0W!PdPC;})gzJw?qf;lDvi@Fr zSOZ@8&G%p}8duz)54 z?`OS%o7Bd$XIbYvXRis+9!AXQNruO>uWZdgDGGaw&N)l%genCNJ}L)~95W0+HBSzU zr7rnZm<~va0f`0Q7wIHeK=%OrO%vneF-8i$EZ*^3YZaG2S%3eudpCKX@#iY;C(d|f{5AJk zDy#FL@I@`vRkW_A-Ww?o3VIiK7?t~CDMW&7}%8M($HH;#j6M- zg>)O$(aG7+zR@=JnDobRZmsXYJ3wffG$PdG=>~b6a&)DekLclv9*Uzq&dMVp{HqWO zmHpWw8W&A-OYLejGY2eu@_&&NrjK70`S_dL5|U%Nb-~dKI%4AyiW2C3z_J@J<)wKr@1&=RgHC7qo9#x_ z1-XPBN<`_i_aW8f1Uhw%c&P#lF87sh*GO!Dwu`NXe)N>UPl@oZpi$8g*T8i|8hfX# zc~h9!+0$0X+B@NZQC&R}n_#!=5K{|N>|eIoM(RZ3sHo!1`9&nBGJczAMaB0cWlCdW z4x_GG9spZbu?@PGFNV5gAtG43Oa=&$7N(fjxP`Jsb^R6d=Ha$#M-*1)To=aUZ&w+B@&l%Y9&)?T~#Y@#1c z+!?O^jfhd^(b_9_=p*jOR^$qoH8E9e)t<93Y8+bZLe|NyssAem{JF;Wk)t!c$1}`c ze3%P1<$U(X%Y%Y0ED>MbA~(Evvj1Ty$Pd-uv?emb#%kk>7Idxmm04|P!JYCk9(s|iy0WqY{#gAy z%4+b;Nj6WH=sL)TDHofCXh{mQn?!T7*r%nXB|1jR)2VSj6biRwFCBj`dq;b%Mqw6U zS@Xo%&9+h%C(W+I0U>c!KFx1MX`(PuLxDj_K^+{86i?X&*Ij&V87M1NJf1=rsv)?` zRV3S^f-T&0i9JCAw8JnNv0A))#&q}dFyTc3dU^XlL$Xb4jXnQdAmq1)yh14BzVg5$ zoU(Dp^P;97=zB-{d`|yC5m<5ycmMrxWURsrpU-|mr^+khUN(BgK73tARkD0+%(f}!l_F&J&RRu{P<^;s|P`-i3U&Br&7Z@u~Z zkPw+qW#ZOT^LqxcWK2eGndG$vw8ahinup_W@hz^-kCQYwswl4Vq3iD*uFpAd5aeM- z`31SU7^*IFVyBTPZRUVf< z2%AK64crW=6Y)Lm-yf;Del<0@c<-i7H?P))24FDI3+jEi2HJ1cI2m+8Xp{9rij0v1$g)S)W7IE)%=hra_;5aQVhy(spQBuc{w`^@TbM+Fwj4dHb(CG~lJ;=Otg$5{ChPgdh%;wi~QB)L)5;Sdq@Hj!7=?;f0;f>xyEQ&vg=M3Rzo z3yo4Bne7#`!aSDYtZnCc^Y(`164nv*KeE;rs}F`R2q=`e9-S(UWG%YNDZ6!PhBDvL zpsm30NxDI9ut6TIIVgCITyN!miu-i_pH#_{z3T%JGQ0BTADZMXGc(0!8}g?WJIXUe zL-Z~TA}l4ORw(6^_HC!Y)M8>)Xc6s0Z?L6kofO5+jKlaHst^vx(i-<*l(rMlE0-vbI%-H4;j^ZDX#A z(2tsryq>_M)&G2C>O2|=gRYVcz&T;ag**r20uk#Ol6D4O$C=65SMf_e5CckIMqPhQ z_WVy)NG`Xrn-XGNsXXym8rpd`9yO;RUzupD(hY$_-Ef;FubJOXlQ=!?OUAr$)YA-a zt6G+ccOMJh;u6(%$5yACSmKErvYc}J_bX!$sCvUFaF{;o^Y@jsw`%2fOHVLPyEBnl z(ldQ(G9=B)SLw%)P^te7YuIKpaY-WhQ zuNWA%E;zlji4khWb&EZ4{#bvoZ@a8h?7_Jmh=LqMe=82DD z!F1IJs1(beG9IhgBtPH!+%#H@5jY9HHb9mwA!I7hX!f*s5EgDAZF|ter#|;RZe5$r zxW+DvN!)TWR(o4I3Cr1Z$iRqpciO!hqv7P0l$Tg=b{G<$R3Ga`O!lix|CI~lA(!5e zM6^bXvYn?r3YXCXVsJTw#JH0OAyzxH z1g3^_-S2gMxq}Szo!OaarL{r^{_R~zSj38S8Y3eEGS7H#=4~Yt!JmzF!y5gq1Yz16 zW|e9P_0V)Z((}lz>D*`Vo85m)!W~*S~hI^>7onS!qr#wN~cZs zQC>!t78^p9LhJq;6c17H*)sK7q?eNVE?%Z|%k-RGDqMM0 zkjBuB25W9jU$qJnY6%g$LIY1>XNv*tFhpr-g9QRnsz9(33()JM&-1q+`4$qGuFsPT z1;iDTDj_Y$nO26&)E!$bb{Tsrxmjzu+ff04U7~egk|2AqXcZ#Qt1uc+o~2fz!IgHX ze7LOQbmFM7GMJP*uj0X8c0E+$lmCVz0AGGcO|4%2$_gT@J0l{14Uz8&i4ha2t@Ngv zatr8;fWX-`1wnfc*4xFC5Hl|NBV2T053t^Uk^x;s-~SUc9(RApwnu?CZ9CrKztd#9 zc58kH76@HB*+e1RM;!BgU!J?uEj?_OE=MUnP_k*ztFg6|g;@4-_v+WkTPEGrq8EQq zskOf(zOzFj#24o*bf%m3vJpf0cIfKXB-o{vjk9+d)xAxVWZO%4)qbsE$#wjb+SSEg zwK01dZvR55&B?5V{V$k)LwM(j{So<_q+^kKZ?|_>I8g-NC-!?!Tv^Y0l(`X3Hl-hqolC5Ph*N4Ua8HjjLx>s zdfX}f!sq|qUgl!MLzu_|vz%&Bl}YZg$|dR1RnSryIA;J5-iISvLD^IYC4!eur+i}vZT%}1RZCKfhB!(o&l`;aL%V^0zJw=emgo25tlGKS{aR-c|V zx-wbd{QBy`D{Yt(T{N_w^Xaoy)uyd%066HITi%yc!-U4NYvYjYjXoE8_C^D|)vH5! z5PYN$gHGvVEKBoy8p}o^l8c86f8E4VVNAAm{!uB;nbi!Jq|98@umJ~LAwzqOPOHAT9;4Vsg`$^cgyZBE_8sHMn!sYpICYP3Ht z43Wgg*W8Pdtj)aktnoU&sgi{H@67E_FWpvsKTvP=Qg`IT#0*<@=)PnLX!2NhpPaO? z0b|*&kLUnlUp6CNIz{OQmYo#``2+={ymA3e;nLqkJL7GF*q8P73nnxv@kj`Yc#7Vf zk8kQ}{Osxdu)BI)`=HhnE4TdeP;@|9Rb29IgUsSL)>bwUWb0g9UMGTzn~6|s@HMpI zGI-{km$S!wQ&!%nkesn!OEo+Pn*`@UuZ&ET(6u&$`YYF4x6b7DWVyG0nFZC7hYJ_i zlQRRZt(_g|(lVwf8eMQ2lh?e$q~meEQ?o)h5An*u$Up-e6<-K$<7-^W^NEh|=soz? z4X}Gjamp}z{+BlWoTUW?;*~Bbx@-OkqSIJ=n!Eyfpa$@#+dN|W3Rw<3=Ova-w&%Wd zfqxK5VcoY_dIJUoeEVZ=uf|qOL(qp(-!19gt&l8I>leXJ=J_2y`6ejhQne7hQvR^{ z*lfr6+i}Ub3CP@tJC6W-S5aO=x20DZ6Rfy*$iowh=9veNAwj%{kT{s>G{)KX8G@Tr z<2WI$`BkQW{8ml5K-tUK3)XRLXG+3y{B*xkaxAH_uYCB%4vOw%xqb(qcq z^D}QdJ1Z+V5@ZW={4@ni%aaN3{d&e^?kg0tJs`!fj?@&g=?4DTHl1hivO;G;(yOx$ zUztVxg|uAJ(s(obMKYspJoBhoo%gJKaZbSct3%5W;p}CaE;sCTVV+=>*Ta07n*60P z+PwZCH3uU~wOHQG`QE-k4r)!dhiZs;F%_}IKWgOHVQFQ;NeWVa@HLjy$~W9 z`Z$?Op^#0}|8s$M%0AWVvVJ4M#W+P61{ZEw*eos2>>il@z>iyF;>hiC$asTE<1A>E zd5dm^3X>!?L#ADSA>)4o=&IvQ?H31d7nkx|U>>^_YH0%UAHFpHBDE6cwnJf~LEp*# zl!SiRK_mBv@%2VrxTzW)c~b1#C6=!RkgJLDk2ddUX6dBIA@P|Tv;+*HFD;{A6$0^um+#biQ8K!49Va@mLQL&%H~D3_{4|B~^}GR+7Xf41X1#S_Odz(|b>Xm920eqOd`F;)+^Q|T zBzIzk5;#Q^g2kc}3+ZeRXcJbo>qh;aZ=0eT%qoEpN^H z<$mpai3A}Seh1FwpWWBIVHWG)TFi0<4=hb6i$3o3mtu}ag9+1&k*ilH4zSgZ(Je#R z5HbHaFKby|*?+AWp5M zivkJ3LOBgnizAeULzz}OAS@2!&*R6BS)KJw$Wng@v}cROb8#1MOV0tI5b;Ne8A-JE zAzYxPF5bP4Msc|F^8D`uwe+cfM_f3S-WeRb{C(g_x`~={v~{R`L6cH!W4^sl=!4Y( zWo1`3QDGOtub!g(%uBLL18X|R|)4^n)FXBH2IY^mOQSN2%#8pZbQb4^)t<<*ld@!gnO zXY@!3Chw&QgJ7sYg1$FB`{1O9o@1$GOFQj%XYRpK58^KJ_{-5*X8ffOA<9NH=80;e z-9Tg5#np-s_MeR?l(w_2*Q3_S#rCqQfrv$F?3=b1@nn(EIK6h4D`)ez8mIT@iNQhMIgnWLMr^f7&nJOzzo2H@UXY zcq}q<#v9mKZnBEIzM3R14o97JuyR=XB^fBiC{b`Ign0MRuAe9V+Z}q?XgL>F zRDIr@W-=J@({H5i)kG93_M-{aN{@;S_2z-rUyCi((w;ifg8x|SPn(LQ4QuT`#A&px zV?LK+hU2&OcEodr7{P53ACKYmT$yR!H6lq{&X&Ror{)TLV2F7qcTnm3twm355vzfy zKxWiO&H*n^-W!{VIG<;M2Al#Gp3=)K`&Ecu|OSR88f$I9w3 z?$f}prFUb^jn0f#^qhuL=@|?@2RRKnW`|x2W-Zv^y<0K6My`iy9b_(TsF-NNK4mt( z7szBdR&lVsL7C5D-m49>^whRNd%Idw_NLRuw1b;Xee(E1cFUcTF)1x0v%bChzB?wD zF8R78k#+{G+pSB8+suuK^= zwcKz6a>WEeK}AI5cOK1Z-uM0f_xtnZ(lN+e;3;ajK&6I)Tbr zkl+3HeT0%|PKxx5sG8TZPf>fcbBMYI<`lV@vCMCUWhzufzo=RhRCv{y@5rM1&ipOM zb?xwJMi7$0dX94jgd1hNZnu=RVKe~Wip@Ri9IkL_$!Z4G`(`0T$2*p(gO=N7SNr?* z(IN}`A1g{xDScH-u)e9Q^_&Of8Wj=ui0p_#9-&N={*s34nQ*_hi`)C1#|h^*Pr$;) z)tlZ3X}6*#j&-?8U;QaeMpN4`!wxiFd~>&hmSR_OF5rhu)hwxBVl39ObuYuOFxE>% zCtWcN9ZdBJIQUZ17A}=DsZ|^N4$U#DexlTyH#Fd$zAwfCZpT!x3wAN)KTXGrhy9c+&Xec?t|;4aV6X=QG# zcQxTvj9&i4rQQ_u@v%2LU9X8~@@SC&=~z|eg5081y_7Xdm*jJ6yCh+STRT3}{$3Ct z*)yCt1B#l>d$%M04!w3a_9 z2vG-L8=Mgly;)S1V^GaP8og`3ZYJF8F`wQ+OBOMl718?T69X1^PTw3V`ToWU=aHwH z8nqbjwAW*lr~1<=nxZAsL4{1KmUxpmle~)VPo?z|IMd+~?u5F0CTf@H0jFodH9rQk z;U?U#)Fk$hglptZPg3cTrmOkc<7dgeFCw^@z~@0NtlcHE`RMu^xL|l-0rJ-E>49q; zV|(IUi2atH2@la;(q9?W#eh$XBUGHXq>}%=je6ZSgnfJ(Tbv^BHYoTX^}FKpMirgG2(5KZc+!Tbdvfh+1+9X%kc5pP znx0haa^n)l zyG$I$eCzj_Q!_CgF$lM+GntdqI$R+dsx`VV5jQf75*d|@e;}Gr*5d?JDHC~qbV$cw z4q&R31$nyAe9ojV2qTQ({a_69SJxIulM4T#XJPhU4!^>oKUWr_Oie zCPYJ`!tZTkPx?@ml5{Hy>RgL0wbYy=o}YW z64ZjfWZ;NrRoOSH$ZPJd58v$mNuLQbObL_G>U)rVXt;gkxvfn`Df9KnK#`lFeg%tj zClsy2doc3mu8ovb^iFUGtP_JL!YnV}Zx7mV+X7w(bY=WJA9zhlS#!yc1osGh<0-nw{g!_Tkl{ zlU|J?3BDC1>6mT4df{szll#eMetal&LZLBaBz@(;yKAPjxKK{5gjjknT@}sxL{|{f zN_uJ);B@2a0S_mGJ4@gjcG#-*76 z6Y}9tnco|vGoHtUyeKyLS?dP!R5AHpB0;jS!wqYjWT#)|O?l(;?riHTCE(uxdpIKw z*~8fkQ!fH~);K)vQ7YmtHn*;>{FbQ?_jBEBb{$CecK!8Qps7Mxh28|JK6(B)tZ^;g%)F0v<)tYn#nQ@@fukjf=4(j0T#} zRbv*BZLcdd6bL${yg~M51Q}FU8*h17^|8AaQ{oru(~*a#?h=?8w=UVtPOHf%S4~>i zpcq!ljyf1`x_7BEs{i*}Y>5nYLPA=G?P1({69uGcTN$skjYoSjFgse?wd5lo^t;bO z0azy3@y%b(atY&4yxK?QjClr+4t$h+PNhXYd2YMH;*u4}NE)zDvJFEb>8XD2?^WmB z|2RMvkqZ__KY6!g-$mcGZ?-B}?BFQ|w&~f_j)~~c4Ks0_9rb-yH#7#lYp_@V)&i^%@(*?oC&q3V(Q~V zYf?i6xX)uL8tqFfcH{*ITkvY>y28rIhA5J}n&ygRc3@Hn`V7ZO(uY$ex zD>DP^(GSxu%PZIwy?A9LK=)F)mAX|+S)^i#pwQZ^xIv(7=koIU^7p644e&6vWXM)- zUDcl@3>Kt6AC#7jrt)gkXrc)t&qJLRy!0&2hZ0(RM(}VGQzz)!=ppYA?xC7>6S~1e zI9f)e;oP$(x~U=SMX)GeG?T~rLln#xX`tpF)CbwKHOx@%wfc-91qREb{lr#|5VvH0 zJqq$Eq0a@slDhL&yPBoN2iuwvlP<&_aNt2l3Max@>(E2kH*drJ*MrSzet%M{qjYGfua#V z8yiE$?F%ngm^a?CWTQ(6W(u`ES?aH@p8rr&xX+F^)cAa(Jt9Vg#$#(7Efj3ImjerK zwlw(WlRe5+X$!ZuY+&q#J>7PvL@^kT@4tG_8V<$Lr4iRjuxGqD4y)BQDtV?aoPi|hVBxvO@7jU@0HNNn&g%6z%1~dktOtAkGT`2rCA=`jKz=*$d`4g2 zPZ5pIZmD9Y|Ap%_a_05wo$Twgv2is=A}#ex_GwfX9%{D2HZdGRZe1TQR^xwc*0qgHkFQpsuC;RmKX1??{v0^btGnXk}VS+V=AdzJie*7UklEJ ztC0g!+UrPw(*br>TbdRM02AJoYmLbpbc47Pr}*fnC$nyIC>*;dU;EEEZtw zOKBPb_n1<@i%DLhj(FE*ZqUPogoD*gUJ~JK$`N4E4wE2$>h_2-H@gM`^qXugmPT ztJLI=WY+>^2sR^eV7LDIx{np)c}~wzCEN5!IA6^`8a#oWi1BeT@Dd6*M zsgKv}jJh`e0-q1_cd0)kopB1*Z|vOHAM0*)S#;db%n)@mxx^^NMUabcmT<@gKQ##< zS2^*#GQ&@WTVvG}&JAmwA=?|mn8zfn7Hcb(dhz*dU}0irpKp2of>vlSfra%X@i(pU z4{QAU5J{^!_7mGPq@9^WlFrMn^tw(N6}No}eu6sBxPIKtkam)+k}SzyQSlx{X2UfdNMgTj5Ir8?~m-=Ap-r>n@C zolh|6S;&s`G9JEbmHXjnHj5+XM1;h+2th8o?>m77#LsnWQ5`D<{xecl?6d+Tp0zJ5 zt%ZdoENa0PUVu>AEjlB1aoCvDH)@++=pV>Qdg&HAHKA#0hyz}u%<@6{`JV>~Hrq4v zJEx7!)SVk@Twa?KCnQ$t%`#B|4PJ0781rH998AmY+|$@#w~IbK-($=c=J;+7A(qLL zDHH07<0pKFxo!@jzk>)8l0PVd3`?^uF|e+vW{@9fEsM(CRcQ6Sk>*a47qZKKZQ+q# zPux(6M5apA)hbn4TEe@hT?^UE;%5fL9PB6F4QrPi>~o3pJ`H^5$1XQJpEEl>PlE3R zG8}f|?B_ikH}c&Gu+HL9=d?ZNGn#1FzWRn8gLmj0r{yw|N7B3RVK8L9!- z7Pz=~O+SmxVWi8-;<;Gwbe1fr3WhG){}R|{=n1$9PrFwZ(1dX=NJ>2H?x`%yyocEK z<2&p9&A32kW!O=JZn#mSNN+Oo0vqnSJ(M%&Dc5Db2fC}$FNk3eLan=2c>sR`MgykT zYHRpd?zRiL2o>sDj18w50acz`vnOe;_1ar%Ll5wntG$&8$@aXiLM_RR$Eow5u+Fq& zde)WMtR^t2n@euzSLTGe$&7v2lLyY<>uYZf@ltEVFM-9~c|`rZ3$=eCyR13Rmzc}1 z!+;AFckpFxCf%1PQ&5o8QcnuRfy9qq#`ocg#GnmQ3LrrG!#2*jtyfOr96q$Iu0-^N z)03PBop+}^x+ofyJ%NXijNKDkZq;eO_Tcu?n&;7ep8a2z$f3aa+O!qTXZ@XKYWFxdFTtj7=gv;*gg@M>b~@D~L# z8GB*kknzye5MAeVNhxu?JUrVct(48w&vC1FwQtwSWtoJDJ%f~Ii#6#aqTKM)$i~_D?=vD|b2BB_ znj+nW+xIX2yaod-P1tIwpU}SlJvgt|>ieKMp$D@f+I|c>@%+P4B^}WNO(_(Tk@i6W zf21{r;(T|Z5;95yf`btjFql$r4r|4Uf|cLkg{)XT@rytzH;HY(xARO!d@$?vwa!=F zDh2lG?{rmK`f;Gg+;~NDg=5@1-Q3x!k1uYM;$t>QtvR0W0RLAY)2J4V8{#{HtTGIB zF{Vh*NT)&`vZ zaJ^8PW@yynxa96L?RiT3-kv7~dexb>!8x zjJro2xoBeSD8VE>P&3f$dbYBT698GD#M=l>K*bUMHEz*MP1a{5#Ursa4 z7vIa(nP&FZ?&Xt4Nz5dS*-kBWKC@c0QSJ(Ye<6RYDTkEPVawKis&vF92jDVz6N&Bf zGOfm5wFRtw3oa`dzwX>!GgZ`;j8tLSgbt8pfD%uKWF631S{(WFNPbMsQdXB(adc&e z(FJ)YMzgLr|6lw?D>;kr>RMmv16w~^o#N^x841TRyxE`l$uSGJ+_ezQ(b&KgMKi-g zI-Ztn--K2(uZ7F(XRiRP<6WCccZWg-A9`Z*i8qmKcgzwJtLEr#CYT#!D>i$H zzvv4G`i@*j`TI8MA!;A4m$Cv4gd!2M>6<_26u>V&W3qALF$LI)n=#m9XvXkq+rX&o zGIF8UvVY1L#fif%-2LJ~W?rv9qk1x&40O^Do8;B?*E25z;~a6Y;~mmAqZGJ&gD2b! zZ@DvkogP6y!LOKbi8E0qE>t!B^@T@v@%kpF)8E`R-jXme-s(Rli)JZg7t_gEaqd=1!+AjMar1KdlN%$| z9~8#j`0O-f7?sT$59g^^>0haCgY^Vj+#kdvlnQ*>Pn~*%K?b0k3~~En(hT#1SVC=S z%3wk(&d?PRRqpe*hY(E_f0QQgV|S`XBA%Ea^5XI^cD~{8=E$8!Gc7*veT3+rp8%++ z`1gxs`e~*;Mc!*@#%H|PIZdzjLX9`T*g*P=O(w^w%9Q#K3?4xf^M8$YR!MLyacrS3 z3X>eqnJ)Ux23a7x277$bCvzc%#Qd0*e-}p(;fBZ`1o0V+0kIMQe1yEpWWGTQx2C zgwLF8`wi}}B}}g-{mm@^9}(v1knY({Owgl8rIqS@=g)oj^Nn(b7wHUE1E)3i@!Du? zOH8_>gx-^&0(b?r`uUBOO-^g5#0Z@tlRMyC2$89kpqC`Y=aN4B(7O#Sd zrk)SR2aSQe&(BWn7|rb0Ze;~wjD5zZyLJ=3tBraKa{~r$sOgTwB_$LBt`%8ncn#>! z;p3Xi;0|=FlE|{9F;)9|^ zn`S({+w80R=KjfWWp?%RU=~Yj4Xltdzw5xV5_9^vquBkh5A7PI18%iuMtcwMfZ-mP zzYmlr1s8dtW8jF>H62-jMN8LRh=(;%o>S5?m%D~cR|*|I=z zwn(i4d3*6ql!slR!CA;Co1 zAl6UE{I2kKjs=Hu9nyS^16yYmC-D--)ALkZ;>lo(!Fq7Av7^x%ev`pHy|1N3!YO9) zkOB8GJ3&v)vTHr8&VSGGN;c(PTK7QshhQ>sx}ZD+Y%XOt67 zy$>8L^A9}Cc&Z7-z^WNm!0kV;MIu%tm9Gc z7aB+l;`CL_D4b)w7^E#dbB|I>e4_WgKd;Fuk!Y#zg~3XK?$4m z*xd90yVrbUBs(wdA~j#&J;7hl8-r^H&x{G>bqlIpE>-7BEoRdh6MOx74D?@xT5u@7 zO*~}~sKkGc;Sb)LthJiX|6zAwze9@AR@nISLt}NCgwkL5Lpx3-zP1bo&O3^a13;%V zWz$udJJ4d-V>z<|BV!Qw@H@@gw~r~R!ZPE~Fl&o5Rq4N8i5V~ldq3m(NilT0A^sRq z%sj}*ONi!Nv8braaI}z@k<;;NMqYxy8z!K!m3{*n&CV8SOouCJ=L~N*mno4ZuG=eW zq&Z3+Gd0}X>-sxKBy=xk-uYR-C&E(q7cbId_T<9+v;HQcA8V(M@T7f)fNzmfe?NRN zFp$M&P4EX=<|c&Ob@%s9wezxg`RM}h#Myz-;t5dJ@B+_u;+e+6V9Xzu9<1CZa(jD$?3Js)CZEX3g7ko(O5`{GhzJ(!o9fOBep3s@6$+u!yTP>qQnX+ecTxG$MoJk zjR&A2LtQ>>>BYX|bNRiaMd%;8BTjYgu0bEC`KmQLZ_QK1=~WIi;Iu8oYFL9s*}6SX zl>~B^6>MjF5@G@uw81A>QILqEvECeGj3ciRZm-xT3Z2!8N$V_Q&;a<$^=8&Eepi#< zriaZ(Q%~FaFm+NCHB!yLTZ`OqlVy}MP{Xc3c!%1-?G4~Nm{V^iI9KS$X+UYTfs@SM z-HaB5FtaC|^}?maU_Dp;UskO+KVgZUouQ|~*7xu?$vXtEgT03U(zqm^N|w#IO5C<* z`QX-&+&i}5>J|z>AoFhlj6up&Bc~_gOp~+4?t*ZXLye2YdJp?NTGazd6VocllV1Q- zn5L@)w0fAq+FfxIPCd!0cth+&=KR|~fC%s!<0GpKy-H^%7i@~IIrwnjO?W*_lSi6z zURFicVB2p>G*H2LAQMG&y&6T-J4blPVqMHpgjfOERftZn`p*9aK3tcuB&fwM27B9Y zj++qFsD`JtR~U%HoKoI@PV#P_-x>Au@zS}yY3r}Lwr^4J(44@2=XBhydTd-17jTfD zp{mrZ074cJ)pNfDCfd(X%fc=4^AT78C(uZXFVO3NVi}IuIPQTYqi?hNC!Js`={G^l zCC(MIJGGKg|g`66%@8`;hyXP!+N#GCtwZG+Vz zQs<)uS9JW6lsc%72Y4-5XAAjiSOSUO37oU1m79|5`rSxUv~O90+F zu*>&WphwHrE~4fAc6|8T*og~$9Gd6SlEs-P86uMM=yCGXzq(G;v*-mAYv#jc(YR-5 zy`gr#ef^z1Y7?kMD-5RVW<@nitf6(MCkFF@@<8iU*kp?0FMkA5&Ldp|C(-Iii!_(l4js%OD0nEPN;OG=&O=8Ibq93_svew0g<7x~W}*vZ;zs%t zUhcj}$uq%edx-HT|Jq3RkX%sivfrHV(AJ86^DK=WC##*nLjZ;6^(PGGq5b8uH9cak zwN2ZKG#-l!O|mcnW>WoGth2CnIgL-n<3I>4srPKw7z&`9&CUV%gfd#P719D+&ek}< zGh4{6H~p=)^u;T-Sf+*G@^|UzU+o|@jx7H9##5!O)SkZNG`M77l$_Of<9LaB^d@;r zfFr!159jNu`?D+)m4FM)e;OZYYnwmuDto+@OmRzuV^AZnMoO(4cyVTDslxjsduWv4 zcaNTth@nqF^f>ei9AYZUewMaXQqf-0vQ^NXz&m2>Pr;N8;}O}waV3M>+=UWel?R{W zsXvjA)~i^w0ilx}3PB;uhaBfWRSkND(7SwJQV;RrT&!b@y5f=9neI7BSeWPUzfqtz zis0d)ebWE@T&P9y+^3O-&2TGm56rXrxQhan%_75nb#tBD%aJ}LdAHUj4*=7-#{nos z$2&MVBTe;TgCzMY#&)f-K-0y}2KbPhG(m{69)u_pKaj_TP0k=Vh zK~yGrCd%HaYXxr(rcB=-d1OQjrle8)2FJ+5AjN7xhHtiv?$P6?WGE4;)Buf~&tBmq zYg^%vqVuD0BH>x^K*AafurT^_@3QO_jmipNozbIZtho9H61#yp&0SPHy1b4~w*b}d zA=RjNI39SC9#IAk*45$nCB*!nu3FW`vZDaP0Hlp}kpH0Mlx+Rapt!EP*ZEu^6Yw$= zZKc5-<*nV_)zkZDZ(GpIv)A8)OMVC$7Iw|19#spZkQ#Wvyksn$ZzJ1v$rmAe@{zBK z@-AFgbBA9!tYNK7Sg71;WG}B!9q3Z*V@xjMYbTHays*U%$&-!1Ik&x(ylvSvhpIKV z@8~gZn1$byKvtDUx46GOT(X~ILlKS- z9dJa1Be5nj)QbwJ+s=TPP#%nx1W8n6AoqG#8_w>M-|>QW^QWa%>2Llrum<^Yi6E}G z=mPUZK10aW%jdaYYcNtM&S9V@-u0T#bAiw4++ozY-~ig>7H|6EPRZwb-T{ywA_*Tud%Q5C0O+) z_r%1zHw^Bx@rq<~7)U*%P46Q@boe~?xap4AJ+wIHk)rXjxxY1HT^0HV_$<=eQ>t%H z(uylL4xxz=!$Iib%J{Cb&HY(+wiZssf~^(VEUE>(On$lIp6HBrmc@_!guG zW#DA_ZHK%Tc6N~ofEV7Mhmds;S1;THxnU6661B^dRzlnSfuxt(-$b@9gQ@9ywPG`> zE2&o2KJYaWBJN6xhMBsvN@-7{60&ArFZ^GWuDVuF@|FhV?YG;3cNB_Vv5qpY>nuM* zy1f~gD!+AiKx#y(B-+hD|JZUy1h^64@xv&H zYFV*yGDvisTg{39M#TTUtco6&JxP6B)$I85nOfZN-r*E0Sh{kaT3 zOTYfuc|(orEI7BH>ifrCnD|-e9u|};JM3)9fHXG9;c8l`W2%DJJsQKugCHhSkY@oP z%-cY*Z|biBZY`L1CT+EO_;^8)$zcG@x1AuR564mFepI=anE%1DI&n_UvAW_xj5^gF zw&_aLjzkrZyFDG{?g_DZ?@QzWN*dn86?Ox{`dB?fwQdan>3)Zd6#NLS%lI2n{0f(j>6lw#td159#00DEPVd+6u_SB?W8&&cKB6*)RsXBIX{B;o`sZV?}e?4YIKh_ z#ReQ)Ng|DgxP=PdX!dJ&*&7NkK&cLp01jU2>{g9h(Hcg}_`LELNXqH>ja@c==XWi& z56{WQiKtIXz0WSq2OpXvZZdF*q6ApD~P>%8K-SI5sB1oxE=$yU9rr= z*#QJtq51L|Zm3WuqjW2U=x!AXu$WV#^ISIj96+}48h1jU|JNkP9cU_H>GSf^6W0 ziE9F2uyt3)yQ-pD<0CH0AWsYebC5BGhFZ7n^PzyP%LW3(AB;gQ=zaL6o%_~qbu)GSUs@`)K}NIxA_#6ll1>JP$akTp04ohv{1So>4SVq8 zYI^D5PX`t!>kmYU!DgYL@gMZ*3XRW>;%2RW?HnCJ35gD6i05CD%G4qR%K%f)zR&(A zY}0QD;bMA1BP=XP>vXiSdhG!n{vX|{K#l;dpu?`Bn8oQ`2gO@fsj=_Udl#}lvCpfE zuHP0x^MTo({|qvRiG2z;T5>aSh8-6Iu)Tf$V?60pMX8}%@7?8yCBTa^$~_E82%teN zW2qsFNVinf$uDVh*gE|$YnIwzlHk?l3j-XB4r+oO|HkSnxyZ+jG26QBb#0%4NB~gv zWpK`Fr=v^^c}}09LTHt4d|9QBi$hdF`GgKEGc@XugbI1T$+A0L;+h-C|I5uQxR%9n zI{}?kE07)&EOx8P`~S+xIRz*Mt1JHEo3Z8{y(wrqENtl+NaIBT2nKM0z9=$9#|sGl z%<^fY&R?TOVa$>bsexp<=7ULx&$~DNWvtBo4#k>nSO>~57yO?FF1OoW1@``rMiLz& zo~$Y_P>Qguyz+isl?n6zl!;$fDFO#Gm#>y|2zFfbKA`0T$gZj^3qRz~zEZ@5&W*-F^G!aRjW)?52UL>@X0AZh+OGO%%@uQCFt3(EqM z+gtmR#X;-@IZk84BU%7WE`yW?AP@im6%Deg;L-E)%WgO=LOZKYTmutAEUtfN+CcVC zu@i7g+N&1|M*8U$%M2b6nt{3nKn4M0g{4J*Q5|oFlufwIiLL{RBJjU;^))xjb#a*O zOGsq6-v22wcP~NIsp@G`^)A~CO=nAxB>igqobr@DBf@oIQ;|q^|88F(emQ_OK%y(0 z`*$%>1jNFD&b9SNc< z4&NM1EA*z%WQ3-Juipwwqt0|yp@)TfPsip2`p-@nwjsg)V82U&-4652Jmhl@Tng!- zH8=T# zBdy$;0}wIcrrkdUMNl&~uq(Fh-1%;GZ_hWtIRI-rJYKSFUCLu9rvXa_R%f|NI?Z&n z1)B=QIVhiQR22l5(Xh7RT?c^m6^N~te4RAID>rnTdp8nc-aarNOc~{we6}}V*k4~| zCv4J{K<@gt@dXVvyxB-Cu+w?}m(&Q)LQ)f}tpb=0A??dF-<(4pycKbT1^x7Sua6Vv zL`#B!&>{e%qO^d;;Sby;y||4zf2B&F|E^P$PQ8HmB>a^-SV^jMj=L@e5`xcdA$z-` zmc#CNpyWO7i2Y990_aw-!miaj+KyL%Ht8uqZPhZN>rV#vh3F2^0V<>uB>n-}Xryo} zK&#?;If1j*Zsp$Sszn>%7cJYO0%w~HP2iUTdCIK;k+9hIO&~vsSPR4S^4{aspq$;R zZJMzKwuvSfwE+qZf&zgy1@SzfI#(U49Ek!1b!!A)?=oQP06KwEi7Qz31thTe(t=H} z{-%7Wk|~S|atFoz>A-XO$LvFcn%fqZ$L#{{46w0rkzQ^g?Zpzy?3k$md^2q~q=`TU z--@vUT(vKnsLsjvog>(@=3A{?Fy4D+=wIl)dz^{5RxZW`5T7|*#YNo746_9HD@K51_kR-^) zg_xp*w1OT**o$T{^T=q&U+*2a2Sgbk7ITQZ9_IAu+X36Zl`0U0 zK=$opH@=x|!JS@9QdL!!q5xM)$|3Em*2)~8pCudp7R}EG0I0LewqXD9zYAE{P1L}n{jZdhc$g8s zD+9Z3`$KRMTdq*OeTq#)3tR(OUHQ*nEQJbqR&56ncC3sZEql7lB_Ahu?jd&CFNNU% z=*oFBG4hF~g1X`eZfB@X+UP!kjR+l~g_ax^1rVKeT!voQ-Ch8tBPUU%{o~gNWN8}P z=v3YbujD?u&}^ptlAOK5<&I9(m^L}Z2v<8034b8uDW8@7| z+lr$QU9x&t2Vf)W4720vY3a;E5C<2bQvjwmQsk&AqUR3fcg^bA`I!K(&ypvzti*(W ze$^2(P&Mi2?C>(N?>4|T`{}Zd##?@oLtUYDzX0anr{OMMawQnA>VzuVR~`T&UM2jN z%|;g3FLCO>l%7KGc=63X*e=Ha%UA;@FYKF>j9DIQVehJ^3RL5c&x}YwQPvx~_t_DR zYs(k3L(>lnU1jQkUmS7)^tK#uPP3)O2$Q2A`{$mJ1Ga&ZxCt706YQI9h|-KURI7C9 zEtmSy6y*((U!lmn??Gos67=3W*r4~;RWzL_v-iwWm4W7V@bAfQOc3-Jpm@Id%<^CEKKi<` z%YWGP>({Ga{=>obt5$LOS1`y=-)z$V23cN#|E&q^e{ur*-`RovPoMlx75x8F1zO21 zE+wp=SImx+`)Wu=1Gj;P{^lXE>!`;&17A_wQCoITmgvj_DMd>jxIbK-%q(BTx`%{d@{W-7Ba^crJ+KP~ySW->EWf;I zyY1F>`T;|rR1>)8WnW`9@anpUgZ1H~_l9HK`SZ({XtEA~QeOiA@D}l=hexPXPLa1R zXA0lE_CH@9IqBHJDe7=A%3=A4!7`72>#o#=9R|&5*g?ckw)(7(e@VE^PhEv40*9+? zwdQH%3Q{}F3@YzCQ*98yi@Tuq?GiiH>43TSy0;l14P5#dd7S_?hIOvin=OBQ`y=YK ztT$tpe^*uE3gWN-7~#0?Xm-WS{6H1;b`WJ$40e3-pL^g&yNzQOHGfQr)~{x9z^?j# zq6>D{;x6%|lZ@4%lJ33~~*`VJ;+{ghX$<%nPC zYoA}rBjhoi=cQ-XOSP@;DSx9A~?rAh9^JakWAQJnzy# z{i45qMv)h408PyTb{qrLLBiH(BXwgA7Ln?J&;eiJ{Z-Uv8k!nNX^wyl6^8W!P~GqY zfU$(xv>Y3rG>%<9UEug0Cwvv{_p%6kYk;0yZ!=0+WcorNPg!#CxO=S9vMgTuHjfI5 zuDig(5m`7e{7pj5N!edP1sN!-=8(8;EmMQ_6Y6VWu!X4IUp3G{r^O*q$OIdw{9zlb zU7HWm)a5Z{W~yfDpqO-_5>ewqzBZVOZ_Xt2!~X@^p@3q$Zm=SC{$D-%_YorMWk24U z@wO!bO8Teo*2RE?r+(SNN*)7$T)dwMcE7{u$vGXZz=kP&KG1IJU**zfdY}n>drxtE zWSo)Ll=xI#T?HsD;aPwQgYP-`)Ij9nLzj)jK@bY?JOcksScfNB#f<+-Qk7 zGl7LUF)$&zpeF&47SJ0(ue-((+&iZ#PS%nP&H3mzO7Y;+0$T^LthV&OB;wp%m0~E4 z2<5ug3BD_kJHovF8rXKFuhRq)PTrUwmtl7aAq_hf!|M7C$O_E(UnegAIfbOl$X^tL ztrPotoI!=&hXH6&Q;fWR(G3OH03^@DzuyRyJ%VX`-CVHMA!9U1f{bD)8KAx#4F3;c z3AASHjslNoVX5x93>~Yjwj}U@_r;5J{D?kv34TSy6>)V&dzyd_= z3swoKq{3n0)ewp_taOaDb_GU$@J-MSE-n^ygHZ)k4@OT*;%rD7s14t0_yNu&tpy5# z9CH7mT%sJpi(KT`BGWDo>oNUy!MEE1UT>qB$!T^X(_?R%#5Cylw zd&(WmS?rtPInm7td&!$%2akVyy$6r2lt#pg$1sJj_O$K~wJ-W5NmxO`kHW2Lhc_vv z$<4Gc71&b=_*&2jOabXa>c)Ul5Kd2D=$tO7mkR6<#1+M%GuW?UR5PA{YR;c8%y%S- z8_fqzeHblrP3*F_U^`qf2a@+S#R@HD*d5RL@eu>7S-H0pq#k34kq5~3J~VAcZG`;r zJu?qhHYl$VZTNwuRjXfKW-l&4{xszYd@Vn?ljcp|BZ;-g7g;dB&Nsd`-|!%ub2HU+M7~;m((53El*tTQvt>X9USH- zV#>EE*y$2@>dCGs&yNq*gWgxXi8ne>ZS}zy-^S(#56;SfcN$sGF|P61fERS$pK?G4 z5Dm4wv8>AhjiV6iojeJ5?3(j!KV`4z?Rm@_37T~U78t=d56C=_%$Jl>Ps<~02O{Z-XvB~n{;la z(M-m!B1AE51pBPu@i1P2JJfisK6yy+tUh+SBZ8d~Sn58NU-fu6R@`9&5o4EH5Qx5# zuK|giLhQqxi4P5bvgW=Wo3&K`6d0qs##Z9oUI|r%d=Y=AcEP90TrkQ9fwHrt=~1i( zmRA`cB4vBDFTy}U3;RNlM8snc4MvUX$O|asnw^IDYEwFcQLSwt-x1hWF$ZUOF?V+j z8>Ly-c7yp=)usX>k~{tH?106RHaNz0e*F1ZE1s5^#{LAi-SLw==si|-Q3F%vbDI+` zYh%j}i+D87p;;)}!VS`BcPa4dTzPuH?CNLPZrAtv94`PmNjoa(3k&%Tf zi%xpF7$fyW{8}33%9D5e;6O}>LwxYaLOLBTd2xxW7bmN?whr|Dnx?C6mBg`no^C@1 z0KS`?l78@MpT9G#*r$j)Pd-Sf&orUC=0lwW`wFnmWK=0*iFqh@aRJc$tOL$mWP|Q( z3wU-VcKtIi47oNZsD=7RtdYQO3pRK$ku+4;2B3#mhx{!2$)9~ zhON|X(LXwcZ$YZc4)h6-n_*5r^nWQMhE^cctkFy@2I}TB$Lc2c6y}ca44`R8Ubx7c z>J~F^@&)bL$k-5hnYII=@`m{JowM7@Z3t+6|2Z;f1wsL&I$eFx%o5a6x4FYDrL!3? zvC#|~>gywQvPT1;rzW_zcBT83kr7b!2PvFyQ)1 z)U)hWY&S~*l5%IaE%`ON22}gR?Ai!BIQ8i(HVLb%^BEvEIU5ns_`7}GJ422KGXFfH zjUp^tgdu^d!^BPhH>ypqt5}11e|0qPetR<71e|x>xm;di8?DlOVCuuETQ~v#bael~ zhsjnARl=*II?N|N2U%lDDGb(nDNvs&f2@j*|M^DJw%vupZEU>ko;me5E@`-{oWHuR zR_oP5^~Jv%HJ;m#6@s!x@kld|Qx&hC)i=2xNHsU~THMv-EYI!6omH5>SiFcJF-+AZ z#zFBU6J=&Ei!2#>JTWaEv;U72P}N7MGzeU%2(cxgvxfexiFD`lEgBpQD~i`|s0H_M z_=%RH@tX{_h<`ilK%n6IXbsTD!24=|djuWQ8E=c=IrC;sQ{we~+7haQ{8@*srH|R` z8u33gjE1q1STq*ntJ*+Pm4W;DkK2~lB9(xT@Qtek7P8%-;K{bDIi4@~IVH@<-2h#0 zCO}X7^Yk%G!{w;CxhKy>@}| zQKepi#V8}dFH|Sfe+1bKD)XdN8u;u5pDkAy140aPJ*P$X2^k;gLVncOq}*U-W-m&& z?d6d@XF^AdRMr0Y(*TZzT1c61)Mj&I14)Kkn|TB8uQpKUx*~VQK`oKuu3xH7m&bit z?yKM_X*ZXP&icJeSTPlSZFqshuL_@*G^oYfI?<7Z&L{<8+laRs6$Pq_HPmT~uh99f zXA()ELYUH)xXpfp?Mu%=c~aqHdp&SNB@N)5gr&9qGk8C+O9vZNjm%_^PV9A>>qzRN z>#_zoJ)VhH5(Ggu|CqY|>de@my4~ySsayRC)39bs0A%I-plqQJ%`Izl&vSxoI z%n?BmzY7#*@Vl)W(e-zEc2@EV=VIg3_r*{IvlGtRSkQlnnf-GQNY-ur@a2Zp%MOak ziGo^iouCYM;&?Z3XH3J4IpMQi?vv9^n0)v7@t+5}u7bX`#LH{N^WOwhK_%)? zYQ60X3|GfNkig**Dr@MKp!kf(o_6%2D98u<1u}a<)gAj#Zty#3&)Ao7*3zxWN*uKmWK+LH$l zGM7FGRZvI!sv;xv3 zLrgdepkk@aaO&@C3ldF(cr%BVIN=u#`?`W~R{5nBBW>SC$ zwR+nN(7uk2)rGn9@N1{)^7p+Z_kyGD+=gKyH(Ts3L;qxBaptw_KKx;ouEA-$){#>3wu5-aA&TOJG-?d9PAj`0- zsRryz@kf&1`UP?puV0WV)Kd&2XAkxDnMBaQFlm2vmN&Wk zMm|fI2YN4%y z+w6|1x|Lf&V$P5&@9%S`&ivj+KNmpA z)Ke>R+&>lE)F{tJS5dr>bHR)AZlguDojulS6qz$j3&Y$B(9C)-w zB;+U|cansPF!vm}a>vXyvr454<-R3UHs-$OSP03La~KxK+5BGne16~W@ALWX z56bm^@BMndp2y?yd_G>Hamt(FsWEelKieZQ+np@;dIQZ_75R-PGxqvbxl=+FTQQ%G zK%F6}V&K4!#nA$*2LDJifYU_d`EkYrnN|`b1%x(v;j#l#!HJ zBoNFiMaO!+19vSURq1_jULHh`4Zo-eDs}@9P6M5Nri`m8(lRXz2{e zs5wtI;rBW_4pvQQ_Oo=bPP}iz;uF)vB;-ovRM^QVg6WYv{qSq`$?JPMjEDrY1lp+O|CxNwi^ z1)OJKAx|ppbz$_I1v?7Dbr9&(4*dlJ;MQyW*4`~y=i9_yuE?h43j)^sBlp?Ap5R{} zxI4id)3;y!xUJ8BKI`+_eeVFHld3O%D_tW-Crjmq%n!icyfs-Pb`n-H(o|WO8jz3r!B?Uh<6h{S8bqO%x&nw?vl%I}q7vnO|7Qa)z=?@iF7(#RVN`wB!_B88E$@Oy7R1IPb427w7TLvs_ zM8+|k$b{HP%j;j(;NM9TsHsKbQ9+mKiJ#V=rQX6MCzfT3eTvwG?v-C~5>&)=p-F}Um^ z80i{Wz|riYR2HHoX+)r~U#@0VGvB|X2K~&pQ)LJY(#6*|gE42ht%aLpH$CgUi6Q9S zC_hwqnFA=b(d8cV$Nrve1L0<9b}gL25a*-^ohO3V$;Jn#T@xl0d9Lvi>#%Xa$+5#;N#P(nfXw z_t<$^r&Y;yoeukJXWYK~#-M+b#;|IJ+T0h~bn*G&-2(isTkd~!OD=S(mVR+IC@LXE;*`1lDuAu}`vXPVTwYfosR>iY39x~nDM5aM3bkpDV4-|NXc;&sgtv6Z zR*26Z1X}r#Uv<7v6<%q0AcKi4dH7&urMjZftQf&l7s}4veZX%OGuYxq(*=?=a1WhB z{lnb|p%c|ZHg^HI+6}ar#_5d%!V1PH_BY$UM|##*s@K^3RiYl6QP7tcJTzyq?*wzZ z+~t$u$N#qj$8vURT>oBFTMaV~r?<_vfMd9Ju20zWzm7!rI0N0mZ*d-->NY_32n^}& z$SV7sJW_Ve$7*pFCQ&X`BI7e$w(o}A(3@Y@Hn_qAf+lm6x2MZ%-&!`GdS<0MTcNL1 z;)4fBY4Dsjv>C{}?iTawe~DDA(c+#jgOs9)`VU|EEmmqpb+W9PFP&s|#k-SmfV z7IXk^;Gx<_QMVC|^V?r2Zxh`8zxNBwfg4<}Bc+?fZ&;hs=4S&i{Z`}6av4xbnXdBukF8z3SV z1%TzU47h1y>%UrrWPS+*IB-DX>873g)u_@UK%1IfP&=<{ODVSVSS+1=<-n-fxrayQ z-??s-lJpnv0ewqLh$I`N<@6#;>hx$4ttL{G0EurJ`{oL4A7xqSjDVt);slKYgs&&Gh{BO}9K z71W1!sU;KRAZms9=q!fz6i9+>LAA*}q+0T3AuzDz`vi>>W8)lDn?ZPg$FQ&(3|{M}ZY>b9iQNMI>k^tVa9Mzl1-Dl*Stv;UIzfF35l~QkzT+;5jq+OO$O8D9 z&FO(JaYx<-S?uiW^NyFiL?D?MK>WKx1$9RQl%PdLG^xn2_HtKzUX#xC6e6*Z|fOIA}jIW?pyd*8jaNJit!` zVyedX{e6f;Z$(-tEVYUc3nCc175lXQ1q>&o?j7Va`e6b-j~AhiM=^XKz}9T>)fXU<%(OYH;*cOWsdl zr1rT;mA@`P*%G%{f4a6VV`1tt+)zD0)8!jqjv_R%g83b$gg&2TKm-``^$3@TfYLk8m* zQw`+lpf-?P;H}K8y`~Bre&)0+^Q{ak!axo|mYNL`7HO;rsLN9&3bK%cfT^Ly5o&j3)IFlj|4gr&-&#VJnI2gX;Cyqx> zc*`;HzP?6P)&SnVQ>+#nWO+5jVm$%CR~rG#+a~O-hs^*`2vw$m5L!(^&nPJoVBZt9 zOzYEbe$1Qi`b)9sa=O=Gek*J>-SGJX#9m&%6UsTexvjUlund;XCDEJpV^VZeXtP#5V)ALc%v9 zpcgs17K9q+=y^s=sE=FP&?ZYQAI)pmz8*|=t!3vU_?Cbx1o9-2TbtFnUD)`eTQ7-UK?@f}m8C1vy2pEqqdR-ERO`{?9jDMntQ{k^jX&64{w0PqvW^SHXjno+L=5= zEdHGcfi`hYECDBi%wApXrJ2S|&NF@%!sF8~3>J9Xo8(hBB2nQZ&NR+>G;|Brx{~GU z@0Y)8q;Hui|0BH3jAmA;Sp(R;80d_S@KkO6LUfmEj+||dO$SO?Zslbr?$bQejAW}3 zyOrQnn_;%t|; zyrJquii)D5Bksv&=fd3B%pF``g>g_jlzz30{1Won#zir6+&bLLl6}sF{pVKXey;n_ zW-*niy=FQGWE^(t7A8_4!9QZGO#JF{KgDwZl0uldUoeg8~&Yxsqm)5 z>)ybE8Y^G^W2TUAk=8&EZ06c`PfJDFT3ZLGu8snIFjvz-Dl^nOY7b&Ux=3O#VWIIVg)oh%+iXjTh1=H!#Xx$?QkD|s>qwi~i z9)TO0edy$oW6+k9E3Jv`)Uw}HIT{a_fkN#%`hIeWCVMMbrfue!j+`BXsJc{c^~G6JF)` zkVsW+NNjh;VJ~83{H^+@V$*(Siex%Z3+-378auG_wls~Bf9_BIez8GH%>_uzpvU4a z&6gvN<&uH*NRoR%Yn5<~wjS*sKi9`?K0BEh4DQ``#pcDDdA$5hmQTam4=8e5`X3g9 z`^igca(^=`oY8`R!LlQ=!7*b z)vrH~9TiyS*>%ASg6mhMGSq{_D)7<@gC5HL0XFICKdhZ*b^TFb(IZ&fezAzv`IadZ zYZU2%f0cxQg|Th@6S0ViWQR)zOf^4C(%k3-t4_HE`*rH~UZ0BX7T5FgbW-&R!W8d^WM#dP^r%LBuu53 zbU#sAHScyy%WEOt;H%w+E8j-&OC|75)%>`c3~Qz3*xo7M>1El&s!>L~|Mje#?e=8j z2SjlKlRD{z+AVnzs#Gmnv0-aiBpCeW%U-?QpGw%%#n4TKfhuu95naQg-m8S?vlehz z*iP2ZH#PZ0n@7?{J;`aAka`E)wks!jlvJLnrMKcc!v$kSt?J&FJo)HR4cpH3D51mE zGHy#H8EkH)_idST?s<}s7X23V#4=0w9RB_MpB+-1O;Wi%NJF6~jr4s}&=~m((q4cQzpS;hknBH_ zKrNDpkO3rkL?F&JH;~6=`G_3fwT)26)RzOTz012+roP$rSFSSU4u~C{9Q43G{`0cj zt>4R|vP^Kc>9OgA+SYm!$3H(b6@M3|ej=IFZQTSX3At(2&4hdbjZ@K>H?&&G*FyZy zDuhzTaPmrrK4G3Wt+7i$5C(N&PiD5a~B_!ep6lvgN zD*KMNva;TaeL9e3T}AYq4XV6mTV3u!b6yQu<92kGS1*LvZIEpvWplsY7{d2$4(Eod z^095r?{UAv+CK7qa`o#^==&JoDi0t%6)z_K3JLR5={sTnnm;IaUW5$@tgXGlHo>dS03_U(@m}_lnK6F2;9l_$jk~7+>r5VQZTDuHJir%VI_NX zQYRfRja*7YBKxXCmuqHgJS^2>mX7myDa#R=PhJ(QM~|QO&v!%HNQ;?ojG>08wEJ+I z^OL-#n0-|n9;CY9=CqMUE5ghCoO*(VrP?*Vs@*pEO;vnj-la1l&`lT}YLg&}TyTb^ zP6j=Gxixetmms&gsA?=Oxo$M)z0-xHF{9R9g|}OOn(OR|9)9(t9Va(qYN_s%f$Odgn#7t(#$3?yo4`VDqZZE~U7h z+Hjwt@(1ZcBg=GUQFGdHsVO_SD`Rwigpq{R$j`;n;nzf+ECx;3+>Hlw;PHrat`utJ4a{AI(PmbxV-S%QA-5wey+uI3{tFFx8z_Z-CflWlSa>Bj2B12j&zB{RWp*EFVh_oVJ zH#E<|qpGb@TWi7=)xp_s^mwO=p0ead>#cDG&Wvy46>ui@8!WGkX;fh!uSR;G?5^x~~|`k+z7p}@|qy+l|Ge*ub;WO4n(UP+n8JyRJ_bu+rvbBh6>Zakgrd_n60i8+iDQ1f4Flu z54+yldC~rjo<&&=R^nY>Z9c*(`Pk6YqAUlO??=6eOVcDmA7oDlIRDEhOea(%Da?9D zyT+HZ^T;W9__bwTS~Z@|Loc4KJIQuC-@>}_y67Qn*fq!_4mhdAW6W&=l?`p_^(rnM z)H>oLlE%iELsh;X@*LrV^t;$qkJ4sg*0&Fj@^Ct)Y!Ykq?Lx%`*k#k&DIwxuD%F0G zar_?HKD{`eZ%b;qdWa33@-bg%5KnTtP09?C{Us9{uN&5SM0IZ@Hq|F4@q-iO?EbxQ zWPxj5h{B4wTcD0bh5L(RQkG|Rl4Sg1nzr1H+dSfdRkh=hqmQ_{`pD-y+umXFcj~GC zV)3a@2YUgt5IL&QSsgMuZ{xD|@oj1=wsUK4O6|F70PPl)WSRA0eD1MXKze+hRbI2m z$Vu6h3Sc-mN?mg*?D)Jy|JqM{UO|&Qu)XdpJ9h6YqyCbnAr=xModdOA%!8wwyB0Dq zk?QJ7jg_8*3gq6PO(~;v)byiovO(&cABGiAS}=V=n#=mDrL4-%IbHG{pWN=2dgaRY zuu>n8kvUbciHBwcN`?M|4RMTc=CtWV%+#Al>;=*bLZDYYl!;?B*`VY!O#|BC4T~2e z-Y67Sh&QiGM7Uc#k{-`*I&$G66t{R0Cc891$vSQAYr6A|VpEzQaYk{nX=O?g_JWml zr}3=L-c<8qkMg!s;%4)?KLHj;I0%mEZoZ1CCJYiazf1VMs?A})jeEa)t^0E z$Q0(|{h>2iHPaMdO%BC|NmtZQ+vN<-FZ>=-nDrCpAhA*2W6LJP8%}h;elyjlN zIX2%)y~0Ae!;8^0x8)=AiZIBNd3boGXT%rR)hCOS!+xq4&evp*_|4z&50J6wxtp_f z-OI8%7VAd;wvX#I{EuahJL;3Rol8tg?z`oZinvrZp%UlOt@(6Y#UoCFq@A9ab3S(7 zU=4RK-E~UebMJn>4JK|vf$us~33w>W5c&<o6uNeM@A#I{v(R75ZdIWy^eKK-EY;q67rG>ub|X+Konv_oK@4iikd8 ziOKo)I=b?)&`(|=9X~(39GR$XQM|+4M=h%!jF=Em_;H*+K+_d_x~qV^_SH_>F-pH< z{1ax{*?YsIs!sWhzh^4lxyo1dDh>ZRaekCkD@h`-ydH;19#?nTNLFuA^9Qn&>dW=~ zX1>%gy=6_sQ(}91%9`WnRVsgO{8Hvi4 zt?(QC#t!0muX;28zG}#@~`eiMPCLw((Rb(CKqu zTH=S#Rh~j$YE^McOpEgAo{A>Z(-Zvs9arw1P!?YZzycFRZ3WbncH|OBd-tEce?oa? zDuq8@;H&(wf9@xSOWTjJezjZD#|2+j`+axpzZy6zf1RLeXzoJQcDilR1{+U^nU_yL zdma1#sw9PJ0Lrn?#7U%xCML&ZdWHBwWH;-*Lk&o+^T`2-$T-iSz8&8;PlerOMy9{_ zw0VdZhAK+sqPvH8Q2pt%lK?f(a_9+ZO`bnJY*VGoK0SSrac|;_!eXswUptbUkrB04 z))n}Q0oTO|hU}*c?<2IcQ(p#nq4jm;>GL=jBHX(7b3G{{l3FI9eQ+_#CV^|JG%^u3 z`to><-LH?Q7dr(<;D7NJO!CU%70!Q7 z5WkC0p|M%pxO!2N9k6ogbSYJp8%gTs7WAa$-rfENxt%9yZiLbg62>%8GAD?7luFd? zSTY@fRjyG!q_@5qAw08dR~{fdM4`GiQ)4b4NSaFfa+07Y;gsOoDT|G_KH(-!xMuWI zi9nphy=?z^rS;gPPO(VB6Oyc{Ua@FU{OeV~Y&?@%qU?cV{*<(JLNWgoV!3D9EjDzR=?FKNU7icmw_hOdeIZPG62)T~j(xNZ5xyWd;h$ zs7Sszp&73Y|2;OsLRcBR0$r5Iv@{V2^kO@>#4Go5eN5YM+A3rrX0LN{!!J&4ezoy^ zZA`^K7M}G34>lHmjGa=OdI)m2T2k=X9*O;o&0N#G74}-MO>P;mHP^+~&e`VkVY77z zQO>_DTicL`LeXW2^@Fiol{Jd?mnqJ7Kp>W5J7-?=n!M(GX%YV!pSAR6hIQ2{x5AeSfH8~i7T{z8Bf=Vb4G%uHT0U+rb=c>% zHV)E9jyko{NmGAvolZbsT%3FSBF7a*wO>WtlO3VO;8xrBVUPGKBN#tzTP^l!d|~R9Tpubu~;%|@3|VmOU_Fh&qJR})Rks6 zC8EVVf*P@N>lP)4s|iyS!SS^vXtsoKIE$g)FYcEQxS^WWyj(i8k2`8GL8_AbA^m zrVZ5Hh@>aw>&M~i7h<=V6i|3k`c^|~Ln3R^0cu&vuu+cXM+gu90$`jxaNS``Xz_b; zl&LGLLLN8Y+G+5|?xSa!dajgFhir$S%sDbjoxpvW>)QU=!Ga?DIziU6gSp;6Us7cM~&tuM3`jY4P_A)0S zb@~AX<=;SxG~9{5iHlfTqd3F8MfD|`S;@&%+EnBDaXfPnYjZyCO3(z zJV&e)f}4##TtXH0Qo~j&6Jn194?pvq+G4()XDxPqaKp3gnmx9SHIp)Hko+7l!RuyZ zSG~r7i~6e_8c>DGFhZ-%QT{W-Gi=tQB(ZR$RDhIC1=iZ+Hy79Ux)qk3R}^A!YQ{^$ zid^R`&v-cj?c*`+%vskwf*$7+3#lF6vAe+nE*m>@;mGO|YD+Tc!cv-q3jU$fLK&1# z{1qwff}_7rzA~kMlm;;ceA<_58{W(+cAv7VN!OJ-fjN7&3k@3;yY)7Z;tD=N4#6i?Vopib~A6$n0nvKrTl^S!AA*bbQZUbh&vto z)4#9M-4+FfH5%w!dh6trT6JRQX`lQ&EX+M->FUa-o>{WHPR+6&)KXt?08rfTZaozb zu`k*;`(G$iXWvSM@$n9q>q$>j_8ffKYy^E$;1!8YyWu#nE=Z-BY$cGGzt~>tjyA7?*$f5we@`{_TcRdGg`C=4V@Q zej4Rg&WL!rl7$C`fDo>~<}<*^yD`^O6i;Tc2{0C%9`rYfGk6g*FSfrP2wUg^YoWye*~!oj)s^1z5C6& zgpc0jsc$wT(n%7&170aCLHt@FZV%sWU>(M1-|;@g#qc9+%Bdaz*4GuB-0=Sv#|J8d zh}RdOLCIA$<~&uBN}~yrYYd%S1I+BkAl@CO{AYAif$zx%jd(R@DgCvOmK7ismVY73 zE&G@kj+~$)Xbq4KuJqQY`K=FY$?L-r9jh@0cf>LbMuXT~34eHHUOLLP77SV0DdC^8 zf|Q9+mN~4vJ*|q@W5mAgjy~jN1nQv2>?+iRICEefM~m$FZGjq}e3qG^M=10dxvKnl zO(%8L6r+x4j(_DMS4=i%Q)5X0Cig}M4rKfAqNaCMlqjF#}dY0T~k{`|Z{3o!e2jQ<^g z+9*e|4Tx_}cCYps=DVF!xEt1NwUAM1hl3n=7Ce#N-F7;w4j=Knub!Vr0WZpr^qj1N zW7oVoR!u*~{H}6Q4-!b_(F+yX#iQCVhBwoA$}bBlY(eS0X_;2qTDwqMS}o7l^`rsQyBX-`KK!+c5>IeTz+D0Ltn^!uXC|TcrdzL5GzA3hi4Bu1?jnL`7y#* zElqXx!(|j+r4OoHKUn4#x-N?2ek;Zapof}fa`o9FA0jVRC=vpJl$wb;kR8&%Ftge4m13yS}WZVNfYDvef zE-uDeo~PKtDGclZ68-nG2w;O;)kFbHgLyIDw9tJ5^2&;TUnb^Q7}ae2z`?SaV|$80 zAdcft{@DS~@%~}Se;riM$~1$VnqZ74>0lb_E;fwcxOwH^^C@%?_Ra8%z&`b_=SX|& z%oPpkymEZgT5cqbQ>c3yE3iIC&oo!* z)R|zKrq`3lphOT|4KM-tZk%j~?o@T^yMG6ZGinprhU?yQTaRD(uI&iR=QaKAPYfp61sUZrD=)vCm{od6!GIsWb0?Lw6 z_YTGrU?Yv_S1ofAY$LP7&g7;{3mQfHB2M=~l>J_`eIj_bXXCe*q)Yf-N_-P3Tyr5j z;kO4(t!S0c{Elv%XNqGvMLJ4eaydsFYt>9_hUoBpIfwo`$U`6Q)x5st^I96pN2vlI4a?jW>=+{O~rO(>v5%noe zn?$#};M_2=e|0f(-M9zXmvCeU(ZuAkDl(h#c_Yige}ERMPV`WyeiSw}slR0MH0EyO z>8LTmjw<~wOXU-h}R@=@M%ul7SuAetcF@vlRoId zehjT}P1_2}km=;L?lWeeqlIKS>4koJc0_AuoyJI8HbP=QcY80xO=w-+%ubW7g6;8fm3|v^2tAkO|uNG~89>&}En|a&tK2zT0 zBc}S(r`xf+5dQgErK6`F?-X%UYQn|!V8i=Nd`4|k1v^!>m|0R3<#?O)EpwHT{>t;Q zi|W1){}j*=+nHq~ul&Cg{!`#`KHs=U?I1(SL8b5{p=Q^>oVd4Ek}1jRp;qTG*U4(&A~UE`4~4 zIdzeVM9DP)b<2n4HFAU4V}n=AH)fDnE_;IjIWhB7!I+WS2~FCpX7=jUjL-9GM#UqL zgAE{h-n}=t4FkTm^hLO8E* zXsFaP2ggZfJ7>WvzCpa}*-|1D;~6aPBsH^A6L_A^5oT4M6#C{%k728WYt~TD=0@R5 z2PB3ITV3hGm;#Vp#UGfXxiAAXYuW5YbrlbVh)Uf(bdSXKT#eL!Gu2$Z#*pliwJTLM zP+=pu*Bne_lY)1tmeCIyQ)2FdwHPmpNt6+J-YI0%9WuIGDu8c{)N!-cTYfjdYnpK5 z1_(LKglo$Yql(}h<_8_FR8KEdMpX?Z*6)(%#9amh3CZ5`LF+W@Ib&r;u~1^I&tw^X zOT~_rW{R+()VNEJ^X2PwSH@Q`^>pKI-!CM_tIi^+dw*$}Uh;JrY4DU75nNxVPpmRS zMbIWz+v>geKs(6nDTE?w^y(vglJc_v7Bw5P2g~Pg~M8odvWSe+^6pGt1 za81}{SXriP-|=mfdxk|Ugn{uWTb1iq0fdogr9bS~1OM4}hhD;|pt+6G%j4Sb=)t8d z4PALsIOu$>`u(2F&bHoX*}{(ih+2a1$~tF{DW-}8KsssG{PtD;@eqYRreKBZ$nDaf zp5Du)5-ALTBc-1G0m_je`?|xJ8ht+P6PqU-vI6l&ILZ(o@7hSOb6%xH{#Opy6Ep<4 zsf@YFM6{cE`_;U0u@AoX||z}N_$IA-WO*^R0C9kf?#v4 zGvWSImKC5yJ7*P+UGDllL2_+ukebea?s_I&?!bSQ>HprAALaY2ox~TvyDi#xOO)>- zbHOX>cTnE!{XLui^+wR-%*IKf{fJrr`Ga=v*P|bHf<|G{n+7{;NSXI`j$}E|ao#_S zcMAoD`BxS_q}x6@qa57#^i#vKVCuB@qrcJy~80 zFS`tj?`1ooxIEW=z0A5HtSf15dr)}CM!#%zlsZ7V`gk!Q+Z=FycM@Uf^O)bY1)9+b zrz&i`zVk7k03aO&+iHXg8y&|i8))5M(_mc0YkK-_`|3-@VxP9Fpoqp2ns~9-JGon| zO{3JHuH}&H=s0-w4_@i*U(?a-i?PCYmM{J8zNBcr6-boMU47ANVg?xo$Ox-BfT^mcVJb+~$Bg{k+S?Jy0oM{ttRG|$ zNY=T(4X3{{+?3%~)ZXbj7bn!Vjzd(@S%Gth2bHX|evPH#ZLyD>)TMYM-j2K2&;d zwch(|sHYP9{HI>_Nka1JU!C*r;)1|YdOnsGmr=;24cUs%xLZQDByh$MUAk!U8M}ap zTIP9JbdY&r$+&$^K$Y>vixSDm(KFzri^ng1{(RHUSS;Pb-mprbV0Ve?&^FbsJ6x=k z_zvvm7-A&pRcWgJoVc9HLCK+_CkEr#1CvS3!f~f%NSm+a^ntZN8a_K$mLGa65l}X6 zU**y6wt5`_H9~HMC=&*my@(R17*3{hQ?SO}B;wk`qRQLBUT7EK;Eh~{Wcd`)mID`C(G?L?aH0hlZb4rQ)k;8a1r$9@m(Z;1X)L-o`Y5qa9vs)Ss=3@UXOG z-Rah3jCk(Md$zH$o*Mly!XJQnx_h+hUx9^Q;grO)z!J6As9dvkKV z!{%L2y`x0#l?Z|3RYNrJCqjmse5Wt6uF?Af`-fE&+_00iHP;sc*y~+l{fpJEYqqLO zZFk+aI4zHErxQ=Qbl5(E?q)zigl-!4DF^WN9+g!^D$)2f7YC8<4|&09KzjvguG8pz8#_0_Zt@j4x#nZ-0#E+WH`$8iLBwY_y+QUvn>MT6 zy<3}~zakU~_gG&}0`onSjkR&+3)-^UQiYS#(-PDI2YSS6QFfJmWG7_Zvo*|*I3J8i zscaaA@Y$O)Z?AwpQ@woh5rH_j!=>%|aXUI~%pN=~`Lm~L#HRh~+(^#+D&XG?Z0*u2 zMcz&(5zP9|6f1+qDTA3h)en!eTTPXBeoRB7qj-_AQxAF*ByO2n`P=}!drMD0a1Q#a z0qKxM>FR0;cRxb=cnUxJ;R?S4C=5<*6+bXRL`qR+0TZW4*b~-b_4$6Kwxp$lAi0HA z{%+Zr1y)1OLiEx6jBe&12UR+gncBx48bNtpn3-aan|zZoL(Ig$l)LC;5X+q>8gSj9 z)AC-bPb7@k#eqoLXtew?JOD3**GLShsgU8-%-g(3M>WLbwttr)oQ)f$e79^}^~m#d zxw;*dR^S<%(q0+IzPjh*%zS#FG{XX`jrj?w!;8RcVkQTJtzHF`i%6K5U|XJZM9g z;iI+F$=X>zrWW>+6=D$EvSc{DSXT(@2n^*8Oo0C**gf`;UG5-G@7tT!k$hAj=}*St z8?2R1&DTO2c_r>2viI0iZ8l0AQ0u-XIdPJcWNKH8`&Gt}d zJ7C8g>T~~+KDyI=PlfMx~U?6-|ZbRJo*NR)54P3$#lKI&=C1ZRVWXq`( zn3>bHz zNRkv?`|jzsu9hK-F8CF6mv&HEM~FUD`&`A>&JoIdAFf&?e{|`htolVq-IK$^a9U-I zzWe?LQWv4FL2I)TEY~QSNivFHL8z-4a(n6B}aJ5skET^S>OSfX(Nc#t0fts2?d?2fZ={L!9zvGLOpvaL4;ShIWT5+Ls3T}w`(i?@ z1VAIFp$zv)jP@ z<9xxWfk%4!fJbYZ&ax2K^;qNJ)Tu*UUp2MGC03fhupgFgxen{Qb`kd&ESCBGG`JaT)CX_}Z}NE{*vj(2)K6R^;K=k1K8hYa+%e-yK@YSYG#` zhm619!?zJ1ot5f#q=tvB3+KU-vO%;aYa>q3!~>c6SQ#h^p=d-M}1U6ZbG(`&3!G ze3ISvmt2p}3FN#-i-QI*uI8yS9lplktqi88Y383lxA=PU(A~ku$&!2YX=J}3a_5y8Opm+3$ z>Qw;d7Ofs|8CNEig(42CiuWpnNwlqu_s32uot3jx`jWidxJyWl>&#+Au-@a7*LB*G z72D}bU|#}c{!m&rQ4*+Hoo+6p
@(NQYcISGc#^#zc0F(`P$GwDJ}HR%cYsT|yg@$W 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 zб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

Gs^y^|PdYrg)^lm6EyZ+r`^=uc8xM?qttbgH-! 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

Jw^?)m&nOMAjCi885lVO?&@6lR{&PK1 z;w4PKu=4ip!qe$l(N1I@wHLWj=7M87=MW7i9f*Kjp#}(V zzHLs)0d3L>RE^jD=#^|rgQKgz4BJZlu?88|oI~qn?Z`_3E z++r|Yf-%nR12^23U6>9D)=0aVkzWhYs3ppXl8Px8@35&TRUSwCxlHv)z>SW)DOWx~ zJ`6N3vnx6#ZX6Dh{qZ7ivCfJ89};pY+$wT{ zCj?Bx)EeJ5ADaqLHN!y~V+~E&6VO7##9#+O2Y4*t^A>Qd^J47ZPL z>>tMRH5Y)KUmwvqRl6f5AmT#4*{A27fOyk!8hmT}&Q1U`Rm2%|Skp#siOLI-FJY^oezna+Iw=( zQs1na{=z7ppMo(*30SbBSW(?9mdI6)F+%E#saAi{u78w zpCHuVS?d^wNsmcei0TXL>2p~1|DPDFDD?p+i8ch)7ydUE_V+13WqJPZQutj8l*#;` z>cTmt&FGzA-8B|vYe5d$p?0pJzMDe*EPZzR!9T18#tTdhjLi*9OxBqgTP`%UTx6nW zY;0+4ymU14*1tRu805RfKjObXurl+@Sa?8}`GwFefqo&On*xLX`!mz8TAab%;o5z- KT=>mj_x=+T?StX~ diff --git a/0.10.0/architecture/docs/design/images/single-cluster-layout.jpg b/0.10.0/architecture/docs/design/images/single-cluster-layout.jpg deleted file mode 100644 index b24badf3b794a01f2e11378c3900e333b4f0c024..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376787 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 z 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

    u^^xWG)#su+%i0i@6dmKo2~X@jF=aQ(;(&); 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

    N@&EX^ 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 z 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Ⓢh zwDj07Qy-IlCV-2p9^e}v!A9{5&g!uMeE)szj9w=%W;b2+lTEv8*H2i91E|GO zcj4?lx)9&+9@$KDyVYA-zay>ZeENcmd7xE~)77e1(VBxT^bR3!DSOdwAh$ExrR=@w z*WEB9S|O6JndE143r=;dB7^cWOPy?H_Sv+kqN?pof8KdHnRuO$rjOnmVOU#!VRJw6 z(;kuPdO2A!NH=Zk-TzR%mvUo&=Z#LEU*)pZAag24V$i+HF>k2OEPgImoxR_Q3Crne zLx_g;c`)`(Z+GJ7kWxi~#8*@QIRY=Gvb%eGu6?~DVL&v<^#^q9X60D2rBgclt#?=9vDp_8cysvHyk{|`~~ zV6PuvVnD+&v)xE&852h6BqHy7={`k*;2XCW6tX?!>K7ziewgVq)!v%xH+pOw z60>k)dFu`p@02*!LL#pLXmuxWIn4TD2NGP(yY_NvLfj2U9eHk84F>)Jj07idzqpcc zs7^KPs7b}Uhqg_JFd$rwh3H+$vl~&X-6`SqEnwts*_1E~%25564jZl-7)M>t>4M(} zL~VK;X+~~PQzv@TvL0@;6&&JPV-)|)6u!*Cyq(o{rEs>Rp^x`Kqhfx(CHKd^I}Y#4 zm7u^r87)-g9yv0j-fprOL2g~0iJ4mBFY`C{Kl#!1@78H1E1)}IvaoRyAqqD|kxmV3 zxJj0xsOLMG#ui_h&GGXoz@D32e^?pn6_?d8+f3iEHvLY#v{Fmi3P14Lu;0ViG#^c3 zzn@V6UD;G=@X#!Yd+mFJL2kQkKOB3XYID$84Xo40(|S}cXDX4>aZ~pa84!s~v2h(m zTIFcw(S>Dk@JPL}dy>3=#rCCXW6kpN9ilmoXyW$WN$H@)kghwrR>I+cRS~k;?r67J zG#^y59&8GDeyt^zl6-#d)@R!2+j}V+_3sR%%Z@VuTZET*Tk4U9gbc6ixSpti^S+58 zY(~6GrE<{z!UvuNAc2XUtUILaTuR6@v?i*%B1DcGx>(v4i7Ck~q^VN?9+}CTRoT1K;ft&13VD`5Dd#LAZZz z^->@3qRG1H`sk3}&|x_$NM+|u6ux7Sx+1lG=)IQZJ1a{@G5jO#D=)SeM9H$~s>pOCyf93R z6(?~9$J80GiVT=X9I#i4HoGB5lz4FXx-NDi_!; zE#NNCQBJRnY+=H?@NXti;@`6UnMP*Wf=3m}Y9dUFJZfbiNR;&YzTOjIsEN2!!%>_i z4HN({xKMULw;xaKHlfp-7dYAT=A@wk@L@jkx@<xh&gy_y<1e=>Q3ZXC0Xp zQd`)#cHSRYGATV-j`jjSrRmQ;3s4BobT!Mnu&IrgqZzSD3`3!e%bu@Ra%bLNVP#ej zpuINr8MGhabx|>u*(Lvk|FGyRv3{ThE3F~S7x_#S9}#f_etT_Woagcl)Pg{;0Ul~9 z!6%+LZpc!$O!V+O2NwAHDHtU4!8is}l&WDpJG2k9TLQjLXJX_7%5x+i7Z%}f)1lNe zPIzdk%druonhw*?Y<#76&0hv?lfLo}^~r#Bdn^xsYK*gK{o{^`_)$9b=l$-ZLB-*D zkJQ6oKT@y2>Ap~yo!FLH5_7cl{L%_WZ4RftwZ1^)isM`(CLrW);U7IX0UDC4kKw6j z|5xx-l8RRJyKKvEIJNl1k6ky~sbyVB6<1(p^-$N?d2&uM9WVwH=r0VNH@4igZL%dH zke9`5H0V&Tu_FFZzG5@k-J#Rfk4^!HQ%_f1Q!Q(wbp8kv#(Pgjn$uA6A@2T4Nk}FLji%dNA#*vnDuDv7cb;DX_sqLf}pKi6&X>D{&#+qf~w+pwh_?y+}fqjV$G zO;~0=xIG=rG4&NSh?(pz{S*P5O0^}Ue9{hO|yNbj>PUKq0SX3IJ2oiUs^ zLK4N!n1M>sf$|yAO0f@lwF_j*P5FlMPBo`?+f|$_<0@w$m}rZZoFE)qPvaH3 z=ra-irkGdpM}jMRo(oZnvvpJYQNA#Vo_cfqE=mIlZ~LX9HhNA`TQj`+xDb2@?hx$F>;9Uq#~qeL`{=;zc4FWB)THv1 zUvX0gdH1u7UCVe#L6m;#sxi^Nouv5bdI!8ALoannODTwe^%N4|mViX{h2d0m?= zD%3)436;?WX^a+joIp35* ze`MnMqhVN{>(}YAL%ok{#BCRQ7B4zH`S?>hW8m^8n)p8Lg3Bg=6+RUoZf~0e@J`%~ z+RdMY*`(j!pGv_(-t@Gf-d|TDORM6V52{XD?i5b8oZ!n335$aZHoud_w$6rQ z0I8fWgHRHjjdXikOIvrbFoazwNu_nSdld|`nIi3DrjU&A&2uGv79SUDu*7EO$KKF_ zubDqfF|$KAk^JChYhD!%dad$pYnI@*gF>^+bIfzSS91eb{y@37Fb-fGshMpO2-uAOOv$^RcCV8=3tU+nag{QZG;~}yNED5l+Z>n z-n1XeR16Kqz8tO(bR~KJSaA&Z#4HBS1VoCEn%_2e;HhK924vanta0j`bG)yiKZ3l$ z;Vlq$AkzR)>ibM*0PAj2b^4dP*JhU^E^X<-0|r&+h7(6W)D{k*nCK|AJ=SK~7M-uf zWUF4q9C)uW+&@><%qv+SCQdG0tz5WzeqT&gN=nvzOKW?3ekVolP3NqknOtGoHIYX<8!FPPnH-K)wtZuAtl*IAqo7K6NuY1WLx0=K=G$Ok zm2Pf?UTd$)!DeRDARx&zF3>FhkQGsgy@E`cb8~1Iv(^AEZ2p9V>(_1d9$XJlv&Y@jrm77>mBR zy87*JF*RC(V*7{6_A=182LJfeQXNI=UoF*LA;A6LSgIR>rw$RCt3*4tRNwn<2F(ko zJee187QR6G%L6$dZ~Q0D$7GNg;@m$wAD^R#nw2w_ma5O>Kx~kQdx>P(%|9^mRq&G+ z{`A8adGW7)_`CmwAHFDPuLxlg8&f~=!*6tf22+e722-4#_yB!c1%h*|`2WbZ`Wy%q zlz(GeZ3l@c#ZAms&U~G#puJFPQaAF;FN46+SHRbq?7^SD&aeJqm;n*^K>uc#fyg@$ z0m(A3X+}51!-gU@dq5BhPUZ5Gta7{j=xzM{)4#8b*$e^rt!KG<1hn zncyt{(GGCc3H;=zKTWy8R{R%J?vtq^|7^t*3iiKo`(K3`q}~pW zj-J`!+e3T7Y{(X>-KmxKYDt z@pzl7pNzcuvLBRgyj`PSW# zh`ziF(TMDcAq4CYAz9wyofGSZ<8zm+*yLmHACg_6_~Qg5Q}5M7Xi*B`aDq8Dtd*$OOn-z;}*4eu&!_Zf`$Cv0}{)ajuz z=>LAy##u0@A1ER%tZ&xK%;Ye{hL71bLdz-tAxXPisF^OB0`$lj+-&-f`a75 zIzMv#!J-=H)8zf5H@Fb+Wsbr|hfn!5=*SEXV?B4{k5MXk5Lff6JNhk(@z4r-xjZm}X99yJFU&=9dF8v|{cWYT zQgzcEbOpty6z0pY9>S;$UE$T~0aVVNEVv?~L`ru+_ho6jbH1QOCcC>fIc z-Oc&r!qGsJ&w44mJ2qoGGK^uzaxmTBbx_Bfn0bG%rBG+M%3fx_e{5fSPPw#iV65=D zzo&C`I!?$3Qm}6B)EB3*!MaJv$sp`~ui`QW4RUW^8ZJ_;bIthx zN7m{4I7+)hAkA#tqGF`EWC+AyDknY#vT{P#tI^5O<*4$E{`lEyLV-K z!@t2A&@K&%Q&EU42aK5od8Zhn;A{BsF;kEYY^D_nV$b)RiS**j{`hUv)4T`q#?H&q z(?J`|^73TiN}4zF>H9pD+=9VcWzP^u?$ZDPCwFNjGb2U_M*T}C6tu{~+pn$+2z_$_s}vFOll^p+aG_Po zJXPjUtW~J~$?N#fxcdzTl`I#S=1ff^ z{He%g*NXEn_d1PMDuo9#$5yyCJ)|k(j|L*U#|PQcoqzBcIIf7JqJzm|JENxXx9Ty&^kVLbThv)e$1n(zw+m^4zt0;xsjq$% zfAoy!rsf>A=f1a0Ne5q*B7)&A%wc{N1J^9jA`ZsC!@sk); zRYPVFavL{!sOHQ#?MMEMl=_)iA}IKdf_Q`nn>D3-H-2ZSFe(Oza%zl|Z!zU|=E>i* zNO_anQBuGDMcwsQ`dTt{X`W8M#2Vgi`r1cKlu}}sGnRwBlDBf$Vhi}eI06?xE4KSs zc%mXPk4|=p9k39szc~|J=J!iZP1?yc3|R@C34y>2<)-8F8k(P#TYT1@dR$wAcaH#l zK$5O@tP>?u^HTvT^W=egD#beQXQPB#uw~un8Pdd$nx%r+z^Cv~8jX&ExuMW1t` z$J+J%J;&6%VTha>_*_HFAdTol{fx9FP4hNFNfQGtd1mGtm`_j#?CBlc=0#@bQCFhv zzUu27xFLI#PUc*>hBqf$s9Kb(K^yxf=|KFGh#d;ZJ( ze%I)-hy=%>1l6!@t-C@+&m!yd9vU`>Ie1@~0KF`~7MTq7SA+&M3RENQ>D;wvgD8*T zsyH?@wm-%-Tn1B|f`70i{N6)(x?v2|3x(#Fj~>>WWSQ2`K67j>t))^&kFMLd&|9I< zopEKXA~e%Y_y|r5uSMlzu|c*T(Y_v8sz_$aU!Na1jlN_f?nT_BZeh?uHH)7u6tL!( zDLH^;eBe_w%m~xmE?xzW`qjohi^hg1D_LdJ4$XMHJm43RQ!@a>Ob+fxnXEf?lO&Uw zgZC4a~gMo}>Ol+sbB!uz3GDYmFVY6Z^^+Pq! zA^iNqSX-S*e#{4fu?Cb1u1VIm@W&ObCSh|*PW+E9UOdFatdP{wc}#+^I{X3Q1?|n; zmG6HEw7C1oY>2GpG~DpWj{_~}9|Da58>zQn6Q{;RRWY^YNfAp`j?(8Ps!dh6vRg2%>wcE8+ZG!~W;XygbgnGu^Y?9~kCq{sx zyP65O*6o1d;s_|k9~!Ymr-m4M$>4dBqtrN}c&v(>Ca7|UM;2CI_<6`dcVuTdETE!d z)S3FbOz~o$_v9Mu;zyCrr@~F1$Sa|7>dZ3roWd)Z0HQa%p-zKu^sYxB0y^IJ*&rPE zsBuHaON_os*+Rd~e{f}n@H4u9_TeY>u5y>^4R2=CCqLa?s$4VxaNuXjd$I{HfsBu- zOy)5(V(4Ua8B}Ov_w=QV{&CrnlJjZlB>x;4>j$u@{@`GLoc0z5K1t|H9I#7XT|cV$O`Y8*~zmN(jH7 z{XUtz+mu8iFn@bLqbT=r;j39dWM*C$t{F+(;oEeT)FQJSWSPs(K_BCn*XKVPc24H= zkXzSl4KXpRqN81@qRlbOy|#rKH;R@~sss(9ao1lG>17t+4Hwy(xJbhIiXQMNvPa?H zv|}fRoS~(yF$`WbHVOA{mP?-Sy(j#W9mU`OGAG-K4TKgS_~7T)FTfIh2}?KAXViZl z{t!|i^p~@DDKx=={LB)>^Ky&fWq&NUchP1c%S%JCX|2@sZ`Z}?{Or~NOdbLABD%5? zT|P@8DmO`UNv+N;_!ZJX1`-vwiAi-@`iO6mH z6)Rwu?6iyZdZd9pE>qvz+7hgF24E!G&n6k*IYT#T$?22`f8d2zB4ATe^Z>OxuR@WD zQo{S{03wx%bvAv3MZxe)lg3dmT!Its$C$>vG+3d~H)dIC#b# z#!E%Bc=giU+#*Z#c>J8bJ=3J8$M_O)_7ye;S?9?ul97>++7%aB3s@BCdJ|X__t@wY zT{lAlI0MhwBRQYVGdRxv`Pdl4|IGfOw375CPrVvs{D*yJ2NQe;$&vs`TOeVX5>sTM za^-=vnpF>@tW!&VuypPbdW~x9qlv2B?l0opl3MjO$_58^RF$*eWG49}qEr>$mZ)0? zZ(3!P!8n>97sg#F0h|2U$XiANXKK(0P^fhZYd}R9u<1O#XeW_4M;)b04#x4DV~e9D z4!)Z+-k%4VsXBENFFim)AXCq+VBQrFkP@Jh(O+0nS@wq6;R&LD^ zL7H-Qlp!`dFTSqPa#<@1zDL8G(60-oA`Rr_mk_7X6)@AUiQ$~HQ^haA$z#fwdAj8g zoBsy{Gu9YKM1~gtznXKW0@2_|Cm>RGQ%8d7zPlOk^r)+#Fl95lz0u0h;b^5`X$vma zDU9*fd}I0xO}DE){G&)iaIZ0SeE~Ffjh>djQ2g1H76#Zcn1?XJ`3s2( z>%)1{?i$$r<~Y@NtIj0{Tl8I1H;%CEceb#3&(BsG`TiWyZymW_Ft)~NoHfh){<0Y%jj9Ao~Ge)R*duTIo&VSRw*ltdvN+Q@y{ zDE8$J$r3w$l^ik;Hvow+Vc0f_@ZOxztsJ^b3#}gLZE{*(V|x24#UoD-M56tiAbgDz6At(1Qr%b_=ITd z1C!IpJLq#=n%;Txy6TA1^%CKw4U_U41lmcn&3JXO@=kmRZ1f9P!wD+KH>j<{pUP|w z`bgFFScvuVXsNgg)cbKgcoU%eB)IF=s^OFfV5;Z0Sb5h}ACOczU1I6Pki9Dn<>2Kw zv~D0HEOvqITeSpek59;eN9|EQ`av-Acs#xpyn3qMt1~Amq zJRv$D|KhPm`G*G53O@sd9gKvzgRIBfK^$16TY9uCmz4}yHOApB9ZoZHV;_@=Kzl}# zs|;$_<^cZ@0nCkNSE!zWDG~Q*2{*v>?Hi15EL#=NDc|Is3nJzLe2e-%I2aX^YG zbwcg)(;|D$8v7+T{Nf>~o-PybV0Idr3X3`;a0C1zLNB9yKDeXP&84N{>?Y#GD2cgW z68R-ng+)+C3KL^dFrkt2PJ*(%O5lXaBeWgcussSxaMNmg6vlRub))TG+wR%ejkiyt z{OM-tVr!J+a&gZ#Y}H=C=D!CN5b;1W^C8`)hu4hFwdwmB8vL#rW!-VyBsZ6fGetuK zvnG%2vTjqc$AbmTH+9~|+@Q1`m~|ld7B=Sj=yA|;p@urLc!tjqAjBO(_)=ZjMJ#)# z3_~a@UeQk;;7!DxXuzEFO@6rHD+y9M?_>4unvT&$6TmD=Lfc&$<{E3KYqpT+x~Fz z^|NgB-w<4WwDh!{M~4k0IPKQ!{SzYv>)H#5@dd8n~>fCLLDXQ z!m`a7wUwfg)cbodnde)e^a-9*el?rkI$b-I6u7uI2ad zrG92?B|ifqpAOV=Ab#S}Ii{&%lEr{Fy))@0X1!QD@s~K@`f``C{Ie0*UN4T&LiN=<9eV+|kBEslZ;4>@SvQ5IRT7bV^bC@Q}+mO5fTo(vPST3U9-OcQX12#m0 zAeNnxe8N;lXnia!t+_U-mc?E^g4BZA+J1rWm;@=pe>o6eu*$f_yA}X43N61EHSxPu z({X0l0N#a(Z>V`TS63y8q@F}!X{t1K@60tY6`Z>SClQKqftHamW%-X{H^rKTGVf* z-5P5mh=Bd<2Ym})95^d9?R>o?2iK13BTC_YfAUY2g_EC!Z2<`lvgG4p$W~^&_<`k2 zX-o2^K`qGs8tHB*w#iVEJFk$Vg7ja|k)~iS&2Oyv&0)i#kswiEjss3mXvVIrpb!Za z56E{BK9X;QJ3CUdhI2z>(%uzyYBAuqE>H72Rkwv+0iHLVAdh^ZX6`G)ghx0Z?~7GC zrtp|H+qzkF0PkP6kUUScona5&xcQkz-GyM&Gu+Ed(E(XpOmTZz#86+d(0t;vBZ$l1 znx8#))q(+=MCrIclVK#7v@rbAmagz7NL(@PCazF$|CyBH690XXgH9gK%3(xIAu4T^ zvz4~mn=-mrkh0GV$$Z#3Nj0o~)74dRHCiNY4zJ0roT@Ri{ucIGPydKz?iMz?JJ5=H zCO=L?JSP5?&$GFaD!@n2y+%JOJsF;7X!(%J~MHh0AO*6Poof3SWN(ukL_vHOf<%u&>{$yp^%gAq=BPod~dXxEdfZ(S)^COMc&bTW=$;y&OBiyu$Sa}jibX(u1^LmAT((*+b&A1qix z{eUeWflYm1m~Ssl50d%PTTBP_5k$KIvY1~&L37&+as{*<$=yKpnLbzt=}Z(V5?@%) z6K5+Sme|h>R5!={UxZRk-*5s%LEMz@`@x1JXk6 zm%H=pNiTtuPlGY@#ca!S`2Ypbtz(gz`_L*V4dF;H9@> zvH?$?rOK-XBMS>#XI8b0vLL+8HYNGBES)<2)@5Qf=oJ@g++(OqogQx;HVPp>SX+<8?DF>nIv0(T~5qh7oONLYyfd1xq zp4RoS;^L8U&<-D(DJhcF2uYui{=F?Hq#mfVXpy`%c5J7HYu^*ea7gz`dV!^G%a0#O z0;Z~@WY>R_WL_+w2M@ts2-fdvVYh$6ZmH_m7GbUAjx)L+5`?iI8uj(1Sbf>atwP1W zf}_m#Sa33%)pm$+_sl8Pe+BM=7NhM#;=jQ5_UL;5H_)i+V{`eDDk( zL;KIby#llC8YOzv6-aWcROJQ#k|>!2i#{y~V;E2}6%{MQ6U*tHN$Ogu?$7xEI~ounl4T7ua6ME)B~6 z1`YhDH1qFx;Jw(C;FOp0LGJ?$cKolvy<+oi2p(?ho*tp9>kKjfG16FVRa{}m0qYc2l^9{7)OJa;~M*L?2o-hT$}+4t>0SpNm7 zelR0-z^dWT{zo+Mk;&V`1OIoE=ah1)ZFBK1NO8Uc1xx?i&Iq*;_qB~wla89I>WjV` zPQ$ga@)7vir}_8U7DqHKZzGuP03W zUDn|frxustlxIIqXYM9sn|X_Aigr9*SEOQS)-S(h~ENK;)9Xj{(qCXe$iZ_jS?+ z;KOOIkkJ9gbedD$_)UR2*n{4H%RVZy5Q&)e{*U|TQ3GXb+ zOv&Y`C2{~THmwcjZs=PJ*oNZiq4M%>&(6J7I?&gHEqPy2cHdD#9Z47fhRw+;oz@@# zvPAO7w4RohI%w;_-cp13Nc7R^5-^+?oQ_oyJ&|ux`Dv8hr9d_R?Gt&`rrQ}a&KzS(k+?H9 z*;!7NI9(fHj(lG$p);$cbI5#S7a-uWA07$Ikeiaf_*U+>5u2Suls9YY5!M z%EIi;j|869tgHuc)siG`9AZ6dEJ!}daMF{H&9*Uu1E2stELZnNKgT%Jv>~U_ z@2EsE?fZD0k`Z8FiLyr}C$*qWeXXA!Sgv;PDrd*(McQRO1{7QpuEAeDI6^*lTLFX` zZ&AnQszht1jjSm7gGAVf5s5D0cTPtN6FNE=9Ue46?2{R)w5i!(ykyG;cOVS8eWeoQ zL=K0k$Zy3LxKTN-dMOH~icwm>!8Val6*4G}t*;zk_r zsvXa*d6T(41XUP?Hy83~$pxdLcZ0N=hbGn$yD7{ajYrjv%89UqeV*t6swins71eT% zNbhQb9S7k4cJCPdmb#{)ZqCfq>2N}(jn0-)eX51bzCh6dUzM>oH-GyHR!B3PDQY{M zcwPmv`@N_{?fHR`^eYN%V z*x|sq4~9BYR<(-RL;=vX%P-F9E`(c11%Z*mlVnIzUJ#&cP-7yF!(N%~0pr%O5J zD*PX8e4!jKbto$w{rRmPu&_10{&XLZ7b#fRzrUu=T!QdYs}$@@Fl<)?h;ZMPw(Q=D zlbpP+ZJAlXWWpsVRlX#S9`k1PSLaZU*L4;f;#xP0n=cxwoXK$xqX5Hb$SJHEli@aA?Uv zL`y;8;>9ntU+3n!`W5ocHdjRsvBggH<&|^R zzI^kBHXxEMdQMC+NklCAwy0fkbdT8}8#0o!T+-0VX|*U>dtrE*rc&bKS!+2Y1 z#4oJ%8JpY$=-~LvlE|y_as!R<-w@SO!==^-f-#nMzeCe+s>0V>7F(hECeO`v z%_}K{d6CqV)5=RHhGa6m0Zfw5tE_QwTaBi3ZL=P~@A_CRX*2(@fYz!)SF-5khy}@8 zyz}}4a#s)}tT9OQ;9yUVc9?kaOPs3OJ4-z5+M9?)UHGdn9Cv1=n|l2dzB2GCB}jXO z98Xv(whdSJm~6g74dsEuJj}N3)(KGK;&>~U;j^zlmT;0ge)*6l=|^Sb`yD^pq6*Vo zd)|N>bG_Z6Z{9~8Y`_Y)rE?-qjUHd>K`yY3l)S(cwz}kiZ$u=67!=g_7Yzpr|-mb8b*9=W5RBrH&HmGdA}f+B$bAP#4h zwlGD59R_ANZ`ao7?L)3}if#<9z5hMfU`m*sfyLkHyu#m_c=LAShZ4X_#+%O5oHNnC zJd@V{PFaEJH;Hc6#K&(;?d{*-GftgdjSA6jS!`jHLI&xv@FIO!T?)ejI2vk7F$P{& zIZvEfw5<=G62)?}a<9`!GB0W9exvgVnKlmlO?bBO8_cq4^m);;>DnM=>{tPW7iLzR zyi<-bx5M3bMt=fOiaU9#-n&l+98onh>BC(t;vmajQ!I8DI%etxnom@d31s>31;1C!0ki8-6Gz8dOQ@w`AMreBPi; zc$kKRA5evjpJVZH;>`I`Jvp>rgibg3^*-cT8Z-oEonmcEMrXB#*a>U2-(s{6wnw=7 z@i;6$`@M8yea%Duy22Y=UaMxyTgOM%oxgvW6?V>sVWW@1NY2*J*4@Jre*;-EV&YpY zCr~!osvIn)hdIqX=S)_9d$Y+V+OYg%{=hf)g(Ww$;5RdhZD(w!0K8&-^)@u2b8{36 z_zzx|iH|AQKHfr9Buv(cr>=Z__S)v^aUyNKsInSdE=xcvI`cTqKi;4**cq_9DyWfK z_aXSL7|nnOalL5ClYw)XZB+N=j;OlP0<^HCsmpaRu533`<|}-S?%g4D`>Zc0CsJ}% zQ7LDFl)u7W$bN&0_t41cXTlH={A>!J=%Hojc#mH#p`rIZJ;KinY2T74{=wptZo*A^ zicg<7ep^NcJ-=bln-OUdi$)_>eUSmEy$7mvaTE3@UbK6dTTNdDXk;z2IBNEL2A$2E z6!mwqO-3Kx{^0SwgZXxB(3r8f&n>QO3FL##Vo2b!a(kos2!G~E|E5PpZ(6~FM8K3W zd_m?KJ0WkKWM;^NSX=Jk_dGv7S+;*Ak4?x{YJKuVfB1PN`dKf#6a-R`i6#9rZPKfP zmHhe38?zGnt&gj#uRs*}0UCLyNk`c$ZP-9P#;{aD<~3ZWDul&w2g4tx{t)FQd^7>V zL~LEI%@4;CciZ4kMMRga@yDi-H!-PDgy=d;osV#&c6=CBCi#?}O}$J4up zDj#$eZq;9UEsq->LuAnvuPCF3EsQt`zkw{zz5nv;mrCOT80lDeYi+VC4UOD9GSkxX zg`~YCM?2N#tSM1P)S@r0rD)jO zaTDVOQnKNhoXzmd#iMn8{P)E_Yl=_tz$~4BIJjdoKDZTfCG#ea0?Bk<`O7C+%*=5c z12S-m2Rlo%0#>;<6!Z7#edW&Qts!lPR<4WLQ2WgAcA#bO-xt5DP3 zHECP`fCigNLB9g?yz_#I5peE&mu~;^1#Lj6via$=ZZ%g}-aTGeeivr+ow}~z$2=dq zqT|=ssD@8g1?!8Z5_QRJ{9;d5`X!_xwl;U>#>vx3%zSrB@*f8u+p2vz&x1nbdfs6RV{7fA z`%qG+e99IxWE`S{C*Iv^%z}| z>riN`3u=OM53(y#0zgLQ)E_kNz4^>Tn{dn}A6#{ywL%D_IdV@qY%*jF0;cl8CTC`T z+ey-lCq}`+ijT@%IMiLQe&sYi{Zt%w16TonIYC(*W$jl*i&oaP_FQV8@5_2k$aq=l z#ZG@&k6VJy6sFmx5OKr@NLF^1T(qt^JgEXezliC7yfGpSN$ zu#a^Z0i3p=KxE0l1rHKZBbDstYXWPc^$UH|x9V!%2FnB%2zt$LyF8-6Eq_f-#>KxM z$II2w@ZwLNXX~%0Kyg>ljMDa^*l~is?-nnl(71#C?k|sJV5&%HxOBj+oJdDzguC{SqGUfGGz-zWT# zBYLs|g`W@GC~OuZ+$}Y_)U+uC7FDW14iptP_+d^1zw&6C4y9b0v|Pt`Ght(KFv0 z88?R4#MdJRQZJR&7s!RUHB@(()68#)zi+XLN0(;gQ7L{ zrj`9`64I9HdRW1ZR+pN&w$V>$=v*9%pfqULFaRO;(yT#qywK1P%9yhv*h9;d<-N8!uH6pxc}$yC;xjCkOB zoi1EuWN(cbFOi14(3l4XOuBKSH>%xMQxC-i4?GOx@ps#;AdFXTjS}u+PMP=v%4&pB zYEXx&wV%~5m`T|qi2hDw6p6I8UWLbu;%9D26}^hJ#w(fwz4W%}1&a2|ymRJcnWdn+ zyTf^bdz0-$&G(X@faV3=^tdLp?ttw@&hW0Y@9k`HPe-bMH>GnElkP?$pjMBj zlpF1h!W2hgl7N%^TR^iVvs!A-SAuRa44_>B=yfK5VvJ1OiY|#HDR*iz;M&=U_tD+F z(akdV)B<+|K&R=#dBov&P|{IKE*I;MC>VksHLxWy|S>5@k-D0Bs{SLC)J zdZI|d2=1;7#qXo5b ze`sBpX8~LyCy7P*;(T0Bfn_Bl?KwBjL78@09z6R}QJiau$0`H0kH6XO69^HN^I(iY zCo&=3xL;UTuAw zFZz4*4J5}fb^UtZyiv=uUT#MW9S4&>!`%nLHt_M71$+W7-CD^gj7)Gs?qd|yz{U+8 zn+E-XYQ5Gd>x8Wc?b!^-IIpHj`Kh4TzW&tr{i+&V_tjHSwx|lVdq1z`{8NwY!LRP8 z-|AHY-57p?+0yaat8q7G(y`V$du_5oQ|sezDq8%y95|=21m#KC(bq(h9OL*bGQ?me z3rIm4vO$m7(Q-<%l&7mtIk194-^x%6^{A%2m92xGBY63UoYV+jy^!@gPoBTY@1dj^ z7JF{-hTkoL>A`Qtjz7NWWEu+AL|j$+)`%Q%AF^!Q!;%cG>YQKNCPFN|-gC%idcu&yQ_ zkAk`fvG&1I2Xw3QP2PTmi)ib0RI(CmyG5fc)3yMA7*D{4MsuFJ9TxY{lq)=n z�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%0DyeuNjmt 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

    $PS|d6@A^$`A%D=hH*q*<1Re-Ff z*LxtGoP|s@*G&D?o4C95e#z?NBUjO=`~qXv+JsH=dz_Ad-o3iN*XHZ~2zYsu(7q1M z{hEH!#ZgjJZ9GM0ic@JqhM~F1aIrd0rMI{Q4~G0z>X7MXb=YF; z(Ix9X2EQ#Ai#xf(z{yOncPu1f+_D>Li;Fi7c@rTpovMAnGLo)+RLy~eg>|T~XESv& zG2rQO0+IQAdr$Wkbn{2takQuVH7HVWAV%`{qh; zU_VAU8DEbUbYb)!IxYF~5fkxP~<9E2MU z)9p}4I5qL{I+EGhcG-{{51)>XLt7WQp?>x_XNWwDnK{{hJ}T@rRfin6O@#-`SU?ho zPEUg0X{i7*O~g5HSWqyTD%Mh(wtK-JCc!4(o;~MIRLn5cTCn07!;BzdGV zE^{Kcvt!WhgzL*md(Y}DPyYR5{T~mnzd^y^#0eY$`c@GJeu2wk&PMYSPKj_X3Ez#{ z;rb&hgD_I(&KF$?*gqcJ{Xq8{7QHg zl4T_1v|E>R<)p5-Kfd^@$wBveiR9i6?h<-j-@sHgVsW=ow_; zi$02?&24KIIcy<6z8bX)&ek&do$&R54K6d&F_z*xcq?KtdWbagjS$|xvIlSxynTh| zuJL%4Z0E4f>EhmMdbt|(2QP`NoN#dXGwes5->JAnUMneK7ES$N9qw1zpU4~dXozK8 zkQ3%J#46gw@V>iavg`YL#ST=wp_z(jdMe+L{jqYX9czIm4V|K5Zj23ZO&N%*X*K9) zFAKzpjbgN8RGNe&T*#X@u_H?gLgKRSB16wCXUEnOtQF{ z!CMxW7thsd(u43wR`hNfd`lO-@|k?KY)nP5akPBaJ&*ThhRN^^qmhq-dyV)t8?lp8 z(a*3cTZMU=v)@|!bvnQ(3ebb4_$|kzJsv1MrU??4M}`-lO=;j0;8TQAzYwfooNJd3)Pa*Yh%Ddzx}% zOs?PS2(2Vsd{-kciZEdO@;z_m5WIj!|KApb(A3o`Md1whr*>vgU-&FBQ-33o8O>$8 zLiWhaF-`3+sU`JaQms&ou?@2=l@XmzeyY+n3}&+<42z)lIPTdujIcu7JpV&dc%oxQFt3-~@C8%t4=+RU47xSj z|8dqnm_4C}SBWi=OHfMgQ@dF z?fX9*&`hJ|3aH?I{6)Qj?Rw-U$Ec442K7qZ?K8x>AQ?FZrRHp$gEKvxm#-eNLDzO} zjsvHS;co%cZRYM2{JDPB@ynaV=NFj1@8?(vk4vAC!)g{cuqdUSm7$amD4}4g$RlVD zP(VL_yH}8Fz&#Bl%J|J83v+rFpI15O#N+uNx7om9kWC9Y4qkhP1&n9cgg>0uJkF)B z1TNPOA)|zzcQai*7gc||e=d4o5I=$V2ma{bchXOKT^J(&z83ty1SNpsrsc8T#`8a0 zel$vDN&a~?FFaiECg;%g75hLjQ@dAz7B~i%4QN@F5J&v?HBkk?uf!9v2dxDa*H$lM z3gSHW!&x%P_2rqaf9$R03N(kyJ~PCHe>H&fwON(|LXepS0x({h@cy}9$KY)ZB}9k> z`Hu_ow*WF%Fo=1PUjGkXuA7bU9>Q0SSd-iS*5Dm6&G0MjfjCjGZWUkbKMjnoEzkAt zUH%B-i2tkK2k~5ptKOCbzovgEWTXC{%V!z?iv6E2^vdS>@)7>;^8N4f{qO1f-_wVP z4*wfG|9=ghARpxN!bAv^X)&v2-UCGlR87chdSn&I6KZPdi+R;@+H$1cmC2;Bla_?) z_ts?MA$@!iz`0LepDj}2Fe5}xk|Kci1d;MUTRdveZkGG(45&(eyWJZst`>&;D=l~c zv;`D)fO`tdFQMCocjmjD*TiN+grrTQLTLY@M`YQjx8bF2NiYi~U1?7yf={E5hTvEQ zo_vnA&w&m|c5wUBEtxCR*2NoJ9EnN1ZaI^=>#5;mW!ymQbuYtxRd1mS# zNuAdMiT>X&0zNjOZZP}&Mf?VUEnF62l34x~{2gqALPN9t>l92Z@~xU|&Ew_gR;ek5 zwdP*ujTAre-Xs^hiALL2#nk5O`{9vM6hg`x2AcuP&gsb{sZl#kU-8m@cnPNlAky(S z1~|$sL6|+SW%HL3v^4(QpXB7JC;FvQ7*d)2`br>1PUO1C=i4dxgo&U_u6zLHEfyBa_1XNOUl0Bv>5B z0rFu0S5n3+vV}yI`SceVh0OrDDzsf7wU4Uqm#(PHkI+}qA$&2wgUk$EqhC0pm@iQS z3LNzDZ)B;1e$(Hh3Z#RZE&heAxG%&RqyMn+^y561y@Gi*yHq(fh2aV-v%D zRe}hk+$|k1&sc(rr}JwbALlnbJWI=u-?gQ`?635CPDLfhz2n>D_N+pzuvSGSy+0RoDA$#Wsw%I zI+t?)67Ah^@o}@X5vtC2+D0=`ZS3WsT*~5$nIhiA-aoo~DQ`Bw(X&GZ)Xf0Yx@dtP zys#GGX6fVFs4BiozU-y&&kXnd@{X0j@fZ# z7ONz4$Nd%0IcL4opxE&DNi!ym^?HDn6&Vb;H!$iI*5G>W#ObGXA``*ZSS~j<;(CIh z$gR7sX{-9aLGKnaWB){b;-h}{Ya{_BP?}R8^4%g zOt=h*%{UalYh(zR1LfE&R7xGrpYVJ$xuwT9n?_nIEg^oVF8oD3;gi~7W ziDhI>28G;C$631d*KMi6wZ;3VEFIHE+RApuz`>GHT4>kXG3FdT4_#zcUXsVVj2*%N zl+RYReo_2WNqHNcit!J;46h?Wd`TQBf%gdiM)?=!Amf|)btf1mYNe09SH#LYgv++U zI>(L9(5JK?lROJBnw_7$Reqpz)_dDtJlj(siR#SY>Xm&yp8{cN11z_rrxBYOi5XM zyIoe!v7ds+y=*v?n;e}&+;u7MSBJk|C?+RSp_}(`C@(2`VB^6iL{vvGS>xD`Fugoe z7(sp>7q#6$EZS}|C`MtWo2&mcdJK#fH0}NC)cuqM>+7I4^j|)VejJsPn5+y-Se@tO z;)B;8=GVa2p&G*T3csCQotu>s5s%m!?cKKWQ+ubRlg^M#GF1At%e~dOMO=LQ{$-HD zg$JozL@9o)*mH&P7dAPiIEddc$!WA7w!&qbVV`R^9+7!iN0w6_nj$t$GOhc5T(AF( z4_z+2DOt;L#xK>~y;aNcQ~E8!2RH)=L)=pXm-~3t3z!3Hib6W%wAME+npJNT!7CN( zjnLXZV-7K0Gta-CzK#|y2p9Z!%*l3Knw8rd;k#6%nYhE_4QCMitLslLZhRDxiyDys+Bm54>uB-W`O3Iz_{U5_i<(r zjo)_{R7RK8oyx?l*n5DjSjm3i=p|w+9NDeF#}FJG((+3$G$KET%eP=4)v!{v(6G8+ zysa|R$0bY-iR_1*EEt~)cC1%6oCG1T8?pk0;~!GWQ2blM-y?G_7SK@xzC8%O{rC3B z)^5-k;eKV+WD#gp$D!kLlni@JXFzy*GC*lbag>$#V-}-)KoRsu<%mL}>7!c9&B*O+ zlWrxkQVki@OwY#jeOvG0(E>=|ffax5xxpJmH#fj)wNNnpep3q21HBx_1&T&~Q>~;R zjx*A;3N6(O3(VdoO`U5Eut=O#3KZDh2+C$(%Riai0ZMO!KO_iM<<1>)CNcqL0BwX% z*WP;yOk3%qdDb!jZ1AKo3e$@9PfSQ{YPhVV3V6U&LXA*Pq*zz3jTsvfa+7SW{vrq9FY&PuTHh{InktFN1`$lW*^nA?}hJ z_-3rf1He&yBYWTL3hg%yS$Z0nW1#j!y%VbNgH>!WhD|Z zb+EXhx-;UlhA_$mT5n3}eGsTVT_w|Fs1xk&A{2-^*aV{1xiKBT@_7EfBlz&~LBwBSY<;JykVd7_H_Kq$ zb%4>ehUqU3A9p+?b;vV5^2aF`?avA*7zr%SQ!%T&l?MZB9uKJC^7hnL0jy7t;uSIN2x8>OC%j*4&l zhsil^Wk9zRz*~8n7=LkS5!0f$-M;+|*s-M9nWBE%C@-?r@^$dqp`J6%>VTg)zVn;% z<3V0zMZV_GzY;tuzM3i7JD3>)z(X$w-}er)MyS#V&(Q~u*~8Vs7-Y8I)Y`Aac=%x8 zL>|AGx`6lQ-96oJK^7HJ&ma+O2G?_FK$HK?2Dpu}JVutn1_Ks5zfo%CP-z`yHrN4-URWo(CUb!q-^*CuNEuC(Sf}MXFJFN-;Y*?IKSDoI+jrLH@pi*3ZP=a2 z%P6QGH$QH~zK$Mlt*pH|yZ=QDyiAHw30xD4sO}uD&TPHV)tDEc^?_k+>h48|qzACy zwqtI^`yZ`Fjy3Ocxc`a7`1#<5+3ULxX5eQ#hVi$TargFz!P|Hbk<1==C_upHn7J)_ zr7_-5UB$TN`g)K3@DAI}cRN3&aT)el;SVD^J|6C|IG)(*^?^B0QInuzNazlB#;*fq zv68sG^xFTon=@OzPKA2LS%CSGIYl!D=hN(SO%~_gJl;`Y8o5xJADOpgVS1=gPgBmiyR}aGnmB-7-*Yo}+JBZ#Pz2D41ud zIh|#_PC(_czBwRM(!&0>fSMba01dwRplK%J?5fb(3M+WPVk2`Zi=GDFz%wu}Ex5%u zFC*GPgj3eL_PYiGT>QX6E7b1#A9~+$o?R8gKhK?~GB}}*SqtYC(50Y_n2wc%yw=qI zzTShD%-vpOEOb;um5Ro4ufChbCWg2(JIx(`zq+5g9SMPI`{2TpLd3htfVf&>rA}lkIvylmp6Lk5~HhXp~*wJ0b*A5ArT($b2CVFxm zBr>!dDrQ&>p$6YXXYJ_~AG^W%#H4MZX ziksP$lVcK-yp1{S?a7Hm7XZb^#kM}*P1nlcu%kyBp>v;~ctOm02Tn4Lsf_cU`Gdq> zd@^Yc$!pSa^FPf4d}(x$h;vX-m=~vRe&OlSw%kh#6>0vtnYeyx(;KtPq<7l(MRNrV z+1rig69MK|a`c`kFcj`b#H&q7j?1$R_q@2x5!_TR|8s%Kanu4hf1g4``6UWpV70FQ zn+3iuES%_?t8ZBvoYw~L?GrJ}yA@aB9mESmR$h{O%6+BP*k?(Q3UOV$4`5?yRB&BX zR)2Z%VuAUuL&Kmq_xzx)oxrCCn2ZZE-* z#edgFEu}r;U;kB!AA=_q;ro2>y#gM^G%q#E^y^g#AVAdP6kjC+;mF|@(WHn z1Y7;L3mrV@adnA%UFfZ|mA+cHmdw3X{e{HJ)iYUaQPHrUtA)6tBFp=A#`i$j{>ZAw zio`Q^IY#UdSaN@s&>?04qwc=r2eTnIRNA?q-Sh%vgnTCoo!YLSN3p^p$>)ZH?tQ}f z@)$U&0e3RoL2Cn%GR29~wu6H_QY^gwL}3b+;cik%$=4Z9!UK zl0~rg(s1LDf=zX9{vQs6LJ_JUL`X-FK%So9$9gfn;A(flh2ds}o{?G4_jpq67Cl4# zuH3DW0BRCX{wgG*t7M$JVJD>m^c0L#@G)CK>`b?uw5j;!XSGf)hrs9*!^t0AWPU%q-*O*BeXDtI1CAN)evcC*tCu z2Y7X>mdx9@FODkr0_d}5-+Zew&++isc=xCzX)>q=v5o4Ws5|^5VT9!cV#F zud9?zS`2bT#w9c8_0|?oZr{Ds+#CKxJbxp;{}bl<7wh}o$!kO@N3%pw!CA5s1`8-t ziadb{7wyMW7C0f%KasDF9tF8IUz%LBv< zJohKWSco9vA~4jz$9IAufNQn|LF`@oG*LB0m6p217HtU>3E?Ei06-OWG}27n1LT$1C3&?BC$Ez1$~OOWJ(Q`xJwXhr zyWD$@n&+|eoVxlK<5EX2!z|yUQf6R(dxsXxyALlvNs>Dn;e)=sy`&-*0GNDIi(vFr z?d@#Xi|zzcM8ou+RolP~03Rx^{R2bP!F3CRNyO~n+y4IipdhBLf0?Q1x>oF_t;0MPRl~!%^5;@Mj2FUw+EATL+9X0E5T0!l586$C zeVrC=qlMZ{k>SR(1s|X82ASD+v9VGw6hWJ(5B0#hJ77=l$ReUjHoOIw(`m@k_@A6! zoHyaWUQEk7xcP)N{lCm7;LYS}LB?~nHcS{0@iyb-FtzHzydG#7)g#7Gk(OcbyzjnS zq~DIgg}fG;f!=CtJ52y~&xBtZ;=F%{)35ZC0hh;50VTKb^!XDvSZtYsa^5eIH2Cy7 zwf?90+ulSJnmq$Q-e#CUIoT3d^9D4u=&90#JN%nN;6;DE%$_G_TyI)>O0}Hr_`;Po z=h~FXO8Xz|1I1;6aU(@BJ$B{c=}4ra)VCsme!xsAZQtPHl59YoURGTwRrjKztuTt+Fx#D!FLX(xudLBa>Zk(bAN3uX~RXoy7@R z(h8*>x472YKO~usSZ3yi@`VR@G|&$W&96Oh-~AL`KGv-3R% z1&r5?!zrYH-qSLbAUi`jSjGtpg^n(;@&)Q;qTO(?Sdr)?-^)7i=ARXA@v@}ZAd)l1!ry# zl2RyZQ{^5^D^I^cqWW;Y@_)GfuEH_UX+_1~0HP!-p0Sx)+iLgyeRIsG=fL zAtqtb5K|M4Qeo!G8IUYVGFQbGF6uAvWn_5M((s>B+j-LxV!tC6|M)_a+yANvXKdXr zk$PCex1~66@1Px!QJAb@A|mS&`{&QmC_E)^jzyb;uX8x$seE;J z2;m+LwcU)e&#+N0-9B*Tz23JGTgq~9GL^^Yd$fM%A;0HeSCEiV|F8DmJF4ld3ma9` z!7^4xK`B8|k+Fb+AT>G&qLhrHA|M1sML)yN8w{GSy*7(b>oU`|Sp8f27>9;M3iSMsEswq3nt$1#1&WaEoVV~#uMD{PXw?(L$5mcMKNdEfQ4 zauc?>%4$h$^2}~SEK>ex$D)%IhTMLK+ca$_}Hma7(3)h9bB{S7F|P5qdq@B_4}tt?zdl64txq7 z+;6o_$lPbFQcAyC*Z5&uLG_=#za4$K>Ad^F%4>ObRzc@=H%eXi?`e>ROvzoRy)H{Y zRy~eRerM$fS*^6>Vw%+J?0;|_xZtv!51^Xpby4BlaDI6Q40wkKFOKoa-ro{>hE@hAZx$+*oR1v(( z;>g9E$Kb76Zs5G7;Il4ahlCDPeW3%;e->?Bps^Bt&WSs5NTnT0e<8Z8OhEXN*)v7C zrEUkD_@e#f1%ai9Nf z@rie{uJO|6>aE|uO!9|HlLX5Pwo9;_qv5pQZK!T|t&-u>1hwz?V@RgNdHEBMxtQMg z?vWSn`z4Y;EFyj{oNO~dp% zT_G<6Jf>oU6XChmriy0c{sZ=I=PsVu3;GVeU$S`BzFzR|QPpychIsIi&fh-L3Sn=$ zx!i!z1a$e~4W`xiEQR$*T!acM2=i;L=&q+4A9GBUoR(NuNT0M zM5p1YmCM$tT>RjRF%Tbmea|mqdtVLhcIi-?M~;OirkBAF|H73budQ08WVpCA61m0q z_O>$##k>FMl?BS3#6=N)d%bS zZs)Y)7C;uqsC=-BH(Kc1UB1(0=2kp*ry^=^Zf13!-J>Oc47Cn52pZ#aRa0Ej%Jnv0 zRlsl`mrlHTZ_n=!9x1L6Um-{Il_g=AxQ{nX8C=$(1IbM*^SoO!)9pe>iNsGtyYz8l z4`HwJQ*Hhr)TY|6W|AFHQFhXF5Zm#OyIhNt}_^ z(-&jbUmN6o#MVs{zxAFrL>Ph=mpoYV=rM|{%O;(F>tU$=lT9YRC_w7Kg*k34je6phB=e3(0H|8r4P6WGwveojIMww zqlde<3aw%ELK<$nHnX++#3L<4Tg~Mc?ry zdev`wI{4O>R$PHQ?-e>Quf&mem1$RyHSx+5!KeujsG8=WJjeuc*6EH*;m}D<430A1 zvkSM+2TAS0G6H%PFnUXUdpk@l-0Ly5+1)B=TB&fV={4uMhm)`clg4JLtZ?M;0_;&! zM|wzqjnEci1-;rTPx(BGxVE$)Y-z&*eA;rVH=KXtB%HvaOpHUV4dBS51tPUPWz90=e1nvztVsuqGm{W^nQA!;5ay771`JCK7#GF zQMj-n$ji)_b{&6Tzg8S!d)doto+c+1Kl&79`p))X5l`j zDe)HzHunngQ+5B&orWw|+NjEYGPO()rIr@Q|9FTQ5KQLO?v0c@fB7nbz|D}FiT==u6;UwLXJDmNfC;eb~iST>^Ob@p6Nt2u^5qg zcO3@lUzJ`)wypx%s*xlk_(6pXBzxH>NS@*`&B; ziJyP^H+#kGbWCM*O3omJGpmOlepV5I7!hAWio+15O*t{3@J7|#dMUI4LP2?mFVqYE z8p+q-YOOZbcS-OSjCpJ|2*B{@+L`Rb^RxH2rc+8ia;&HSANXrZaBlNgx9%#y4S2#y->-<_eDAG$AC} zk(nWWKD-@1S;_4qo{C&g2pvtGp>?TNm|8sKj{j2@qUQ4#JiMYB8y2mIO~=i&md+?s ztekhvz8xampCqxf%Pv$3S!>0Isc zFe7W+DWXSPO&G09a4zaXi9n!WXBChJ+VrZKLgHZxq>-td==ZMNxK(IF-DL|ta)NweuQ_P7$}t(~zA zd7N4Vg_u2Pk7jInf`Vd&Q%W#jBe8ZGzQoqkVRrqY6hCB&{=)(R|4JWKY}_{s5u2Uw z91ET1h~1pRQ>t^8qj_nbuGW0{yZ4sSuW0F5&zN`4|9{$0@5kD=Q*`-C$gZr zV&H?jJ!(UHR}p%rkC-jCV>gL??`p1Z^%MED6x}+1C|4mJy@0BZhVpUj<=0xh|8n3q znOdh!H2tFhvvE$-9Js`1S6IS!-hP;`FZLZXzUThMfS*DE?G(~}<(JH1B_Hl}_n}qzp4^D`W|Vtp1TA8`LbL8l4{_brdpoT)g=2(V zZiAXZSf$GJ^G|(fqounZhtZlf3Cy17w7-_6A8XrLN)f$aVl!V#%pcH=p zV%CS^ys$l%=?1L9M*Nj;6zlfKuNlDRY~- zN0qjTYxQ2lIJxcydtEm`l1?I-90u6W#Y_mNrNNNMK;OK9mMyk-HbEJipvwnK6>CF_ znAB?*4VCfM_P^9H4uaE(2`kxtyy6PsQ3-Ep&yC}WAXW|H&+!e-cAgaSLYrdiCHIF` z@R!A0^2t*1e~qbi56m=dO$xA!n6&Pw8E(d&4xuO*CI=78w<%|~!AvTN&G1S;#fC5b zIPhR0V7j+`R>9|Rl3$J=#UU!2FdQWxWmhvRk z_;h5#+IZw~C+@qb*ZD18#?Ti7i4OR)dT*A%&?hysyBEhKW4(toRWtfcTr{Gtk#Uw~ zzH%1aATQRzcy4QwDLcYN)CN5a_(uEZ>CYjbTsh>5=F$ebE83SFF&LXoApc^?M!ju( zJEEn5$l9vQm{*ZmGkXGm*SD`yx7D$9Tc+qOX{?A|it*tU#OLgU3y@wX?{kp-vpdB& zCal49^iUoH{oL+eUE{0UYdu@7Q2}rDg8MF;J7F*=V$I3D_!Oe)P7h%^%78&ezW=PH zhZT+%*;YzC&UXDoxdQ(e%N0DoDlT-XrFg|&Qf8B9m0|D1bpo~(!krj81g6f$tSNVi zLT0at*10@QhK=hEJxkaIZVGxsW-3E-_w_S-C5|+(7znzC{>xPUU&+OpE^ejs#bqAM z^%dO%HPeroN4BG9+ljv{SP|r3D{nc{W~(U}(luHHJSxVxs6V5l_m&>MI|s@wz4cT} zcv=2S>gXhXLyAQ`&c;z+&}JLV3W@R0zpzpRyytZ0+IUfW>6AQV&oG~!w(8~h))<}k zzYllmJxnYw+NtRJg|20f`z+9?WVyoDhxHS3wuInVG3LG^KHl0uz{kg$LG!{AU+r#H z*s@~uedjc9tDcU>*-bm~OyP>rH6_B_rn<&oVF|Y)6BIly_rTq9;wibQF+gF6nl(^G zQ%{Op2)VCAs)#n`c7|{ifh7+{KKW`#&0rjic-=SebSOq)OL7UQPSTPUYc6A8s$Vkq z$ZTMCIdJIm(2mjePn{Z)i%&U3*HG?p#WiZ1avNwY{bZ;51L(n#EqtKj!-K*_` zLf3vF$aNc+0({uy_8K0azUj!RoJ%p=Lf-wRl>hu{p0wC>0$g|8@t&vVS`dw*igz9R zL*qOMN9UZ(G^GINYF!K%Y~2nUab#WN^scrp&8IWQl*10F2?BAabH#Xwf4~R<);uo0 z8i-VQb07K78x;NuKPp1rG7j-6sblIwVHB?_h*TIDR^o_k;00xB2R&b)p-d5ac=m`< z1*{q@|7DHB$y_38*a3??uFon8oz)<|je?$iOXVA1Y4;Oe@baBWs#<6{HS>wEmq^@m zw(iVp4ai*yGvueg9e}1Y>a6sj#~-JnQZ7{aa#f8x@wDcCc30_Ohqb+zNY$C27T~eL zm&^kEJ-T!ljoZh&lvmfdyw(1qK6-5@LGPVly^}rKmHQZ%vi2WqR#80uj z-lY6)<#5>pt|Ls8s%TSrFrVJR?}t7K??}QTad?H{YL^8X2-EZDhM#%17S*16tD{)U zTMI0ekk3_h0n%X}5|xvA9}F=BZ>{_O9Ke}aCRE#}dg8C-ty??D0j>tb%fu{AQ`m{B=9${u0@;9m6UQm$)#%!iM5U*@wGR7*u`U{cVdYv+-cl^Ui2o{`ohE9cOTEpw+O#UPAgX=xc9iL+C&*VC zno#3o$|b5wG?0wskz?q7yeb0H$c06MC@&8n`_=4dHRgRzy^-OM>SGG+$bEl*p7I9e zP|;(7aY!e}WS^?|L&LDW>sK1`RO0$4MUJW_zPB40Q*jcyB&QBfDT8qU`4{JqPu9$taO~>C`mlMq*ysNpFHRIy>-X0TN zM+;$G?sgWdGd?_h7&iU3H;`NlBT#k?d)MBtogB=&xn`Y~vc_A9q;!Em zxhoY12O58qRDxZ;RDvB9wH_uE|4&Q7%o77-G@k^La{)!~O6O5ekUyTJKdXQTJCY|F z(ECR5-}r19Z~UE{Mvpe$#Ai0UA_i6djm(wt42k1?w0|6GE_HG)L(go6efq~?Z<&O2 zdA?K#@fz*@eY#^@Q+1|FRDwC|fEHwDvn4ozt^NF3UckP$Oxq^CUyN%)$tx%|!L!D- zG)SmXXh#{EW038wEq)P|GYD!KNrNhvG@`cn&VEwt$hdW@RDj~ZJlis^)pkCP@GD=S z5%#G>Sgohf1_qnUOUdA;1vYm*$$n^u{13mdskh65bBz70s?*ycx!}peV6Zm z4wWYrfd7mF0l2{k1lNVcT8GH(X0xKwnF9Fw*vgUNB1y@pd;_}YwIVi_iRAywynRS$ z<;1-M@tUb!qvRMamd`r@6F{Hf0(3IplvN5wthH@Z@Qf$fT93ndB^@2Q1e1ZlU`im^ zJ8>r-Glgaq1h@??KxdV^OuTPbfOloFsuskN^6Gg@LDuc>W&eXY5FYNT}Vc5Jr2^?1ZdBcL0qLHi48B`BKS&o4|aa&(nfR_dl}X*8&% zbk)p~?89D~uV~CLyMc|qWF$8CY)%n-OwrbG5C7hrey8&als9;ucS2AB&i4f|nRq6S z?q>u?^zddp2YbX92|6rl?t22iyL7gcn5P^Z=v$BIzgv!`rz0Y8zzy083T;wwT-$6) ziohTVQ>FXtQnxDwI`F~=wkLo0{lL0P`jbKZAVRcywj><*G?tj9P>rmm{v*7-i%?;n7ELOErogIjrGL z@J03C&eH2R zL_GSX>r4xt?~uXC3Z%0cNx~!U=*Wa#j{p|4Yq^-$bd;mA&XBf9+lJ+!=8Q8NM2CPH zRMk{HI-y*W(Ru1)sg&JcMbyg@@*K7J)FcT6yxv{RP>IfPd)Y-VX~)V1j&=8ZYVa{h zL8tK>70(+ENR-mg7q@C3vVfkTkf0;fta=_5Ow^m6Hv&_xoG zupO=RU58sA^?zoqH@Il9@$d9>V_pMkxRtnTYI~IYz22Ge$?TqQF=az-)ce`-3T-9KbABY45|ioh1k;4`7Zn-abme1>}GdF{qk&rB4x(cGsxYj zkKUzf+_9xK$gi(5VEPJb>P7p?h)_umZc8#9-f+nmmDfjd)#Y+u?QYP6X@=2;CULRt zNgipMQ8^bLH#xBM;*v2o{@(TtnHA8Zo6%Vqy%GjpG0(Z&*ER|)tcI=E8XUp+siZTC zc&{3Wu^3U2e|N12G3E}z#EG)x8A0QhReFnkoXO?BE@Z(Z{z!Ft-GLR`R5*WY<}T7y z!8=%;abO{e&7#87NVlV)dv==4l$K5xhV*&ArBkM>voHU-B1o09CdGbzF9$hpEu@qhqa4r%~ zSc^C!eEC+-GcA8DemGHCON3*MYDaAhCRa>GCrfH&*9r}}TBL=Sej1g*w2Sq#* z3&guwav(j<^x^fI-H1>BUWl=XPOqNzv#!u%ItTo#?%V0Rt9anmds;G_cQ-;i#Zq}7 z9h*7UgFe!*-p)n^aoUOX36A+lG{uI1f|jISgxK>uF>TeMELQLJ=nYAXY|SUht1Ly9 zD{iQ;G@$nix%7D3%JGZ!vqX&HumGo7$eV5Gh{g1=l4Atj8P}JkYXvJ<94xyhS=_3p;e-t)mVW^uKNmwOu=6m z=mhax8rf&IBqWca7=c9wjiS>r)W0>&40l$OYCE=2aU*vCzF(b9PC#bV|Iq*)xl$Qs zRdjUmNTwf#y#XsCTeFv*v+41?2OD3jlXl@TF%927)tRcK1Ztw7Xks)&Mdz#Jtx-xf zY1iwj8C#pZ>WGPf^OxFC1IE3XgwHAzL~|%2zheTOiga}LltP%DZ&qV~P!WHp&^N0* z3GO4OQAv5j!K9SCgdXti7o|b9ZDT}P)V#h{N&wj)BN3r5j(Z$V)+KhVe~GAo+eCkf zKq{vstp=9njMWAfL&0GUlD5ZR%c@3frQj(Fl$(bxH-$h906_VD??~+PiMS>e$HqSZ zyHTZUf2jkyF7lmyNhOZNBloo$kI$CQj)%YuB1VX`u2oA@gZJ3FouxT)4oeDyc4rd& zpDT-94tz|NQf?J?7Q3v1&-NT`1U# zsOqIF)gWS4P&(WUH<}=HUD^Rhrc?tGgFKd29Xjbsx=$OZ5(|!3jWET#awE(^>1Jb; zR~#Rdt*z53@w1OqXoqKsd}}a5OP&e6q|3WWU4P zTbbUhg*ncC{Rty`A3hZ<%yoxM)@#W>nxace>{O8LxZ>E7+Rtw>ZyWfCR+r+^@pB>Diu-&E3-KGNY&uTbs`a5>n05%aMch z){G*bm%lp`doS3BWidMt{o8jM4#qr#8AQ!56h(>CgHK3Nph?)h;v zspFF|CIKK{q3tSn!UguV^~jzrDL_y_odM;^(BQp6jYYS%2JX4iIaNB;g2>H=Ow>KQ zzUx97<#kcm`H}#eYAB(AeEAc62gKc&Lia6kQ0MEQcxG((MkL83`mh;M2-o z{I9T>^b@v9mqJ+64=h@VmiO{rV~cDLL1z(%7_+KAUz8D@6<~O;Z0ib}BM9cSkyF=7 z<*J?Afd=5`!_IV+6nekwEBv>HKTGC7)$PU;l3|N1^X}|B0Q#a2N46)ON_*Xt%c+Dr z%?x2}vY6ykp!!Z6SN2o6p4ycqBs;FG3e3ca>J>js^oL*>psc=4uawa*sn=|Y106_X&)eRd0NEi9_1&uWDDw)X+p7;1OY)V`rILIl zb6%uzOx<$$ERrlpSQ(G%SHSQE*HA~AZ52=7ku{Li|yl630*Zq27KiYR$p`fRg%`J)lWYaHT-DmTC4c3b57MIfSu6_&Ayw zcEL#)QxZsaj@tRvZ z^0mXSq~WJN(5j5TR@NQ?1t7n8hkNSrIjx23ycDGqSK~Xt7%tyd1ublkSyz@szml}s zf9&kEks>M&B=#Q{^rbjwJYVjb;)khLKftLNNw(_esGn&Y5vT`-w0jp=!b0ytJ5SDd z6Xwb{+N>Gx;dPot5GR+5m=$@*8jxFRF+S`z!Vh%Xr%#UL-MYSvxC9n{Bn`BI9YJd@ z9^3wuR!_yMI`|w3n34~$6dR8g(?<&=@@;>AEqCk{RS@Xp|7Lv!hWK@c7J#m=_4^Z6 z_}{)_e{e~3a_s71NwdHFExNZs&x{Lyca1n1A9mVs8ZJj%+KZ&+(xxhEgUEzWO_kOudG86~ zc24)r4}TTD+}uF$U$FgD6z$Cq<5%4uBqeCgmy4Cm3u-wq{r~%|{NP{sbIiUmqDD72@n%f#tFL4K~!LyiCX#pso8g7@3MG-wquX0CE? zxcC(OCj%>$e8^i#kL2SY3pxI07B*+%Vr+qTUrK)O0#f^LI$?g{rLEG5{asLKKJNNJ zrxrA$!oCxy`L;=OeRSdCQeZ2dk-t@gDYJu(~pF9 z^zDT|=6v!h^*<{?orE(RN_gOtDtzQWznI11C+4OuJf7$fNya#ysfAt=tiqzxZ_5w(ddD7RgC<}B_ zG*E^^G8~f81c?j*@`O2*M#kb~EN<~C8OfIAKoX@&mIKLB)c+HbEhEwXC@Cr35S^)-qx(Bi6Fg+?QIUOmmZIZZgeH)_3r= z=TJrsWYj=L4P?|nMh#?5RsT^|W#u?oIZjrNlXZ-KS(EnPd){Q_I9WLkY{(+(xBiku z$@;Bj?eG#qkd@=+R3K%m75@LYn50!q>CYTHU7SPvqwR6Wu212~}N9Bav=k3l}?RuE7xH@Sf0S+w+A zq%Kmw{0CTIx$qcflTOD5p43C09s|G6Ws?yz|J?lBqF85>AK1;v(O7d_dK)tWSoj&% zrV{LP&N8#g>JN>4uwTB3hh41n+95VrJ5;%ErJRQ1iwrxdCYTDa%}K9iW#9Giqpzk* zW|YC!KjrEA3#8A^X$32P^f3=MxRNYKCdM>(bV!!;{XzU`eVHa$hGeHc0}f$&^6={> zV&4{DZU?_V=~Yzgpncow)aGRxQ@?;MH)PYYP&O^!7Q)HAHWcZpa z%dq7~e2_u@ciWILF&Pt+5oB53BFkI8E{&9>lmF4yLFW0tTbBR3TX4a=d4_3+4<0x! z%lLoH<9?YC^NssO%7mEj)K8|5$z)5JZ22uR$lzZl^2^lZZ{Q$PlYhhonVKw9lVxi1 zx5ywjRvxG@`uVGODARNq%58MK^r9@LZ&AFh!6j}smU@0`N!PJ6y)z4 zXUZV|hgrxVUk3Ry$d^I>|404E{SOR%)*ZCrbI@WAbhaALuU^?h5iuw@rWhio;4Az5 z_*C&U=90nIpSrL8%t4R1A*;76Vf_qfzE0#dPM+W30y*q66fd5QuMo6DdF}D#Dk%q6 z|A=j1N7N!*T|r%=pRmhMIADMpG(b(H3m6X9ietpQw zG4a_rHOLV4V=ZI^Udw%`XlR308xhxwKjJ_5{<09Xg|Cr%u{r~dJK+9ea8|9GT7OCF z0>LGg4z$Olg_3dZk^uZm@zT*;D1`u zFC6&0u2B?l@o(uSd<^LHM+HoE-K^5zL(SRcudkDs;yJ5m*}o<@L+W%6+=)ntc(wuJ zYGp*X9l4%U!rrXCHFIW5N!MoW4y$y;4Ld!Vq{>Hym$RqkC;5ihu^_OfiJ)Fw6QeoDy%13 zxk}tR&sSiMkgT0Jf8d~(R*BMCFD=L45;hzmiy2}rse*qO9BXWQYyMo{97tb%zpn9F zT%yHl$5p$1Mz`6U(~ORcYI@?=KQEdvw^vSehS0%!k<>J+Q4Qgq*!)p+;+mO|D$w9eIFteIJ-5uS|sf|$QoB1`^T-+S3Jf*I!Q#>O!{^jezP2Z+HdQqI; z>lXa3JwE-n!+wpaaT?O8FMoGtawuXX7`*hN)t-n0!0Rwhzirf+T7MBDeawu(mI)6u z+XGUI96V*6YIM7IEi02>f4`@ zI(2?_WMOgRMn7bu@@_0co*QG3wfbNUl1niBGTG!ZlEH7?P^d=EW z%!l`klemiiErv}{(IP5j=S{1f!|$67@@^zDgmO0>7f$-7<4Y;O_BzZy%#Uq(QoU=B z@bPY1ot5jq?ZB@^5Wx!w@_IX3bWctLW8nYGw<-DJ%*geTOJauLZnmd}PWWu5+vKh2 z@V4Fah%=KIvT{^>b_J4z>}*>gP(ja(L;)jQXC$Z=x1!VNe#E6QmvqM z10ZA>=_E$YR;)ApHRJjUgpe8VI5#KG|JRsvXI>Scp9HP55NL}@_$ty$gu#Z$1V-Mg ztKX(v;tvz8iv_RYg4e+2B||b*>2%xZZHgGawJf2MIPF2_HFh2>J|Ejuz-wfRMNBmJ z1uEVc1ksgxKb^efyb#4M!9@HUALur8N}0xMJtYLCty$mxhX71&>QC)7W1{QQ(8Hgf!}-RI>dPla`O{*i3zYtR+}erL|jXO%+mC4l0_Ahwix9i2q=;Oyk0VSEVJZ&hl6tu{&;mUbGsZ zh48`v?&V5b+jG8|L0gHzF6Vgp(K-5wX;xmF@f-x6v({3~bzT~S>~CBz9VyN)6pa>% zM$IEOi;JzuotDQGxxLYc(X-=cgxTmb=WYl_51`aO!FT%a!wEl9L`9-OZB_yLR>9I3 z!J1IqkvTIqUk;yK2SZII#jAbtcvyc0gveKzh&$rkUj~~imLeUFg~1P{E+dFKVI3pO z)AF%7Hxl)Mkz(%zYv= zKn@sZH<56!&Z;XlM;}h`Hn9H_@5%DQKUA6cvz30fr}1Riu9k<{WsqeO=*j#gysU18o)*B8l6{8fmolx(RlEA@ zze_7FRxXxu;8n9*78XBOU$$au6JD)5OghF$3~^h zcK-lN&L#am%1e=$w+jTBV|=UhDl4*Ke^4^ca#X`bu}SEW!;HrxE{cZmz(*l~-)%Hm zIl_9{zj9i2L(^o2v5(qNKr8AdVF8j%2r!a96m~JvG1A0}`jHm^CfSN`O;DhJCc%@X z4p8tkltbsEyWyjw4vVT#yM>qXgU+osCmlVeL3_Qjh-au>mRvb<+G9L{PDSaC)A&+k zZ@!%I;+(wQ?uRq8>1vLv64)mgIq|t&iQ#XNeuXK)<0v?A2Hm1+ynW_Q#mh}xS3qzo zTOz`n8z~S3=PAlaXV1#MuvLU>VPw=zjC(f$oOD|)REJhz=xy+&^6MYmn@hmbk07M*&gvv%O>FtZlmjKb8qbN@!AO34nx9uTAm@zd~iKr z3@?oD#XIdh-`5*ryQ%DUsY}D>vQ7D6IqN$1CU#nM1pDOBH7XBP&{1W^a~TFWZ;G%i z=VZIj=qAtVkpw3Y(GC|=sCl~*%b5wHn9Dq7Psqx5nB_4oT4DFmGwK-mS>Je}$Q9T^ zpC?}VO%z-BSr8>X442gJ$dCF0jBW z#}A+utT3OoQ!k6@w)N2f^u`klY(8=D-lA2W_OK>yK6c26IHFdGc2Y2xikl0AS6fMb zpqhWprY9&lKdI)?!=Y28qf>pSb$!OyUh6zwTqN8hmv0@I&a)U@pYNB`-#(Mjd9Z`+ zK_r9(JSh#psRJr!X(1{2DUWa2hlW5-9byLe2)$*S? zkqKNaTClOuSXzRK%#pR|7-X0GDJ74~V5)V!j;wsQTVp?ya9r5kH3?@>2JVpGhzaDNNeX)SFG$ zV3qJiOb*4=3Jo%wC`Q=8xcp>I>%$(`iFbfS4qzm~$J949eZ$EWo<9Y&J&`8+3CoEX z{hk6q!qk~j(^w@u6g7h7@O^_l^*Vbc2_shLEM>>&s78oq{7I=6?&B9gPthr4TZ*?$K%DL2h0NZ=BRW?QQ3Ks zMVlr*&gZ$DIwzXClNmJ*KHt==g*qSClc7tY`4pP+BQP9eN}oXl!%WVlKJ>()RCoIY zAQvGQrsQDs_a^(=n;-7stiPpJZ??yBF6o;uM|o6N0McONV;rlU=SDS%7>iZ;cfpSu zs#`e$wVv@D6}}4pB=yXD=6KaX(vA*HxMg`^NDd|q1ph1%(vQs&dIt2Bax+Vq@zQQQ zrhX^wU3oORb$a?qT2f{*!?RS>me>N4TGO!-NZ zWa>sy00ZgQmWmkKKqQz}V-9%zWDYCjAZq`tT-hB^19`=oht6X#bJ57FgouU*eB=8{ z^@K&oNcU?y^{Z@cbLrdi6I!0_xVo?Fgufl>PyZ(XOaxpjLCQ~Ws&U82l4O*Jx&ABh zLS(&jQ1al}n;8@Uv4kQ*M7%KK9BRhW|8Z=Kwhd!bSxl!vo@v*9voZ>W?me8A}$W!P=6dpYg!_0bP+6@k7r3{+CymcAUwKTg(FS%7UJ^ulQwrS z$*-rY%@WfNfjJ+?ZtY-9R1tq5B+IJc4xvL( zG8b8xP|n=VX+^zx@Y5F>FShY<7ggETY6RUWj1O$xEO|7q@+28YdIsf-a2a*a^mp?O z^?kfH^aU>m{~F-R;cuu6CUZ{^fBwi|1uNTgZ|?FeD)O(W^mLkcv{Cyo!qb{U+#waS zDsgobH9ji~VIcHG(B-)_Oy9@`?)W5m{pmOlxb%7F3vuOjhgNnl*O?4`tnM+n2}AV8 ztz<^{!Zn24S|S0?39zY-s(Tif0B&W?I2V_TDOWr&bP7WvrHTZ(rfdrOGxVo;vwd04 zy>`Yl!nh08HpbypL!lvT7D=c=L>Wdp1l@Kwb@x&W*ijZ=;!~K!BosA16a3TtKYZVs z&*WFnZd^I7JC&c-_}Czo$uW$mou*d6plHYp#dIHfdZ@RW76PE_CKe+cTp*lebwho1 z|24daAE(~`iOL{tBjeR_@QAuL^Nk9dc zT;KohzoRV1Gd?Im#o9IpO7IX0r>TlIP;?(*_s*Y4cN*ZbR%r5IS5Uk=G$@g4hwdWX zr`#6;N7{jgA~^$scvw3#PAwQZMwqN9uTUcgAaNvNWmw_e$QB$_O7ByDTC!j5-|E(D zAr%esGlQaxba!sQV4N1hM`6L-SEtlH%S#Y;n#K8$tUAyI3}#!=xHmJ`P4A~UR9qAX z(EC6YW5Zz{F%L=&hEg)CZSg(sVquhs^?K2>Q`~7-+3<{UVDzWJ)3?wp{6XQOC1H!v@7W9ZNDz1^_nEmAJi?4sQL%qidHs2I zb*89*aYA)C^ip9DX;j#2|C7N7|Mt1+%`;Jg&^JCPX%N+xNih=oQkb2SW8S32Il&3l z=kfH7tnM+0H^fhs&a{J4nE!=dq%X}u?XI_m&cs%b-A#v{W4vc(cvNa=obaV2;}|+% zta%;`7n)7D6d?p54>R`jpsbL?Pw2R8j5Dbt>?1;Z*dbHK(4eA>>^|7QlMRRBLR!yR zQur7;Rp5(-qANuN&i?=u8z=I4mL%H?rM2ih3^UMJC{Sf)4wALEUw(Xa8s!Di{cE}i zM9>N%29F~U;%BvgGCZDK(WrvqJzhi19$|?OS`)vA6cHfqt7jbo@>9m_r*~2A+{ZmM zJQ=D+_okNoI`$kh==77hU8|d%k9d>p-e)I%FPc1s!why~^wC1cI8V-Rp(jX<&m0&k z&HDIl!cs%_qfB>}0hRYtPE@^Ag}$K{DjdU)Qa?CThYYB!3UYy zTz~+HI$+jZWH?TJ{*!Z$ZJIdA*wlbEWe1FfB2o5c&CF&)KL%dh1{iKi!7^9Xad#Sw ze-iC`SzvOlDWq8Z$TXm>fN3bbqs&5-W8|Ru%w)JQj8{Z9>k?MFvg3ul1yI6n1`Z6A zk|8_497-1nI>sRUqThJE4jAK~?tsgwqmC+l`~7+Z_`RSIgqc$MLf7|Od8c^9V68K*c?y#yqLM3c zq-(}m0fH8@pQbZSu1M{Xhe?EqkWl6qQG|vUwl_?3)>%ai?R#q``DLYLn<1Oei?D-` zG^IO3;m!k3$d(Y8IDjFzH)z;ENg>2HFpAcOo+$Y2PQ$-%yBLp|c{W(oRM{}d{>iyX z>p}}owl@&b1(}q~g2(YQel1}UW5PW@0XDS zZ74F=#e*m0^95#wczoTnUlLbC;ys{@49-dMtYcyRPe=+=*wC)3BM8nUi>Q0EXB=L5us$*+3jL{Adq>K&z|J zDlrk#);)1B(qUzPgFB{&z%k0)kH&^aM=&BR>he&13+!W`^tBKsc?t zpz|l{?Xt*h=ACe~#G!##5i!m(b3pq=!rmXeFyt2@>Y9W_c=#>J{>i<>+a~hK4Fv>O zRenQ3gppMTm4;T0WZF|_%_v+We4EQp(-{PAXyh8f9z8{w3BV94#n9igA3HvLns9m^ Q`0ucV-NC{?-2VDM0GHoCc>n+a diff --git a/0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-e1.png b/0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-e1.png deleted file mode 100644 index e6041bc6a318108058dc3cf2ae323f58c0980e17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287541 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%0D3e!1>$Y^`)lr|5js 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Ⓢ#$sPMeYfQPon+(Q5lb%EHhK$@`|xq*hCk5 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

    5mCIeg{6 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%0D3e!1>$Y^`)lr|5js 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

    l5 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%0DLSwqh>u5 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

    >D+&sz+;>pL$Ln<`hTDIvR%<5E+{i;xQkLlDWK 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

    si{;$JrJzIc!eZ4MGz=V2A= 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%0D#A?mb}h_}IR4G)I7wW2sWmFjJg3Q~-xpYVuKs zU5XNu<5g03-e$mJ;8Z;(UcKnRYxDr?pNUU$3xqqSwN9;}l!Ox!rl$f3Wt{`bB~@A* z?9W4@Df)n$iXxTRaV66($oFZQ&FKIW=Xh+wsq1H7jDi_sw4q7^+&&f~B@^G4>Ysmu z#BjGw=>KdJ(jwG>KBq+aISxm~OSV^GPLjYh#eO6{(00pMw#5Ir6O(bkQl0E_Ta-`y zd1f6z-oGa1k=UT-^olzL-ItwBrEGOs`V#Tayi0+bf%pR-{`lui5T1i8n8Swpwf_1TL(vC_?j^C~nDW+8-V5PaI75+9yi<7m--cP? za`H=>HZ}urBg#{Xhb95J0#t0%Us{L%IOCZRcdeJa%wNeu-M zGH|wka~%vJ>7jBz&E&x7pPK^ZOq=QkS@JK6KOau-LM(tx@uf7E1K^zqu zxkm+t|8k#Ge8t2#ioko>@eD;8Qt0-BZeo6$c1NYq{P0C1 zuX0fAB$XW26Pa>(JE^h&8YJlw!)F3V@l?uSXXX?5NTQ6Jq3lOunmhujkGS|=|G(}| z7WYMw^wm(U-Y|Wwe%VTflsyu%p$TwLuMOP#<%bVoKT-sVlqC{vQ)ubaG>RVwxB%i? z1swjdok3yPGC*`7Ok1Gzr%So}$3(WD-u>m$Y%d9@@0gdA5bNWmEIX(u2Sla}Qy71m zJXuYOq!WNe%2 z!0UIY@sI%M`ymq3`@h$YO$H+@N1xn4>uiTOtm)~%W?(`&TrBsGJ` zjE)SS_ywNCHWI_|@z4i_jk{N^J zzHAo(TO17*iknjfenxgTZ%RK@$d8V^zfsFEaS1oVcehuVFw1IGjF6HyOOsYOZT-?1 zcOi?&zDE94L6kF8xuYP(iv7CO2`&Oq+viB8oJt{>R-tS5Hf*{m2v?C40F|QTXx!Ud zIl*-&UMVljOb$H|H6|l|5&H31zOP;DtI7Nu6y4T)1*^%Bvr32j`!`}JlosE zTEZhGp{N_1T$x>6BW??yW{kbnXTIg4I(#X5&~0RDuedo@zcRnix8hnlHmD-~ns|Vc z@w>BvwkbcQ$P49I4KU>)rJ-(8>%0Di@?04%33H34&YEVCM1m>(x{koz5ys~>AzZOo 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�*&;WdY7I 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 diff --git a/0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-f2.png b/0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-f2.png deleted file mode 100644 index 2e41bbaa70273561b27ff8bbe21aa37f42d96536..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276483 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

    si{;$JrJzIc!eZ4MGz=V2A= z#iS{wbcBk2JvmQAovK7;A1x((7pA-; z*ZFC#L>_4gXiusoP-7++%{p#j7 z__c4Tu6;d=gugTkBMDhub2zWpPfa!gyuQx#?sZwJW=W|@;i%A|##@j6eZDV=5RgFw zW8Py#FWCTk?0ewHPK;F6X*HlI+3UC>`x8k(Bx!?p10UOxnsl2KE1eh58D<3G#=-j_ zC0k(ip|-W5@c18nVmX!YGb+vr|IKxO_-{+ zvY%r~{pFvJDEYCr2U_ATT5v+6j6o{k#b@B)MJGu`^N@+*hvh!K@sGNCYpwU#TD$hW z#-rLrC0WGg)z^U2(&r;Q90tXN6xfJS;4mpYPjPKg50V7-u>bWSWPk_|NCmXm6z2bI z-A^F_yNWhO@4*hQ9&cbP3^}$12;p6AObJ33%u3HG-XF~BA5Thez;477wlwT=X4^hT zPtFwsd@SUUbST8O$wYC_+oiwdZf#ioW-90DmYi3>W6KR@!gt(#Ho)QgE-@Jn{S6$@ z5KqZ|?#ARDx%++Kalwk_r8QAVrTO6{VUDw?w`us8DF-cr9~&;ok3zpCNqd8C)=hmA zq{*n^rC1LZH7stOZ*M=LgiM+Jef&Hk_;H~WW*G367qe(gmpBV>U@DO z*Wl)yn)R(Xm0NvcFpXl*-<-z$Imu$+PfvpwH(OB1=DUf3RBH2UWV_-NzCJ&rwZHy? zC&L-&=#9Ew7OyNzfwe|^dGj+ES&JQ2u_ub$70D`!ZG0pWs^knB z^0B|N*F;g@*hg64n+VnQJGON@OS_R4O)83fuJt>vpN*}sxqHsGw=~kW7zf0-z5v~o zi_!TOJjvHsBL`#Ti&T+_qwmkHq`>BCByrbx02>vCkMS^AI274InqaOebczBs)!^t?-GN1Zq0sDtF+3PB`%qRMbv$WNpZ?{yFotsBS*EOYhQF%B z0k1#0vVxCY*$G>;;LFF@2e_E5%Z%DHutft|x}-8jG5_;3v$v|}dqjfIrk(SO`dbn| z5}VKCIM~)rAeUJmtJB#`?#S!i_P=VIJS;$Pur|HJuo;nGu_1;s1@-|u-)SJk#p?g4 zjWG5FJsfoWu;35X2j0Y(`g&u2Bj8o3lsYl8rp1nPA9jNQq^*mx1~{RXv?{S&nm3UH zbBm$o*N!o9(^t`}S;WYHR#dz%|L7S~0A2_!P6}kiN&$@K!<1rL_4x8H=Nv%A>2VwF zJ6T;m$M%iZ>F6r^0uv}hp=s*hY~A(HP(7?Z=>2HrK{vE6EF7)OdD(pW!dO{`=)~j3 zJ7zF}23JhnbYUN_O7(1;^ltE->I-(ed}nH(svN>*^0yBMt(7g=*@}A@B|+Kq6RP3| z=?}yxIb*7H%P<%}EL%xQ(a2$lgTtEk$>u$rcuO`qD>Cfv-4bsOefTEX_bc*FZ>K?g z9)nX$kX$r+kuTRq5RVK<1 z+&|7c>PFmHRKF3sU3ULrnBIHr*`j%;UPz_90z>nP@8(%5`?!l#eMU`i_sGU2+V>yu zLwV}9A7mEpy0dalESmb-dG0kP*uQjN*U%{BF=i+d?zqp!%0`vC!IIT=-P*Vx z`#Jm2p2?I5adBeKg8FCn1L*b4XXic~y|FyA%|gz(gI%BQ^7C97DnFcu&rGjmOs1 zeX@~Fc4(kgghmGYtc?nrah}b}jH!>Bwjii_Wb~{`zDbd9G5UU`(fU^y*IN1f=qv{} z)<>$L#-q)n<(#J8!kSo{MNRTPJaSG->ar_!^AAcycdpfO$#ag48Az4`SucdDr6(J& z64%!A07%8@d@rREbDW^wtSEHvof!v)D$%QqP|PX{Ea&_0 z)5m^j^=4D=HkLLBtE73R9h3K$mf2H_s=A{O`eW9LdUG->&!JU;&PFQh4)F#)r@-mK z-p>9(|4{3!^!aq-`3Yvpn`jQrhlxZ1mOHXydFYhO)j}}pgSqQU)w5#&QdWLhpOjER z7ddp)Z{2fIV*Dpgf&efAB1DZ>(y2N48m=lh!3fxm1gcvjsHFO7;N;Dn<&o<>gEDZ= z`)=`cX76k57G>8#v>RIcvp%u4mR3no7ti=GKMP$yqjq=q{U+VuHOus&_%qxGRm}(7 z2a7rbi?v;5)01{uQ`X?T4QrAmmyJP z573-TriDms(E>!K>W% zZG*hhA6~J*>F)N zuXi6cs=`87V(C!c=h@iM1Ps1D(VOlOBpWw;J2-!g_RXMn`kxzEcL8ky$5v`1=?r@S#u8P*+t;I>YC^^C!+V{gl%$bO#K z?h;ewY?A_-wsn*?NZ;eWDobx~)zYU0(S9)$W1k~axF2_Su!* zL-D;!GnLEM50!Y1{WJ9~=glFL*rE)>E7yYw%1Lj&kLuBOErvW+n!ozf4?87Zq=F2m z%pDEn(mRoq-rFq0>knnL@qK@Z02uobfZ5Geo%1zV+zvaG5 zr*dAY`BnY!BR&Vcuo#a^C9e6Nd|F1ypBu>RJt{lq&lxC`t z_NEH6VE`@)PZe?V&10)5s))GN!`Rz4pzJPc#$t2!tK_eKt&K$BWRT_A*^gzA>scg^ z2Pf_2y^3?DomN?`O_OV2>Q+U+AawnbW3)Fu(a-s;_Q+u5SqUL&_16a+pP#!o+|B(M zaU`jR!@oaq;ehpVWo5^@T(j=G;V|O1z8@S9!^<)(j<{J&K()ItbUlv+y2kO9I~N=q zaU+8TJZ^K2Gge#U4YgJ6XJryG*a#+`AJ3YO`u%#Ip{#!cc}V4MsH-!DMjF19R-MNT zNpb9!abDiTu3T8O0`nnIDm843?G<5@Mt$( zZj{U|A{k0WGHhVcmw)8AU@fezN(h?JcxZKoKbU;~ijVN?{9peIfS8n>%0w#DRQ7>@ z%*2P`ul)u&0MbS!NvHgAY$N{h*hU?2SR(Lev3?nC0SuVdlT-Nq-uak0g58hDdLc}d z<78CWc5RO~s&$B(%7|h}1AX4X>dJOS|L8agH(bNxa{c&lF*i@`#7Ou_kvP zk{!x^`<`bK6`G;pFT-UF*3V7$4{0>s>mO*{@R^+d=&lAtYP#QepB0rB@7{NcjbnR` zHGN1HN~wI%V$*VpmC*#Zq_7|N{W=iO1#wGiEnTQj&Ro2+mbsLH{H`1xhJ*>b0edhb zEHzi>*>2ic(e7#y9dnI$JwH3mc9q9r#wolv&vU6>LQz724!>AdTT>LapjNvzN$*Cn z=By3_ZrNL}MXQVCdk5LRTiwcR&da({-!Y9)XX`L_jRz=#DQ19$v!%7M z)xGS#3x3uNdd=$Dff{S#)~=a$W1={Nt485LJf%uA)ECWg~a)ls2_H$dOWVA0dkz60JGp~zv@>@AL0#?M21y@8bJ zN`u>X6xPfB+uh(&LUVtlX#1bJ6QXp>2yfe~SPz3VMT_=p9QzO^O?ywaCN*~)7KmaAyS$ zI*GO1b-J^r4C}4v6uF67f3U-04HtBm=g={;vY)Z6lI$GOl%QKiR`irky}0>ecQr_0 z5#J6)k;pC>*K!jU)6|XMwv;yV&@P@`b3f< zVslQJNzCt_X2!C%;ikl$+7$0+4b9mz`qVirS3EnbT>ktIw8`EebJHyj%Slw5n5{*& zi}?Y6ExiRs>Apsa=%OxJVArXdfI)%XtnOt6k)4 z+`E7-68r1?05A08StAG;-O=nnn`q^a1!jj{B~At|;E6bEORqQTTWhN;uY0(fs^iYh zU*we7(!8@+^q|nZ+`03-JWx~3Rjm6$j5@DhQ3{;LOd;5Fs8OqKmO%Zgr1*JfZ+oVK1os}p%vX7E-0k*NSrHg|(;|_h!3cr_af`&YUL8A+ zMr{wT{bT*mC{CnsE%p?JRc3y$RtKh{0`zQxC|MjFU=6ltTBo}+D*HV8H#q8S-`S}1 z`J4Bpt`3z81Th-XwtnJhXWRG`+j6MVD9P2h8Z$g!q*0=#y>kU*Cz)zs=h$mU>;7`E|6qOEXY3T;(5)h=j8%F6K7-HyoFCWG4?_K}3X0ZmA-h0nJ`|No3v-jO> zZ^vrfvrW?Jevv(%C}5?j>Qw!$^jZCM=gzYvlVY|yVX5>nRDiLN_wsF$3RBYxo_80v zMM7qBlX-UgOr3{`*0-T^$Cf2;MLQ>Z_|cw|?Ttx6 zw&kXn(9)GXo5aY z5$IzOqUI#pDV+0uMfH4ytqs$zkxgP#b<#n$^=p!=-HC-S2p)#K{@5vhLsuWw^G3VY zF;WmRP9$<~i_WvI;@4E^0Sb;_zmt}665Oy*rfI4HB&NTCwE+DnOqR!Z^{s94xD&E{^}b03hRGjFxI<8?no@^Y^?sP*to&}ovA ztCg+S+@07>Lfg_4J#DY~u_@P8GrAMc3DYvg(ye!j?|U7~%Ys&+ObxT84TxDl0m!?| ztmJv?hiw#571N0=_!aH8Th`z@n>mJWAPbX(fKYUu?QjxyY7Qj#g57d)twixG6`?Cu z>-yyO$H%jJBN;((Zr0y+mPKVOp(kIv`d&AJ>ovEY)QRXSRMIV4CQx1xy67)iLtL>L znYhr1wA_ZzvYdpHR7ZOoqtEZUcu?CnK}OMId}R|t9K|P_swQ{LPW*LD3mXj@kPF-4t1OvG{VW z7A?-_QL+;qn`yGC`E2rsfj(Oy<*X6!~!nXzCBU64gnu5y$Aod_Qde#dRW3)Xota9XieEwmyhlf6F+* zMJrX?81zIj!J#gJV8YUT`p%QwB{KHVU-@uWJz`l7mSS_)8;g?k+=vWLm>hZ^as}O z%&Ni#rM;^iR-pOWxxx+xXZsWDu>k^VW*aUu&-D$Z>xnzTE<~^F4nm0qe0o06}0@B{)s{N1bFrsH;&MT~? zyn^+Z{og~w^#i?&U(~-ti_W)NzFKlONmo;Oxt|TbsbW_odPV;>1!CNxruLvgV$z+i zsRPv4v?RT<8nL=#ke5H)!iDIaA$y!>Xp%ThduUswT0mV_M`d`hNV~2Eh2@uo*gam!d0f z!e<7chF*$Q3X0zal6t|bLfsH<M>Sp6jXWIC>uLF>_>LJDJSi&rV>JZ6> z8Pe-&<0d3j!mPPFdgB6(r{kMCAU*&OAr>lWe%K!>H$gL-u@Ij=UzfZKeq=55^@X7v z>K1pKO{qO%L)9lOXTz&3J5yKSq+i5zarKv-_LC-m1B1Pk+GFpD-a6{eG;JJ`jU6Q| z&In7d_2Ssk5=`YnW#>_VGB(&Mac9kkvEep(a3T0@{ zB1S8-NL)x1D(-O_Fx~Zo+U7uI5uD%?ZbDFn)OwJrkXCuY_bNd2yf64y#6^fmKVD$N z0{?FrS9x7EIYva8()e zxMWj<9{Ggt|A@eY5(8X>f|Gst=)H1;i`$yl$l&P8K__pNVMcn;(7@gfSk<*qxC?T- z{f*7n389T*XT?*G2Q{nsHxtV|Yk#_-2-e2{7O5aItU6aGL-kzVW+P@g&&{rYJxtl` zu;W(73`FrW{X&se$#b(=7teu(%4u6hFC|f-g*gF%CTR+i=yU{gb|xie({H;ta69s& zd1*pAF7$~;QB+M>XhEnJ$p2~LME01nGVQQ!jZ8-Kmf$bq-SfV>ms5A8kvoe){s4&k zxoKR_Ab(B%HbBQHor6@y3C%A*Jxgs41OCp)Hk~D)A4Njay?JZl+gAJl3zs1}~KW{anZ6Y^yp|1jSc{A%Qj)`Zgl1 z{vrm#;GF9D6V1msgT&?TUe`Uwo_#PiSV>F_0qb(mc-?Z{8fWmciQ%65d4o~qIFl%U zwWM8RcCqg9DYKc#psry1MHprk4Ec5_~z&;W3FWCsO8x1of1mTyT_CZnkI>#7LH@FuH$30jKG+bn;V2$_`O*D!b) z6|m6n-WOncpi`wCcv=`zYoGnG&fGV}<-m?n4e2k6>Y>W8^3(YJd9RJ& zSPlWr8sL4(Ch40^p|8q1vB3RrIdw0DT$NqI&@O|Led31p2ku_n_ZUbg?fjA*eW&HY zqYiCg_8U1t%~QQXZ4yx}T>40KE7KEV_p|RwLq*u?n+{7(3;EdmQ;KR${&U6~)V-&E z&~GzY22zbo8ppBX@ho=m-)HhO;npFA8|Nw{z2HdPf{R~0$uXU^gWEx6h9>Q)NlRTR znUzFe3Yqgl*a8hrCf6MYJ2;3-=q7!IOxbU5*RVg&hj2DbLd3|%SiG=^;UA(Ew{$ww z&5?$~M9jSpoBRW_`c4(1kD#Au!m4*G?O>l>3oNV7NADQif{P5{LCd)e&JI}^=_s~a zOxEz>>B*7aoYMGHCCg?4YuhXTSkf+xml>tVWkw08TF-H>u?oMH*=TQH6RkbFD@dr+ zg%@agQU!8aDX8r6_ZkbZw0z?+&g4rSa(^0MK}NKEVncL)q909E>G59vONjHnKtqte zr@99G_|tTk(|Mcg?ff*Mv(@|ggpF$0*aG?_g5OE*k+a_H6O(vFWB!K|#;!8ag=c81 zpv9>C%84*IV}2p5{;06Avnx#EcA)R9cPyOQRGg?udTD)B~o@Q|NYOlC9ksPyV;5mw{K zt=Pe%@`&@9{*bu&$-VJT9L6Jy$*hpOHNTh34|1>i7@oRbR{8PU z1uN(Ow%n*O8PUK=dbt@nE0uC}?JO@!)^Z1R1%FWuuiF5tl3|UnZ`U9x{NSbE zJBmc2<6p^JrDJxUO)$jl`rD=si&FwcQf>N~H6CggMbLKZ(m=!3VvGSj$@|2E34p|; zK_+M-;h|{8!GEAV{#{hrj6;V=lz+Y3dSgS?Hg+%!<{W&`_e_SsOU7e|y&m8nE}VLe z#V(tRo|z6H{xV#IJNz&;i*XJBOCT=jY)~b+lT$^~i71$IX?b^N_VnZ6h_FDmziZ*0 zrGPzd#4aaMQ-^bv(}El(nFS%(RGgr=0(hphTuQ!@B0O1`K7|3a_2 zqRu5%^{ggiL+ z$<4BCK7i=|WIDXJDyz}uMk3t$!7s@G*N6Z^No+a**U}V^D=(kIiG30g(8vsZJm`Mr zF!P%~_RBB+xB;-G37Hk6CKec7gUf2HM^7x~y}c>#C*-M`<#*oODako6MYcAWSs`k_ zerQ4CbOKgSC@Xil5yO~tE%cJ)d&!@D-*(x3K?gKdti3<>3BMi-V+KliwOy%**}Twh zuRcKlx+RNfNX6v?TK&0K*R3+Ysd^mj`5@})t=dAOfx@E6YA=}ZaLP>)>GQy(IYkYc&GQ z#IF`w3fb-(zuy_mrv)E9ue{Yy%04S%h9EX|g8W036aaZyqWt&b0M4=ZdQAZ2?Wuob9F9-8 zVE^m#20$ploz1zRhc8d7DhD zZCKA1ECFMeaEvD=Cn4-5jWVNiD&+7a|6X-IotxO+WndhcZEAS3Zws zOhj)*E7c%uDA1?9hp!MNCll5jt_iKHi2hnh)j{cMf;0ELyH3GH4$3cvs4n&GP}*iC z8q*UkAdw$<;k1dy=}>a*)a!^SqS3o*4|*g9)DqXoMson>Cr;=`Mxgl=n{Iui&~N$H z1u8FCk`#|ZQJECr$Iwi^%9##m{4^ad(ZvNYpC!T9M&vjNm)>*bi0t)EXE-i(m51w= z=MNX1y4)Ab%&{{dvmeYPJD_grfRQ;2$r8V!kEFPr*pYV%l9KT&RN*MfhQSMU!!@O+ zZ7QQ17?UDohWXZeyjKCdubR_;glF+2!BVe#ksdHp!&Hpt6jQb$Ri`U>jHcY>!s7vi zrY7-0>~!q4(m`W|rmG=UfELc+URi8sKrPaEx}!z@>-B7R^B+j!^~%N#VozfRK^;xA zh|t4WU=MYJv?(-gSNBQ_8zV<=Tep_>G9?nrJ;v8BsR?(zrl`n)5Hc8K7fyIBCxVxxSAGQC?$R_e*5P5qM7x=c>W)eSi z`tD}bAb{4M*E}NCE>Dv$dgH1$a3BY-tl1PUcX~srErw1H-mLQ?01Brq%FtzYZAQ(; zBbS{`c{lrBODT)LC8p0SK&ZIbNAhE=*&AR}xh)qrh#g>qpWNpPuU|$=*m$l@rK)?; zC~sU;-+{(d_wuv5B-pMhlk7GkJ76?T(rorz?A4fJRnz^ErDp`g0dDLr8|@6XRAjAL zribNB{B^3(Q2Z9VKP3i%vW|+BS}xJewlt{+;ZXY*@o+_touIE!V?5}PGh_8kt4*H$ z$;Af~^C}r=-a@&b)GauLEBP3tNRV|mt1NfBO1gAw`azdnU&v#@L02HQF-mlu{GP9O zIQ%O2^T?@A6cadGf_p09{v+Jn*giuo4d~8Lc3yF!zaNTg z#yQkNG%Ov4#s*)2bt|oz1*q#X?{19FarDW~>D!N+R|#)PzrcgCmVOZS74=j`CGkf# zRsTj4nVy{S9RzYl6l@8`oQ9&NBpy;{3UAtlj(MIm1Iv2k;$`s79%1n_Q*&i;9>;S# z64@IS)>hY%07~m$t^d=85LGuz4a15z9uCspbYB}HXnWXQhU~waXS#0v3h}cRN;;TC z>FJu=nKy7=#8=xgFt=qo{whiJHpE&Uz~V)ZH?sFW374E`R*6T-1*YZY#ByCZ1&9I zZ~ymaByff$&v1ZNZ30$S(o241ms$VNmy)Jl82n6it+u~mjUw^%;QX6OETlimE1I@QLCS>DU@}fbwSj>s&Vct%t~dE*s!9JM-obs% z2bj_L)Vzhrk^0JW7ks-iZb0u_4pVq~EWp%h`UCx?P^qJAK< zI%8F1AgvEZBuuL29M8mWs>}r$X4rzD_%k(CiD$rIP*oqqo592{`@E_pa@Dil$rK!| z-Ex^ury8gZZIO>0*<$_JO&vJ|W}SY$ypitmP@k|@)EE1#lNB? z9uUFHTw}b z#4;Tq`)@UMtPIC=zkufkc7^*(<(0~Vzr~B)1ETeK^>JWsl)-emSZ9?2Y#yljET;ua zidj1m)fclLMgx|mhh3j#{LJ%72GLNNwG)WRzVKF3T=nZ# zKN>8>O>8QWu3rWQ=Bp7|z+fW`b)WN~{u9_ptTi6gStSeR>9T|Vy5M&BIoXdU&N(>( z_60pcRBC&|JD9`x!p=e2l#aUQ{wqm8-mUn2pKzBcPnxye$QR(yQrppUCa_n(uqMFu z(3u?=BET?rBiuy4@bhrBR1^NYi;=JWtV(Sc?v%07kN2cE};xfsBLJ}4VJ>gNTp z21pU6RimlMqaQA)J4aE*v>GhTKI1qu7VZ`y&qsKf(#BR+@)$%h5t4+FGj?l4cYdB@ z_i1sMrr*q}$S2uA-55_}&iS=m6GSAUPyg0FlsI{}<27@>76%nfGUx-h^Vj3)>^nXr z6>+$@XR#r@i=Z`@8`s}?2`HX4Jra7| zzN(BJ5kj}^12XV;1jtX9^f7u0*=9#XWdzW`wBaqFY{ss)FlNHG=#M;<>!8;=N|BK> zX^L=ZYP%UHX~^dZjQr#5oLZSA4qhcv^!V0=T)!o#jDrp2*&kfj*cbuY07cxyk!mIod|HK0ssI#(lG<9DtyO?>5(!XFbiG3EUhxD% zq%LXTW0&OCJ#6rYqFU%}5jT8W9lk>r?Xy#adJwc$gmD+Z)I}+zX0XBC7keeFo_obj zFHaL4D$A#>%cOrMd;fGPO-&Q!zydQwKJIEJNxpORNWVQMe&B6#D+gX#HX!W!}@`po-0KC_d=KeY( z>-tJ^ikaGEP2!WTj{O9?&-XGjT|#4`lBkFNHlRLg1PHpoGzvS82EGHJwLc!2cnaoe zlGbv56?#WU69TSE`lc|J7_x=!1`v%e*uQ8})n{5u7!J!pQ(&cMYhl6RsKBo8{(rh{ zFd@v>1Hp~c2BAlaDJEK$QKxlJvYbq$IETtX&?n<|pH-#2$$Ai}h&7gWlhvbnrD~x& zoAovXLg=qe7n#AROAiHfmGya)2M%+c9>%_K>)ovS40`t!y<(7QMt%^t zV^Ibk-C~oc=jgoKw{M$F_)iPKf+L)~ zv{IE7b%>=`U~UhqAkU-fCYY?t-1O5EEHf-mLLTsif z`Pg93Z3Zy{5m8fE{py{&Z)w$PDOMVfz8AQFTy-8i>>NmdX5>?^)k0EMy%z_!-O4?u zJU<{1`HckYkO1f5`ylADDC%=mZvx4FCbEV^dit3<$Ivi-v%1z*o3i?}ZC%p7*zTgd zZN74QNrw zaFH6_ED(wOig&m9c}@nwG3RmjG^OiQY*}zO`B$C}wlJU;CCt<$=6gQ)cA%@a^u6@Q^$uOrqC;)&w zE>~cBW5+SYUBu2cWpkzO4;nOei&gs!QK(ySLiG`n->A{>0?KYjZ9t^K*weUdteVM2?QEO5jrdE zKa^l?VlJv&6zpb>tIm7PTm}e0EvT*+0CJ3mL z`(F1aR99mX!50zlQcoHoSL8@qLE9>0|6iW_A`5^&fXso3Umk|JKu(Sh?3Zxrn=97f zTa>&b7Ag!C-YS(l@l_r1uQzNt@Cqe*9+i8)nF@w4__FqV=iQ@}^_0MeEGA>KioCyx z!#zSA)ngiMZv?m4gS&(>$Qhr#35cSGR4Ax={+jrb?pBgKtDq7Duj;yvHd z?74ciYB~USKecKm9yMpdZW&aa!)8-8p>mS!3hk;j4I=5Dk%D&lqDsH&KWOUkiG{OR zwS`%IUgfL-!uU9DZDR2~=O1OJ3H;oPz6q**?_o2)(jw#=d-3d^u-xDpd?!~dO`*`X zeK4#C0{RnI4NA|DcGxhxzb$HTQj5J-I}A+Y905;yohg+e%?^0a=4~;PfrpI`f^J84 zB3W$ObN-?HNta#rJhc;uRT0SRIdLGAm2lBsGX(0d;=g`ZWp!o)9G2wFKD1lX_rm>6 zHHqJK^}j*^tnZf9bKG8<5={vq$FPQY1$R~$>~U-;In9}Gxe*K-9M&NA;sV_}wC<`S zOfmMpZoluS)w@g4Y&Wg(!?Gbs)2}gq&|P*<+wTuJIHH}?@Mpc0KT&#^%)k64r6)b^ zO4<%dPvq&zEA4omYA^D8Pmd&66x~0Gy3h>rd1bRix2?BAhcs~nD!p_B!cG3ve*l76 zuE=T2(N3UJ#4#jjzcS~DLf;x8m&@}JF-TxV2!^+N+qTaGW$Q0_mLXObZr&0kri=b! zCmjq*A_-qb033#;il)&fXik5I#m1~sRZ3xE?(^$CNR z@$f!udSQaFSqIn{K=!ba!v1;uLPXP#lG(8hTPZX;+N$fr>3&KrF7$H70td#*^-))q zZ{;fDneEZBhAVl(J|W4hLv9dCD^>yj47b27xjbnfIrn(2TK?NWs!gh>x8nLi1@un+ zkkEGiEF_G{2P6@14O?bkyEgMlk2p9upw3MN7R@HN znoniBv+hHfGB@fSW%WrKiM9HtPu^dnRRdWZmaZ3hjaR(l$SJ7b&>3T&aN7zDq}o8t zwT9LYVqLeuOJ$&^{j@LNg-H~c=}Z!j?2(_NZ>&rCJ?n<>s(On|C_wfdCzYvIr3v~0 z->y52-a=|qEMQ3cg?CM4CtIs9pWXO;?C%HruNn@2 zKx;!NL|5*HT83A)Cl_TIM`=G{vDhODQT)aPC6-f*q1)mVkNe;v8nLV(a{M$+ni?|eirX^ z_q(sV?gLYiR)tH~T zFj2KYXSP+eUGB^to}{QDS`=|yGq!P|&JG_fr9#6u-!0V06@=g1N6qy#p6Zg-w@S>* zt}8D3yURUUT{@-+KJ6E=7TgjUt1s!@_amWb)A{5sA9uDA-AD1%w+0)mzH2fadg;7h#QYt@c zwH@ZL%3H%DmXK+=CsUOy8gttzVrC5OOsfaHYbyr7cBeCwG9+{MOJDA-yO}>9yJIkI zx0gLOtl(33^Ugp^Otv0?Nqi<#ZmF8&z&y|>Ae7|2}WQ*P8t85_?|CAt=Ik zbG$$dk&(=7-(QjvuTt ziGEB?7g6CiR|Da}J65l2!%wjQ-d~6xZh<9%lJL%h_b$e!M6<2DeE!ME>%;70Inw4xa;kgG4p=cc_YA>nVG#y z(Cr{>lcaAR`H}D?Rn6%m;a5meP4)ViPe48EvExAyrKyQ-8CUi!^xjuF%=Wn_EnLDD zZuPKm*82SPcNmjY({Oq)B`@=IrPONwUhz~j=&#_OKKh3Bh;%oS5evNiz9K4GSyzFt zBFZk4{Lqr4GxC*}kQ7<&%4;xmp62`(<%L^dZ%;4}``E;i*=e<_QgVZ#e z*W;G(v-j~rM%OWpN0B!)^CQx{QnGxLgC?5=KW!JA6Rt zQEZjHSNvI9p?1DRGE!>+hDbtGfurs)>)g;@(cZmox2$@Qt-;S-I+6PGbw^_#LtyAO zInzpB!-rweRkEVHcC!@RP;2G!pGaW}BLud=RxR0jKw6Mgf${3wSJE@}u% z(Ka4bd-`x|q|}s0z2TIpU6gftuIZ^@^An;n@U-&D{q{$xs=vln~5`m6MKd zhHF@-hc2nWf>EVQ(%d0xBtIVWknh{OX2TzD^ug3GKJDh%tshBk`L;>k23Oo*U}HZ(F5kRA$2v(+xy)oSls*gyO;G?ZwGoLf`n3 zU?qtidm4MKD^T|_=4|DRpKb%yKl+nP+Cbe@S1n1Nuds`*$n zanxV}LKhn}l9Eqyq z$!66L8+I4-y(@1|)&va*&e&G=#80#EoWfMI`veQXr;N<+(z=Y6g(r6)qbBECZ`YEv zjI@x}9!`Yw^71Ihm&#EbX?ui;6|ytu@ij;}?k2wQ9W-z)C3zU|TN;nTl2u1jZZB4y z)JCu7=aI3b23;mY>qG?$qtS$NC%W@3zqJjoBuDI7`cwT9i)`9l#r~9;^po(jo5(_* z; z!&uh%rZg5M8ByD!DWiu%f@7Y@aTT4a%=c;ObZbN4LWE1ZaDeq!F0+@V#wD}v4(>Nc zd4-Xq(wXeG7CpTc9mb@XLW&Ofo@gdg!!}(grKn0B6!rxpWERzZ>W%o8G`H+B7LqF& z<;Ef9*d>2p7eXmU-F*$ky|9)%+&10jbN4?ddg(`3@c=;DV|jK<`P{9@Tg?dM1($To zy51!1W|6QW?p`(Bc8ZOnK5Pp`WBe}onwH>=-8m^IjyJvP7G@Rul;$K-aCT3l>(Jq5 za*TyDGY7Wx=$!qvG)J92Bo?9iK8nio)_S~fTRU{9T6BCK7ern#tJ806w_IY!Z5xgr zdf*-FQZ-JCv|{16$##1~@M7-8h{)JeZvm<{WKK~8XYKFI=t?;hwdc7*dJ-KyD|2q9 zlsIde2Jw)biYGWiVvXZP@X5BI43$_w`1vTuj$I%7kRUNw4?e?0qWN4mL(99e+9#&4 zm`_+D2yKItp@rC+EqqVD6km#yhoEh7KZ`W7w6v%ylp;sI3brrtD~UkFA>Sr#sS3(O zg-hYGiZdaR_ZU8%2FMg1OE7QkxSfLyQk?iN*6t|6`Nb1ZOY(6X=9W> zSUIKSfVO3~Dt+6o|Ir2+PBoW!F0gX$ueLl6%OBJL3{j0dqK)ZyhL_H$Y!+$+vyA4z9)9Ti^e{&g+E&3$CE1!yssKZ&L+ja0!|lmD zanp156{ZHNGu;mvSaW4HA3sSIwMdSMRTh>T+JyXOg;vmd_Irkr^=17-s@3zX&B6F0}S%7P7 zkZpCJ8LO>ZQ&=Q@s8NK|5VNaW`RLe?ujh6-OPR=TOgxRl^p;{;=sfTSh(7)xn7Ye6 zb1h`4oo46|*{G@>Vk{}o3dy2ZHFx51;oX&+3B?%32JQa5!}OTZZ{7QNa+_L+%=rQm z#W`}^DqB3ErYE1NB$i4ti8|JVz2IUkSnZ|9*-kii--$|7QF%Q9w{_MwJ+~21z2!M{ z5akPl6G0e6Fk1EA%WNY}Jq!V~Z`C}6U0lmmrMzys=;+uebe&{uH8v_3er0b7W6BT( zoxPEHh^#lR@(!mQrT1wkYQk*1&dJ6XG1I{ZQUxwM2 zB)v&@AAUT=eF`e{eGzj?=5Pwb|0Fqg;_yASZctn@>f7-eV`u4TZIfYnH$n&mk)(gD z!YD-q3J<l}ao)#{szjvVbQR?TB=lqk=GN$yiB@!46mCx#V zq8%mLR&TChQSfRsMXe8{efRel%cOBdx>Em+zBi$Zo?p+mK3k$@JB4g&XL(X>(Mvf} zWZ@@-7W6^sVA}V8;^}L+`_$KQp&nsg-#j%WbUKwWt2m%}8C8M6rys)&i)HPn8+}3= zSgbY?=3;ozK5yrMUgL)Ra9H;omD|{N5%ym+Su`H-r2IVZ=uU#B$m3f!Vr$B5`;O5h zKm8|Hw$l_tjAekL$&q8M!-rXjxckKrvn^cOYpt$#f9?6HSB4hQ$wcQ1cg7}zBxG{ zo)WST=cpvN&Ph;|u+QnH*%@_l8L59H8%HWaUsmG#30vbJWXt!d5c3>1l8kLI437Iy63vZK~%a*N#gs+F=ZQjL|0_HC5_-sr!87%&iN}`Nz!b$#x6X6;TaVA5lvX)y!Aa~mKmW&$7 zC{F0VvnqBOFZ3UMLfIZ5j!r;6;V+AxuAav4LGZlLQkkml+gRZ7GH^)9l1BQQ?1XAV zqyw3AQ|iwx_N3hbx;n9&bwT3E)qy)XQWf^&Jv_1U4vvDqEa2^`i%OF#?)yKD>fG$y z+hvx}7<_(fMBkvs(rH?Rpkeh{$|v4PFtc#h&7*o7-vl(jx@PclzefwXg<5oOItwG= zx(-uVvR0nMcl${-VyxVffP)bB@nv9gBx3c;u&*Rsa!H};B8MzNO{Zr%6#%hwv z=lYt+C3D9SEiVMLn8Ur@ZJf^a(7v0cuRpX_Nm7HO`i%g3EUeams*Ymog(RMvJ^fvV zi15RYRk&${3+Z>oWv$as$oT~0ibPz?huu_Qn(aZ$tQ8QjvgrkNnO2J{WBi%!wfP+i+pG?HPXad;i|#TdU9gYf>?=0uSvQHUMd_O! zPmJE<)PP>E9*8cfqUZd$F}q52Pw0l2mYHsy`I>1KDbl4G=lmjW*uHQ2gPq$ak5%d- z%qrkUL<@*!Cev3!Q>9hc?pt`(DalI^X9krA={*zTBFV=?{lDbc(d0=_+g>`NsVZ|G zTFTQs?`+(Zb(yk~dhyMP;|?+9-PwcdttO_b7Y{YpAeC?N5Yze#n@LR??}dnG?1>=X zt~GJ-*-Sh&?H4s=#CIql>Q|OTO?++4Oly{zn3sLG_@+@9ak9KI^39}VdPRPe$U*ij zM>)!AX4jYWX>`6Z*Buk#Sv(UxQKA@|>DLSA7?*AVpH>#^svfo8>CgsT2kU4do_CGK zH;=TpZ1YZB#Yf*B=1Pg9k~#!k$ukuXd-r~{onoY7x&pWHJF7YP;Y{~xe$mC+bnK~~ zv>3A&AM15k@vj=J)P#7OjN`+lWVOEzm8W$Jwr|(E67t!91-)Xlm{HWp#b|?O{CC=< zd*Chd#QnQp!vEyMz)z2`Ygpj=cJT?Zjkfy{n!w8=d=whcQ;o+M4HXBA^x12YSi3!~ zMF@Awkk1DcOScAf70Hd!;JNiukNAUlIL@X=LPV@9#_5cSQ7Il#FacG9SI(8xZi&X$ zADoXj>88Btt3%Z+v4`+VGVSd{BK0ob6_ZEPbf%mXv@m;os%4it{{41J+oYV4>WUEO_nheF>{Wh8JF;zI)3A39zE{ajyFq{I)z}LRpsFRQZ!FHQl>D{(V{&2EqeuNfl#0f%xFl#y z!!yrF@_z01gt9nf3}pP3ER5aN!g{`h$S(+vU>nzh`xz}bZwn+?>&w7k=uG*K&rs;* zSo%3$-A#Wm^xedmiN?AgGxw5rqHc}I_fgb-+We&Z((*y2BMAmc zUy|cw&cB>-<$f@hPl5aNoAY+I{p(UZ&hlmb2_`FdpTZhXxA>rv_g%K%hz5t8QX%g3 zFQX}?lOG~H!t+USj=>->b$w|=pbs0Ohufn$`S z*ut+@&OhFqGGz@FZEEYGha9Kcl%LKrIPg21ml)s82Ge~X{6t0QfPT*d3&NwEKJ`hj zX*k(}>W+}MZ>;O3S>NrJ;iNmRC{KtSHL zw{>Q_9TZ78>PyM+d;r9nw`S{+0w!ua_(@!actMA~>2@^>z(Vt|#?0P%$*cWjSsrca z8l$rO*r=>{fwIZ-ZdKB+DT~*fXlq!A(xE5y$-r^lW?qqKLiTRFJe#zW%j61ofTh>2 zs$9rPv%z5<46o{~?fr-U_T$F$%b1euIp;hhry5%NX&QXwErzW^-G+xQNV2U>SIqBuG#Twc<*25E8B&8dQm~z+Eg}w z(MFXIzmZ*5dK9w2pwd>UBtd&eO1)$R)pk1w2ndInYzH0%a!|_1q_>lvqo-YdSKQ}P z2g7yv?YPrENM_j!YJ{dmb~O9Z6C)q(8vlG=CLC%zq*orQQx!u77oqo2bcQ}|#qZ)t zo~_>8w#!=$uHw*_kGA`6_8@b!QpA+XDbbtE{eQXpB~;1rlt4Ka$lVEpn1130u%?Oo za}uUuKNHAecmx8A>%UZtc432N1RPaMlYf37cN$C~eTrP1CTMI>RHVy2`{qcoYq#w@ zz%Jyx!`=tI(NH-WyB_eqs~cgPrV{!YtV}+nnr1Qb^}&=?&$Z$~-Ls`f$_kP{lr@H1 z=BTFK6S5+4G8qTHZDPf9vPQSvQ(POD5Da=hRBV;^TD#MA>c{+-u}Z}*nV|H+50S6K z!f$Q{i=CMwV%NK!_9;9UVD-7lDbr?$d9tio0a-KqZ=Uoh054=9aJC2@qr$;>+7+^u z_JuHprgD9Vs2je!ef`SK;XVRl${V;m9SUon;GyU#66G|IrYD#<=#v`O7_n+)K??|o9diFexRTT8#763sD zX0()|57ZL9Q^J!hKe*8TeUt@v9e5m`*{g!Q)bllE-0=i%seMDZE!g1b4~*;-4qv zz;2&R1-kZ12?V}00-2JgioWhr2EJ4CF6DfG-N)XyZaG3P^k#s!^SL4EpIG%7!_E&s zNV$K#i)^jy)axmCY1x;jFBbjTl?1IjM1DADz|2|(nUP_-GczulbjTbI|N-y8&Upn?Djp*xI zg|Itrur83s5H)?hl6@F((~K~-9DXXGyntFy_Z;|WD0$PD_3C>5Ps=ht^d;1P6h6ZI zOBy|4UN_GQ!FUP^Ts(U3Nmjl zzq|fd$DSH609M8TrkxM^*rSLC8BrGS2Nr=Wk}$*hqi=Iq)W_9dykRg?`T4GNsiDQ+ z7Qe-4gQ>4}?>?}5&E{ORqZUpu!nbXB9Fp)^0Wc@w?|%;N$c^+eQx* z3sQDy|IdSdiFrDzY4CDkeN=IwEGk;X+$vw0T7*7j;`}D0wN?3Wmr+H{u~gOT!N2|a z7z*r9sxj4ivU55v193PQ_)Q;g|JGmJp$N~}nXormQywspiVp*2Deets>oN7naTl#* zv<_qY;R~RSZe3yUU(vY0x$)dQ-_i!k7oMXH{(;|o7uJ94eI$>^t1G;krKzc+8Z@e#Rb^q4(K=+q z7<`~{Z~U){UBmK`2QK^QCcfbw5R~!eA3~yDOKyb$3w^r!`u1PBozdGP>#QtZK+=`m zTH7ImnNkl126`k@*3$|931cPOCwkCbLm0Gr3cerwdf+qmm2dl7!@c~K=JLKb>FaL;gEQ~_ zFV_4gw&yay`d$v<+Zg;$Y(zj9T7>6u^Z&UVF8n{+LB4)zJ1RKRfLE%)|9{5gs!n%# z`5%=3849ZZYbgFL0{DUz46Nh&3yWG`;AC~?hiyM2@&OIAQQ%S9w4GQTzWRk^8s|fHiq8 zBU0|Q1_c3^x(klFr2zb;?(yoq|L1a#&MviD+$sk!@j1YW{m;Z-8Y2ZRl`Bj0KRG#F zI<|h7%gXtcFTL^tm#ewY39JL_Zsr>KPzW7;v3Tv}edVjHN$+3j$(37p_pTGTuMrA+ z$Tu4qB3+WmQsUnraihr}=brZed)xav?*UngKOM>kgfjf}%547Iq#wXLPJ@sBKla`-Dyyz-8#O>gq*GG4=tk+3y68^n z?k;Hr47$6!L%Kn_yFoy@LAqhD3**-NdG{FaH}*Hi{`36f2Q1c_bDnja$9c?q!bQNM zNId+V(f-~G4=EI2!XUhiZzjqdEv1#Pn~v8J2$e)-CZ2QuJmuGiG$#QIxKR2LFe!iK z9Y3-m?`Z;H=G|o+4fLN@MF$Xd!B?s<|25{{_WWOC{;x6rGUFeH{r|z3&n-!%u6JCF zsVPh2z|-oNQZ8-{YR@G8Wwm#X$0nbT4xI9rPkZE82K(R!*}=U@VOnWQ_w9&QSZOvL zX;(to*}RY;&<9dC+~UI)U8#&5H4#f;5<_@D{&IXU~I+Z#2ViKeqFT{caZ%>Usf zfUE=Xeh==vUyTtgL;girMZ@>_k+aauT`+5hxDAEi{lA_2>pfH;`8}O@t^^wVCkl89 z5bSuqvw(^WA02kx%eTv|o9~aY-Q{VC@0R|1VV@6P0?vHnn(@0G6yUDDf_{a=MM~+> zhaTUMSe8-*+D~OII4L;;ce!m0>L35xJEB4gmw~psFr}sH3c#9a*~_}!?59_Bi61Ug z-ZC-EcHQo#^egyD=alw2F@ym(MYcSma9|L2&4he)^7zi!JAj{*gE8($N;>_YWI*M~q66Owe z#1ZBu^qJ`=;9e5Q69=Ob$$O#yi0jYKAWsaVhg4i}Bb)GfibLaTNsM6b#eU~zTMU5B zy`G8VJw4MY<{44|u*cwgB4u<{ap4>FGTl*mf2FWLUUJ7+dnp6!%MOj``w7zOf8I9=B3D)@IPHkh8z2~oB!52$x4r*j_e}3%x1n@N2 zq?L(Nu7XfY{q>+Bprzk^AeG)38wIKSGIr{ztekYYZskeuCbMr3G16_sc@9hCl!81~A=LN&Vk1 z1>D;i%~gZN^oNDNCV*s5^JFsC0wzPbSQiVC?^tB@}N$7I$Fhy0UrO@5^^(7?|-Q&wM`#gx4muJ-douL~KX|1FUT7a<(=zC@c z3Z<2$V@27ykedSFk%dWKc20SVAti`-JZgqx9JX9Dy{gV*Jc?Ob$AmqgTQoI%2c7g_s@V{_ZIx)u#Myc(VqkC+suqY#TG^Gi0x*BT1ICYH$ndM1hvRWZ1`y zp>O`Xjb7G@Www0OX8ES635T-T@8&O^V|l5uawg|QOhmSFO8R-vWA+)$EuXY?@SoUX zS6ptzP8&UYm78y}a)N3orv8MueY$e~?sW$z#+xdhcm7VPAV0hY?g|0QMvlkens@Sb zw=|4}O6HW_A`+QjM+VaSB>OW@VzE_N1q5V=TYbV`?LejFAGDkTQ`z&`Bg4jds4>B> zs|~LG7C${Lj&ST&%FQ#{@*9vfSz$_L@^h8PPzF$J87er?K|f0v8Qb(tjbCYG$xFb^ z6K@)t(HGj6Sf+V#ho;J?S@2_FzP&)VXZ_AlK;dqC7G}Mo>0v+kT_( z*?H%g1GZ&rNO;9op~Qp>c`&Ql5~DHAo4u0j=w2#p%XO`A4mX1|R(EJnQ#9X>MWamL zga*pq)iWJq3quBeD(l4_w$|cFlGE@Je`nWoQY@SAleBO-6l<tl*;v(w+Yueb)_wG>+H8Z&ct)!xgnltNLv2|_l0tR6I9n4P|- zs8ISs5H!YIUY(zWgej1uPioQj4m-gUs|^%l zra7mC*cERz0zjC(a2QfhZXJ+$BM(=uRFn87L0;bpSIwILe!$~*#eGanB90zOGoij< zk>z7f^CAu$_j<{{>-;ZxfUo!(La$K`aWJyK3p)Dw>GM~FjvXqW19yb&O~unm1Vfyi~lQ-Tg>ON7Se#TCSRUB>PmQS~9qtz(3SQ%)!ENb$PmYHGM@bUP^_LWhMLc=T-%R$qU|}f$ z9O1weDRkD^Do)Obbbiw!l8?*+1w6|l!D#d1hxQfssv0q5`eHfD5o&d4{0IWq*E8-{ zO&O1yix<4tvAQ{S9YnO6e6!^Co1EoNM}iV_9qJ=Fuc<`vUybWd01g50!MY`n8W^W8_ac4wLX=-Vd&`$wow^)KGQ+D_!KZwN>@`aH1OV>dBG z7wq{?oMBTIa*O+_+a%pPPeWBgZzk5&Xjl&~X8vnWW>sA#CR172NSjS0n~&-d8xVwe zd>9T}tpeNd2Q+T2;9S2vz|t6gzmQ|wHE z8CR@&X`@387{rYFH=h^Dea=?=h&ex7d}}Y_a3T_4H7uPQMjyE4iC|R7%9`8kwzJCJ z|K3P)v2Dn|`$k4a6tP}o*`7K*P~;gd^lIc%$8ds0k^X&&S9-;V-j@SqY?ShLxIs;^ zd>Se+g65}nrI9z^%7?;S3=(T~OVrh$ zJ1r$;>%kiTGTpaeK4C(;@WzweFmL|W7v!}&;El^2$rXz$0!GY&SGz$3?ETp2t%c=< zsDeB^VhT*e;)%RIX<%6wa~j5c6;W}M390MU5B49=g=OES#V=*rF)jz26cuF^6xH+M z^(pXuI>`hZuaS|2Y9BsgAGPNS=;}?650kKJ_$Dp%iC_ZMHcj) z4C`2?xo*&6uRk8qce5|RXKrIjb`%T`U)T;9vDr-Tg5F@V2v6KJ*O%_Lqml?AB1EMZ znq=jU$VAJ0_6Qvhx6IB};Gt`AS*V-x6yv9B`~Gwr#1f|$$D<9Z&e0!`8jGLv68i)f zn=IU$HW6dfvn&fIP*5BhUQ|}@w^0yoWkb>9d#YS_jNZ%o-WZQ-v6HZ<*eZaCUZk_f zKMVGXYNrj^`lB9kC_lj)Sp~_xYZ-k~iJI-C53_-f7prJ|T}^F?IBn?t3DFS$nWO-U zX%0v-`-Zc3{41VF2 zV0tAjBREf81gH)r=Z03Ex=zJ8n$9^HPa}Jj7IyK@7#B#()a?Zz>18Q{Y;$io@FGT@ z7H^rdnAd~;qsM(l695)X|8J+K; zu>FBspTBAMDl}nqMB+ zsK>%NyV}lFL{o)8v8yZXMLFY>_!AkPL0K zjnq=G&W0bY)JQiv(UzL!7S**(&|ylf7k2j2DSt!{{Zh6LnOP9$G2y?m1_(;7s=a~w zVN;NsbrawfU9=vsi7(bfDGaW5lccGhJT7F(9qf-wPkX_qrH(S|#H%Pb0^}hz`zsOc z*Qk?lD~#I#!}2woAGovQ;U5vLAoyqH1z`(JQB_$+5TSH|sN$7mjAI^#_(Gq44Vh>Gh z9Ieg%rh>7~(FP_71tbnSPK>C&T1AY9GY-15DvP2Dat?(tKSasF>1AElfgNY_rd#XL zi;#3=``Jwrx2WFXT&{yK{&$xgl8wI; z1!~f&R_$(HR}20}WB@@Y+B)aKOERCc{bznSfU3SRjbILLzC;(jF~5up!>s!Wl!$*o z*_iYLC}b%P`(2s}YtF;oC>+C^k|$|GCsZ_=FwbP)XfD#!pWBev--_n+y}n%yYab>n z3Z&03=&HR15hx{OJi4ea&#v5el@vU;YTmIK@tEHbS$XZX~3m0Tz1OOLaQyep;J z{(s`r*;}ppr&{)JLvq|k6Uc(Hd5!-7|+#?<6T>| z?aXl5<*IM0q&Lz2PM5v|1srmaLp&`&e(B|Bejh}@>U+?C6QxFs%!M{k*QVUgUALyO zZxQN^>ok3EgbPT_@XIlv_tx+=>Mr9<6r`0HtYV!*a;Do;Mzn<3O}T;M*O+enB*a4i zki<2`-zq1D^fRR4&XM=-rGd3 zxs4ighlQS?lUxthZSe#46AJRKFf4&F#STqabh*n0eC{48Py=a?MlwF#JVz_KT{e{<-YXI(#y)5F`|8ul#^O+Q>c1b}gZ%1fd1uy!RS=>2vTv-Nntn*yc0Ojw=(V-~-20w78Wzh++NDkK zb;D~ouN*3E&ruq^vAM)$Sk-7uZ1LN6{D&b=zcj6yZ{W<%_#s8k6ns6Wt|d-sEYTy@{O zvW$~mop3+iyzmHkQAnpT-J+`Em1ba)4M4R)T)GRHx4N-t$VEO_T z*3{V-SKS;kX8+AY78xOzhBZv(`iG$5&L|Bmfejcuv4^)#!ERG}b5x!o2!S*uH{)^s z^!iCoH67VR^7H*!v5rYtc3~vqnenI+)~w7Oygm#v0OztoTZ7PllHxLW-vA-7FGhfF zIE;1OhQj?)JXfPEc#`o`d34h0sOw2aZwtai-V4M(QjmKO%z+$a5kq`Z13+#8%;0k6 zi0wWx*0X4AQN-f6VjXg77Ac}h>c(gqCj-1uA&iBIwej7#u>qYgZuQb&JJR1HEppnN zoTJt|C5`SiZj^HyaSDzE6V0)gI>gU~zIp!yDEHXb=<|4d*zJvJ_Grn{m>cFz<9At^ zylB`=t7?|_$wI*TFF_FxsIh?8H-5Tl7-{FQltukfP~n-Pq`&Twf%LS9cR=bh7{oMA zFnqA=?ePCqBwysB=MEXc!%*Nl3|ng(aIL?k(DqP z?nILn!bLU9sDsrF*m#ALHliI-JYy>mFXP__sR(kAd^;NeVUH7zWdPgt@zpNwNa#ne z;)ex?l1QY+qe|N6E{W5n?gn-Bre0Cr?$|a~K0tQ_*{{=KTi<+`%ayfw45o_Mt`B?G zo}TqqAnqGotpKyCf&WCDX8Q76ZFYU;M?!7woNpCx)Yq~V$y{&V7%SIzlWqEFrf1m< zb`YJ<0o_|Cgg~3c1o2$8s&|BhX=HZ3TLH9L&QgD4^y~m^GyIkSdY0^gXGlYBzp=gu z-QsSC?RCe6Nmf8+!Y3AIxFaI0DTN7&gK!qkOw zT2dk~EWrk&b8nhEMIDA7X{xz7WBJUGowmT@Rz_s+vmw8XBoxTn-OTHQo3d=nkoKY> zZ^Nl~i#6hJy22gCNCreZGL%(rNVi}4F}Sx;pYvG?ia&p`&hQ$o9i9Mi`OOK|t6&|p8kFs6}(B01j@3MksrB8YNS@kdEvU4pm^aI;NV=xTXsB|B( zk05z?03V=pI6gAqZvKkIX8sK-8GB#t2omF=g`(WBY|tCqXMdGjRgk_899g0-P$p-hnl=du@;xkQ)X5yO z0t%eAYOz1R2f>^wh541Qm1=M!1?8S*~VU#yQ&c*Ml?`^K)@q)3&aYk6l-TV z&YLNxX}KXWYSZt7g{g0iL4H1gsQ`eIyGk%X?1<`5))KN%Eevp&_dXIRE2iTJoKZk< zqa%7@uF0*>rc3s*J?hkXl`2nZQ}MR3TIhx4aL(CD62*v*<>(eCx%&TtLB9|{5O==3 zw_A`6M*(gyc*}ikv^GDwGBQ4{??QFOUhAT)q7on}D(YwDVygz;lV}y+vk82*y()4` zg;1fHUYL_W<6`Y||E(0516}tLUyZ+@)01(mz1ED4J=a0E9qMkGQ#@JBq7NNmsr6tm z2vLko_Iz1VfFcQ9Sa@Ih;~_NpAqm#`Ko6xuQAUnRKSTQU2tgU!&Ubk_6o1xEmLs&l zt>hqrzZ+VQ0rh6^Rr-@A?^mBS;lRe2RLN!*jSF9`m_-OvQ*$)O@znR8#%jK2E@I;3 z{G`mRR8QrA=dI8LnEm>NNx(FD?HCGgsb4XE5u@l^k$>pW%xR>V`B z#c~Ir`3>j(Vvh)Yi$2vC1&&^?hPv>;=PE)ZVSX$iA7OjqJLg9C;mLqYxktmbPTYRN z;N?-|DG64!Wxq_WNtqOapw_ttbL!`-tzzQs$+QF)WPd0VgutiG5R-iOn{sy-WF9j> zc7y2GZp8Zfvo)CD`lU@r7z#pmr{Jdw!C;pQVavjU?`KoP;HrGiAo zRRbC%xWnq5xf8Qy7Z`~C&nwB&jiq zz6>R-wb1AFv64QTtgdwszy!VkM1VO|l$U3A-J?EGb)`FpBb=_ay$%YRAF5<7AF5!3 zE0|W5+@i$JHdQH=o{!U9{@MY|iHfqr_XwxYNa7o8wM_Wm!IVu_`3qG*%=^Onmyd;t z1#mhy6o57SObIyR!#YENSbZQ;#&$8O9-f{5;qwQoC{LR@BdZ5w50fYZLcr}EBVRy4 znWJ6mbyDBs1F8?z)S*GlYLeUbktpDROdf;2?|wofAK~SI9Ic%*5vW-by_S-_0Fu%% zF7Ddm0WZT{n48+cP0sYuw!>)2&`>{>yJbsZ zR`W6XuCoO-HF*VCL|Ajl{}n=SmTQN;1FnW3>Cn+93~W2V`ZBreCcpPqAAV-2If)Lz zpRuc}0=n1w4JTRB+ro4x+pH{slz>P8Ff))7DZm=~sQC4AYReNtrN}jd%^eMqjfA8M ztW$uvrTGOA0r@9&tmg+BV(Jg(1I&->k*n2yH5}7%EX5r}fj54sx3azfNx{YDWFOl< z`6#te8!=7Okl>5qczZc^3SKtKLlmZ%SbC*kJ^*}wN^B7q6 zT+Ex~gG~%y&EihRj)2qz*3DenF2$zKd}hUG$SN7v)luU68Ad7zxfcpG+Z%fA)uc^A zpVu^T1_Q-d3cZ$a|K)!?NPtWviT?$b)gz22O`Vy71exR1aRL1{{Ty+j;2}|8i^Zd<0se;I; zu)kc;0BU1^=4*=>3sAyu+47!2sn8K#_d0}g3Rl=kiP@rYIu%-I!!b7O;y$F7BcriM zj?*Z9f(}UT)8W;t6iT)j8?<%CAgZ*zoFnw-_};{(Tvpg_cuEmS_tFOxa2CoRZoRur zJgRNPoLh_P|6Us*a0&j1t@k|jeZyti@cJr%*h`}bI_(qR0U)O~nuPvx<`yX$6Js)N z`W)h&lE)d&qrWFM?%Mu1fZ>~xi6spI9Es1rTeX=QB1w<1fE5lXDohV82xxb>aor}1 zWnrk=3vWWAi0>Mb1{%59no@*)99Hp?rWv7tZv$G-M}wDJ{`Rvw7FAnEB&)SUxz`wU?Ff{$(>Od6=WxiBhHc5@}eQ5 zi}Mv-BMK0cvLm+3!p@rz5j;J@xlt8XS>v*h8>n5EfwbYBESPW2=Bh#}IBv47Dw!8P zZKl>YBr?_dmu7BXGrf`H(Oay7(wIS zz6mRv8r@rMi6U@8H+$Pq8yQ(xBtILz7r*Hd8?Gl(clbJHDWd}fL8kV|u_IM%Ylzfl=LVh?P$PX%>joJus zMs$re_ULkiGX7uTh+vQY|w0ncf`7WJ`klaOj*}4F+Qh7i4RQgnsaeg1=^b> zympli6p z=8L6I!X3u-IHty&7vYbMN^S%Qy1)=f-9NmY;kV=5z*nbaI1l4;62%m9>X%7A2#!$M zT%V$4l6r=t@U&knxmI$fi}LE1l9kikd+glemAK9IxD|QZ#W^oBP@CiJ;t>ohFKHG% zpUir@QQDXpP0%9e!G4h6jvL3R9`4(Q@{bDUU(L&6;*cdvC8m8Ab-w0-!+HF;9=`>? zAJrEE79X*#tFuaSYLekGk&Ev2livdB7KU@p1@F?ALpZ%cei<+WvB{YKBSsXk zK?9HqU$Xp~umPCuYL$=D=ZZL46Im{Yh;@xjvN%~%o7=WIzR+{t9)kff0c#ZcPMfGI zd-eT`AeD754bcDs|uC`>)oxZ&L9+0HBTcRks$nB3*ztvq0DRR&JSCjKb1Y+mF}$na;bKFl+Ub3&}4 z`Np=C_T!GARAl^Cn#TN`%&DY&=7ywP0>BAM_3{Mp1uoPeT;LvEIR@QI1W>D0@NG`p z)hRM1p7sX+?Lh9xTD-z}4*`O@7qcPucz)(IfqU}mSl&~w)A*4rSvi@PZEI^L=svy{ z4IykZRA}tBSQ!LoiXzK8y1bqRzp%ejm5)N*tUFHw@k4p{`94k-=JmG2?1DrEs*l6r zw^2Lx#HvXXP5G0h>_&?-^8G31T;r6PONu>xX_|L}s;+6|+m@^#QW}Dye$u3N^Vh0^ z9^dQ*Mx`3RGnbf_-(ca#g!8vpR88gV0Ch(yK%PnC@DU(p?MPZDLNQdT{g}&j6HLWn z-w|Fi;1;f=Bm|HF+K2XQtooNA`O-`kF}CPx87i4x>UFz^w;>bvF;uyt{F^wfp$Cn9 zD$vxRC*%QZln);9oe@shrw8})*tK^Aete|t4kIWM(z?_cYo9uzx*YmLFp5e=WM`%T zj1QaEF_`>nAhO4veAGrNLDA(q{@C?V8e2KLKCa!99GTH}xx})Xeclan+ATf2Vg|kzPn90)pch!k00d zC>+ngqjV*<%Wo+Rx|$F4GNy4jfVr5BW>R-%f68Tjddssle6RKBS(}|{8B#c3WN!8Y0T z^B~%k%yIiAH!WL)BA=znHYwflxI8mcLdU?(S~eQ)2!y0qvop`=FXv=^JBDPd$&ws{ zThCqkog9$uz9-5;?V%@>xHpInc{|j)TxRvj%`cmNv0Mo(?-L5#?-I?49T=lMc-2rq zS>sI+rSn#R%n7IS&xX$taCIOsD#vy=D)&2cgv`n*f+9}E9HVY+rCF($ym1c-9owWo zgvTO@e_%a9W(DpLq@(o-oOVSDzz-J_wo*HR1MWcWGE?n0OD6``qOq|wX!u4ig@T@J z&&`i1F)J_)m1;x{PWQp*dY=*!u7Bvsob2b+>ra?1@334SRb?}4Y?2uJ&{RjfaiQgN&PQa}(WZ^Jvg$J;Hd8(wdu?h%QUN$; zNeiq#wp4r6`)G!y_%jQZ%Mywk;}f^(b}BWiE`#Z&v2O3`XM_AN-S-L>>`JF~h1h}4 zL3=~k^ipUE@*5xf5LI4Am<^Q-OEnlqH#;hTbeE@b#+NXSr^mf{u@s*$H7(x^`&WUu z4FTbjf&jQy?aNaw-qI}svk}&smM;$x%H$P1k>#JKe)62DNu{2I0_8p+7(wLre6(BH zsG!{!S${>yNb}a=g>Rr%2&@JE_n>1u+^&=n?F|&4Z9|@mUal265$spvIpT`Y$9XsD z2bhVaYAE{xx*{(Htl4)0;76yvYGdB#mlvC}WA5g%k7X;zBYx1;ez{xzYNp45Je!WVXKIPqMG(BL)OAwfj{xf*SCas1X2qC zvUrw4+45Kq!gO#bYBcZMGbTa2Hu2nnaaW^D-RwrZDwV*`k`RUkn?lDs9>uF|y9Gy? z43E$56=qULs5!G}`@eYfpi6iNHzX}=6KBRO6{Wu3gX(ql@%v(icktJ)!rfAQW8&Tc zFE4@}@P-9TGg|sD(??O${03Z@IS=t9HmE&xV zt=5}lSnK2+OO3@ve?*(P^`7eW%%t&w$AKC-jK)7pdd1?Rin%tjpyFgt_NW}T{VaUNRs^oR&gJR+RDVW*zfNEp1BOPG zh&T?@ATaMMEvS>0*JH02LKQAFdrE8n0HgK^zJxLBrtnw?!BoJko*jmJD?)dgSYoA) zEqZ+eKT?hhP?H!)`^~i41g))OIpP`#K+yp?>6#p)-YF;9*1AqY_pv86l|4OSWA-}5 zMH}9EbUZG$%Pusy3{y}#NG`;ij<3IQaJOHopU1B5xNjmyt80;_IH2a6C7QIFwRmqJQrqTQf1{bQJ<-_V)L~P&pvAGJqMR~!xy3EYIfRh-mdfbcqw(Ms(*qqi z(L(|fd0An`ERrV{uAx;R08|x&v9xRVE3$UNkx9*kAM(F(W5i2jCN{^#AmP-{XQ4#A z{lI)adqD>pMtr9-=&vEuceD_o=tC&$CM1C+{F%TagL{kBXYoGZ`-~I^yt-lYN0=iX zQQ%k_YNPU9pBA)2Q(UC9@%{*-6<1FFhp4PZOZ(9SUO+cRX1Xc0xY*vy6ZKEd;3J@%LFY-fOnT2wOxd zQBdZ%ofF{Jr+8CEpo7z4eO@C+go{~$z=Q8NPXQsM%g-6J&n(6&4|DYJoCET677U;F z0V6Ci+9ft*ZVvZ}1MmcgsNU_9j@?|qF;Q3?@#^X!fB zxn4B9>Yqv>R3$$C<%spU?VGz;n?RE!chy}S-fzRHnOt+0=$9jPT?inUH`lxq+SP41zPsN{BHh#jG^?g4Fi4E3q3W)f@wL)4933g{ERS^MV4tHm!|Ox+Iq_~U;kpf1+MROqEmBrj5kSVqbMK(AnOR~;N|)d?KsC8mSH(Gj4eH9mDkgC` zksv>!gXmBCBtxwWWKsP;m?uYT zc|1#&8u8(H6CyIOY=CJHV{Q&~?@Vjx|EF2pYcIee7E1g77?1%VH!2Ljk-5&at(Rh~ zM%zKr)^F&@{un#DYyYfcLfnT<%%8Fgf6g>O{W3Rb!HYkiefAmvvIw4U$OHG(7(M@+x&b-=NFtDgKGfdu z@{jrJ|Ha(*%AJ-0^8b~w?|%TcX!9w$=l@>5d-ua2w9I9=ba+XCq@n%0>_CRcF8Rxb zf3z3AJp>Md%e!<%4`2ww<4^L?T@U}=Yck0B7nx4k5&dWW`hPL^9clBEd;Nc5?E9DA z3NM{@jb6*Uzo3J=eHN1d_AQJyn27@**7^Q3WzS&P`RCBn&#iuk2svT*L)D=@krN*M z?a1#IB?X{c3y~Rps-Oi@=${fP|C_n*Uu~KH8)M%P;rF}IFYk>=_=ms6^?r}8(Xj&i zCf4wJ`a3Y!NdC{1{ZR4?xIX~FUp*u)2pJVd$O#?Lc*p*$Nd2)W??VA|O-aX_Zumz` z;eR9I@C%;$LjdO25Eo>d{*N>q{%g$tHD=(@{MVR&Pgwoen12MJdyoHrj?8E7C;bn& ze3y2B3&UAnynheHYx$N!&M@ax1GpAeG)Lww=H?u4z0}*cZymR)RGzJ|3rEy zwaOIU{|w$dK-dd;zW2Pq>Ef&Rw!$GqX=N1{cN$98LjR9c=pNJ+1W_XhKB9u?+I;?- z=mL58U?LC~jU=acoT-7hH$HZ!s1tIsgR1(UvNm6CfZr{aB-pe8$(T$j00L}ofNI(0 z5xMb`|A;pPtSES0M5q^P$@1A+A;Pe>rNtat0o~F!_lTh?h;hg-eMBfzv1&Vgk?(iBo zecV_b(!sj|I(R1=vZFs#%I-mJgOfE)sHv43`?61hd!aVRINQy|U%UQ%hcDs48)PbR z>;VPcD;!)%580z%D7mmKyyEH##5g`0&BSfKPA7uP*?y#CVqaLjpxm)>z1J{M9Qa$; zz+({T-V3dt6afvYt<4{!{p%;(%0D#A?mb}h_}IR4G)I7wW2sWmFjJg3Q~-xpYVuKs zU5XNu<5g03-e$mJ;8Z;(UcKnRYxDr?pNUU$3xqqSwN9;}l!Ox!rl$f3Wt{`bB~@A* z?9W4@Df)n$iXxTRaV66($oFZQ&FKIW=Xh+wsq1H7jDi_sw4q7^+&&f~B@^G4>Ysmu z#BjGw=>KdJ(jwG>KBq+aISxm~OSV^GPLjYh#eO6{(00pMw#5Ir6O(bkQl0E_Ta-`y zd1f6z-oGa1k=UT-^olzL-ItwBrEGOs`V#Tayi0+bf%pR-{`lui5T1i8n8Swpwf_1TL(vC_?j^C~nDW+8-V5PaI75+9yi<7m--cP? za`H=>HZ}urBg#{Xhb95J0#t0%Us{L%IOCZRcdeJa%wNeu-M zGH|wka~%vJ>7jBz&E&x7pPK^ZOq=QkS@JK6KOau-LM(tx@uf7E1K^zqu zxkm+t|8k#Ge8t2#ioko>@eD;8Qt0-BZeo6$c1NYq{P0C1 zuX0fAB$XW26Pa>(JE^h&8YJlw!)F3V@l?uSXXX?5NTQ6Jq3lOunmhujkGS|=|G(}| z7WYMw^wm(U-Y|Wwe%VTflsyu%p$TwLuMOP#<%bVoKT-sVlqC{vQ)ubaG>RVwxB%i? z1swjdok3yPGC*`7Ok1Gzr%So}$3(WD-u>m$Y%d9@@0gdA5bNWmEIX(u2Sla}Qy71m zJXuYOq!WNe%2 z!0UIY@sI%M`ymq3`@h$YO$H+@N1xn4>uiTOtm)~%W?(`&TrBsGJ` zjE)SS_ywNCHWI_|@z4i_jk{N^J zzHAo(TO17*iknjfenxgTZ%RK@$d8V^zfsFEaS1oVcehuVFw1IGjF6HyOOsYOZT-?1 zcOi?&zDE94L6kF8xuYP(iv7CO2`&Oq+viB8oJt{>R-tS5Hf*{m2v?C40F|QTXx!Ud zIl*-&UMVljOb$H|H6|l|5&H31zOP;DtI7Nu6y4T)1*^%Bvr32j`!`}JlosE zTEZhGp{N_1T$x>6BW??yW{kbnXTIg4I(#X5&~0RDuedo@zcRnix8hnlHmD-~ns|Vc z@w>BvwkbcQ$P49I4KU>)rJ-(8>%0Di@?04%33H34&YEVCM1m>(x{koz5ys~>AzZOo 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

    CaCrEt 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 -_f3?-#e)~**mv2 zyt$%b5|wAT^6qvcs$Tf$q1CjzZbN0B;>umh~dD<50gOX6&%vAp}(VO#rya3^6{K?~fw>P6C zmO8$-b0C;q$|uBCgKgD4a~nD;nio{AUG;2D6ja)7^vSTVj*Ql4i;)jO-dZMp0WsX$ za(E*fanCkBSa?fXLo0hXF1tDXeiswu%fmL26$__W8^}TR%v9|s`;_SbCB^XDWQME` z=dkzq?MAOn7(%q02T(hS!Vsc15#*@dB0-G=79NmgsZwe{j4R!TkFn6p<<4KF2}sI( zE5wi-Zw1d(Wl;+69CI=`lIP63rW|AsyVI_28xJ+2vxZkm)5XNFC!oe}XrtUY?wzJR zPi`ckV7qj9OLD8HBBzQSvIpj@&eaksi#MbEuoPg2fCLupLf9?+x#r^OF-0VwF~-C z^*0-Y9HJ)e%fp!6dy69N^1riCAG%PQjyGIa^e87xNt9@#@!NjBsXt{W+@l5MXTtIT@xHy%*zjNta80)qL`fM9pIrQ8)iB`tiL@cBG)`HKDM73)RNl( z`0?%t=PQHDbzT)!QqEM6F`9W#K{u_4$=y#vUK9G7$;XRk+EotOE1FAQ=77+I<Nvi5$l4l~Le0mNq1+;vqS7jO+vA?r(cAvex60Ep@pXNl` zp9DPufT*wPnn1k(R1LSiV<=(~iQ>$gi+*~V9HRph#OVovD4z|BE1+wy@xi1Ni$Ex$xb(KMQ5(^b99-N zb&}e;O|)o=Dr&!nmbIovnc}m~vp(DDK^$KTbT3i$3|@?GUdl&*b)UD7q}~~4Y)(`E zrS?H53a%d;`E0<5FS>5KhVf(a&G)FzALqp&v+BkBbncxF=j7e<@=Q8}VE6|HIf4U= zYd5i2k|wRUvO=gb*S4fFVkjIsw=|xn>t76Hh0NTxoT_6o5`gk3ydsrK@$hKcce$G} zx2Kz#zRJINPTp4Nv?G^K3iCp_GJByF zv{T**b`9OtQ!b`{_^~FN)jlIr8pQ9j>z2N@KbWPQBD~{jQ-{d1b9va_5nC!!+kb

    LB?5&6CY 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 - - - - - - - - - - - - - - - - - - - - - - - RFC 0009: Defaults & Overrides - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Defaults & Overrides

    - -

    Summary

    -

    This is a proposal for extending the Kuadrant Policy APIs to fully support use cases of Defaults & Overrides (D/O) for Inherited Policies, including the base use cases of full default and full override, and more specific nuances that involve merging individual policy rules (as defaults or overrides), declaring constraints and unsetting defaults.

    -

    Motivation

    -

    As of Kuadrant Operator v0.6.0, Kuadrant policy resources that have hierarchical effect across the tree of network objects (Gateway, HTTPRoute), or what is known as Inherited Policies, provide only limited support for setting defaults and no support for overrides at all.

    -

    The above is notably the case of the AuthPolicy and the RateLimitPolicy v1beta2 APIs, shipped with the aforementioned version of Kuadrant. These kinds of policies can be attached to Gateways or to HTTPRoutes, with cascading effects through the hierarchy that result in one effective policy per gateway-route combination. This effective policy is either the policy attached to the Gateway or, if present, the one attached to the HTTRoute, thus conforming with a strict case of implicit defaults set at the level of the gateway.

    -

    Enhancing the Kuadrant Inherited Policy CRDs, so the corresponding policy instances can declare defaults and overrides stanzas, is imperative:

    -
      -
    1. to provide full support for D/O along the lines proposed by GEP-713 (to be superseded by GEP-26491) of the Kubernetes Gateway API special group (base use cases);
    2. -
    3. to extend D/O support to other derivative cases, learnt to be just as important for platform engineers and app developers who require more granular policy interaction on top of the base cases;
    4. -
    5. to support more sophisticated hierarchies with other kinds of network objects and/or multiples policies targetting at the same level of the hierarchy (possibly, in the future.)
    6. -
    -

    Guide-level explanation

    -

    Conceptualization and User story

    -

    The base use cases for Defaults & Overrides (D/O) are:

    -
      -
    • Defaults (D): policies declared lower in the hierarchy supersede ones set (as "defaults") at a higher level, or "more specific beats less specific"
    • -
    • Overrides (O): policies declared higher in the hierarchy (as "overrides") supersede ones set at the lower levels, or "less specific beats more specific"
    • -
    -

    The base cases are expanded with the following additional derivative cases and concepts:

    -
      -
    • Merged defaults (DR): "higher" default policy rules that are merged into more specific "lower" policies (as opposed to an atomic less specific set of rules that is activated only when another more specific one is absent)
    • -
    • Merged overrides (OR): "higher" override policy rules that are merged into more specific "lower" policies (as opposed to an atomic less specific set of rules that is activated fully replacing another more specific one that is present)
    • -
    • Constraints (C): specialization of an override that, rather than declaring concrete values, specify higher level constraints (e.g., min value, max value, enums) for lower level values, with the semantics of "clipping" lower level values so they are enforced, in an override fashion, to be the boundaries dictated by the constraints; typically employed for constraining numeric values and regular patterns (e.g. limited sets)
    • -
    • Unsetting (U): specialization that completes a merge default use case by allowing lower level policies to disable ("unset") individual defaults set a higher level (as opposed to superseding those defaults with actual, more specific, policy rules with proper meaning)
    • -
    -

    Together, these concepts relate to solve the following user stories:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    User storyGroupUnique ID
    As a Platform Engineer, when configuring a Gateway, I want to set a default policy for all routes linked to my Gateway, that can be fully replaced with more specific ones(*).Dgateway-default-policy
    As a Platform Engineer, when configuring a Gateway, I want to set default policy rules (parts of a policy) for all routes linked to my Gateway, that can be individually replaced and/or expanded by more specific rules(*).DRgateway-default-policy-rule
    As a Platform Engineer, when defining a policy that configures a Gateway, I want to set constraints (e.g. minimum/maximum value, enumerated options, etc) for more specific policy rules that are declared(*) with the purpose of replacing the defaults I set for the routes linked to my Gateway.Cpolicy-constraints
    As a Platform Engineer, when configuring a Gateway, I want to set a policy for all routes linked to my Gateway, that cannot be replaced nor expanded by more specific ones(*).Ogateway-override-policy
    As a Platform Engineer, when configuring a Gateway, I want to set policy rules (parts of a policy) for all routes linked to my Gateway, that cannot be individually replaced by more specific ones(*), but only expanded with additional more specific rules(*).ORgateway-override-policy-rule
    As an Application Developer, when managing an application, I want to set a policy for my application, that fully replaces any default policy that may exist for the application at the level of the Gateway, without having to know about the existence of the default policy.Droute-replace-policy
    As an Application Developer, when managing an application, I want to expand a default set of policy rules set for my application at the level of the gateway, without having to refer to those existing rules by name.D/Oroute-add-policy-rule
    As an Application Developer, when managing an application, I want to unset an individual default rule set for my application at the level of the gateway.Uroute-unset-policy-rule
    -

    (*) declared in the past or in the future, by myself or any other authorized user.

    -

    The interactive nature of setting policies at levels in the hierarchy and by different personas, make that the following additional user stories arise. These are stories here grouped under the Observability (Ob) aspect of D/O, but referred to as well in relation to the "Discoverability Problem" described by Gateway API.

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    User storyGroupUnique ID
    As one who has read access to Kuadrant policies, I want to view the effective policy enforced at the traffic routed to an application, considering all active defaults and overrides at different policies(*).Obview-effective-policy
    As a Platform Engineer, I want to view all default policy rules that may have been replaced by more specific ones(*).Obview-policy-rule-status
    As a Policy Manager, I want to view all gateways and/or routes whose traffic is subject to enforcement of a particular policy rule referred by name.Obview-policy-rule-reach
    -

    (*) declared in the past or in the future, by myself or any other authorized user.

    -

    Writing D/O-enabled Kuadrant Policies

    -

    Writing a Kuadrant policy enabled for Defaults & Overrides (D/O), to be attached to a network object, involves declaring the following fields at the first level of the spec:

    -
      -
    • targetRef (required): the reference to a hierarchical network object targeted by the policy, typed as a Gateway API PolicyTargetReference or PolicyTargetReferenceWithSectionName type
    • -
    • defaults: a block of default policy rules with further specification of a strategy (atomic set of rules or individual rules to be merged into lower policies), and optional conditions for applying the defaults down through the hierarchy
    • -
    • overrides: a block of override policy rules with further specification of a strategy (atomic set of rules or individual rules to be merged into lower policies), and optional conditions for applying the overrides down through the hierarchy
    • -
    • the bare policy rules block without further qualification as a default or override set of rules – e.g. the rules field in a Kuadrant AuthPolicy, the limits field in a RateLimitPolicy.
    • -
    -

    Between the following mutually exclusive options, either one or the other shall be used in a policy:

    -
      -
    1. defaults and/or overrides blocks; or
    2. -
    3. the bare set of policy rules (without further qualification as neither defaults nor overrides.)
    4. -
    -

    In case the bare set of policy rules is used, it is treated implicitly as a block of defaults.

    -

    Supporting specifying the bare set of policy rules at the first level of the spec, alternatively to the defaults and overrides blocks, is a strategy that aims to provide:

    -
      -
    1. more natural usability, especially for those who write policies attached to the lowest level of the hierarchy supported; as well as
    2. -
    3. backward compatibility for policies that did not support explicit D/O and later on have moved to doing so.
    4. -
    -

    Inherited Policies that declare an intent

    -

    A policy that does not specify D/O fields (defaults, overrides) is a policy that declares an intent.

    -

    One who writes a policy without specifying defaults or overrides, but only the bare set of policy rules, may feel like declaring a Direct Policy. -Depending on the state of other policies indirectly affecting the same object or not, the final outcome can be the same as writing a direct policy. -This is especially true when the policy that declares the intent targets an object whose kind is the lowest kind accepted by Kuadrant in the hierarchy of network resources, and there are no other policies with lower precedence.

    -

    Nevertheless, because other policies can affect the final behavior of the target (e.g. by injecting defaults, by overriding rules, by adding more definitions beneath), policies that simply declare an intent, conceptually, are still Inherited Policies.

    -

    Compared to the inherited policy that misses D/O blocks, these other policies affecting the behavior may be declared:

    -
      -
    • at higher levels in the hierarchy,
    • -
    • at lower levels in hierarchy, or even
    • -
    • at the same level in the hierarchy but happening to have lower precedence (if such case is allowed by the kind of policy.)
    • -
    -

    At any time, any one of these policies can be created and therefore the final behavior of a target should never be assumed to be equivalent to the intent declared by any individual policy in particular, but always collectively determined by the combination of all intents, defaults and overrides from all inherited policies affecting the target.

    -

    From GEP-2649:

    -
    -

    If a Policy can be used as an Inherited Policy, it MUST be treated as an Inherited Policy, regardless of whether a specific instance of the Policy is only affecting a single object.

    -
    -

    An inherited policy that simply declares an intent (i.e. without specifying D/O) will be treated as a policy that implicitly declares an atomic set of defaults, whether the policy targets higher levels in the hierarchy or lower ones. -In the absence of any other conflicting policy affecting the same target, the behavior equals the defaults which equal the intent.

    -

    Inherited Policies that modify an intent

    -

    A policy that specifies D/O fields (defaults, overrides) is a policy explicitly declared to modify an intent.

    -

    Without any other policy with lower precedence, there is no special meaning in choosing whether defaults or overrides in a inherited policy that targets an object whose kind is the lowest kind accepted by Kuadrant in the hierarchy of network resources. -The sets of rules specified in these policies affect indistinctively the targeted objects, regardless of how they are qualified.

    -

    However, because other policies may ocasionally be declared with lower precedence (i.e. targeting lower levels in the hierarchy or due to ordering, see Conflict Resolution), one who declares a policy to modify an intent must carefuly choose between defaults and/or overrides blocks to organize the policy rules, regardless if the targeted object is of a kind that is the lowest kind in the hierarchy of network resources accepted by Kuadrant.

    -

    Even in the cases where no more than one policy of a kind is allowed to target a same object (1:1 relationship) and thus there should never exist two policies affecting a target from a same level of the hierarchy simultaneaously (or equivalently a policy with lower precedence than another, both at the lowest level of the hierarchy), users must assume that this constraint may change (i.e. N:1 relationship between policies of a kind and target become allowed.)

    -

    In all cases, defaults and overrides must be used with the semantics of declaring rules that modify an intent.

    -
      -
    • When an intent does not specify a rule for which there is a higher default declared, the default modifies the intent by setting the value specified by the default.
    • -
    • For an intent that whether specifies or omits a rule for which there is a higher override declared, the override modifies the intent by setting the value specified by the override.
    • -
    -

    Identifying inherited policy kinds

    -

    All Custom Resource Definitions (CRDs) that define a Kuadrant inherited policy must be labeled gateway.networking.k8s.io/policy: inherited.

    -

    Users can rely on the presence of that label to identify policy kinds whose instances are treated as inhertied policies.

    -

    In some exceptional cases, there may be kinds of Kuadrant policies that do not specify defaults and overrides blocks, but that are still labeled as inherited policy kinds. -Instances of these kinds of policies implicitly declare an atomic sets of defaults, similarly to described in Inherited Policies that declare an intent.

    -

    Examples of D/O-enabled Kuadrant policy

    -

    Example 1. Atomic defaults

    -
    kind: AuthPolicy
    -metadata:
    -  name: gw-policy
    -spec:
    -  targetRef:
    -    kind: Gateway
    -  defaults:
    -    rules:
    -      authentication:
    -        "a": {}
    -      authorization:
    -        "b": {}
    -    strategy: atomic
    -
    -

    The above is a proper Inherited Policy that sets a default atomic set of auth rules that will be set at lower objects in case those lower object do not have policies attached of their own at all.

    -

    The following is a sligthly different example that defines auth rules that will be individually merged into lower objects, evaluated one by one if already defined at the "lower" (more specific) level and therefore should take precedence, or if otherwise is missing at the lower level and therefore the default should be activated.

    -

    Example 2. Merged defaults

    -
    kind: AuthPolicy
    -metadata:
    -  name: gw-policy
    -spec:
    -  targetRef:
    -    kind: Gateway
    -  defaults:
    -    rules:
    -      authentication:
    -        "a": {}
    -      authorization:
    -        "b": {}
    -    strategy: merge
    -
    -

    Similarly, a set of overrides policy rules could be specified, instead or alongside with the defaults set of policy rules.

    -

    Atomic vs. individually merged policy rules

    -

    There are 2 supported strategies for applying proper Inherited Policies down to the lower levels of the herarchy:

    -
      -
    • Atomic policy rules: the bare set of policy rules in a defaults or overrides block is applied as an atomic piece; i.e., a lower object than the target of the policy, that is evaluated to be potentially affected by the policy, also has an atomic set of rules if another policy is attached to this object, therefore either the entire set of rules declared by the higher (less specific) policy is taken or the entire set of rules declared by the lower (more specific) policy is taken (depending if it's defaults or overrides), but the two sets are never merged into one.
    • -
    • Merged policy rules: each individual policy rule within a defaults or overrides block is compared one to one against lower level policy rules and, when they conflict (i.e. have the same key with different values), either one or the other (more specific or less specific) is taken (depending if it's defaults or overrides), in a way that the final effective policy is a merge between the two policies.
    • -
    -

    Each block of defaults and overrides must specify a strategy field whose value is set to either atomic or merge. If omitted, atomic is assumed.

    -

    Level of granularity of compared policy rules

    -

    Atomic versus merge strategies, as a specification of the defaults and overrides blocks, imply that there are only two levels of granularity for comparing policies vis-a-vis.

    -
      -
    • -

      atomic means that the level of granularity is the entire set of policy rules within the defaults or overrides block. I.e., the policy is atomic, or, equivalently, the final effective policy will be either one indivisible ("atomic") set of rules ("policy") or the other.

      -
    • -
    • -

      For the merge strategy, on the other hand, the granularity is of each named policy rule, where the name of the policy rule is the key and the value is an atomic object that specifies that policy rule. The final effective policy will be a merge of two policies.

      -
    • -
    -

    Matrix of D/O strategies and Effective Policy

    -

    When two policies are compared to compute a so-called Effective Policy out of their sets of policy rules and given default or override semantics, plus specified atomic or merge strategies, the following matrix applies:

    - - - - - - - - - - - - - - - - - - - - -
    Atomic (entire sets of rules)Merge (individual policy rules at a given granularity)
    DefaultsMore specific entire set of rules beats less specific entire set of rules → takes all the rules from the lower policyMore specific individual policy rules beat less specific individual set of rules → compare one by one each pair of policy rules and take the lower one if they conflict
    OverridesLess specific entire set of rules beats more specific entire set of rules → takes all the rules from the higher policyLess specific individual policy rules beat more specific individual set of rules → compare one by one each pair of policy rules and take the higher one if they conflict
    -

    The order of the policies, from less specific (or "higher") to more specific (or "lower), is determined according to the Gateway API hierarchy of network resources, based on the kind of the object targeted by the policy. The policy that sets higher in the hierarchy dictates the strategy to be applied.

    -

    For a more detailed reference, including how to resolve conflicts in case of policies targeting objects at the same level, see GEP-713's section Hierarchy and Conflict Resolution.

    -

    Unsetting inherited defaults

    -

    In some cases, it may be desirable to be able to unset, at a lower policy, a merged default that is inherited from a higher one. In fact, some inherited defaults could be harmful to an application, at the same time as they are unfeasible to remove from scope for all applications altogether, and therefore require an exception.

    -

    Unsetting defaults via specification at lower level policies provides users who own policy rules at different levels of the hirarchy the option of not having to coordinate those exceptions "offline", nor having to accept the addition of special cases (conditions) at the higher level to exempt only specific lower policies from being affected by a particular default, which otherwise would configure a violation of the inheritance pattern, as well as an imposition of additional cognitive complexity for one who reads a higher policy with too many conditions.

    -

    Instead, users should continue to be able to declare their intents through policies, and redeem an entitlement to unset unapplicable defaults, without any leakage of lower level details upwards at the higher policies.

    -

    The option of unsetting inherited defaults is presented as part of the volition implied by the inheritance of policy rules, which are tipically specified for the more general case (e.g. at the level of a gateway, for all routes), though not necessarily applicable for all special cases beneath. If enabled, this feature helps disambiguate the concept of "default", which should not be understood strictly as the option to set values that protect the system in case of lack of specialisation. Rather, by its property of volition and changeability. I.e., by definition, every default policy rule is opt-out and specifies a value that is modifiable.

    -

    In constrast, a policy rule that is neither opt-out nor modifiable better fits the definition of an override. While a policy rule that is not opt-out, nor it sets a concrete default value to be enforced in the lack of specialisation, defines a requirement.

    -

    Finally, for the use case where users want to set defaults that cannot be unset (though still modifable), the very feature of unsetting defaults itself should be configurable, at least at the level of the system. This can be achieved with feature switches and policy validation, including backed by the cluster's RBAC if needed.

    -

    The capability of unsetting inherited defaults from an effective policy can be identified by the presence of the spec.unset field in a policy. The value is a list of default named policy rules to be unset.

    -

    Conditionally applying D/O

    -

    Users should be able to specify conditions for applying their blocks of defaults and overrides. These conditions aim to support exceptional cases where the blocks cannot be simply applied downwards, but rather depend on specifics found in the lower policies, while still defined in generic terms – as opposed to conditions that leak details of individual lower policies upwards.

    -

    Between a higher and a lower set of policy rules, the higher level dictates the conditions for its rules to be applied (either as defaults or as overrides) over the lower level, and never the other way around.

    -

    D/O conditions are identfied by the presence of the spec.defaults.when or spec.overrides.when fields in a policy. Those should be defined using Common Expression Language (CEL), evaluated in the control plane against the lower level specification that the higher level is being applied to. I.e. self in the CEL expression is the lower policy.

    -

    A concrete useful application for conditionally enforcing a block of D/O is for specifying constraints for lower values. E.g. if a lower policy tries to set a value on a numeric field that is greater (or lower) than a given threshold, apply an override that sets that field value to equal to the threshold; otherwise, use the value declared by the lower policy.

    -

    In contrast, an example of trivially redundant application of D/O conditions would be specifying a default block of rules that is only applied when the lower level does not declare a more specific replacement. Since this is natural semantics of a default, one does not have to use conditions for that.

    -

    Examples of D/O cases

    -

    The following sets of examples generalize D/O applications for the presented user stories, regardless of details about specific personas and kinds of targeted resources. They illustrate the expected behavior for different cases involving defaults, overrides, constraints and unsetting.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ExamplesHighlighted user stories
    A. Default policy entirely replaced by another at lower levelgateway-default-policy, route-replace-policy
    B. Default policy rules merged into policies at lower levelgateway-default-policy-rule, route-add-policy-rule
    C. Override policy entirely replacing other at lower levelgateway-override-policy
    D. Override policy rules merged into other at lower levelgateway-override-policy-rule
    E. Override policy rules setting constraints to other at lower levelpolicy-constraints
    F. Policy rule that unsets a default from higher levelroute-unset-policy-rule
    -

    In all the examples, a Gateway and a HTTPRoute objects are targeted by two policies, and an effective policy is presented highlighting the expected outcome. This poses no harm to generalizations involving same or different kinds of targeted resources, multiples policies targeting a same object, etc.

    -

    The leftmost YAML is always the "higher" (less specific) policy; the one in the middle, separated from the leftmost one by a "+" sign, is the "lower" (more specific) policy; and the rightmost YAML is the expected Effective Policy.

    -

    For a complete reference of the order of hierarchy, from least specific to most specific kinds of resources, as well as how to resolve conflicts of hierarchy in case of policies targeting objects at the same level, see Gateway API's Hierarchy definition for Policy Attachment and Conflict Resolution.

    -

    Examples A - Default policy entirely replaced by another at lower level

    -

    Example A1. A default policy that is replaced entirely if another one is set at a lower level

    -

    A default policy that is replaced entirely if another one is set at a lower level

    -

    Examples B - Default policy rules merged into policies at lower level

    -

    Example B1. A default policy whose rules are merged into other policies at a lower level, where individual default policy rules can be overridden or unset - without conflict

    -

    A default policy whose rules are merged into other policies at a lower level, where individual default policy rules can be overridden or unset - without conflict

    -

    Example B2. A default policy whose rules are merged into other policies at a lower level, where individual default policy rules can be overridden or unset - with conflict

    -

    A default policy whose rules are merged into other policies at a lower level, where individual default policy rules can be overridden or unset - with conflict

    -

    Examples C - Override policy entirely replacing other at lower level

    -

    Example C1. An override policy that replaces any other that is set at a lower level entirely

    -

    An override policy that replaces any other that is set at a lower level entirely

    -

    Examples D - Override policy rules merged into other at lower level

    -

    Example D1. An override policy whose rules are merged into other policies at a lower level, overriding individual policy rules with same identification - without conflict

    -

    An override policy whose rules are merged into other policies at a lower level, overriding individual policy rules with same identification - without conflict

    -

    Example D2. An override policy whose rules are merged into other policies at a lower level, overriding individual policy rules with same identification - with conflict

    -

    An override policy whose rules are merged into other policies at a lower level, overriding individual policy rules with same identification - with conflict

    -

    Examples E - Override policy rules setting constraints to other at lower level

    -

    The examples in this section introduce the proposal for a new when field for the defaults and overrides blocks. This field dictates the conditions to be found in a lower policy that would make a higher policy or policy rule to apply, according to the corresponding defaults or overrides semantics and atomic or merge strategy.

    -

    Combined with a simple case of override policy (see Examples C), the when condition field allows modeling for use cases of setting constraints for lower-level policies.

    -

    As here proposed, the value of the when condition field must be a valid Common Expression Language (CEL) expression.

    -

    Example E1. An override policy whose rules set constraints to field values of other policies at a lower level, overriding individual policy values of rules with same identification if those values violate the constraints - lower policy is compliant with the constraint

    -

    An override policy whose rules set constraints to field values of other policies at a lower level, overriding individual policy values of rules with same identification if those values violate the constraints - compliant

    -

    Example E2. An override policy whose rules set constraints to field values of other policies at a lower level, overriding individual policy values of rules with same identification if those values violate the constraints - lower level violates the constraint

    -

    An override policy whose rules set constraints to field values of other policies at a lower level, overriding individual policy values of rules with same identification if those values violate the constraints - violated

    -

    Example E3. An override policy whose rules set constraints to field values of other policies at a lower level, overriding individual policy values of rules with same identification if those values violate the constraints - merge granularity problem

    -

    The following example illustrates the possibly unintended consequences of enforcing D/O at strict levels of granularity, and the flip side of the strategy field offering a closed set of options (atomic, merge).

    -

    On one hand, the API is simple and straightforward, and there are no deeper side effects to be concerned about, other than at the two levels provided (atomic sets or merged individual policy rules.) On the other hand, this design may require more offline interaction between the actors who manage conflicting policies.

    -

    An override policy whose rules set constraints to field values of other policies at a lower level, overriding individual policy values of rules with same identification if those values violate the constraints - merge granularity problem

    -

    Examples F - Policy rule that unsets a default from higher level

    -

    The examples in this section introduce a new field unset: []string at the same level as the bare set of policy rules. The value of this field, provided as a list, dictates the default policy rules declared at a higher level to be removed ("unset") from the effective policy, specified by name of the policy rules.

    -

    Example F1. A policy that unsets a default policy rule set at a higher level

    -

    A policy that unsets a default policy rule set at a higher level

    -

    Example F2. A policy that tries to unset an override policy rule set a higher level

    -

    A policy that tries to unset an override policy rule set a higher level

    -

    Status reporting and Policy discoverability

    -

    Possible statuses of an inherited policy

    -

    An inherited policy can be at any of the following conditions (RFC 0004):

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeStatusReasonMessage
    AcceptedTrue"Accepted""Policy has been accepted"
    False"Conflicted""Policy is conflicted by <policy-ns/policy-name>"
    False"Invalid""Policy is invalid"
    False"TargetNotFound""Policy target <resource-name> was not found"
    EnforcedTrue"Enforced""Policy has been successfuly enforced[. The following defaults have been added by : x, y]"
    True"PartiallyEnforced""Policy has been successfuly enforced. The following rules have been overridden by : a, b[; the following defaults have been added by : x, y]"
    False"Overridden""Policy has been overridden by <policy-ns/policy-name>"
    False"Unknown""Policy has encountered some issues"
    -

    Policy discoverability and Effective policy

    -

    A special condition must be added to every object that is targeted by a Kuadrant inherited policy if the policy's Enforced status condition is True.

    -

    This special condition to be added to the target object is kuadrant.io/xPolicyAffected, where "xPolicy" is the kind of the inherited policy (e.g. AuthPolicy, RateLimitPolicy.)

    -

    The possible statuses of an object regarding its sensitivity to one or more inherited policies are:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeStatusReasonMessage
    xPolicyAffectedFalse"Unaffected""The object is not affected by any xPolicy"
    True"Affected""The object is affected by xPolicy <policy-ns/policy-name>"
    True"PartiallyAffected""The following sections of the object are affected by xPolicy <policy-ns/policy-name>: rules.0, rules.2"
    -

    The presence of the PolicyAffected status condition helps identify that an object is sensitive to one of more policies of a kind, and gives some specifics about the scope of that effect (entire object or selected sections.) -In many cases, this should be enough for inferring the actual policy rules being enforced for that object.

    -

    For other cases where any of the following situations hold, a more detailed view of the final Effective Policy must be provided to the user:

    -
      -
    • If the rules of the policy cannot be inferred by the name of the policy and/or the user lacks permission to read the policy object;
    • -
    • If the object is affected by more than one policy.
    • -
    -

    To help visualize the effective policy for a given target object in that situation, at least one of the following options must be provided to the user:

    -
      -
    1. A read-only EffectivePolicy custom resource, defined for each kind of inherited policy, and with an instance created for each affected object, that is reconciled and updated by the policy controller.
    2. -
    3. A HTTP endpoint of the policy controller that users can consume to read the effective policy.
    4. -
    5. A CLI tool that offers a command that queries the cluster and returns the effective policy – either by leveraging any of the methods above or computing the effective policy "on-the-fly" in the same fashion as the policy controller does.
    6. -
    -

    Reference-level explanation

    -

    Applying policies

    -

    The following diagrams are a high level model to guide the process of applying a set of policies of a kind for a given Gateway object, where the Gateway object is considered the root of a hierarchy, and for all objects beneath, being the xRoute objects the leaves of the hierarchical tree.

    -

    As presented, policies can target either Gateways of route objects (HTTPRoutes, GRPCRoutes), with no restriction regarding the number of policies of a kind that target a same particular object. I.e. N:1 relationship allowed. Without any loss of generality, 1:1 relationship between policies of a kind and targeted objects can be imposed if preferred as a measure to initially reduce the blast of information for the user and corresponding cognitive load.

    -

    Apply policies to a Gateway (root object) and all objects beneath

    -
    %%{ init: { "theme": "neutral" } }%%
    -flowchart LR
    -    start([For a Gateway <i>g</i><br>and policy kind <i>pk</i>]) -->
    -    list-routes[List all routes<br>accepted by <i>g</i> as <i>R</i>] -->
    -    apply-policies-for-r
    -    subgraph for-each-route[For each <i>r in R</i>]
    -        apply-policies-for-r[[Apply policies<br>of kind <i>pk</i><br>scoped for <i>r</i>]] -->
    -        apply-policies-for-r
    -    end
    -    for-each-route -->
    -    build-virtual-route[Build a virtual route <i>vr</i><br>with all route rules not<br>target by any policy] -->
    -    apply-policies-for-vr[[Apply policies<br>of kind <i>pk</i><br>scoped for <i>vr</i>]] -->
    -    finish(((END)))
    -

    Apply policies of a kind for an object

    -
    %%{ init: { "theme": "neutral" } }%%
    -flowchart LR
    -    apply-policies-for-o-start([Apply policies of kind <i>pk</i><br>scoped for an object <i>o</i>]) -->
    -    list-policies[Make <i>P</i> ← all policies <br>of kind <i>pk</i> that<br>affect <i>o</i>] -->
    -    sort-policies[Sort <i>P</i> from<br>lowest to highest] -->
    -    build-effective-policy[Build an effective<br>policy <i>ep</i> without<br>any policy rules] -->
    -    merge-p-into-ep
    -    subgraph for-each-policy[For each policy <i>p in P</i>]
    -        merge-p-into-ep[[Merge <i>p into <i>ep</i>]] -->
    -        merge-p-into-ep
    -    end
    -    for-each-policy -->
    -    reconcile-ep[Reconcile resources<br>for <i>ep</i>] -->
    -    apply-policies-for-o-finish(((END)))
    -

    Merging two policies together

    -
    %%{ init: { "theme": "neutral" } }%%
    -flowchart LR
    -    merge-p1-into-p2-start([Merge policy <i>p1</i><br>into policy <i>p2</i>]) -->
    -    p1-format{Explicit<br><i>defaults</i> or <i>overrides</i><br>declared in <i>p1</i>?}
    -    p1-format -- Yes --> merge-defaults-for-r[["Merge <b>defaults</b> block<br>of policy rules<br>of <i>p1</i> into <i>p2</i>"]] --> merge-overrides-for-r[["Merge <b>overrides</b> block<br>of policy rules<br>of <i>p1</i> into <i>p2</i>"]] --> merge-p1-into-p2-finish(((Return <i>p2</i>)))
    -    p1-format -- No --> merge-bare-rules-for-r[["Merge ungrouped<br>block of policy rules<br>of <i>p1</i> into <i>p2</i><br>(as <b>defaults</b>)"]] --> merge-p1-into-p2-finish
    -

    Merging a generic block of policy rules (defaults or overrides) into a policy with conditions

    -
    %%{ init: { "theme": "neutral" } }%%
    -flowchart LR
    -    merge-block-of-rules-into-p-start([Merge block of<br>policy rules <i>B</i><br>into policy <i>p</i>]) -->
    -    r-conditions-match{"<i>B.when(p)</i>"}
    -    r-conditions-match -- "Conditions do not match" --> merge-block-of-rules-into-p-finish(((Return <i>p</i>)))
    -    r-conditions-match -- "Conditions match" --> block-semantics{Merge <i>B</i> as}
    -    block-semantics -- "Defaults" --> merge-default-block-into-p[[Merge default block<br>of policy rules <i>B</i><br>into policy <i>p</i>]] --> merge-block-of-rules-into-p-finish
    -    block-semantics -- "Overrides" --> merge-override-block-into-p[[Merge override block<br>of policy rules <i>B</i><br>into policy <i>p</i>]] --> merge-block-of-rules-into-p-finish
    -

    Merge a defaults block of policy rules into a policy

    -
    %%{ init: { "theme": "neutral" } }%%
    -flowchart LR
    -    merge-default-block-into-p-start([Merge default block<br>of policy rules <i>B</i><br>into policy <i>p</i>]) -->
    -    unset-unwanted-policy-rules[Remove from <i>B</i><br>all policy rules<br>listed in <i>p.unset</i>] -->
    -    p-empty{<i>p.empty?</i>}
    -    p-empty -- "Yes" --> full-replace-p-with-defaut-block[<i>p.rules ← B</i>] --> merge-default-block-into-p-finish(((Return <i>p</i>)))
    -    p-empty -- "No" --> default-block-strategy{<i>B.strategy</i>}
    -    default-block-strategy -- "Atomic" --> merge-default-block-into-p-finish
    -    default-block-strategy -- "Merge" --> default-p-r-exists
    -    subgraph for-each-default-policy-rule["For each <i>r in B<i>"]
    -        default-p-r-exists{"<i>p[r.id].exists?</i>"}
    -        default-p-r-exists -- "Yes" --> default-p-r-exists
    -        default-p-r-exists -- "No" --> default-replace-pr["<i>p[r.id] ← r</i>"] --> default-p-r-exists
    -    end
    -    for-each-default-policy-rule -->
    -    merge-default-block-into-p-finish
    -

    Merge an overrides block of policy rules into a policy

    -
    %%{ init: { "theme": "neutral" } }%%
    -flowchart LR
    -    merge-override-block-into-p-start([Merge override block<br>of policy rules <i>B</i><br>into policy <i>p</i>]) -->
    -    override-block-strategy{<i>B.strategy</i>}
    -    override-block-strategy -- "Atomic" --> full-replace-p-with-override-block[<i>p.rules ← B</i>] --> merge-override-block-into-p-finish(((Return <i>p</i>)))
    -    override-block-strategy -- "Merge" --> override-replace-pr
    -    subgraph for-each-override-policy-rule["For each <i>r in B<i>"]
    -        override-replace-pr["<i>p[r.id] ← r</i>"] --> override-replace-pr
    -    end
    -    for-each-override-policy-rule -->
    -    merge-override-block-into-p-finish
    -

    Implementation tiers

    -

    This section proposes a possible path for the implementation of this RFC for Kuadrant's existing kinds of policies that are affected by D/O – notably AuthPolicy and RateLimitPolicy.

    -

    The path is divided in 3 tiers that could be delivered in steps, additionaly to a series of enhancements & refactoring.

    -

    Tier 1

    -
      -
    • Atomic defaults (currently supported; missing addition of the defaults field to the APIs)
    • -
    • Atomic overrides
    • -
    • Policy status and Policy discoverability (i.e. PolicyAffected status on target objects)
    • -
    • CRD labels gateway.networking.k8s.io/policy: inherited | direct
    • -
    -

    Tier 2

    -
      -
    • D/O when conditions (and support for "constraints")
    • -
    • Merge strategy
    • -
    • Reporting of effective policy
    • -
    -

    Tier 3

    -
      -
    • Unsetting (unset)
    • -
    • Metrics for D/O policies (control plane)
    • -
    • Docs: possible approaches for "requirements"
    • -
    -

    Enhancements and refactoring

    - -

    Drawbacks

    -

    See Mutually exclusive API designs > Design option: strategy field.

    -

    Rationale and alternatives

    -

    Mutually exclusive API designs

    -

    The following alternatives were considered for the design of the API spec to support D/O:

    -
      -
    1. strategy field - RECOMMENDED
    2. -
    3. granularity field
    4. -
    5. when conditions (at any level of the spec)
    6. -
    7. CEL functions (at any level of the spec)
    8. -
    9. “path-keys”
    10. -
    11. JSON patch-like
    12. -
    -

    All the examples in the RFC are based on API design strategy field.

    -

    Design option: strategy field

    -

    Each block of defaults and overrides specify a field strategy: atomic | merge, with atomic assumed if the field is omitted.

    -

    All the examples in the RFC are based on this design for the API spec.

    -

    Some of the implications of the design are explained in the section Atomic vs. individually merged policy rules, with highlights to the support for specifying the level of atomicity of the rules in the policy based on only 2 granularities – entire set of policy rules (atomic) or to the level of each named policy rule (merge.)

    - - - - - - - - - - - - - -
    ✅ Pros❌ Cons
    -
      -
    • Same schema as a normal policy without D/O
    • -
    • Declarative
    • -
    • Safe against "unmergeable objects" (e.g. two rules declaring different one-of options)
    • -
    • Strong types
    • -
    • Extensible (by adding more fields, e.g.: to support unsetting defaults)
    • -
    • Easy to learn
    • -
    -
    -
      -
    • 2 levels of granularity only – either all (‘atomic’) or policy rule (‘merge’)
    • -
    • 1 granularity declaration per D/O block → declaring both ‘atomic’ and ‘merge’ simultaneously requires 2 separate policies targeting the same object
    • -
    -
    - -

    The design option based on the strategy field is the RECOMMENDED design for the implementation of Kuadrant Policies enabled for D/O. This is due to the pros above, plus the fact that this design can evolve to other, more versatile forms, such as granularity field, when conditions or CEL functions, in the future, while the opposite would be harder to achieve.

    -

    Design option: granularity field

    -

    Each block of defaults and overrides would specify a granularity field, set to a numeric integer value that describes which level of the policy spec, from the root of the set of policy rules until that number of levels down, to treat as the key, and the rest as the atomic value.

    -

    Example:

    -
    kind: AuthPolicy
    -metadata:
    -  name: gw-policy
    -spec:
    -  targetRef:
    -    kind: Gateway
    -  defaults:
    -    rules:
    -      authentication:
    -        "a": {}
    -      authorization:
    -        "b": {}
    -    granularity: 0 # the entire spec ("rules") is an atomic value
    -  overrides:
    -    rules:
    -      metadata:
    -        "c": {}
    -      response:
    -        "d": {}
    -    granularity: 2 # each policy rule ("c", "d") is an atomic value
    -
    - - - - - - - - - - - - - -
    ✅ Pros❌ Cons
    -
      -
    • Same as design option strategy field
    • -
    • Unlimited levels of granularity (values can be pointed as atomic at any level)
    • -
    -
    -
      -
    • 1 granularity declaration per D/O block → N levels simultaneously require N policies
    • -
    • Granularity specified as a number - user needs to count the levels
    • -
    • Setting a deep level of granularity can cause merging "unmergeable objects"
    • -
    -
    - -

    Design option: when conditions (at any level of the spec)

    -

    Inspired by the extension of the API for D/O with an additional when field (see Examples E), this design alternative would use the presence of this field to signal the granularity of the atomic operation of default or override.

    -

    Example:

    -
    kind: AuthPolicy
    -metadata:
    -  name: gw-policy
    -spec:
    -  targetRef:
    -    kind: Gateway
    -  defaults:
    -    rules:
    -      authentication:
    -        "a": {}
    -        when: CEL # level 1 - entire "authentication" block
    -      authorization:
    -        "b":
    -          "prop-1": {}
    -          when: CEL # level 2 - "b" authorization policy rule
    -
    - - - - - - - - - - - - - -
    ✅ Pros❌ Cons
    -
      -
    • Same as granularity field
    • -
    • As many granularity declarations per D/O block as complex objects in the policy
    • -
    • Granularity specified “in-place”
    • -
    -
    -
      -
    • Setting a deep level of granularity can cause merging "unmergeable objects"
    • -
    • Implementation nightmare - hard to define the API from existing types
    • -
    -
    - -

    Design option: CEL functions (at any level of the spec)

    -

    This design option leans on the power of Common Expression Language (CEL), extrapolating the design alternative with when conditions beyond declaring a CEL expression just to determine if a statically declared value should apply. Rather, it proposes the use of CEL functions that outputs the value to default to or to ovrride with, taking the conflicting "lower" value as input, with or without a condition as part of the CEL expression. The value of a key set to a CEL function indicates the level of granularity of the D/O operation.

    -

    Example:

    -
    kind: AuthPolicy
    -metadata:
    -  name: gw-policy
    -spec:
    -  targetRef:
    -    kind: Gateway
    -  defaults:
    -    rules:
    -      authentication:
    -        "a": {} # static value
    -        "b": "cel:self.value > 3 ? AuthenticationRule{value: 3} : self"
    -      authorization: |
    -        cel:Authorization{
    -          c: AuthorizationRule{prop1: "x"}
    -        }
    -
    - - - - - - - - - - - - - -
    ✅ Pros❌ Cons
    -
      -
    • Unlimited levels of granularity
    • -
    • Granularity specified “in-place”
    • -
    • Extremely powerful
    • -
    • Elegant and simple implementation-wise
    • -
    -
    -
      -
    • Weakly typed
    • -
    • Implementation completely new – cannot reuse current API types
    • -
    • Requires all types to be defined as protobufs
    • -
    • Without strong guardrails, users can easily shoot themselves in the foot
    • -
    • Validation likely requires complex functions for parsing the CEL expressions
    • -
    • Non-declarative
    • -
    -
    - -

    Design option: “path-keys”

    -

    A more radical alternative considered consisted of defining defaults and overrides blocks whose schemas would not match the ones of a normal policy without D/O. Instead, these blocks would consist of simple key-value pairs, where the keys specify the paths in an affected policy where to apply the value atomically.

    -

    Example:

    -
    kind: AuthPolicy
    -metadata:
    -  name: gw-policy
    -spec:
    -  targetRef:
    -    kind: Gateway
    -  defaults:
    -    "rules.authentication":
    -      "a": {G}
    -    "rules.authorization.b": {G}
    -
    - - - - - - - - - - - - - -
    ✅ Pros❌ Cons
    -
      -
    • D/O as simple key-value sets (keys: where to apply, values: what to apply)
    • -
    • Declarative
    • -
    • Unlimited levels of granularity (values can be pointed as atomic at any level)
    • -
    • Unlimited merge declarations per D/O block
    • -
    • Intuitive, easy-to-learn
    • -
    -
    -
      -
    • Not same schema as the normal policy (without D/O) - not very GWAPI-like
    • -
    • Weakly typed (i.e. map[string]any)
    • -
    • Not extensible (e.g., cannot add other fields to the API)
    • -
    -
    - -

    Design option: JSON patch-like

    -

    Similar to the path-keys design option, inspired by JSON patch operations, to provide more kinds of operations and extensibility.

    -

    Example:

    -
    kind: AuthPolicy
    -metadata:
    -  name: gw-policy
    -spec:
    -  targetRef:
    -    kind: Gateway
    -  defaults:
    -
    -  - path: rules.authentication
    -    operation: add
    -    value: { "a": {G} }
    -  - path: rules.authorization.b
    -    operation: remove
    -  - path: |
    -      rules.authentication.a.
    -      value
    -    operation: le
    -    value: 50
    -
    - - - - - - - - - - - - - -
    ✅ Pros❌ Cons
    -
      -
    • Same as "path-keys" field
    • -
    • Extensible, all kinds of operations supported (add, remove, constraint)
    • -
    -
    -
      -
    • Not same schema as the normal policy (without D/O) - not very GWAPI-like
    • -
    • Less declarative
    • -
    • Weakly typed (i.e. value: any)
    • -
    -
    - -

    Prior art

    -

    Other than the primitive support only for implicit atomic defaults provided by Kuadrant for the AuthPolicy and RateLimitPolicy, other real-life implementations of D/O along the lines proposed by Gateway API are currently unknown.

    -

    Some orientative examples provided in:

    - -

    Out of scope

    -

    Policy requirements

    -

    A use case often described in association with D/O is the one for declaring policy requirements. These are high level policies that declare requirements to be fulfilled by more specific (lower level) policies without specifying concrete default or override values nor constraints. E.g.: "an authentication policy must be enforced, but none is provided by default."

    -

    A typical generic policy requirement user story is:

    -
    -

    As a Platform Engineer, when configuring a Gateway, I want to set policy requirements to be fulfilled by one who manages an application/route linked to my Gateway, so all interested parties, including myself, can be aware of applications deployed to the cluster that lack a particular policy protection being enforced.

    -
    -

    Policy requirements as here described are out of scope of this RFC.

    -

    We believe policy requirement use cases can be stated and solved as an observability problem, by defining metrics and alerts that cover for missing policies or policy rules, without necessarily having to write a policy of the same kind to express such requirement to be fulfilled.

    -

    Unresolved questions

    -

    Merging policies with references to external objects

    -

    How to handle merges of policies from different namespaces that contain references to other objects (e.g. Secrets)?

    -

    Often policies rules include references to other Kubernetes objects, such as Secrets, typically defined in the same namespace as the policy object. When merging policies from different namespaces, these references need to be taken into account.

    -

    If not carried along with the derivative resources (e.g. Authorino AuthConfig objects) that are created from a merge of policies (or from the computed effective policy), composed out of definitions from different namespaces, and that depend on those references, these references to external objects can be broken.

    -

    This is not much of a problem for atomic D/O only, as the derivative objects that depend on the references could be forced to be created in the same namespace as the policy that wins against all the others – and therefore in the same namespace of the winning referents as well. However, when merging policies, we can run into a situation where final effective policies (thus also other derivative resources) contain references to objects inherited from definitions from other namespaces.

    -

    Possible solutions to this problem include:

    -
      -
    1. Copying the referenced objects into the namespace where the derivative resources will be created.
    2. -
    3. Involves maintaining (watching and reconciling) those referenced objects
    4. -
    5. May raise security concerns
    6. -
    7. Allowing derivative resources (e.g. Authorino AuthConfigs) to reference objects across namespaces, as well as giving permissions to the components that process those references (e.g. Authorino) to read across namespaces
    8. -
    9. May raise security concerns
    10. -
    11. Should probably be restricted to derivative resources created by Kuadrant and not allowed to users who create the derivative resources themselves
    12. -
    -

    Policy spec resembling more the target spec

    -

    Should Kuadrant's inherited policy specs resemble more the specs of the objects they target?

    -

    The UX for one who writes a Kuadrant policy of the inherited class of policies is arguably not very different from writing any custom resource that happens to specify a targetRef field. -Other than name and kind of target object, there is nothing much in a Kuadrant policy custom resource that provides the user with an experience almost close to be "adding fields" in the target object.

    -

    With the exception of a few types reused for the route selectors, the spec of a Kuadrant policy is very different from the spec of the object that ultimately the policy augments, i.e. the spec of the route object. This remains basically unchanged after this RFC. However, another way to think on the design of those APIs is one where, in contrast, the specs of the policies partially mirror the spec of the route, so users can write policies in a more intuitive fashion, as if the definitions of the policy would look like extensions of the routes they target (directly or by targeting gateways the routes are attached to.)

    -

    E.g.:

    -
    kind: HTTPRoute
    -metadata:
    -  name: my-route
    -spec:
    -  rules:
    -
    -  - name: rule-1
    -    matches:
    -    - method: GET
    -    backendRef: {}
    -  - name: rule-2
    -    backendRef: {}
    -
    -

    An inherited policy that targets the HTTPRoute above could otherwise look like the following:

    -
    kind: Policy
    -metadata:
    -  name: my-policy
    -spec:
    -  targetRef:
    -    kind: HTTPRoute
    -    name: my-route
    -  defaults: # mirrors the spec of the httproute object
    -    policySpecificDef: {} # augments the entire httproute object
    -  overrides: # mirrors the spec of the httproute object
    -    rules:
    -
    -    - name: rule-2
    -      policySpecificDef: {} # augments only httprouterule rule-2 of the httproute object
    -
    -

    The above already is somewhat closer to being true for the AuthPolicy API, than it is for the RateLimitPolicy one. However, that is strictly coincidental, because the AuthPolicy's spec happens to specify a rules field, where the equivalent at the same level in RateLimitPolicy is called limits.

    -

    This alternative design could make writing policies more like defining filters in an HTTPRoute, with the difference that policies are external to the target they extend (while filters are internal.) At the same time, it could be a replacement for Kuadrant route selectors, where the context of applicability of a policy rule is given by the very structure within the spec how the policy rule is declared (resembling the one of the target), thus also would shaping context for D/O.

    -

    One caveat of this design though is that each policy specific definition (i.e. the rule specification that extends the object at a given point defined by the very structure of the spec) is exclusive of that given point in the structure of the object. I.e., one cannot specify a single policy rule that augments N > 1 specific rules of a target HTTPRoute.

    -

    Due to its relevance to the design of the API that enables D/O, this was left as an unresolved question. To be nonetheless noticed that, as a pattern, this alternative API design extends beyond inherited policies, impacting as well the direct policy kinds DNSPolicy and TLSPolicy.

    -

    Future possibilities

    -

    N:1 policy-target relationship

    -

    Although this proposal was thought to keep options open for multiple policies of a kind targeting a same network resource, this is currently not the state of things for Kuadrant. Instead, Kuadrant enforces 1:1 relationship between policies of a kind and target resources.

    -

    Supporting N:1 relationships could enable use cases such as of App Developers defining D/O for each other at the same level of a shared xRoute, as well as Platform Engineers setting different policy rules on the same Gateway.

    -

    This could provide an alternative to achieving separation of concerns for complex policy kinds such as the AuthPolicy, where different users could be responsible for authentication and authorization, without necessarily depending on defining new kinds of policies.

    -

    Route rule name and targetRef.sectionName

    -

    If Gateway API's GEP-995 is accepted (i.e. kubernetes-sigs/gateway-api#2593 gets merged) and the name field for route rules implemented in the APIs (HTTPRoute and GRPCRoute), this could impact how Kuadrant delivers D/O. Although the semantics could remain the same, the users specify the scope for a given set of policy rules could simplify significantly.

    -

    As of today, Kuadrant's AuthPolicy and RateLimitPolicy APIs allow users to target sections of a HTTPRoute based on route selectors, and thus all the conflict resolution involved in handling D/O must take that logics into account.

    -

    With named route rules supported by Gateway API, either route selectors could be redefined in a simpler form where each selector consists of a list of names of rules and/or entire policies could be scoped for a section of a resource, by defining the targetRef field based on the PolicyTargetReferenceWithSectionName type.

    -

    To be noted GEP-2649's recommendation of not defining inherited policies that allow for sectionName in the targetRef. Nonetheless, this is a general rule from the spec said to be acceptable to be broken in the spirit of offering better functionality to users, provided it can deal with the associated discoverability and complexity problems of this feature.

    -

    Use listMapType instead of maps of policy rules

    -

    Despite having recently modified the AuthPolicy and RateLimitPolicy APIs to use maps for declaring policy rules instead of lists (RFC 0001), reverting this design in future versions of these APIs, plus treating those lists as listMapType, could let us leverage the API server's strategic merge type to handle merges between policy objects.

    -

    In the Policy CRDs, the policy rule types must specify a name field (required). The list of rules type (i.e. []Rule) must then speficy the following Kubebuilder CRD processing annotations:

    -
    // +listType=map
    -// +listMapKey=name
    -
    -
    -
    -
      -
    1. -

      As the time of writing, GEP-713 (Kubernetes Gateway API, SIG-NETWORK) is under revision, expected to be split into two separate GEPs, one for Direct Policies (GEP-2648) and one for Inherited Policies (GEP-2649.) Once these new GEPs supersede GEP-713, all references to the previous GEP in this document must be updated to GEP-2649. 

      -
    2. -
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/architecture/rfcs/0010-gateway-api-metrics-exporter/index.html b/0.10.0/architecture/rfcs/0010-gateway-api-metrics-exporter/index.html deleted file mode 100644 index d92a87c37..000000000 --- a/0.10.0/architecture/rfcs/0010-gateway-api-metrics-exporter/index.html +++ /dev/null @@ -1,3532 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - RFC 0010: Gateway API Metrics Exporter - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Gateway API Metrics Exporter

    - -

    Summary

    -

    A new sub-project for a prometheus exporter that exports metrics about the state of Gateway API resources in a Kubernetes cluster.

    -

    Motivation

    -

    Allow additional stateful information about Gateway API resources to be made available via metrics. -Currently a set of metrics are made available via the gateway-api-state-metrics project. -However, there are limitations with what resource information can be exposed using the underlying kube-state-metrics project. -Additional stateful information would include:

    -
      -
    • Individual listener status within a Gateway
    • -
    • HTTPRoute status
    • -
    -

    For example, the individual status listener information from a Gateway:

    -
      status:
    -    listeners:
    -
    -    - attachedRoutes: 1
    -      conditions:
    -      - lastTransitionTime: "2023-08-15T13:22:06Z"
    -        message: No errors found
    -        observedGeneration: 1
    -        reason: Ready
    -        status: "True"
    -        type: Ready
    -      - lastTransitionTime: "2023-08-15T13:22:06Z"
    -        message: No errors found
    -        observedGeneration: 1
    -        reason: ResolvedRefs
    -        status: "True"
    -        type: ResolvedRefs
    -      name: api
    -
    -

    and HTTPRoute parents status conditions:

    -
      status:
    -    parents:
    -
    -    - conditions:
    -      - lastTransitionTime: "2024-05-16T16:17:38Z"
    -        message: Object affected by AuthPolicy default/toystore
    -        observedGeneration: 1
    -        reason: Accepted
    -        status: "True"
    -        type: kuadrant.io/AuthPolicyAffected
    -      - lastTransitionTime: "2024-05-16T16:18:51Z"
    -        message: Object affected by RateLimitPolicy default/toystore
    -        observedGeneration: 1
    -        reason: Accepted
    -        status: "True"
    -        type: kuadrant.io/RateLimitPolicyAffected
    -      controllerName: kuadrant.io/policy-controller
    -      parentRef:
    -        group: gateway.networking.k8s.io
    -        kind: Gateway
    -        name: api-gateway
    -        namespace: kuadrant-system
    -    - conditions:
    -      - lastTransitionTime: "2024-05-16T16:17:38Z"
    -        message: Object affected by AuthPolicy default/toystore
    -        observedGeneration: 1
    -        reason: Accepted
    -        status: "True"
    -        type: kuadrant.io/AuthPolicyAffected
    -      - lastTransitionTime: "2024-05-16T16:18:51Z"
    -        message: Object affected by RateLimitPolicy default/toystore
    -        observedGeneration: 1
    -        reason: Accepted
    -        status: "True"
    -        type: kuadrant.io/RateLimitPolicyAffected
    -      - lastTransitionTime: "2024-05-20T11:45:33Z"
    -        message: Route was valid
    -        observedGeneration: 1
    -        reason: Accepted
    -        status: "True"
    -        type: Accepted
    -      - lastTransitionTime: "2024-05-20T11:45:33Z"
    -        message: All references resolved
    -        observedGeneration: 1
    -        reason: ResolvedRefs
    -        status: "True"
    -        type: ResolvedRefs
    -      controllerName: istio.io/gateway-controller
    -      parentRef:
    -        group: gateway.networking.k8s.io
    -        kind: Gateway
    -        name: api-gateway
    -        namespace: kuadrant-system
    -
    -

    Guide-level explanation

    -

    First, implement the existing Gateway API metrics that are part of the gateway-api-state-metrics project. -This will allow the new prometheus exporter to replace that project as a whole. -The metrics will be backwards compatible with the gateway-api-state-metrics project, with the addition of new metrics.

    -

    Second, implement new metrics, as per the examples below, to capture the additional status information:

    -

    gatewayapi_gateway_status_listeners_conditions{namespace="<NAMESPACE>",name="<GATEWAY>",listener_name="<LISTENER_NAME>",type="<ResolvedRefs|Ready|Other>} 1
    -
    -This metric captures the status condition types of individual listeners in a Gateway. -It will allow the status of individual named listeners to be queried, graphed and alerted on via metrics. -The health status of listeners can then be visualised in a stat panel in Grafana, showing healthy and unhealthy listeners. -This expands the debugging path beyond just the overall health of a Gateway.

    -

    gatewayapi_httproute_status_parents_conditions{namespace="<NAMESPACE>",name="<GATEWAY>",controller_name="<CONTROLLER_NAME>","parent_group="<PARENT_GROUP>",parent_kind="<PARENT_KIND>",parent_name="<PARENT_NAME>",parent_namespace="<PARENT_NAMESPACE>",type="<ResolvedRefs|Accepted|Other>} 1
    -
    -This metric captures the condition types for each parent of a HTTPRoute. -The type field would also record any custom types set by a controller. For example, kuadrant.io/AuthPolicyAffected and kuadrant.io/RateLimitPolicyAffected. -This will allow the health of HTTPRoutes to be reported via metrics. A HTTPRoute that has an type of Accepted and value of 1 means the HTTPRoute is accepted by the Gateway and can be considered healthy. -It will also allow policy specific information about a HTTPRoute to be represented in metrics. -For example, alerting on any HTTPRoutes that don't have the kuadrant.io/AuthPolicyAffected type with a value of 1 i.e. HTTPRoutes without an AuthPolicy.

    -

    Tests will be added directly to the project in a similar manner to the redis-exporter. -The test environment will bring up a kind cluster, create the Gateway API CRDs, example Gateway & HTTPRoute resources, then test the scrape endpoint. -This will be the same as how metrics are tested for the gateway-api-state-metrics project. -There is a separate test function for each resource.

    -

    Existing example dashboards in the gateway-api-state-metrics project will be copied over to the exporter project and continue to work as before. -However, initially it will just be the Gateway, GatewayClass and HTTPRoute dashboards as those will be the metrics that are implemented first.

    -

    Reference-level explanation

    -

    The exporter will be written in golang and follow the guidelines from https://prometheus.io/docs/instrumenting/writing_exporters/. -Other exporters like the https://github.com/prometheus/node_exporter/tree/master and https://github.com/oliver006/redis_exporter will be referenced for patterns and library usage. -Metrics will only be pulled from the kubernetes API when Prometheus scrapes them. -That is, the exporter will not perform scrapes based on its own timers. -All scrapes will be synchronous.

    -

    The client-go library will be used for all kubernetes API calls. -As the number of Gateways and HTTPRoutes could vary greatly, there is a performance consideration with these API calls if there are a lot of resources. -To allow for this, a single list of all resources of a kind will used rather than 1 by 1. -If in future there are issues with performance, there is an option to cache responses to expensive queries.

    -

    A 'gateway_metrics_up` metric will be included, as per https://prometheus.io/docs/instrumenting/writing_exporters/#failed-scrapes -such that the exporter can continue to respond in a standard way if there are issues with some aspects of scraping. -The scrape response should include all metrics that have information available at that time of scraping.

    -

    Drawbacks

    -

    This is an additional library to maintain. -However, it will supersede the gateway-api-state-metrics project and dependency on kube-state-metrics.

    -

    Rationale and alternatives

    -

    In theory it should be possible to get the desired functionality from the kube-state-metrics project if the proposed change in https://github.com/kubernetes/kube-state-metrics/pull/2059 is accepted and subsequently implemented. -However, that proposal has been open since May 2023. -I have ruled out the possibility of helping with the implementation of this change in that project due to:

    -
      -
    • lack of detailed knowledge of the current implementation of selectors in kube-state-metrics
    • -
    • potential complexity of implementing generic CEL support in that project
    • -
    • it not being core to the Kuadrant project goals, combined with the ongoing maintenance commitment after implementation. It wouldn't be fair to land the change we need without following up on maintenance after
    • -
    -

    The proposed design is a more focused solution on the needs of the Kuadrant project from Gateway API resources in the form of metrics. -There are plenty of examples of exporters out there that we can reference and follow established patterns.

    -

    If we don't make this change, we are limited to having just the overall Gateway status available via metrics, -and no HTTPRoute status information on which we can visualise and alert.

    -

    Prior art

    -

    The primary prior art are the kube-state-metrics project, and the gateway-api-state-metrics projects. -The gateway-api-state-metrics project uses the CustomResourceStateMetrics configuration feature of kube-state-metrics to configure what fields in which resources should be made available via metrics.

    -

    Unresolved questions

    -

    n/a

    -

    Future possibilities

    -

    Although this exporter is intended to replace the gateway-api-state-metrics project, -it will likely take a phased approach to get to that point. -The initial goal is to get 'like for like' functionality from a Kuadrant project point of view (Gateways, GatewayClasses and HTTPRoutes), -followed by the new status functionality as detailed in this RFC. -Other resources, such as TLSRoute, UDPRoute etc.. can be added later.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/architecture/rfcs/0011-policy-machinery/index.html b/0.10.0/architecture/rfcs/0011-policy-machinery/index.html deleted file mode 100644 index 94fd83888..000000000 --- a/0.10.0/architecture/rfcs/0011-policy-machinery/index.html +++ /dev/null @@ -1,3555 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - RFC 0011: Policy Machinery for reconciliation - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Policy Machinery for reconciliation

    - -

    Summary

    -

    Explain how Kuadrant's Policy Machinery can be used for reconciliation.

    -

    Motivation

    -

    The Policy Machinery project (repo, pkg.go) offers a set of types and functions for implementing Gateway API policies – i.e.

    -
      -
    • highly flexible representation of topologies of targetable resources;
    • -
    • calculating effective policies based on custom or default merge strategies;
    • -
    • tooling to watch and reconcile resources based on cluster events.
    • -
    -

    These can be used for tailoring implemention of Kuadrant policies and Kuadrant instances. See example provided.

    -

    Leveraging the Policy Machinery can be key to:

    -
      -
    1. Improve flow control of concurrent reconciliation events
    2. -
    3. Simplification of the calculation of effective policies respectively to the topological routing path of the requests
    4. -
    5. Correct implementation of Defaults & Overrides' merge strategy (RFC 0009)
    6. -
    7. Supporting multiple policies targeting a same resource
    8. -
    9. Supporting targeting sections of a resource (e.g. Gateway listeners, HTTPRouteRules)
    10. -
    11. Supporting multiple targetRefs in a policy
    12. -
    13. Extending policies to target other kinds of resources (e.g. GatewayClass, Service, Namespace) -– future
    14. -
    -

    Guide-level explanation

    -

    Although essentially an implementation detail of the Kuadrant Operator, levering the Policy Machinery may introduce the following user-perceived features:

    -
      -
    • Acknowledgement of the topological routing path of the request respectively to applicable effective policies
    • -
    • New form of targeting sections of a resource with a policy
    • -
    • Elevated meaning of uniquely identifiable concepts across policy resources (e.g. named policy rules)
    • -
    • Possibility of multiple policies of a kind targeting a same resource
    • -
    • (Window of opportunity for) introducing plural targetRefs
    • -
    -

    User-acknowledgeable reference of the topological routing path of the request

    -

    One who specifies Kuadrant policies targeting resources at any levels of the hierarchy Gateway → Listener → HTTPRoute → HTTPRouteRule1 shall expect the effect of such policies to be reported always respectively to the lowest level of the hierarchy that the kind of policy allows targeting. E.g.:

    -
      -
    • A DNSPolicy that allows targeting a Gateway hypothetically with or without specifying a sectionName actually targets gateway listeners; the user wants to reason about the state of DNSPolicies regarding their effect on each listeners specified in the Gateway. In a context with 2+ DNSPolicies, simultaneously targeting both a Gateway and specific listeners, DNS records for some listener hostnames may have been reconciled according to the specification from one policy or another, occasionally no policy at all.
    • -
    • A RateLimitPolicy that allows targeting a Gateway, a HTTPRoute or specific HTTPRouteRule actually targets (directly or indirectly) HTTPRouteRule objects; the user wants to reason about the state of all RateLimitPolicies with respect to each HTTPRouteRule, where some HTTPRouteRules may be protected by one RateLimitPolicy, a combination of multiple RateLimitPolicies, or occasionally no RateLimitPolicy at all.
    • -
    -

    In the specific case of policy kinds that allow targeting HTTPRouteRules, due to complex network topologies supported by Gateway API, including in particular HTTPRoutes with multiple Gateway parents, a same HTTPRouteRule may or may not be affected by a policy, depending on which routing path in the network topology a request flows. Therefore, ultimately users will reason about policies and effective policies in terms of the paths between at least gateways and the lowest levels targeted by the policies that a request can flow. Possibly, in terms of all possible paths between Gateways and Services.

    -

    Kuadrant shall provide users with such visibility. Leveraging Policy Machinery is an implementation detail that nonetheless makes achieving this goal easier.

    -

    User-facing changes to the policy APIs

    -

    Targeting sections of network resource

    -

    Leveraging Policy Machinery may also motivate some user-facing changes. In particular, replacing AuthPolicy's and RateLimitPolicy's routeSelectors for a targetRef with optional sectionName (made possible since kubernetes-sigs/gateway-api#2895.)

    -

    This change would cause a policy of AuthPolicy or RateLimitPolicy kind to always be attached to its targets entirely, i.e. without having rules that attach to some sections and other rules to other sections or no section at all. This differs from current situation where a policy of those kinds can be attached to a HTTPRoute and some of the policy's rules more specifically attached to individual HTTPRouteRules only, including with multiple policy rules attached to different HTTPRouteRules of the same targeted HTTPRoute. Instead, attaching a policy must be a cohesive, unambiguous operation, that occasionally requires users to specify more fine-grained policy objects to be attached only to sections of a resource.

    -

    Identity of concepts across multiple policy objects

    -

    In some cases, splitting policy objects for the purpose of targeting sections of a network resource, without breaking the semantics of having a single set of policy objects cohesively defined, also implies that definitions about a same entity or concept within a policy (e.g. a limit definition), repeated at multiple policy objects, may have a way to represent to refer to the same thing (e.g. same set of counters).

    -

    This is the case, for example, of limit definitions in a RateLimitPolicy as well as cache configs in an AuthPolicy. To avoid creating multiple rate-limit counter namespaces (analogously, multiple authorization rule cache entries) for definitions that are effectively about the same entity, despite specified at multiple policy objects, the APIs must provide a way for users to convey one of the other intent: definitions refer to the same thing versus definitions refer to different things.2

    -

    Other user-facing changes

    -

    The following possible (non-required) other user-facing changes can be enabled leveraging Policy Machinery, without marginal implementation cost:

    -
      -
    1. Plural targetRefs.
    2. -
    3. Multiple policies of a kind targeting a same network resource/resource section ("horizontal Defaults & Overrides.")
    4. -
    5. Aesthetical difference between Direct versus Inherited policies, implied by the merge strategies implemented by each kind of policy, rather than a necessary distinction.
    6. -
    -

    Reference-level explanation

    -

    Usage of the Policy Machinery consists of importing two packages:

    -
      -
    • machinery: provides the types and abstractions to build Gateway API topologies of targetable network resources, policies and adjacent objects;
    • -
    • controller: offers tools for implementing topology-based custom controllers of reconciliation logic.
    • -
    -

    From that on, the following steps drive leveraging the Policy Machinery in the Kuadrant Operator:

    -
      -
    1. -

      Implement the machinery.Policy interface for all kinds of policies.

      -
      -

      Example provided for the DNSPolicy, TLSPolicy, AuthPolicy and RateLimitPolicy kinds.

      -
      -
    2. -
    3. -

      Define wrappers that implement the machinery.Object interface for any kind of adjacent object whose unique identifier as a node in the topology graph cannot be based on the default controller.RuntimeObject type provided (if any.)

      -
    4. -
    5. -

      Implement the linking functions for all kinds of adjacent objects and corresponding parents and children in the topology graph, including types such as Kuadrant, Istio's WasmPlugin, ConfigMap, etc.

      -
      -

      The Kuadrant custom resources shall be the roots of a directed acyclic graph (DAG) from which an entired topology of targetable network resources, adjacent objects and policies are connected.

      -
      -
    6. -
    7. -

      Start a controller.Controller that:

      -
        -
      1. Watches for all kinds of objects to be represented in the topology.
      2. -
      3. Triggers a controller.Workflow on events related to any of the watched resources.
      4. -
      -
    8. -
    9. -

      At every reconciliation event3:

      -
        -
      1. -

        Reconcile the internal objects for setting up the environment for a Kuadrant instance (deployments, gateway controller configs, etc).

        -
      2. -
      3. -

        For each kind of policy and applicable path in the topology graph relevant for the policy kind:

        -
      4. -
      5. -

        Compute an effective policy and give it a unique identifier.

        -
      6. -
      7. Perform (or delegate) the policy-specific configuration (DNS, TLS, Auth, RL) of the effective policy with the policy decision/enforcement point4.
      8. -
      9. For policy kinds enforced at request time (data-plane policies), configure the gateway to call the policy decision point (PDP) on requests that match the attributes of the path5, passing in the payload to the PDP the identifier of the effective policy.
      10. -
      11. -

        Update the status stanzas of all targetables in the topology whose paths were configured for an effective policy (or lack of such), with a map that allows users to inspect, for a given path, what effective policy (if any) will be enforced. - > Note: If unsuitable for the status stanza of the object, the details of the effective policies may require additional tooling to be inspected by the users and the mapping must be to the unique identifier of the effective policy.

        -
      12. -
      13. -

        Store a DOT representation of the topology graph in a ConfigMap.

        -
      14. -
      -
    10. -
    -

    Drawbacks

    -

    Part of the work consists on refactoring, without value perceived by the user.

    -

    Rationale and alternatives

    -

    Annotations

    -

    Use of annnotations to track back references from targeted objects to policies. This approach has been slowly deprecated to favour the use of an in-memory directed acyclic graph (DAG) representing the relationship between network objects and policies6.

    -

    Bottom-up reconciliation

    -

    Bottom-up reconciliation by default, focusing on the policy resources first. This approach has been slowly refactored to using mappers (event handlers) that often multiply a lower-level event into multiple top-down ones, occasionally with the occurrence of repetitive events.

    -

    DAG 1.0

    -

    Preliminary version of the topology DAG6 that:

    -
      -
    1. is bootstrapped at every reconciliation event (though leveraging k8s.io/apimachinery's and sigs.k8s.io/controller-runtime's caches);
    2. -
    3. does not include all kinds of targetables – missing object sections in particular;
    4. -
    5. does not include internal configuration objects;
    6. -
    7. was designed for one single kind of policy in each instance of the topology.
    8. -
    -

    Effective policy-less reconciliation

    -

    Configuration of internal resources for implementing effective policy behavior:

    -
      -
    1. tailored for each specific kind of policy, without leveraging generic and resusable merge strategy functions;
    2. -
    3. not organically integrated with the topology DAG;
    4. -
    5. decoupled from the rather user-acknowledgeable reference of the topological routing path of the request.
    6. -
    -

    Prior art

    -

    Envoy Gateway state-of-the-world reconciliation

    -

    Envoy Gateway has implemented a custom controller for Gateway API and provider-specific resources with the following characteristics similar to the Policy Machinery controller package's approach:

    -
      -
    1. Based on controller-runtime
    2. -
    3. Single Reconcile function that:
        -
      1. lists all watched resources from the cluster at every reconciliation event;
      2. -
      3. rebuilds and updates a long-living watchable map of all the resources;
      4. -
      5. trigger reconciliation logic subscribed to changes to the map – goroutines decoupled from controller-runtime.
      6. -
      -
    4. -
    -

    Unresolved questions

    -
      -
    • The fanout problem, especially of status reconciliation.
    • -
    • ~~How to avoid changes performed by the reconciliation function to loop back in the form of multiple other (no-op) reconciliation events.~~ ⇨ issue state-modifying actions against the API server directly and safe-guard against create/update/delete events for states already reflected in the topology
    • -
    • ~~How to compact multiple equifinal reconciliation events waiting in the queue into a single one, thus avoiding unnecessary loops.~~ ⇨ rely on controller-runtime event coalescing
    • -
    • ~~What to do in case of reconciliation failures without retry~~ ⇨ always move the system to a final state, with proper status updating, and wait until state-of-the-world reconciliation kicks in again on the next event
    • -
    -

    Future possibilities

    -
      -
    • Extending policies to target other kinds of resources (e.g. GatewayClass, Service, Namespace.)
    • -
    -
    -
    -
      -
    1. -

      Gateway listeners and HTTPRouteRules can be targeted by specifying in a policy their main Gateway and HTTPRoute objects as targets, in combination with either a sectionName (supported in the targetRef field of the policy) or via routeSelectors (in the policy spec proper), respectively. Not all kinds of policies support targeting all 4 kinds of targetables of the Gateway → Listener → HTTPRoute → HTTPRouteRule hierarchy; some kinds of policies may support targeting only a few of those. 

      -
    2. -
    3. -

      In the context of rate-limit, this problem is also referred to as the problem of the identity of a limit

      -
    4. -
    5. -

      Specific steps can be filtered by type of event. 

      -
    6. -
    7. -

      While the DNS operator as well as the configuration performed by the Kuadrant Operator for a TLSPolicy are closer to the enforcement of the specifications in the DNS and TLS policy objects, Authorino and Limitador are policy decision points (PDP) rather. Indistinctively, control-plane operations that configure a service based on the specification of a policy, as well as the data-plane protection services that perform at request-time along with the gateways are all part of the policy enforcement. 

      -
    8. -
    9. -

      The attributes of a path in the topology from a Gateway to a HTTPRouteRule object typically include a hostname and the set of HTTPRouteMatches specified in the HTTPRouteRule. 

      -
    10. -
    11. -

      See kuadrant-operator#530

      -
    12. -
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/architecture/rfcs/dns-policy-api-changes/index.html b/0.10.0/architecture/rfcs/dns-policy-api-changes/index.html deleted file mode 100644 index d6aee3446..000000000 --- a/0.10.0/architecture/rfcs/dns-policy-api-changes/index.html +++ /dev/null @@ -1,3464 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - RFC DNSPolicy v1 changes and improvements - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    RFC DNSPolicy v1 changes and improvements

    - -

    Summary

    -

    DNSPolicy is soon to go GA. There are several improvement we have identified over time that will enhance the GA of this API

    -
      -
    • -

      Remove the need for labels on Gateways for GEO and custom weighting values

      -
    • -
    • -

      Reduce the verbosity of GEO and Weighting definitions

      -
    • -
    • -

      Remove the need for a strategy to be chosen as part of the policy definition.

      -
    • -
    -

    Motivation

    -

    We want to simplify and improve the DNSPolicy API and remove some of the legacy structures that have hung on since its original inception, as this involves some breaking changes we want these before we create a v1 API.

    -

    Weighting and GEO attributes:

    -

    The loadbalancing options we provide were first designed as part of an API that was intended to work with OCM (open cluster management). This provided multiple views of gateways across multiple clusters. So in order to understand the GEO context or individual weighing needed for a given cluster, we needed that context applying separately from the DNSPolicy spec that for legacy reasons targeted a "template" Gateway in the hub cluster.

    -

    Now DNSPolicy is created on the same cluster as the actual Gateway and we do not use OCM or hub clusters, the need to label individual objects and Gateways with specific annotations and labels is now redundant and makes for a more complex and awkward API interaction.

    -

    routingStrategy:

    -

    We have also identified that the routingStrategy option in the DNSPolicy spec is redundant. When added we expected there to be more than two strategies. This has not emerged and so it is another awkward piece of the API that is not needed.

    -

    Guide-level explanation

    -

    You will no longer need to apply labels to Gateways in order to specify the GEO or Weighting for that Gateway. The policy targets a given Gateway and you will now just specify those values in the policy spec directly.

    -

    You will no longer need to specify what routingStrategy you want to use. Instead you will either specify a loadbalancing section (meaning it is a loadbalanced strategy) or you will leave it empty (meaning it has no loadbalancing).

    -

    Reference-level explanation

    -

    Below is an example of what is currently needed to setup GEO and Custom Weighting with the existing API

    -

    apiVersion: kuadrant.io/v1alpha1
    -kind: DNSPolicy
    -metadata:
    -  name: prod-web
    -  namespace: ingress-gateway
    -spec:
    -  targetRef:
    -    name: prod-web
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -  routingStrategy: loabalanced  
    -  loadBalancing:
    -    weighted:
    -      defaultWeight: 120
    -      custom: # <--- New Custom Weights being added
    -
    -        - weight: 255
    -          selector:
    -            matchLabels:
    -              kuadrant.io/lb-attribute-custom-weight: AWS # slects gateways to apply it to (when there can only be one)
    -    geo: 
    -      defaultGeo: US #catch all geo              
    -
    -So here to apply a custom weighting, you have to specify the weighting under the custom section and then apply the kuadrant.io/lb-attribute-custom-weight: AWS label to the gateway that is already being targeted by the policy.

    -

    To change the GEO for the targeted cluster, you need to apply a different label to the gateway: kuadrant.io/lb-attribute-geo-code: EU for example.

    -

    On top of this you also have to specify that it is a load balanced DNSPolicy even though you have specified a load balancing section.

    -

    This is an awkward and disconnected API that evolved from the legacy requirements called out above.

    -

    Instead the new API to achieve the same goal will be:

    -
    apiVersion: kuadrant.io/v1alpha1
    -kind: DNSPolicy
    -metadata:
    -  name: prod-web
    -  namespace: ingress-gateway
    -spec:
    -  targetRef:
    -    name: prod-web
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -  loadBalancing:
    -    weight: 100 #weight for listeners targeted 
    -    geo: US # geo for listeners targeted 
    -    defaultGEO: true # should this be consisdered the default GEO for the listener hosts
    -  providerRefs:
    -
    -    - name: aws-credential-secret    
    -
    -

    So no longer do you need to specify whether the policy is a load balanced one or not via the redundant routingStrategy field

    -

    Now you simplify specify the weight you want to use for the listeners in the gateway, the geo you want to use and whether it should be used as a default GEO or not (this is used by some cloud providers as a catch-all option if a user from a none specified GEO does a DNS lookup.). Each of the fields under "loadbalancing" will now be required.

    -

    From an implementation perspective, all changes will happen in the Kuadarant Operator, where it will no longer look for the attribute labels on the gateways but instead will simply use the spec of the DNSPolicy. The resulting DNSRecord will not change in structure.

    -

    To setup a simple DNS structure (single A or CNAME record), the API would now look like:

    -
    apiVersion: kuadrant.io/v1alpha1
    -kind: DNSPolicy
    -metadata:
    -  name: prod-web
    -  namespace: ingress-gateway
    -spec:
    -  targetRef:
    -    name: prod-web
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -  providerRefs:
    -
    -    - name: aws-credential-secret    
    -
    -

    Again no need for the redundant strategy field.

    -

    Drawbacks

    -

    Introduces a breaking change to the API.

    -

    Rationale and alternatives

    -

    These are breaking changes and we are about to move to v1. Changes like these should land pre v1. These changes provide a much simpler and better user experience.

    -

    Prior art

    -

    NA

    -

    Unresolved questions

    -

    NA

    -

    Future possibilities

    -

    NA

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/assets/images/architecture-multi-cluster.png b/0.10.0/assets/images/architecture-multi-cluster.png deleted file mode 100644 index 82b9671e2ccdaaae9509bde0d7ed9ca7709faf83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150505 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 DpBui7 diff --git a/0.10.0/assets/images/cncf-color.png b/0.10.0/assets/images/cncf-color.png deleted file mode 100644 index 280fa66f5799811cd0dc9548437975a80e1c8703..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24146 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 R(f!v1>FL7mR@}CI{Xh0xSDgR= diff --git a/0.10.0/assets/images/deploy.png b/0.10.0/assets/images/deploy.png deleted file mode 100644 index 7b03173507b3517b871303faeb7c59ea2f450a3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91193 zcmaHT1wdQN@;6YlIF#aAD8;R~6e(7$6n87`1PCrg3&o3Di@UqK6N6A{NDBG^ zZz>`u0s~VXfqG|v0R2v3B=tcK2FC3r42+LI49pEQ%V!$~#)%aMW>+5uhA#mI2H!5F zK~VsD!^T)$+C)wch8~(mhJk~{fq4Q=!9xFFg3Mvy|475YKq*0A@X>)VNYGCl=)d+i z*xx0;!TnVd9{laeUujtTpOr+E#H6L6pGrm!#>O@PGh4@rvOZ|9;jGM+)g9I4WciG2 zt(grz+8P=&yI9-(tO6t8!Us)S8#@|MxL8}+0Qg)4ss1Rz2TlLXW}%|^qllxWAeFk@ zdkQgI2V)8@W>#iaDxs$o6chpuA5Hi^yp{N~I`o?$m6@ZX9Ult|5C~)jaxmLEn6j|( z^768Rr_OHznT;HNsLd-*2>mF z$Z#u|K$ByUV!E2 zdi-O3el7kVxzN=YdMd#3Hzx@_4SBNU1p^}tBmGuH*#&k#6~W_~8h$rRvant4%Hg4^ zw&ub+nesSMt=)^sZ`q${IqQo(2*c0S6*x>{UT3)G*@<+Q5ea)!0~$GTBJ?qpn-b8X6L z6lU1B-cec4)x=OCpsI&1$S)JIi6WwVy{)lcq%Tw}jRxs7ynDF2-fZ`}|G3l&$X;9o z4$h=|M^&1R44maFZI+nGWoy@;=9FakBG6D#iEe@PC}InhqY^nxq{`U$M=Ntl1l^R0 zri#~VhW)i?j=s0&H0bq)wG_`Gh8?mGs+MXy&o|7}G!~aJyBr4KZ+6G)M)Pr6_T|UW zZmx_PIh?GCU*CkXWNCyxAImV7xz^v1y1p4?G1R`?1gG~O-XndyEYTUO7ju{7=v7FK z)APEK*7dxmaow!`emcQ1(w7rPYz)bfbI?0liWX{aoha1N0;TcdS}uk^HAP8^*IT!?*>6ANjIADOc{(n>dOLV9TfOLHpV3TyG1bQtfu}IgH6a2X z;oj~-QDPJeM5}l_#)i07+l&f;Mr^uwIiuN(B=U7K8(v#YNWGLxeTlhu{SmZ3JDPMb z)g0t;zX-%3B&0(HkHnwvP4(B=8yT<1J$8+ZC_E6o(R~-oOcR#8K!f{mrLD(P9 zl3p}^^u%hc>vQxQJumawhUzStc=^DVn-JMlc5&zZr5EH)muVi?-QXPUUQp_0(5O+C zWo~$d&B2^{gi`YG^L5}}-)iUSZkfS{Iy-~wwMqr!&5&5Pg`nj7&P&IeD)ZAHotQEw zYu(xQem4%=Dv#_SM0PVg+b_sy(F8pvryVD6i|b$={Fyw!a5{Dd#yaFRid+C7|POK`3Yh`3DW zQCqUzkjn2Y#UyBYb$i=*kCB9qdrY1{F61bzS1aUx*HX_6u&!|V9Q~o`Egd1-oyxR| z&GJZ!pd`I=(JSM3&wxd?lR05`r}Iari`>h7!L`dcDGCOU*0YA7@11(&F9Gx>xzf6h&do(^ngW;$$;x!9j&;vrv}IJ!jN)XaNN znXl5Ew88RTnCre)rR92;!PT~l-{Dg561nA4u+b@2g+Xm#^jpknExWhsp62&n0uUhe ztQIGIv-Zs$MJgWq6VBO6cqPB)zTLDR`&}&aq%u4vTP7~SGO1*-v41$Z z{lj-z^Kq3svQ0;N^*kNzb(5>l~hya5Deb;O21*s(ht_f|I^{r9%U__My)k$Iy`DVE!;vk2D zkb%vLJ%^u~Au)4Gsx5Ny1;tRc&Gb?eV-!f!RIc3Gqv&ma^i~cKw6DSLHi0=-dwGA_ z*ZIVF_0u)ZJfFfG5sz8q{$isf-x8n}&HX^7KG&KUAhJ;E{m5TJyryM^XaG_QEo4^M zlP=k`m?)z0mP@0;Dt?~l6Gw0nyA*tWG~XL+?x}({lEPbgwmm1V>$>ATRw#)H5Sy!Z z2aY=~KRg+_)E8cEIb8#cBp#T^rf=ETuJOqm-7d)|^NC*^&C{-~uAYt}k@tmc4rZBG zn&cb+m)w*j9*>)=6i-fPbJNF?+xN&WcjQrf9QU=(*E~Ka8w0_zw&C}tdM-=K*GDO{ zr_=r?5);112$XmiLy(K}*87{#i6T{%f&v$RfNlO*c9`&Vk-d=;23RFnWZC<+*!Ae{ z$eX3r(94~oCnJ3KrtHb4Jw&Tgl?j|7F;l8uQgjEoTsCn%Lb^#XKj3p3eg;SH-+6m( zLS(Je;z2Wa@%bDPYyi;;ST4*%k}nxdnKoKlte;PQ5Fxm~Qfh4DbQ<{Bo8vO$51=J; z*-$pXh1*N_zGHrZbQT}4=b?DGH!B7Q2bZ<%gG4&7&cV`rS`cFOeJsyQ5R&W?|L}6D z&R#6-JvMxxHAO{@`K+ie`AyQbb=Qevt*+o~nOE~r+Ia-sB}8FeHo2TsD@ULHn)@N* z%}|=-bP#}tD`f8p83~8?o>(Is0_wXQ*~B3~{%1Gqm&=9=mRfv*U}jxI|9a+BzC?)r zmjGPX0GbL7FqVv64-kK^Xph~olP_0&-esj=jSp7KHF9p34bv%&z2Sr}W-E+2dY^{ldzjRfbXE_e zjtDZ`leti6;su00W9x+lar0ojDsxm>h`B6^Fmn%BEE74a z2Q-x|T@4kiu{Q7S4!E^GFD9_;_QrsGe9+3d0z!?E;bibxoWJ@_cZ-~R(5VbOoK=0y zkNy@`T4TrYmFsNF>&Vr1>YMJU96a07#Kd;policy-_Oft#0ioIK zkR`d+np>B{{c@jkDX6?Sv@oJhVJD(BkhtjAV%?Wo`1 zPbb*gk>W`XtM?kp_U6|v7w6M!ule?Dn2!&mZ_1Rm&_f>Y)lvf7r-i6{ZtKE5*Xx~* zg{yL!1uu?TdJjb!WCV4SUt3%F6S-sweiNlbBl9b>JqsiV1eoy(+QuY*e`$fd^~ zcffX003)+z#RRfUEWHYs(wzzO2L*w_V~y2SJa}y2)jgLdeYz~G}pQZ+KVxKC>!VPy1rZW zc%ai|_rkoj)AgOfuzf9H*X~;F7ZNQqDMt8w+O{+Gc&5tU&j{k`_7K?4Q7vAmYC@)) z9>+AkC*%^SiKrlnJmQW?Hio1T6GnTK5rA4enGy|y68XnP%>g$h_S$lHLC|GTg9W^) zs$sd?#LNZ`;|U6-YQmZSa_NJgX1C-v_x&-M+m@Z1U}{_q>?vAD=Kl@t=F?)6Yo}|q zf1rQC`yJc3>+5S7^{Zl3c1AQ56z8uaNi>Ctm`|TZfBS~JRc(67{DPWP0P8+yrd$yY zw6ZmyO8M34VL@YSleq{Ff0E65uS96t7=3plioE4^Y9X)F{fU9?rKF%nxHajnFV;SY zeOHbajf~^DjBLC8>==!Sj>DBB&Rhl4qgo+K2vf>|=VUmuZ-^cY?^*rD=eSlDG4 zpw{qaKV{H`@5rO1|Lg3-EWh{R@i+fq7|K^-i05t-tm>u!L7QQ|+@t3L?-?N*Jm*`D z0cD&n&nUl=uErvVEf*Q$*i3mC+mp5)TlnIKTJqY4d-^|L*G3^eS(3UwzkDb@y!MT6Y^?AK#FXwY0 zzI+P1_|4gYsdcnP4v)miCvM9R+NJB1Nj@TA%PjOZ99DQ>bEzj3JBc(eQO3P zACmA+EmOr96?hqYod}yY%g_S%_!6qaT-Uqb_=jS+ZeZh9pu>`7aJY1z&##E%*5aXK zw45KeX}ItgeqUzwx70#paTwGh7$mDJjhD{1yZS+iS5KVu!@=cl^iSpG10PKb>tFGl zIr6b4QZ?8Cdd}fsnNI7i3bU;D_p%LblZ((TT8Hbx-^v%pCpW;j*UP|nW8Fw`;94*{ z6tsK4#iD7&oD>B?w)qlg@F){UPt(VNz+a#X=njn!c2-m^)%7f_W7IZlWld#wjYjDf zoXN0WG11qvN@bvGZ20##KHa6n zBxSZjdUKOdpBQXTy6c~(GC{Xc3pIwqb5?wPlUs&&n-RjN_D*`qI9+=TEvFTw897S0 zA?44)04kzWcxpyd;Jy9qm4+}{W9?e|%Lk=l+KbiOBUA^GgZV~o&8QinMl*!<6GT_A z{)kx#%^pCqZhYPrBOVo>Ij?r&4%i~a8AzJX2Cw1%SL)z7sW+ss>nT9LVB__Bl#dn5IzVsn);g}WzbZ0 z#gSb&$)>R+6KFoIB07Vbu6r_n-~h_VF!>BCjFPl4Oak&U!V4w~5{*H+nkFJ>kC8^t zR%6d6A*inVE3yC>ivB|HX|=>DX~XV>bhbYFtttdDHKuSN)QC}97*f>~fyHpZkKTfbhZZeBZ2 z1?bAwZ>%v4eMdreovSnOla{>)>)~d524QUV*ji7>Js=%Lye91)*WCDWE84kZ=gVVx z*xJLf5ufhOzPBn3FM`RPtkdYkZK#)6VLZ%tC)S677%H5Wmdp8u6i0wXvq9G6j)P%N zNv#(VMZhQ^*#%NXq-_AgpImZ8|1v7 z5JXO>iu+P7Wat!f(r4$go6q3q1$CPNp&tJdIxs zSa9p(4J4kFBy*RIw8RJ;f$vwIwwW>W=S0K!^h4T%*##NStB)?=hoRan)J-s)0p=v1 z`?|vczdDJ9R*1DW*;L zl1OtsbbXQWkl700Nn6+y@7KnCli%T2r_73R9FJK(+{LmLrIm2po-jiZsTW zB^B>EovD^K5wbz^UsWZIuVW)}6UUF_Qn!iQw`MeL80?8YLQ>6|+LciXw zs-dFe6>>78mMdW}{ z^iL}dYO9sw9tYKZLdD!$dvURbQagncyr2Vbl(-k8VXGh{H6nu_?O@R*;@ZqlzT`^-*0ImK_;c9HnR=0v`))Zs=agTV zP;nDll?GCLVqmr~(hPD?$irV~rEe1!Xh(&kmv}4IT;|(=)?vbOF7)=38Dp<$Koqh; z`K0yJuG6En0LYxGe$k5>LkO)Sb;k_ai|Pz!Jpv&X0{HkGCP(3C9?ouJ8&+vw?U~8v zo6dRb7;vXegRH5jUSwGBmIwg{Sziqr`62b2>Uq(mdtB7#ub*bioce50ergXrs#epD ztCegbmZL6n=>I>|!sOJk8p4GZ_se|#xecwLB&-4nBskTAT*OCf@Cf^XP1!MCcO)9=&OR_)_ zRJ)uia~?z`G{llPszU3ZA}3|B|AH$$&&5F%WP`O17}F`Y!hArjcNcZ1(3n z%-#^17GCZENWSqsnF9;6234#Ia}8Zb30ns%BD?Q)`_I0%_}yyD?d9~ZS_WuqFw}U=4VFiF2oz4RQ?`5!#QTkI4%5s5I(5nyrc0c_p9<)`^A?f zmss@jByVh(Rdoh?YA~c1{5W%;bqN3wmuASWwNoIn8pcM2^YrUBNgQf6bRV)38dbWz1xr@p1AeZC_w$yK8crF!5)QhGM9CT zy?*M97xA&@P{vXX0oo8daIna!T&|o{Gz2?IVC|q*R?$Bo;>NzH|2#O-VGs@#k3G{- zEG6^ziVBNjNpahsew9M=KmOr&uaZ)jTF_PR5Azjgw~RSuR85<89`GUdwN5Q_ijFOX zQim6fBl#0lyeI)z8ydHZoCg3HRB#L!N|rmUD>|=V2GQ_%gM<<0c*nWR1Z^nadkDOOtF;?jxl=cXL0xq>Ejayfl#k4ufx{s zrKL>C`^W@2n!yJ9{r6uX`dO?nQOOCC;$%14Cs_>)vTlRHNLSGvmZy!fRmvVuB(cE&RzVy|JyV4pVR!);%WoJzb@hwwc;c2FK}$JjAi;QKYy#nzY@Vr0s<)nf7@yQ zn~3)D8HUC*SmiDG&eQ%OiGLCJdtI)=eVB0Sx4waXTYdja&Es9$7WjyzkH7a=HQm9~ z=-;MMqa$57T4ALe;E(Hbtqq%wV2yMsW0%; zjyBA-{{5KUClq_{P(~%VCv&H9R&r2wa`3wu6I==qT9{**D{ITrI*gs$?@2F)F z_!@cQK|rQTntv@UwGMAZfYo6lL)#}PY0ezxOook2{?b0973 z-#8=79t)h%n3@B^xvtrP=DhE-_bA%$Wpy-ik0}kgz%RHt?D`O}V3+@3j$?G#$Fee3 zNf7TlK#MO(^}nT%q8_I&ksIy`-TV)Gsr(k{Mk66>d z&}sa?z0Xe(zB${;7H$_tK}U}Tn2z+xHP3$B%~XE)4!D$}AjI{Nk5v?}-sg3A7nRYy zG0{%}@H)*J+~N2bNfi+K?(Ika1+*4AHRTl<+0JX|p{fzfW&cVM1s&z2fOm3he=Wtc z@NG19^DYi*%>QboBp82Qm%J6ktDZ38XImckuw{Z!?O+CfYzG6TN{O+v>EInus`Rh7 zoGx)?+;-KhZFF$Svxi2iUm#{!+YTd^)@w3yAfOA<`Vu zphOCPz!p|#04egQbsHlapF=KjkpV4SRVcQCXYIt5BA@*WDRlo=>V2yuVR*Ng^%@c` zoKxIo;iw}Gkyl6p04mynBmn3puW|o$G*T5x0dfg}#2g>nH88r1g&9k?1;8kubjh>t zj8QK)P)1^X=2=u86#qT_k-I4R$4DCqe<*EX2O1y1GmwfsA)>d`J_(@w9G1+B_q9SA z_ZGQe(PXlmMjUkGc*kyDKlE}F#V0*56$Z!NWH@dyIQvApOFH}?WS^rXz`~tm#rz@Y z{a=0Xt_jsHqs8>|YCX#ga#sXRxdUq?d{_M81*r6C65p;#=B-y{(fW+Ehd?3}s6biE zPcHsf-YJ-{Su?AtiY5<5dTD9QcRIl>ON3CLA=RkShn|Y%S+cCd;*nGShSVGO_?8_&f9}gF19rm}&sbL2s#xZ=e z9*SwwnHn7r==++dt28P%#_2Bn|56(iD%h_+R3*GNbBx!2%I|y@>{_f_&p3L)p_DW9 zq29u2_G0-Zhl_Z?JC%*09VLgu{lvGH9Bd2{hPS79^!-bMjT>8G#5TzT(VT@}Uun!0 z&9^v(K4Vf99h)8Nj}k*#j01~8`S`1Jo1R=pM+c7Fx4rq=Qsq2l>8Hnl+!(8ezjLR_`{&{ zBNU&|za68m_P5sffa;redCrzW0$)GL5TCqQ5$Ys2beD?k*i5#~qEYd&8GRCJe7|*U z3n`ei9N1B!-RxWS`%o%kG}~m~ES6HJoSl@yn`_+_I+4mvUE&E(5&N5l-ktoNOJWQ@zvSWW3aS(e_}xTCv%NIJrSFen%(;WZ1%+|_#%QSN+>tjP;?gd}n)?mON1oBdF<00Qds z_X!Y0`oUUwbvHr|P* zIh{IQUE*vT`z_O0Phe#{{Ax*>wzSd70KMU4&rL`8rrFb)B!j`-s9;-$BnCAb^X2-+ zp#(m~677}^_4F5#@;futxvqM82pyVEyMyGd;haYdswMQXXR(}G&b)YzqN=5uhk1?S zd(JooyjhhWhhHK*LG91D282nbso3j(?-;8X7G!tru$92-;5Yx;@1_^Jr4z3 z<-BwEF4R;65JnjQ8T?a^$lREasZ3eHhTF7;l0`d?et^Q+?2( z!ox?>gko(yUlXQElV*ZOaHU^me7N)xxo^eBK4tJ>vTO=O59e_*YswZErm&c1^W@Ty z2&GHno5~&+yVn{u;aOkiXo%bJqTrQUjfXgZrOEmHspq!q6l3i}D!=K-cX7;?OY09cc2R~B`-9oKHpTN!tWTIq##&N@oZjtD*;3dkEpgS#=AH1n_8xO3ex3jJa;mawnMnNLs>3&9M(ke8R zH67&&*^H0Q9^m<)iN~V&u0*?jEpNp2Wu~s_RFRIFyruk`vVb3fo(f0adujN5a2NeK zN(3%(<0NhmnkK~|->}}7x9(JL)Au%w8rc>q*PEBi#+_Tk6;8Jpvn2)^q47*HUQZBt21?Z{HFdo<@p^Be>p2i- zt+jcpmkso$uqB`L)1(6N&EF;_|nY1d}Tmn^`>QD4q zK7J3}FNqdIy5vv#B&nNgbD7itwa82khew&4unhXRfp;^ClCG97OSnc^24&F6oR6hm z(|xO2-hR`?=Th4J@%Hk7O_WGrn~G}x62cZ+9hVvA3NU%-{98Av zVS4oXjMu0~7Dv6zM?;UI?3-&uvhv`MrH%aYFEb{e1M)JJ^FN#}pt2-n?Wk&?Y5LwA z-&_QdPu$O@S>f(|zW^SMic$1vTug8Dp9-f7MZYk`=p9FLshB8Ik%`O4N8SA%B`gcC zOUgHN(rgdK3q0Jaynm2;xUb}?8Opz`iN=2GvZBD z#GBiNA+5)zSw!pb+fB9ct;@__sZDwnIZhs-Q4kbbk-RhiVyU_SC>ykEf3rvKz00K{ zOL#Y!^cCxxQRJ-Ck*TIGE#vV%E%vzPB$@|79~tJ%z*C zN(m@VxLL{f!5_cCa*;3SGij#ScCoBedzR629V+-0r%Oh? zW^yC{Q!45$&<+29c~7*9Eb z1C+6xbb+~$mqmEAsDqUU@(fiqwhLWC9~7kQf{V24MRVj*4U3~G#mIm|MkX0oh~N=rXRk?@(+gT;HCZI+pj!U-skB1p`c8m#%OdzOhH zHo#0l$K!AL?gcfb2e#hL{Q<95EO>ZJG^^iv-CvvX?rkhB=!jkGAAcz!*QR^iPpU<0i2FS+)=WC(2Oj){d-o4D-l}E1l@6j^3V`5eHBVWmvSO0+eZ)XQ0-!%P$>Z+dL8QlW&UB}evjnJjW;V7{IyH+o6Q|8yB>%d#`y z+B$19p0iC}q0#3}{S96W3EVEr9Kf6WRCl;?m#t=0gaC&)Rzj7{X(8@>2S zI(tRMee6?WwCs-*$cpncH zET@ZYOAHi`u<_~#;tDBdCm5`+Kiv9Rx_rT-*PhUh(aKO28CF5E$C|DxpWRO!r%88% zP`)9S$Xu*71zL5J?g^OVK9Q!l!y7fi+JoY9E#}(W(92zid5JzJmB0OolIf$IwT;t^ zGA}VUa!aR?QRU6AKV$s{-*hooeN;4RG3gkI)@Xt??yM~jXYT8BlG5o5yGmz}#j7Y{ z9qG4do3w|HXp3p7+}q@OnpF0IQSy*!@FA6BdX*{2n7n{n&K2+I_!BF*xY`_8cz6u~ z^ZN5naJ=hOWh#8%@`-aVK|Y0YuoKnIIH1=OlcE+(%oo#mdj@xlZQ+NAx?t=tS$Xb z&ej>I*XWBB(h=Xx!fd77Dr z%o>wu#;li3E(x4;jt&L8uD;=lgsa@X)_YM@RO7V2tw^U>k>!TT6%Bpr0*dDk3cFHQ zlyqxxJTXkc=L&zPv^vz{c{`*_2`2f6^E3JrOjFOX=pirgiI6_wRJ$S05l-Q9-Sa>! z)f{bCNgOD294K`i5}WNXxl0rlJ^dxi?dbkqmZu>1-UmEA%aJ>@ohhlj?bn`+@gi3A znD0Agg2An0B$77R@b%ao0-RhjftBG%TB?bs)g#4~!CR$ZRf5;BnPYB-X;q(pX!=)C zrQn6rv}sBXkhLU5Lm$@9o$tpFQxyK8YX$W5d0<-dF0SKs~-H-#^Jqaa3_yK_0x=m!FBO zCgR*jd3gUQPYT~LYiC&DkG$~(z&YK7D0R1Eg*;7qvs;M4hD`}X=Ju~0O>)``dyn+| zHBRtnn65G?ED+=$`F!FoBrcW5z9aZO=EAg0iXO6#c7<6v-BhI-3+_dOUAqTB@kg2B zi*v5V71gHGkI4}52=USDLd4cje#muzT+ceU!n7(b9UkwN+0BJ|drG5`c>^}# z5)kH_hncAKaZM22UqTFnLjBrT8rO?k*B)y%&GSU%#aMeX=ui=8*@g^U(-FPw*44|( zoRcG-CLGQ6q;;R8`V!m#yp&(33&eW&r7Ac|A%cX@tmfqG0Ur(@ErSFtGg1_}si*@7 zG0X=cUvehII5f;`@;iWg{H26(wZp{DfpbcYS-bZ7!L+L2fE^2=(qqx4ef4L=2vXjU zb53Met1c75xW{9Vo;b!7(=o+r3qV9wb8d`KQ*CJMoT5_LBn!|N024XqrJ2@rFKrlrx)f zF;cCNe}12@lsojQn1I0WQ=0o+ttEJ7l5M@mJkL|^-fQ7h%CTtU9|25iR#?+go?u5+ zFJ5Gz^GL&$`;YtcUKX~C=afn765f02kApMhB#?ym;KD}7kBU6$>NOraR2-U?FV8JH zSI|LlV?#SJ#fIhbtCNB8mG>um>fl-vvdpTrfUk^o5X8CPR*C>-W#^VIi`K?0bU!a_f0;B4g}80qNbYYG=RqV*vFsHJGaL%=~(0( zK6F>3JM*R3qQ&7(@DS!Z<=_+pnT#9-}0QS)S?+;L~D!gHGWT5TkK z{wuCO?@Uk<`7gKlFGorX1&l97>Bt*0I;>4b0}Si=X{HFaJ5IJ+q?6&r<^%NRIOpeE zIF*Nb{jzl00c0=d%Hu zMIj^r+6%qPki?yN+oc<3Nv+kho)~MP>+KigCd}uWey>bs!%6wiZWqVhEOThX$s=m^ zQPK5!2id1jLAOCh&?j2bUMmc(G>5GB%p#sO(;ORJi{0PymdcMquwJEm-k7^OZNH~e zFZ=c^;vJrkuZZs04?`EF4%WzE&zECDo8G^j`p0argN+z|Vn2R4vkhrij*!j6no}e# z$%%M=tcKMn*=|$b)z2vyc{>CH&iA-k3xfo1^1eKrNLDf-2HTNQ!y!yrV$`nph9_6- zO+jPo2sdH=$(cQ06sI>y$Fc#Yl}qQ#nSSI^PDal(no_L8UjBI0MG&z)Xe@1w z67fSKUd4O?Dp{`TM~;4YcnB|$h`3o|gF;V_<6z+H$B72EWyF#}KN%p5*2HDB=>;ng zMAD85PAX6-95`HTB-M>om2*M%{b#^GI@*Wk2aPfL4A;*sB?}&oDBPBVDoIC51}N!y zxR4!cbo<%+elr1>#+#kll`^VGV6Zc3i6~0aaiTkMr2WzoI-UrLxWFr+~3#Iy7#owW*6$?A6gihXQ_4 zDr$9H?;7*T0e=F`bIlHDtML=_rap|iRXlE_9)Cp3P~O5U^(UWw_rW_%5uU6d`n@uL zVH?PCrMO*BKZf~)M0zEqG~0CMRJcN(lLIN;0DZne+Sa|CR-n_kP~EkuM(uilbl@56 z?hb%i6I7x_lQHuBFsa&NXImgB42!_i`fgcdr6>>OFe;CfvWB2PHtq&Rxkz~y%`Ecf z^0o1iL5s)rM{xMT=LX#D!MK=v_e*LE;-Zwl!ZkkdI5EQc?8cib51ykWL^zd#Q-7dI zmT-jOjr+%pH`-d7%WX8j8yXL%+W?=2R_jxh3?*}?Zz*2h2~BkAYo_Uao?(e7lsE-d z6E*C9t{>#UpLfo4zi)6V$NN0Z7o1FR_bILhnTJ;?rV^v${PsY*|bjU0Eog$LH%yiqmi!X)nQzDxM>3VcH{(+zn-lewN{TTT(TK)7H z+Ux5oYy0aTI@w&xvFpB_$QzU6p$hK{;is{zq^>X%MhV~Jk48l zt1v*XI&|_^oZ;v;eOjBr+W&z0{`TlceuY;~t_%fS$o~K`)4f5f`9IN8P@qO+%}>A- zaB!O!7>WS?JsbZOw56~|nTgcLlom?d=CBv3bpBuA{xippMjrx!;37Nz5txP2i)QiN zpS+b8exN@&)E92wjV^o`H*wbz#^~2D4Zbo4;Tn0)(l65zKC$erTf%2xkGG=HcvpKa zu4Lu+TU>wjE85>jM%^;{%s1@U6H6|_6eBvF)JmUC$i6!2QM*qHMHj9@;0!=4GD7`} z8^$LisxzJjI!TQuGSS(xjRe!Th6wQeB-M!58FV%O@LKz z7t>POMe6s0q7<^w;k*)0rSv0~X^d8HaGb9bwC7mgG27mE?tAD*yrJPS^GngYE`K6% z(r&rAP;t4jTVfvFY+>842#6%PuMaS4<}{K?7eB4O7G{sP$TY|3*yt!2DN-5D*|~d? zHPaUBU@#o-;5s-G?iApz5T7iPys@yxO(QdV5uLlkdJY<7!R7`HcAqZ~X3H7L&BBqk zD%l@b1deaT$aW{cyQ&^{aOk1v*KDcW$UBLo0~p`B@HU#&W!ixL8`>mn@lwA-lk&&v zA3_P8pCx#Q2@*3t7w6SI9Ouot4eRr?kIbVBjF6G%E?OA8$RBHb_D!0ZjO5Xcm_Bal zJZ>Hx7k{LiR%EszG4`+5K2NVNX12m5e9rhCd?|fFf5~4Um7ZA#|16K0JE8<@2>(Ze z=*UrgC8}=h%D5JdLM1n~(f5WNfjLR$#=akW4$iBr((ytu&khB}Dpa>KJ}nSC9JC4a z>w5Y;1p;|@!T&go{~Ah`30%$b@$p2H_X77H3#;2PFeo+5b zJX`!zkKv7lF>D8eO92B4gkDBr8$_2&c}jX3sLA)`YbfjreThe95Q=u>^5)H60;ts}M2=Ucv2VgX zRR(QXoiVm$ZHtF*^|nw3&G&0N7Ym*AWZL~6B40|b&4|@|*u}n4YQ@#+ zW%oTZNgrJ?Aa4s)a*%8}Md@*V8mGreT^*`De;c9kyu_f$t6hy+ZT&GHUx)2{ZqU4o zTkB>hyx^09Enp~9fbpz@l4CM;ylk2w8pJ}eD@glWk^I7PMK+++eVKaa%k1R6u)q)1 z$Ilcf1gPhj-%9xJcH%v14UV~{XSCsTQ0eT(Az!9VMj3E#-1s6$e1#0AsIhO*(Z)~i zp$FPcPk??~jwqOXsLmgkdVO+Yw_i`wY+K@@ZlRKTCe-uY->BRIHgyAfxGM; zvk7rB+jG2`Q#jYJRjZXyw$XxPwha_PpJZ3P8c$jGSvy{_zLAGMg_bZd2x-gvMBaKh zj;P2?5A_wc>tn4HV`1SrA*#=!XY56Tc>k9Q(4sQNM|``fo;>6_rQVl+o421~Z@To6 zh)TX(NQ(9lyaNFVD#9Ana$yd~Ivvyws=1zVV!_hh`W&*M4jlUUfGVT02T-0-<0u6t zsyj!oYyGFcu0f(J7+~)RA-T5?)^Gu@EOQn2mrv)-1r8&C$kQf5XNgNTjZ9~!;y3vB z#gv;=mwVfSHJR`lH-`hcpaSdXx!HQ)9RkUa^#4^*`0XVC7!7FUnQ%e&Cn@?S`>7Cy zh=0Aj|3H;jD8Z7+`T@!z=ZWliadG;j8vhv?itAt==8TtY5`k+ zn6=ED)qH8H`_rTf)5)rUdrvC_{` zAuJ}}`JDjKhC!9G#u5pS`>WU|WL|@~I?HKg*Cn@OOGEbx!qQre8Y@~IkMpoFd!gr8j z1xiif`tzKQ`(l9h10bl8Yoyk6bvWF5JX<9afP`bzsSi}sXxa+DzjV{Tu`&Hon3Fh~ zNS&uxrmZywogLpsE*UvVw^|ER;&D5vGIS=xQnnDG?-`RN5}u&xndNySKpsk9y=VJ` zsge9#kP*)&qaB@xH1BXQAvcyML%-;D!Jt%aHY-l}omQh(a>@Bz%5LNc9KtM%c* zejtUiDs=4XXJ+*u{|1u1IfqP3IWCVnB_K4SKUm)*?a&*KrpA&`#Ym+v$h|BCmoIj< zExTtm9ZfvPmV}BEg zaQ|Y-yl8&FJ@1nrPcw%9Ctu$jm*}PqMD#N!i)E|YE-*^LPb(D9^Pmm7YD{{vAu8;ak>d|o)7O^6Ad zG+=6 zD3(s->wdNx7{%x1xz4B}aXxc6jiNl$EfyWBve*cSQte%s{)FcxW@`T{s^4crs@+K< zK}aNe$^Iz#txU}~rNVx;WewjY?Afjk}5kn`QFamiO(X&zJitk0IQRLW8KJZ=E> zH-2N3@0t11Y3I8f92C^IPyX=3_sd?7O89$x{8ME*^f}`3ank`vu|3j)`YEY;e?TMt zNX+~Z&H0cL>H4lfet|37(8c3&WEE7bBA4oRB~nClQc-X#Ww*X-0II(Qnhk|9vdHy- zP+0#MnS>O6y^0QwnV=>rr`zqAAzGz+o3@9@K%UJt7-m ze>1u4y++&Pd>ZBZXgR*-WPOeQDwktL`1vNwVDt;mlx1cJPg;XO} zjY7SK9WFr!U+ENv!QRJ$b_)dH?vX0|y5pf5x|CS14)5 z<&0S(BKt5{TuJo zjDDq9mnfIx5plZ5sXrjsBJKHn2)bPdHL)89+k_)(8ZmhHM9XknolQSJ<#`xPCDc~L z^-YpralL)pf8lk6>!wp8r&DLOxVO{sQwdCk#qWCY3yI;kYE$`oQB;@h!#Xl{(iyp5 zVB3GZh=BYi17IXMH^WOD|(EUFwwna~v z={nZtaQbzj-j?LnDURo_w%3PQkWe94GKxb2gHo|RD22!47i@Ae?Ve;B$lWz<10HV6 z*S^l5k7R`eyjNe^pMyJ$!|Ny|Lf!Bu;QB9rwy56gklGFB8;nTkM46e|F5hP-00K+G zXNF=Hx)n{CpWhb~AWRRa4A_HB>(rG0Zk+s=E=W<>z!u7g#$XGAni+Apw~A3UT4o~+ ze~ZuDMF?BA5}G^@laAjQNc{CoesFEHde6tk0o0@609JGUpng&3VIWY#ai)>@`OB@u zFOH4263)>rYlZ$g@>3G;dsa7x!tHsSQ4R~g1^bvSZs@-MLdgE*T5a+mBTYu$x}Ky| zxs5KG#xA7&vzzks(Y2$21I17wXKKJT7wBdB`>=mM63GCG%dySC0Qp}?fWJKYpJYD^ zR8-U}cl#v!@c+%dVnu+|6IAz@Cf6YTH**j6N*4SHtAK@>S#d=Glqa@rw>ct}|8qEz zYcQJZUc5b*iFo9HJ6jYF@}Wf29%c7v!r9j?53+&h-wd)kvF>XQ^X{qY>h%ScKNgw4 z_h$xfRIR*`S`}C$Oz!A4!}~AY0ihB$IICX`aW;CH!=1=qXY+sc3y`ALIiP)zGD{Gw zFA*JT|1m}S>yZ+!V7=@_fXQ4f`8!qT|2kYoDfjpH5014DA4{>$s6zkOOL+n2m@uws zzsDFD4^nNgx~op<&O}3%`~4$mtocI-R&t4a&S&?V zA0lUi)@|ZpNi5ybmLH2lssC>(5+=UtkK<{2jX;xqJ^nOM9e6O6iqfw`C=1AfIa4Uv z%)b_GCm^X-*DGn=@#>XKeEaPdoOzzmhgtdsG2RH{eXOl%rn8m)%w`j!;dne$A(*s{ zCATzcRakOJpJ;>$1Iw|dS?iQK|1Sd&EKI1dH8l3zAz-!t>~{B>!}cLz-VwH@+-8+H zip|S&w$fBzP-*wv^>aK8S;>4gn%DD1cx?nOFX{70D%q;s4;vImB>Wi)Uzh;QQnt6MD-Kt{)b~2Ec{%u9Tmo(6IEbP%V#b78wZmLX!zVA{H8{b5R z`_>Pay<7)lNXMqA(tvq7TMTWT(gn~KXlSzJ8n2ov(V)n}ulzr%A>qmLR#>I=a+(PP zU5bo5YPNfixO}7J>}%?g)y(t7Ylj#G3SWcMP8T4IkfKy8jA6E15(jX#wCCHyUmWft zD~%2tUt!>HRj{jc*igoQYn z^S>l_zt3>kwF_7J@EJW`Uj&J3sgETZqc!j8N0<7#;H&#Pi`e7X1u1P7{}FluN+3-d zS_@`3^owBJ9uH}=l*w*Pk*1UW`7ZA|o6NvW64h9eHU$`HHrRc@pw)cawTxv|yE|7>)XeITZ!uRd z_jxzMsiXbV*=Zm_qT|Rjr_xigq@i@&rbU)EecXe{C)~-ei_=cMJc>}%~rfjD6?y9ORZy3U3!A}yQv~I z2al)Iig}kOvpm%&9F{EJ0EfQ0U6Ivohg%?9QOVp|lo}M3;06$j|lzfedMj_VLzmvdqgIx8XBRM;uY9%jP@V3DDgMQ|iKG zaZU`S#)w}>l6l^T^Uae?Uph^E6}so$u2~i)-4#Og7u$nR9&S<|FX5oX^XL{0#{Bps z=XWIbYY&HO#OmRE08PWV90}&i4rnC4Tp`#SdSYUEx`I3a?&l=a^;1MPQ}9E!;x3c$ zLFfdt?v2&qVvB_MUZo^elwh@Qw8DH7m$+xkl^-B`DP}aBLZ`y~ij1MW++kHSAjHnPC%8dMf8r5n;f9T9|^>dF6Y~ zZELuetrSxmz)@+(gmhkN_;6dT4KrP)A;Sqe*ifBml)`yO@cOkuE;>s#dacF|`BaB5s$n1!4mr>9p{ZYk zg6kKbkZl0I|81U1wF3aMS6<>UGjuKhw2sZjCw4B467`ymR8$hl2DZR9N)aT2FMw8c z5;2S^59lgIv&qwq-QL17oyUG^0p|5YUd{>4djcS3W}1t~S$vQZd*Ba`NlHlAPBWOwRi_r<^;2zg@NDk`B*NE>8azQon|JbG-@{gUsYc+s z`4YHvuMWTnlfSPXd^2o;?33g?bLe0q_i|Gqct4H4m zpinF}TVvm3vE2CKWlZN-gE_K@8jK>qNK+iGMB7WP8*rWwiuq*uXkFFLh1^zEq(V21 z^EB@@h=)!#o|v&tAvvmEfF)NTt|XS;adcxR_%gWb%^aMZ$z@?|E`p$+N}0OeR?&2R z39=sbAfT~gxHvZ{3}cpu@7%9qTyL_In>q-GzJ8TYNJegf@hQp>0GH%857_3V>*Ue# zkP4PHV9+K|Kwllle~v8_{a{Iw^X3BO07tNl2r2ga$!bQ%I=CKEz%fQby22{b8d+%{ z;Sl=w{a)HV*ha@eqn6rXB0R2ng5KQez}5V+@Xu0Qwbs!dZXgNe7N~AFtkTEEWw*AC zG4uBpZPv%y9)y~Tb;o8?>jcd=g?rc79}iCTMJ^lJWs~w{Q{`z139|xZFd4w_juyE> zRjpcO7y1F`ZYCfO3T&~tN9aCaC?H3@}Z_1aAB38=0T>E;b z+ZHm&(Q#=nG4e2EQX-3di0=Txn1jv$NoKd9teB^<>#IE=HQTRnQ8nL6+*{~ zmhr3)1oRLMcbz7pwze}kJU#n^=vV2%x%?A0(1<1)6}(L4dS3+BoZDSNUZ^qF`+5T5 zM_umaCFe&(a|Qb!5Y|;$asYr94?)J?3ybHQW_k1FR&wt?QW|J`Bt3fd?kPjtd1*c? zkCIEb{l&YQC$;-G3iED?4n^uUh0NAVn)K`>k~sCMCF&(f1psB{%!t!+kGbgEd@cYw z1vyW~QmY)*UNX|o)LExr94vJO*%VC`vwkFKe(?iy#_Nt0N3ZY1^I*KL40kMV@eglQ zG#K*8Y)eqD2gDnF5V&cAIfYXdyw%Fukl4gAGE59uj#iek8K3#TW z1uO%$BGaoawRX4ieQrbig!dvm>ogj5PO+}`+MtabUvHHPJ9P7!L_xyEM#JdDKz5a4 zXR&uWg_3IHM;8TXn+6jQXZCvy(8t2Y_uI#&dyJqlnl~rkbzx~VXIyF$Wne>p{Gf8> z3Dfr&E!CoODzqtBO5LPVj7+7{?gTWOOHgUHA#W-4=4-9u!c!Y}ISAVh<|-CFA2>Z^ zh`z2>B{P|Ra$QSfnqOJvc7D%AQSWY*t2@!Q(L3T-v$nF9A233Iw*3qK;)s^7QkLd^ zvI;HieYbW_Z!ph#kGw85tOM>l*lL)_G{1f7yEo#rA7OF%h9z5Wz4xxWF)4)$G{UXt zmp_@2>5*NK$_0Y!CfBTA@rgvQY%sbsBRT3AM`}2x@g+2YwVz^=Ty24x&s?on$dhC_ zPkT7ewhVGd*^X>OVgqCFi<~OZ=nFCe{JbA2q|=c2UW~KX%bu9yg{txNS|8h9_6q*F4+%AOT8V9t1a@ZS@;e)T4yuGW_?3 zgYycOF;rSpntA+^@HC43F$Dm#TUQn`!LdYM^ks;L+hLjwg|Bpi;|)mC`WsOVQTh=e z1dlhUpH$J!rs6}#0b{S6j=Bco=RuH&drOAmEFMQi8>SdK7)xCj5KCA6`9rec$y<%m zPXP4T*FcU4jazqDX(lLwh#PHM=){gH>(e%XmN(en8vb@OW;vMynG1u4I2~9i!5oUY zWG2c89#Lb(a}?e7^dN;2fatrjYmvwNQWC(E=g6&Sy^3Uv##Zcd;o0&{sf8U2oPYuO z>%ncml}PAff+=?9NG2Q7!|t>~1>ZNL^kKXMDASg(@QCk_lTPvPb(*9-NJct*k*1em z*y?DQNfmRYp9Wps=Bsr(1apyqoURYVn*hWPMB=TdeEU!P+gqA)cKXIbFetx;?SzLY z-Y@)rsGiDh0qT%nYym|tC(kx*hOQLY;N7&PU`uYQR8zk^W)q_Uz) zH0qLE%w?evNKd`4O2K7|KEfi$OMu>niNfcLio=UjQ^CQ#b>czqIdbJi)36}RMvZ(e z8yQE3iW*558)@ZyKFo1H{b>Ery$QbD`FL${>}d=d;i!67C4ELWHdWw;1msz1WmzmH z$u__3OV8gHIwi@+N7V*;9v=oM7b*@UgaUfLadKJ0YG|qWuKn6G7|*rr1LPGU>Fv8A zY4*0eso1cX>$j0K4s;W73yL+H*E=K;{Y;Ol9gm&$nQ8ZcKxWgyMeqw$Lh$$AFe%C~ z#X5Dpiu1YzNM2qvw>;mU{lBGncWV+Usr7&%>4x&>peMW8a4|RA_c`7BB9^u(eT3Re z8EF8)`K5|~m5>OIh;U?BPmz!a<(Q@jHTO^Jy&In)n7EqVu9R6O0%pV`olO2RKXRyv z!w0mQFpc&hPYdZ)%F;~7m5gB7=`xT^BBMv4WxclZYR}lymWCucGjl|f^nSu8M(A8R zhL`7PX4#MTp616|=z^rH#Mk-OCZOncVRhwL(uIokW$!~FHmjRJMV9df5+d|$6>dFa zI!eq2O8na=Ty@qGeS|GWQl?W-Y+>pe@^Ovxbzlt60dXhZ)nt%RU)&6fVhIUjx4>H) zZ06wxlo>6>g!H)bamJqHJCyov2jKRgfDzjmk;nqVQ@c}HO)WQ9M~fOu9^0wqVDzfx zvg*|ql$SUYb%EsCkVh@Y+JjY2hjZo4bPN_d3@#f#L~?@hO}vcR4ROnlWpF&GWn9m*@^u} zOEw=xRNM*rI*VBgs>002&njZ1+v2vvQd)nqlpA zOWEVKmnF(~IlPuM6Zt^lVhl?TgLrdwRF!6%aPhQ5$UTe~oHPn=;5HP|743shMD2E( z@SYej`i3l>UGyn6jy}B(`5S8VOGImNiT5uO$hMEFUiA!YbQ_z4Gs*fwo5&GsN6{DclA=|S% zIICpo5l@dD()DqLH9zJf4c+Uq@B6BI?5Hjz(&kcWs;NQ35jEiw7unIsymzuEL^GR* zb>TH{;z)kIO|dZTbVBK#9$~W(FZL#jjJ@gu5?suA3>{Xy!GOIaK*vZ_k%5{CxCN^g6 z?;SIZG06lrQBm2ou6&VsBW>rPvM(}{?r-!XL^eL-ON!066?$Ow-F%wBf>g8NZ~2eYH~_4Gi!m0SK}t#qbt!; z$>|u0)#hoHBUci1GybCQ*Nrv7Ris#ARXg@oyy@OwdK22!piRp;HmNpWJ1b6eIyd!! z$+2?QnOd!}m~l>*3kgZyQFkU*jvQ6GN-K*h?|$+M9|`}(I&`26i;07O(U^PSAX&g5 zLGR9sEIEM4-lla7Px*S7uq%z@WJ_40+TEdt8}BebgRTguhVKh_9ypdB}qr)$4Z zx_-0l9ZDPu&rrw=Qzj>~HAP>Sr@}3lL!R*#ueSgG#^;;kEj%5=*1{N{XS_I-zgnKQ zhv8YNVl;=+fj6|VF^64RsUm{;WC6u=b?cI}<8XHJv*W&&krS4!omDX%t!~~M)?G`s zWi&7(il_>t9fR$k%KO1QQ>9w>25dcdzf80-E;zdn90KR|=l!FYdtXu<-0UWslXfS= z`qdLKhOLuNS5I!oiP_22IJ-h$5s|LgWT7YIGcn-mbf3V_PwgYpxIZ`RE_EE?C4kCB zK=UPaYH6aVo+{siv$L#3>v+y=j3qk3UL(F?X2{JL+<*Aa6eLkzc?lwL6jSyXPDU2 znG%(Ox1$V5q|mYt&ZiJ#sHqlQq+n=asd1rK@Mc+l7$&wvmuXyxt~?>qfMYg?;R@>w#aoG|}ZA zMOjAj6US5yY-3>{6=v{cU(N9_EDvj^GtCk)1~sTpWWR*ApVu-lk-L)Oz88^`O=Eom{$T-@z9Oag4=Dk<;nmt&;iFm)mm%@)i`!7%~EF zbc~j@$5(o*xEvm*-^*uaz+)$O)?T3~vm{B0{Ctf?VZpgTkRVg}D84Cf6bX>9h(2xd z*nRH|w#ap4jyRI0u-S=_PeTIOf@wTD-Y?`pp#xb(^QRm6!M*8b2Qh$4Gw z)-f{X_g{Tes{-?%#a~M3|Mt1V;VbcG!}NaO_a58Bo}QY)DO-LL#5> zh^Cn!X%SPz6Kp)ZBs$O$$lcpRBfA!U>r)&^R20QNpH<9wF;r(lH^==l zAn-yLJC6ycWT7C)w;)Be6?MIW8mxdr#tx}@USYq|V1O#!{jMNJNp38ZO0Gix9;qhy zqBazlLmtSLQjQj=PlhJG%eK#x&a2I`Nd2|$2auF&AF`|*8?XZ$w5^2#n}S8wISqiV zV2g-OfGQF1O7R0vtnQ>Ku<=+`U8|Ug znEIRz2yzb_V_B~`vc9(WBPdOB$8{X?MP3k@^vQ3VY6&N%hz(DgoL@+GFyM3D&9Hcv z9V{t$65J!>zV*M%xA1Ot+*htTKR@%*nMCeJbS<`(Rv6$Exm?)&&0hcVSAZq`ci--} z^}T&JoFA8Ti||bfMz<@FvM10TVo~4{l)}*=TJ~W3{@%K*b!%@N&-^O=cZc9lXaD|> zACWG!Af)4wOo_UAYU5?GJ0>5BPqYOaFLkP{0d>;lvh>{F*eg$ti%?r%o^! zLzyMA);oWBIbHW9vrD9Z@p{2r@97^;|7}b@?_T;iGi(sD#PfQ%a!h`;hsPM2j^=RM zwe6lY+}Qb1Y1ac+AYW6+h#XI=LG=>uHM@e%Hv6CN<)1Fe8`5HARX0fCFnmX@`_RgQ z0?>l0P*5)_DB-C0^tk^vy51Lp2V0^Sds^lEKL<9B4GgS%XemW}H0NcV-XkYh4olTs zI<;zfWU+b;)AtfU+7;u9^U_WOoZSCf!?+oHXo_~Ki>-RPMv~lvX`~& z;mGe>M><}7^A_I~FKFZC|LhzLQnCb{s^mr@?>W5BGWD#{n=+73Q>3vgu;WGcFZU}O zA3U3@Adp3a_@^`W=egiBgBm20&f9{^Zo{83=i0ni!sUhY_C{g|kJDLpEN?VMm1+Ig zic5hD_8pJ&r)T`9r~UIEQ*@tpN)#tTzrwmSNoaDy993!Z&f;Vk6dzegertZvKR=>u zCCD{kT_hdZS{N`Kc0oCqZ;D4~tmed-p(nP1B6`t_yMy?TH_WFxl%Jb)%LWS)%b{?_ zb?p9g?bX2&E%rO3m>UFa#bFl0X3*HY5d?6pDYr1*l+a4b;zOyo*GVL#f4lw^SQspO zq%r$63B*~BGBS7e^YvTF1VLPgf4$}H6~rjWVzn7uw^8;Tway=YyC0MvR!&yCq7J`m z$S0-V{{0rcUwKVrb92ndSc4mZrk*+WneX>oDVhwkVsPk%i8wamqfEUx<&{PW9uN$@ z4KWR|3${zdI&;gta_&6}!HazJ>w|Cg8TXLVTNO!yxYL^z-}g`n4!;Lvkxr=X@Oj(Z zd^E*!yWvc!H!r|Okdgf(FWWB#?)dL^zKD!LclnIUjEPtatgNA1&3F? zrzoE&AIa_~_-Nk9Uya=rW%swwq+$dP!QE>I`HG^WE+e*L`URg{ehaP%Sy0MTxes(_ zS*`QSN<_lyL`fM_Z{8=er4T&HuidQx?F17doj#n7GksLX+Kio>*ket|U2s{1gRc{~ zFCy&t#;XtCDN#Z~6pYPE(jZg&5F>KHx5$1yT%QSnb|<44$#FK6Am2JI3EUuvAnpxU;QftqbG5aIyIKVP1diM1jVO1#JkD|m3%g1(U9GMBHY=A*Ll7gA1MX- zXA>BZErtHAxfzZTj6nd+H(CbSA}8m80x3}7`)@8C|C|V+$vFT0o)c7yL_lz0ox-EAA(|q`O&c=%NGB#Q9C%5g}zJNF>5BKZ^ zLoaeq(71XH$bpeW761jiG)Z7mDmSYR8EW|ia)RQZ@!h|Fa@?PcR{=IWAp39$cmR~9 zKPn9;s8kNLLO2cZn6u80s1DtU|aSA^gsdUy%O>EosYsR&98cLCRwIM8|*gq z>Gt6kJo^sq?o&bPPwuxRW$}syQHr&%^K!Dw zC`)N#-?3WGNv1jP4Jca04x{?$i@b=En-M(q(NU<`xO- z7F_4m*zJ&R9X_->xmTaVdW3|&I<~BzDYL|HvdJDjvoglE_r0<6^c#gJMJ|mnap)*P z8$kwIgx{!CDe^IgAn+dY-`OaSL!*4c(!{kGeo3|+!{YLJv8;_YZhF~Wf&7_CDvm~j zylQ(SRvMWPcSot?)61W$@Yy^dgLprd!{h=KTmivv!p8;sks60=qEU0}W}2 zpmSqjD(_{8XRNt;owO`7C3jR4!IxOWk(3X2fJgQ=(CuWs-q!BN2TV0qO?}+VqkXI8 z{!q0lTDa?)XVCJ%OuA>~)5!CsN)rLFvs%rh|D7w9bS7OxtI(qJ-H@8kX8vLVmQf-81Vo@5gQN%`WF+5lb!Li}=hAK{?OtPQ^KO zW|QJ)rfGnJr+V7Y{a~!>Pla#KNBMF^@5vq##1&O=fZ>l2CX`&$Nj~ZgW1Z#7q~u87)b6nn{f!J0rLlg-s}G&-#d zp8)h*9H7=W*!p;%BXVu^s_a#2y4P*aM829(BQ=_JBGb0nR59ftS9RS3VY)8oQ^Vg>DNXkhHHj;O{1JApb zGq0w98S@l^Rc9Mdzx9q=)Ntr+z`FnKfbro&(CIo8e(lyma0z1^kLhfk#UkBXumu!ZD9Mrd>Gq1Ee+ml%9uk8-YW&!N1^C2E}()d!Oo zMju?xv-Ja!;!4WIoe>FG#EXgAbOjDNPS?cQ!@rJ1 zUiRYq&PxwuIfdJ2lg@iKNEhW66Xh{yD$ctkuR#Yv$lK7<(7V1AQ?D}Ovm>%2SjleO zSI&J#p?L{z+)wa>A3Paco#mI1ACeUIW_?fsk?@#ciT7p2CDOXxs}vD`H1N1x^?#0~ zjulW^_)0F7LK=ySQ!Gi4FUD#)C7F=~uhQ0GxP>e)9A`hSc!<94I~ccfP`>&nbliDI2oY^DIl(@37`2+9r!!>C3AQ4n2-IAf>49qj}j zkDVgZ9s2{r$83lCTO<8ar6OgmT&YtV(5+D4=Gxa=z(5?;*aP#zDgGk3-87hAR#3VL zc@_G=A#oHKqWg*~ArB!BB;KFATfog7>po}brI+UVijF|T@In3?R&YgFLX}E^I;|{} z2Q?r?#s3wKD!QCtT0}`$$Mf{VpfAMBy{Yr;L12>U+5+(WdP%utV;lO`2Rr^stG+8d zJKbln8u;s?g+c`4Z7StL(&Xn^3wcL>rLYU2@*c&e<0W*MgC1jBDCoL>SchYeWGmJ% z_=Yv+sjw3k8V59MzwzDEc`q9p88_x@&u6I5TpA8OLGS5u?>2GROo`hHc)03A=v&#_ zi{Gq?xVo?HxH@#syx>Z=eb4)*@%EFtC15> z8$8cm=6$|+r=aAq+g1i+apZ9)Hm&=TQ8TCdctB}4p><$WpA%IS9%e>5A~=nJr5CsB z4qcqv!OV_#MJRONXW!?7pRZpG`No};XXBh7^{4x_alSIqM$mWnh=m-0OWG&dh+xl- z$j(raVa4e_!%&0j6lfr~TOj}e-4DgGf;U!ex1WFqGJ!6Xz;3gq!zk(Jz{?O zUOvSS&doLPoiVGUXuR=W4CUC#nXuE^Zo&^f(d1gTgu|-3Wp^RZ=SSpQVPso&Uze2W*FHqP(GHM0ik*|sLE=bW}h2v{`lFHWT~wOWj77$>#mHJo*4T5i4#QWlIU z3V;B*4(m1HWvzW5uzllcpMs*(NyhQS)?(^dotM|{+10!}e_|M(RU>7wg}k%-<)%s; zTg5%9@)syzOKZ!q5O)4`@4_OhrDipJj|1B-uZ%0Oqhqh9IAELe`AmYQi|@$BT;E^m zKZuDfM;F?iTDQ$V{8ausu!%&cRwj*2HGRJlLxK`xeHG-Ws+whyH{&|s(9ZAP?DB#X zJc=}hfb|_aUp=oVfha*JZWQm?t+zb0$rL=wl?T___=?>FyU ztJ#I+=y}?~5OPO(pF0lL-1jNXXM06Us*`luA=G6EF;Ym#%n1{ZK?nBx%G3QIA*cbNR4$EI7Eru} z)8*USxCsG2^_*AUFUrOzY#5QU(&>ob;j6b5ZRbZgUR$@K&a`x8qV^& zDsslV(8514PRn7xo;06~zCFk6Rqulxeh$Qcb7C2Re^w}78vE9^wOFf(yrUb+xd(uK zvQUL>VbSeCCVXVab{I)%C`{Tb$XKhML~in=Nq0CjqiAUyA+|nU+x}2O;L=_^TWy+E z(9y_5dHSQS^8?)A9E*9D5q$>h{uRLtMdVq??p}UHod3oAve$F!j`OQ7 z60&O&bsb%32J>2)O2@$|$bqt!(*RA-@1h_X*`|6LGHnm5uvg_{5%>}@$TZV^pPANFQ;?$KMrNm zAT@iJ)acvpPnAm8aSyEeuts-MSIXR99ZIz)_#(E+>Gvjd6HD7l!R7VeMZx7|AB)8< z7jWVJ*iw@>Ob~{YehEG^d-*g@fs~dFVM~aV4G%=05P!71aHNT1wGU3m3j)0h1vl)R zu$G@XKHmr5yDscg^*$ARm(%nv*sOrkFJ6T-4piSA<&$CGQlDRT&U%nhV#lOOp!cGA z6lztxoW671Bh`J4XAfbl*0J6~@WrOXQ#*ahV`B>mk2o5O9EgdrAyW_$&W91eyLb2- zXjg6#(2z%<-BMRwiGaDf0XRz{tpv^y?}2c?D_R7ZTIp?>)0#{v6ygzq)*g}fuQ6Sa z^wRZl1rsssj(ysHIO*zJ3`<*Vf`8fxC-6bD<40z(Noj}hdWO3P}v_E!xI7Zp` z-SMJQ6Zd|xhq}_I9eVgJ85rpb14;IxT528v#I*)of+Xw+Gy(WezvXAPA|2`Ec1P;v zPg7S83{ z75Khzda~(!=Ux}x^~bV*vh(6Uo)F*@?eLrNBFk@6dzYlVf_ykG)lZXQbmAPbec6Fs zt#yq>t?Tq#))63W@Mk$fQ1BOZbv})ZoaSP(U*o!*d(n&j`08Jh%J1R%xV<|tn(pxs z{+d$rt(hxf+wv&?3_Sr%`pShpyz?X7)-?`@^i?|iw^$%j_EgvQ*u^FtJRjvIN5q*p zJ>eF6gkMpk0Uv$)2)|E1j<&$J1_3F3bjPQ#*T;1jc--naHVt}F7X6-2wT*8%*qR+! zX^H+X!652?n;Ds|RH|C>(e9FET08&&`)hd9m_MdCuvUsDG8vKrM5Q=j(^6u&^W5A1 z^;AAar0=9Z^9^RylN$Q(BW8c)#|nbH#UM@GekB*m=6SSV!3_Z5e{GE6^jDA8ORpRD zN0M`#D~Rn32Xp01B?}_&K3&#X{7~JSY*Bo})=Fd6IGtubecN$HLEYl~!{iaEHl0NR zV|RI*+SJkTorl`nU@Ou2{j#{YVH}7zT@*y69cTRxG`nEj5`k;GdyY>7=F0?gVmLZ> zm+3`AOCp@lB20!u38bDJ_8XBJ)}|B@W=j{RyK*I(URu;HM~NbvYLC6Vf^(6(Za_S_mGySLM6JmWX@`V%N_Nk{q*S^zwM8>f;T*7(i#tWA5{LtSz``2 z#Lj)uKh9+JV1Q%I;Pq{fZ|Vtp-u5y0LdNQzApj3gWjZ1{Uc1#DyFm+^wB-&V=FzL5 z!hji@(F;DsK0FlXovPE(f}vNs=aSSF?h>`3czldF`r!WZ%SxkRb+xV0@%}RkbNAUw zBbKd^3v7FX^Eg@`&t=E^Vfk!PBJ9g9nI~sye9!iMKp8K_esq97g6H<5;=|Xlw#yoo zZ|Grfu#SF=bscvN9D30ls+6d!m5#R}zhRQBwY+DeYPBqDQa78*r_x&5f5U=zu0P!9 zIF>(9v*a

    K`#Z?6&;aa_(53oH!tK8OT8X-%ON{uU1p~=HSBHy6bQNv=VWm%gr`2+LBUMjC+ z=)-ZWF)jXO>qTcYlVj)G+hTJ}HFo1D_w&s_A5RiIcBSTw=ApYyirvL^`{-8J?GhCW z&EwX`!UuL&*-sB|r)!5NnO6Js&i0!Jm^?n$-Yy%{F4s&~$J|zti>`LweagID869us zz3djk5OyPJJ*Hl4eR_)`%nNFZ>O{MxD^Zgo2R7$9{F?gY(TXIR)RPkuP0!~wIw#Z? zS(e1aAh-`Yr*ak`8hhIq8Om7ix@5jqL7Xj?=qd3j7+v&R;lOFQ3x z#N%e+Ueus^?SJ!Z)K~o&Q1CP=vg0jjpRHvpCKU{Q~7L4qxv4d z1`lG9(@XNP`Dsr1tg7v){OP#)ki00*u&TG#N&s53X**SAVhf<>I+ovGt(`~A-*vd- zaqV#x$YqJ^wj$w8NVr};NUqSQaEW0IrM)d{xl73r5$*k?4)U{$Ctmwp6yR$_*yqxymToaA?}i@{al<#s~+rEEf^Zl8-ahujDTQH(6#USf+UnKWjx-Uu8D z>*lK@TyAGs@fh}HGuPFg_zgf30Ab=T{hlDQZrNqJb6Rs=z0vb7alz$!@oaZn2goD2 zzYR-fM%r-198O}Za*x#ZbvxZu0e4&(@1a`Q!Gv!t$RhJ|&UZ|^Rc8=%(t1CsJ4>-9TpA+#xle0^N>`Uk~uLqJ8h zh2y3Q)BjIvG_T z9h>Ej0{di9)_nBUWuC*pd5%hijN$bWkKJ?&@*r}OF|hSW9JfWc$?aaUw%+Xz&s0v9 zVJNK>CJdqZ_k4irhLwlqj{~@(tVYC*ALE#v_*F zXbPP|oQQIiDg-%P_QT>4G4ma#3e~g%B5OF!^5%(q;l}2`>V|O#mew-UgM{-#m z>plvBO}xuEo<2LhxBfOm(E6^oJ0)?Qtn8U-N5$;?<+b6OOjoS!7l}e`y9!2wW7%A! zgSZTB26j7xQPe3Nm8DBeUJHaLhUPX#`Sy&%yHyS4XD=OB^#Ft&Y-Rl0j`|AcwzfAp z&zBU$p)OER$XF7KZD&rUwCP4Y&5&J~p=1m}LW9O5QEE_Ehen}A%Ud$BrqQ0|PZ>|f zX$Kaer333CSf0A&7}K|(&St9&qtm?<$*XGv?Q|V<3Pb4~N~HFS5F;e0bavkP@wkhp z=@2utCUaHC&bEbCxpwR{9;eNNKXxvF`@)BQmFv2nZRGb_a2C9exYDe5os@t?U}YZ~ z;AsrUKXNEzZhc_7HGO!mAL?kbOdk0hmpniFh*SEi2ARh>qFQdC7KrdAmY;mdfEe-2 zWg4`RVt=OQ`910zrqbBM>6mpp%4~yqd_mIoV7iLu8#b}+XA5&scYej0)b)}R-rRCp z%iUnFl-Fzs?-XOUbCvP1(f)aoGHvw(&23|H-1zB=FPH=P|6}W|qpIq<_F)Aiqy=d> zAczRk-5}l4UDBP>a6nqRyQI52k92oS$DzCP+j`&6^S7OwdR^@&MUSc zsWxBA>mDi{8!vY6)3B**%O)bELhHy{zhuFjt+|(5JZUl6jxlHk&QZMx8}LELE=3Q0 z8o*VJKINB-2la%;*c(Zu6t(Pwc2qZL=weulXC)76NqgS8b>0yW5BOwgK0M6+n_jrlXgci|3n$iRA7>G%NoNFx3OXvV&jXWHa@Rih z)bwo4p9s?aST}d3T&U3PAzryP=5|)x^BG7>FI%~@+nVVTxR08osHtEr=c{th2I(iI z7Y=t#9DOyk+1g91j0XD;=Bo|oCydJ6Jmus*jMBhjdOqju_cB>6DBa#4x6?lMG8(`g ziZz*}yUVt}8i_Mg%pdr{{~Q}a*CcLznyhztz&9Ld$jg~8>b4lEpKM5fG?%3{_E@!&=C696?B zI1sKib!v3npC47iIX%_Lc6&=GmmP37QE5CJZel=5~@CEVijZ2jHi;cn;ZZUa8l++~PR&>OW>z zygP4>o9|T&nCeWYNATdq5e#6h+J0Jn-g<+=!vNPIF1&(luIUn0q*@udv91uB56BK`*VjN@jYhs_$%X*eSRe$W|NUm=eQ5% zC^>+{)2=mCb3%4Hi`%(L&US_P={D|EW9_?r)z>ZRX0Zxa<2SJZLE>(4FW_LyV;8V3 zoX>gBjscKk{mOHs`!QI_ir6VuDt6ay#W!N{CT%lyKLd8!f1IBI1{s&y6lG8$cLbL~ z7Q*nLxY)}Z(uIIB5?8F+T=YhpUoXIVzDc?5p(x+cYo|@XYbvl25Ud&<%#Qe7etwY3 zz?0#+uK!WDtcK^V3;FJAlRBgMVc2sJp5k5V!>!@CP5U6O?scpf$z4Rt#RHc8qBgpu z)*Xj>qkV15UAyz<*qRW|%4H{e?n16=U&IDwUvlmKrg|JDtm1xUz7C7WOzHIuE(KkN zM@!5n?W=r8X9Wtxqu&XNuqi1U+gU?>ApP0B)T)HVN|bP_lw$ElQH0^EV2 zo~h6p?$z-0ISx;ngQ(_g{DZCr7v7_7$5nPj`$dll<1+fTl+YphcHS&~R9S{6c}x#_ zJ&JgH)^KfIJomCweOw! zoGnw(;#2B+dPVJ+-l-lW!z64N8i|mXINHsz2ZKbXojc?P&s~r zTqym_CQTlT)q%O~(_6%iYKP;k z_p-Q+KkW<(wQk=Oe#!b?*k!C@Oo8Y6r-Mtp@C=K9rk2#@1@QYxFQ;a-S=e2x%wc4b z@n}Epa(E(%A3c4DOLyEtQrsYw#dmahmGvJ?NYD$u&4*`5ng~7hRRy75?3sA--JrD9 zfK+N}D0z#3p}Z*S&!NJ0jrYQJHY-`6)<;h)EPpt(m^$lE|jY_<>QLb6Dbvl zem$g^ru>yMTMN8lMahXPejSaq>AdU1=6rlsG;v4D7|2G(d0s5}Bv^|ZtjFL9xLm1_ zhfeC+xq5o)a};dMED6ihmn9y<1aCCz>au)s&POg>M|@soxl}cbAe19kU#3te{jo8tGtKArWzVRz5ulwkyV66H%4(7BAFfNumN*}`0xKT%kHS6&vzjgM=utCQ_CAh1w;EbL+3Rc0%;+mow1Jr=>7KUdOTe znfxjvNzGdu_iJ47v9BnRE}b5aI!VV#mm;9k$OBjdLh9@W1Y6~f5|R9A!LviaQWHn# zC-(^+tdfCtlab_4aC{kmS-Vc@JFK|MP|8mS?^tzp;wJo*7Gopt(SHjXtVX_lV|SzH z<5y0@zj+_!b8&ZRF@LG-riRA$nt`uixl{1nD9t8gm-cPNlNm)P{O1?C>w-KC_!sSu zwtTjHsUznvCvVh<5)I}`cpSwu_V<9+nrXBxjyD0-)8|yh_afM3#N^h1dLNEc^fxjQ z!))sZ9C{7uj85gtN26+q0_CYmrNMX_3lw^u`;)T!gyc3m>#c#eD!RdMpqkhV8jWB5 zrRrp8x&Skuxii3JmMJnIq|fVJXjH5crKX|w^TT;W8@FK`Di?f#~KyHJY&8bWG7p)NEguSaOj^IO%&f5<2U zwY*hX&K22qUK2u0eN*PO;m)rpo^-8 z$EWqx1!pp*q~pP~3{N21vsO|PvSx&Id8s1N&VB5vwq0x z*pL5dRYroJYbvkrSap~OO?w&qlj3rRZJ2we81M}l#G zGS-Y4<+yaQZvN5duvOqb8Fpw|VD1>S;P0D*)r0V{zVFF}lc(j~Ai3p8Il4Z>ugsB` z5^M=zUrFmNdCH-HF!1i+@0YbnYQ0lJL8uXfgs#n{%*MlvEkm@+ z$XnX4o&J)Q&HN-UkWPIrNOCSned6_aG!R3lJ)gJ&;E3@eB*OTsco}4tR`yu;4G-k_ zHC+o*zj`^f?7}xTdTNGoQ}ebR=5O?yYIiSu+gdHxsaDC8%h*~g;6y9-(^CU`MxsDh z^C-cS zQ$9cI`_oijRXZxbjeeqOnNKa`9Jpbp#zW)@WSGyhy10@~aRacO7X8OkhLG>K<^x%g z)*3ipSXCm{UInuxhT4@0_J5<{B`%$ojp7l8 zpX-QLkUp@7{GTIxMRlkZ_VMgFtp4IuFfDOw_$Lrobk~A|>j^|d&5E`4{waUrVt~!w zb#jJsJRriUq2g=-Luuj!qpd`cSh11kC)@Z;nP&MLfqJ}i!?9J&nGB%*D|Px+WY{=i zA2g+VI&SlUL!->^GJ6=R<02CfftUU6bW8ejB2J7z>#P1nr-kBS#ogs>fzGszL-Ru7 zU4MGaXp!ME+tL=CgI)4MZ}Vm}^03ad9KT$Zeb!~On^vd3i<<64;ewVF;r(#^qgYvM zTXy=y^gKl_seIrA^dlOW8f*2cnLDXyBM}6~DG>kOkFS!!hVo5-0eO$j^doUCpLhjC zou7sGQ#JU>P`HrGxj)D(S%AuUPbZN*aSyF1ziwg_uxA?y`5w_;Gf7 zo9~_!2x(;Ey)#38$n5CjRzz-jHA*jZ$rzF zc9WWZ4m-MQa9cfYJ`X^2lBS3(bAb-;#NI-cQL#Yj`NGWXF68yFjPlf$m}b;0P8NUE zV-85?3(iI)Xe7yhT z74RWRC*y+QjY;ly7s8k8v+tf-WY`z4C6<~l;iwC&7M3&f_|J-Gh9zm5^_D&QbIr?b zrQ$zD-BR-cG-dNLp+!vwuvezntnAmem`rZ#9wM%vA!iNgD+T26xLGpsn4=s+QtV%9B(1 zG~d#F$2DlOF3`D#i2u=zybFYlkps{^U}|WZ~g~fnL5Aa8Y1QI)=us)8%310vSyHG z6{oG&w7{P*-Z-6(1hNpJnFD_Hk;IwaE(M~$!in$#*lSv67*dde*}r{x)ybgI6vj{1P1-&mr{QR z>NygEcYsB3VxcgQM#I)()&CwaIP(4&%dgAFJ&lb*0o8hRfYP#v0ccV6jF0}T=rBW(EXdB;6hj!k;?azgNUm-rC zrWc~_n9A8l#kbnGW<_Y|Z@-nOr+VG_kW?`U?ECl?7OzmB?%U0l@#I*n0ky7(qSXR| zvL^8d{aIAU?cEQccmQZRDpl`6GJ&)>j+L(KI!S?$FGFAyXe}^+jiR6mUh(oBvL-?M z05L1(hovgRGbRP;T} z5jSJ3{pON8ZOHn;p;1$IeG?OlttGbHH07 zQN69QIi3*5lxdPrQ$m%6ND_@;Pk8+0_h9XY zu`2Kd1i>j%C?;=sv&ZQ$%x4B54!BmC$3nJAK~Rg72y8^eBH>DZ9JufIp$3a6O1HoqR3qJp1l<%g&iq&I$15 zDg}2C<^%mzM>b}A|95E#V@{vne38R^YWa47gAP_7_xQnY7b79C(?H9?KTd2c%4j`|&b)H?nB*E^KtRN+TdXj0E{cvgT zmUI|M<1R8hf z!I0qmB)c%o54k!7K-xryOu5gu+pZ1lg_}Xgi#CrDll66B_Z1` znlXu|{GDdl(=%BdwT>Rbr_6Khi!a{2AXkB&Py*9$8&42;jZDul5$5rQN|*%}%Y5F) zhvEql^n;xolnnG~7ydKu1U#?f*5_cRI+6rNa(MIhsnw^j`avwY_D?Gwr&)|*Ur69@ zSN49=J8J+bq)cSW1&h2m_fx?Tr?~M*GOt`rGzq`059C>syN+4&TO^!cHQnB5;u>tO z>G&_4Ku~I#d0=wE6rp8w>%}iDHr1#)HS}gY7BzIDljIs)O9niMp?_-^db3*~zQ>i3 zvjGp67No=C{=`w*O98kC2t<@@V9jWXXyKaP zSHD~l;+pv}el$d^)hI3tF6H}i`#C=iym5sln2O!%PTJiy5N^xat*MY^Wj886SM_@I zU@X9*{L1N>>~Ox+1XQl8qUquube1Q}ML5e8_q(}5;T1P;ZCRN%JHIyAeQ%8!fO=Rt z!said^|~oRPwa0$O{`xo?|Lj{?X4XyXy*rVZ&qTdb2~La(5}YhQ&3y>7nUjOm+iBs zRHiS(%mol7uejJ1<72ckfn%K}&K&TFj7qJ{!~1O# zw-cX=oIq|~JRJDy1Al0G?W892&OP)9LsZXDlPai_E(51x^T);Vu0x)C&Sw3^P{;+@=ph6#1SAD{vQQ!gt_v>dF!V` zqXlu4BuPg=Ihy}9??#GslZ5$X=WkRk3A=t0t~SsaKrZW`)9lpASepGQshX3_{ zdVcxd8r7{b@xzm>oSIij{zohzbZyz2O&+loDy_k|KFy0wdl~Z^?7`^%t~Zt;m@gdV zc<8w#mzo)J>l04z*d3tbOGc+`Hpmf^LT`J?IY6xlP&dK4`;Qi^b_C_ov(4Hh3KSN*1 z^Noby)8?L(#9bM0^R#htx@?NLJA)c1c2kmI<#HdJdC>mrJ^G?H$56*{PJK+GIJngF zfF*tNB3J6UhD~8&dCA!^7U3BEXxZ(RZ+jf|Z0!qKBmX7VW*dT-==;DcGJFp7tKL;_ zu-=0X_KB}wL1V>*V_u#|$v#48$E$WaF3$Z?{&5x$o*j>!n>PV=1T=UWwjaCcgH*YA z`@ZT{ZB$OCDyltm@s^??jQ?r=b3c%Q+gd2KgRp|e+gF~|sG$iQqZD!(Uh8Ds6|m+@ zkyABxexc6C>7G?y$D%e`{Wa**^9K0sIIolVkxq@cPLZ_fKiKejzch^DxxIDivN!h{ znT>Jg4-ZSP;{TAL14p8!M(=2X10(xRP3)WW1+6H{dX`R90iJGXTpAsyfe|g_9|)2e zjL)hpqYldn^{SIBz&uMu?=KD1@q{0^$@oBsj*=0je@ou^!PYZul8wE%^;gA}tlr~l zu)~ws?@>e#{^y^8tC>Ic%UdN!IN96NQFxV=6A|`44$@fh5pjA5zbDij=tN(p!7Xsy zX=}ZQyE<<>_7nXf z(EWK01R}1ggVDFk_sq-F2c^_I86}sjdx0RMsU6U%WbdWh>)mOkS_sFtg-}2@JOhD) z_qx=XPm+bV@wVG>i-vGDJdKm!9XgI%D_9w-Q>K&~|T z;9a4Zn(W{$=WLGoVjjs^QZ-d7GLiJxRt+=$0mkd$H#vbC3I42_i4iZ(8gC+PGkapS zg;QsW-j4rEB1{&35zSt4j<$0Dzo7CLe^GO5mE%IOTyGv9VPYglBR+?BZ6_p%SX7i0 z^iD%>sdlE1e@V>dC&gGs>~^jQzrwpEUwzg2IK zRRsev17=3#ZO84}p@;qB+`vEZTnbMX`yEVQzl-s%C9QW9pTE1f>W0vjxGHINQHX{z zu61XO-TG6K#($-ge3bscm+#{B>B%#R1W{Sz>2{wUoIb(bh)B^{ZNK?W@I#AV#RLK3 z;1MSCN9Cf>1tcBg;FovMj2!~eh|s4-0)XYpD+r1X4}w($^1XukiT}_qMP9hG*#5)J zJ7Xpud*2my<8mH+{s$uIdjS~-#Pu)MhH}uU(V*!+vPQ+^i28H&cKYBOx$d3ezEV6X zPo4E0Ku9oK}zwJDdK?rnf!R^osIszmd-!Ayy3^m})-kAU!3>5H_|3%U33 zqEbJXoeW0?6+vdRa!HEmRl_$z6-zYMgLKmbA**P{LVY`&n@S)c$0Df z_fIfmCMMNEt37c~&-h<}BY<4`AlmQvS(h+^z$R)r9Ah$jRTRLXciwhhVuh92dfIx< zW&4jNFdyCS;?xAr*`{(8PY@7|+~wJ^5aiIqOP%Wjv|N zLn-`OIwBnQG&npYg}yLwv;xy0=S$R2g;r78e(*@6xvwmgYv$FnEGqm*Z$1~Ba7njT zU1+L%nU+RzI5wSIx(ELOLh(xq+Lw=Zj^{oyekkMOk&LhK$LJNfez4w++GCnJZtJ@wuEbM|tLKv>wI@Yt+%OgN z(~t97xz^Z7Z^n5ouUP`qQQRkIkEdu#pj>@WAMVjRw{?3g@ zs0;rXy0|9MU24Z}vHS@Hs|$DwtB`0k_!MPKHC?*U-vuE3h)U=$mAEGt<)2=L-GRkM zeBl+ULaR!0?VUiazwG&aD7msDPBS_N+iC-3T$_8YA>; zIcd*T;$M9Z0l08XpNs_jnDn3k!(6tp8kQ_`;`O3~;czYy$3LX!95xsqVgi;DxDty7U0Z7K`FpvtPtkl!WD@iU zae@i2rl`ms5pzF?Ux}*(fwbs#%!+?eMNi{q@>8wvq|HW)m6sG%+?rgI!Pr9+Q3SiBUqXRmik z<-(uTn~bk_QFd@C0=EkCpZ6ZQ?qJ{e-#t9&t*X!E`p(_DRX=$m#=pVkDP)9bh3A|_5hxb7#PuEsM>K*ydUPTE<+wGqI?*=*{zQW{LBHOPnRNILk zBULky5nkUH>dejaoVN!E@u_HgT|N#9)H-1%9WjaAkT}ar33oL!OnRCIMXTa=gs{Ox2DC^-XK44XF2KtiyD^~$Dj#dwa zH!4^80po=$_3Sr2&A=InFBPN(3MUc1%R&EhnUHv%G?>*bz(!j_?k%I=9hC|)&)+EP zb!MZ{WduawP(?VZ(%Zi~h&w5Z+*2<z-Sp1h12Rfomxo}zha@1VG*;QYd z#)`L>ySk=Lk`q2u8nVZ|)t{kp7whuqcltWg{B~mD1r62qmnQ%-@vkI>8Scx)U1Czv7+D}(Ah;Ji~;QVV!7Ezr}~)${Ig5om_%s2rlt4mjgz?K3^?8)r~( zI)&D1^91_61jJE1v;ke?{`Itdo1cU&NtRQWJ71gUAuPx0y_meID}6ejUB~7s4@U}A zFg-Pxd0RkYl~fR6o7i$pWa6!ujfejfX)CgLM;1KBdy)A;qR;4p&qTyiJf!h_<0um{ z1yybm@zbNn)JXZ@c-C%yyO(h@*tq(l|12+#w}>w2=I*g`%>MfB&DXj+!N^cpsL&=d zbtgasK{g@R?$EyOMa@fky!IHaQxI<@jReC@yLC=?<1^JTMN`PPLHjsjJr00bOE zdRm0G*|{4ObS*2Pv@(jmLZS58vlUIe?q;inVefh`3)rXA?f6{w4^es{cn)@JMJ2(W z4xI4XBnD%zc0(lke2%=)e3n<~vDuYO9cjhEFc64xrT9yP z$E)Ce5rDEodi607&`Gex$8I0m@rwV8SVsM`?-Ra0=o3Er!faXZbEDTQ_v`?)Vk31T zbqE+qc{$v7vS{xLEx4aT>JiNCD(v_=B2C4AZHzK-I zqg6kG|B?xUNnZq{0OyLRPx|8{@Y?v!;qmo^`qgaYDb+|os%DO#G*Y^*X^tj{r7)hT%#OL_M$?{nh zjf7)WBFfbBuY!q>Vz4*kMQoun586TwK9g~*rFyl*m4ie7il);5q|^KfbyWFnic|vK zNPb9Wj3g+IZ9z5Zo@6qJ)YE@#vGR1LBsO@5c+^xa{+}IPmJ6m%C>tHNg=QmAA01^K za@%n!;3nWE?zS`TQ=LTOhSFfTOGa8%F76(80<-#S9xQW0_h=(!h;1~q6$?m557t>} zZgo688V=!8KLFK(RcXN&4-8{$V-23}*L{t*4hz=sO1FoW@HcoRay-0m_IBPYXmN=b zhzZkzLto6Bm70zzT3jO9hJIt<{x^=oz|z3pFIgn_f^8tz(|B{8=DX182 zFFMYJtjOj+A>|;fe850|-~l;7Paw%O?l>`ti?tT2)GfOeNPm_>N1@1znxl$j&%rn$ z^pr1}fCmwGi*CnBD%9PPRh&NJ^P72;NwTHvv`Do&nC*N^>AacOaVih^3G_x=vXW&t z7pG?e(B9Ic(WbU?t-)3wCu*gpFUc&;6YG&qbxi~bGw}ctaBy^^C%qKI_P6kAi3q89 zc57>51p}Lz^fTNE!;%o>Q2iy*dgm=B6UZ{o&yN!jgAwN!WSe%~|2~>983iy@8P*<| z`y=4a39kumTXoqrLQcRFYx|1(gXyf<2XmFYEWxvXNJu`+1U^gdPEr7y&hWmh_0B7& z24Kbrd?X`--sWAGyA@DMo0z&3l|Y~-2N+44LDG5+XC1bwB1HO}^UwAYLdYx28$?P*ff1oYYlbx5LSe0TX{X5mc;E z8X%p)Ht!b0YN67f@tj(b{!vvvxwb)4GLFtd0n9ON(C7RpE!UtCCbc!O@XhEHsO9-1 z(<^+6=u1^+hP_lS)DSYCE;JE+zB*o{+2{!eTmTZ(9=B+eqVG`Y6M%|N-vEDt)UwB| z%yWZWIiL*9CY3;&Z! zMNdfQs?xr@+9Pw1MMh4rbavcqJIqFgC8bO zBmOyd+2WAuaWhKh$-qz#%|ZhGF%gG*FKl`KXmb4jlpOy2N9vE;tZ1Uh(9UPLHZP1O zmq!kiHZhlsAI86kc5i0<#sZ&N@nccOnHU_chqz?^t^K@0^xnolL>`mL{XyW&GLm2K z0tD_4KohX@ucuUx~C*!e_#{}AljhLZVe^;T3uRvd<7!0&`~ z@aabT$6IT5{v- z(0(qXi>DPG&96d3g0USK~7ItTQM}VRwCC zz)zEYz8V_oxS-qMe-7;jN#P7GFS)}FRof@?%cZyIw?4c6#=AY7^;c-NhV?0}i_RUS zQnae{cob2cZ#F4697$DwjZIDQ>NQUE@5Xa+z#K75p403X#~=S0#>J!CQ6V2L8l|Sb zie!!_u@G3;QkURpA4e^Z#YY-WmlJP^I{=?MRU8EzKK-$KZ$4Dk)#=?Jp2?(qZ7+Ro-TRKLNg!!`mi+GY+716a-_9eIc5GK$Y2U|V+?~Eq1ff0Rx z%*><3XkLZ|z3&w)U7_1=eZ0k|CF7ySn;RESTfO$U4Rl~HGWh_Lk`K0bLQBmCh^+r= z!YO#a;Cq_#cPH?%;o)bBJgUC<^zmlgw9=Xh7Qw*<S-4^r;%MZ5=14#rwFcv#=uio?>Efo-wRi2eO05#$!H3DL3ROyGfMR2trNVAg zKmt3PyOTD*#|IY8s@YyebOy*vtO{L(X-&WXhl1rtkr$xQZRyA9jfq#&2CYhul8%i# zf1&atTyO%g`VYgEa{}bNyPORBEIPNQ;xe%cZaFO74TYRF7aHYk27a8~Te8-oV2lu) zk$R`?0&HR}Q(S#qGzD;2nJG1{wns1r>sX)1lOKNTf3yIiUO@pl)~oF+agkckY=NEP zeC4C=;P(swN-nWt(>w@ro9j&1Zr(ECeLr1T_>Ne?4NNnMG1P2KtGTQH=9KB{4F<(~ z+jP`GxN#gzDPDcwnF+w2r*_hS?4^sf56n2B-lu;OBp^xwsm&ivK@$)R5+D5O{Eis> z#KpUH3ns0!w=3FYTO)kfoL~R^k@ve7eCmjmN)u)^OxT1{;hzn#-pr3F$d^x|lJMM6 zQH=Z%h5eV)FFKs4LT<;jPhwQpy~kwI|5du|ORY}oCSc4tUZ!0unfJ`3p1V2F_f|%; zujnm!;Mx}fE;&dJRGwdH%x7I#yHVInyotGkO%FU8hY?~dwW7+CR^3HTT?TeR~$ z`~N((@G1qlo^E*fTWI~;UxvsY{CoZ)0Pta5x}-6{0a^Vj9v1}Xq{BoZUeHS{w%CaSvQ_b zKc=_Z?f=Y^zaRLYRd37o4&#@+l>N=sTl{!(ABv#f#%lDDicpllBQZh=C!hkWRZAN7 zY8ZtCZ4Fwf9cJsLQ6Wra>LV#cez+iO!JCOd;4+lH(~T9&q#%Kdm^+nvcZUJtYOBiT#yP6eoB&CJ+(+{W^Yx7%j?? zjGxu%&Md$7v&b8;BMD5i(;@c5zZLR7GvuEa5P*|KhKs(#xtN4e|D4MM6NQ&MIyQMx zu`>zt!YTUi3SY-~fhrBP+p^6C^C{QB)nwawxsg)a`dlC;C?y+*aeLg@3M0Y)Jum&| zH~)F!)eC_ax*i|xlF?TZ$msgMPqGwK=6>^6`X%*eygTqC1USM_CS<{@qMC}5{Mpcu zkXbA-{TD2zQ%9jMGA`Pbk@9~Q#(y7CU_qF4vzhL!bK;km+Z=8-4VF5oRd{6U zUy;vLB{-OiacvHQ!qO&S6TWoA40^3a%9j(GKs&y|kvjDnJ}rNlKt<}OeLKWS=<-ljVAr0aAR9UYnR70mksuyGDCxeDhJ8X1e>6Yk%y= znBT6m+7o$JDFv=_!iI+KAAZWt2m&(tEO774GAH^lnDBG5$fCxJB=l3~Q(=993e&&3 zmH+4dw#j6+S}Oq%IcX0U4doACa#=O6ESbP-FaUe6gW=2l#lFQU;1+@uB4^>VO{>{Q zTfh7c2w8ShWq?+<_z`&3%WR@1m=XHNcA)XP?f&OBFJ@HKVOkKEIs!0ff=MxyYcDwv zt>1`j=v$yEIHYfCQJ649p)n=@b7=fOpF$Q3?jnStUyhezy?FfDo@KP1Pmnyc#*PFR z*Myb(8ICn(Z+deuLypbrH`Q=5n^at#Vson!J~km4jM*DtIA1aaA&*Ij(PTT$MQgQD z?e+_Qqzwg%o;*MCOgWRjO8?K+``_F8)O;5h(zTbs5yyR?l*xVBb~7QxWHDkHlb6C` zR5ewqN!(v2o8Zt5P5dK~e2okHIy z(CCird0jO^KRo~}P@UFXN_rNx(yA-yScpl9+AETAtSs%G}Pg>bTs7Oq2K= z0+f`#sb1hp_rknFUihYF%>Sa0YxepS%PT%_I9X$$O9IPiE@;h3J6jZ$=6U)4SRF6g zxqurRHuR&0yXXCN^_{!d;^c|hx6A22&TqF~b6=9U!Rc|gdG73|ZPy~d@m4&Kc?rqS z1eh=`Uqs+n8%u6b$~-JjlEawL!;l2S_0nP{P@u}FQ8pgr&Fslq%BZC>{&(8{&s?@1Q(A1>?KR?!A0FD&E5r@*o*>#b?X8EW8ydAg8NoFW9 zv&tEC6mT`aLS#tMLQkOArTZfsyYOvKoVAo5K=dhmNiwb&pQ+Fn>W?Jz9a0sYT0C}) zTBx-EQZr4%tCIPi#C`V6cI6muXOh9d3;xKf$c# zQ#I>=GH2~cNfI;cG(^^;=E@#AVCA9>Fj_u6Syh(kw(H!XseM}#L~ z`^T#5bfZVA6F#ATTD7*Sp^m+V_1QJf4R*tNrbIoO)4>?9*{gfXsXMaJdd9MpN_)pp=N-bBQ9kWwDb*{#smhyl~Lq@v2@xCXB$w9xL+2F zd8HRS%e)w~jpyVFdD8g%LZc+Sv`>{{B&^`cJel<}*jE?pfM#g@DlNNnECR?yfbVI? zAf~2SBX=?H@hn7J_h)Fe`E-#+hF%6e;Du@bbPF8>p24Vn9dl2MaD1UT%Sv;1tgW>~ zqfy~3BStr#R`U<2CSVFow8ix3GCw-Ek#Yd(HWN!ZW zBZ???9dt63Z+3T&yT60hI*l&(rtQ7@qt7ncb&;p|xqmyxyvL>2`TY>V_oSBDq+Xr( zL0cu)Tv_$^Lw5)+a?ZZ3Ei45zo=%&3vED|tuyHW9P-OvVPsI)b2RVRiBSIPsA82no zU8Kqm;s@a5NLtOv3@xj9G>WvjWoqMJd$5IdSB-}f^}PV=hDbp0a^V{wt)CMlS&F)I zEOD&uaL7uD#BQVW#e9^B^3=Do1aMm?wf z903+WLK2UkF^RYgdA@8~G)2u5=~#s?k6|d$Bdny47Zr>g0n9du>6P(gcrWFO7sx2> z%G5AF zyn&(+@KdBPS=%aEg%!r?cGp@v$5474`di*LAop`Y!@O1%OME!o2-f0g=t_WIk?;nvx$I zfwXqmCcR!1m~?lb0>ml)<;%^b?~bqf9y__%o9%T=kIDRbgCo+*3hidMFv(adI+6S& zJZ_Jjijw^IV!qwyH#LQmJ4q(#S<5Ad@alDrg$LR9l>n&IESlYhM00W|iCOA}xKP*p zYnCkFh2%-~oaqIaghNKo27*WRMqYc4V~ChU;WXoa9wD}2TF)C5N0|C7BJk%U`E-eq zs^+&S9du5_7Ax`*G6t&qA{o~iG~r_KjJ}Gkr*i6_aq`!(h&;*KOIc~!{}MSjGko&LRkk`g6pu> zPrqJWoSh_?jr?x>N$j*egip4O!SWJf zH7wRUmwT$NP3VT+eBT~QBIld$VK{~UDABGKEqd(VZcy7uv1xtZ3slXz2yK1Pc_WRX zBWc-yPUQgOOqA^kX~S z{3vRCzf<|=@V3LzDR6sY!F`&4W)+1HoIsP0cZlSd4^41OWLKK@iNsX(X0vo!*8rtA zvMK{yOY|nN7-Kl}ibu3lG_2rlyOEP}OH1p{aQ#X&s?B)JkJ!}$hs4jtqR5x7d26bzYD6QUZQbxbzCg>8*wjD<2+ZO-9pmfgKGw$?tea7kn%7P!VSG zYy${#<-Qa7fuU2dIg*xQY}?@r><#`Y&5Unf&HJCm(`r+G6L2a;M_OiZ8Pnq$%prZ3 zbG0)r6jTXC;HRh1x2-VRGheZ@4Z5W{<9ocpLeh|Lk~T}3FZI;!W!XmiPUn7g@CFYi zFSq^aj0Qhu8aM|@VQpMny^0CONX#Or*6a`3MmV{;zRn*x2t+fkMywfcx8dLIwhI$g z??u5(v6BHcsRDC%hdk2!>R=v1y6tv-B%^FTwT8&%{&OXy?w{3-{jh8C|<}T>@$f`)R}^(HZ51$(2#cZ2?l~ zVtE%;)6Lv|v->v@W zN!?f{L(p zB$WAQ&Nd*bq5B7OBUm_M*gv00)dqDXI&;zVUURW5uLIS+IzNmd-mGBGl6@R89c6i7 zCiscIxYi+; za(wrp+anntEP7K_%5;d0Q2|TzJTuGJa3wyYfFHH60lJk>ISowjg2g;bpB~DJGkyEn z50!RHK@3<(ugV~i5krBniQW1MMYEHP^MZv}aX(9i%$D&lF^pR1H)pKh&Awe{p zK*UxHB}OKa9$7z8^6*mCI-BoeQ7qDww^EuFm*z(bBID5J1zhfPhV{+VX}h2L7;mRh$`Fv@58F|O zhr$OJ+0<0e>Rq3lV2e#h4dY@SdlOgqY`%t6NzIm($b;^FqGIkZ8?B$`W(gUEx*ia5 zi-i+S!1Eb<^Y+oz^rzFNY>HjI1PPGR%0EMV@4p75_(%YG6#O}ZMP(;P(YeFz+51H< zF2@5?O)&yC?q9A<`@cx=TwPri7i!GRAU{Q70U7d?4ckbqA(zcPK@JZ3m=`#LPvUW{rPS8^+J1 z7sX^hwizdHf_^H}s{BccNR!A{*IO~KHI%}95XqrCa7^%zU1l+RtQLxZ`)+~TFjt*d z{r|_-TSry-ZTrKNumOclOK)0Ay1PL@Bt*JXy1N^syCftfr9ry8ySuxa-=p7i&pG$K z?_Ya3hK&8}wbnD&obwaYa#_$wgtEVwyV}CxZ%zT^N?<0K;LfiM5k^0+JJWvL73r%# zcw}~lDkS3SY!(` zr6QWmSSxXDd{bkyw=vE)O*iBYH^YRKFJA{9Z;la9YT14^|K@!t9(Dd$@w#CvH!xCJ8YZtn*e3V0tV_Rr0YedX#ji?a~g8obAPt(vjd z(K-pNVWE+|JYp$7M!7Pe)>hqt89Tvtww`zQZ4UkpbuY9Rx;}4 z`6&{cLF3)t&5FmDLGiWTx!%^D@398dDClF~5r5K|x0`}^O`^oea|hynP5pMis~GCU zTtOcF=+>Z+Yb`s*5X{pn$?nwHDL(~i;$rOj$m9E-(nDH;>2Y=-ui8zxo0!Lvz+=Fl zylUxGQyb_W>|I@#EL_r$;GW+!IIRCJ1qKt?ev3pQ`A7ZFWW zZ#1W-SE~y)s+gk=t|}ns-a&vPkZdW)(d(^u!8{HAel)K7bEWBk$_*72l}4kE5%8my zjXo58FW1`tQ7taesL^Z&AVw^}Z(bEKNcAdctomQ!Rc81zb4Pt6p$6@Br zd++Km{8L0yDgf+hp0zBZ!is||I1qkF04x%fbZK!P+V_kU8z%mdK)^BvkW>^XMgcY` z^XJi=cHN|lGDh;#C@c=LMAxT5wXRb%^POXsW>Y_9fr*&dEmo&bj#u-a_ZKR^b( zmt%wM3k)n58L%P1(a$FSlaqXcLnrW2Niv|g)o>8}=if*^aCID^+XU^j9hj7bNwvP_ ze##n3aD@Ar@2d_qusF8@wX?_$LHOJ65N?m$4~*3?2DKAPG^E&y)U0MTkK_*iZf2AQ z*xNCUk1L3^YFltvOngw+!{i|JZHs>V?BZC`eX?URvr)|EotgagyRBx? zv)V@VeX|njWErIW0C?Y+lWRQPzX9QSMWLHpng(+b^yFAog`v)k2tjC+ivNs5p)_f3 zW5qgW&7gHlW-()5s`Fgp5A!0Axpxp= zlK0>9M%8omBzX8G(Co62*J#p#Tq9phVbYoQyUFe56UB6C$5m3_nrp~$7~e!Kt((bP z%FCqELFoga0)~OH{Jz&a6#Jyqutp(8P{>mEnm|DA)hmTht+30FnwGg(SpSMn&<9ie z8xS=VG!r&*R+-T>Klt>qY>`t0ve7udB;u*))Rq+GtOp^$OLxXfBj54Ruetrd3hl3sqTxZ60R&^iNgbISqP=E)&!L%fYfd+%No=y| z%w6nY0w1fzhJZ{>9|V~szNfaat8bYeMbjl)S?lWo$d|_pR+TPC*wm$8TKGMlhJg9v zIK8NHUUo{2x`*Zq%zW&8|Ky}TyCkbUDRvPszNO<;pN5!vZ0+1_rnzFj*?WDf?)|P; zIS!cXq92z4y@t5^mz%pCVbGe+vBm)Js6AZv?i3)?SClppY%9avgjvBS>4_xFU6g_U zTqYm;l(Iz@Wd-W?Hc1lKsrf4Ti(|z(-SP2;Sc>Szf&tnm>-}pm<|@!KxI~qJ=^CI; zB5!Ay-;|2YL98mqXa6d?z?pq;y!89%cQh*~$u|IL%ntBkKPyq^FzFrD)!nb3cY;ba z6y|N>?TW*0!-foR)4pQ5RcSLS;B&nOzp1+;5QScma@e275*};j(eWKhwm(=-$78b; z9mRf(sm5%%yQgih_o%TmrfgyUfMIOsc=gDMKe5SY6fP<`O)w{meY8}Y=!LpzDBIHb zm~Dy7=YILAnWyFDjOu(d6Riw|_~Sw{r^Q5RdJ;*8fz$9I*La>|`h1P2Otw|av-?Nn zah!}uaE2eHK*PiCH{7M>>SiGC;FN$eNOSwDO}W*+e3L#CQKnHNvVOMI#1{Z@e_XAJ zayVmCTf92x?4FWRUJTFY`{$LE0k<|W#&2kB?7;8AU*PjbdEX*(%a6 zG95yUts4XDa*$rz^<~I~{r6qi(;zR>>&!@jr#PA~g?bG?@Yu}8lNIyD?BF_g+z9AV zQPaV^{_QhEHtbyYfNbXunuR6&;fN!ICb&VM^2f2D=K;Gfv2zV`+f1Dl2Hs#!cIe+! z>z5EzULointQqn#mDuZ1KKT8jRbrW%)Iu`(!T_E+#0mnLzWz1$^T#StZE8q@m(y_^ zDCynH*~3ZhJYX4>D;H%|G+mslx%f2=zF^L*}G>VJKzF7MtkHEQs)W>z$&FK8ZL^v2uuVaF?M@+qwnl-?T z8b=sGA9v+zN6;G#udk4W%v=O*BWITYm!#c{YkiV%91dUt54kA+QoTL`{nj1(*U{1I zb1Kf=U#vE{R)cn282(9AtcbGU*Y>OC%|?6?Zf<&`{PY-WksNQy-1Ccd70{Es+M}&^ zg20Y>42m;zL}MSRDve0)1H19uYe;6{Scefl6&R5em?tN^ho5C}^JvfmR1c9yP5oOeQ9QH^I2!k66 za&+2+v-^BN*79Nrex{}jDBx&XC!#Y4|DfvX$2<>Cp5{PD1Q`_pU`S8C2$6x8Bdx00 zMlQH#opHyL8@}6l2Bq+{qSN!=mil*K;>}L3nw|0_n z7zIN@xT{})h8Y37qDs#_XJA?7!_CQ9Nos8xmNb!!Hku~Jb1x}|6@wKL5=w>XVsgW6 zsbDjSuT1lXC;0%75(Nt_wkVK zY!6TKartoE)aL3EAZ)6DoO6cItu{6C@XDek@_g+bq*Q8OmFf`_U<&%&wBMiESC^Pw z2@~PC;M}i*+zLkBbLJchC?3&4>}pvIc&ko}m^P$XRvL3Os77C~48^EPa;lI2rsvM2 z;8x^EzX#nTed>y2H!`hbk>YfzphY{`4|{!Wg!jXxBYn zz3Hl<=qIo__>$a7rM~uI!Okp3rD*XyrBKb0<;&xSA9%3)n227l5tq`Mm3v(F<)3d5 z37lt9AlRa;@9mMe-TH>fe6u2$^q~wwJ7Hap@ptSNi(oZ@qXK3&%i0DbaEr!T%vW($ zn@oLRzs<3;FSVTC|JyY4*(KF69ZioF1n)`T&BKVbUShQouV%b&KvN^!fr7C(YY&K+ zLn9JN?Yk`qD?qQB%0^EbZXi9C+m^{r@iT?B;Hcvf1P2dmHuU?w)}Rt(M3B%!xhuUq zlH|@JB+tH6%a!*!Ua6I1MaojGvAx1;=#y7R%Yik(F+l(QB{+gpJwxB^pX}h;Fyf5w z_%+$)(OhMZl3jy@=yh*)g?=+?8BfdmG{;?GBPIQY(E#N?UAK4Oa$f;adFsHfTBisq z+nZ2bGtbMIR!k<#(l`G~7{7zzcu$q#I-_)P?3NPs7kZUzLd>XT{auFa9Y=-vlxF= zYqBJ~I$F{0K0-4!)F%=c~pPhPhqxy|_*0TWKSr z_=k{G(E2_!o}Uj$8GSb*b(WuOR8_n-;|@f^p&_5Qb(XhZJIA_TZMrdM2$u0!`lo^E z4lb|4A=pVhn8VfS>E-iy-{9oVl}kS^bItMm9M{_sW?OX|&0872O>>NCeZi@zeZhYs z_kn}acxZkTUrKeDL$d!<6M3ay98|5^BR zs{WLA8mqWqa7ijhKRnEEw7*{@*QQW;WCZmgV?-;r$246^*BA_yT~5Q%LXF*I3p@JV z34nO%xjG~hW1?ADgCr#R+9`jYG(K1+Ig}Vu&C;t?Wy&8GyLXM}5)@iN;_1IcD3?slh<_a|APK)cm%etXj3dl-iq1r3tmbn*Wt2@~m3L=(iX4jUuf#@_>)f8wI*o5HP6nMi`V>t=!_FmLFk?B~aErPQzo>@m4WbU7nlKBvx4>tAYsaqPDShhN! zk1XD%xf!Q&hXdEyN5CcrQ_t?c%CyS&My2DcXB?pAETXyk!n8r!4iSyu4iBHXy8kV_D^#^Gg!RqyXE|NZ~_+^Jg>Hf-fA~UL}%BxruS}h(TN+5R}Qx zWJ9U-B27PM*fsbgPLmNX43SxfeHipe{{oTkMa=s5_U-Vo@|+ie*J({JcqZ6NC6BCz zBMIp+LZPJ%*)?=vr{KxZ>)>J6gdIy_wBz`- z4n%wyDUAku`9U3vaJE0l=>J}V_atC~+hEu=-u2UgMxmrM=`PBW&10c@?hz6v$|EAJ zIf+6UrO)g(V(A6s-qpw7c$>Za78~7%vW^MC-qc0tb|{(Tej?yPfHgv%CctJR3r{7J zpLB?J3MJ%kQj(DOWgWraTbm1P2fFqiB3=I&1U>(~%C9@^$tEdOp1_;613S8P&dC5~ zkRYVKcb_LA%fn!}?MEo)?ra9pzi`C=JhI>o!79SZmvDw_|d{{YDv$MXS zxHYewrj!Kg4IP|^f|Mu7JG0|X(f0jaI#0UIxrpGPn$W1OG!0C}kjZG9{gkL-*CX8< zF6ke`w|UYu7t=2P`HFww@K8Z!K?oLI(4y)FJzsr(pA3I4{SAAc&UT+==&5cV|8~rh zX)NMK0WUJ72{W))`d&ZOe3V+&7C<|gJhS%Q)eU|u(!u<;t_y=tE7lN7= zh&E~D5|`iFaHCR=l1m4z(+wN&e0>`fo}0 z-@8pN1?TGrLmjW~eDvK8<7=Ngn%I=pijq`Ds?tnNpme2Ml-qnUCg!RH2uhb>CgDx3 z!0XuNhRa;Wp2VGN6gzV-@A^MK_n#$_Cs{SROJSKJb=ffZ`9G-F|N5cizJgJ(zp&Fy z`I?>R37BxwujQx0hZeK<)dx0k{s3*CV)JA-oT4OMi8-Aar+#Yk#Nesr04J0h5t>8v z>nkB+G33wH2XXec4)lM&lpG6AAzw(o(&gs+=5y@Ix@UX2WGEkND0SEiijBbJUlCyRXZY0HJ7nyL>$}J)@3UD>`j-s;&ke=j zR#TZU;%W4AH*6%2?hz#*?^-i}rHvs#O2XLALuY}@8%h(qUbqd3El{FHnU5A!s8(a! zU#iuH3CDJP>mI~mKAEIeWsX%N82JZ{=pu#i?+A`kR1;57W7}vZ{oOf$k^u=p!lC}) zWV!Sj@eqT^KdVDKzr{17Rm;t{&^QD7a$~nFS0RB;wNUzId2?@zf?uIbyG4BBC1o(W zoA`sv5`1`pUM`Ko_3E=n3cDfmQiBWGBNPhP?b<@KA`Yb}(yV*gcWxJ7?BUcthGKMn zB<=M3@OQyatsfr_oM5u#>%TgvH37a+#Ud!lpAN@MaJKr>C74S!>gkR~iN-VK6=}X? z#T3&fJ&{_>mq$D=)qL(3Y;f4FX~t#gXJQn|xip(8?YEiQXDbvhX{f0QLOsqml*S2( zq)6*oenODqyI9+CO6-2QCv!QwGo7po5G84G+o_>W@R-;xNk?bB*dEMOq>2bC#GgTU zg^W$AK?Z0rU4VSz!nc`)rx5-V&@H{lxEU zBpaqGc6y~`Q){#R9&Qx&n74NKXr^{so13JZ+PNz+eOfmVYWw)A%M>rBJ5?aTT!T^+ zjv$#^3tlfTiyy#n!?9JIz|n!S<_~@duY)!7`!d<$jPGyuWKoIy*=j$+E6z{@{29U5 zXs6y~TqZ-RDRy50V>^QCw>gF5Itj1V>UfO?FYcSzY=d=N!oB3F7`~43X-A{-1 z1P_DL7CZ{Tgk96;#bo>YNvZx+4&v&g(d3kBa}jCm;mWcU$R4$qOjUR+lOpAqa9D6! z(SYd3h_rf>aVve5hbN}1V~!|1c1!W11cofqu299hP`L>Ot&X)0gjXZtvZ)gQUuSoJ zOM0?6;0pUWky!l9$qRy!H6o8esgU=~72@vhUSM?OTIG0UJKto7Ae36BzjG{Xp3dnQ zH(rUYrlSKTOK?+UQMyY;qx#!50PLTqwwFD);zY)`y`$4u31KRN*2L zs*(Dh#*_qV#nR`dG&a?kds%@+3W0vv-?L_IMw%Bjsp4n1#-au>fW>Vll5&_V2)uks zZ@4PZxH})WS#EUM8?X`|_j!6Kl$onwHS2y2xFE7Ly{t*Zg|vtWSz0WXfA_rGqk8tN z-9NrP5%{T*3(z?(c7}3Y?6xJfv1mVM;{-Oo!@K>H_lC4QiF=i)(;7M}Kd%>+6$-Zb zJ}R7|-Q18_0EDq-287pmqAhZ1?=C8}EozDQ3a(fzOnSUt&YeGZwLFvwyvQ`U-cY)? zJUl#1Je)L&0Q9uXG%mYwH)2mo)k>pSE@FQ7r00{^NQ$QohL&+)s@dLe`IYe(4}M?m zpLe#C3xdFmVI0jC$8gWPJF58>tBj}76acIAG5F?09HOz7rG|NUEHwjx0K_!st~ zlYmH1osu~H&Jog$?P>3LG#B(dR}oV4Qb{q$s(Xx7!Yv8RPI%{6R+jVo=2%WK zsT}B=&>bx``4Kz&g78#pRUY0;PZuj77{!em02Qq_L77@j(&&4Od3*bl?*gC8RD&|# zIPI;wP;(G7wsj^IeW9x~wM^%;OPMZKqs&PvoXK`jr%|Y?Gl|Y}hsJQZZCgn}6hTFm z>u%Hc0Ib-Z1LX1|~%OQKU{jbvL$>Eq6FV84o# zdK6iTWSrK29&7SivHS{jiUOO?DNFSA%uc>*+M4r+Cen$yIUbdpg7kQ!;vhSr=k8W3 z4HTUO`zK44v3RVOAApGmc~}G3W6w_yNtnN7P>I#7HW;)xNAR2zq>R3Hzp>r*4xpO; zmguCn-hYRi)cD)$#b*%bEuJi&DdxF+z3pe30X4T<3!C8TW94%$M4fO(b8$dVNm8f( z6v4cDmt`LlG94oqkNr*Pa5$MOUAPX@^KZVuQbnKBU+XAGAjpqXa zzi9nVDN9Ws=OZfRc08t3i-CT$4!8$6moXJc@idCzDb;hG9Mu|Bqn^mGt3VPO0`W!4 z`V%^+l(a8)XUXxe=Zqo2CDy zKY=Vr!S!$t-uSzwl;W7HKv&@ECDgvlSe#zV+$uz!5eF2zqN!K;z zQ{vO-!NgIC^s0hX5yU^v-T8EfZd{tV?6wkK?&1d$W*OrV_ku{lzEF}(6x|BLTTsF% zc$X9(5;jlj^G%2LKUZ*~%E{HEZVzN+bVm|)kWUl2-o<}W37b>wEe?(Up67anKiYnG z(Kku2RLAHc;L2KUF%$9qXi=<}t1-^?X{dG=-K$n6jnU^ssATt!MC1?9TWmA?8MbQ1 z^Z5*6f2^q1M7M|rZbJgW-Q^gc`P6>?vE2&CQAKS#wY~em%@Cv zv&=7xNaDJvjUJSR^C<7VbS7GVYJ)R$xe)9*BuWKAUUvO;C>Y@aC^IiWa27aSrcQsQ zqsC)3EJImyjWI|dq*c#i3XM)-R%0&1D2rtaJ@4|?X}EaryyLg{QNy^gS~oo0fFUI{ zyG6NVe6oz1_pKc!m@ZKjc^E`Q)9FPJ`{_o7XN<@gOyvw6RC@(ZDqL>%NF}!aAfN8~ zrqG~}x%gGNe1E2@Q#{k*logbZDD)U2Gcq|od6OLcx!%PPj<##Kmfkv86fgLT8+Dh_ zHwc8oN`rwie2Z4Og28CT{BDz=RNahECxCj>Z?bTr99#628W3y2DiHmY8fWpJLLK7^ z!#!I2lcoXY!X$(5&eXRfLpJ>5{7lObFciQVZli(T3FN2HXh?0K^A#a4HT#$5PFyQD$>i?`;4tB4 zM4KO9A*uyO_?pqYDI**Yu7>d4)y^#@Pxxc{hp+@|ML9s&g-AEJhgx4yr_3f3*hleX zPf~?In?NU`mks2L;oFRi{hstiyGWTX+73!@A+Fw*K9O2Gq_0xA%6!b7(gkPWMdS`C zJ~tBnO$z8&jq8?zT9Yl8w&HZ%JAW?M6xIZ7QJvtslUpaAA>&vh6PNYHq>IU)4)~Od z@5^0IG3!y(`6oW!OAzC_95H_BaXG)f&TF{B|B(ErfEMf*&-^g;QzrCEkF>af4pYte z`g{t9%;f6lXWJ3ymnA0?ofpq4z=S1LS!0hmi=V;k){@oi+*0q{GR~dD?-aH#;H0;9 z#aX1E|9;gYh0iSS$PIIaHpBgr#A~H&=ftg0cL?i zI_nVdTou+g-SJxJ+=TU@48YuEHMOgkiZm_=rselTArVt^7z$B0i|HS1%{x zpZNwPx*<`dobLL_Se`zd#!aGTYVD1>-r0*z$y)w>srX3whcaOs$Z%&k4XwRvvV%xX zd!|&CoGchgg2^EDW$9B1%SE~GD){u`b4c}!;ItrenJ~ylkNARs>8Zo#(z|c; z3ao&kFU0a@{^O`p`v8xLW}MSP zS#hVUR8>UjG{mNixj9)7!BR1^q1eHpSCH|vBII)v-50xr)^-O+DRWpYfio=XlX6&R zDr%kZrY9R^TAo?e_Sd{%Qz#(SnMcksPq$b)^sE{|fht`t0q{g{o#tbD6zx%K@|pv` z>*?8bURRuun8j@BOwdTK>2;Z)nqjBBV1aibn1s2aedFg)7OeN%L*Ls(PX*PhwLPn* z{SMHds&#CK;aJ;53fnmRPLxR!EZ+QWqfle}Shd`#$*BEm1sFQ=JEfXk#glZm<6U8t zQbQ@VncvO1k&d_y<`UkdE(vE?jhs8Zhuh8p!=QP(gLYaC`PpXdk!U z@d|GX<&4Md{O|^{1`+og2HRabu$BOaSPB^$5#&Rx#&`#6a-b-Y+Bg5#H4?)Q18COc zr0|6I-p5LGJE=Qf7p}`xR3>Xq?N@ht;Su#_=+VD-r64VU&o{2fOJp zaK4+}u9|ynt$q1;b#oER?jvJ6m+A|D8tHk7OX%am5R9b%99Dy?^5YFEDx+d&jq{qu zPxUgihb*)ADUzeR=lT<>WRM)e0-tiTm0v8?x)#kV-H-1mo2*w+OX#ZF-kutN$*3OH zfoTk9JIq{i-npjVLz?$yT!6#1J82fP*Qz1IEYoVj6Awe0fo2_iuDB>O-Zp4y0p3vO zE!$w_OpjMorb&l2rZZB#L?*hHhS^6gN7#Gt?Xl1?%8X&`3I*2kW6JKHyR?+j*N`q| zRVVkC{fLtehg zLMSRqJBDrlV>-9t&&~s)=e<*&&D65y9J`(2u^fTtZ@%6OcD-^oZBC#I}vs|uMH1Qs#@Cu!%@cH z%^73CS;e0O-HLWF!C)JVM29`==neDR&V?V$%#C~&QbGf~B+3rU#L-Mvzk>E)n61@= z@96Nb8MG8Ym?rO+j4S$PW|&`zsdf)0ixs`uRMA83#Y_qk?syFot8T(9^m@$%IkfE- zMfV(0hyfDJ+2AKd3r>XaK5t#JnD-;nb6sxqh>`|#fh2iNKzJGU0V)^Bcu;|99WK7J z67D0N$mxJ_6EC)yw zD{Nka3s-A*`(34MHRz^pSuUOTJwF`rDVOWrRIRzgTC63T*?Vkijc-F9>QYb`NlU_l zPN!@k(a~Wq3(oQo-8}Ro$^YUkV>k~*0 zlMKi_6b54eZPSo^fLn^*A4sMZBUJF1*X6cW2)e&x<>ZJ*%@W~xsX4uRg2i71ZUpd{ zkzlN^hS<4ms zQ*T}cWJ-@_TTDdFljIiu24^NaM?-_`=My!|S&(-s$)?Wo&!2W@2vyg`e-4Y_2Z>e8 z)N!GGHWQgG+RsL^wa3MX9X_aOkKXJm-nVl-Z77+hRrY5v+}#HKXc3G^7i=P{kWuKW z`c>nBa70v-Q*UqI!})s6LF2WV*U!CxZ9*Sq))$L5l+{WkXu@{HmMC9b?Qk`Ru1nNS z^t3S!i@Vo+MnTt6cIHH&i_yd4C%APe|41fz#2IY@%k5Qg$xn8o*@o?5R1v2dd`mJ-)@Qa(TQY}q%c2gal-z`3*dcKx(>X0K>C${ zyS28AfH zdwbqHX|qTy;Of5!}%tUf_1qPe4o`>0ma93!WOJsG|{7vQUMi zA;YScg0=ajNPYk_V9pOSP`iu&30?{kYE+`O z(9b8#D*1H0tlJX!T`A*)jOK6S*8XTZy?MQ$7<3)w*K$EAmm=!Sv?HTjsv-nX;bbtV zUfNpl`$Y?#eNRA_Y`Tw}G@lz-!*K<^SMTCUGs53$J78Wcesg#4!J<=%YB3YhX6Br( zB@8mLT!`Rm`^sb+429$T>-_kExExDp*yP=y%F)roWYwQi$_n5!5iI*|^i=gvh2;GplBgy&7VK z3-#X9dkT~d0KxUKZjG$u5`j=|r+l?P8{;X_CXmtOMP4GuAi@AtY;1LT*2Ky{g)fvr zU`%KjJ&|#7IwQOxB(gZuEAx(Rcgj+Qj`&{8z6i9_#6Q``>|H?dvY>W3qr}u`-W(Fo#P@)~lxG}=3KBg{3|kLkQp5nGVC=Ub1MMuP^M4e_L!2#2Fcp?%$fLA8bJ zqwS$&ePlYH;p^i$eSEu}h?fEcvpFueK!B|IT9?IF5bK)R#QTacly@?>=y2Q})!$Ou zy;UNWLbB=b96(peOoz9iFj7y8Fi&nO6 z#>0{^HhCvtRUEfllo1PT9pQT*ylt=(G&JcWMgK^|-O)W6GQ`j9&UCF$c}yfwBPrEm zlbNm-PKL{%SAlil%T7Yd{qp!!%kCbIDz49bG#m66^CN>HSwU??e#(>ViWj~RlS5Vo z*K_2dqYIFCTw{?jFeqe^DH08;%^Pkl8%%}I84FD_`k^YsZ-xl6M{s)4__&`^$obn( zQ=>sAO>T(M4@!6Wl58%&Gu`axn`-!_=Hh-*#f$`(ojTxoGrwM?Y zf*z|J`{N&B&YxXP0KKIzQE}X`wS!Z$Cf^>N#r?H8OTGUVL#>CI;KxZPx`~b$WdwPY zhvw~KNN|z}pBuu%^%40Hs?{k6PIOW$23kBBM8y1+4-1iZl09j3$pUWMc1~EiYU6V7 zeBWJUH`^*_t(wC=GNMC@M=!3IwJrkHwD%!Z^SLAacPrZV`*bwB0?3RQ+>Ch6&eXKq zAO_l+KhY07b>DA{d&mZIYsk0{FSn18Jsxa~O_NhQ}WFS7dUiPIv;A z?h45kzpADG`S5`gYXz7jaUrY^C6(%FjfS%HboUUPhjXGkPzqE$Svayc84h3q7oF*SPb5(;V9P!MPyh>regs~2L<)?RwLA*L z!lM|-Hcr}Z+@C((m@LgZd<;6CZsKXW9cS!Mp(tu(0){QVYI@pE&0cTX%CKN{yQU*~ zExRH6VxFrn5h+hR-MaAm1*$}?-uLTFp$I=N^XOF37n4zMpUWpyflq+R8uh9?lx!NO zPxI3@zUguQV*c|L4&Op<*x*z55I$?BwikD~m%!0%le%ShGp>i}N}J#1_CeXix#57x zqd%fj?gy;%)l{~9RATmTHD`^VF@0_Ypu2<|IPLNySM;>RM21>8Rvae zSy>scnK#sjc)0I;v8cX?EQ(-T$j7J0$IciUUGXV-;G{x^h}$6`8iWapdt&-H2Qpkz4~bIq zdVJ>jT&xr_@3bp;bFz{z$A2$bHK|r*VoJ6HfLc`K%lK<8#{?Y7=J;r(1l^e%N(z<(CB4|$ zTS+=cIer-K!dRXE!?yhQsXhA!C8P1{fA|dkVy&=vcEW>9LOp>cy3!c8y`gn@cmY@` z%n9(ax9^Ib1tW`j8x&U>O&Xhc3f`$hr~PqD!IH7en2w9?R3oB#0jhztc!)F zi1aa_q26)^{MlIz=UMl=a%O;eScXM@ouj%Uh~y@f;^6_jBFpFTw1px)D8j=&0Rb1A#iGixIRR&RhPcNK;pZZ)bjPFF zz41k%{qV-ZDypI!+`a6B^HDuzgz}0oL{yzy>#2Yky^q zq9N7~h3H|7DMlmrcIi_#fQ5mLm1&|>3!T64p;HJF&@qSBK_ zD7zwzjeev#oW_+q6hDwyNMzO{G+$*wYd|>8-;7)S!?hUKc=?(xNkH!W^lYW&r6O>N z44?}%(vOfMVbRdx8IOKtsdzqVDRf$C-rU#_!RU^}iJkX+LKp@5z2y2t+|J%a72V&X zJ=|_m$d}e?Wg&gv$^rp;hotI0tEtBKhZV1~$}0rfHgt*)vk`eW7H-@Za`{=jS8)>mK{K{?o7esCzV^bENC_j%(NQ+uOx&aB$ zk^-#4lKM|l8be%3zjRqB&AWS)b|2|3*ki3=L}wFwSl@VAMzIwsD-IZ|N#C#MO51OA zzmd|`8$Y&;-~ljv)BYstADc_RaoCGlQ+HzlmU!Hp7hn%EMmEh`nTUW&w>~rx=255F zB1H8uEt66fe}ep)Fww_@N#=Rw<*-Q6I_Uy4@7Mo*;d_}+7w zz;kA7kKE`g3B#vXl*E6GhVWYP{2abc+N)`^VENPuwnis~h4ELT{>@SUec{!KK{C`K z4o)r7>Ac4Zo*#?IJ>W89V!tCQ@^Wp=1$Yx-tAUR<)WC0D)IS%E%#oYF>-|+vlKTfW0yE0IZTE_X%nmZf zw2vQxJOBz88V#i=1$xxA-Dr8Svjn7ZJ1Dr9zVX`nZ0lr~uiq0frf$_D3n|3oFo!st zj%DdfGyqe+0RgU>uM|`V?nM4VzpNgTg!t1+FdD1zu?8NX8=WfEOzlr(ki(yTvG_U4 zO1YC69oUKrNENX%>}uLg$Tia43^cVGoqa+plW7MnbsKnW#!upSi9ob z;{|+Nlv)NS(z)W5p~wd18kC# z7-lr6wfo{A;_9o@d}3n59C>KmJ^AdQD4ArHgP)ktkX4=Ol-o?suY;?)1gQIvO<<=E zt9SI6Hwd_FLCJwNs6>nTKO|5l0MU;rK%$syI2g^NA4=m1(sDUs>+|!f9hsZNgvRgx zQt-~Dh_j$0v&~QJ;B>4*f_433WbZUfq=x@nA7geJHm%k-S3nB55`jn2IsKi_?ay6Z z)3EEs@DLAc%Hdg@TVhOW&!h{Q?%mcZbq}y^;ySO;cX|9{4pxP5a`!Mn%g`d)BAfOO z4iKM|g5q>fFc>uQQ?fvvFwhq*$HmALyJ=b3F8?cP2*3o)MJ{rl3;wGuJ_G3smAfY^7FG$!QgGY6JdwhRe3sA;yoP$q0JI^8hLC` zUwK7N@IotZJgqvzliyz9xZz&A%K=wG#DhmlXD5MsycqeZLDQBEp4!NQB?_Z;+7OAA z?J6`JF(_SIw1iC{3*5Tp4IxZ+rfuKu+v4(;(ByAnbGC~#KzF+1z1H`&gw4>#5`$2X zMe)cHan}(GafxWO1}x%-^Kf3jrZPOIMyT^r<4{u)`|T?hI$DTP&Mw;QfKX+I9W(M9 z9Bon($=P3!yA@woD}w=ov8#-1|LQ)F{H_#HY*3ddI5d==)CU_E$i1=LVn(V==YC=} zolUF9rAjqhH9z+o^tcjFEt26w&G>oPt4=oAJw%vCS5GkiuW0y}ZKDdR(rdBRSI{OI z0llj+YddD8Y)#Cwh4>VuDND_RRtr~9$JAVSq=~8``f5&Q&Drn~00OoTAH3UgUU8Zu zCNbqjUS6}PAF)Ax*J0#8fdd7a$t)lNvnB@uSr+UDjEM#j@48Xr^^*%@KRt*L!0GOd z=h}y`t*#4$L#__zDp}WRS9T*;yduNi|9=AZzeob%P^{aeq}!{0hg6gf;+1k02-$?_ z2WwS+qM}fp`#0|VJcWQdGZU|eBBw+ zOIs-OWd}_H3OGVnk5zho*B+ok#`C}uox?V(V-IVdXlG;y9pQl1eqvwd?h zy2+YY5V+vSnBLln)h487T`z9)1~!}s!05*Fq#1Z|pX4gJK|d`pmB9qQJwd!2Rlud*5)$_G$ekhi|$_W#cllM}-UHvaO~sZ@9jF>U~q zJNoG0b+(KLrF9z>VR#Ymqytw09KJZ4s2?#gXi(4#0V6k6tT=^vutGrvO=abK2Z_+h z3e0c~HB^{BZqJ^Lwv_X&ja?9kXyCWzG2!8%r6o;Yq1MJJM~p~i95vPd-!v{4@~M+A zSnC2&Zm=y53(xMuU~U}C(L6UW^JUrQnb7dvLmq7>n)c^E%kBuO^NE8MLby==M|%F> zmjF-}`%vNg+%PXvSt0zONqXPjla^A!pF9IU{2<8x5i8MV9QiLY)TZ6N}gTu^)$%3oL3(AR4C}6Ret{W zgCc*eV2?T9A1a&)WOZ$On=(T1*O$s^6G;B&|8z9|O+1#=1zk!#MDY^XvzNa5J+UjX zCY8MVo=<;jFs{@9{=9!%ws4UUKE%>kO+XCco@ey_zpsUVzZBH4KF2b{ zT>VK<+OFU*DDZb&K5DmA-pz!i^he^QA3Uh5CYlskXss@%rSad-8HHR8+gy<9uspPF z>QJot8h5Y~Ru4AYHq+n(C3h8nZsbDX$RVOSIyxY(d@BZp(fX;}e}C0~zJHY&M$Uzo zGO2nV`SM2|{Qa!)|6}VNqw8+FckQsT)mV+)*tQxpX>8lJ?PSHa8r!zb#0kun*~sA!zN_6-VBH@C3HcmY9286# znn=0s4k`@KD-{hK;x_*1hxY z=ayS8;wbr1(F_yC3QaTwqBVu@0x1v5Yf4pnM0)8uVPDWHMR+tljl~PZ}2VqGex1+SpU4)r1R z+F1rUds@OuIojyMTT4gmWv=I)!+j?X@xX-te@%^l-)Npx=sgEG`AK}Fhe(XCI7zH3 zR|6Ki%Ne*POQM^~z}oT@W^Pi61r%&D+W=hUQlsj(Fx4C z7v>&X+~tZwsm#We5A`)n00vW9RZPW89?!SB6uZhcj_xKL>JN^BZJiSAgX>O7tjey^ zQY76FxY$LBsED`ybdf;gSD= z%w>BlQA>IV43EjG>;h+RN4{_YMbYlQr!;WM|9lPtBG3ipFZ2n97{flh+~~H?TcKqG zR(uKGf-X}tq?Qzz@g~uuiH$eudvPr+&o-|-)jKZH}~jPoY? zFlS1-hNc0P31&;>7SR3LBWDA{6i)7|9@jbZ9d?(-U%xdX>ChX!7b6u94xG%!;EOH4 zJQb|q&X;Q9QoqXbmT5F|dCi=FkH*uZJ@dDV?|wWdc(1YuzV!YYs>&=tU5U7IU{!dP z^y-UbDm_I~Cewj*w;r@jo4@yv8t`d=QzebmGIFeAbh7j1TDVaqacLytblZh@dNx3Q zE_%q_4=9>TvGC3bTPvOkO}Rlt@y$sp>a88@zj8Mera#*2}*4G~AE- z)F1YOQm2%o-PT69b`lPR`w9cQ^4 z>S8{=5axF;ywD}S{efceb66=@_Luzh-lwsI#x1B&wR3LSUEkn!{r#N}i}NX=qT|V+ z+Kbbeq0&Sn;l{&fvp4IivopoSMq41P36;R@iyUgUW669djEF=B39C^R{#Zl&?#>GA z+KEK)KXSaD6}Z~ZZ#;4r@uRJDUVj`$%j?eoIRg9^wIYXmB<8MN9Z7!dU| zKHp!hp40xexZyyb00C6x%w6_sC+*Um@<_FU7;jI+&x9I+s;cdB65?d37G1)Ra#cl8 zhfShCSuHuy93Ma4!)F%=az74xN%F=2_laBZ6(SA2T0A|NJ`Y}|weVVoG|h0RIvX{r zxdb!JUD&vbYyq*OL6YU7Q|-|KVC+MCkG`lWo z0x*GY!i}CW@ozfc&-rq4U9KmMPMDnld&as^oVwfRe+E|Fez_m0oVm{y0FT>m?7#%L^nNB^Tz@r9d0YcjAK1f(7*m`3jOUHUpU}!>G8rw5 zk07Lw&&mNZp<-OGWlk0ffI!Ka@s+w#&Er`^&#RW@Bo!qHMHaAW8R4rCXs_{_MY_G- zNE0fIPg4nFNY8SZEucm3TLl~d6Psrh2v4-IeE%*sr1 z;Gs$M4D^K+(Si~S5!B0S>tE0zv`*X39xTtyvywZs1I^6uZC>0~8?8xVKCg7|e8(;~ zS64YN2sl4p?mUHgY<=Ay&dg3*6v^8tM*AP zp)Sfi>PO&6pmeTyjN{1V!yoc5GVZtyI1Ko{2!w1T+I_4wNZ*8Xy_7`;Tsxm{NKYYr zrF?z?7WNci!248Md2x6U`hZXhiQcmK)r4)Pp@C5Hr~KBBuDE0A#{9Q;wja4E(F#?F z2_w9+Ac1`B$L#pV0b{oLYiqf0Jy7zEzoKQ5HY3=DZQtX{a?b);r_ zLKe55(A7!eA4LWgeo$0N`GIFBl9(b}LEI^O9C)zx#`G`sPax}vFQU|M218P zeMjU%r!drNyBl-VE|fe^K}WZ7QwS1aE(0H-Akc%7&%Wgyaf3yvi>n0e{&^B@$2Gu1 zYHwhhEtPIx=IeS%>9n)%n;N0Oxjf3Iux)bEC_WtIAOBhKa=Z>QDKqD)-YQ;&awqi__;O|tA-crT`!ef0ar0Lv0< zjaEi)i&OPsvh1@D*cW3I!e7j%b8_)iD^;{!E~c66{aeK<)m1v=GWB^wo{os1E4!>fUS5=UUSES2qGib7{m&krQ-Htg}++5gAc} zccopbkR`f}LKdMFpyCm{kBc7gNF9E;+d35p_wsMh-0~AKxG<#kT4|y{RQYDNG~vMK zXUV(dJs7D^SH8ORPvQFuubbQ;I;^?cr^g075^SXG9+@7td`GIx2PQc%K%5`T!L|zm z1pd4pnvy_ck4r}R$L`r74t^fJO=tUEPY59@LmF@!l@t(zQVfLo%mC>=K-ZGdDo|!t zcSpQfb-GntjlR+D7VyH)?i-FtCpGkxi;k-B3>*O-Q7v}AI@}n(oGC?QaQr)nNk2bG zYJ7USPtg%6M=~>=5bS)}ftz_sXYvBVjy5w0*4r5VIS#PEtj+3_Vtrg$y@sys8?hPG zh)xK!d3A5u50z$Nmu-uEU@$oFD9A+)$3*eJD)8UP&^y3o-=;zD4F-t!m9s(G z#uGIPr$f^RN^7OYJ=AwUPmy5wwn$P!vmI0kHw1u3b&+f_ZQX)V$kObb+t^(4+~TEt ztp2A4s}yvd&6=kaU=DcgiKa8$FojJo#Rrr_uUbvJzIyjHOQheWe|)FIX8b8*rGVnS z-}-@lvh{qGWPs|aKe;(DJGChdMOJ(I<~2rgt_lY%z=@7YiT3d74{2)%%1|v8tIOLv1EeSYJ(nK*s2rlCnO(npl-(t!qLO|nqsH3(@{D=)bfGr>G|+@ic0C|ES0(5 z`dt0xxR?+|1lZw>U54(ixZiseHNqj_YoT&U;jF-a#Lax~Kq;Km(7L%rTE;O>(@uqB zrfOoBAwc}Df-QtigOsOy;mjxabY3F0POLlJcyt%a=6x1{_;C~;0l<=HO0}_E9W>;r zZ*c{>tZN*Kk>|Yi*CrPlxXTY|85(bA9{zpUU?M;$X@@9;@Wf@T2BzK!m_bz>MH(10 zKex(kVAA6@l|tfUT-=$?+YfyD497a3u-lRZf;FY3fZPfHi=oT#M=Ni_9VN2=#1!yKU0cy@3?W4>Y`xRHDZ&JS3i4%2DT zr?erpd-xG(ugVg1LKaK}NOK=wcbq!zwDsyW{_fAXU${uEVKgdZi@Z4d2#|~MN~0e? z!`p8L;2xCh;DA-7m1t);B}aSXu(`8>iT5|admWQq7joKsc=}JVJe>xrot-qCmKc?* z=mnQ+cW}|Eb!H$EaFTp*iTgZi0qh;FR!?n^J)QCh8WA+u&{l=E33T_ zQThOx#is8?vX0wVdZ}aZi0FwxQVO~#HBsUAD^al^Xyz8jH5}ZDg5xmF&CGq{y7{c{4ruWLe!$N~fWyHH_iWPM6;4kaFR$#!YJ5&<4LM!mA?oNw zszv5NBz*5fng>!mU+nv_{+w6@lOU@?Lujvw6Rc3r=C`4UU!Z3@JXz zi>J`>6FtgT6~Y^}G95pBeW4D%?(qcd2%dm*l&!nv%^u<9Wbr1W&?Q93?*pim1yov!>LK7{K`#^e${ zo&ru5s)T{;`hwEITSFp}ZPzwl&H6%Bc6olc$vqli+yclW)+LzA?iwUp`~ zezH!&K9RjYd-wQ13tAg2!h-8&0BjzPv7{b|YCv!mXF*rRO0C*Z24UQI8ZUd~EBLlb zyWvP^*;vN=+dHMkqUC(4gGpMCUnmh!0#s1{rU<+BX`xb`%XxdK5Jw_f0KXOSBuCwo zwjGf|mv8=)TDlX+0#@5yyX-W0?eKNKbm)dP-RfhYfpFthWA<8G^f7(DF^VrH{I7HX z%CAkZl(NI)S5VZrOfTheyyv8z&;&~Yn*Ah0#-@?bgxHV*L_9y3wd;=_BuCY}m2Z3Y zvW_auMV!$QrjEp2lYAl*$)xj-pYO0?gf-ESYAdpKImP15I2@rs%jE;U8WITb``UD!Lxws_p z?>Hv`;&Bxul-mG&cp|}ABF>Ot>!XYXh z*{JLA-FOrRvlfYV17k9s?}_0LUZPM~6R~-3R%0B?eM<8??cAkv_hXcWLu8JI&kTV8 zVaUXRVwYlPw5;Oz{B%m6)3(G#pD#}B)-Xv}1P!f+&r|?i%dh!ThR{T)mru$a`m-2!-_X3VqMHR?`j?D$2NitCw}~Ea zdEioq(kxBWNBmr`G(Z$bW1SU=yRinZQ7y9cG?7+%{7?bVZvzZ{Xyc%*aDbp3tU-p- z$ha6t+TM;|8vW{Fv74T9V#uCgwLuMgQqrmYd#3xZkLUTv?CTOH567~PSC_;P3jG~v z0Z?kEue9E&ju=pMz4zVM5wLKOr^I;uy{1t*-!D*)g}eT3m*F6RO{cDD{qa~a6x-x2 zoB!ri4$T1#(aP|kqRw!dAq8waq#=X-ybnKp*wgPwgK}E)n(zp~2EK2v7qzPeV`F2- zD<&VR{`BiZ2S0o~¥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 diff --git a/0.10.0/assets/images/favicon.png b/0.10.0/assets/images/favicon.png deleted file mode 100644 index ca869960653c0d13951e3b5010aaff58f076fb58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 658 zcmV;D0&V??P)O*9DVjOJbK_G(fme?fyc3tz z!zM5C^xlD|!ot1>!nD6IFfcGMk!k@x;J*2R5&x@)i*Q-az`(%pMq0^1_{ZN=7@ukm zaNqpENbKRgRqw^+bO@* z;Iis2zrx)MXC7;tt5C~w1_lz!0iic9w^G}3q8;F|`N;y-AD^wMZ8^~npd}#60XuwU z5`J^=9vv_TFfcGMyb}@kmc4rN4z(RH;MtI*G_ci2>iRQP9Y3kNm!DF@a;{JBe~_FA zxBDxcf2N{I6-RJ?es_n<_s1z$aR@`;0Q1p@;Wi{hQW3g=$QD}@QZd~}77+TUzk zeS3oC?@`qOFh_h8laCX6`S=npH6l;%9eB&ZJR8QRdS$fTU;6xeF_~D=$9K-4%ZWX@ s_4193VmYi=#K15JI;RW_1Kd3a0H10jYRu8s3;+NC07*qoM6N<$f)YhGivR!s diff --git a/0.10.0/assets/images/logo.png b/0.10.0/assets/images/logo.png deleted file mode 100644 index a84a1b5ebd7796715a70e0ba032a451f685496ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5690 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 _i=Object.create;var br=Object.defineProperty;var Ai=Object.getOwnPropertyDescriptor;var Ci=Object.getOwnPropertyNames,Ft=Object.getOwnPropertySymbols,ki=Object.getPrototypeOf,vr=Object.prototype.hasOwnProperty,eo=Object.prototype.propertyIsEnumerable;var Zr=(e,t,r)=>t in e?br(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,F=(e,t)=>{for(var r in t||(t={}))vr.call(t,r)&&Zr(e,r,t[r]);if(Ft)for(var r of Ft(t))eo.call(t,r)&&Zr(e,r,t[r]);return e};var to=(e,t)=>{var r={};for(var o in e)vr.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&Ft)for(var o of Ft(e))t.indexOf(o)<0&&eo.call(e,o)&&(r[o]=e[o]);return r};var gr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Hi=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Ci(t))!vr.call(e,n)&&n!==r&&br(e,n,{get:()=>t[n],enumerable:!(o=Ai(t,n))||o.enumerable});return e};var jt=(e,t,r)=>(r=e!=null?_i(ki(e)):{},Hi(t||!e||!e.__esModule?br(r,"default",{value:e,enumerable:!0}):r,e));var ro=(e,t,r)=>new Promise((o,n)=>{var i=c=>{try{a(r.next(c))}catch(p){n(p)}},s=c=>{try{a(r.throw(c))}catch(p){n(p)}},a=c=>c.done?o(c.value):Promise.resolve(c.value).then(i,s);a((r=r.apply(e,t)).next())});var no=gr((xr,oo)=>{(function(e,t){typeof xr=="object"&&typeof oo!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(xr,function(){"use strict";function e(r){var o=!0,n=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(C){return!!(C&&C!==document&&C.nodeName!=="HTML"&&C.nodeName!=="BODY"&&"classList"in C&&"contains"in C.classList)}function c(C){var ct=C.type,Ne=C.tagName;return!!(Ne==="INPUT"&&s[ct]&&!C.readOnly||Ne==="TEXTAREA"&&!C.readOnly||C.isContentEditable)}function p(C){C.classList.contains("focus-visible")||(C.classList.add("focus-visible"),C.setAttribute("data-focus-visible-added",""))}function l(C){C.hasAttribute("data-focus-visible-added")&&(C.classList.remove("focus-visible"),C.removeAttribute("data-focus-visible-added"))}function f(C){C.metaKey||C.altKey||C.ctrlKey||(a(r.activeElement)&&p(r.activeElement),o=!0)}function u(C){o=!1}function h(C){a(C.target)&&(o||c(C.target))&&p(C.target)}function w(C){a(C.target)&&(C.target.classList.contains("focus-visible")||C.target.hasAttribute("data-focus-visible-added"))&&(n=!0,window.clearTimeout(i),i=window.setTimeout(function(){n=!1},100),l(C.target))}function A(C){document.visibilityState==="hidden"&&(n&&(o=!0),Z())}function Z(){document.addEventListener("mousemove",J),document.addEventListener("mousedown",J),document.addEventListener("mouseup",J),document.addEventListener("pointermove",J),document.addEventListener("pointerdown",J),document.addEventListener("pointerup",J),document.addEventListener("touchmove",J),document.addEventListener("touchstart",J),document.addEventListener("touchend",J)}function te(){document.removeEventListener("mousemove",J),document.removeEventListener("mousedown",J),document.removeEventListener("mouseup",J),document.removeEventListener("pointermove",J),document.removeEventListener("pointerdown",J),document.removeEventListener("pointerup",J),document.removeEventListener("touchmove",J),document.removeEventListener("touchstart",J),document.removeEventListener("touchend",J)}function J(C){C.target.nodeName&&C.target.nodeName.toLowerCase()==="html"||(o=!1,te())}document.addEventListener("keydown",f,!0),document.addEventListener("mousedown",u,!0),document.addEventListener("pointerdown",u,!0),document.addEventListener("touchstart",u,!0),document.addEventListener("visibilitychange",A,!0),Z(),r.addEventListener("focus",h,!0),r.addEventListener("blur",w,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var zr=gr((kt,Vr)=>{/*! - * clipboard.js v2.0.11 - * https://clipboardjs.com/ - * - * Licensed MIT © Zeno Rocha - */(function(t,r){typeof kt=="object"&&typeof Vr=="object"?Vr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof kt=="object"?kt.ClipboardJS=r():t.ClipboardJS=r()})(kt,function(){return function(){var e={686:function(o,n,i){"use strict";i.d(n,{default:function(){return Li}});var s=i(279),a=i.n(s),c=i(370),p=i.n(c),l=i(817),f=i.n(l);function u(D){try{return document.execCommand(D)}catch(M){return!1}}var h=function(M){var O=f()(M);return u("cut"),O},w=h;function A(D){var M=document.documentElement.getAttribute("dir")==="rtl",O=document.createElement("textarea");O.style.fontSize="12pt",O.style.border="0",O.style.padding="0",O.style.margin="0",O.style.position="absolute",O.style[M?"right":"left"]="-9999px";var I=window.pageYOffset||document.documentElement.scrollTop;return O.style.top="".concat(I,"px"),O.setAttribute("readonly",""),O.value=D,O}var Z=function(M,O){var I=A(M);O.container.appendChild(I);var W=f()(I);return u("copy"),I.remove(),W},te=function(M){var O=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},I="";return typeof M=="string"?I=Z(M,O):M instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(M==null?void 0:M.type)?I=Z(M.value,O):(I=f()(M),u("copy")),I},J=te;function C(D){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?C=function(O){return typeof O}:C=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},C(D)}var ct=function(){var M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},O=M.action,I=O===void 0?"copy":O,W=M.container,K=M.target,Ce=M.text;if(I!=="copy"&&I!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(K!==void 0)if(K&&C(K)==="object"&&K.nodeType===1){if(I==="copy"&&K.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(I==="cut"&&(K.hasAttribute("readonly")||K.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Ce)return J(Ce,{container:W});if(K)return I==="cut"?w(K):J(K,{container:W})},Ne=ct;function Pe(D){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Pe=function(O){return typeof O}:Pe=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},Pe(D)}function xi(D,M){if(!(D instanceof M))throw new TypeError("Cannot call a class as a function")}function Xr(D,M){for(var O=0;O0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof W.action=="function"?W.action:this.defaultAction,this.target=typeof W.target=="function"?W.target:this.defaultTarget,this.text=typeof W.text=="function"?W.text:this.defaultText,this.container=Pe(W.container)==="object"?W.container:document.body}},{key:"listenClick",value:function(W){var K=this;this.listener=p()(W,"click",function(Ce){return K.onClick(Ce)})}},{key:"onClick",value:function(W){var K=W.delegateTarget||W.currentTarget,Ce=this.action(K)||"copy",It=Ne({action:Ce,container:this.container,target:this.target(K),text:this.text(K)});this.emit(It?"success":"error",{action:Ce,text:It,trigger:K,clearSelection:function(){K&&K.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(W){return hr("action",W)}},{key:"defaultTarget",value:function(W){var K=hr("target",W);if(K)return document.querySelector(K)}},{key:"defaultText",value:function(W){return hr("text",W)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(W){var K=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return J(W,K)}},{key:"cut",value:function(W){return w(W)}},{key:"isSupported",value:function(){var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],K=typeof W=="string"?[W]:W,Ce=!!document.queryCommandSupported;return K.forEach(function(It){Ce=Ce&&!!document.queryCommandSupported(It)}),Ce}}]),O}(a()),Li=Mi},828:function(o){var n=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,c){for(;a&&a.nodeType!==n;){if(typeof a.matches=="function"&&a.matches(c))return a;a=a.parentNode}}o.exports=s},438:function(o,n,i){var s=i(828);function a(l,f,u,h,w){var A=p.apply(this,arguments);return l.addEventListener(u,A,w),{destroy:function(){l.removeEventListener(u,A,w)}}}function c(l,f,u,h,w){return typeof l.addEventListener=="function"?a.apply(null,arguments):typeof u=="function"?a.bind(null,document).apply(null,arguments):(typeof l=="string"&&(l=document.querySelectorAll(l)),Array.prototype.map.call(l,function(A){return a(A,f,u,h,w)}))}function p(l,f,u,h){return function(w){w.delegateTarget=s(w.target,f),w.delegateTarget&&h.call(l,w)}}o.exports=c},879:function(o,n){n.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},n.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||n.node(i[0]))},n.string=function(i){return typeof i=="string"||i instanceof String},n.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(o,n,i){var s=i(879),a=i(438);function c(u,h,w){if(!u&&!h&&!w)throw new Error("Missing required arguments");if(!s.string(h))throw new TypeError("Second argument must be a String");if(!s.fn(w))throw new TypeError("Third argument must be a Function");if(s.node(u))return p(u,h,w);if(s.nodeList(u))return l(u,h,w);if(s.string(u))return f(u,h,w);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function p(u,h,w){return u.addEventListener(h,w),{destroy:function(){u.removeEventListener(h,w)}}}function l(u,h,w){return Array.prototype.forEach.call(u,function(A){A.addEventListener(h,w)}),{destroy:function(){Array.prototype.forEach.call(u,function(A){A.removeEventListener(h,w)})}}}function f(u,h,w){return a(document.body,u,h,w)}o.exports=c},817:function(o){function n(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var c=window.getSelection(),p=document.createRange();p.selectNodeContents(i),c.removeAllRanges(),c.addRange(p),s=c.toString()}return s}o.exports=n},279:function(o){function n(){}n.prototype={on:function(i,s,a){var c=this.e||(this.e={});return(c[i]||(c[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var c=this;function p(){c.off(i,p),s.apply(a,arguments)}return p._=s,this.on(i,p,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),c=0,p=a.length;for(c;c{"use strict";/*! - * escape-html - * Copyright(c) 2012-2013 TJ Holowaychuk - * Copyright(c) 2015 Andreas Lubbe - * Copyright(c) 2015 Tiancheng "Timothy" Gu - * MIT Licensed - */var Va=/["'&<>]/;qn.exports=za;function za(e){var t=""+e,r=Va.exec(t);if(!r)return t;var o,n="",i=0,s=0;for(i=r.index;i0&&i[i.length-1])&&(p[0]===6||p[0]===2)){r=0;continue}if(p[0]===3&&(!i||p[1]>i[0]&&p[1]=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function V(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var o=r.call(e),n,i=[],s;try{for(;(t===void 0||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(a){s={error:a}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(s)throw s.error}}return i}function z(e,t,r){if(r||arguments.length===2)for(var o=0,n=t.length,i;o1||a(u,h)})})}function a(u,h){try{c(o[u](h))}catch(w){f(i[0][3],w)}}function c(u){u.value instanceof ot?Promise.resolve(u.value.v).then(p,l):f(i[0][2],u)}function p(u){a("next",u)}function l(u){a("throw",u)}function f(u,h){u(h),i.shift(),i.length&&a(i[0][0],i[0][1])}}function so(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof ue=="function"?ue(e):e[Symbol.iterator](),r={},o("next"),o("throw"),o("return"),r[Symbol.asyncIterator]=function(){return this},r);function o(i){r[i]=e[i]&&function(s){return new Promise(function(a,c){s=e[i](s),n(a,c,s.done,s.value)})}}function n(i,s,a,c){Promise.resolve(c).then(function(p){i({value:p,done:a})},s)}}function k(e){return typeof e=="function"}function pt(e){var t=function(o){Error.call(o),o.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var Wt=pt(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: -`+r.map(function(o,n){return n+1+") "+o.toString()}).join(` - `):"",this.name="UnsubscriptionError",this.errors=r}});function Ve(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ie=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,o,n,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=ue(s),c=a.next();!c.done;c=a.next()){var p=c.value;p.remove(this)}}catch(A){t={error:A}}finally{try{c&&!c.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var l=this.initialTeardown;if(k(l))try{l()}catch(A){i=A instanceof Wt?A.errors:[A]}var f=this._finalizers;if(f){this._finalizers=null;try{for(var u=ue(f),h=u.next();!h.done;h=u.next()){var w=h.value;try{co(w)}catch(A){i=i!=null?i:[],A instanceof Wt?i=z(z([],V(i)),V(A.errors)):i.push(A)}}}catch(A){o={error:A}}finally{try{h&&!h.done&&(n=u.return)&&n.call(u)}finally{if(o)throw o.error}}}if(i)throw new Wt(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)co(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Ve(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Ve(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Er=Ie.EMPTY;function Dt(e){return e instanceof Ie||e&&"closed"in e&&k(e.remove)&&k(e.add)&&k(e.unsubscribe)}function co(e){k(e)?e():e.unsubscribe()}var ke={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var lt={setTimeout:function(e,t){for(var r=[],o=2;o0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var o=this,n=this,i=n.hasError,s=n.isStopped,a=n.observers;return i||s?Er:(this.currentObservers=null,a.push(r),new Ie(function(){o.currentObservers=null,Ve(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var o=this,n=o.hasError,i=o.thrownError,s=o.isStopped;n?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new j;return r.source=this,r},t.create=function(r,o){return new vo(r,o)},t}(j);var vo=function(e){se(t,e);function t(r,o){var n=e.call(this)||this;return n.destination=r,n.source=o,n}return t.prototype.next=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.next)===null||n===void 0||n.call(o,r)},t.prototype.error=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.error)===null||n===void 0||n.call(o,r)},t.prototype.complete=function(){var r,o;(o=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||o===void 0||o.call(r)},t.prototype._subscribe=function(r){var o,n;return(n=(o=this.source)===null||o===void 0?void 0:o.subscribe(r))!==null&&n!==void 0?n:Er},t}(v);var St={now:function(){return(St.delegate||Date).now()},delegate:void 0};var Ot=function(e){se(t,e);function t(r,o,n){r===void 0&&(r=1/0),o===void 0&&(o=1/0),n===void 0&&(n=St);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=o,i._timestampProvider=n,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=o===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,o),i}return t.prototype.next=function(r){var o=this,n=o.isStopped,i=o._buffer,s=o._infiniteTimeWindow,a=o._timestampProvider,c=o._windowTime;n||(i.push(r),!s&&i.push(a.now()+c)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var o=this._innerSubscribe(r),n=this,i=n._infiniteTimeWindow,s=n._buffer,a=s.slice(),c=0;c0?e.prototype.requestAsyncId.call(this,r,o,n):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,o,n){var i;if(n===void 0&&(n=0),n!=null?n>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,o,n);var s=r.actions;o!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==o&&(ut.cancelAnimationFrame(o),r._scheduled=void 0)},t}(zt);var yo=function(e){se(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var o=this._scheduled;this._scheduled=void 0;var n=this.actions,i;r=r||n.shift();do if(i=r.execute(r.state,r.delay))break;while((r=n[0])&&r.id===o&&n.shift());if(this._active=!1,i){for(;(r=n[0])&&r.id===o&&n.shift();)r.unsubscribe();throw i}},t}(qt);var de=new yo(xo);var L=new j(function(e){return e.complete()});function Kt(e){return e&&k(e.schedule)}function _r(e){return e[e.length-1]}function Je(e){return k(_r(e))?e.pop():void 0}function Ae(e){return Kt(_r(e))?e.pop():void 0}function Qt(e,t){return typeof _r(e)=="number"?e.pop():t}var dt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Yt(e){return k(e==null?void 0:e.then)}function Bt(e){return k(e[ft])}function Gt(e){return Symbol.asyncIterator&&k(e==null?void 0:e[Symbol.asyncIterator])}function Jt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Di(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Xt=Di();function Zt(e){return k(e==null?void 0:e[Xt])}function er(e){return ao(this,arguments,function(){var r,o,n,i;return Ut(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,ot(r.read())];case 3:return o=s.sent(),n=o.value,i=o.done,i?[4,ot(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,ot(n)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function tr(e){return k(e==null?void 0:e.getReader)}function N(e){if(e instanceof j)return e;if(e!=null){if(Bt(e))return Ni(e);if(dt(e))return Vi(e);if(Yt(e))return zi(e);if(Gt(e))return Eo(e);if(Zt(e))return qi(e);if(tr(e))return Ki(e)}throw Jt(e)}function Ni(e){return new j(function(t){var r=e[ft]();if(k(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Vi(e){return new j(function(t){for(var r=0;r=2;return function(o){return o.pipe(e?g(function(n,i){return e(n,i,o)}):ce,ye(1),r?Qe(t):jo(function(){return new or}))}}function $r(e){return e<=0?function(){return L}:x(function(t,r){var o=[];t.subscribe(S(r,function(n){o.push(n),e=2,!0))}function le(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new v}:t,o=e.resetOnError,n=o===void 0?!0:o,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,c=a===void 0?!0:a;return function(p){var l,f,u,h=0,w=!1,A=!1,Z=function(){f==null||f.unsubscribe(),f=void 0},te=function(){Z(),l=u=void 0,w=A=!1},J=function(){var C=l;te(),C==null||C.unsubscribe()};return x(function(C,ct){h++,!A&&!w&&Z();var Ne=u=u!=null?u:r();ct.add(function(){h--,h===0&&!A&&!w&&(f=Pr(J,c))}),Ne.subscribe(ct),!l&&h>0&&(l=new it({next:function(Pe){return Ne.next(Pe)},error:function(Pe){A=!0,Z(),f=Pr(te,n,Pe),Ne.error(Pe)},complete:function(){w=!0,Z(),f=Pr(te,s),Ne.complete()}}),N(C).subscribe(l))})(p)}}function Pr(e,t){for(var r=[],o=2;oe.next(document)),e}function R(e,t=document){return Array.from(t.querySelectorAll(e))}function P(e,t=document){let r=me(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function me(e,t=document){return t.querySelector(e)||void 0}function Re(){var e,t,r,o;return(o=(r=(t=(e=document.activeElement)==null?void 0:e.shadowRoot)==null?void 0:t.activeElement)!=null?r:document.activeElement)!=null?o:void 0}var la=T(d(document.body,"focusin"),d(document.body,"focusout")).pipe(be(1),q(void 0),m(()=>Re()||document.body),B(1));function vt(e){return la.pipe(m(t=>e.contains(t)),Y())}function Vo(e,t){return T(d(e,"mouseenter").pipe(m(()=>!0)),d(e,"mouseleave").pipe(m(()=>!1))).pipe(t?be(t):ce,q(!1))}function Ue(e){return{x:e.offsetLeft,y:e.offsetTop}}function zo(e){return T(d(window,"load"),d(window,"resize")).pipe(Me(0,de),m(()=>Ue(e)),q(Ue(e)))}function ir(e){return{x:e.scrollLeft,y:e.scrollTop}}function et(e){return T(d(e,"scroll"),d(window,"resize")).pipe(Me(0,de),m(()=>ir(e)),q(ir(e)))}function qo(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)qo(e,r)}function E(e,t,...r){let o=document.createElement(e);if(t)for(let n of Object.keys(t))typeof t[n]!="undefined"&&(typeof t[n]!="boolean"?o.setAttribute(n,t[n]):o.setAttribute(n,""));for(let n of r)qo(o,n);return o}function ar(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function gt(e){let t=E("script",{src:e});return H(()=>(document.head.appendChild(t),T(d(t,"load"),d(t,"error").pipe(b(()=>Ar(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(m(()=>{}),_(()=>document.head.removeChild(t)),ye(1))))}var Ko=new v,ma=H(()=>typeof ResizeObserver=="undefined"?gt("https://unpkg.com/resize-observer-polyfill"):$(void 0)).pipe(m(()=>new ResizeObserver(e=>{for(let t of e)Ko.next(t)})),b(e=>T(qe,$(e)).pipe(_(()=>e.disconnect()))),B(1));function pe(e){return{width:e.offsetWidth,height:e.offsetHeight}}function Ee(e){return ma.pipe(y(t=>t.observe(e)),b(t=>Ko.pipe(g(({target:r})=>r===e),_(()=>t.unobserve(e)),m(()=>pe(e)))),q(pe(e)))}function xt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function sr(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var Qo=new v,fa=H(()=>$(new IntersectionObserver(e=>{for(let t of e)Qo.next(t)},{threshold:0}))).pipe(b(e=>T(qe,$(e)).pipe(_(()=>e.disconnect()))),B(1));function yt(e){return fa.pipe(y(t=>t.observe(e)),b(t=>Qo.pipe(g(({target:r})=>r===e),_(()=>t.unobserve(e)),m(({isIntersecting:r})=>r))))}function Yo(e,t=16){return et(e).pipe(m(({y:r})=>{let o=pe(e),n=xt(e);return r>=n.height-o.height-t}),Y())}var cr={drawer:P("[data-md-toggle=drawer]"),search:P("[data-md-toggle=search]")};function Bo(e){return cr[e].checked}function Be(e,t){cr[e].checked!==t&&cr[e].click()}function We(e){let t=cr[e];return d(t,"change").pipe(m(()=>t.checked),q(t.checked))}function ua(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function da(){return T(d(window,"compositionstart").pipe(m(()=>!0)),d(window,"compositionend").pipe(m(()=>!1))).pipe(q(!1))}function Go(){let e=d(window,"keydown").pipe(g(t=>!(t.metaKey||t.ctrlKey)),m(t=>({mode:Bo("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),g(({mode:t,type:r})=>{if(t==="global"){let o=Re();if(typeof o!="undefined")return!ua(o,r)}return!0}),le());return da().pipe(b(t=>t?L:e))}function ve(){return new URL(location.href)}function st(e,t=!1){if(G("navigation.instant")&&!t){let r=E("a",{href:e.href});document.body.appendChild(r),r.click(),r.remove()}else location.href=e.href}function Jo(){return new v}function Xo(){return location.hash.slice(1)}function Zo(e){let t=E("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function ha(e){return T(d(window,"hashchange"),e).pipe(m(Xo),q(Xo()),g(t=>t.length>0),B(1))}function en(e){return ha(e).pipe(m(t=>me(`[id="${t}"]`)),g(t=>typeof t!="undefined"))}function At(e){let t=matchMedia(e);return nr(r=>t.addListener(()=>r(t.matches))).pipe(q(t.matches))}function tn(){let e=matchMedia("print");return T(d(window,"beforeprint").pipe(m(()=>!0)),d(window,"afterprint").pipe(m(()=>!1))).pipe(q(e.matches))}function Ur(e,t){return e.pipe(b(r=>r?t():L))}function Wr(e,t){return new j(r=>{let o=new XMLHttpRequest;return o.open("GET",`${e}`),o.responseType="blob",o.addEventListener("load",()=>{o.status>=200&&o.status<300?(r.next(o.response),r.complete()):r.error(new Error(o.statusText))}),o.addEventListener("error",()=>{r.error(new Error("Network error"))}),o.addEventListener("abort",()=>{r.complete()}),typeof(t==null?void 0:t.progress$)!="undefined"&&(o.addEventListener("progress",n=>{var i;if(n.lengthComputable)t.progress$.next(n.loaded/n.total*100);else{let s=(i=o.getResponseHeader("Content-Length"))!=null?i:0;t.progress$.next(n.loaded/+s*100)}}),t.progress$.next(5)),o.send(),()=>o.abort()})}function De(e,t){return Wr(e,t).pipe(b(r=>r.text()),m(r=>JSON.parse(r)),B(1))}function rn(e,t){let r=new DOMParser;return Wr(e,t).pipe(b(o=>o.text()),m(o=>r.parseFromString(o,"text/html")),B(1))}function on(e,t){let r=new DOMParser;return Wr(e,t).pipe(b(o=>o.text()),m(o=>r.parseFromString(o,"text/xml")),B(1))}function nn(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function an(){return T(d(window,"scroll",{passive:!0}),d(window,"resize",{passive:!0})).pipe(m(nn),q(nn()))}function sn(){return{width:innerWidth,height:innerHeight}}function cn(){return d(window,"resize",{passive:!0}).pipe(m(sn),q(sn()))}function pn(){return Q([an(),cn()]).pipe(m(([e,t])=>({offset:e,size:t})),B(1))}function pr(e,{viewport$:t,header$:r}){let o=t.pipe(X("size")),n=Q([o,r]).pipe(m(()=>Ue(e)));return Q([r,t,n]).pipe(m(([{height:i},{offset:s,size:a},{x:c,y:p}])=>({offset:{x:s.x-c,y:s.y-p+i},size:a})))}function ba(e){return d(e,"message",t=>t.data)}function va(e){let t=new v;return t.subscribe(r=>e.postMessage(r)),t}function ln(e,t=new Worker(e)){let r=ba(t),o=va(t),n=new v;n.subscribe(o);let i=o.pipe(ee(),oe(!0));return n.pipe(ee(),$e(r.pipe(U(i))),le())}var ga=P("#__config"),Et=JSON.parse(ga.textContent);Et.base=`${new URL(Et.base,ve())}`;function we(){return Et}function G(e){return Et.features.includes(e)}function ge(e,t){return typeof t!="undefined"?Et.translations[e].replace("#",t.toString()):Et.translations[e]}function Te(e,t=document){return P(`[data-md-component=${e}]`,t)}function ne(e,t=document){return R(`[data-md-component=${e}]`,t)}function xa(e){let t=P(".md-typeset > :first-child",e);return d(t,"click",{once:!0}).pipe(m(()=>P(".md-typeset",e)),m(r=>({hash:__md_hash(r.innerHTML)})))}function mn(e){if(!G("announce.dismiss")||!e.childElementCount)return L;if(!e.hidden){let t=P(".md-typeset",e);__md_hash(t.innerHTML)===__md_get("__announce")&&(e.hidden=!0)}return H(()=>{let t=new v;return t.subscribe(({hash:r})=>{e.hidden=!0,__md_set("__announce",r)}),xa(e).pipe(y(r=>t.next(r)),_(()=>t.complete()),m(r=>F({ref:e},r)))})}function ya(e,{target$:t}){return t.pipe(m(r=>({hidden:r!==e})))}function fn(e,t){let r=new v;return r.subscribe(({hidden:o})=>{e.hidden=o}),ya(e,t).pipe(y(o=>r.next(o)),_(()=>r.complete()),m(o=>F({ref:e},o)))}function Ct(e,t){return t==="inline"?E("div",{class:"md-tooltip md-tooltip--inline",id:e,role:"tooltip"},E("div",{class:"md-tooltip__inner md-typeset"})):E("div",{class:"md-tooltip",id:e,role:"tooltip"},E("div",{class:"md-tooltip__inner md-typeset"}))}function un(e,t){if(t=t?`${t}_annotation_${e}`:void 0,t){let r=t?`#${t}`:void 0;return E("aside",{class:"md-annotation",tabIndex:0},Ct(t),E("a",{href:r,class:"md-annotation__index",tabIndex:-1},E("span",{"data-md-annotation-id":e})))}else return E("aside",{class:"md-annotation",tabIndex:0},Ct(t),E("span",{class:"md-annotation__index",tabIndex:-1},E("span",{"data-md-annotation-id":e})))}function dn(e){return E("button",{class:"md-clipboard md-icon",title:ge("clipboard.copy"),"data-clipboard-target":`#${e} > code`})}function Dr(e,t){let r=t&2,o=t&1,n=Object.keys(e.terms).filter(c=>!e.terms[c]).reduce((c,p)=>[...c,E("del",null,p)," "],[]).slice(0,-1),i=we(),s=new URL(e.location,i.base);G("search.highlight")&&s.searchParams.set("h",Object.entries(e.terms).filter(([,c])=>c).reduce((c,[p])=>`${c} ${p}`.trim(),""));let{tags:a}=we();return E("a",{href:`${s}`,class:"md-search-result__link",tabIndex:-1},E("article",{class:"md-search-result__article md-typeset","data-md-score":e.score.toFixed(2)},r>0&&E("div",{class:"md-search-result__icon md-icon"}),r>0&&E("h1",null,e.title),r<=0&&E("h2",null,e.title),o>0&&e.text.length>0&&e.text,e.tags&&e.tags.map(c=>{let p=a?c in a?`md-tag-icon md-tag--${a[c]}`:"md-tag-icon":"";return E("span",{class:`md-tag ${p}`},c)}),o>0&&n.length>0&&E("p",{class:"md-search-result__terms"},ge("search.result.term.missing"),": ",...n)))}function hn(e){let t=e[0].score,r=[...e],o=we(),n=r.findIndex(l=>!`${new URL(l.location,o.base)}`.includes("#")),[i]=r.splice(n,1),s=r.findIndex(l=>l.scoreDr(l,1)),...c.length?[E("details",{class:"md-search-result__more"},E("summary",{tabIndex:-1},E("div",null,c.length>0&&c.length===1?ge("search.result.more.one"):ge("search.result.more.other",c.length))),...c.map(l=>Dr(l,1)))]:[]];return E("li",{class:"md-search-result__item"},p)}function bn(e){return E("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>E("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?ar(r):r)))}function Nr(e){let t=`tabbed-control tabbed-control--${e}`;return E("div",{class:t,hidden:!0},E("button",{class:"tabbed-button",tabIndex:-1,"aria-hidden":"true"}))}function vn(e){return E("div",{class:"md-typeset__scrollwrap"},E("div",{class:"md-typeset__table"},e))}function Ea(e){let t=we(),r=new URL(`../${e.version}/`,t.base);return E("li",{class:"md-version__item"},E("a",{href:`${r}`,class:"md-version__link"},e.title))}function gn(e,t){return e=e.filter(r=>{var o;return!((o=r.properties)!=null&&o.hidden)}),E("div",{class:"md-version"},E("button",{class:"md-version__current","aria-label":ge("select.version")},t.title),E("ul",{class:"md-version__list"},e.map(Ea)))}var wa=0;function Ta(e,t){document.body.append(e);let{width:r}=pe(e);e.style.setProperty("--md-tooltip-width",`${r}px`),e.remove();let o=sr(t),n=typeof o!="undefined"?et(o):$({x:0,y:0}),i=T(vt(t),Vo(t)).pipe(Y());return Q([i,n]).pipe(m(([s,a])=>{let{x:c,y:p}=Ue(t),l=pe(t),f=t.closest("table");return f&&t.parentElement&&(c+=f.offsetLeft+t.parentElement.offsetLeft,p+=f.offsetTop+t.parentElement.offsetTop),{active:s,offset:{x:c-a.x+l.width/2-r/2,y:p-a.y+l.height+8}}}))}function Ge(e){let t=e.title;if(!t.length)return L;let r=`__tooltip_${wa++}`,o=Ct(r,"inline"),n=P(".md-typeset",o);return n.innerHTML=t,H(()=>{let i=new v;return i.subscribe({next({offset:s}){o.style.setProperty("--md-tooltip-x",`${s.x}px`),o.style.setProperty("--md-tooltip-y",`${s.y}px`)},complete(){o.style.removeProperty("--md-tooltip-x"),o.style.removeProperty("--md-tooltip-y")}}),T(i.pipe(g(({active:s})=>s)),i.pipe(be(250),g(({active:s})=>!s))).subscribe({next({active:s}){s?(e.insertAdjacentElement("afterend",o),e.setAttribute("aria-describedby",r),e.removeAttribute("title")):(o.remove(),e.removeAttribute("aria-describedby"),e.setAttribute("title",t))},complete(){o.remove(),e.removeAttribute("aria-describedby"),e.setAttribute("title",t)}}),i.pipe(Me(16,de)).subscribe(({active:s})=>{o.classList.toggle("md-tooltip--active",s)}),i.pipe(_t(125,de),g(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:s})=>s)).subscribe({next(s){s?o.style.setProperty("--md-tooltip-0",`${-s}px`):o.style.removeProperty("--md-tooltip-0")},complete(){o.style.removeProperty("--md-tooltip-0")}}),Ta(o,e).pipe(y(s=>i.next(s)),_(()=>i.complete()),m(s=>F({ref:e},s)))}).pipe(ze(ie))}function Sa(e,t){let r=H(()=>Q([zo(e),et(t)])).pipe(m(([{x:o,y:n},i])=>{let{width:s,height:a}=pe(e);return{x:o-i.x+s/2,y:n-i.y+a/2}}));return vt(e).pipe(b(o=>r.pipe(m(n=>({active:o,offset:n})),ye(+!o||1/0))))}function xn(e,t,{target$:r}){let[o,n]=Array.from(e.children);return H(()=>{let i=new v,s=i.pipe(ee(),oe(!0));return i.subscribe({next({offset:a}){e.style.setProperty("--md-tooltip-x",`${a.x}px`),e.style.setProperty("--md-tooltip-y",`${a.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}}),yt(e).pipe(U(s)).subscribe(a=>{e.toggleAttribute("data-md-visible",a)}),T(i.pipe(g(({active:a})=>a)),i.pipe(be(250),g(({active:a})=>!a))).subscribe({next({active:a}){a?e.prepend(o):o.remove()},complete(){e.prepend(o)}}),i.pipe(Me(16,de)).subscribe(({active:a})=>{o.classList.toggle("md-tooltip--active",a)}),i.pipe(_t(125,de),g(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:a})=>a)).subscribe({next(a){a?e.style.setProperty("--md-tooltip-0",`${-a}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}}),d(n,"click").pipe(U(s),g(a=>!(a.metaKey||a.ctrlKey))).subscribe(a=>{a.stopPropagation(),a.preventDefault()}),d(n,"mousedown").pipe(U(s),ae(i)).subscribe(([a,{active:c}])=>{var p;if(a.button!==0||a.metaKey||a.ctrlKey)a.preventDefault();else if(c){a.preventDefault();let l=e.parentElement.closest(".md-annotation");l instanceof HTMLElement?l.focus():(p=Re())==null||p.blur()}}),r.pipe(U(s),g(a=>a===o),Ye(125)).subscribe(()=>e.focus()),Sa(e,t).pipe(y(a=>i.next(a)),_(()=>i.complete()),m(a=>F({ref:e},a)))})}function Oa(e){return e.tagName==="CODE"?R(".c, .c1, .cm",e):[e]}function Ma(e){let t=[];for(let r of Oa(e)){let o=[],n=document.createNodeIterator(r,NodeFilter.SHOW_TEXT);for(let i=n.nextNode();i;i=n.nextNode())o.push(i);for(let i of o){let s;for(;s=/(\(\d+\))(!)?/.exec(i.textContent);){let[,a,c]=s;if(typeof c=="undefined"){let p=i.splitText(s.index);i=p.splitText(a.length),t.push(p)}else{i.textContent=a,t.push(i);break}}}}return t}function yn(e,t){t.append(...Array.from(e.childNodes))}function lr(e,t,{target$:r,print$:o}){let n=t.closest("[id]"),i=n==null?void 0:n.id,s=new Map;for(let a of Ma(t)){let[,c]=a.textContent.match(/\((\d+)\)/);me(`:scope > li:nth-child(${c})`,e)&&(s.set(c,un(c,i)),a.replaceWith(s.get(c)))}return s.size===0?L:H(()=>{let a=new v,c=a.pipe(ee(),oe(!0)),p=[];for(let[l,f]of s)p.push([P(".md-typeset",f),P(`:scope > li:nth-child(${l})`,e)]);return o.pipe(U(c)).subscribe(l=>{e.hidden=!l,e.classList.toggle("md-annotation-list",l);for(let[f,u]of p)l?yn(f,u):yn(u,f)}),T(...[...s].map(([,l])=>xn(l,t,{target$:r}))).pipe(_(()=>a.complete()),le())})}function En(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return En(t)}}function wn(e,t){return H(()=>{let r=En(e);return typeof r!="undefined"?lr(r,e,t):L})}var Tn=jt(zr());var La=0;function Sn(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return Sn(t)}}function _a(e){return Ee(e).pipe(m(({width:t})=>({scrollable:xt(e).width>t})),X("scrollable"))}function On(e,t){let{matches:r}=matchMedia("(hover)"),o=H(()=>{let n=new v,i=n.pipe($r(1));n.subscribe(({scrollable:c})=>{c&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")});let s=[];if(Tn.default.isSupported()&&(e.closest(".copy")||G("content.code.copy")&&!e.closest(".no-copy"))){let c=e.closest("pre");c.id=`__code_${La++}`;let p=dn(c.id);c.insertBefore(p,e),G("content.tooltips")&&s.push(Ge(p))}let a=e.closest(".highlight");if(a instanceof HTMLElement){let c=Sn(a);if(typeof c!="undefined"&&(a.classList.contains("annotate")||G("content.code.annotate"))){let p=lr(c,e,t);s.push(Ee(a).pipe(U(i),m(({width:l,height:f})=>l&&f),Y(),b(l=>l?p:L)))}}return _a(e).pipe(y(c=>n.next(c)),_(()=>n.complete()),m(c=>F({ref:e},c)),$e(...s))});return G("content.lazy")?yt(e).pipe(g(n=>n),ye(1),b(()=>o)):o}function Aa(e,{target$:t,print$:r}){let o=!0;return T(t.pipe(m(n=>n.closest("details:not([open])")),g(n=>e===n),m(()=>({action:"open",reveal:!0}))),r.pipe(g(n=>n||!o),y(()=>o=e.open),m(n=>({action:n?"open":"close"}))))}function Mn(e,t){return H(()=>{let r=new v;return r.subscribe(({action:o,reveal:n})=>{e.toggleAttribute("open",o==="open"),n&&e.scrollIntoView()}),Aa(e,t).pipe(y(o=>r.next(o)),_(()=>r.complete()),m(o=>F({ref:e},o)))})}var Ln=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:#0000}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:normal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel rect,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel rect{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color);stroke-width:.05rem}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}g #flowchart-circleEnd,g #flowchart-circleStart,g #flowchart-crossEnd,g #flowchart-crossStart,g #flowchart-pointEnd,g #flowchart-pointStart{stroke:none}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-label-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel,.nodeLabel p{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.attributeBoxEven,.attributeBoxOdd{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}.actor{fill:var(--md-mermaid-sequence-actor-bg-color);stroke:var(--md-mermaid-sequence-actor-border-color)}text.actor>tspan{fill:var(--md-mermaid-sequence-actor-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-mermaid-sequence-actor-line-color)}.actor-man circle,.actor-man line{fill:var(--md-mermaid-sequence-actorman-bg-color);stroke:var(--md-mermaid-sequence-actorman-line-color)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-sequence-message-line-color)}.note{fill:var(--md-mermaid-sequence-note-bg-color);stroke:var(--md-mermaid-sequence-note-border-color)}.loopText,.loopText>tspan,.messageText,.noteText>tspan{stroke:none;font-family:var(--md-mermaid-font-family)!important}.messageText{fill:var(--md-mermaid-sequence-message-fg-color)}.loopText,.loopText>tspan{fill:var(--md-mermaid-sequence-loop-fg-color)}.noteText>tspan{fill:var(--md-mermaid-sequence-note-fg-color)}#arrowhead path{fill:var(--md-mermaid-sequence-message-line-color);stroke:none}.loopLine{fill:var(--md-mermaid-sequence-loop-bg-color);stroke:var(--md-mermaid-sequence-loop-border-color)}.labelBox{fill:var(--md-mermaid-sequence-label-bg-color);stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-sequence-label-fg-color);font-family:var(--md-mermaid-font-family)}.sequenceNumber{fill:var(--md-mermaid-sequence-number-fg-color)}rect.rect{fill:var(--md-mermaid-sequence-box-bg-color);stroke:none}rect.rect+text.text{fill:var(--md-mermaid-sequence-box-fg-color)}defs #sequencenumber{fill:var(--md-mermaid-sequence-number-bg-color)!important}";var qr,ka=0;function Ha(){return typeof mermaid=="undefined"||mermaid instanceof Element?gt("https://unpkg.com/mermaid@10.7.0/dist/mermaid.min.js"):$(void 0)}function _n(e){return e.classList.remove("mermaid"),qr||(qr=Ha().pipe(y(()=>mermaid.initialize({startOnLoad:!1,themeCSS:Ln,sequence:{actorFontSize:"16px",messageFontSize:"16px",noteFontSize:"16px"}})),m(()=>{}),B(1))),qr.subscribe(()=>ro(this,null,function*(){e.classList.add("mermaid");let t=`__mermaid_${ka++}`,r=E("div",{class:"mermaid"}),o=e.textContent,{svg:n,fn:i}=yield mermaid.render(t,o),s=r.attachShadow({mode:"closed"});s.innerHTML=n,e.replaceWith(r),i==null||i(s)})),qr.pipe(m(()=>({ref:e})))}var An=E("table");function Cn(e){return e.replaceWith(An),An.replaceWith(vn(e)),$({ref:e})}function $a(e){let t=e.find(r=>r.checked)||e[0];return T(...e.map(r=>d(r,"change").pipe(m(()=>P(`label[for="${r.id}"]`))))).pipe(q(P(`label[for="${t.id}"]`)),m(r=>({active:r})))}function kn(e,{viewport$:t,target$:r}){let o=P(".tabbed-labels",e),n=R(":scope > input",e),i=Nr("prev");e.append(i);let s=Nr("next");return e.append(s),H(()=>{let a=new v,c=a.pipe(ee(),oe(!0));Q([a,Ee(e)]).pipe(U(c),Me(1,de)).subscribe({next([{active:p},l]){let f=Ue(p),{width:u}=pe(p);e.style.setProperty("--md-indicator-x",`${f.x}px`),e.style.setProperty("--md-indicator-width",`${u}px`);let h=ir(o);(f.xh.x+l.width)&&o.scrollTo({left:Math.max(0,f.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),Q([et(o),Ee(o)]).pipe(U(c)).subscribe(([p,l])=>{let f=xt(o);i.hidden=p.x<16,s.hidden=p.x>f.width-l.width-16}),T(d(i,"click").pipe(m(()=>-1)),d(s,"click").pipe(m(()=>1))).pipe(U(c)).subscribe(p=>{let{width:l}=pe(o);o.scrollBy({left:l*p,behavior:"smooth"})}),r.pipe(U(c),g(p=>n.includes(p))).subscribe(p=>p.click()),o.classList.add("tabbed-labels--linked");for(let p of n){let l=P(`label[for="${p.id}"]`);l.replaceChildren(E("a",{href:`#${l.htmlFor}`,tabIndex:-1},...Array.from(l.childNodes))),d(l.firstElementChild,"click").pipe(U(c),g(f=>!(f.metaKey||f.ctrlKey)),y(f=>{f.preventDefault(),f.stopPropagation()})).subscribe(()=>{history.replaceState({},"",`#${l.htmlFor}`),l.click()})}return G("content.tabs.link")&&a.pipe(Le(1),ae(t)).subscribe(([{active:p},{offset:l}])=>{let f=p.innerText.trim();if(p.hasAttribute("data-md-switching"))p.removeAttribute("data-md-switching");else{let u=e.offsetTop-l.y;for(let w of R("[data-tabs]"))for(let A of R(":scope > input",w)){let Z=P(`label[for="${A.id}"]`);if(Z!==p&&Z.innerText.trim()===f){Z.setAttribute("data-md-switching",""),A.click();break}}window.scrollTo({top:e.offsetTop-u});let h=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([f,...h])])}}),a.pipe(U(c)).subscribe(()=>{for(let p of R("audio, video",e))p.pause()}),$a(n).pipe(y(p=>a.next(p)),_(()=>a.complete()),m(p=>F({ref:e},p)))}).pipe(ze(ie))}function Hn(e,{viewport$:t,target$:r,print$:o}){return T(...R(".annotate:not(.highlight)",e).map(n=>wn(n,{target$:r,print$:o})),...R("pre:not(.mermaid) > code",e).map(n=>On(n,{target$:r,print$:o})),...R("pre.mermaid",e).map(n=>_n(n)),...R("table:not([class])",e).map(n=>Cn(n)),...R("details",e).map(n=>Mn(n,{target$:r,print$:o})),...R("[data-tabs]",e).map(n=>kn(n,{viewport$:t,target$:r})),...R("[title]",e).filter(()=>G("content.tooltips")).map(n=>Ge(n)))}function Ra(e,{alert$:t}){return t.pipe(b(r=>T($(!0),$(!1).pipe(Ye(2e3))).pipe(m(o=>({message:r,active:o})))))}function $n(e,t){let r=P(".md-typeset",e);return H(()=>{let o=new v;return o.subscribe(({message:n,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=n}),Ra(e,t).pipe(y(n=>o.next(n)),_(()=>o.complete()),m(n=>F({ref:e},n)))})}function Pa({viewport$:e}){if(!G("header.autohide"))return $(!1);let t=e.pipe(m(({offset:{y:n}})=>n),Ke(2,1),m(([n,i])=>[nMath.abs(i-n.y)>100),m(([,[n]])=>n),Y()),o=We("search");return Q([e,o]).pipe(m(([{offset:n},i])=>n.y>400&&!i),Y(),b(n=>n?r:$(!1)),q(!1))}function Rn(e,t){return H(()=>Q([Ee(e),Pa(t)])).pipe(m(([{height:r},o])=>({height:r,hidden:o})),Y((r,o)=>r.height===o.height&&r.hidden===o.hidden),B(1))}function Pn(e,{header$:t,main$:r}){return H(()=>{let o=new v,n=o.pipe(ee(),oe(!0));o.pipe(X("active"),je(t)).subscribe(([{active:s},{hidden:a}])=>{e.classList.toggle("md-header--shadow",s&&!a),e.hidden=a});let i=fe(R("[title]",e)).pipe(g(()=>G("content.tooltips")),re(s=>Ge(s)));return r.subscribe(o),t.pipe(U(n),m(s=>F({ref:e},s)),$e(i.pipe(U(n))))})}function Ia(e,{viewport$:t,header$:r}){return pr(e,{viewport$:t,header$:r}).pipe(m(({offset:{y:o}})=>{let{height:n}=pe(e);return{active:o>=n}}),X("active"))}function In(e,t){return H(()=>{let r=new v;r.subscribe({next({active:n}){e.classList.toggle("md-header__title--active",n)},complete(){e.classList.remove("md-header__title--active")}});let o=me(".md-content h1");return typeof o=="undefined"?L:Ia(o,t).pipe(y(n=>r.next(n)),_(()=>r.complete()),m(n=>F({ref:e},n)))})}function Fn(e,{viewport$:t,header$:r}){let o=r.pipe(m(({height:i})=>i),Y()),n=o.pipe(b(()=>Ee(e).pipe(m(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),X("bottom"))));return Q([o,n,t]).pipe(m(([i,{top:s,bottom:a},{offset:{y:c},size:{height:p}}])=>(p=Math.max(0,p-Math.max(0,s-c,i)-Math.max(0,p+c-a)),{offset:s-i,height:p,active:s-i<=c})),Y((i,s)=>i.offset===s.offset&&i.height===s.height&&i.active===s.active))}function Fa(e){let t=__md_get("__palette")||{index:e.findIndex(o=>matchMedia(o.getAttribute("data-md-color-media")).matches)},r=Math.max(0,Math.min(t.index,e.length-1));return $(...e).pipe(re(o=>d(o,"change").pipe(m(()=>o))),q(e[r]),m(o=>({index:e.indexOf(o),color:{media:o.getAttribute("data-md-color-media"),scheme:o.getAttribute("data-md-color-scheme"),primary:o.getAttribute("data-md-color-primary"),accent:o.getAttribute("data-md-color-accent")}})),B(1))}function jn(e){let t=R("input",e),r=E("meta",{name:"theme-color"});document.head.appendChild(r);let o=E("meta",{name:"color-scheme"});document.head.appendChild(o);let n=At("(prefers-color-scheme: light)");return H(()=>{let i=new v;return i.subscribe(s=>{if(document.body.setAttribute("data-md-color-switching",""),s.color.media==="(prefers-color-scheme)"){let a=matchMedia("(prefers-color-scheme: light)"),c=document.querySelector(a.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");s.color.scheme=c.getAttribute("data-md-color-scheme"),s.color.primary=c.getAttribute("data-md-color-primary"),s.color.accent=c.getAttribute("data-md-color-accent")}for(let[a,c]of Object.entries(s.color))document.body.setAttribute(`data-md-color-${a}`,c);for(let a=0;a{let s=Te("header"),a=window.getComputedStyle(s);return o.content=a.colorScheme,a.backgroundColor.match(/\d+/g).map(c=>(+c).toString(16).padStart(2,"0")).join("")})).subscribe(s=>r.content=`#${s}`),i.pipe(Oe(ie)).subscribe(()=>{document.body.removeAttribute("data-md-color-switching")}),Fa(t).pipe(U(n.pipe(Le(1))),at(),y(s=>i.next(s)),_(()=>i.complete()),m(s=>F({ref:e},s)))})}function Un(e,{progress$:t}){return H(()=>{let r=new v;return r.subscribe(({value:o})=>{e.style.setProperty("--md-progress-value",`${o}`)}),t.pipe(y(o=>r.next({value:o})),_(()=>r.complete()),m(o=>({ref:e,value:o})))})}var Kr=jt(zr());function ja(e){e.setAttribute("data-md-copying","");let t=e.closest("[data-copy]"),r=t?t.getAttribute("data-copy"):e.innerText;return e.removeAttribute("data-md-copying"),r.trimEnd()}function Wn({alert$:e}){Kr.default.isSupported()&&new j(t=>{new Kr.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||ja(P(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(y(t=>{t.trigger.focus()}),m(()=>ge("clipboard.copied"))).subscribe(e)}function Dn(e,t){return e.protocol=t.protocol,e.hostname=t.hostname,e}function Ua(e,t){let r=new Map;for(let o of R("url",e)){let n=P("loc",o),i=[Dn(new URL(n.textContent),t)];r.set(`${i[0]}`,i);for(let s of R("[rel=alternate]",o)){let a=s.getAttribute("href");a!=null&&i.push(Dn(new URL(a),t))}}return r}function mr(e){return on(new URL("sitemap.xml",e)).pipe(m(t=>Ua(t,new URL(e))),he(()=>$(new Map)))}function Wa(e,t){if(!(e.target instanceof Element))return L;let r=e.target.closest("a");if(r===null)return L;if(r.target||e.metaKey||e.ctrlKey)return L;let o=new URL(r.href);return o.search=o.hash="",t.has(`${o}`)?(e.preventDefault(),$(new URL(r.href))):L}function Nn(e){let t=new Map;for(let r of R(":scope > *",e.head))t.set(r.outerHTML,r);return t}function Vn(e){for(let t of R("[href], [src]",e))for(let r of["href","src"]){let o=t.getAttribute(r);if(o&&!/^(?:[a-z]+:)?\/\//i.test(o)){t[r]=t[r];break}}return $(e)}function Da(e){for(let o of["[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]","[data-md-component=skip]",...G("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let n=me(o),i=me(o,e);typeof n!="undefined"&&typeof i!="undefined"&&n.replaceWith(i)}let t=Nn(document);for(let[o,n]of Nn(e))t.has(o)?t.delete(o):document.head.appendChild(n);for(let o of t.values()){let n=o.getAttribute("name");n!=="theme-color"&&n!=="color-scheme"&&o.remove()}let r=Te("container");return Fe(R("script",r)).pipe(b(o=>{let n=e.createElement("script");if(o.src){for(let i of o.getAttributeNames())n.setAttribute(i,o.getAttribute(i));return o.replaceWith(n),new j(i=>{n.onload=()=>i.complete()})}else return n.textContent=o.textContent,o.replaceWith(n),L}),ee(),oe(document))}function zn({location$:e,viewport$:t,progress$:r}){let o=we();if(location.protocol==="file:")return L;let n=mr(o.base);$(document).subscribe(Vn);let i=d(document.body,"click").pipe(je(n),b(([c,p])=>Wa(c,p)),le()),s=d(window,"popstate").pipe(m(ve),le());i.pipe(ae(t)).subscribe(([c,{offset:p}])=>{history.replaceState(p,""),history.pushState(null,"",c)}),T(i,s).subscribe(e);let a=e.pipe(X("pathname"),b(c=>rn(c,{progress$:r}).pipe(he(()=>(st(c,!0),L)))),b(Vn),b(Da),le());return T(a.pipe(ae(e,(c,p)=>p)),e.pipe(X("pathname"),b(()=>e),X("hash")),e.pipe(Y((c,p)=>c.pathname===p.pathname&&c.hash===p.hash),b(()=>i),y(()=>history.back()))).subscribe(c=>{var p,l;history.state!==null||!c.hash?window.scrollTo(0,(l=(p=history.state)==null?void 0:p.y)!=null?l:0):(history.scrollRestoration="auto",Zo(c.hash),history.scrollRestoration="manual")}),e.subscribe(()=>{history.scrollRestoration="manual"}),d(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}),t.pipe(X("offset"),be(100)).subscribe(({offset:c})=>{history.replaceState(c,"")}),a}var Qn=jt(Kn());function Yn(e){let t=e.separator.split("|").map(n=>n.replace(/(\(\?[!=<][^)]+\))/g,"").length===0?"\uFFFD":n).join("|"),r=new RegExp(t,"img"),o=(n,i,s)=>`${i}${s}`;return n=>{n=n.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator}|)(${n.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return s=>(0,Qn.default)(s).replace(i,o).replace(/<\/mark>(\s+)]*>/img,"$1")}}function Ht(e){return e.type===1}function fr(e){return e.type===3}function Bn(e,t){let r=ln(e);return T($(location.protocol!=="file:"),We("search")).pipe(He(o=>o),b(()=>t)).subscribe(({config:o,docs:n})=>r.next({type:0,data:{config:o,docs:n,options:{suggest:G("search.suggest")}}})),r}function Gn({document$:e}){let t=we(),r=De(new URL("../versions.json",t.base)).pipe(he(()=>L)),o=r.pipe(m(n=>{let[,i]=t.base.match(/([^/]+)\/?$/);return n.find(({version:s,aliases:a})=>s===i||a.includes(i))||n[0]}));r.pipe(m(n=>new Map(n.map(i=>[`${new URL(`../${i.version}/`,t.base)}`,i]))),b(n=>d(document.body,"click").pipe(g(i=>!i.metaKey&&!i.ctrlKey),ae(o),b(([i,s])=>{if(i.target instanceof Element){let a=i.target.closest("a");if(a&&!a.target&&n.has(a.href)){let c=a.href;return!i.target.closest(".md-version")&&n.get(c)===s?L:(i.preventDefault(),$(c))}}return L}),b(i=>{let{version:s}=n.get(i);return mr(new URL(i)).pipe(m(a=>{let p=ve().href.replace(t.base,"");return a.has(p.split("#")[0])?new URL(`../${s}/${p}`,t.base):new URL(i)}))})))).subscribe(n=>st(n,!0)),Q([r,o]).subscribe(([n,i])=>{P(".md-header__topic").appendChild(gn(n,i))}),e.pipe(b(()=>o)).subscribe(n=>{var s;let i=__md_get("__outdated",sessionStorage);if(i===null){i=!0;let a=((s=t.version)==null?void 0:s.default)||"latest";Array.isArray(a)||(a=[a]);e:for(let c of a)for(let p of n.aliases.concat(n.version))if(new RegExp(c,"i").test(p)){i=!1;break e}__md_set("__outdated",i,sessionStorage)}if(i)for(let a of ne("outdated"))a.hidden=!1})}function Ka(e,{worker$:t}){let{searchParams:r}=ve();r.has("q")&&(Be("search",!0),e.value=r.get("q"),e.focus(),We("search").pipe(He(i=>!i)).subscribe(()=>{let i=ve();i.searchParams.delete("q"),history.replaceState({},"",`${i}`)}));let o=vt(e),n=T(t.pipe(He(Ht)),d(e,"keyup"),o).pipe(m(()=>e.value),Y());return Q([n,o]).pipe(m(([i,s])=>({value:i,focus:s})),B(1))}function Jn(e,{worker$:t}){let r=new v,o=r.pipe(ee(),oe(!0));Q([t.pipe(He(Ht)),r],(i,s)=>s).pipe(X("value")).subscribe(({value:i})=>t.next({type:2,data:i})),r.pipe(X("focus")).subscribe(({focus:i})=>{i&&Be("search",i)}),d(e.form,"reset").pipe(U(o)).subscribe(()=>e.focus());let n=P("header [for=__search]");return d(n,"click").subscribe(()=>e.focus()),Ka(e,{worker$:t}).pipe(y(i=>r.next(i)),_(()=>r.complete()),m(i=>F({ref:e},i)),B(1))}function Xn(e,{worker$:t,query$:r}){let o=new v,n=Yo(e.parentElement).pipe(g(Boolean)),i=e.parentElement,s=P(":scope > :first-child",e),a=P(":scope > :last-child",e);We("search").subscribe(l=>a.setAttribute("role",l?"list":"presentation")),o.pipe(ae(r),Ir(t.pipe(He(Ht)))).subscribe(([{items:l},{value:f}])=>{switch(l.length){case 0:s.textContent=f.length?ge("search.result.none"):ge("search.result.placeholder");break;case 1:s.textContent=ge("search.result.one");break;default:let u=ar(l.length);s.textContent=ge("search.result.other",u)}});let c=o.pipe(y(()=>a.innerHTML=""),b(({items:l})=>T($(...l.slice(0,10)),$(...l.slice(10)).pipe(Ke(4),jr(n),b(([f])=>f)))),m(hn),le());return c.subscribe(l=>a.appendChild(l)),c.pipe(re(l=>{let f=me("details",l);return typeof f=="undefined"?L:d(f,"toggle").pipe(U(o),m(()=>f))})).subscribe(l=>{l.open===!1&&l.offsetTop<=i.scrollTop&&i.scrollTo({top:l.offsetTop})}),t.pipe(g(fr),m(({data:l})=>l)).pipe(y(l=>o.next(l)),_(()=>o.complete()),m(l=>F({ref:e},l)))}function Qa(e,{query$:t}){return t.pipe(m(({value:r})=>{let o=ve();return o.hash="",r=r.replace(/\s+/g,"+").replace(/&/g,"%26").replace(/=/g,"%3D"),o.search=`q=${r}`,{url:o}}))}function Zn(e,t){let r=new v,o=r.pipe(ee(),oe(!0));return r.subscribe(({url:n})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${n}`}),d(e,"click").pipe(U(o)).subscribe(n=>n.preventDefault()),Qa(e,t).pipe(y(n=>r.next(n)),_(()=>r.complete()),m(n=>F({ref:e},n)))}function ei(e,{worker$:t,keyboard$:r}){let o=new v,n=Te("search-query"),i=T(d(n,"keydown"),d(n,"focus")).pipe(Oe(ie),m(()=>n.value),Y());return o.pipe(je(i),m(([{suggest:a},c])=>{let p=c.split(/([\s-]+)/);if(a!=null&&a.length&&p[p.length-1]){let l=a[a.length-1];l.startsWith(p[p.length-1])&&(p[p.length-1]=l)}else p.length=0;return p})).subscribe(a=>e.innerHTML=a.join("").replace(/\s/g," ")),r.pipe(g(({mode:a})=>a==="search")).subscribe(a=>{switch(a.type){case"ArrowRight":e.innerText.length&&n.selectionStart===n.value.length&&(n.value=e.innerText);break}}),t.pipe(g(fr),m(({data:a})=>a)).pipe(y(a=>o.next(a)),_(()=>o.complete()),m(()=>({ref:e})))}function ti(e,{index$:t,keyboard$:r}){let o=we();try{let n=Bn(o.search,t),i=Te("search-query",e),s=Te("search-result",e);d(e,"click").pipe(g(({target:c})=>c instanceof Element&&!!c.closest("a"))).subscribe(()=>Be("search",!1)),r.pipe(g(({mode:c})=>c==="search")).subscribe(c=>{let p=Re();switch(c.type){case"Enter":if(p===i){let l=new Map;for(let f of R(":first-child [href]",s)){let u=f.firstElementChild;l.set(f,parseFloat(u.getAttribute("data-md-score")))}if(l.size){let[[f]]=[...l].sort(([,u],[,h])=>h-u);f.click()}c.claim()}break;case"Escape":case"Tab":Be("search",!1),i.blur();break;case"ArrowUp":case"ArrowDown":if(typeof p=="undefined")i.focus();else{let l=[i,...R(":not(details) > [href], summary, details[open] [href]",s)],f=Math.max(0,(Math.max(0,l.indexOf(p))+l.length+(c.type==="ArrowUp"?-1:1))%l.length);l[f].focus()}c.claim();break;default:i!==Re()&&i.focus()}}),r.pipe(g(({mode:c})=>c==="global")).subscribe(c=>{switch(c.type){case"f":case"s":case"/":i.focus(),i.select(),c.claim();break}});let a=Jn(i,{worker$:n});return T(a,Xn(s,{worker$:n,query$:a})).pipe($e(...ne("search-share",e).map(c=>Zn(c,{query$:a})),...ne("search-suggest",e).map(c=>ei(c,{worker$:n,keyboard$:r}))))}catch(n){return e.hidden=!0,qe}}function ri(e,{index$:t,location$:r}){return Q([t,r.pipe(q(ve()),g(o=>!!o.searchParams.get("h")))]).pipe(m(([o,n])=>Yn(o.config)(n.searchParams.get("h"))),m(o=>{var s;let n=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let a=i.nextNode();a;a=i.nextNode())if((s=a.parentElement)!=null&&s.offsetHeight){let c=a.textContent,p=o(c);p.length>c.length&&n.set(a,p)}for(let[a,c]of n){let{childNodes:p}=E("span",null,c);a.replaceWith(...Array.from(p))}return{ref:e,nodes:n}}))}function Ya(e,{viewport$:t,main$:r}){let o=e.closest(".md-grid"),n=o.offsetTop-o.parentElement.offsetTop;return Q([r,t]).pipe(m(([{offset:i,height:s},{offset:{y:a}}])=>(s=s+Math.min(n,Math.max(0,a-i))-n,{height:s,locked:a>=i+n})),Y((i,s)=>i.height===s.height&&i.locked===s.locked))}function Qr(e,o){var n=o,{header$:t}=n,r=to(n,["header$"]);let i=P(".md-sidebar__scrollwrap",e),{y:s}=Ue(i);return H(()=>{let a=new v,c=a.pipe(ee(),oe(!0)),p=a.pipe(Me(0,de));return p.pipe(ae(t)).subscribe({next([{height:l},{height:f}]){i.style.height=`${l-2*s}px`,e.style.top=`${f}px`},complete(){i.style.height="",e.style.top=""}}),p.pipe(He()).subscribe(()=>{for(let l of R(".md-nav__link--active[href]",e)){if(!l.clientHeight)continue;let f=l.closest(".md-sidebar__scrollwrap");if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:h}=pe(f);f.scrollTo({top:u-h/2})}}}),fe(R("label[tabindex]",e)).pipe(re(l=>d(l,"click").pipe(Oe(ie),m(()=>l),U(c)))).subscribe(l=>{let f=P(`[id="${l.htmlFor}"]`);P(`[aria-labelledby="${l.id}"]`).setAttribute("aria-expanded",`${f.checked}`)}),Ya(e,r).pipe(y(l=>a.next(l)),_(()=>a.complete()),m(l=>F({ref:e},l)))})}function oi(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return Lt(De(`${r}/releases/latest`).pipe(he(()=>L),m(o=>({version:o.tag_name})),Qe({})),De(r).pipe(he(()=>L),m(o=>({stars:o.stargazers_count,forks:o.forks_count})),Qe({}))).pipe(m(([o,n])=>F(F({},o),n)))}else{let r=`https://api.github.com/users/${e}`;return De(r).pipe(m(o=>({repositories:o.public_repos})),Qe({}))}}function ni(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return De(r).pipe(he(()=>L),m(({star_count:o,forks_count:n})=>({stars:o,forks:n})),Qe({}))}function ii(e){let t=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);if(t){let[,r,o]=t;return oi(r,o)}if(t=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i),t){let[,r,o]=t;return ni(r,o)}return L}var Ba;function Ga(e){return Ba||(Ba=H(()=>{let t=__md_get("__source",sessionStorage);if(t)return $(t);if(ne("consent").length){let o=__md_get("__consent");if(!(o&&o.github))return L}return ii(e.href).pipe(y(o=>__md_set("__source",o,sessionStorage)))}).pipe(he(()=>L),g(t=>Object.keys(t).length>0),m(t=>({facts:t})),B(1)))}function ai(e){let t=P(":scope > :last-child",e);return H(()=>{let r=new v;return r.subscribe(({facts:o})=>{t.appendChild(bn(o)),t.classList.add("md-source__repository--active")}),Ga(e).pipe(y(o=>r.next(o)),_(()=>r.complete()),m(o=>F({ref:e},o)))})}function Ja(e,{viewport$:t,header$:r}){return Ee(document.body).pipe(b(()=>pr(e,{header$:r,viewport$:t})),m(({offset:{y:o}})=>({hidden:o>=10})),X("hidden"))}function si(e,t){return H(()=>{let r=new v;return r.subscribe({next({hidden:o}){e.hidden=o},complete(){e.hidden=!1}}),(G("navigation.tabs.sticky")?$({hidden:!1}):Ja(e,t)).pipe(y(o=>r.next(o)),_(()=>r.complete()),m(o=>F({ref:e},o)))})}function Xa(e,{viewport$:t,header$:r}){let o=new Map,n=R(".md-nav__link",e);for(let a of n){let c=decodeURIComponent(a.hash.substring(1)),p=me(`[id="${c}"]`);typeof p!="undefined"&&o.set(a,p)}let i=r.pipe(X("height"),m(({height:a})=>{let c=Te("main"),p=P(":scope > :first-child",c);return a+.8*(p.offsetTop-c.offsetTop)}),le());return Ee(document.body).pipe(X("height"),b(a=>H(()=>{let c=[];return $([...o].reduce((p,[l,f])=>{for(;c.length&&o.get(c[c.length-1]).tagName>=f.tagName;)c.pop();let u=f.offsetTop;for(;!u&&f.parentElement;)f=f.parentElement,u=f.offsetTop;let h=f.offsetParent;for(;h;h=h.offsetParent)u+=h.offsetTop;return p.set([...c=[...c,l]].reverse(),u)},new Map))}).pipe(m(c=>new Map([...c].sort(([,p],[,l])=>p-l))),je(i),b(([c,p])=>t.pipe(Rr(([l,f],{offset:{y:u},size:h})=>{let w=u+h.height>=Math.floor(a.height);for(;f.length;){let[,A]=f[0];if(A-p=u&&!w)f=[l.pop(),...f];else break}return[l,f]},[[],[...c]]),Y((l,f)=>l[0]===f[0]&&l[1]===f[1])))))).pipe(m(([a,c])=>({prev:a.map(([p])=>p),next:c.map(([p])=>p)})),q({prev:[],next:[]}),Ke(2,1),m(([a,c])=>a.prev.length{let i=new v,s=i.pipe(ee(),oe(!0));if(i.subscribe(({prev:a,next:c})=>{for(let[p]of c)p.classList.remove("md-nav__link--passed"),p.classList.remove("md-nav__link--active");for(let[p,[l]]of a.entries())l.classList.add("md-nav__link--passed"),l.classList.toggle("md-nav__link--active",p===a.length-1)}),G("toc.follow")){let a=T(t.pipe(be(1),m(()=>{})),t.pipe(be(250),m(()=>"smooth")));i.pipe(g(({prev:c})=>c.length>0),je(o.pipe(Oe(ie))),ae(a)).subscribe(([[{prev:c}],p])=>{let[l]=c[c.length-1];if(l.offsetHeight){let f=sr(l);if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:h}=pe(f);f.scrollTo({top:u-h/2,behavior:p})}}})}return G("navigation.tracking")&&t.pipe(U(s),X("offset"),be(250),Le(1),U(n.pipe(Le(1))),at({delay:250}),ae(i)).subscribe(([,{prev:a}])=>{let c=ve(),p=a[a.length-1];if(p&&p.length){let[l]=p,{hash:f}=new URL(l.href);c.hash!==f&&(c.hash=f,history.replaceState({},"",`${c}`))}else c.hash="",history.replaceState({},"",`${c}`)}),Xa(e,{viewport$:t,header$:r}).pipe(y(a=>i.next(a)),_(()=>i.complete()),m(a=>F({ref:e},a)))})}function Za(e,{viewport$:t,main$:r,target$:o}){let n=t.pipe(m(({offset:{y:s}})=>s),Ke(2,1),m(([s,a])=>s>a&&a>0),Y()),i=r.pipe(m(({active:s})=>s));return Q([i,n]).pipe(m(([s,a])=>!(s&&a)),Y(),U(o.pipe(Le(1))),oe(!0),at({delay:250}),m(s=>({hidden:s})))}function pi(e,{viewport$:t,header$:r,main$:o,target$:n}){let i=new v,s=i.pipe(ee(),oe(!0));return i.subscribe({next({hidden:a}){e.hidden=a,a?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(U(s),X("height")).subscribe(({height:a})=>{e.style.top=`${a+16}px`}),d(e,"click").subscribe(a=>{a.preventDefault(),window.scrollTo({top:0})}),Za(e,{viewport$:t,main$:o,target$:n}).pipe(y(a=>i.next(a)),_(()=>i.complete()),m(a=>F({ref:e},a)))}function li({document$:e}){e.pipe(b(()=>R(".md-ellipsis")),re(t=>yt(t).pipe(U(e.pipe(Le(1))),g(r=>r),m(()=>t),ye(1))),g(t=>t.offsetWidth{let r=t.innerText,o=t.closest("a")||t;return o.title=r,Ge(o).pipe(U(e.pipe(Le(1))),_(()=>o.removeAttribute("title")))})).subscribe(),e.pipe(b(()=>R(".md-status")),re(t=>Ge(t))).subscribe()}function mi({document$:e,tablet$:t}){e.pipe(b(()=>R(".md-toggle--indeterminate")),y(r=>{r.indeterminate=!0,r.checked=!1}),re(r=>d(r,"change").pipe(Fr(()=>r.classList.contains("md-toggle--indeterminate")),m(()=>r))),ae(t)).subscribe(([r,o])=>{r.classList.remove("md-toggle--indeterminate"),o&&(r.checked=!1)})}function es(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function fi({document$:e}){e.pipe(b(()=>R("[data-md-scrollfix]")),y(t=>t.removeAttribute("data-md-scrollfix")),g(es),re(t=>d(t,"touchstart").pipe(m(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function ui({viewport$:e,tablet$:t}){Q([We("search"),t]).pipe(m(([r,o])=>r&&!o),b(r=>$(r).pipe(Ye(r?400:100))),ae(e)).subscribe(([r,{offset:{y:o}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${o}px`;else{let n=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",n&&window.scrollTo(0,n)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(this);for(let r=e.length-1;r>=0;r--){let o=e[r];typeof o=="string"?o=document.createTextNode(o):o.parentNode&&o.parentNode.removeChild(o),r?t.insertBefore(this.previousSibling,o):t.replaceChild(o,this)}}}));function ts(){return location.protocol==="file:"?gt(`${new URL("search/search_index.js",Yr.base)}`).pipe(m(()=>__index),B(1)):De(new URL("search/search_index.json",Yr.base))}document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var rt=No(),Rt=Jo(),wt=en(Rt),Br=Go(),_e=pn(),ur=At("(min-width: 960px)"),hi=At("(min-width: 1220px)"),bi=tn(),Yr=we(),vi=document.forms.namedItem("search")?ts():qe,Gr=new v;Wn({alert$:Gr});var Jr=new v;G("navigation.instant")&&zn({location$:Rt,viewport$:_e,progress$:Jr}).subscribe(rt);var di;((di=Yr.version)==null?void 0:di.provider)==="mike"&&Gn({document$:rt});T(Rt,wt).pipe(Ye(125)).subscribe(()=>{Be("drawer",!1),Be("search",!1)});Br.pipe(g(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=me("link[rel=prev]");typeof t!="undefined"&&st(t);break;case"n":case".":let r=me("link[rel=next]");typeof r!="undefined"&&st(r);break;case"Enter":let o=Re();o instanceof HTMLLabelElement&&o.click()}});li({document$:rt});mi({document$:rt,tablet$:ur});fi({document$:rt});ui({viewport$:_e,tablet$:ur});var tt=Rn(Te("header"),{viewport$:_e}),$t=rt.pipe(m(()=>Te("main")),b(e=>Fn(e,{viewport$:_e,header$:tt})),B(1)),rs=T(...ne("consent").map(e=>fn(e,{target$:wt})),...ne("dialog").map(e=>$n(e,{alert$:Gr})),...ne("header").map(e=>Pn(e,{viewport$:_e,header$:tt,main$:$t})),...ne("palette").map(e=>jn(e)),...ne("progress").map(e=>Un(e,{progress$:Jr})),...ne("search").map(e=>ti(e,{index$:vi,keyboard$:Br})),...ne("source").map(e=>ai(e))),os=H(()=>T(...ne("announce").map(e=>mn(e)),...ne("content").map(e=>Hn(e,{viewport$:_e,target$:wt,print$:bi})),...ne("content").map(e=>G("search.highlight")?ri(e,{index$:vi,location$:Rt}):L),...ne("header-title").map(e=>In(e,{viewport$:_e,header$:tt})),...ne("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?Ur(hi,()=>Qr(e,{viewport$:_e,header$:tt,main$:$t})):Ur(ur,()=>Qr(e,{viewport$:_e,header$:tt,main$:$t}))),...ne("tabs").map(e=>si(e,{viewport$:_e,header$:tt})),...ne("toc").map(e=>ci(e,{viewport$:_e,header$:tt,main$:$t,target$:wt})),...ne("top").map(e=>pi(e,{viewport$:_e,header$:tt,main$:$t,target$:wt})))),gi=rt.pipe(b(()=>os),$e(rs),B(1));gi.subscribe();window.document$=rt;window.location$=Rt;window.target$=wt;window.keyboard$=Br;window.viewport$=_e;window.tablet$=ur;window.screen$=hi;window.print$=bi;window.alert$=Gr;window.progress$=Jr;window.component$=gi;})(); -//# sourceMappingURL=bundle.bd41221c.min.js.map - diff --git a/0.10.0/assets/javascripts/bundle.bd41221c.min.js.map b/0.10.0/assets/javascripts/bundle.bd41221c.min.js.map deleted file mode 100644 index 1663daba2..000000000 --- a/0.10.0/assets/javascripts/bundle.bd41221c.min.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["node_modules/focus-visible/dist/focus-visible.js", "node_modules/clipboard/dist/clipboard.js", "node_modules/escape-html/index.js", "src/templates/assets/javascripts/bundle.ts", "node_modules/rxjs/node_modules/tslib/tslib.es6.js", "node_modules/rxjs/src/internal/util/isFunction.ts", "node_modules/rxjs/src/internal/util/createErrorClass.ts", "node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "node_modules/rxjs/src/internal/util/arrRemove.ts", "node_modules/rxjs/src/internal/Subscription.ts", "node_modules/rxjs/src/internal/config.ts", "node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts", "node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "node_modules/rxjs/src/internal/util/noop.ts", "node_modules/rxjs/src/internal/NotificationFactories.ts", "node_modules/rxjs/src/internal/util/errorContext.ts", "node_modules/rxjs/src/internal/Subscriber.ts", "node_modules/rxjs/src/internal/symbol/observable.ts", "node_modules/rxjs/src/internal/util/identity.ts", "node_modules/rxjs/src/internal/util/pipe.ts", "node_modules/rxjs/src/internal/Observable.ts", "node_modules/rxjs/src/internal/util/lift.ts", "node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts", "node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts", "node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "node_modules/rxjs/src/internal/Subject.ts", "node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "node_modules/rxjs/src/internal/ReplaySubject.ts", "node_modules/rxjs/src/internal/scheduler/Action.ts", "node_modules/rxjs/src/internal/scheduler/intervalProvider.ts", "node_modules/rxjs/src/internal/scheduler/AsyncAction.ts", "node_modules/rxjs/src/internal/Scheduler.ts", "node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts", "node_modules/rxjs/src/internal/scheduler/async.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts", "node_modules/rxjs/src/internal/scheduler/animationFrame.ts", "node_modules/rxjs/src/internal/observable/empty.ts", "node_modules/rxjs/src/internal/util/isScheduler.ts", "node_modules/rxjs/src/internal/util/args.ts", "node_modules/rxjs/src/internal/util/isArrayLike.ts", "node_modules/rxjs/src/internal/util/isPromise.ts", "node_modules/rxjs/src/internal/util/isInteropObservable.ts", "node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "node_modules/rxjs/src/internal/symbol/iterator.ts", "node_modules/rxjs/src/internal/util/isIterable.ts", "node_modules/rxjs/src/internal/util/isReadableStreamLike.ts", "node_modules/rxjs/src/internal/observable/innerFrom.ts", "node_modules/rxjs/src/internal/util/executeSchedule.ts", "node_modules/rxjs/src/internal/operators/observeOn.ts", "node_modules/rxjs/src/internal/operators/subscribeOn.ts", "node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "node_modules/rxjs/src/internal/scheduled/scheduled.ts", "node_modules/rxjs/src/internal/observable/from.ts", "node_modules/rxjs/src/internal/observable/of.ts", "node_modules/rxjs/src/internal/observable/throwError.ts", "node_modules/rxjs/src/internal/util/EmptyError.ts", "node_modules/rxjs/src/internal/util/isDate.ts", "node_modules/rxjs/src/internal/operators/map.ts", "node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts", "node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts", "node_modules/rxjs/src/internal/util/createObject.ts", "node_modules/rxjs/src/internal/observable/combineLatest.ts", "node_modules/rxjs/src/internal/operators/mergeInternals.ts", "node_modules/rxjs/src/internal/operators/mergeMap.ts", "node_modules/rxjs/src/internal/operators/mergeAll.ts", "node_modules/rxjs/src/internal/operators/concatAll.ts", "node_modules/rxjs/src/internal/observable/concat.ts", "node_modules/rxjs/src/internal/observable/defer.ts", "node_modules/rxjs/src/internal/observable/fromEvent.ts", "node_modules/rxjs/src/internal/observable/fromEventPattern.ts", "node_modules/rxjs/src/internal/observable/timer.ts", "node_modules/rxjs/src/internal/observable/merge.ts", "node_modules/rxjs/src/internal/observable/never.ts", "node_modules/rxjs/src/internal/util/argsOrArgArray.ts", "node_modules/rxjs/src/internal/operators/filter.ts", "node_modules/rxjs/src/internal/observable/zip.ts", "node_modules/rxjs/src/internal/operators/audit.ts", "node_modules/rxjs/src/internal/operators/auditTime.ts", "node_modules/rxjs/src/internal/operators/bufferCount.ts", "node_modules/rxjs/src/internal/operators/catchError.ts", "node_modules/rxjs/src/internal/operators/scanInternals.ts", "node_modules/rxjs/src/internal/operators/combineLatest.ts", "node_modules/rxjs/src/internal/operators/combineLatestWith.ts", "node_modules/rxjs/src/internal/operators/debounceTime.ts", "node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts", "node_modules/rxjs/src/internal/operators/take.ts", "node_modules/rxjs/src/internal/operators/ignoreElements.ts", "node_modules/rxjs/src/internal/operators/mapTo.ts", "node_modules/rxjs/src/internal/operators/delayWhen.ts", "node_modules/rxjs/src/internal/operators/delay.ts", "node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts", "node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts", "node_modules/rxjs/src/internal/operators/throwIfEmpty.ts", "node_modules/rxjs/src/internal/operators/endWith.ts", "node_modules/rxjs/src/internal/operators/finalize.ts", "node_modules/rxjs/src/internal/operators/first.ts", "node_modules/rxjs/src/internal/operators/takeLast.ts", "node_modules/rxjs/src/internal/operators/merge.ts", "node_modules/rxjs/src/internal/operators/mergeWith.ts", "node_modules/rxjs/src/internal/operators/repeat.ts", "node_modules/rxjs/src/internal/operators/scan.ts", "node_modules/rxjs/src/internal/operators/share.ts", "node_modules/rxjs/src/internal/operators/shareReplay.ts", "node_modules/rxjs/src/internal/operators/skip.ts", "node_modules/rxjs/src/internal/operators/skipUntil.ts", "node_modules/rxjs/src/internal/operators/startWith.ts", "node_modules/rxjs/src/internal/operators/switchMap.ts", "node_modules/rxjs/src/internal/operators/takeUntil.ts", "node_modules/rxjs/src/internal/operators/takeWhile.ts", "node_modules/rxjs/src/internal/operators/tap.ts", "node_modules/rxjs/src/internal/operators/throttle.ts", "node_modules/rxjs/src/internal/operators/throttleTime.ts", "node_modules/rxjs/src/internal/operators/withLatestFrom.ts", "node_modules/rxjs/src/internal/operators/zip.ts", "node_modules/rxjs/src/internal/operators/zipWith.ts", "src/templates/assets/javascripts/browser/document/index.ts", "src/templates/assets/javascripts/browser/element/_/index.ts", "src/templates/assets/javascripts/browser/element/focus/index.ts", "src/templates/assets/javascripts/browser/element/hover/index.ts", "src/templates/assets/javascripts/browser/element/offset/_/index.ts", "src/templates/assets/javascripts/browser/element/offset/content/index.ts", "src/templates/assets/javascripts/utilities/h/index.ts", "src/templates/assets/javascripts/utilities/round/index.ts", "src/templates/assets/javascripts/browser/script/index.ts", "src/templates/assets/javascripts/browser/element/size/_/index.ts", "src/templates/assets/javascripts/browser/element/size/content/index.ts", "src/templates/assets/javascripts/browser/element/visibility/index.ts", "src/templates/assets/javascripts/browser/toggle/index.ts", "src/templates/assets/javascripts/browser/keyboard/index.ts", "src/templates/assets/javascripts/browser/location/_/index.ts", "src/templates/assets/javascripts/browser/location/hash/index.ts", "src/templates/assets/javascripts/browser/media/index.ts", "src/templates/assets/javascripts/browser/request/index.ts", "src/templates/assets/javascripts/browser/viewport/offset/index.ts", "src/templates/assets/javascripts/browser/viewport/size/index.ts", "src/templates/assets/javascripts/browser/viewport/_/index.ts", "src/templates/assets/javascripts/browser/viewport/at/index.ts", "src/templates/assets/javascripts/browser/worker/index.ts", "src/templates/assets/javascripts/_/index.ts", "src/templates/assets/javascripts/components/_/index.ts", "src/templates/assets/javascripts/components/announce/index.ts", "src/templates/assets/javascripts/components/consent/index.ts", "src/templates/assets/javascripts/templates/tooltip/index.tsx", "src/templates/assets/javascripts/templates/annotation/index.tsx", "src/templates/assets/javascripts/templates/clipboard/index.tsx", "src/templates/assets/javascripts/templates/search/index.tsx", "src/templates/assets/javascripts/templates/source/index.tsx", "src/templates/assets/javascripts/templates/tabbed/index.tsx", "src/templates/assets/javascripts/templates/table/index.tsx", "src/templates/assets/javascripts/templates/version/index.tsx", "src/templates/assets/javascripts/components/tooltip/index.ts", "src/templates/assets/javascripts/components/content/annotation/_/index.ts", "src/templates/assets/javascripts/components/content/annotation/list/index.ts", "src/templates/assets/javascripts/components/content/annotation/block/index.ts", "src/templates/assets/javascripts/components/content/code/_/index.ts", "src/templates/assets/javascripts/components/content/details/index.ts", "src/templates/assets/javascripts/components/content/mermaid/index.css", "src/templates/assets/javascripts/components/content/mermaid/index.ts", "src/templates/assets/javascripts/components/content/table/index.ts", "src/templates/assets/javascripts/components/content/tabs/index.ts", "src/templates/assets/javascripts/components/content/_/index.ts", "src/templates/assets/javascripts/components/dialog/index.ts", "src/templates/assets/javascripts/components/header/_/index.ts", "src/templates/assets/javascripts/components/header/title/index.ts", "src/templates/assets/javascripts/components/main/index.ts", "src/templates/assets/javascripts/components/palette/index.ts", "src/templates/assets/javascripts/components/progress/index.ts", "src/templates/assets/javascripts/integrations/clipboard/index.ts", "src/templates/assets/javascripts/integrations/sitemap/index.ts", "src/templates/assets/javascripts/integrations/instant/index.ts", "src/templates/assets/javascripts/integrations/search/highlighter/index.ts", "src/templates/assets/javascripts/integrations/search/worker/message/index.ts", "src/templates/assets/javascripts/integrations/search/worker/_/index.ts", "src/templates/assets/javascripts/integrations/version/index.ts", "src/templates/assets/javascripts/components/search/query/index.ts", "src/templates/assets/javascripts/components/search/result/index.ts", "src/templates/assets/javascripts/components/search/share/index.ts", "src/templates/assets/javascripts/components/search/suggest/index.ts", "src/templates/assets/javascripts/components/search/_/index.ts", "src/templates/assets/javascripts/components/search/highlight/index.ts", "src/templates/assets/javascripts/components/sidebar/index.ts", "src/templates/assets/javascripts/components/source/facts/github/index.ts", "src/templates/assets/javascripts/components/source/facts/gitlab/index.ts", "src/templates/assets/javascripts/components/source/facts/_/index.ts", "src/templates/assets/javascripts/components/source/_/index.ts", "src/templates/assets/javascripts/components/tabs/index.ts", "src/templates/assets/javascripts/components/toc/index.ts", "src/templates/assets/javascripts/components/top/index.ts", "src/templates/assets/javascripts/patches/ellipsis/index.ts", "src/templates/assets/javascripts/patches/indeterminate/index.ts", "src/templates/assets/javascripts/patches/scrollfix/index.ts", "src/templates/assets/javascripts/patches/scrolllock/index.ts", "src/templates/assets/javascripts/polyfills/index.ts"], - "sourcesContent": ["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * Applies the :focus-visible polyfill at the given scope.\n * A scope in this case is either the top-level Document or a Shadow Root.\n *\n * @param {(Document|ShadowRoot)} scope\n * @see https://github.com/WICG/focus-visible\n */\n function applyFocusVisiblePolyfill(scope) {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n\n var inputTypesAllowlist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n function isValidFocusTarget(el) {\n if (\n el &&\n el !== document &&\n el.nodeName !== 'HTML' &&\n el.nodeName !== 'BODY' &&\n 'classList' in el &&\n 'contains' in el.classList\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName === 'INPUT' && inputTypesAllowlist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n\n /**\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {KeyboardEvent} e\n */\n function onKeyDown(e) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n if (isValidFocusTarget(scope.activeElement)) {\n addFocusVisibleClass(scope.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (\n e.target.classList.contains('focus-visible') ||\n e.target.hasAttribute('data-focus-visible-added')\n ) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n hadFocusVisibleRecently = false;\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n function onVisibilityChange(e) {\n if (document.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n addInitialPointerMoveListeners();\n }\n }\n\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on whenever the\n // window blurs, even if you're tabbing out of the page. \u00AF\\_(\u30C4)_/\u00AF\n if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n // For some kinds of state, we are interested in changes at the global scope\n // only. For example, global pointer input, global key presses and global\n // visibility change should affect the state at every scope:\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n\n addInitialPointerMoveListeners();\n\n // For focus and blur, we specifically care about state changes in the local\n // scope. This is because focus / blur events that originate from within a\n // shadow root are not re-dispatched from the host element if it was already\n // the active element in its own scope:\n scope.addEventListener('focus', onFocus, true);\n scope.addEventListener('blur', onBlur, true);\n\n // We detect that a node is a ShadowRoot by ensuring that it is a\n // DocumentFragment and also has a host property. This check covers native\n // implementation and polyfill implementation transparently. If we only cared\n // about the native implementation, we could just check if the scope was\n // an instance of a ShadowRoot.\n if (scope.nodeType === Node.DOCUMENT_FRAGMENT_NODE && scope.host) {\n // Since a ShadowRoot is a special kind of DocumentFragment, it does not\n // have a root element to add a class to. So, we add this attribute to the\n // host element instead:\n scope.host.setAttribute('data-js-focus-visible', '');\n } else if (scope.nodeType === Node.DOCUMENT_NODE) {\n document.documentElement.classList.add('js-focus-visible');\n document.documentElement.setAttribute('data-js-focus-visible', '');\n }\n }\n\n // It is important to wrap all references to global window and document in\n // these checks to support server-side rendering use cases\n // @see https://github.com/WICG/focus-visible/issues/199\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Make the polyfill helper globally available. This can be used as a signal\n // to interested libraries that wish to coordinate with the polyfill for e.g.,\n // applying the polyfill to a shadow root:\n window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill;\n\n // Notify interested libraries of the polyfill's presence, in case the\n // polyfill was loaded lazily:\n var event;\n\n try {\n event = new CustomEvent('focus-visible-polyfill-ready');\n } catch (error) {\n // IE11 does not support using CustomEvent as a constructor directly:\n event = document.createEvent('CustomEvent');\n event.initCustomEvent('focus-visible-polyfill-ready', false, false, {});\n }\n\n window.dispatchEvent(event);\n }\n\n if (typeof document !== 'undefined') {\n // Apply the polyfill to the global document, so that no JavaScript\n // coordination is required to use the polyfill in the top-level document:\n applyFocusVisiblePolyfill(document);\n }\n\n})));\n", "/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT \u00A9 Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n try {\n return document.execCommand(type);\n } catch (err) {\n return false;\n }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n var selectedText = select_default()(target);\n command('cut');\n return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n fakeElement.style.fontSize = '12pt'; // Reset box model\n\n fakeElement.style.border = '0';\n fakeElement.style.padding = '0';\n fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n fakeElement.style.position = 'absolute';\n fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n fakeElement.style.top = \"\".concat(yPosition, \"px\");\n fakeElement.setAttribute('readonly', '');\n fakeElement.value = value;\n return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n var fakeElement = createFakeElement(value);\n options.container.appendChild(fakeElement);\n var selectedText = select_default()(fakeElement);\n command('copy');\n fakeElement.remove();\n return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n var selectedText = '';\n\n if (typeof target === 'string') {\n selectedText = fakeCopyAction(target, options);\n } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n selectedText = fakeCopyAction(target.value, options);\n } else {\n selectedText = select_default()(target);\n command('copy');\n }\n\n return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Defines base properties passed from constructor.\n var _options$action = options.action,\n action = _options$action === void 0 ? 'copy' : _options$action,\n container = options.container,\n target = options.target,\n text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n if (action !== 'copy' && action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n } // Sets the `target` property using an element that will be have its content copied.\n\n\n if (target !== undefined) {\n if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n if (action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n } // Define selection strategy based on `text` property.\n\n\n if (text) {\n return actions_copy(text, {\n container: container\n });\n } // Defines which selection strategy based on `target` property.\n\n\n if (target) {\n return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n container: container\n });\n }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n var attribute = \"data-clipboard-\".concat(suffix);\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n var _super = _createSuper(Clipboard);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n var _this;\n\n _classCallCheck(this, Clipboard);\n\n _this = _super.call(this);\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: \"listenClick\",\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n var action = this.action(trigger) || 'copy';\n var text = actions_default({\n action: action,\n container: this.container,\n target: this.target(trigger),\n text: this.text(trigger)\n }); // Fires an event based on the copy operation result.\n\n this.emit(text ? 'success' : 'error', {\n action: action,\n text: text,\n trigger: trigger,\n clearSelection: function clearSelection() {\n if (trigger) {\n trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultAction\",\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultTarget\",\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Allow fire programmatically a copy action\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @returns Text copied.\n */\n\n }, {\n key: \"defaultText\",\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.listener.destroy();\n }\n }], [{\n key: \"copy\",\n value: function copy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n return actions_copy(target, options);\n }\n /**\n * Allow fire programmatically a cut action\n * @param {String|HTMLElement} target\n * @returns Text cutted.\n */\n\n }, {\n key: \"cut\",\n value: function cut(target) {\n return actions_cut(target);\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n\n return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n", "/*\n * Copyright (c) 2016-2024 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport \"focus-visible\"\n\nimport {\n EMPTY,\n NEVER,\n Observable,\n Subject,\n defer,\n delay,\n filter,\n map,\n merge,\n mergeWith,\n shareReplay,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"./_\"\nimport {\n at,\n getActiveElement,\n getOptionalElement,\n requestJSON,\n setLocation,\n setToggle,\n watchDocument,\n watchKeyboard,\n watchLocation,\n watchLocationTarget,\n watchMedia,\n watchPrint,\n watchScript,\n watchViewport\n} from \"./browser\"\nimport {\n getComponentElement,\n getComponentElements,\n mountAnnounce,\n mountBackToTop,\n mountConsent,\n mountContent,\n mountDialog,\n mountHeader,\n mountHeaderTitle,\n mountPalette,\n mountProgress,\n mountSearch,\n mountSearchHiglight,\n mountSidebar,\n mountSource,\n mountTableOfContents,\n mountTabs,\n watchHeader,\n watchMain\n} from \"./components\"\nimport {\n SearchIndex,\n setupClipboardJS,\n setupInstantNavigation,\n setupVersionSelector\n} from \"./integrations\"\nimport {\n patchEllipsis,\n patchIndeterminate,\n patchScrollfix,\n patchScrolllock\n} from \"./patches\"\nimport \"./polyfills\"\n\n/* ----------------------------------------------------------------------------\n * Functions - @todo refactor\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch search index\n *\n * @returns Search index observable\n */\nfunction fetchSearchIndex(): Observable {\n if (location.protocol === \"file:\") {\n return watchScript(\n `${new URL(\"search/search_index.js\", config.base)}`\n )\n .pipe(\n // @ts-ignore - @todo fix typings\n map(() => __index),\n shareReplay(1)\n )\n } else {\n return requestJSON(\n new URL(\"search/search_index.json\", config.base)\n )\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Application\n * ------------------------------------------------------------------------- */\n\n/* Yay, JavaScript is available */\ndocument.documentElement.classList.remove(\"no-js\")\ndocument.documentElement.classList.add(\"js\")\n\n/* Set up navigation observables and subjects */\nconst document$ = watchDocument()\nconst location$ = watchLocation()\nconst target$ = watchLocationTarget(location$)\nconst keyboard$ = watchKeyboard()\n\n/* Set up media observables */\nconst viewport$ = watchViewport()\nconst tablet$ = watchMedia(\"(min-width: 960px)\")\nconst screen$ = watchMedia(\"(min-width: 1220px)\")\nconst print$ = watchPrint()\n\n/* Retrieve search index, if search is enabled */\nconst config = configuration()\nconst index$ = document.forms.namedItem(\"search\")\n ? fetchSearchIndex()\n : NEVER\n\n/* Set up Clipboard.js integration */\nconst alert$ = new Subject()\nsetupClipboardJS({ alert$ })\n\n/* Set up progress indicator */\nconst progress$ = new Subject()\n\n/* Set up instant navigation, if enabled */\nif (feature(\"navigation.instant\"))\n setupInstantNavigation({ location$, viewport$, progress$ })\n .subscribe(document$)\n\n/* Set up version selector */\nif (config.version?.provider === \"mike\")\n setupVersionSelector({ document$ })\n\n/* Always close drawer and search on navigation */\nmerge(location$, target$)\n .pipe(\n delay(125)\n )\n .subscribe(() => {\n setToggle(\"drawer\", false)\n setToggle(\"search\", false)\n })\n\n/* Set up global keyboard handlers */\nkeyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Go to previous page */\n case \"p\":\n case \",\":\n const prev = getOptionalElement(\"link[rel=prev]\")\n if (typeof prev !== \"undefined\")\n setLocation(prev)\n break\n\n /* Go to next page */\n case \"n\":\n case \".\":\n const next = getOptionalElement(\"link[rel=next]\")\n if (typeof next !== \"undefined\")\n setLocation(next)\n break\n\n /* Expand navigation, see https://bit.ly/3ZjG5io */\n case \"Enter\":\n const active = getActiveElement()\n if (active instanceof HTMLLabelElement)\n active.click()\n }\n })\n\n/* Set up patches */\npatchEllipsis({ document$ })\npatchIndeterminate({ document$, tablet$ })\npatchScrollfix({ document$ })\npatchScrolllock({ viewport$, tablet$ })\n\n/* Set up header and main area observable */\nconst header$ = watchHeader(getComponentElement(\"header\"), { viewport$ })\nconst main$ = document$\n .pipe(\n map(() => getComponentElement(\"main\")),\n switchMap(el => watchMain(el, { viewport$, header$ })),\n shareReplay(1)\n )\n\n/* Set up control component observables */\nconst control$ = merge(\n\n /* Consent */\n ...getComponentElements(\"consent\")\n .map(el => mountConsent(el, { target$ })),\n\n /* Dialog */\n ...getComponentElements(\"dialog\")\n .map(el => mountDialog(el, { alert$ })),\n\n /* Header */\n ...getComponentElements(\"header\")\n .map(el => mountHeader(el, { viewport$, header$, main$ })),\n\n /* Color palette */\n ...getComponentElements(\"palette\")\n .map(el => mountPalette(el)),\n\n /* Progress bar */\n ...getComponentElements(\"progress\")\n .map(el => mountProgress(el, { progress$ })),\n\n /* Search */\n ...getComponentElements(\"search\")\n .map(el => mountSearch(el, { index$, keyboard$ })),\n\n /* Repository information */\n ...getComponentElements(\"source\")\n .map(el => mountSource(el))\n)\n\n/* Set up content component observables */\nconst content$ = defer(() => merge(\n\n /* Announcement bar */\n ...getComponentElements(\"announce\")\n .map(el => mountAnnounce(el)),\n\n /* Content */\n ...getComponentElements(\"content\")\n .map(el => mountContent(el, { viewport$, target$, print$ })),\n\n /* Search highlighting */\n ...getComponentElements(\"content\")\n .map(el => feature(\"search.highlight\")\n ? mountSearchHiglight(el, { index$, location$ })\n : EMPTY\n ),\n\n /* Header title */\n ...getComponentElements(\"header-title\")\n .map(el => mountHeaderTitle(el, { viewport$, header$ })),\n\n /* Sidebar */\n ...getComponentElements(\"sidebar\")\n .map(el => el.getAttribute(\"data-md-type\") === \"navigation\"\n ? at(screen$, () => mountSidebar(el, { viewport$, header$, main$ }))\n : at(tablet$, () => mountSidebar(el, { viewport$, header$, main$ }))\n ),\n\n /* Navigation tabs */\n ...getComponentElements(\"tabs\")\n .map(el => mountTabs(el, { viewport$, header$ })),\n\n /* Table of contents */\n ...getComponentElements(\"toc\")\n .map(el => mountTableOfContents(el, {\n viewport$, header$, main$, target$\n })),\n\n /* Back-to-top button */\n ...getComponentElements(\"top\")\n .map(el => mountBackToTop(el, { viewport$, header$, main$, target$ }))\n))\n\n/* Set up component observables */\nconst component$ = document$\n .pipe(\n switchMap(() => content$),\n mergeWith(control$),\n shareReplay(1)\n )\n\n/* Subscribe to all components */\ncomponent$.subscribe()\n\n/* ----------------------------------------------------------------------------\n * Exports\n * ------------------------------------------------------------------------- */\n\nwindow.document$ = document$ /* Document observable */\nwindow.location$ = location$ /* Location subject */\nwindow.target$ = target$ /* Location target observable */\nwindow.keyboard$ = keyboard$ /* Keyboard observable */\nwindow.viewport$ = viewport$ /* Viewport observable */\nwindow.tablet$ = tablet$ /* Media tablet observable */\nwindow.screen$ = screen$ /* Media screen observable */\nwindow.print$ = print$ /* Media print observable */\nwindow.alert$ = alert$ /* Alert subject */\nwindow.progress$ = progress$ /* Progress indicator subject */\nwindow.component$ = component$ /* Component observable */\n", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n", "/**\n * Returns true if the object is a function.\n * @param value The value to check\n */\nexport function isFunction(value: any): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n", "/**\n * Used to create Error subclasses until the community moves away from ES5.\n *\n * This is because compiling from TypeScript down to ES5 has issues with subclassing Errors\n * as well as other built-in types: https://github.com/Microsoft/TypeScript/issues/12123\n *\n * @param createImpl A factory function to create the actual constructor implementation. The returned\n * function should be a named function that calls `_super` internally.\n */\nexport function createErrorClass(createImpl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (errors: any[]): UnsubscriptionError;\n}\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = createErrorClass(\n (_super) =>\n function UnsubscriptionErrorImpl(this: any, errors: (Error | string)[]) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n }\n);\n", "/**\n * Removes an item from an array, mutating it.\n * @param arr The array to remove the item from\n * @param item The item to remove\n */\nexport function arrRemove(arr: T[] | undefined | null, item: T) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n", "import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic, Unsubscribable } from './types';\nimport { arrRemove } from './util/arrRemove';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n */\n public closed = false;\n\n private _parentage: Subscription[] | Subscription | null = null;\n\n /**\n * The list of registered finalizers to execute upon unsubscription. Adding and removing from this\n * list occurs in the {@link #add} and {@link #remove} methods.\n */\n private _finalizers: Exclude[] | null = null;\n\n /**\n * @param initialTeardown A function executed first as part of the finalization\n * process that is kicked off when {@link #unsubscribe} is called.\n */\n constructor(private initialTeardown?: () => void) {}\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[] | undefined;\n\n if (!this.closed) {\n this.closed = true;\n\n // Remove this from it's parents.\n const { _parentage } = this;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n for (const parent of _parentage) {\n parent.remove(this);\n }\n } else {\n _parentage.remove(this);\n }\n }\n\n const { initialTeardown: initialFinalizer } = this;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n\n const { _finalizers } = this;\n if (_finalizers) {\n this._finalizers = null;\n for (const finalizer of _finalizers) {\n try {\n execFinalizer(finalizer);\n } catch (err) {\n errors = errors ?? [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n } else {\n errors.push(err);\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n\n /**\n * Adds a finalizer to this subscription, so that finalization will be unsubscribed/called\n * when this subscription is unsubscribed. If this subscription is already {@link #closed},\n * because it has already been unsubscribed, then whatever finalizer is passed to it\n * will automatically be executed (unless the finalizer itself is also a closed subscription).\n *\n * Closed Subscriptions cannot be added as finalizers to any subscription. Adding a closed\n * subscription to a any subscription will result in no operation. (A noop).\n *\n * Adding a subscription to itself, or adding `null` or `undefined` will not perform any\n * operation at all. (A noop).\n *\n * `Subscription` instances that are added to this instance will automatically remove themselves\n * if they are unsubscribed. Functions and {@link Unsubscribable} objects that you wish to remove\n * will need to be removed manually with {@link #remove}\n *\n * @param teardown The finalization logic to add to this subscription.\n */\n add(teardown: TeardownLogic): void {\n // Only add the finalizer if it's not undefined\n // and don't add a subscription to itself.\n if (teardown && teardown !== this) {\n if (this.closed) {\n // If this subscription is already closed,\n // execute whatever finalizer is handed to it automatically.\n execFinalizer(teardown);\n } else {\n if (teardown instanceof Subscription) {\n // We don't add closed subscriptions, and we don't add the same subscription\n // twice. Subscription unsubscribe is idempotent.\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = this._finalizers ?? []).push(teardown);\n }\n }\n }\n\n /**\n * Checks to see if a this subscription already has a particular parent.\n * This will signal that this subscription has already been added to the parent in question.\n * @param parent the parent to check for\n */\n private _hasParent(parent: Subscription) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n\n /**\n * Adds a parent to this subscription so it can be removed from the parent if it\n * unsubscribes on it's own.\n *\n * NOTE: THIS ASSUMES THAT {@link _hasParent} HAS ALREADY BEEN CHECKED.\n * @param parent The parent subscription to add\n */\n private _addParent(parent: Subscription) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n\n /**\n * Called on a child when it is removed via {@link #remove}.\n * @param parent The parent to remove\n */\n private _removeParent(parent: Subscription) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n } else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n\n /**\n * Removes a finalizer from this subscription that was previously added with the {@link #add} method.\n *\n * Note that `Subscription` instances, when unsubscribed, will automatically remove themselves\n * from every other `Subscription` they have been added to. This means that using the `remove` method\n * is not a common thing and should be used thoughtfully.\n *\n * If you add the same finalizer instance of a function or an unsubscribable object to a `Subscription` instance\n * more than once, you will need to call `remove` the same number of times to remove all instances.\n *\n * All finalizer instances are removed to free up memory upon unsubscription.\n *\n * @param teardown The finalizer to remove from this subscription\n */\n remove(teardown: Exclude): void {\n const { _finalizers } = this;\n _finalizers && arrRemove(_finalizers, teardown);\n\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\n\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\n\nexport function isSubscription(value: any): value is Subscription {\n return (\n value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe))\n );\n}\n\nfunction execFinalizer(finalizer: Unsubscribable | (() => void)) {\n if (isFunction(finalizer)) {\n finalizer();\n } else {\n finalizer.unsubscribe();\n }\n}\n", "import { Subscriber } from './Subscriber';\nimport { ObservableNotification } from './types';\n\n/**\n * The {@link GlobalConfig} object for RxJS. It is used to configure things\n * like how to react on unhandled errors.\n */\nexport const config: GlobalConfig = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like how to react on unhandled errors. Accessible via {@link config}\n * object.\n */\nexport interface GlobalConfig {\n /**\n * A registration point for unhandled errors from RxJS. These are errors that\n * cannot were not handled by consuming code in the usual subscription path. For\n * example, if you have this configured, and you subscribe to an observable without\n * providing an error handler, errors from that subscription will end up here. This\n * will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onUnhandledError: ((err: any) => void) | null;\n\n /**\n * A registration point for notifications that cannot be sent to subscribers because they\n * have completed, errored or have been explicitly unsubscribed. By default, next, complete\n * and error notifications sent to stopped subscribers are noops. However, sometimes callers\n * might want a different behavior. For example, with sources that attempt to report errors\n * to stopped subscribers, a caller can configure RxJS to throw an unhandled error instead.\n * This will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onStoppedNotification: ((notification: ObservableNotification, subscriber: Subscriber) => void) | null;\n\n /**\n * The promise constructor used by default for {@link Observable#toPromise toPromise} and {@link Observable#forEach forEach}\n * methods.\n *\n * @deprecated As of version 8, RxJS will no longer support this sort of injection of a\n * Promise constructor. If you need a Promise implementation other than native promises,\n * please polyfill/patch Promise as you see appropriate. Will be removed in v8.\n */\n Promise?: PromiseConstructorLike;\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BUY TIME\n * FOR MIGRATION REASONS.\n *\n * @deprecated As of version 8, RxJS will no longer support synchronous throwing\n * of unhandled errors. All errors will be thrown on a separate call stack to prevent bad\n * behaviors described above. Will be removed in v8.\n */\n useDeprecatedSynchronousErrorHandling: boolean;\n\n /**\n * If true, enables an as-of-yet undocumented feature from v5: The ability to access\n * `unsubscribe()` via `this` context in `next` functions created in observers passed\n * to `subscribe`.\n *\n * This is being removed because the performance was severely problematic, and it could also cause\n * issues when types other than POJOs are passed to subscribe as subscribers, as they will likely have\n * their `this` context overwritten.\n *\n * @deprecated As of version 8, RxJS will no longer support altering the\n * context of next functions provided as part of an observer to Subscribe. Instead,\n * you will have access to a subscription or a signal or token that will allow you to do things like\n * unsubscribe and test closed status. Will be removed in v8.\n */\n useDeprecatedNextContext: boolean;\n}\n", "import type { TimerHandle } from './timerHandle';\ntype SetTimeoutFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearTimeoutFunction = (handle: TimerHandle) => void;\n\ninterface TimeoutProvider {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n delegate:\n | {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n }\n | undefined;\n}\n\nexport const timeoutProvider: TimeoutProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setTimeout(handler: () => void, timeout?: number, ...args) {\n const { delegate } = timeoutProvider;\n if (delegate?.setTimeout) {\n return delegate.setTimeout(handler, timeout, ...args);\n }\n return setTimeout(handler, timeout, ...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return (delegate?.clearTimeout || clearTimeout)(handle as any);\n },\n delegate: undefined,\n};\n", "import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\n\n/**\n * Handles an error on another job either with the user-configured {@link onUnhandledError},\n * or by throwing it on that new job so it can be picked up by `window.onerror`, `process.on('error')`, etc.\n *\n * This should be called whenever there is an error that is out-of-band with the subscription\n * or when an error hits a terminal boundary of the subscription and no error handler was provided.\n *\n * @param err the error to report\n */\nexport function reportUnhandledError(err: any) {\n timeoutProvider.setTimeout(() => {\n const { onUnhandledError } = config;\n if (onUnhandledError) {\n // Execute the user-configured error handler.\n onUnhandledError(err);\n } else {\n // Throw so it is picked up by the runtime's uncaught error mechanism.\n throw err;\n }\n });\n}\n", "/* tslint:disable:no-empty */\nexport function noop() { }\n", "import { CompleteNotification, NextNotification, ErrorNotification } from './types';\n\n/**\n * A completion object optimized for memory use and created to be the\n * same \"shape\" as other notifications in v8.\n * @internal\n */\nexport const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined) as CompleteNotification)();\n\n/**\n * Internal use only. Creates an optimized error notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function errorNotification(error: any): ErrorNotification {\n return createNotification('E', undefined, error) as any;\n}\n\n/**\n * Internal use only. Creates an optimized next notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function nextNotification(value: T) {\n return createNotification('N', value, undefined) as NextNotification;\n}\n\n/**\n * Ensures that all notifications created internally have the same \"shape\" in v8.\n *\n * TODO: This is only exported to support a crazy legacy test in `groupBy`.\n * @internal\n */\nexport function createNotification(kind: 'N' | 'E' | 'C', value: any, error: any) {\n return {\n kind,\n value,\n error,\n };\n}\n", "import { config } from '../config';\n\nlet context: { errorThrown: boolean; error: any } | null = null;\n\n/**\n * Handles dealing with errors for super-gross mode. Creates a context, in which\n * any synchronously thrown errors will be passed to {@link captureError}. Which\n * will record the error such that it will be rethrown after the call back is complete.\n * TODO: Remove in v8\n * @param cb An immediately executed function.\n */\nexport function errorContext(cb: () => void) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context!;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n } else {\n // This is the general non-deprecated path for everyone that\n // isn't crazy enough to use super-gross mode (useDeprecatedSynchronousErrorHandling)\n cb();\n }\n}\n\n/**\n * Captures errors only in super-gross mode.\n * @param err the error to capture\n */\nexport function captureError(err: any) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n", "import { isFunction } from './util/isFunction';\nimport { Observer, ObservableNotification } from './types';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber\n */\nexport class Subscriber extends Subscription implements Observer {\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param next The `next` callback of an Observer.\n * @param error The `error` callback of an\n * Observer.\n * @param complete The `complete` callback of an\n * Observer.\n * @return A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n * @deprecated Do not use. Will be removed in v8. There is no replacement for this\n * method, and there is no reason to be creating instances of `Subscriber` directly.\n * If you have a specific use case, please file an issue.\n */\n static create(next?: (x?: T) => void, error?: (e?: any) => void, complete?: () => void): Subscriber {\n return new SafeSubscriber(next, error, complete);\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected isStopped: boolean = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected destination: Subscriber | Observer; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * There is no reason to directly create an instance of Subscriber. This type is exported for typings reasons.\n */\n constructor(destination?: Subscriber | Observer) {\n super();\n if (destination) {\n this.destination = destination;\n // Automatically chain subscriptions together here.\n // if destination is a Subscription, then it is a Subscriber.\n if (isSubscription(destination)) {\n destination.add(this);\n }\n } else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n } else {\n this._next(value!);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n } else {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n } else {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null!;\n }\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n try {\n this.destination.error(err);\n } finally {\n this.unsubscribe();\n }\n }\n\n protected _complete(): void {\n try {\n this.destination.complete();\n } finally {\n this.unsubscribe();\n }\n }\n}\n\n/**\n * This bind is captured here because we want to be able to have\n * compatibility with monoid libraries that tend to use a method named\n * `bind`. In particular, a library called Monio requires this.\n */\nconst _bind = Function.prototype.bind;\n\nfunction bind any>(fn: Fn, thisArg: any): Fn {\n return _bind.call(fn, thisArg);\n}\n\n/**\n * Internal optimization only, DO NOT EXPOSE.\n * @internal\n */\nclass ConsumerObserver implements Observer {\n constructor(private partialObserver: Partial>) {}\n\n next(value: T): void {\n const { partialObserver } = this;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n\n error(err: any): void {\n const { partialObserver } = this;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n } catch (error) {\n handleUnhandledError(error);\n }\n } else {\n handleUnhandledError(err);\n }\n }\n\n complete(): void {\n const { partialObserver } = this;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n}\n\nexport class SafeSubscriber extends Subscriber {\n constructor(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((e?: any) => void) | null,\n complete?: (() => void) | null\n ) {\n super();\n\n let partialObserver: Partial>;\n if (isFunction(observerOrNext) || !observerOrNext) {\n // The first argument is a function, not an observer. The next\n // two arguments *could* be observers, or they could be empty.\n partialObserver = {\n next: (observerOrNext ?? undefined) as (((value: T) => void) | undefined),\n error: error ?? undefined,\n complete: complete ?? undefined,\n };\n } else {\n // The first argument is a partial observer.\n let context: any;\n if (this && config.useDeprecatedNextContext) {\n // This is a deprecated path that made `this.unsubscribe()` available in\n // next handler functions passed to subscribe. This only exists behind a flag\n // now, as it is *very* slow.\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context),\n error: observerOrNext.error && bind(observerOrNext.error, context),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n };\n } else {\n // The \"normal\" path. Just use the partial observer directly.\n partialObserver = observerOrNext;\n }\n }\n\n // Wrap the partial observer to ensure it's a full observer, and\n // make sure proper error handling is accounted for.\n this.destination = new ConsumerObserver(partialObserver);\n }\n}\n\nfunction handleUnhandledError(error: any) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n } else {\n // Ideal path, we report this as an unhandled error,\n // which is thrown on a new call stack.\n reportUnhandledError(error);\n }\n}\n\n/**\n * An error handler used when no error handler was supplied\n * to the SafeSubscriber -- meaning no error handler was supplied\n * do the `subscribe` call on our observable.\n * @param err The error to handle\n */\nfunction defaultErrorHandler(err: any) {\n throw err;\n}\n\n/**\n * A handler for notifications that cannot be sent to a stopped subscriber.\n * @param notification The notification being sent\n * @param subscriber The stopped subscriber\n */\nfunction handleStoppedNotification(notification: ObservableNotification, subscriber: Subscriber) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\n\n/**\n * The observer used as a stub for subscriptions where the user did not\n * pass any arguments to `subscribe`. Comes with the default error handling\n * behavior.\n */\nexport const EMPTY_OBSERVER: Readonly> & { closed: true } = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n", "/**\n * Symbol.observable or a string \"@@observable\". Used for interop\n *\n * @deprecated We will no longer be exporting this symbol in upcoming versions of RxJS.\n * Instead polyfill and use Symbol.observable directly *or* use https://www.npmjs.com/package/symbol-observable\n */\nexport const observable: string | symbol = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n", "/**\n * This function takes one parameter and just returns it. Simply put,\n * this is like `(x: T): T => x`.\n *\n * ## Examples\n *\n * This is useful in some cases when using things like `mergeMap`\n *\n * ```ts\n * import { interval, take, map, range, mergeMap, identity } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(5));\n *\n * const result$ = source$.pipe(\n * map(i => range(i)),\n * mergeMap(identity) // same as mergeMap(x => x)\n * );\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * Or when you want to selectively apply an operator\n *\n * ```ts\n * import { interval, take, identity } from 'rxjs';\n *\n * const shouldLimit = () => Math.random() < 0.5;\n *\n * const source$ = interval(1000);\n *\n * const result$ = source$.pipe(shouldLimit() ? take(5) : identity);\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * @param x Any value that is returned by this function\n * @returns The value passed as the first parameter to this function\n */\nexport function identity(x: T): T {\n return x;\n}\n", "import { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\nexport function pipe(): typeof identity;\nexport function pipe(fn1: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction,\n fn8: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction,\n fn8: UnaryFunction,\n fn9: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction,\n fn8: UnaryFunction,\n fn9: UnaryFunction,\n ...fns: UnaryFunction[]\n): UnaryFunction;\n\n/**\n * pipe() can be called on one or more functions, each of which can take one argument (\"UnaryFunction\")\n * and uses it to return a value.\n * It returns a function that takes one argument, passes it to the first UnaryFunction, and then\n * passes the result to the next one, passes that result to the next one, and so on. \n */\nexport function pipe(...fns: Array>): UnaryFunction {\n return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray(fns: Array>): UnaryFunction {\n if (fns.length === 0) {\n return identity as UnaryFunction;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction) => fn(prev), input as any);\n };\n}\n", "import { Operator } from './Operator';\nimport { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription, Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, Subscribable, Observer } from './types';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable\n */\nexport class Observable implements Subscribable {\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n source: Observable | undefined;\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n operator: Operator | undefined;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable, subscriber: Subscriber) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new Observable by calling the Observable constructor\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new observable\n * @nocollapse\n * @deprecated Use `new Observable()` instead. Will be removed in v8.\n */\n static create: (...args: any[]) => any = (subscribe?: (subscriber: Subscriber) => TeardownLogic) => {\n return new Observable(subscribe);\n };\n\n /**\n * Creates a new Observable, with this Observable instance as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param operator the operator defining the operation to take on the observable\n * @return a new observable with the Operator applied\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * If you have implemented an operator using `lift`, it is recommended that you create an\n * operator by simply returning `new Observable()` directly. See \"Creating new operators from\n * scratch\" section here: https://rxjs.dev/guide/operators\n */\n lift(operator?: Operator): Observable {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observerOrNext?: Partial> | ((value: T) => void)): Subscription;\n /** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\n subscribe(next?: ((value: T) => void) | null, error?: ((error: any) => void) | null, complete?: (() => void) | null): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * Use it when you have all these Observables, but still nothing is happening.\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular, do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided and an error happens,\n * it will be thrown asynchronously. Errors thrown asynchronously cannot be caught using `try`/`catch`. Instead,\n * use the {@link onUnhandledError} configuration option or use a runtime handler (like `window.onerror` or\n * `process.on('error)`) to be notified of unhandled errors. Because of this, it's recommended that you provide\n * an `error` method to avoid missing thrown errors.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of an Observer,\n * if you do not need to listen for something, you can omit a function by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to the `error` function, as with an Observer, if not provided, errors emitted by an Observable will be thrown asynchronously.\n *\n * You can, however, subscribe with no parameters at all. This may be the case where you're not interested in terminal events\n * and you also handled emissions internally by using operators (e.g. using `tap`).\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * #### Examples\n *\n * Subscribe with an {@link guide/observer Observer}\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Subscribe with functions ({@link deprecations/subscribe-arguments deprecated})\n *\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Cancel a subscription\n *\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe({\n * next(num) {\n * console.log(num)\n * },\n * complete() {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * });\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 'unsubscribed!' after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown asynchronously as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {Subscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n ): Subscription {\n const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(\n operator\n ? // We're dealing with a subscription in the\n // operator chain to one of our lifted operators.\n operator.call(subscriber, source)\n : source\n ? // If `source` has a value, but `operator` does not, something that\n // had intimate knowledge of our API, like our `Subject`, must have\n // set it. We're going to just call `_subscribe` directly.\n this._subscribe(subscriber)\n : // In all other cases, we're likely wrapping a user-provided initializer\n // function, so we need to catch errors and handle them appropriately.\n this._trySubscribe(subscriber)\n );\n });\n\n return subscriber;\n }\n\n /** @internal */\n protected _trySubscribe(sink: Subscriber): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n // We don't need to return anything in this case,\n // because it's just going to try to `add()` to a subscription\n // above.\n sink.error(err);\n }\n }\n\n /**\n * Used as a NON-CANCELLABLE means of subscribing to an observable, for use with\n * APIs that expect promises, like `async/await`. You cannot unsubscribe from this.\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * #### Example\n *\n * ```ts\n * import { interval, take } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(4));\n *\n * async function getTotal() {\n * let total = 0;\n *\n * await source$.forEach(value => {\n * total += value;\n * console.log('observable -> ' + value);\n * });\n *\n * return total;\n * }\n *\n * getTotal().then(\n * total => console.log('Total: ' + total)\n * );\n *\n * // Expected:\n * // 'observable -> 0'\n * // 'observable -> 1'\n * // 'observable -> 2'\n * // 'observable -> 3'\n * // 'Total: 6'\n * ```\n *\n * @param next a handler for each value emitted by the observable\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void): Promise;\n\n /**\n * @param next a handler for each value emitted by the observable\n * @param promiseCtor a constructor function used to instantiate the Promise\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n * @deprecated Passing a Promise constructor will no longer be available\n * in upcoming versions of RxJS. This is because it adds weight to the library, for very\n * little benefit. If you need this functionality, it is recommended that you either\n * polyfill Promise, or you create an adapter to convert the returned native promise\n * to whatever promise implementation you wanted. Will be removed in v8.\n */\n forEach(next: (value: T) => void, promiseCtor: PromiseConstructorLike): Promise;\n\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n }) as Promise;\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): TeardownLogic {\n return this.source?.subscribe(subscriber);\n }\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable;\n pipe(op1: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction,\n op9: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction,\n op9: OperatorFunction,\n ...operations: OperatorFunction[]\n ): Observable;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ## Example\n *\n * ```ts\n * import { interval, filter, map, scan } from 'rxjs';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x));\n * ```\n */\n pipe(...operations: OperatorFunction[]): Observable {\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(): Promise;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: typeof Promise): Promise;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: PromiseConstructorLike): Promise;\n /* tslint:enable:max-line-length */\n\n /**\n * Subscribe to this Observable and get a Promise resolving on\n * `complete` with the last emission (if any).\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * @method toPromise\n * @param [promiseCtor] a constructor function used to instantiate\n * the Promise\n * @return A Promise that resolves with the last value emit, or\n * rejects on an error. If there were no emissions, Promise\n * resolves with undefined.\n * @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise\n */\n toPromise(promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: T | undefined;\n this.subscribe(\n (x: T) => (value = x),\n (err: any) => reject(err),\n () => resolve(value)\n );\n }) as Promise;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n return promiseCtor ?? config.Promise ?? Promise;\n}\n\nfunction isObserver(value: any): value is Observer {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\n\nfunction isSubscriber(value: any): value is Subscriber {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n", "import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\nimport { isFunction } from './isFunction';\n\n/**\n * Used to determine if an object is an Observable with a lift function.\n */\nexport function hasLift(source: any): source is { lift: InstanceType['lift'] } {\n return isFunction(source?.lift);\n}\n\n/**\n * Creates an `OperatorFunction`. Used to define operators throughout the library in a concise way.\n * @param init The logic to connect the liftedSource to the subscriber at the moment of subscription.\n */\nexport function operate(\n init: (liftedSource: Observable, subscriber: Subscriber) => (() => void) | void\n): OperatorFunction {\n return (source: Observable) => {\n if (hasLift(source)) {\n return source.lift(function (this: Subscriber, liftedSource: Observable) {\n try {\n return init(liftedSource, this);\n } catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n", "import { Subscriber } from '../Subscriber';\n\n/**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional teardown logic here. This will only be called on teardown if the\n * subscriber itself is not already closed. This is called after all other teardown logic is executed.\n */\nexport function createOperatorSubscriber(\n destination: Subscriber,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n onFinalize?: () => void\n): Subscriber {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\n\n/**\n * A generic helper for allowing operators to be created with a Subscriber and\n * use closures to capture necessary state from the operator function itself.\n */\nexport class OperatorSubscriber extends Subscriber {\n /**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional finalization logic here. This will only be called on finalization if the\n * subscriber itself is not already closed. This is called after all other finalization logic is executed.\n * @param shouldUnsubscribe An optional check to see if an unsubscribe call should truly unsubscribe.\n * NOTE: This currently **ONLY** exists to support the strange behavior of {@link groupBy}, where unsubscription\n * to the resulting observable does not actually disconnect from the source if there are active subscriptions\n * to any grouped observable. (DO NOT EXPOSE OR USE EXTERNALLY!!!)\n */\n constructor(\n destination: Subscriber,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n private onFinalize?: () => void,\n private shouldUnsubscribe?: () => boolean\n ) {\n // It's important - for performance reasons - that all of this class's\n // members are initialized and that they are always initialized in the same\n // order. This will ensure that all OperatorSubscriber instances have the\n // same hidden class in V8. This, in turn, will help keep the number of\n // hidden classes involved in property accesses within the base class as\n // low as possible. If the number of hidden classes involved exceeds four,\n // the property accesses will become megamorphic and performance penalties\n // will be incurred - i.e. inline caches won't be used.\n //\n // The reasons for ensuring all instances have the same hidden class are\n // further discussed in this blog post from Benedikt Meurer:\n // https://benediktmeurer.de/2018/03/23/impact-of-polymorphism-on-component-based-frameworks-like-react/\n super(destination);\n this._next = onNext\n ? function (this: OperatorSubscriber, value: T) {\n try {\n onNext(value);\n } catch (err) {\n destination.error(err);\n }\n }\n : super._next;\n this._error = onError\n ? function (this: OperatorSubscriber, err: any) {\n try {\n onError(err);\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._error;\n this._complete = onComplete\n ? function (this: OperatorSubscriber) {\n try {\n onComplete();\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._complete;\n }\n\n unsubscribe() {\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n const { closed } = this;\n super.unsubscribe();\n // Execute additional teardown if we have any and we didn't already do so.\n !closed && this.onFinalize?.();\n }\n }\n}\n", "import { Subscription } from '../Subscription';\n\ninterface AnimationFrameProvider {\n schedule(callback: FrameRequestCallback): Subscription;\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n delegate:\n | {\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n }\n | undefined;\n}\n\nexport const animationFrameProvider: AnimationFrameProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n schedule(callback) {\n let request = requestAnimationFrame;\n let cancel: typeof cancelAnimationFrame | undefined = cancelAnimationFrame;\n const { delegate } = animationFrameProvider;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n const handle = request((timestamp) => {\n // Clear the cancel function. The request has been fulfilled, so\n // attempting to cancel the request upon unsubscription would be\n // pointless.\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(() => cancel?.(handle));\n },\n requestAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return (delegate?.requestAnimationFrame || requestAnimationFrame)(...args);\n },\n cancelAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return (delegate?.cancelAnimationFrame || cancelAnimationFrame)(...args);\n },\n delegate: undefined,\n};\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface ObjectUnsubscribedError extends Error {}\n\nexport interface ObjectUnsubscribedErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (): ObjectUnsubscribedError;\n}\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = createErrorClass(\n (_super) =>\n function ObjectUnsubscribedErrorImpl(this: any) {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n }\n);\n", "import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n */\nexport class Subject extends Observable implements SubscriptionLike {\n closed = false;\n\n private currentObservers: Observer[] | null = null;\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n observers: Observer[] = [];\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n isStopped = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n hasError = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n thrownError: any = null;\n\n /**\n * Creates a \"subject\" by basically gluing an observer to an observable.\n *\n * @nocollapse\n * @deprecated Recommended you do not use. Will be removed at some point in the future. Plans for replacement still under discussion.\n */\n static create: (...args: any[]) => any = (destination: Observer, source: Observable): AnonymousSubject => {\n return new AnonymousSubject(destination, source);\n };\n\n constructor() {\n // NOTE: This must be here to obscure Observable's constructor.\n super();\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n lift(operator: Operator): Observable {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator as any;\n return subject as any;\n }\n\n /** @internal */\n protected _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n\n next(value: T) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n if (!this.currentObservers) {\n this.currentObservers = Array.from(this.observers);\n }\n for (const observer of this.currentObservers) {\n observer.next(value);\n }\n }\n });\n }\n\n error(err: any) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.hasError = this.isStopped = true;\n this.thrownError = err;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.error(err);\n }\n }\n });\n }\n\n complete() {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.isStopped = true;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.complete();\n }\n }\n });\n }\n\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null!;\n }\n\n get observed() {\n return this.observers?.length > 0;\n }\n\n /** @internal */\n protected _trySubscribe(subscriber: Subscriber): TeardownLogic {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n\n /** @internal */\n protected _innerSubscribe(subscriber: Subscriber) {\n const { hasError, isStopped, observers } = this;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(() => {\n this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n }\n\n /** @internal */\n protected _checkFinalizedStatuses(subscriber: Subscriber) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped) {\n subscriber.complete();\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create custom Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable {\n const observable: any = new Observable();\n observable.source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject\n */\nexport class AnonymousSubject extends Subject {\n constructor(\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n public destination?: Observer,\n source?: Observable\n ) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n this.destination?.next?.(value);\n }\n\n error(err: any) {\n this.destination?.error?.(err);\n }\n\n complete() {\n this.destination?.complete?.();\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n return this.source?.subscribe(subscriber) ?? EMPTY_SUBSCRIPTION;\n }\n}\n", "import { TimestampProvider } from '../types';\n\ninterface DateTimestampProvider extends TimestampProvider {\n delegate: TimestampProvider | undefined;\n}\n\nexport const dateTimestampProvider: DateTimestampProvider = {\n now() {\n // Use the variable rather than `this` so that the function can be called\n // without being bound to the provider.\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n", "import { Subject } from './Subject';\nimport { TimestampProvider } from './types';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * A variant of {@link Subject} that \"replays\" old values to new subscribers by emitting them when they first subscribe.\n *\n * `ReplaySubject` has an internal buffer that will store a specified number of values that it has observed. Like `Subject`,\n * `ReplaySubject` \"observes\" values by having them passed to its `next` method. When it observes a value, it will store that\n * value for a time determined by the configuration of the `ReplaySubject`, as passed to its constructor.\n *\n * When a new subscriber subscribes to the `ReplaySubject` instance, it will synchronously emit all values in its buffer in\n * a First-In-First-Out (FIFO) manner. The `ReplaySubject` will also complete, if it has observed completion; and it will\n * error if it has observed an error.\n *\n * There are two main configuration items to be concerned with:\n *\n * 1. `bufferSize` - This will determine how many items are stored in the buffer, defaults to infinite.\n * 2. `windowTime` - The amount of time to hold a value in the buffer before removing it from the buffer.\n *\n * Both configurations may exist simultaneously. So if you would like to buffer a maximum of 3 values, as long as the values\n * are less than 2 seconds old, you could do so with a `new ReplaySubject(3, 2000)`.\n *\n * ### Differences with BehaviorSubject\n *\n * `BehaviorSubject` is similar to `new ReplaySubject(1)`, with a couple of exceptions:\n *\n * 1. `BehaviorSubject` comes \"primed\" with a single value upon construction.\n * 2. `ReplaySubject` will replay values, even after observing an error, where `BehaviorSubject` will not.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n * @see {@link shareReplay}\n */\nexport class ReplaySubject extends Subject {\n private _buffer: (T | number)[] = [];\n private _infiniteTimeWindow = true;\n\n /**\n * @param bufferSize The size of the buffer to replay on subscription\n * @param windowTime The amount of time the buffered items will stay buffered\n * @param timestampProvider An object with a `now()` method that provides the current timestamp. This is used to\n * calculate the amount of time something has been buffered.\n */\n constructor(\n private _bufferSize = Infinity,\n private _windowTime = Infinity,\n private _timestampProvider: TimestampProvider = dateTimestampProvider\n ) {\n super();\n this._infiniteTimeWindow = _windowTime === Infinity;\n this._bufferSize = Math.max(1, _bufferSize);\n this._windowTime = Math.max(1, _windowTime);\n }\n\n next(value: T): void {\n const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n super.next(value);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n this._throwIfClosed();\n this._trimBuffer();\n\n const subscription = this._innerSubscribe(subscriber);\n\n const { _infiniteTimeWindow, _buffer } = this;\n // We use a copy here, so reentrant code does not mutate our array while we're\n // emitting it to a new subscriber.\n const copy = _buffer.slice();\n for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i] as T);\n }\n\n this._checkFinalizedStatuses(subscriber);\n\n return subscription;\n }\n\n private _trimBuffer() {\n const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;\n // If we don't have an infinite buffer size, and we're over the length,\n // use splice to truncate the old buffer values off. Note that we have to\n // double the size for instances where we're not using an infinite time window\n // because we're storing the values and the timestamps in the same array.\n const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n\n // Now, if we're not in an infinite time window, remove all values where the time is\n // older than what is allowed.\n if (!_infiniteTimeWindow) {\n const now = _timestampProvider.now();\n let last = 0;\n // Search the array for the first timestamp that isn't expired and\n // truncate the buffer up to that point.\n for (let i = 1; i < _buffer.length && (_buffer[i] as number) <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n }\n}\n", "import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action\n */\nexport class Action extends Subscription {\n constructor(scheduler: Scheduler, work: (this: SchedulerAction, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n", "import type { TimerHandle } from './timerHandle';\ntype SetIntervalFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearIntervalFunction = (handle: TimerHandle) => void;\n\ninterface IntervalProvider {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n delegate:\n | {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n }\n | undefined;\n}\n\nexport const intervalProvider: IntervalProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setInterval(handler: () => void, timeout?: number, ...args) {\n const { delegate } = intervalProvider;\n if (delegate?.setInterval) {\n return delegate.setInterval(handler, timeout, ...args);\n }\n return setInterval(handler, timeout, ...args);\n },\n clearInterval(handle) {\n const { delegate } = intervalProvider;\n return (delegate?.clearInterval || clearInterval)(handle as any);\n },\n delegate: undefined,\n};\n", "import { Action } from './Action';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncAction extends Action {\n public id: TimerHandle | undefined;\n public state?: T;\n // @ts-ignore: Property has no initializer and is not definitely assigned\n public delay: number;\n protected pending: boolean = false;\n\n constructor(protected scheduler: AsyncScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (this.closed) {\n return this;\n }\n\n // Always replace the current state with the new state.\n this.state = state;\n\n const id = this.id;\n const scheduler = this.scheduler;\n\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id ?? this.requestAsyncId(scheduler, this.id, delay);\n\n return this;\n }\n\n protected requestAsyncId(scheduler: AsyncScheduler, _id?: TimerHandle, delay: number = 0): TimerHandle {\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n\n protected recycleAsyncId(_scheduler: AsyncScheduler, id?: TimerHandle, delay: number | null = 0): TimerHandle | undefined {\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n\n return undefined;\n }\n\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n public execute(state: T, delay: number): any {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n\n protected _execute(state: T, _delay: number): any {\n let errored: boolean = false;\n let errorValue: any;\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n // HACK: Since code elsewhere is relying on the \"truthiness\" of the\n // return here, we can't have it return \"\" or 0 or false.\n // TODO: Clean this up when we refactor schedulers mid-version-8 or so.\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n\n unsubscribe() {\n if (!this.closed) {\n const { id, scheduler } = this;\n const { actions } = scheduler;\n\n this.work = this.state = this.scheduler = null!;\n this.pending = false;\n\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null!;\n super.unsubscribe();\n }\n }\n}\n", "import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}. Will be made internal in v8.\n */\nexport class Scheduler implements SchedulerLike {\n public static now: () => number = dateTimestampProvider.now;\n\n constructor(private schedulerActionCtor: typeof Action, now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n }\n}\n", "import { Scheduler } from '../Scheduler';\nimport { Action } from './Action';\nimport { AsyncAction } from './AsyncAction';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncScheduler extends Scheduler {\n public actions: Array> = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n * @internal\n */\n public _active: boolean = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n * @internal\n */\n public _scheduled: TimerHandle | undefined;\n\n constructor(SchedulerAction: typeof Action, now: () => number = Scheduler.now) {\n super(SchedulerAction, now);\n }\n\n public flush(action: AsyncAction): void {\n const { actions } = this;\n\n if (this._active) {\n actions.push(action);\n return;\n }\n\n let error: any;\n this._active = true;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()!)); // exhaust the scheduler queue\n\n this._active = false;\n\n if (error) {\n while ((action = actions.shift()!)) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n", "import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * Schedule task as if you used setTimeout(task, duration)\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asapScheduler} scheduler.\n *\n * ## Examples\n * Use async scheduler to delay task\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * const task = () => console.log('it works!');\n *\n * asyncScheduler.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n * ```\n *\n * Use async scheduler to repeat task in intervals\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * asyncScheduler.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n * ```\n */\n\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\n\n/**\n * @deprecated Renamed to {@link asyncScheduler}. Will be removed in v8.\n */\nexport const async = asyncScheduler;\n", "import { AsyncAction } from './AsyncAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nimport { SchedulerAction } from '../types';\nimport { animationFrameProvider } from './animationFrameProvider';\nimport { TimerHandle } from './timerHandle';\n\nexport class AnimationFrameAction extends AsyncAction {\n constructor(protected scheduler: AnimationFrameScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AnimationFrameScheduler, id?: TimerHandle, delay: number = 0): TimerHandle {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If an animation frame has already been requested, don't request another\n // one. If an animation frame hasn't been requested yet, request one. Return\n // the current animation frame request id.\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(() => scheduler.flush(undefined)));\n }\n\n protected recycleAsyncId(scheduler: AnimationFrameScheduler, id?: TimerHandle, delay: number = 0): TimerHandle | undefined {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if (delay != null ? delay > 0 : this.delay > 0) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue has no remaining actions with the same async id,\n // cancel the requested animation frame and set the scheduled flag to\n // undefined so the next AnimationFrameAction will request its own.\n const { actions } = scheduler;\n if (id != null && actions[actions.length - 1]?.id !== id) {\n animationFrameProvider.cancelAnimationFrame(id as number);\n scheduler._scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n", "import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AnimationFrameScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n this._active = true;\n // The async id that effects a call to flush is stored in _scheduled.\n // Before executing an action, it's necessary to check the action's async\n // id to determine whether it's supposed to be executed in the current\n // flush.\n // Previous implementations of this method used a count to determine this,\n // but that was unsound, as actions that are unsubscribed - i.e. cancelled -\n // are removed from the actions array and that can shift actions that are\n // scheduled to be executed in a subsequent flush into positions at which\n // they are executed within the current flush.\n const flushId = this._scheduled;\n this._scheduled = undefined;\n\n const { actions } = this;\n let error: any;\n action = action || actions.shift()!;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n\n this._active = false;\n\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n", "import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\n\n/**\n *\n * Animation Frame Scheduler\n *\n * Perform task when `window.requestAnimationFrame` would fire\n *\n * When `animationFrame` scheduler is used with delay, it will fall back to {@link asyncScheduler} scheduler\n * behaviour.\n *\n * Without delay, `animationFrame` scheduler can be used to create smooth browser animations.\n * It makes sure scheduled task will happen just before next browser content repaint,\n * thus performing animations as efficiently as possible.\n *\n * ## Example\n * Schedule div height animation\n * ```ts\n * // html:

    \n * import { animationFrameScheduler } from 'rxjs';\n *\n * const div = document.querySelector('div');\n *\n * animationFrameScheduler.schedule(function(height) {\n * div.style.height = height + \"px\";\n *\n * this.schedule(height + 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * }, 0, 0);\n *\n * // You will see a div element growing in height\n * ```\n */\n\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\n\n/**\n * @deprecated Renamed to {@link animationFrameScheduler}. Will be removed in v8.\n */\nexport const animationFrame = animationFrameScheduler;\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * A simple Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * Just emits 'complete', and nothing else.\n *\n * ![](empty.png)\n *\n * A simple Observable that only emits the complete notification. It can be used\n * for composing with other Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n *\n * Log complete notification\n *\n * ```ts\n * import { EMPTY } from 'rxjs';\n *\n * EMPTY.subscribe({\n * next: () => console.log('Next'),\n * complete: () => console.log('Complete!')\n * });\n *\n * // Outputs\n * // Complete!\n * ```\n *\n * Emit the number 7, then complete\n *\n * ```ts\n * import { EMPTY, startWith } from 'rxjs';\n *\n * const result = EMPTY.pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n *\n * // Outputs\n * // 7\n * ```\n *\n * Map and flatten only odd numbers to the sequence `'a'`, `'b'`, `'c'`\n *\n * ```ts\n * import { interval, mergeMap, of, EMPTY } from 'rxjs';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n * mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : EMPTY),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval, e.g. (0, 1, 2, 3, ...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1, print a, b, c (each on its own)\n * // if x % 2 is not equal to 1, nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link NEVER}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const EMPTY = new Observable((subscriber) => subscriber.complete());\n\n/**\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @deprecated Replaced with the {@link EMPTY} constant or {@link scheduled} (e.g. `scheduled([], scheduler)`). Will be removed in v8.\n */\nexport function empty(scheduler?: SchedulerLike) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n return new Observable((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport function isScheduler(value: any): value is SchedulerLike {\n return value && isFunction(value.schedule);\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\n\nfunction last(arr: T[]): T | undefined {\n return arr[arr.length - 1];\n}\n\nexport function popResultSelector(args: any[]): ((...args: unknown[]) => unknown) | undefined {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\n\nexport function popScheduler(args: any[]): SchedulerLike | undefined {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\n\nexport function popNumber(args: any[], defaultValue: number): number {\n return typeof last(args) === 'number' ? args.pop()! : defaultValue;\n}\n", "export const isArrayLike = ((x: any): x is ArrayLike => x && typeof x.length === 'number' && typeof x !== 'function');", "import { isFunction } from \"./isFunction\";\n\n/**\n * Tests to see if the object is \"thennable\".\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike {\n return isFunction(value?.then);\n}\n", "import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable {\n return isFunction(input[Symbol_observable]);\n}\n", "import { isFunction } from './isFunction';\n\nexport function isAsyncIterable(obj: any): obj is AsyncIterable {\n return Symbol.asyncIterator && isFunction(obj?.[Symbol.asyncIterator]);\n}\n", "/**\n * Creates the TypeError to throw if an invalid object is passed to `from` or `scheduled`.\n * @param input The object that was passed.\n */\nexport function createInvalidObservableTypeError(input: any) {\n // TODO: We should create error codes that can be looked up, so this can be less verbose.\n return new TypeError(\n `You provided ${\n input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`\n } where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`\n );\n}\n", "export function getSymbolIterator(): symbol {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator' as any;\n }\n\n return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n", "import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable {\n return isFunction(input?.[Symbol_iterator]);\n}\n", "import { ReadableStreamLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport async function* readableStreamLikeToAsyncGenerator(readableStream: ReadableStreamLike): AsyncGenerator {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n return;\n }\n yield value!;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nexport function isReadableStreamLike(obj: any): obj is ReadableStreamLike {\n // We don't want to use instanceof checks because they would return\n // false for instances from another Realm, like an - - -

    For a quick local setup of Kuadrant, see our Single Cluster or Multi Cluster guides. -Explore the single and multi-cluster architecture in our Architectural Overview.

    - - - - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/config/samples/kuadrant_v1alpha1_dnspolicy.yaml b/0.10.0/kuadrant-operator/config/samples/kuadrant_v1alpha1_dnspolicy.yaml deleted file mode 100644 index 10dc274ce..000000000 --- a/0.10.0/kuadrant-operator/config/samples/kuadrant_v1alpha1_dnspolicy.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -apiVersion: kuadrant.io/v1alpha1 -kind: DNSPolicy -metadata: - name: dnspolicy-sample -spec: - targetRef: - name: example-gateway - group: gateway.networking.k8s.io - kind: Gateway - healthCheck: - endpoint: / - protocol: HTTP diff --git a/0.10.0/kuadrant-operator/config/samples/kuadrant_v1alpha1_tlspolicy.yaml b/0.10.0/kuadrant-operator/config/samples/kuadrant_v1alpha1_tlspolicy.yaml deleted file mode 100644 index 89dc838d0..000000000 --- a/0.10.0/kuadrant-operator/config/samples/kuadrant_v1alpha1_tlspolicy.yaml +++ /dev/null @@ -1,14 +0,0 @@ ---- -apiVersion: kuadrant.io/v1alpha1 -kind: TLSPolicy -metadata: - name: tlspolicy-sample -spec: - targetRef: - name: example-gateway - group: gateway.networking.k8s.io - kind: Gateway - issuerRef: - group: cert-manager.io - kind: ClusterIssuer - name: self-signed-ca diff --git a/0.10.0/kuadrant-operator/config/samples/kuadrant_v1beta1_kuadrant.yaml b/0.10.0/kuadrant-operator/config/samples/kuadrant_v1beta1_kuadrant.yaml deleted file mode 100644 index 29de2d9a1..000000000 --- a/0.10.0/kuadrant-operator/config/samples/kuadrant_v1beta1_kuadrant.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -apiVersion: kuadrant.io/v1beta1 -kind: Kuadrant -metadata: - name: kuadrant-sample -spec: {} diff --git a/0.10.0/kuadrant-operator/config/samples/kuadrant_v1beta2_authpolicy.yaml b/0.10.0/kuadrant-operator/config/samples/kuadrant_v1beta2_authpolicy.yaml deleted file mode 100644 index 23954bbd9..000000000 --- a/0.10.0/kuadrant-operator/config/samples/kuadrant_v1beta2_authpolicy.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -apiVersion: kuadrant.io/v1beta2 -kind: AuthPolicy -metadata: - name: toystore -spec: - targetRef: - group: gateway.networking.k8s.io - kind: HTTPRoute - name: toystore - rules: - authentication: - "apikey": - apiKey: - selector: {} - credentials: - authorizationHeader: - prefix: APIKEY diff --git a/0.10.0/kuadrant-operator/config/samples/kuadrant_v1beta2_ratelimitpolicy.yaml b/0.10.0/kuadrant-operator/config/samples/kuadrant_v1beta2_ratelimitpolicy.yaml deleted file mode 100644 index 6fa97658a..000000000 --- a/0.10.0/kuadrant-operator/config/samples/kuadrant_v1beta2_ratelimitpolicy.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -apiVersion: kuadrant.io/v1beta2 -kind: RateLimitPolicy -metadata: - name: toystore -spec: - targetRef: - group: gateway.networking.k8s.io - kind: HTTPRoute - name: toystore - limits: - toys: - rates: - - limit: 50 - duration: 1 - unit: minute diff --git a/0.10.0/kuadrant-operator/config/samples/kustomization.yaml b/0.10.0/kuadrant-operator/config/samples/kustomization.yaml deleted file mode 100644 index da3dca9b6..000000000 --- a/0.10.0/kuadrant-operator/config/samples/kustomization.yaml +++ /dev/null @@ -1,8 +0,0 @@ -## Append samples you want in your CSV to this file as resources ## -resources: -- kuadrant_v1beta1_kuadrant.yaml -- kuadrant_v1beta2_authpolicy.yaml -- kuadrant_v1beta2_ratelimitpolicy.yaml -- kuadrant_v1alpha1_dnspolicy.yaml -- kuadrant_v1alpha1_tlspolicy.yaml -#+kubebuilder:scaffold:manifestskustomizesamples diff --git a/0.10.0/kuadrant-operator/doc/auth/index.html b/0.10.0/kuadrant-operator/doc/auth/index.html deleted file mode 100644 index e8b103aa1..000000000 --- a/0.10.0/kuadrant-operator/doc/auth/index.html +++ /dev/null @@ -1,4210 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Overview - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Kuadrant Auth

    -

    A Kuadrant AuthPolicy custom resource:

    -
      -
    1. Targets Gateway API networking resources such as HTTPRoutes and Gateways, using these resources to obtain additional context, i.e., which traffic workload (HTTP attributes, hostnames, user attributes, etc) to enforce auth.
    2. -
    3. Supports targeting subsets (sections) of a network resource to apply the auth rules to.
    4. -
    5. Abstracts the details of the underlying external authorization protocol and configuration resources, that have a much broader remit and surface area.
    6. -
    7. Enables cluster operators to set defaults that govern behavior at the lower levels of the network, until a more specific policy is applied.
    8. -
    -

    How it works

    -

    Envoy's External Authorization Protocol

    -

    Kuadrant's Auth implementation relies on the Envoy's External Authorization protocol. The workflow per request goes:

    -
      -
    1. On incoming request, the gateway checks the matching rules for enforcing the auth rules, as stated in the AuthPolicy custom resources and targeted Gateway API networking objects
    2. -
    3. If the request matches, the gateway sends one CheckRequest to the external auth service ("Authorino").
    4. -
    5. The external auth service responds with a CheckResponse back to the gateway with either an OK or DENIED response code.
    6. -
    -

    An AuthPolicy and its targeted Gateway API networking resource contain all the statements to configure both the ingress gateway and the external auth service.

    -

    The AuthPolicy custom resource

    -

    Overview

    -

    The AuthPolicy spec includes the following parts:

    -
      -
    • A reference to an existing Gateway API resource (spec.targetRef)
    • -
    • Authentication/authorization scheme (spec.rules)
    • -
    • Top-level route selectors (spec.routeSelectors)
    • -
    • Top-level additional conditions (spec.when)
    • -
    • List of named patterns (spec.patterns)
    • -
    -

    The auth scheme specify rules for:

    -
      -
    • Authentication (spec.rules.authentication)
    • -
    • External auth metadata fetching (spec.rules.metadata)
    • -
    • Authorization (spec.rules.authorization)
    • -
    • Custom response items (spec.rules.response)
    • -
    • Callbacks (spec.rules.callbacks)
    • -
    -

    Each auth rule can declare specific routeSelectors and when conditions for the rule to apply.

    -

    The auth scheme (rules), as well as conditions and named patterns can be declared at the top-level level of the spec (with the semantics of defaults) or alternatively within explicit defaults or overrides blocks.

    -

    High-level example and field definition

    -
    apiVersion: kuadrant.io/v1beta2
    -kind: AuthPolicy
    -metadata:
    -  name: my-auth-policy
    -spec:
    -  # Reference to an existing networking resource to attach the policy to. REQUIRED.
    -  # It can be a Gateway API HTTPRoute or Gateway resource.
    -  # It can only refer to objects in the same namespace as the AuthPolicy.
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute / Gateway
    -    name: myroute / mygateway
    -
    -  # Selectors of HTTPRouteRules within the targeted HTTPRoute that activate the AuthPolicy.
    -  # Each element contains a HTTPRouteMatch object that will be used to select HTTPRouteRules that include at least
    -  # one identical HTTPRouteMatch.
    -  # The HTTPRouteMatch part does not have to be fully identical, but the what's stated in the selector must be
    -  # identically stated in the HTTPRouteRule.
    -  # Do not use it on AuthPolicies that target a Gateway.
    -  routeSelectors:
    -
    -  - matches:
    -    - path:
    -        type: PathPrefix
    -        value: "/admin"
    -
    -  # Additional dynamic conditions to trigger the AuthPolicy.
    -  # Use it for filtering attributes not supported by HTTPRouteRule or with AuthPolicies that target a Gateway.
    -  # Check out https://github.com/Kuadrant/architecture/blob/main/rfcs/0002-well-known-attributes.md to learn more
    -  # about the Well-known Attributes that can be used in this field.
    -  # Equivalent to if otherwise declared within `defaults`.
    -  when: []
    -
    -  # Sets of common patterns of selector-operator-value triples, to be referred by name in `when` conditions
    -  # and pattern-matching rules. Often employed to avoid repetition in the policy.
    -  # Equivalent to if otherwise declared within `defaults`.
    -  patterns: {}
    -
    -  # The auth rules to apply to the network traffic routed through the targeted resource.
    -  # Equivalent to if otherwise declared within `defaults`.
    -  rules:
    -    # Authentication rules to enforce.
    -    # At least one config must evaluate to a valid identity object for the auth request to be successful.
    -    # If omitted or empty, anonymous access is assumed.
    -    authentication:
    -      "my-authn-rule":
    -        # The authentication method of this rule.
    -        # One-of: apiKey, jwt, oauth2Introspection, kubernetesTokenReview, x509, plain, anonymous.
    -        apiKey: {}
    -
    -        # Where credentials are required to be passed in the request for authentication based on this rule.
    -        # One-of: authorizationHeader, customHeader, queryString, cookie.
    -        credentials:
    -          authorizationHeader:
    -            prefix: APIKEY
    -
    -        # Rule-level route selectors.
    -        routeSelectors: []
    -
    -        # Rule-level additional conditions.
    -        when: []
    -
    -        # Configs for caching the resolved object returned out of evaluating this auth rule.
    -        cache: {}
    -
    -    # Rules for fetching auth metadata from external sources.
    -    metadata:
    -      "my-external-source":
    -        # The method for fetching metadata from the external source.
    -        # One-of: http: userInfo, uma.
    -        http: {}
    -
    -    # Authorization rules to enforce.
    -    # All policies must allow access for the auth request be successful.
    -    authorization:
    -      "my-authz-rule":
    -        # The authorization method of this rule.
    -        # One-of: patternMatching, opa, kubernetesSubjectAccessReview, spicedb.
    -        opa: {}
    -
    -    # Customizations to the authorization response.
    -    response:
    -      # Custom denial status and other HTTP attributes for unauthenticated requests.
    -      unauthenticated: {}
    -
    -      # Custom denial status and other HTTP attributes for unauhtorized requests.
    -      unauthorized: {}
    -
    -      # Custom response items when access is granted.
    -      success:
    -        # Custom response items wrapped as HTTP headers to be injected in the request
    -        headers:
    -          "my-custom-header":
    -            # One-of: plain, json, wristband.
    -            plain: {}
    -
    -        # Custom response items wrapped as envoy dynamic metadata.
    -        dynamicMetadata:
    -          # One-of: plain, json, wristband.
    -          "my-custom-dyn-metadata":
    -            json: {}
    -
    -    # Rules for post-authorization callback requests to external services.
    -    # Triggered regardless of the result of the authorization request.
    -    callbacks:
    -      "my-webhook":
    -        http: {}
    -
    -    # Explicit defaults. Used in policies that target a Gateway object to express default rules to be enforced on
    -    # routes that lack a more specific policy attached to.
    -    # Mutually exclusive with `overrides` and with declaring the `rules`, `when` and `patterns` at the top-level of
    -    # the spec.
    -    defaults:
    -      rules:
    -        authentication: {}
    -        metadata: {}
    -        authorization: {}
    -        response: {}
    -        callbacks: {}
    -      when: []
    -      patterns: {}
    -
    -    # Overrides. Used in policies that target a Gateway object to be enforced on all routes linked to the gateway,
    -    # thus also overriding any more specific policy occasionally attached to any of those routes.
    -    # Mutually exclusive with `defaults` and with declaring `rules`, `when` and `patterns` at the top-level of
    -    # the spec.
    -    overrides:
    -      rules:
    -        authentication: {}
    -        metadata: {}
    -        authorization: {}
    -        response: {}
    -        callbacks: {}
    -      when: []
    -      patterns: {}
    -
    -

    Check out the API reference for a full specification of the AuthPolicy CRD.

    -

    Using the AuthPolicy

    -

    Targeting a HTTPRoute networking resource

    -

    When an AuthPolicy targets a HTTPRoute, the policy is enforced to all traffic routed according to the rules and hostnames specified in the HTTPRoute, across all Gateways referenced in the spec.parentRefs field of the HTTPRoute.

    -

    The targeted HTTPRoute's rules and/or hostnames to which the policy must be enforced can be filtered to specific subsets, by specifying the routeSelectors field of the AuthPolicy spec.

    -

    Target a HTTPRoute by setting the spec.targetRef field of the AuthPolicy as follows:

    -
    apiVersion: kuadrant.io/v1beta2
    -kind: AuthPolicy
    -metadata:
    -  name: my-route-auth
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: <HTTPRoute Name>
    -  rules: {}
    -
    -
    ┌───────────────────┐             ┌────────────────────┐
    -│ (Infra namespace) │             │   (App namespace)  │
    -│                   │             │                    │
    -│  ┌─────────┐      │  parentRefs │  ┌───────────┐     │
    -│  │ Gateway │◄─────┼─────────────┼──┤ HTTPRoute │     │
    -│  └─────────┘      │             │  └───────────┘     │
    -│                   │             │        ▲           │
    -│                   │             │        │           │
    -│                   │             │        │           │
    -│                   │             │        │ targetRef │
    -│                   │             │        │           │
    -│                   │             │  ┌─────┴──────┐    │
    -│                   │             │  │ AuthPolicy │    │
    -│                   │             │  └────────────┘    │
    -│                   │             │                    │
    -└───────────────────┘             └────────────────────┘
    -
    -

    Hostnames and wildcards

    -

    If an AuthPolicy targets a route defined for *.com and another AuthPolicy targets another route for api.com, the Kuadrant control plane will not merge these two AuthPolicies. Rather, it will mimic the behavior of gateway implementation by which the "most specific hostname wins", thus enforcing only the corresponding applicable policies and auth rules.

    -

    E.g., a request coming for api.com will be protected according to the rules from the AuthPolicy that targets the route for api.com; while a request for other.com will be protected with the rules from the AuthPolicy targeting the route for *.com.

    -

    Example with 3 AuthPolicies and 3 HTTPRoutes:

    -
      -
    • AuthPolicy A → HTTPRoute A (a.toystore.com)
    • -
    • AuthPolicy B → HTTPRoute B (b.toystore.com)
    • -
    • AuthPolicy W → HTTPRoute W (*.toystore.com)
    • -
    -

    Expected behavior:

    -
      -
    • Request to a.toystore.com → AuthPolicy A will be enforced
    • -
    • Request to b.toystore.com → AuthPolicy B will be enforced
    • -
    • Request to other.toystore.com → AuthPolicy W will be enforced
    • -
    -

    Targeting a Gateway networking resource

    -

    An AuthPolicy that targets a Gateway can declare a block of defaults (spec.defaults) or a block of overrides (spec.overrides). As a standard, gateway policies that do not specify neither defaults nor overrides, act as defaults.

    -

    When declaring defaults, an AuthPolicy which targets a Gateway will be enforced to all HTTP traffic hitting the gateway, unless a more specific AuthPolicy targeting a matching HTTPRoute exists. Any new HTTPRoute referrencing the gateway as parent will be automatically covered by the default AuthPolicy, as well as changes in the existing HTTPRoutes.

    -

    Defaults provide cluster operators with the ability to protect the infrastructure against unplanned and malicious network traffic attempt, such as by setting preemptive "deny-all" policies on hostnames and hostname wildcards.

    -

    Inversely, a gateway policy that specify overrides declares a set of rules to be enforced on all routes attached to the gateway, thus atomically replacing any more specific policy occasionally attached to any of those routes.

    -

    Target a Gateway HTTPRoute by setting the spec.targetRef field of the AuthPolicy as follows:

    -
    apiVersion: kuadrant.io/v1beta2
    -kind: AuthPolicy
    -metadata:
    -  name: my-gw-auth
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -    name: <Gateway Name>
    -  defaults: # alternatively: `overrides`
    -    rules: {}
    -
    -
    ┌───────────────────┐             ┌────────────────────┐
    -│ (Infra namespace) │             │   (App namespace)  │
    -│                   │             │                    │
    -│  ┌─────────┐      │  parentRefs │  ┌───────────┐     │
    -│  │ Gateway │◄─────┼─────────────┼──┤ HTTPRoute │     │
    -│  └─────────┘      │             │  └───────────┘     │
    -│       ▲           │             │        ▲           │
    -│       │           │             │        │           │
    -│       │           │             │        │           │
    -│       │ targetRef │             │        │ targetRef │
    -│       │           │             │        │           │
    -│ ┌─────┴──────┐    │             │  ┌─────┴──────┐    │
    -│ │ AuthPolicy │    │             │  │ AuthPolicy │    │
    -│ └────────────┘    │             │  └────────────┘    │
    -│                   │             │                    │
    -└───────────────────┘             └────────────────────┘
    -
    -

    Overlapping Gateway and HTTPRoute AuthPolicies

    -

    Two possible semantics are to be considered here – gateway policy defaults vs gateway policy overrides.

    -

    Gateway AuthPolicies that declare defaults (or alternatively neither defaults nor overrides) protect all traffic routed through the gateway except where a more specific HTTPRoute AuthPolicy exists, in which case the HTTPRoute AuthPolicy prevails.

    -

    Example with 4 AuthPolicies, 3 HTTPRoutes and 1 Gateway default (plus 2 HTTPRoute and 2 Gateways without AuthPolicies attached):

    -
      -
    • AuthPolicy A → HTTPRoute A (a.toystore.com) → Gateway G (*.com)
    • -
    • AuthPolicy B → HTTPRoute B (b.toystore.com) → Gateway G (*.com)
    • -
    • AuthPolicy W → HTTPRoute W (*.toystore.com) → Gateway G (*.com)
    • -
    • AuthPolicy G (defaults) → Gateway G (*.com)
    • -
    -

    Expected behavior:

    -
      -
    • Request to a.toystore.com → AuthPolicy A will be enforced
    • -
    • Request to b.toystore.com → AuthPolicy B will be enforced
    • -
    • Request to other.toystore.com → AuthPolicy W will be enforced
    • -
    • Request to other.com (suppose a route exists) → AuthPolicy G will be enforced
    • -
    • Request to yet-another.net (suppose a route and gateway exist) → No AuthPolicy will be enforced
    • -
    -

    Gateway AuthPolicies that declare overrides protect all traffic routed through the gateway, regardless of existence of any more specific HTTPRoute AuthPolicy.

    -

    Example with 4 AuthPolicies, 3 HTTPRoutes and 1 Gateway override (plus 2 HTTPRoute and 2 Gateways without AuthPolicies attached):

    -
      -
    • AuthPolicy A → HTTPRoute A (a.toystore.com) → Gateway G (*.com)
    • -
    • AuthPolicy B → HTTPRoute B (b.toystore.com) → Gateway G (*.com)
    • -
    • AuthPolicy W → HTTPRoute W (*.toystore.com) → Gateway G (*.com)
    • -
    • AuthPolicy G (overrides) → Gateway G (*.com)
    • -
    -

    Expected behavior:

    -
      -
    • Request to a.toystore.com → AuthPolicy G will be enforced
    • -
    • Request to b.toystore.com → AuthPolicy G will be enforced
    • -
    • Request to other.toystore.com → AuthPolicy G will be enforced
    • -
    • Request to other.com (suppose a route exists) → AuthPolicy G will be enforced
    • -
    • Request to yet-another.net (suppose a route and gateway exist) → No AuthPolicy will be enforced
    • -
    -

    Route selectors

    -

    Route selectors allow targeting sections of a HTTPRoute, by specifying sets of HTTPRouteMatches and/or hostnames that make the policy controller look up within the HTTPRoute spec for compatible declarations, and select the corresponding HTTPRouteRules and hostnames, to then build conditions that activate the policy or policy rule.

    -

    Check out Route selectors for a full description, semantics and API reference.

    -

    when conditions

    -

    when conditions can be used to scope an AuthPolicy or auth rule within an AuthPolicy (i.e. to filter the traffic to which a policy or policy rule applies) without any coupling to the underlying network topology, i.e. without making direct references to HTTPRouteRules via routeSelectors.

    -

    Use when conditions to conditionally activate policies and policy rules based on attributes that cannot be expressed in the HTTPRoutes' spec.hostnames and spec.rules.matches fields, or in general in AuthPolicies that target a Gateway.

    -

    when conditions in an AuthPolicy are compatible with Authorino conditions, thus supporting complex boolean expressions with AND and OR operators, as well as grouping.

    -

    The selectors within the when conditions of an AuthPolicy are a subset of Kuadrant's Well-known Attributes (RFC 0002). Check out the reference for the full list of supported selectors.

    -

    Authorino JSON path string modifiers can also be applied to the selectors within the when conditions of an AuthPolicy.

    -

    Examples

    -

    Check out the following user guides for examples of protecting services with Kuadrant:

    - -

    Known limitations

    -
      -
    • One HTTPRoute can only be targeted by one AuthPolicy.
    • -
    • One Gateway can only be targeted by one AuthPolicy.
    • -
    • AuthPolicies can only target HTTPRoutes/Gateways defined within the same namespace of the AuthPolicy.
    • -
    • 2+ AuthPolicies cannot target network resources that define/inherit the same exact hostname.
    • -
    -

    Limitation: Multiple network resources with identical hostnames

    -

    Kuadrant currently does not support multiple AuthPolicies simultaneously targeting network resources that declare identical hostnames. This includes multiple HTTPRoutes that specify the same hostnames in the spec.hostnames field, as well as HTTPRoutes that specify a hostname that is identical to a hostname specified in a listener of one of the route's parent gateways or HTTPRoutes that don't specify any hostname at all thus inheriting the hostnames from the parent gateways. In any of these cases, a maximum of one AuthPolicy targeting any of those resources that specify identical hostnames is allowed.

    -

    Moreover, having multiple resources that declare identical hostnames may lead to unexpected behavior and therefore should be avoided.

    -

    This limitation is rooted at the underlying components configured by Kuadrant for the implementation of its policies and the lack of information in the data plane regarding the exact route that is honored by the API gateway at each specific request, in cases of conflicting hostnames.

    -

    To exemplify one way this limitation can impact deployments, consider the following topology:

    -
                     ┌──────────────┐
    -                 │   Gateway    │
    -                 ├──────────────┤
    -          ┌─────►│ listeners:   │◄──────┐
    -          │      │ - host: *.io │       │
    -          │      └──────────────┘       │
    -          │                             │
    -          │                             │
    -┌─────────┴─────────┐        ┌──────────┴────────┐
    -│     HTTPRoute     │        │     HTTPRoute     │
    -│     (route-a)     │        │     (route-b)     │
    -├───────────────────┤        ├───────────────────┤
    -│ hostnames:        │        │ hostnames:        │
    -│ - app.io          │        │ - app.io          │
    -│ rules:            │        │ rules:            │
    -│ - matches:        │        │ - matches:        │
    -│   - path:         │        │   - path:         │
    -│       value: /foo │        │       value: /bar │
    -└───────────────────┘        └───────────────────┘
    -          ▲                            ▲
    -          │                            │
    -    ┌─────┴──────┐               ┌─────┴──────┐
    -    │ AuthPolicy │               │ AuthPolicy │
    -    │ (policy-1) │               │ (policy-2) │
    -    └────────────┘               └────────────┘
    -
    -

    In the example above, with the policy-1 resource created before policy-2, policy-1 will be enforced on all requests to app.io/foo while policy-2 will be rejected. I.e. app.io/bar will not be secured. In fact, the status conditions of policy-2 shall reflect Enforced=false with message "AuthPolicy has encountered some issues: AuthScheme is not ready yet".

    -

    Notice the enforcement of policy-1 and no enforcement of policy-2 is the opposite behavior as the analogous problem with the Kuadrant RateLimitPolicy.

    -

    A slightly different way the limitation applies is when two or more routes of a gateway declare the exact same hostname and a gateway policy is defined with expectation to set default rules for the cases not covered by more specific policies. E.g.:

    -
                                        ┌────────────┐
    -                         ┌──────────┤ AuthPolicy │
    -                         │          │ (policy-2) │
    -                         ▼          └────────────┘
    -                 ┌──────────────┐
    -                 │   Gateway    │
    -                 ├──────────────┤
    -          ┌─────►│ listeners:   │◄──────┐
    -          │      │ - host: *.io │       │
    -          │      └──────────────┘       │
    -          │                             │
    -          │                             │
    -┌─────────┴─────────┐        ┌──────────┴────────┐
    -│     HTTPRoute     │        │     HTTPRoute     │
    -│     (route-a)     │        │     (route-b)     │
    -├───────────────────┤        ├───────────────────┤
    -│ hostnames:        │        │ hostnames:        │
    -│ - app.io          │        │ - app.io          │
    -│ rules:            │        │ rules:            │
    -│ - matches:        │        │ - matches:        │
    -│   - path:         │        │   - path:         │
    -│       value: /foo │        │       value: /bar │
    -└───────────────────┘        └───────────────────┘
    -          ▲
    -          │
    -    ┌─────┴──────┐
    -    │ AuthPolicy │
    -    │ (policy-1) │
    -    └────────────┘
    -
    -

    Once again, requests to app.io/foo will be protected under AuthPolicy policy-1, while requests to app.io/bar will not be protected under any policy at all, unlike expected gateway policy policy-2 enforced as default. Both policies will report status condition as Enforced nonetheless.

    -

    To avoid these problems, use different hostnames in each route.

    -

    Implementation details

    -

    Under the hood, for each AuthPolicy, Kuadrant creates an Istio AuthorizationPolicy and an Authorino AuthConfig custom resources.

    -

    Only requests that matches the rules in the Istio AuthorizationPolicy cause an authorization request to be sent to the external authorization service ("Authorino"), i.e., only requests directed to the HTTPRouteRules targeted by the AuthPolicy (directly or indirectly), according to the declared top-level route selectors (if present), or all requests for which a matching HTTPRouteRule exists (otherwise).

    -

    Authorino looks up for the auth scheme (AuthConfig custom resource) to enforce using the provided hostname of the original request as key. It then checks again if the request matches at least one of the selected HTTPRouteRules, in which case it enforces the auth scheme.

    -
    - Exception to the rule - - Due to limitations imposed by the Istio `AuthorizationPolicy`, there are a few patterns of HTTPRouteRules that cannot be translated to filters for the external authorization request. Therefore, the following patterns used in HTTPRouteMatches of top-level route selectors of an AuthPolicy will not be included in the Istio AuthorizationPolicy rules that trigger the check request with Authorino: `PathMatchRegularExpression`, `HeaderMatchRegularExpression`, and `HTTPQueryParamMatch`. - - As a consequence to the above, requests that do not match these rules and otherwise would not be checked with Authorino will result in a request to the external authorization service. Authorino nonetheless will still verify those patterns and ensure the auth scheme is enforced only when it matches a selected HTTPRouteRule. Users of Kuadrant may observe an unnecessary call to the authorization service in those cases where the request is out of the scope of the AuthPolicy and therefore always authorized. -
    - -

    Internal custom resources and namespaces

    -

    While the Istio AuthorizationPolicy needs to be created in the same namespace as the gateway workload, the Authorino AuthConfig is created in the namespace of the AuthPolicy itself. This allows to simplify references such as to Kubernetes Secrets referred in the AuthPolicy, as well as the RBAC to support the architecture.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/development/index.html b/0.10.0/kuadrant-operator/doc/development/index.html deleted file mode 100644 index 0246e185f..000000000 --- a/0.10.0/kuadrant-operator/doc/development/index.html +++ /dev/null @@ -1,4060 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Developer's Guide - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Development Guide

    -

    Technology stack required for development

    - -

    Build

    -
    make build
    -
    -

    Deploy on local kubernetes cluster

    -

    Run local Kubernetes cluster using Docker container using Kind and deploy kuadrant operator (and all dependencies) in a single command.

    -
    make local-setup
    -
    -

    The make local-setup target accepts the following variables:

    - - - - - - - - - - - - - - - -
    Makefile VariableDescriptionDefault value
    GATEWAYAPI_PROVIDERGatewayAPI provider name. Accepted values: [istio]istio
    -

    Run as a local process

    -

    Run local Kubernetes cluster using Docker container using Kind and deploy all dependencies in a single command.

    -
    make local-env-setup
    -
    -

    The make local-env-setup target accepts the following variables:

    - - - - - - - - - - - - - - - -
    Makefile VariableDescriptionDefault value
    GATEWAYAPI_PROVIDERGatewayAPI provider name. Accepted values: [istio]istio
    -

    Then, run the operator locally

    -
    make run
    -
    -

    Deploy on existing kubernetes cluster

    -

    Requirements:

    -
      -
    • Active session open to the kubernetes cluster.
    • -
    • GatewayAPI installed
    • -
    • GatewayAPI provider installed. Currently only Istio supported.
    • -
    • Cert Manager installed
    • -
    -

    Before running the kuadrant operator, some dependencies needs to be deployed.

    -
    make install
    -make deploy-dependencies
    -
    -

    Then, deploy the operator

    -
    make deploy
    -
    -

    Deploy kuadrant operator using OLM

    -

    You can deploy kuadrant using OLM just running few commands. -No need to build any image. Kuadrant engineering team provides latest and -release version tagged images. They are available in -the Quay.io/Kuadrant image repository.

    -

    Create kind cluster

    -
    make kind-create-cluster
    -
    -

    Deploy OLM system

    -
    make install-olm
    -
    -

    Deploy kuadrant using OLM. The make deploy-catalog target accepts the following variables:

    - - - - - - - - - - - - - - - -
    Makefile VariableDescriptionDefault value
    CATALOG_IMGKuadrant operator catalog image URLquay.io/kuadrant/kuadrant-operator-catalog:latest
    -
    make deploy-catalog [CATALOG_IMG=quay.io/kuadrant/kuadrant-operator-catalog:latest]
    -
    -

    Build custom OLM catalog

    -

    If you want to deploy (using OLM) a custom kuadrant operator, you need to build your own catalog. -Furthermore, if you want to deploy a custom limitador or authorino operator, you also need -to build your own catalog. The kuadrant operator bundle includes the authorino or limtador operator -dependency version, hence using other than latest version requires a custom kuadrant operator -bundle and a custom catalog including the custom bundle.

    -

    Build kuadrant operator bundle image

    -

    The make bundle target accepts the following variables:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Makefile VariableDescriptionDefault valueNotes
    IMGKuadrant operator image URLquay.io/kuadrant/kuadrant-operator:latestTAG var could be use to build this URL, defaults to latest if not provided
    VERSIONBundle version0.0.0
    LIMITADOR_OPERATOR_BUNDLE_IMGLimitador operator bundle URLquay.io/kuadrant/limitador-operator-bundle:latestLIMITADOR_OPERATOR_VERSION var could be used to build this, defaults to latest if not provided
    AUTHORINO_OPERATOR_BUNDLE_IMGAuthorino operator bundle URLquay.io/kuadrant/authorino-operator-bundle:latestAUTHORINO_OPERATOR_VERSION var could be used to build this, defaults to latest if not provided
    DNS_OPERATOR_BUNDLE_IMGDNS operator bundle URLquay.io/kuadrant/dns-operator-bundle:latestDNS_OPERATOR_BUNDLE_IMG var could be used to build this, defaults to latest if not provided
    RELATED_IMAGE_WASMSHIMWASM shim image URLoci://quay.io/kuadrant/wasm-shim:latestWASM_SHIM_VERSION var could be used to build this, defaults to latest if not provided
    -
      -
    • Build the bundle manifests
    • -
    -
    make bundle [IMG=quay.io/kuadrant/kuadrant-operator:latest] \
    -            [VERSION=0.0.0] \
    -            [LIMITADOR_OPERATOR_BUNDLE_IMG=quay.io/kuadrant/limitador-operator-bundle:latest] \
    -            [AUTHORINO_OPERATOR_BUNDLE_IMG=quay.io/kuadrant/authorino-operator-bundle:latest] \
    -            [DNS_OPERATOR_BUNDLE_IMG=quay.io/kuadrant/dns-operator-bundle:latest] \
    -            [RELATED_IMAGE_WASMSHIM=oci://quay.io/kuadrant/wasm-shim:latest]
    -
    -
      -
    • Build the bundle image from the manifests
    • -
    - - - - - - - - - - - - - - - -
    Makefile VariableDescriptionDefault value
    BUNDLE_IMGKuadrant operator bundle image URLquay.io/kuadrant/kuadrant-operator-bundle:latest
    -
    make bundle-build [BUNDLE_IMG=quay.io/kuadrant/kuadrant-operator-bundle:latest]
    -
    -
      -
    • Push the bundle image to a registry
    • -
    - - - - - - - - - - - - - - - -
    Makefile VariableDescriptionDefault value
    BUNDLE_IMGKuadrant operator bundle image URLquay.io/kuadrant/kuadrant-operator-bundle:latest
    -
    make bundle-push [BUNDLE_IMG=quay.io/kuadrant/kuadrant-operator-bundle:latest]
    -
    -

    Frequently, you may need to build custom kuadrant bundle with the default (latest) Limitador and -Authorino bundles. These are the example commands to build the manifests, build the bundle image -and push to the registry.

    -

    In the example, a new kuadrant operator bundle version 0.8.0 will be created that references -the kuadrant operator image quay.io/kuadrant/kuadrant-operator:v0.5.0 and latest Limitador and -Authorino bundles.

    -
    # manifests
    -make bundle IMG=quay.io/kuadrant/kuadrant-operator:v0.5.0 VERSION=0.8.0
    -
    -# bundle image
    -make bundle-build BUNDLE_IMG=quay.io/kuadrant/kuadrant-operator-bundle:my-bundle
    -
    -# push bundle image
    -make bundle-push BUNDLE_IMG=quay.io/kuadrant/kuadrant-operator-bundle:my-bundle
    -
    -

    Build custom catalog

    -

    The catalog's format will be File-based Catalog.

    -

    Make sure all the required bundles are pushed to the registry. It is required by the opm tool.

    -

    The make catalog target accepts the following variables:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Makefile VariableDescriptionDefault value
    BUNDLE_IMGKuadrant operator bundle image URLquay.io/kuadrant/kuadrant-operator-bundle:latest
    LIMITADOR_OPERATOR_BUNDLE_IMGLimitador operator bundle URLquay.io/kuadrant/limitador-operator-bundle:latest
    AUTHORINO_OPERATOR_BUNDLE_IMGAuthorino operator bundle URLquay.io/kuadrant/authorino-operator-bundle:latest
    DNS_OPERATOR_BUNDLE_IMGDNS operator bundle URLquay.io/kuadrant/dns-operator-bundle:latest
    -
    make catalog [BUNDLE_IMG=quay.io/kuadrant/kuadrant-operator-bundle:latest] \
    -            [LIMITADOR_OPERATOR_BUNDLE_IMG=quay.io/kuadrant/limitador-operator-bundle:latest] \
    -            [AUTHORINO_OPERATOR_BUNDLE_IMG=quay.io/kuadrant/authorino-operator-bundle:latest] \
    -            [DNS_OPERATOR_BUNDLE_IMG=quay.io/kuadrant/dns-operator-bundle:latest]
    -
    -
      -
    • Build the catalog image from the manifests
    • -
    - - - - - - - - - - - - - - - -
    Makefile VariableDescriptionDefault value
    CATALOG_IMGKuadrant operator catalog image URLquay.io/kuadrant/kuadrant-operator-catalog:latest
    -
    make catalog-build [CATALOG_IMG=quay.io/kuadrant/kuadrant-operator-catalog:latest]
    -
    -
      -
    • Push the catalog image to a registry
    • -
    -
    make catalog-push [CATALOG_IMG=quay.io/kuadrant/kuadrant-operator-bundle:latest]
    -
    -

    You can try out your custom catalog image following the steps of the -Deploy kuadrant operator using OLM section.

    -

    Cleaning up

    -
    make local-cleanup
    -
    -

    Run tests

    -

    Unittests

    -
    make test-unit
    -
    -

    Optionally, add TEST_NAME makefile variable to run specific test

    -
    make test-unit TEST_NAME=TestLimitIndexEquals
    -
    -

    or even subtest

    -
    make test-unit TEST_NAME=TestLimitIndexEquals/empty_indexes_are_equal
    -
    -

    Integration tests

    -

    Multiple controller integration tests are defined

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Golang packageRequired environmentMakefile env setup targetMakefile test run target
    github.com/kuadrant/kuadrant-operator/tests/bare_k8sno gateway provider, no GatewayAPI CRDs. Just Kuadrant API and Kuadrant dependencies.make local-k8s-env-setupmake test-bare-k8s-integration
    github.com/kuadrant/kuadrant-operator/tests/gatewayapino gateway provider. GatewayAPI CRDs, Kuadrant API and Kuadrant dependencies.make local-gatewayapi-env-setupmake test-gatewayapi-env-integration
    github.com/kuadrant/kuadrant-operator/controllersat least one gatewayapi provider. It can be any: istio, envoygateway, ...make local-env-setup GATEWAYAPI_PROVIDER=[istio] (Default istio)make test-integration
    github.com/kuadrant/kuadrant-operator/tests/istioGatewayAPI CRDs, Istio, Kuadrant API and Kuadrant dependencies.make local-env-setup GATEWAYAPI_PROVIDER=istiomake test-istio-env-integration
    -

    Lint tests

    -
    make run-lint
    -
    -

    (Un)Install Kuadrant CRDs

    -

    You need an active session open to a kubernetes cluster.

    -

    Remove CRDs

    -
    make uninstall
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/dns/index.html b/0.10.0/kuadrant-operator/doc/dns/index.html deleted file mode 100644 index f29fed74b..000000000 --- a/0.10.0/kuadrant-operator/doc/dns/index.html +++ /dev/null @@ -1,3940 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Overview - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Kuadrant DNS

    -

    A Kuadrant DNSPolicy custom resource:

    -
      -
    1. Targets Gateway API networking resources Gateways to provide dns management by managing the lifecycle of dns records in external dns providers such as AWS Route53 and Google DNS.
    2. -
    -

    How it works

    -

    A DNSPolicy and its targeted Gateway API networking resource contain all the statements to configure both the ingress gateway and the external DNS service. -The needed dns names are gathered from the listener definitions and the IPAdresses | CNAME hosts are gathered from the status block of the gateway resource.

    -

    The DNSPolicy custom resource

    -

    Overview

    -

    The DNSPolicy spec includes the following parts:

    -
      -
    • A reference to an existing Gateway API resource (spec.targetRef)
    • -
    • DNS Routing Strategy (spec.routingStrategy)
    • -
    • LoadBalancing specification (spec.loadBalancing)
    • -
    • HealthCheck specification (spec.healthCheck)
    • -
    -

    High-level example and field definition

    -
    apiVersion: kuadrant.io/v1alpha1
    -kind: DNSPolicy
    -metadata:
    -  name: my-dns-policy
    -spec:
    -  # reference to an existing networking resource to attach the policy to
    -  # it can only be a Gateway API Gateway resource
    -  # it can only refer to objects in the same namespace as the DNSPolicy
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -    name: mygateway
    -
    - # reference to an existing secret resource containing provider credentials and configuration
    - # it can only refer to Secrets in the same namespace as the DNSPolicy that have the type kuadrant.io/(provider) e.g kuadrant.io/aws
    -  providerRefs:
    -
    -   - name: my-aws-credentials
    -
    -  # (optional) routing strategy to use when creating DNS records, defaults to `loadbalanced`
    -  # determines what DNS records are created in the DNS provider
    -  # check out Kuadrant RFC 0005 https://github.com/Kuadrant/architecture/blob/main/rfcs/0005-single-cluster-dnspolicy.md to learn more about the Routing Strategy field
    -  # One-of: simple, loadbalanced.
    -  routingStrategy: loadbalanced
    -
    -  # (optional) loadbalancing specification
    -  # use it for providing the specification of how dns will be configured in order to provide balancing of load across multiple clusters when using the `loadbalanced` routing strategy
    -  # Primary use of this is for multi cluster deployments
    -  # check out Kuadrant RFC 0003 https://github.com/Kuadrant/architecture/blob/main/rfcs/0003-dns-policy.md to learn more about the options that can be used in this field
    -  loadBalancing:
    -    # (optional) weighted specification
    -    # use it to control the weight value applied to records
    -    weighted:
    -      # use it to change the weight of a record based on labels applied to the target meta resource i.e. Gateway in a single cluster context or ManagedCluster in multi cluster with OCM
    -      custom:
    -
    -        - weight: 200
    -          selector:
    -            matchLabels:
    -              kuadrant.io/lb-attribute-custom-weight: AWS
    -      # (optional) weight value that will be applied to weighted dns records by default. Integer greater than 0 and no larger than the maximum value accepted by the target dns provider, defaults to `120` 
    -      defaultWeight: 100
    -    # (optional) geo specification
    -    # use it to control the geo value applied to records 
    -    geo:
    -      # (optional) default geo to be applied to records 
    -      defaultGeo: IE
    -
    -  # (optional) health check specification
    -  # health check probes with the following specification will be created for each DNS target
    -  healthCheck:
    -    allowInsecureCertificates: true
    -    endpoint: /
    -    expectedResponses:
    -
    -      - 200
    -      - 201
    -      - 301
    -    failureThreshold: 5
    -    port: 443
    -    protocol: https
    -
    -

    Check out the API reference for a full specification of the DNSPolicy CRD.

    -

    Using the DNSPolicy

    -

    DNS Provider Setup

    -

    A DNSPolicy acts against a target Gateway by processing its listeners for hostnames that it can create dns records for. -In order for it to do this, it must know about the dns provider. -This is done through the creation of dns provider secrets containing the credentials and configuration for the dns provider account.

    -

    If for example a Gateway is created with a listener with a hostname of echo.apps.hcpapps.net: -

    apiVersion: gateway.networking.k8s.io/v1
    -kind: Gateway
    -metadata:
    -  name: my-gw
    -spec:
    -  listeners:
    -
    -    - allowedRoutes:
    -        namespaces:
    -          from: All
    -      name: api
    -      hostname: echo.apps.hcpapps.net
    -      port: 80
    -      protocol: HTTP
    -

    -

    In order for the DNSPolicy to act upon that listener, a DNS provider Secret must exist for that hostnames' domain.

    -
    apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: my-aws-credentials
    -  namespace: <Gateway Namespace>
    -data:
    -  AWS_ACCESS_KEY_ID: <AWS_ACCESS_KEY_ID>
    -  AWS_REGION: <AWS_REGION>
    -  AWS_SECRET_ACCESS_KEY: <AWS_SECRET_ACCESS_KEY>
    -type: kuadrant.io/aws
    -
    -

    By default, Kuadrant will list the available zones and find the matching zone based on the listener host in the gateway listener. If it finds more than one matching zone for a given listener host, it will not update any of those zones. -When providing a credential you should limit that credential down to just have write access to the zones you want Kuadrant to manage. Below is an example of a an AWS policy for doing this type of thing:

    -
    {
    -    "Version": "2012-10-17",
    -    "Statement": [
    -        {
    -            "Sid": "VisualEditor0",
    -            "Effect": "Allow",
    -            "Action": [
    -                "route53:ListTagsForResources",
    -                "route53:GetHealthCheckLastFailureReason",
    -                "route53:GetHealthCheckStatus",
    -                "route53:GetChange",
    -                "route53:GetHostedZone",
    -                "route53:ChangeResourceRecordSets",
    -                "route53:ListResourceRecordSets",
    -                "route53:GetHealthCheck",
    -                "route53:UpdateHostedZoneComment",
    -                "route53:UpdateHealthCheck",
    -                "route53:CreateHealthCheck",
    -                "route53:DeleteHealthCheck",
    -                "route53:ListTagsForResource",
    -                "route53:ListHealthChecks",
    -                "route53:GetGeoLocation",
    -                "route53:ListGeoLocations",
    -                "route53:ListHostedZonesByName",
    -                "route53:GetHealthCheckCount"
    -            ],
    -            "Resource": [
    -                "arn:aws:route53:::hostedzone/Z08187901Y93585DDGM6K",
    -                "arn:aws:route53:::healthcheck/*",
    -                "arn:aws:route53:::change/*"
    -            ]
    -        },
    -        {
    -            "Sid": "VisualEditor1",
    -            "Effect": "Allow",
    -            "Action": [
    -                "route53:ListHostedZones"
    -            ],
    -            "Resource": "*"
    -        }
    -    ]
    -}
    -
    -

    Targeting a Gateway networking resource

    -

    When a DNSPolicy targets a Gateway, the policy will be enforced on all gateway listeners.

    -

    Target a Gateway by setting the spec.targetRef field of the DNSPolicy as follows:

    -
    apiVersion: kuadrant.io/v1beta2
    -kind: DNSPolicy
    -metadata:
    -  name: <DNSPolicy name>
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -    name: <Gateway Name>
    -
    -

    DNSRecord Resource

    -

    The DNSPolicy will create a DNSRecord resource for each listener hostname. The DNSPolicy resource uses the status of the Gateway to determine what dns records need to be created based on the clusters it has been placed onto.

    -

    Given the following multi cluster gateway status: -

    status:
    -  addresses:
    -
    -    - type: kuadrant.io/MultiClusterIPAddress
    -      value: kind-mgc-workload-1/172.31.201.1
    -    - type: kuadrant.io/MultiClusterIPAddress
    -      value: kind-mgc-workload-2/172.31.202.1
    -  listeners:
    -    - attachedRoutes: 1
    -      conditions: []
    -      name: kind-mgc-workload-1.api
    -      supportedKinds: []
    -    - attachedRoutes: 1
    -      conditions: []
    -      name: kind-mgc-workload-2.api
    -      supportedKinds: []        
    -

    -

    A DNSPolicy targeting this gateway would create an appropriate DNSRecord based on the routing strategy selected.

    -

    loadbalanced

    -
    apiVersion: kuadrant.io/v1alpha1
    -kind: DNSRecord
    -metadata:
    -  name: echo.apps.hcpapps.net
    -  namespace: <Gateway Namespace>
    -spec:
    -  endpoints:
    -
    -    - dnsName: 24osuu.lb-2903yb.echo.apps.hcpapps.net
    -      recordTTL: 60
    -      recordType: A
    -      targets:
    -        - 172.31.202.1
    -    - dnsName: default.lb-2903yb.echo.apps.hcpapps.net
    -      providerSpecific:
    -        - name: weight
    -          value: "120"
    -      recordTTL: 60
    -      recordType: CNAME
    -      setIdentifier: 24osuu.lb-2903yb.echo.apps.hcpapps.net
    -      targets:
    -        - 24osuu.lb-2903yb.echo.apps.hcpapps.net
    -    - dnsName: default.lb-2903yb.echo.apps.hcpapps.net
    -      providerSpecific:
    -        - name: weight
    -          value: "120"
    -      recordTTL: 60
    -      recordType: CNAME
    -      setIdentifier: lrnse3.lb-2903yb.echo.apps.hcpapps.net
    -      targets:
    -        - lrnse3.lb-2903yb.echo.apps.hcpapps.net
    -    - dnsName: echo.apps.hcpapps.net
    -      recordTTL: 300
    -      recordType: CNAME
    -      targets:
    -        - lb-2903yb.echo.apps.hcpapps.net
    -    - dnsName: lb-2903yb.echo.apps.hcpapps.net
    -      providerSpecific:
    -        - name: geo-country-code
    -          value: '*'
    -      recordTTL: 300
    -      recordType: CNAME
    -      setIdentifier: default
    -      targets:
    -        - default.lb-2903yb.echo.apps.hcpapps.net
    -    - dnsName: lrnse3.lb-2903yb.echo.apps.hcpapps.net
    -      recordTTL: 60
    -      recordType: A
    -      targets:
    -        - 172.31.201.1
    -  providerRefs:
    -    - name: my-aws-credentials
    -
    -

    After DNSRecord reconciliation the listener hostname should be resolvable through dns:

    -
    dig echo.apps.hcpapps.net +short
    -lb-2903yb.echo.apps.hcpapps.net.
    -default.lb-2903yb.echo.apps.hcpapps.net.
    -lrnse3.lb-2903yb.echo.apps.hcpapps.net.
    -172.31.201.1
    -
    -

    simple

    -
    apiVersion: kuadrant.io/v1alpha1
    -kind: DNSRecord
    -metadata:
    -  name: echo.apps.hcpapps.net
    -  namespace: <Gateway Namespace>
    -spec:
    -  endpoints:
    -
    -    - dnsName: echo.apps.hcpapps.net
    -      recordTTL: 60
    -      recordType: A
    -      targets:
    -        - 172.31.201.1
    -        - 172.31.202.1
    -  providerRefs:
    -   - name: my-aws-credentials 
    -
    -

    After DNSRecord reconciliation the listener hostname should be resolvable through dns:

    -
    dig echo.apps.hcpapps.net +short
    -172.31.201.1
    -
    -

    Known limitations

    -
      -
    • One Gateway can only be targeted by one DNSPolicy.
    • -
    • DNSPolicies can only target Gateways defined within the same namespace of the DNSPolicy.
    • -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/dnshealthchecks/index.html b/0.10.0/kuadrant-operator/doc/dnshealthchecks/index.html deleted file mode 100644 index 4170546c0..000000000 --- a/0.10.0/kuadrant-operator/doc/dnshealthchecks/index.html +++ /dev/null @@ -1,3580 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - DNS Health Checks - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    DNS Health Checks

    -

    DNS Health Checks are a tool provided by some DNS Providers for ensuring the availability and reliability of your DNS Records and only publishing DNS Records that resolve to healthy workloads. Kuadrant offers a powerful feature known as DNSPolicy, which allows you to configure these health checks for all the managed DNS endpoints created as a result of that policy. This guide provides a comprehensive overview of how to set up, utilize, and understand these DNS health checks.

    -

    Supported Providers

    -

    we currently only support AWS Route53 DNS Health checks.

    -

    Configuration of Health Checks

    -

    To configure a DNS health check, you need to specify the healthCheck section of the DNSPolicy, which includes important properties such as:

    -
      -
    • endpoint: This is the path where the health checks take place, usually represented as '/healthz' or something similar.
    • -
    • port: Specific port for the connection to be checked.
    • -
    • protocol: Type of protocol being used, like HTTP or HTTPS.
    • -
    • FailureThreshold: How many times we can tolerate a failure on this endpoint, before removing the related DNS entry.
    • -
    -
    apiVersion: kuadrant.io/v1alpha1
    -kind: DNSPolicy
    -metadata:
    -  name: prod-web
    -  namespace: multi-cluster-gateways
    -spec:
    -  targetRef:
    -    name: prod-web
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -  loadBalancing: simple
    -  healthCheck:
    -    endpoint: "/health"
    -    port: 443
    -    protocol: "HTTPS"
    -    failureThreshold: 5
    -
    -

    This configuration sets up a DNS health check in AWS Route53 which will connect by HTTPS on port 443 and request the path /health.

    -

    Reviewing the status of Health Checks

    -

    The DNS Record CR will show whether the health check has been created or not in the DNS Provider, and will also show any errors encountered when trying to create or update the health check configuration.

    -

    To see the status of the executing health check requires logging in to the Route53 console to view the current probe results.

    -

    Reconfiguring Health Checks

    -

    To reconfigure the health checks, update the HealthCheck section of the DNS Policy, this will be reflected into all the health checks created as a result of this policy.

    -

    Removing Health Checks

    -

    To remove the health checks created in AWS, delete the healthcheck section of the DNS Policy. All health checks will be deleted automatically, if the DNS Policy is deleted.

    -

    Limitations

    -

    As Route53 will only perform health checks on an IP address, currently do not create health checks on DNS Policies that target gateways with hostname addresses.

    -

    Other Providers

    -

    Although we intend to support integrating with the DNS Health checks provided by other DNS Providers in the future, we currently only support AWS Route53.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/images/kuadrant-architecture.svg b/0.10.0/kuadrant-operator/doc/images/kuadrant-architecture.svg deleted file mode 100644 index 43e68124f..000000000 --- a/0.10.0/kuadrant-operator/doc/images/kuadrant-architecture.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/install/install-kubernetes/index.html b/0.10.0/kuadrant-operator/doc/install/install-kubernetes/index.html deleted file mode 100644 index 961eeae23..000000000 --- a/0.10.0/kuadrant-operator/doc/install/install-kubernetes/index.html +++ /dev/null @@ -1,3703 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Kubernetes - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Install Kuadrant on a Kubernetes cluster

    -
    -

    Note

    -

    You must perform these steps on each Kubernetes cluster where you want to use Kuadrant.

    -
    -

    Prerequisites

    -
      -
    • Access to a Kubernetes cluster, with kubeadmin or an account with similar permissions
    • -
    • cert-manager installed
    • -
    -

    Procedure

    -

    This guide will show you how to install Kuadrant onto a bare Kubernetes cluster.

    -

    Alternatively, if you are looking instead for a way to set up Kuadrant locally to evaluate or develop, consider running the kind & Kubernetes quickstart script.

    -

    Install Gateway API

    -
    kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.1.0/standard-install.yaml
    -
    -

    Install OLM

    -
    -

    Note

    -

    Currently, we recommend installing our operator via OLM. We plan to support Helm soon.

    -
    -
    curl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.28.0/install.sh | bash -s v0.28.0
    -
    -

    Install Istio as a Gateway API provider

    -
    -

    Note

    -

    There are several ways to install Istio (via istioctl, Helm chart or Operator) - this is just an example for starting from a bare Kubernetes cluster.

    -
    -
    curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.21.4 sh -
    -./istio-1.21.4/bin/istioctl install --set profile=minimal
    -./istio-1.21.4/bin/istioctl operator init
    -kubectl apply -f https://raw.githubusercontent.com/Kuadrant/kuadrant-operator/main/config/dependencies/istio/istio-operator.yaml
    -
    -

    Install Kuadrant

    -
    kubectl create -f https://operatorhub.io/install/kuadrant-operator.yaml
    -kubectl get crd --watch | grep -m 1 "kuadrants.kuadrant.io"
    -
    -

    Request a Kuadrant instance

    -
    kubectl create namespace kuadrant-system
    -kubectl -n kuadrant-system apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta1
    -kind: Kuadrant
    -metadata:
    -  name: kuadrant
    -spec: {}
    -EOF
    -
    -

    Kuadrant should now install. You can check the operator's install status with:

    -
    kubectl wait --for=jsonpath='{.status.state}'=AtLatestKnown subscription/my-kuadrant-operator -n operators --timeout=600s
    -
    -

    Kuadrant is now ready to use.

    -

    (Optional) DNSPolicy setup

    -

    If you plan to use DNSPolicy, you will need an AWS Account with access to Route 53 (more providers coming soon), and a hosted zone.

    -

    Export the following environment variables for setup:

    -
    export AWS_ACCESS_KEY_ID=xxxxxxx # Key ID from AWS with Route 53 access
    -export AWS_SECRET_ACCESS_KEY=xxxxxxx # Access key from AWS with Route 53 access
    -
    -

    Create an AWS credentials secret:

    -
    kubectl -n kuadrant-system create secret generic aws-credentials \
    -  --type=kuadrant.io/aws \
    -  --from-literal=AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
    -  --from-literal=AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
    -
    -

    (Optional) Multi-cluster RateLimitPolicy

    -

    To enable RateLimitPolicy to use shared, multi-cluster counters for Kuadrant's Limitador component, you need to configure Kuadrant with a Redis cluster URL. Redis URIs can be either redis:// for standard connections or rediss:// for secure connections.

    -

    Follow these steps to create the necessary secret:

    -
      -
    1. -

      Replace some-redis.com:6379 with the URL of your accessible Redis cluster. Ensure you include the appropriate URI scheme (redis:// or rediss://).

      -
    2. -
    3. -

      Execute the following commands:

      -
      # Replace this with an accessible Redis cluster URL
      -export REDIS_URL=redis://user:xxxxxx@some-redis.com:6379
      -
      -kubectl -n kuadrant-system create secret generic redis-config \
      -  --from-literal=URL=$REDIS_URL
      -
      -
    4. -
    -

    This will create a secret named redis-config in the kuadrant-system namespace containing your Redis cluster URL, which Kuadrant will use for multi-cluster rate limiting.

    -

    You'll also need to update your earlier created Kuadrant instance to reconfigure Kuadrant to use Redis:

    -
    kubectl apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta1
    -kind: Kuadrant
    -metadata:
    -  name: kuadrant
    -  namespace: kuadrant-system
    -spec:
    -  limitador:
    -    storage:
    -      redis-cached:
    -        configSecretRef:
    -          name: redis-config 
    -EOF
    -
    -

    Next Steps

    - - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/install/install-openshift/index.html b/0.10.0/kuadrant-operator/doc/install/install-openshift/index.html deleted file mode 100644 index 1e8961d48..000000000 --- a/0.10.0/kuadrant-operator/doc/install/install-openshift/index.html +++ /dev/null @@ -1,3980 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - OpenShift - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Install Kuadrant on an OpenShift cluster

    -
    -

    Note

    -

    You must perform these steps on each OpenShift cluster that you want to use Kuadrant on.

    -
    -

    Prerequisites

    -
      -
    • OpenShift Container Platform 4.14.x or later with community Operator catalog available.
    • -
    • AWS account with Route 53 and zone.
    • -
    • Accessible Redis instance.
    • -
    -

    Procedure

    -

    Step 1 - Set up your environment

    -
    export AWS_ACCESS_KEY_ID=xxxxxxx # Key ID from AWS with Route 53 access
    -export AWS_SECRET_ACCESS_KEY=xxxxxxx # Access key from AWS with Route 53 access
    -export REDIS_URL=redis://user:xxxxxx@some-redis.com:10340 # A Redis cluster URL
    -
    -

    Step 2 - Install Gateway API v1

    -

    Before you can use Kuadrant, you must install Gateway API v1 as follows:

    -
    kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/standard-install.yaml
    -
    -

    Step 3 - Install cert-manager

    -

    Before you can use Kuadrant, you must install cert-manager.

    -
    -

    The minimum supported version of cert-manager is v1.12.1.

    -
    -

    Install one of the different flavours of the Cert-Manager.

    -

    Install community version of the cert-manager

    -

    Consider installing cert-manager via OperatorHub, -which you can do from the OpenShift web console.

    -

    More installation options at cert-manager.io

    -

    Install cert-manager Operator for Red Hat OpenShift

    -

    You can install the cert-manager Operator for Red Hat OpenShift -by using the web console.

    -

    Step 4 - Install and configure Istio with the Sail Operator

    -

    Kuadrant integrates with Istio as a Gateway API provider. You can set up an Istio-based Gateway API provider by using the Sail Operator.

    -

    Install Istio

    -

    To install the Istio Gateway provider, run the following commands:

    -
    kubectl create ns istio-system
    -
    -
    kubectl  apply -f - <<EOF
    -kind: OperatorGroup
    -apiVersion: operators.coreos.com/v1
    -metadata:
    -  name: sail
    -  namespace: istio-system
    -spec:
    -  upgradeStrategy: Default
    ----
    -apiVersion: operators.coreos.com/v1alpha1
    -kind: Subscription
    -metadata:
    -  name: sailoperator
    -  namespace: istio-system
    -spec:
    -  channel: 3.0-dp1
    -  installPlanApproval: Automatic
    -  name: sailoperator
    -  source: community-operators
    -  sourceNamespace: openshift-marketplace
    -EOF
    -
    -

    Check the status of the installation as follows:

    -
    kubectl get installplan -n istio-system -o=jsonpath='{.items[0].status.phase}'
    -
    -

    When ready, the status will change from installing to complete.

    -

    Configure Istio

    -

    To configure the Istio Gateway API provider, run the following command:

    -
    kubectl apply -f - <<EOF
    -apiVersion: operator.istio.io/v1alpha1
    -kind: Istio
    -metadata:
    -  name: default
    -spec:
    -  version: v1.21.0
    -  namespace: istio-system
    -  # Disable autoscaling to reduce dev resources
    -  values:
    -    pilot:
    -      autoscaleEnabled: false
    -EOF
    -
    -

    Wait for Istio to be ready as follows:

    -
    kubectl wait istio/default -n istio-system --for="condition=Ready=true"
    -
    -

    Step 5 - Optional: Configure observability and metrics

    -

    Kuadrant provides a set of example dashboards that use known metrics exported by Kuadrant and Gateway components to provide insight into different components of your APIs and Gateways. While not essential, it is best to set up an OpenShift monitoring stack. This section provides links to OpenShift and Thanos documentation on configuring monitoring and metrics storage.

    -

    You can set up user-facing monitoring by following the steps in the OpenShift documentation on configuring the monitoring stack.

    -

    If you have user workload monitoring enabled, it is best to configure remote writes to a central storage system such as Thanos:

    - -

    The example dashboards and alerts for observing Kuadrant functionality use low-level CPU metrics and network metrics available from the user monitoring stack in OpenShift. They also use resource state metrics from Gateway API and Kuadrant resources.

    -

    To scrape these additional metrics, you can install a kube-state-metrics instance, with a custom resource configuration as follows:

    -
    kubectl apply -f https://raw.githubusercontent.com/Kuadrant/kuadrant-operator/main/config/observability/openshift/kube-state-metrics.yaml
    -kubectl apply -k https://github.com/Kuadrant/gateway-api-state-metrics?ref=main
    -
    -

    To enable request metrics in Istio, you must create a telemetry resource as follows:

    -
    kubectl apply -f https://raw.githubusercontent.com/Kuadrant/kuadrant-operator/main/config/observability/openshift/telemetry.yaml
    -
    -

    If you have Grafana installed in your cluster, you can import the example dashboards and alerts.

    -

    For example installation details, see installing Grafana on OpenShift. When installed, you must add your Thanos instance as a data source to Grafana. Alternatively, if you are using only the user workload monitoring stack in your OpenShift cluster, and not writing metrics to an external Thanos instance, you can set up a data source to the thanos-querier route in the OpenShift cluster.

    -

    Step 6 - Create secrets for your credentials

    -

    Before installing the Kuadrant Operator, you must enter the following commands to set up secrets that you will use later:

    -
    kubectl create ns kuadrant-system
    -
    -

    Set up a CatalogSource as follows:

    -
    kubectl apply -f - <<EOF
    -apiVersion: operators.coreos.com/v1alpha1
    -kind: CatalogSource
    -metadata:
    -  name: kuadrant-operator-catalog
    -  namespace: kuadrant-system
    -spec:
    -  sourceType: grpc
    -  image: quay.io/kuadrant/kuadrant-operator-catalog:v0.7.1
    -  displayName: Kuadrant Operators
    -  publisher: grpc
    -  updateStrategy:
    -    registryPoll:
    -      interval: 45m
    -EOF
    -
    -

    AWS Route 53 credentials for TLS

    -

    Set the AWS Route 53 credentials for TLS verification as follows:

    -
    kubectl -n kuadrant-system create secret generic aws-credentials \
    -  --type=kuadrant.io/aws \
    -  --from-literal=AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
    -  --from-literal=AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
    -
    -

    Redis credentials for rate limiting counters

    -

    Set the Redis credentials for shared multicluster counters for the Kuadrant Limitador component as follows:

    -
    kubectl -n kuadrant-system create secret generic redis-config \
    -  --from-literal=URL=$REDIS_URL
    -
    -

    AWS Route 53 credentials for DNS

    -

    Set the AWS Route 53 credentials for managing DNS records as follows:

    -
    kubectl create ns ingress-gateway
    -
    -
    kubectl -n ingress-gateway create secret generic aws-credentials \
    -  --type=kuadrant.io/aws \
    -  --from-literal=AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
    -  --from-literal=AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
    -
    -

    Step 7 - Install the Kuadrant Operator

    -

    To install the Kuadrant Operator, enter the following command:

    -
    kubectl apply -f - <<EOF
    -apiVersion: operators.coreos.com/v1alpha1
    -kind: Subscription
    -metadata:
    -  name: kuadrant-operator
    -  namespace: kuadrant-system
    -spec:
    -  channel: preview
    -  installPlanApproval: Automatic
    -  name: kuadrant-operator
    -  source: kuadrant-operator-catalog
    -  sourceNamespace: kuadrant-system
    ----
    -kind: OperatorGroup
    -apiVersion: operators.coreos.com/v1
    -metadata:
    -  name: kuadrant
    -  namespace: kuadrant-system
    -spec:
    -  upgradeStrategy: Default
    -EOF
    -
    -

    Wait for the Kuadrant Operators to be installed as follows:

    -
    kubectl get installplan -n kuadrant-system -o=jsonpath='{.items[0].status.phase}'
    -
    -

    After some time, this command should return complete.

    -

    Step 8 - Configure Kuadrant

    -

    To configure your Kuadrant deployment, enter the following command:

    -
    kubectl apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta1
    -kind: Kuadrant
    -metadata:
    -  name: kuadrant
    -  namespace: kuadrant-system
    -spec:
    -  limitador:
    -    storage:
    -      redis-cached:
    -        configSecretRef:
    -          name: redis-config
    -EOF
    -
    -

    Wait for Kuadrant to be ready as follows:

    -
    kubectl wait kuadrant/kuadrant --for="condition=Ready=true" -n kuadrant-system --timeout=300s
    -
    -

    Kuadrant is now ready to use.

    -

    Next steps

    - - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/logging/index.html b/0.10.0/kuadrant-operator/doc/logging/index.html deleted file mode 100644 index 30f0a6be3..000000000 --- a/0.10.0/kuadrant-operator/doc/logging/index.html +++ /dev/null @@ -1,3391 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Logging - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Logging

    -

    The kuadrant operator outputs 3 levels of log messages: (from lowest to highest level)

    -
      -
    1. debug
    2. -
    3. info (default)
    4. -
    5. error
    6. -
    -

    info logging is restricted to high-level information. Actions like creating, deleteing or updating kubernetes resources will be logged with reduced details about the corresponding objects, and without any further detailed logs of the steps in between, except for errors.

    -

    Only debug logging will include processing details.

    -

    To configure the desired log level, set the environment variable LOG_LEVEL to one of the supported values listed above. Default log level is info.

    -

    Apart from log level, the operator can output messages to the logs in 2 different formats:

    -
      -
    • production (default): each line is a parseable JSON object with properties {"level":string, "ts":int, "msg":string, "logger":string, extra values...}
    • -
    • development: more human-readable outputs, extra stack traces and logging info, plus extra values output as JSON, in the format: <timestamp-iso-8601>\t<log-level>\t<logger>\t<message>\t{extra-values-as-json}
    • -
    -

    To configure the desired log mode, set the environment variable LOG_MODE to one of the supported values listed above. Default log level is production.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/observability/examples/index.html b/0.10.0/kuadrant-operator/doc/observability/examples/index.html deleted file mode 100644 index e011b8a15..000000000 --- a/0.10.0/kuadrant-operator/doc/observability/examples/index.html +++ /dev/null @@ -1,3551 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Dashboards and Alerts - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Example Dashboards and Alerts

    -

    Explore a variety of starting points for monitoring your Kuadrant installation with our examples folder. These dashboards and alerts are ready-to-use and easily customizable to fit your environment.

    -

    There are some example dashboards uploaded to Grafana.com . You can use the ID's listed below to import these dashboards into Grafana:

    - - - - - - - - - - - - - - - - - - - - - -
    NameID
    App Developer Dashboard21538
    Business User Dashboard20981
    Platform Engineer Dashboard20982
    -

    Dashboards

    -

    Importing Dashboards into Grafana

    -

    For more details on how to import dashboards into Grafana, visit the import dashboards page.

    -
      -
    • UI Method:
        -
      • JSON - Use the 'Import' feature in the Grafana UI to upload dashboard JSON files directly.
      • -
      • ID - Use the 'Import' feature in the Grafana UI to import via Grafana.com using a Dashboard ID.
      • -
      -
    • -
    • ConfigMap Method: Automate dashboard provisioning by adding files to a ConfigMap, which should be mounted at /etc/grafana/provisioning/dashboards.
    • -
    -

    Datasources are configured as template variables, automatically integrating with your existing data sources. Metrics for these dashboards are sourced from Prometheus. For more details on the metrics used, visit the metrics documentation page.

    -

    Alerts

    -

    Setting Up Alerts in Prometheus

    -

    You can integrate the example alerts into Prometheus as PrometheusRule resources. Feel free to adjust alert thresholds to suit your specific operational needs.

    -

    Additionally, Service Level Objective (SLO) alerts generated with Sloth are included. A benefit of these alerts is the ability to integrate them with this SLO dashboard, which utilizes generated labels to comprehensively overview your SLOs.

    -

    Further information on the metrics used for these alerts can be found on the metrics page.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/observability/grafana_trace.png b/0.10.0/kuadrant-operator/doc/observability/grafana_trace.png deleted file mode 100644 index bc9d32a4f37c22e20f051d7d7ebc429ee071dd77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 222423 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 z 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%0Akd2Ob24%G`VG93Qn$k!|rVuTxQ5{)IMXkI)j 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 z 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

    akob~d^V-utawLU={H-a)&ALeL037dI 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 EFXD8%W&i*H diff --git a/0.10.0/kuadrant-operator/doc/observability/grafana_tracing_loki.png b/0.10.0/kuadrant-operator/doc/observability/grafana_tracing_loki.png deleted file mode 100644 index ab02c91f744c9aa84245b493c1e8b4d46014091c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131715 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 u{&@IvQlPJ@USrv~rmB4P^o{?DO7!WT5MP@UZ~ - - - - - - - - - - - - - - - - - - - - - - - Metrics - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Metrics

    -

    This is a reference page for some of the different metrics used in example -dashboards and alerts. It is not an exhaustive list. The documentation for each -component may provide more details on a per-component basis. Some of the metrics -are sourced from components outside the Kuadrant project, for example, Envoy. -The value of this reference is showing some of the more widely desired metrics, -and how to join the metrics from different sources together in a meaningful way.

    -

    Metrics sources

    - -

    Resource usage metrics

    -

    Resource metrics, like CPU, memory and disk usage, primarily come from the Kubernetes -metrics components. These include container_cpu_usage_seconds_total, container_memory_working_set_bytes -and kubelet_volume_stats_used_bytes. A stable list of metrics is maintained in -the Kubernetes repository. These low-level metrics typically have a set of -recording rules that -aggregate values by labels and time ranges. -For example, node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate or namespace_workload_pod:kube_pod_owner:relabel. -If you have deployed the kube-prometheus project, you should have the majority of -these metrics being scraped.

    -

    Networking metrics

    -

    Low-level networking metrics like container_network_receive_bytes_total are also -available from the Kubernetes metrics components. -HTTP & GRPC traffic metrics with higher level labels are available from Istio. -One of the main metrics would be istio_requests_total, which is a counter incremented for every request handled by an Istio proxy. -Latency metrics are available via the istio_request_duration_milliseconds metric, with buckets for varying response times.

    -

    Some example dashboards have panels that make use of the request URL path. -The path is not added as a label to Istio metrics by default, as it has the potential -to increase metric cardinality, and thus storage requirements. -If you want to make use of the path in your queries or visualisations, you can enable -the request path metric via the Telemetry resource in istio:

    -
    apiVersion: telemetry.istio.io/v1alpha1
    -kind: Telemetry
    -metadata:
    -  name: namespace-metrics
    -  namespace: istio-system
    -spec:
    -  metrics:
    -
    -  - providers:
    -    - name: prometheus
    -    overrides:
    -    - match:
    -        metric: REQUEST_COUNT
    -      tagOverrides:
    -        request_url_path:
    -          value: "request.url_path"
    -    - match:      
    -        metric: REQUEST_DURATION
    -      tagOverrides:
    -        request_url_path:
    -          value: "request.url_path"
    -
    -

    State metrics

    -

    The kube-state-metrics -project exposes the state of various kuberenetes resources -as metrics and labels. For example, the ready status of a Pod is available as -kube_pod_status_ready, with labels for the pod name and namespace. This can -be useful for linking lower level container metrics back to a meaningful resource -in the Kubernetes world.

    -

    Joining metrics

    -

    Metric queries can be as simple as just the name of the metric, or can be complex -with joining & grouping. A lot of the time it can be useful to tie back low level -metrics to more meaningful Kubernetes resources. For example, if the memory usage -is maxed out on a container and that container is constantly being OOMKilled, it -can be useful to get the Deployment and Namespace of that container for debugging. -Prometheus query language (or promql) allows vector matching -or results (sometimes called joining).

    -

    When using Gateway API and Kuadrant resources like HTTPRoute and RateLimitPolicy, -the state metrics can be joined to Istio metrics to give a meaningful result set. -Here's an example that queries the number of requests per second, and includes -the name of the HTTPRoute that the traffic is for.

    -
    sum(
    -    rate(
    -        istio_requests_total{}[5m]
    -    )
    -) by (destination_service_name)
    -
    -
    -* on(destination_service_name) group_right 
    -    label_replace(gatewayapi_httproute_labels{}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")
    -
    -

    Breaking this query down, there are 2 parts. -The first part is getting the rate of requests hitting the Istio gateway, aggregated -to 5m intervals:

    -
    sum(
    -    rate(
    -        destination_service_name{}[5m]
    -    )
    -) by (destination_service_name)
    -
    -

    The result set here will include a label for the destination service name (i.e. -the Service in Kubernetes). This label is key to looking up the HTTPRoute this -traffic belongs to.

    -

    The 2nd part of the query uses the gatewayapi_httproute_labels metric and the -label_replace function. The gatewayapi_httproute_labels metric gives a list -of all httproutes, including any labels on them. The HTTPRoute in this example -has a label called 'service', set to be the same as the Istio service name. -This allows us to join the 2 results set. -However, because the label doesn't match exactly (destination_service_name and service), -we can replace the label so that it does match. That's what the label_replace -does.

    -
        label_replace(gatewayapi_httproute_labels{}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")
    -
    -

    The 2 parts are joined together using vector matching.

    -
    * on(destination_service_name) group_right 
    -
    -
      -
    • * is the binary operator i.e. multiplication (gives join like behaviour)
    • -
    • on() specifies which labels to "join" the 2 results with
    • -
    • group_right enables a one to many matching.
    • -
    -

    See the Prometheus documentation for further details on matching.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/observability/tracing/index.html b/0.10.0/kuadrant-operator/doc/observability/tracing/index.html deleted file mode 100644 index 14c6c79f5..000000000 --- a/0.10.0/kuadrant-operator/doc/observability/tracing/index.html +++ /dev/null @@ -1,3629 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Tracing - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Enabling tracing with a central collector

    -

    Introduction

    -

    This guide outlines the steps to enable tracing in Istio and Kuadrant components (Authorino and Limitador), directing traces to a central collector for improved observability and troubleshooting. We'll also explore a typical troubleshooting flow using traces and logs.

    -

    Prerequisites

    -
      -
    • A Kubernetes cluster with Istio and Kuadrant installed.
    • -
    • A trace collector (e.g., Jaeger or Tempo) configured to support OpenTelemetry (OTel).
    • -
    -

    Configuration Steps

    -

    Istio Tracing Configuration

    -

    Enable tracing in Istio by using the Telemetry API. -Depending on your method for installing Istio, you will need to configure a tracing extensionProvider in your MeshConfig, Istio or IstioOperator resource as well. -Here is an example Telemetry and Istio config to sample 100% of requests, if using the Istio Sail Operator.

    -
    apiVersion: telemetry.istio.io/v1alpha1
    -kind: Telemetry
    -metadata:
    -  name: mesh-default
    -  namespace: istio-system
    -spec:
    -  tracing:
    -
    -  - providers:
    -    - name: tempo-otlp
    -    randomSamplingPercentage: 100
    ----
    -apiVersion: operator.istio.io/v1alpha1
    -kind: Istio
    -metadata:
    -  name: default
    -spec:
    -  namespace: istio-system
    -  values:
    -    meshConfig:
    -      defaultConfig:
    -        tracing: {}
    -      enableTracing: true
    -      extensionProviders:
    -      - name: tempo-otlp
    -        opentelemetry:
    -          port: 4317
    -          service: tempo.tempo.svc.cluster.local
    -
    -

    Important:

    -

    The OpenTelemetry collector protocol should be explicitly set in the service port name or appProtocol fields as per the Istio documentation. For example, when using gRPC, the port name should begin with grpc- or the appProtocol should be grpc.

    -

    Kuadrant Tracing Configuration

    -

    The Authorino and Limitador components have request tracing capabilities. -Here is an example configuration to enable and send traces to a central collector. -Ensure the collector is the same one that Istio is sending traces so that they can be correlated later.

    -
    apiVersion: operator.authorino.kuadrant.io/v1beta1
    -kind: Authorino
    -metadata:
    -  name: authorino
    -spec:
    -  tracing:
    -    endpoint: rpc://tempo.tempo.svc.cluster.local:4317
    -    insecure: true
    ----
    -apiVersion: limitador.kuadrant.io/v1alpha1
    -kind: Limitador
    -metadata:
    -  name: limitador
    -spec:
    -  tracing:
    -    endpoint: rpc://tempo.tempo.svc.cluster.local:4317
    -
    -

    Once the changes are applied, the authorino and limitador components will be redeployed tracing enabled.

    -

    Note:

    -

    There are plans to consolidate the tracing configuration to a single location i.e. the Kuadrant CR. -This will eventually eliminate the need to configure tracing in both the Authorino and Limitador CRs.

    -

    Important:

    -

    Currently, trace IDs do not propagate to wasm modules in Istio/Envoy, affecting trace continuity in Limitador. -This means that requests passed to limitador will not have the relavant 'parent' trace ID in its trace information. -If however the trace initiation point is outside of Envoy/Istio, the 'parent' trace ID will be available to limitador and included in traces passed to the collector. -This has an impact on correlating traces from limitador with traces from authorino, the gateway and any other components in the path of requests.

    -

    Troubleshooting Flow Using Traces and Logs

    -

    Using a tracing interface like the Jaeger UI or Grafana, you can search for trace information by the trace ID. -You may get the trace ID from logs, or from a header in a sample request you want to troubleshoot. -You can also search for recent traces, filtering by the service you want to focus on.

    -

    Here is an example trace in the Grafana UI showing the total request time from the gateway (Istio), the time to check the curent rate limit count (and update it) in limitador and the time to check auth in Authorino:

    -

    Trace in Grafana UI

    -

    In limitador, it is possible to enable request logging with trace IDs to get more information on requests. -This requires the log level to be increased to at least debug, so the verbosity must be set to 3 or higher in the Limitador CR. For example:

    -
    apiVersion: limitador.kuadrant.io/v1alpha1
    -kind: Limitador
    -metadata:
    -  name: limitador
    -spec:
    -  verbosity: 3
    -
    -

    A log entry will look something like this, with the traceparent field holding the trace ID:

    -
    "Request received: Request { metadata: MetadataMap { headers: {"te": "trailers", "grpc-timeout": "5000m", "content-type": "application/grpc", "traceparent": "00-4a2a933a23df267aed612f4694b32141-00f067aa0ba902b7-01", "x-envoy-internal": "true", "x-envoy-expected-rq-timeout-ms": "5000"} }, message: RateLimitRequest { domain: "default/toystore", descriptors: [RateLimitDescriptor { entries: [Entry { key: "limit.general_user__f5646550", value: "1" }, Entry { key: "metadata.filter_metadata.envoy\\.filters\\.http\\.ext_authz.identity.userid", value: "alice" }], limit: None }], hits_addend: 1 }, extensions: Extensions }"
    -
    -

    If you centrally aggregate logs using something like promtail and loki, you can jump between trace information and the relevant logs for that service:

    -

    Trace and logs in Grafana UI

    -

    Using a combination of tracing and logs, you can visualise and troubleshoot reuqest timing issues and drill down to specific services. -This method becomes even more powerful when combined with metrics and dashboards to get a more complete picture of your users traffic.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/proposals/images/authpolicy-control-structure.png b/0.10.0/kuadrant-operator/doc/proposals/images/authpolicy-control-structure.png deleted file mode 100644 index ee6e621ef585aa959d1307102111ccc3fe167529..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60035 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 z zTz4f^VUU9P0f%?pgn5ZX*Km-J)Fsuq=c>zk=OYAWOK5CwiU)Lvu5k7(F2{;seCh6e z_EUv6a=)qmQPQY|RKuLM?#iN!qSZTl6{gtus~L|vEs9#qSdo7RD34agWVDKB9~aS^ ztL{I?n=kMEi;dChDuTpbPLST!*)=b7VI31$KYv`ib5opPO;w?$_?z@aragr02>}~nl1T6o6;JS$S7zaxun2A;1DwpHce&Y4(ILT7K zXuX0{!I>?`*cW#Gk8AkbY8D+UDra5O(}&cED&g9MT)Yq0oXv30muRb1SWZ~K*e-%8F(%|p(;~^P0$?i} zKaWF>-~CxPZn!QhaIvoay48KsEYxDSD9>2MA3v{l^>R96)0Q^P8J_29Vyem_1Sb73 zI=)#WEj4BBx3zBd9^ayn4&Q+b$%2rn@or#!fY%JBINmQ!CjweQ)Aw@|)USfex<>oN zmPEi;!HxnR$*>8X_4?DzTBvL7eP|lgQS|e}2acdn(yqn$gD$t7ptjMM%?~hnWiazN zuADI_^Qxw@BPAu3!-fd)rs?Zsbuiea`sJ~!0}$fgmH!Z&K6)!m2xq#gL+Bz3Ug~?7 z1x(5NNQSova+O>gV=^Q+9})1Z_66_o_Pj?x3v}G*ED|DB+Uvi_;laj-}FJhR=NNmX-4hi zl9b)`CJR4lSqg!L=|p(VnV6=8j9lB35L*fG_pgB4sJnY6+B5~Q+lw!j9FjkYDTUqdBRzMFgOOc<-jjT28Dr3~fta;t zTrUToCxtzga5>H!G(wQZ8^fsUiRsY=*^e0G&-D8ERBWJT$JJb3^>2ahlpF-B+TDAej=*?~K2fMqhmKEHZj_@uK!#st19X35Hg zHX=(QsC~$BW(`|(|i0B|4)su2c zPD-X^>iF^>IB{(`sNJ$sVwQse-yTH$CXeIx60d(WAbjM&WP#g#?&uITbXkfmSc<{N zhh%1$;vb1_4972_ivd$({&bU|%=1WD6SqukC~8B{s^u%>d(S39V#4HU3m^NXqbmJh zyNPtOE9HKWN$y9)hG>>d?Yw(ZtLrPKR|5Cz@}r-8UfRM|eCGEhq-NxEO3Mr!HgOW8 zCa-{myW`gL_3gzQitkv*oOh>wP`@f2=3V4^a1TrFWAaLM$UE*)U-m!*wFOxUvWRBv z;VhkAA`|(^l*bk2B?wGYVyGi7%dlUKciOd1#>d6k=Gn2R)bC4pI)v$HJV-j6T0`37 zvLdIFK3CMQ#Ac~?+b!E?*^lg+VYwhK{C^JIMKFXVIWX`XDk_fmqHqYjL>%qA0rNmy zsjqM3=(`vw=*Outp_4@x*#VZ2?EjV3@J^gYRzs`hl^&Q%)HDlA2*m)SA`C?X5Wtr#{mPWsN`fDD>V@R z;@7fH2ACvi%bwGMr^MK1fD|D=9ud?(2(Y(Wn$}>!*NO^%37=!n73Q0E&ZztqD0B9n zL{qB==GUJAE)Z}q6F93c^tZ?Oum@IF2WTkM;r3?Ak;F2D>v*42iQ5o*k?wdZsB`aFJ6i)oNuq*5wK* zZCXtJ$fz4!T(&VPy1KZReXBHFs3|*Or8Yw*AR$f=V<%U{D*#UHiADXuZlBG#*QS@m z!bSl5diLm)fsnWkK!R0+sNDwZZ5H8g@y*>=mt2uTN%@|XK2jDTQ<~KS&wQ7ubEDCvnFCod7k;~G1GI6ShmX>LYl1X z6A})k8YGXEWmSDe>dLrFM?Oz(y;%I3T8RbLQ8VDQcVxsVfD8cc-j9zBf#3gF$n%&X zz8muTrd~vxcMJky&{ry}ccO&Hoo=!kZrbwxySd;Qvxde;tD0^Htv;A~V!CAB5d7g_ zaHlr^=qy6v$k-h5!#{oh2dTBRb-7G0G@OZjUO~pr6{=1mA+TL4L+v*_2<$*Kt#Z`t(sV| zXW4)kH(~llLdh}U+(x!2;^5FSyS*JX2j}98;~%4*gxKu{e$a{+k`NS~mZ+m8Z>wr* z-NqX0_F@`nW~jssYDjiZ5X9(@jAVMG@2#aYt0|8u)A}U!>-+QncFRzp}EM*m!i6s za~@FBoY{QX?a00Tr)oP-O>0U>>lB}h@VTrB}15@#m2aQtA7xYJ>d3qqRvR_^HAfb~G~jdfew zx>T-Dw-oAt6`Z>FxB|TSCEY0?3TiQ*9oD}Zj96mYE_)@F*0V!UYoy&-sMG+v^Hg@jRJ|G5A!AYpW*n1tU4* z8jMXvKE;yiwR0taWU{_%FspEj_O6{xvka>?tG0Ky@|JzD8z}n=W9Eo0wjGdyeVgV? z1sN}Cm%BDt_J?!TD6lZPz^Z&@(ko@!gq1;PXybaYQR?Bd@Ickj?cZOnhKZw7&QKb{ zvYq|5f4|D!Nl8>z_Dn5UC2NGj5-)q;z><@I!O?yA(Hn9LfGVSYwHkVPCZ3KY!LzsGQ4DQpcBX*YC`}{*#YU z`zG=JvXR`uM#;<~1|ypJn;(2_w6=NSL2fG$7Wdr5cvAIp!kX~nRfho4@!Wy&SC;xk51cAm*<#h4edjnWfvZQrS zcg=Q2%idhT!}O*eK`Pw-c>L^w^K%W0^A7N5YAE6imMB1!;^5g5LdM4w!IHZq$K0dd zHuXmt>)ksM#A{3S!im=l+Jj>6;8TV@{8 zhc;d5R!~kOzx?KmXnea_T=(2veHO&Kb^1B8g2a$_Kp#9|g=lT9qcwn8;kvuKc%gQ7 zhalp)9pk>Dx=g-U=~Jol#q&nC#)5NVsb|yffnL?_@3{Va6Wn6!q2dSCCISayq#>hW zl%vqQVY}GRC+@L#cS-f`#;(ngwZ0j~B@iA6X|Lp$EY4QwMffu{ffJXNi>B(`bGux% z7bUqCbBaA3+uJ;6Vq(JfV8<>pIy#f?G-(?tx%a9va`|l*qA1Wv<3!oM`?Q;y!Es+; z#L2lBO)fuezQ40OHSYVc|+Hrmej za1_bFCKd$HdzV}Ik*b330bXkhx&fqm0%F3;-#pN`05Ou7t&O68_^RFUa?aMNQX6)Z zNnecyoA&n$JS=YYl8_CW+t{y!NBf|>uW$@TKn%^z{kw(8)aoHj?u;GQp(C{R;vhAd zkpf7~W)=g_H;>Z>9kR}8dp-wqpA;18ApfCKL)VJO$N>h-gjaBWYpBH2gcZ(8_s?7Q zviMKJ1ZZRg@>-ard->e_!a`IBWzZ>jsQD#%Sy=%gc&>WxR`oe2PK?mdvhgoh)g)B) z?Jyh4?N^%{3i>sj6sN!S*xeM*aKgg?{F&;6N8vl~>FL8FRpd&iX z+h=A<-ZiNnc>Y%(GJ^2MToLJ?uU4|I;q8C35!;(Gve%*^*K?EeU?B038tm+qe99d% zNTM5Qb3e3@nyvU#2x4SOgd_pZ;^+|Jrk96^`)B)$1F3ScC5BVC)fQhoC&LH~IB9iLae8l5 zubd2qGHe;mbzjQxbRO4Fm76!hC*h`g(|Ssc!Xwqb@IIHs88s5pu3vzmFZt9jiFqN& zH?IYt>+y16BrpANur4p|uGU`rH8+oUKWn+t>#(t{MR27V3w;)+66@@j-j^zu6MUN{ z)#is+K;+r$#c^6-cdnJ4%%fO*t)c3-{b{MT*sS(ju)%tRp!Zj~JB&+J3G$1YvbcAP#yGKI81OIPdK6-V3i84;t9HeiYeA1l%X-yrkf~Je+|1@MQf=fSS3Wb-|pSgV&w8ZN!aQKG}9u63N{-I%f9+MjN&DQ;y zmb`+_w3n3?6WHx~kLpnQZW25uA51pKc?->qz;#m*gWegW^6^>A;#;kkKlqZ=3!`^J`VhvBK ze0U>r<%+mKI>8aAa=hFm&tuMfy_H3E&+6cF9qikvCh<~;b>u6^4Naw-)>pPJ3g{i+ z1N0^V*%J_Ki-*KQMX1bK@+&x?dC;sX)j&En`aXTVE|_RqeCV(VFwojSQO8caOjjCc zjQd>JVCbNHVzWlzHytIeTJT1-x)-a&ZW|nl>rr=J2h8K+QucF(;~3IOr%epIhbzB8 zl9f%_4ml7C9C0>QWgm4(>+8ThfSh4%T|s>av@%qC1R3^%HWqPFt&vdF-x4SYnZ)a3`y(ZMxb!+yRn)pru~!lfC)9zWUe zg95q%P6wFyRlAF)^_xEu29**L@QGXmQ`gR>ln;B)2Wg5cSUYb!UvW=_o$XtIfr4Xun`RY9{T)8)I`ch@GdM_oS zc~O?4Hb;`SzX@b5jhIc!G*{9|lN2BTPPLji(boL}hvM5R6_o4|$FBC&VI@>;vc>>L zF(OZm2+=mR-j1w2-la~RsQ}iy-0lRlZ4DeS@!7uaH-&l!ODq@SRkrOX0La=zZ~`Sj zCHD7ciroHn43IWe&q(93cKqX{Y@A(dsU+5iT2|gdSWi%dwV+AMdMi{po^WRie?fS(6j14e(UOQu1cG$%qEJ{ukPyk4kfb5;ryfO$&p%@cm`bQh}G_8&ixa& zdMEjZ3(d{eD0v`f{;5G`2Q9kZGb-sUQ(J2bfLFm(*u+pgqT>gWDmMD{I( zGgp6cG-ItstI%Q*rTh8eM5Qf${lGe-+8h*tLGH5`^OR`{XD|b2SpC|eK@}6n?Axh( zaTrN!#$$8Z(O8Q zeXnmRQ6~^Dm8y5!*8dm!e4&vyAq}KR9T7dtXUpZL1gDx zfFY1VPK;ZhK~*akiLvNO6gy4miR_GUT6Vdt5o|@%spYK1f8jC^S;IjYGhm9lIYMU- zHL%u4xoSZH0R5vSv9^SKvJ>78X-Cy=o~zZ%d?XL|B(wp3C~o(v9j%bud?j{fX}mz1 zkHlT;m66$d{)g$mY-!2UYIixUg}wH$KZN^kd5R4 zGHi@d#a*ICuk9NsemvbWKFMHg{k1Q$^ zxB)y>```KiK*pT|&s)v_7_4`oVbKgmas zkpg*7m`|-Nag82m@=T`(XSUruo+58g6o?w*{4t+xVkpy)s&y)BoPXJ1tR`{gFINJU z6nBBA2O@_pz|5+6s@>K!KU7~E|*3e@c4xA&c$ zoxbm1J$IYANm)SWWNEIGgecW~{dpeop43<XQ*N1@sAr2xtN9xOV85_VX1!hpg z^S{-`jbmnyVq*asP~U3ovd#jg0R@u4MYk11Yq)Fx12hn2w>Hp)XT3Uu_)2J7HCc^& zy%bLHhzWo-K5+s6wR|?+J#Fx%6+lpPIfOj007##7Wi# zh;1YH>n#L$7x4}%D^8X5tw#lP+VC;5DwEqUBCAm7m@Sah0N`p+S8ReOLAW@0m-Hhr+5DcJ~_{oygk8XjT@ zf+DDLIEKk{JCKE5opQMX9`XG7wS6@WyRSB*YwKiCIU6fjI+(k3(3=p>VUoD4FNF_< zwR@gIXQ;*0zWm>-la8;BmqRW5CS>|8q#n8k+`$oWea-Xc7*qsxeG@qUuYH0hpd+GK zY=6Me%f*}ouvF3-IG4LEaZ$&JCt4!3>VNAC;1sQ33g1=p?d6!eU&W7KQ%`=-vL1j@ zj=~pXwB8DfiIxy^A2-(mAZn>x?WrqZ30>__G(cC2%tQ2`%%)UJcWg@7# zaExZah=8VHiuj;lU;i3de<~=R{X7Vzbb~K)ITBBlHEs+(yY4p_u5XTA-W0fqK}do) zkD^ULpBn>gR#%fi9tDM|&aU9pUN+80UDhqF&-tP(!)CnhBf6&yjS)RNKxPv7a&00eX<|Ur$-!94bM}7Cq5a0^l4!Gs zl6%}Dp4V^z*e!}V2&`7#3PtyvVo`*Ick4wI`R1O=%ja>+PXzPH#Ih6*j#a$ z1nh6u6FqZFFaa=q>7JIn_Isyamiqt|lg@U`_x$0Y^(z+}>Uvt#yzi}tS z8K7AB5lJzXVRi3BUk@!gEiPjrGuB&ny6`xsX}4?z1(~lcvUoZK!uMR6$8>^sU&XWQ zQac}#Sfa{~Y@vYCWvp<^`83XBjHJjjgrJW1$%^T$BZGM<$n=Cl^^s4sLbvIU5PEobO=D(H?VU;iWCiO?Wr$1~Q|*7i@9;x8Y2s5h|M1VJtKJ;(CdTf{Y1CTxL! zvBGu3{QIh#&MO&ojfGQbhtPd6(cD?{O6Bd(Ud-P zb+X8~5~uB1i>r2yAiLvcU1*|Y@44c~xX8n@u4X>$OXXp=!y2394<~TEH+~aezr=Bx zWox;8tToWT$A10BO097|d!iO5aPgBKg*Q!}xlUBw;jP|N(iVC6HE`m#hXZ59t3`@a z)%Tu*H&emr?@CXDK-xh$b6S_lp~77fS{GjDG1(dC9KIprJD6r18P-YSx`d-hkd$j+ zEd`7QCa_kY^@$DAGk}m$AQ)e5DttchM zv!W97jhk77KuguOLd&t(Fe6M1pmG8o2yuK)$v5*@uM%o!Yy4|U&l$(!I7ab@SPc!6 z3BJLOLa=8V|5#7m>Q&KUS+Q#g3XEM^7FL?<=$%9;hN$V=ea+o1G3@Y!Xi@`(aR6OL zHUssp42OlJP_Xufh#XlRb$lQJav}tuuasB-nEr5ffWHzzo%mgjc;+W5u0-eMTeRpO zg7yKaj}MoucMT7OlvK97004zHx#ZierE~GDaSq3vcLVfX(|+AQt-bw{Q?hM6nyQmo zjQ86a4C@-XxC~;ZN^C%yg`D+=!z?UYLFvX4#R3&t@BoeqXtM#Fjb36_&gvZwghC~e zQ)!-A7>S2_65wfkg7X@`=M6xSMR_o!=3zZ@pLM8gL;C=`O3$=#MISff4WtmQLKuQv z19gJ?8&)4j-U=(#^b0{PaI;+kBI4w@Pk<1^2wLsJYS%6#0jDiTRlpP{lEObMY-}kN z73WtfHbMs9lXRWeD|5ha3Zbj(PE+Y6lDnFC{Co8GCZQB~0OWyy%7@Q1OIeaXEERc$m@LIxio#M%T_cD7(JvwYV3uaU?1K zRD-ql-(G;^xxdxttgmEhQ!f3^9W&K_fEmmc3beBe25$(Qjc9(6;&uG~FJc0D*N8tR zvIBibbIZ4HQgA&)jR&ZjeK~qQ@^y{Z0F7OKcgo*CnhQSn`7{5`aO`;HnSu_BqOa5T zM%&B7>a6%geli?{Kjs`d7dHJvLp8U=;*|*q2&8iR>Za{$$8Dv;nWujL-W%rWyjrBq zZU5wnM-E2>IR*4jb`jwte}XavGT#V>mNM9|g8i%cQ@*`6Ckm z2e+fU%w@H-sG)=lj~4gX(#qDD-F%wptM(wA`2r75N3Iv6gao}{oD#LS4j1KJxa>P8 zhv?zMhqk4x8aK|$k%Ii-=;$b|R{+13Pf;5%g^+Uh?$i_AM~^t*fbaVjJoe6B;^e## znB0;7oG~dUM|t-#tir&+z-#8_8CX%=xHd{&jQ1HJ$vccJG#Surm`S|#XD4v?tUkwA zeOvXYyoQXCN&9o5Ha9;%e`MMS|L$Cw^R*8pi;GsTUcE|6OT&c+-oyW)(Gd>(@#9C& zrZ>^iU#$e|CfCNgQf_?v_RYJ&cx{gFTWf3Gw{Lh>f^qgracwwnT76;Jr-jRhLz0u3 z9z1w}zPZJ2r1^y+g`9t~KU^lhr(2Mg*2MNK?>-kg+Yva`*UTJa+wbSl0)mho!0y2F zY@9@OXjnTjBvbyFF$YnP1kYBiCo5^o{Au0zmHNa%4HN1X>e||;;b*_Pap#bOdWN?* zMW;##*RSbaJ_qN;7|4Vzt=b;ZYFjaS`r8b|nQ4V!Mm$d&UQkmlEG&{>A-9^F2A7m=?IUF#D&n1~MJh?wvV-+S<@7uv5Wpicdny{peYX_a}{o$f9lS?4L8u zm95iXhs&KWD3Iac;9!oJWIpxMa(8#{>~j!4k8wLfku{=2-9sUK%)a#XyLXFkB2hGo zMAm;b7nm39#_v@YdFXe70hsm$ZAMFUp-m2N_Cg~{4% z*TpZom#Zyt#JDrW&EL2YV;;J&@g}o>opVSAqd0r^EV}c(7IIEbTc4`b1>)}GE#~}n zPEf>k@m~2S2Z{H;p?#8e={PJj>{v5r;0^AOdKA)DZ=7EkIOXeh>rUY8<-W~dHKnFh>?bC-yQ;B{7r6 zFIM8Xt=j0o+3Q`&!r6aFxDLds90l1hXiq^?4RjcmG4>tLYaU@+l2@g=qYkJ>6{b0} z>B%`(sm+_%pQS<}cTlu;^{<ZGPjKg@qI_3v>-LGNj$zD}GGrXlgb+J>&(B zo#f`2_19i)rxn~S?>#?Zx^Ue6Q_$GNzo7c~aZX3i`wy4@>GpKx#sE*c$&;((_cIII zA6T&(RczbckASvn4T*sxL!T6d(O*Ug6gIQkO$8cy{GU4kFxyqUTnk|q1U&O1?F#WN zx4+aqwnrdQg8x4agQ&Uy5&*j~mGj~21(eWppZ!}c!A)zZ>t5y=iMo436Hir93)8Pi2oi6;%T1a(V3&)hnI?EFc1LRF90Fsv$9wZ9$tx8k-hz9 zbG>7=+L1?w1RMFw%gG)q)j+EnU=`iGLs^Pl`mN!*z@6MnfBBa$Dg#nHB4RjxeL{j{ zWxE1VRp5V|F>LVfR))XA!>2c1IOW4R|8~p%t?fd$251s+Tpy@8N)$lL)n9p?wxkjj zIRdFpkT|4mo_kiYS2^?x-03;q$rUjpKlg-Z2 z3>mvjv*ho|5@{yXmuRq@GaigFt&4XhYEA1o5fVhJsOj`}1FEMhy>*e_@T#EPB5c#h_qjv-Rj~{wo(fgJ9D; zS_%ENva-@>CoFK2e`KrE&(Mx3lWNVAB?gr0qmgy*U(JXSZ^yL789hEJ+WUuoslEFD zeCPc_y}tc3adR~B{f~)bp#Ja!z{-C&e$h!RHV(E#ZAw_nj*2o!?qA9PMNo!M)d&I= z+zDk(zm6kl(-{>+&~`casiPPe0Q_msdSPWF{-L>xd8dsI`*vw}FX^g8M9C>P23MV= zee4Y=sk3QUOoO#-!NK!vh>yHTSA+nL<3MjL$Sl9_7O( zb%}p*SxcUw9o>03Xp}xLWKz9xV7lm>;2c`Df|2BY)YiWu-e!GVXES8e=sANi_UQ3G zgT#=2vwQExa@Y1@ab@^!W=Apl?h@|EeFV=1YW&YDLo2vDJ)ZA|JX)nf0!i3`t!eCEQ2wY0QEb^d&PsOO)HDE#2yz;|_Zg)aA}mGo*d&=9w1p zQCdVoLI@Tv(O6?JEfo#Tb#-;}s;#124!i!PE!S!`5To2tf<)TjHdYP22Y)s<$A6VR z;iV!7qVbbYc~)yEWo^yP2vm=4!VM?M8 zQmRXWZPa)OsOZ9Q_q6@{^mKC#6~|N3QjZ=z`Zg1m3wK_9U}knvP>>R+WqNitVbHVV z2U=QMx0qJJ?MWAYX3Hok1rHiQ65ItHn6$xM08^@lEz6!fT|T9@$g=NXs};*-m!>u| zCkJGBd~Vg)bFh!FD}cJulcRz4vLBPw($JuUS=vt2Ec4vH@ScX|0H`Pt0!a zc|R0~4WkLhIf34LQ5enmh?!*o!TL~wnDcTHOw8BU*TRqDGrHJYOG7(NUI#a#u^~nF zqtm)UU!!ulxzuTi2HG?}8+cx1d~(8EJLeo)iud-OPEAj9TpfzI?E#o4+^VOqFXi*+ zA2YEL9dO$gVyXgW1$Iu(xHaLd-awSa!GiGc@Qm4Aesh~6AZG4qSPM`y7Rl3?-Ime|Xa3k|kk);HgQMB3`ftWQCcl`78ngC5O|7v7M6f=G({WVPF&!0avrUe``=gyw3eZY@`Pax~7F5-a9*)LsM z4{$a#L|`P~GQh@X=jNaz>^Xa&L{n5$6!2@}YuB#9`>Cj@;rG{_oQgZ_VEtR3-yPYG zch~&@#90RL{H`(RWMZ!b%lps@Jx+q>6~SBKFKMb zIqtufhs&d^!Q$u<`na}KtB8(miFT+}fwXW95r?_L2PQGbo*2M4YHI2=m{F)kR{U1g z$TlAg1iuBV#-}Pd@R;70&jbSf6xyW3!SxdI^YdAD)pc|hHq2-OF6&p!?luZly+^aX zz-<6MqzWY1i4q8G;;UB#^-WEj`@j@9A}GjO6RuIeB1p)C|1 zf#k>F`DOOW9#87muh)Bi{!IS#=~de_z^=gDbULKV3M$x^eL2$M%z%W2&l8;&cTpX% z5uj1Kdlx&a_p~&LVabpO8C*YcCR-!x6DOlW_&WKka_5yjU6s^ci^K5K*&4LGo-5d< zu<uKG!<^oJYLP8U`$0+pA&JO-&I;wh>lJZh_t3{Ev zU@AFjSMmfc5_of@`x#E`$Q96FV7*%yhsJGp2tI=(fJU}=?+8-5{L9KjK?d1jChfKp zjra69EhHMS zNf~_$QE6KdBIk*iSy)cFuS*VZE&~_-V{8Hq9~_*YwX*^9e*q`wqP#83EzYWN!Yd;p zd?MIXGU?irv$C`0?Ckj9w16Cv{}`o)^ge*Dzd#EX!j{dW4A>7buV642){GR zBLt7GiQ?FHEY)q1#4)&vbMIi@FUZ>qpl7qn{KPyNB@6{y>OMM=`(zUJJ9zQ!oCh=Yl!qI zkXj($S@@A_3=R$DTMr5LTNURe&_n_xQF~y5ieQTcdMV1i|ekZ0f3KsAzbzT{d6aG(mF$45P3o7LhJd- zEH6*qkk#9=o=8GXfK%VlkWT=x={FrZA6vKwI@fWG@6u2ST2N1RZ2|yI`HopZcgK?Q z^XJdDOM@r!!#{^P-G0bW26HTu`Onbopw1v*ba#Ya<2A|yQHxbMnd|B!r`f60M+)J0 zLtcPjO$H>sFzHL|(qg_9EanMl(^du87ZVc$y`=d9G=!s|4RlrP1rB1UI_%Uj9C>>k z_IXWrkFnS9ZI)`4J8{2LW;-5+Q*tdh>4hMA9$kf^wBw_dW4Q9@!*fvLjW&L_0YZ8? z_+IuypS~L*)GFX|friB6-NeZ{V#)fkF^E2Q#m>VtPgP+g$*rjz|535<=HX_qSJoIyQic*-P{c77OS(_h}-k_u8PKaVMn3g9{<>XV) zmyZ}48cGdIF;T(h{9Q@^uN0%Pa3Iv#WzSrO=*-Q{4TIQ$`G!HZM$=(oJ;3_pQ)c`z zor8nW=}wyV@uM8adl)a42i=TXh-gp)NGd7OTvBC{2MGM@u@E39sE@!5>rS>@BTLTM zn2CmlriX~dxUi(;;gf)N8JMe@3$40GB01}xnEc~y> zCGhv`+FEG=LBX#N_)-0Wlw0i|4bGqaDa7dqrl!fo#TrYhU+;K&O3+Jsf)I%IzWYbB zLwPw_?w+1rFbtrKPb1~#CZ?^et*WP&?Zgg?^I{EzC2mo;_K@LtjltZ~Qe7-E@3ZTM z>0fOUZN(<#HbPaDpmyW@q{_lxrRbRBEaF=@6Ck}wMgQ95X2h84dn%38wg#QbU%{K&CR7`WUxT=7TIBAN|r+JkLYWBJr3Io&*y`TjjdLqkJ)R+dkf`H5!)@}nA49&9X#vt2zsFFt+ZDyq{W0lWLw z(Q!jg?v&ZV1tz9@Xvfu8AOX+1%iA)V+K6;4Mv%aL_@SdQnNwmk#0@gj6a5 z8~{%82cj5{OK5j@chLe9AOp}Wdx!u~CsTp{tM&86C<5TEt#sSYgV_9MYYWch)8^Ke zF*vqu`7jiy&L5DIhRvf=$$hAD0XX5Q+F^ny-Pzd*=X1f*+`Q&@TipBZxiMQ|;UQv> zs7^ubp(vhe_)0`C?msbMjD}?&A0G?9t0`b|aL4kbFJGvj5~Pt873BU8#gH`u@wMMd zkbsDY>FU+9utG*Lc<>?_faq%UU1HYFq zg;!zY{A(Ub1+XV;K_N|3a}q)ng80;W!a{~!oT46pwt`kQoW9jehJ2cNEsVXyb7p=fOJQ@2OM~0L?4{r z#MYJs_&6|apdq|8!B)#GFcUOTL^Ff_{-9>u7F(Q^gF`_92L~4y)B%!JVJK6jbm2*p z2uA@AmJ>(U{NAFITa6dan0jMfI6cVBnP@0^9+p^P_TYh{&ZSBF(nuQ5V0m&Um4V91 z?uE@uH)J5-2%!QZ-kC&O`&xykfR><0!6@U|+T$gKf z;(GG*2e-qq!LG}P>77)LFZx15KNJ`aT4G_nSxq1wWsZ$`c`9v3L(upJ^o>c|0ktL4 zjG4dg$P!uW_3$AJ0<{gMsY6IjkQ*gf_#mvyr`QeZ`#{RQpRECT6`~QaBDWS3UV_)E& zriR8P!ae}|00-~3gU75-USQH@M8pwsAYnkF!~tv2Lx~q-tjk;=0lt#ji5^}2! zhQeTCO=88(lE5U0TzD$=SN@VR5ee8Ck;Vu7z7#=irW?pARA*Jd&}yDQR)VFkU)dfz zOzB%lI~*n>Rr_O%f}YbWY{v-Yr^P0VqU5qN8bno76F0O8E40Z6$|D>$r$Lzhq>aiR}EZD}n?&Qk`2SR@NC& z%3Z>myQ9*cLrL9pn2%>7ydWduL!9Y)&Uxw5orIj$&230Q(6zYXnG2K=Mowg#8iC9> zD!6Oy-DOVj#c)9J$%2YwLYt{io9P)B6{P!e2oB?z^J_O8;ROgTZIqzpn%9=O#NO!pg0(`xz3_xZ<0~sR#KEU!4Dg~#cYamEtAb?Ic z%AQ&~Iu`xtjEjtX0cM#3dng!32!@A|)~I;v7N)l=kHRHxZr|nycUlsiRz?Wnp>a?O z4{fR|B0f6aTHd~?_Aq#I$0l>xtsl?uA_@GDiVd?74+nne43>H&6^y(>STP6i76ZKZ zjd^tMzLN|QOSs}Gc~3pbxDAT#6Q;_0$3IB`rut(GfH;eL)I&PWK6l%pn$D?3Ao8Jh6tO}7J$QPQ94S{%N zmczMDhUH>)?zRm1ADnRTi-$^W)GvzF_J6m__|ZAEe!fc~=TT-`@UCu8GSk}B2(*=U z<9Auw%750^?eqCDkWq3B#5?PBooc1NN_YsFb5_{KCAcai#$5P(CUnVu=5iE`uly|D zk<~iCy-yP?ugygX*R;($l?P6KsTx^~94gjhW4fVsx9=)VaL>y2g4EPS_tD%T&8QOn z+^aE)e>P@R8tilps%4j@&mK&<<~%OR@~l3dLr3l@B4$EXJ?6Y{wOJI_=RJm&iVL~2 zBJY;vlsl(uIM&?T$OXC$1uO~wtc+c^jSjna_NBVfTG3JAw}y&CiB_~Pzj5>PRJa8F zBBeu1`q%Ild)}L9MHdx+gwFxi!hKzuqa)cZj`yj}vd@RHKMNP}7Ic276>UIbhSUsX zR&IRk)^Vi26liSYb*%2TS(34SM!ci^oBl!Kqt;T#!=zwxy!TX=5=8SbTfa5!lWs*VL> z_f&rByb+a!U|jQOE;#CvlbCghj#8RBwaNV65VWj_gruywKtD*o9v-sl)fWN{stmco z532i|%DJtFF0+7to!9I5{E5Ezv3{=nqRO=yVP(sqOhE>T4Gq^`$0oZF(~Gfv*E)vw z^;X_tm{*xaKfE!md4(!xp*Y$xQx8GV*vIfuR0#51VLP)+LK-99yc_Y=lJnLy1UP0z zO`kvgT+a;KW)IZv+w(JGZ~YuOv#V8r+%t9{!Oj*Tu3E|Jo?D#O6ClL#37Td^kg9Xx z-Wa;SGCqvJXRiNPpmXZj04vchSrvB-UoMRwSNHR|$F^6ckvQWzXeGEQ<{`WJ*xA|H zQP0owU`K7#jq1a%d4*QQyMz?n{B35$VNB)b=!R8qsRyvPGN()#PlYz3L$`Ihc6=mr zIAB89^GRG!vG)RJ6`aXv0K|v}0vxRDzJ-X3KmA_uL5N)UFi=rZS)nh=5v_=R7(e{8 z!@Ql9%H*i!PTc%(YWG~+sBgOjGIkO5GsPzY;vthMbdE%jBhSjc7Y?}^ue`tym@2E) zKU3?urK5Ws-BIzhP}G|@Z&LOpwf*>B9`0ix=j6zEy@N7{-i6;~c;^_%C!f-FGklAv zE%T^cKUYPfT0fUX&pF;Lw=d#D1b$WTg$F-e@xR?mJ1!cCJPF04v2f3-8V-nRmoo=T zs@P9&?jQanvQLeheRLij8}nUzb=I8S z0@rAoLnrSadK%cB&tgBlTV?P@C)lZDW+R9TBhzUe;k81A&%halx8erzAW^8_JG3#tv`uo@Q zFFt+@ER;DdvDm~nblTJ1Objpm7d)z*2ecx`?Dp=m`ug=2efC!^`40!odtQ6899Yu# z?cStwI@_G-!1vUimDc}V15cF3R?hqWuCFjqM61i`*o{<5@Zp)qamx1A&8@O_~BLGajSZa_z;**TlY3{C{VF^;^>FVdQ&MBb@02Hxu Ah5!Hn diff --git a/0.10.0/kuadrant-operator/doc/proposals/rlp-target-gateway-resource/index.html b/0.10.0/kuadrant-operator/doc/proposals/rlp-target-gateway-resource/index.html deleted file mode 100644 index 33fccccd2..000000000 --- a/0.10.0/kuadrant-operator/doc/proposals/rlp-target-gateway-resource/index.html +++ /dev/null @@ -1,3793 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - RLP can target a Gateway resource - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    RLP can target a Gateway resource

    -

    Previous version: https://hackmd.io/IKEYD6NrSzuGQG1nVhwbcw

    -

    Based on: https://hackmd.io/_1k6eLCNR2eb9RoSzOZetg

    -

    Introduction

    -

    The current RateLimitPolicy CRD already implements a targetRef with a reference to Gateway API's HTTPRoute. This doc captures the design and some implementation details of allowing the targetRef to reference a Gateway API's Gateway.

    -

    Having in place this HTTPRoute - Gateway hierarchy, we are also considering to apply Policy Attachment's defaults/overrides approach to the RateLimitPolicy CRD. But for now, it will only be about targeting the Gateway resource.

    -

    -

    On designing Kuadrant's rate limiting and considering Istio/Envoy's rate limiting offering, we hit two limitations (described here). Therefore, not giving up entirely in existing Envoy's RateLimit Filter, we decided to move on and leverage the Envoy's Wasm Network Filter and implement rate limiting wasm-shim module compliant with the Envoy's Rate Limit Service (RLS). This wasm-shim module accepts a PluginConfig struct object as input configuration object.

    -

    Use Cases targeting a gateway

    -

    A key use case is being able to provide governance over what service providers can and cannot do when exposing a service via a shared ingress gateway. As well as providing certainty that no service is exposed without my ability as a cluster administrator to protect my infrastructure from unplanned load from badly behaving clients etc.

    -

    Goals

    -

    The goal of this document is to define:

    -
      -
    • The schema of this PluginConfig struct.
    • -
    • The kuadrant-operator behavior filling the PluginConfig struct having as input the RateLimitPolicy k8s objects
    • -
    • The behavior of the wasm-shim having the PluginConfig struct as input.
    • -
    -

    Envoy's Rate Limit Service Protocol

    -

    Kuadrant's rate limit relies on the Rate Limit Service (RLS) -protocol, hence the gateway generates, based on a set of -actions, -a set of descriptors -(one descriptor is a set of descriptor entries). Those descriptors are send to the external rate limit service provider. -When multiple descriptors are provided, the external service provider will limit on ALL of them and -return an OVER_LIMIT response if any of them are over limit.

    -

    Schema (CRD) of the RateLimitPolicy

    -
    ---
    -apiVersion: kuadrant.io/v1beta1
    -kind: RateLimitPolicy
    -metadata:
    -  name: my-rate-limit-policy
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute / Gateway
    -    name: myroute / mygateway
    -  rateLimits:
    -
    -    - rules:
    -        - paths: ["/admin/*"]
    -          methods: ["GET"]
    -          hosts: ["example.com"]
    -      configurations:
    -        - actions:
    -          - generic_key:
    -              descriptor_key: admin
    -              descriptor_value: "yes"
    -      limits:
    -        - conditions: ["admin == yes"]
    -          max_value: 500
    -          seconds: 30
    -          variables: []
    -
    -

    .spec.rateLimits holds a list of rate limit configurations represented by the object RateLimit. -Each RateLimit object represents a complete rate limit configuration. It contains three fields:

    -
      -
    • -

      rules (optional): Rules allow matching hosts and/or methods and/or paths. -Matching occurs when at least one rule applies against the incoming request. -If rules are not set, it is equivalent to matching all the requests.

      -
    • -
    • -

      configurations (required): Specifies a set of rate limit configurations that could be applied. -The rate limit configuration object is the equivalent of the -config.route.v3.RateLimit envoy object. -One configuration is, in turn, a list of rate limit actions. -Each action populates a descriptor entry. A vector of descriptor entries compose a descriptor. -Each configuration produces, at most, one descriptor. -Depending on the incoming request, one configuration may or may not produce a rate limit descriptor. -These rate limiting configuration rules provide flexibility to produce multiple descriptors. -For example, you may want to define one generic rate limit descriptor and another descriptor -depending on some header. -If the header does not exist, the second descriptor is not generated, but traffic keeps being rate -limited based on the generic descriptor.

      -
    • -
    -
    configurations:
    -
    -  - actions:
    -    - request_headers:
    -        header_name: "X-MY-CUSTOM-HEADER"
    -        descriptor_key: "custom-header"
    -        skip_if_absent: true
    -  - actions:
    -    - generic_key:
    -        descriptor_key: admin
    -        descriptor_value: "1"
    -
    -
      -
    • limits (optional): configuration of the rate limiting service (Limitador). -Check out limitador documentation for more information about the fields of each Limit object.
    • -
    -

    Note: No namespace/domain defined. Kuadrant operator will figure out.

    -

    Note: There is no PREAUTH, POSTAUTH stage defined. Ratelimiting filter should be placed after authorization filter to enable authenticated rate limiting. In the future, stage can be implemented.

    -

    Kuadrant-operator's behavior

    -

    One HTTPRoute can only be targeted by one rate limit policy.

    -

    Similarly, one Gateway can only be targeted by one rate limit policy.

    -

    However, indirectly, one gateway will be affected by multiple rate limit policies. -It is by design of the Gateway API, one gateway can be referenced by multiple HTTPRoute objects. -Furthermore, one HTTPRoute can reference multiple gateways.

    -

    The kuadrant operator will aggregate all the rate -limit policies that apply for each gateway, including RLP targeting HTTPRoutes and Gateways.

    -

    "VirtualHosting" RateLimitPolicies

    -

    Rate limit policies are scoped by the domains defined at the referenced HTTPRoute's -hostnames -and Gateway's Listener's Hostname.

    -

    Multiple HTTPRoutes with the same hostname

    -

    When there are multiple HTTPRoutes with the same hostname, HTTPRoutes are all admitted and -envoy merge the routing configuration in the same virtualhost. In these cases, the control plane -has to "merge" the rate limit configuration into a single entry for the wasm filter.

    -

    Overlapping HTTPRoutes

    -

    If some RLP targets a route for *.com and other RLP targets another route for api.com, -the control plane does not do any merging. -A request coming for api.com will be rate limited with the rules from the RLP targeting -the route api.com. -Also, a request coming for other.com will be rate limited with the rules from the RLP targeting -the route *.com.

    -

    examples

    -

    RLP A -> HTTPRoute A (api.toystore.com) -> Gateway G (*.com)

    -

    RLP B -> HTTPRoute B (other.toystore.com) -> Gateway G (*.com)

    -

    RLP H -> HTTPRoute H (*.toystore.com) -> Gateway G (*.com)

    -

    RLP G -> Gateway G (*.com)

    -

    Request 1 (api.toystore.com) -> apply RLP A and RLP G

    -

    Request 2 (other.toystore.com) -> apply RLP B and RLP G

    -

    Request 3 (unknown.toystore.com) -> apply RLP H and RLP G

    -

    Request 4 (other.com) -> apply RLP G

    -

    rate limit domain / limitador namespace

    -

    The kuadrant operator will add domain attribute of the Envoy's Rate Limit Service (RLS). It will also add the namespace attribute of the Limitador's rate limit config. The operator will ensure that the associated actions and rate limits have a common domain/namespace.

    -

    The value of this domain/namespace seems to be related to the virtualhost for which rate limit applies.

    -

    Schema of the WASM filter configuration object: the PluginConfig

    -

    Currently the PluginConfig looks like this:

    -
    #  The filter’s behaviour in case the rate limiting service does not respond back. When it is set to true, Envoy will not allow traffic in case of communication failure between rate limiting service and the proxy.
    -failure_mode_deny: true
    -ratelimitpolicies:
    -  default/toystore: # rate limit policy {NAMESPACE/NAME}
    -    hosts: # HTTPRoute hostnames
    -
    -      - '*.toystore.com'
    -    rules: # route level actions
    -      - operations:
    -          - paths:
    -              - /admin/toy
    -            methods:
    -              - POST
    -              - DELETE
    -        actions:
    -          - generic_key:
    -              descriptor_value: yes
    -              descriptor_key: admin
    -    global_actions: # virtualHost level actions
    -      - generic_key:
    -          descriptor_value: yes
    -          descriptor_key: vhaction
    -    upstream_cluster: rate-limit-cluster # Limitador address reference
    -    domain: toystore-app # RLS protocol domain value
    -
    -

    Proposed new design for the WASM filter configuration object (PluginConfig struct):

    -
    #  The filter’s behaviour in case the rate limiting service does not respond back. When it is set to true, Envoy will not allow traffic in case of communication failure between rate limiting service and the proxy.
    -failure_mode_deny: true
    -rate_limit_policies:
    -
    -  - name: toystore
    -    rate_limit_domain: toystore-app
    -    upstream_cluster: rate-limit-cluster
    -    hostnames: ["*.toystore.com"]
    -    gateway_actions:
    -      - rules:
    -          - paths: ["/admin/toy"]
    -            methods: ["GET"]
    -            hosts: ["pets.toystore.com"]
    -        configurations:
    -          - actions:
    -            - generic_key:
    -                descriptor_key: admin
    -                descriptor_value: "1"
    -
    -

    Update highlights:

    -
      -
    • [minor] rate_limit_policies is a list instead of a map indexed by the name/namespace.
    • -
    • [major] no distinction between "rules" and global actions
    • -
    • [major] more aligned with RLS: multiple descriptors structured by "rate limit configurations" with matching rules
    • -
    -

    WASM-SHIM

    -

    WASM filter rate limit policies are not exactly the same as user managed RateLimitPolicy -custom resources. The WASM filter rate limit policies is part of the internal configuration -and therefore not exposed to the end user.

    -

    At the WASM filter level, there are no route level or gateway level rate limit policies. -The rate limit policies in the wasm plugin configuration may not map 1:1 to -user managed RateLimitPolicy custom resources. WASM rate limit policies have an internal logical -name and a set of hostnames to activate it based on the incoming request’s host header.

    -

    The WASM filter builds a tree based data structure holding the rate limit policies. -The longest (sub)domain match is used to select the policy to be applied. -Only one policy is being applied per invocation.

    -

    rate limit configurations

    -

    The WASM filter configuration object contains a list of rate limit configurations -to build a list of Envoy's RLS descriptors. These configurations are defined at

    -
    rate_limit_policies[*].gateway_actions[*].configurations
    -
    -

    For example:

    -
    configurations:
    -
    -- actions:
    -   - generic_key:
    -        descriptor_key: admin
    -        descriptor_value: "1"
    -
    -

    How to read the policy:

    -
      -
    • -

      Each configuration produces, at most, one descriptor. Depending on the incoming request, one configuration may or may not produce a rate limit descriptor.

      -
    • -
    • -

      Each policy configuration has associated, optionally, a set of rules to match. Rules allow matching hosts and/or methods and/or paths. Matching occurs when at least one rule applies against the incoming request. If rules are not set, it is equivalent to matching all the requests.

      -
    • -
    • -

      Each configuration object defines a list of actions. Each action may (or may not) produce a descriptor entry (descriptor list item). If an action cannot append a descriptor entry, no descriptor is generated for the configuration.

      -
    • -
    -

    Note: The external rate limit service will be called when the gateway_actions object produces at least one not empty descriptor.

    -

    example

    -

    WASM filter rate limit policy for *.toystore.com. I want some rate limit descriptors configuration -only for api.toystore.com and another set of descriptors for admin.toystore.com. -The wasm filter config would look like this:

    -
    failure_mode_deny: true
    -rate_limit_policies:
    -
    -  - name: toystore
    -    rate_limit_domain: toystore-app
    -    upstream_cluster: rate-limit-cluster
    -    hostnames: ["*.toystore.com"]
    -    gateway_actions:
    -      - configurations:  # no rules. Applies to all *.toystore.com traffic
    -          - actions:
    -              - generic_key:
    -                  descriptor_key: toystore-app
    -                  descriptor_value: "1"
    -      - rules:
    -          - hosts: ["api.toystore.com"]
    -        configurations:
    -          - actions:
    -              - generic_key:
    -                  descriptor_key: api
    -                  descriptor_value: "1"
    -      - rules:
    -          - hosts: ["admin.toystore.com"]
    -        configurations:
    -          - actions:
    -              - generic_key:
    -                  descriptor_key: admin
    -                  descriptor_value: "1"
    -
    -
      -
    • When a request for api.toystore.com hits the filter, the descriptors generated would be:
    • -
    -

    descriptor 1 -

    ("toystore-app", "1")
    -
    -descriptor 2 -
    ("api", "1")
    -

    -
      -
    • When a request for admin.toystore.com hits the filter, the descriptors generated would be:
    • -
    -

    descriptor 1 -

    ("toystore-app", "1")
    -
    -descriptor 2 -
    ("admin", "1")
    -

    -
      -
    • When a request for other.toystore.com hits the filter, the descriptors generated would be: -descriptor 1 -
      ("toystore-app", "1")
      -
    • -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/rate-limiting/index.html b/0.10.0/kuadrant-operator/doc/rate-limiting/index.html deleted file mode 100644 index 193a67077..000000000 --- a/0.10.0/kuadrant-operator/doc/rate-limiting/index.html +++ /dev/null @@ -1,4255 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Overview - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Kuadrant Rate Limiting

    -

    A Kuadrant RateLimitPolicy custom resource, often abbreviated "RateLimitPolicy":

    -
      -
    1. Targets Gateway API networking resources such as HTTPRoutes and Gateways, using these resources to obtain additional context, i.e., which traffic workload (HTTP attributes, hostnames, user attributes, etc) to rate limit.
    2. -
    3. Supports targeting subsets (sections) of a network resource to apply the limits to.
    4. -
    5. Abstracts the details of the underlying Rate Limit protocol and configuration resources, that have a much broader remit and surface area.
    6. -
    7. Enables cluster operators to set defaults that govern behavior at the lower levels of the network, until a more specific policy is applied.
    8. -
    -

    How it works

    -

    Envoy's Rate Limit Service Protocol

    -

    Kuadrant's Rate Limit implementation relies on the Envoy's Rate Limit Service (RLS) protocol. The workflow per request goes:

    -
      -
    1. On incoming request, the gateway checks the matching rules for enforcing rate limits, as stated in the RateLimitPolicy custom resources and targeted Gateway API networking objects
    2. -
    3. If the request matches, the gateway sends one RateLimitRequest to the external rate limiting service ("Limitador").
    4. -
    5. The external rate limiting service responds with a RateLimitResponse back to the gateway with either an OK or OVER_LIMIT response code.
    6. -
    -

    A RateLimitPolicy and its targeted Gateway API networking resource contain all the statements to configure both the ingress gateway and the external rate limiting service.

    -

    The RateLimitPolicy custom resource

    -

    Overview

    -

    The RateLimitPolicy spec includes, basically, two parts:

    -
      -
    • A reference to an existing Gateway API resource (spec.targetRef)
    • -
    • Limit definitions (spec.limits)
    • -
    -

    Each limit definition includes:

    -
      -
    • A set of rate limits (spec.limits.<limit-name>.rates[])
    • -
    • (Optional) A set of dynamic counter qualifiers (spec.limits.<limit-name>.counters[])
    • -
    • (Optional) A set of route selectors, to further qualify the specific routing rules when to activate the limit (spec.limits.<limit-name>.routeSelectors[])
    • -
    • (Optional) A set of additional dynamic conditions to activate the limit (spec.limits.<limit-name>.when[])
    • -
    -

    The limit definitions (limits) can be declared at the top-level level of the spec (with the semantics of defaults) or alternatively within explicit defaults or overrides blocks.

    - - - - - - -
    Check out Kuadrant RFC 0002 to learn more about the Well-known Attributes that can be used to define counter qualifiers (counters) and conditions (when).
    - -

    High-level example and field definition

    -
    apiVersion: kuadrant.io/v1beta2
    -kind: RateLimitPolicy
    -metadata:
    -  name: my-rate-limit-policy
    -spec:
    -  # Reference to an existing networking resource to attach the policy to. REQUIRED.
    -  # It can be a Gateway API HTTPRoute or Gateway resource.
    -  # It can only refer to objects in the same namespace as the RateLimitPolicy.
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute / Gateway
    -    name: myroute / mygateway
    -
    -  # The limits definitions to apply to the network traffic routed through the targeted resource.
    -  # Equivalent to if otherwise declared within `defaults`.
    -  limits:
    -    "my_limit":
    -      # The rate limits associated with this limit definition. REQUIRED.
    -      # E.g., to specify a 50rps rate limit, add `{ limit: 50, duration: 1, unit: secod }`
    -      rates: []
    -
    -      # Counter qualifiers.
    -      # Each dynamic value in the data plane starts a separate counter, combined with each rate limit.
    -      # E.g., to define a separate rate limit for each user name detected by the auth layer, add `metadata.filter_metadata.envoy\.filters\.http\.ext_authz.username`.
    -      # Check out Kuadrant RFC 0002 (https://github.com/Kuadrant/architecture/blob/main/rfcs/0002-well-known-attributes.md) to learn more about the Well-known Attributes that can be used in this field.
    -      counters: []
    -
    -      # Further qualification of the scpecific HTTPRouteRules within the targeted HTTPRoute that should trigger the limit.
    -      # Each element contains a HTTPRouteMatch object that will be used to select HTTPRouteRules that include at least one identical HTTPRouteMatch.
    -      # The HTTPRouteMatch part does not have to be fully identical, but the what's stated in the selector must be identically stated in the HTTPRouteRule.
    -      # Do not use it on RateLimitPolicies that target a Gateway.
    -      routeSelectors: []
    -
    -      # Additional dynamic conditions to trigger the limit.
    -      # Use it for filtering attributes not supported by HTTPRouteRule or with RateLimitPolicies that target a Gateway.
    -      # Check out Kuadrant RFC 0002 (https://github.com/Kuadrant/architecture/blob/main/rfcs/0002-well-known-attributes.md) to learn more about the Well-known Attributes that can be used in this field.
    -      when: []
    -
    -    # Explicit defaults. Used in policies that target a Gateway object to express default rules to be enforced on
    -    # routes that lack a more specific policy attached to.
    -    # Mutually exclusive with `overrides` and with declaring `limits` at the top-level of the spec.
    -    defaults:
    -      limits: {}
    -
    -    # Overrides. Used in policies that target a Gateway object to be enforced on all routes linked to the gateway,
    -    # thus also overriding any more specific policy occasionally attached to any of those routes.
    -    # Mutually exclusive with `defaults` and with declaring `limits` at the top-level of the spec.
    -    overrides:
    -      limits: {}
    -
    -

    Using the RateLimitPolicy

    -

    Targeting a HTTPRoute networking resource

    -

    When a RateLimitPolicy targets a HTTPRoute, the policy is enforced to all traffic routed according to the rules and hostnames specified in the HTTPRoute, across all Gateways referenced in the spec.parentRefs field of the HTTPRoute.

    -

    The targeted HTTPRoute's rules and/or hostnames to which the policy must be enforced can be filtered to specific subsets, by specifying the routeSelectors field of the limit definition.

    -

    Target a HTTPRoute by setting the spec.targetRef field of the RateLimitPolicy as follows:

    -
    apiVersion: kuadrant.io/v1beta2
    -kind: RateLimitPolicy
    -metadata:
    -  name: <RateLimitPolicy name>
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: <HTTPRoute Name>
    -  limits: {}
    -
    -

    Rate limit policy targeting a HTTPRoute resource

    -

    Hostnames and wildcards

    -

    If a RateLimitPolicy targets a route defined for *.com and another RateLimitPolicy targets another route for api.com, the Kuadrant control plane will not merge these two RateLimitPolicies. Unless one of the policies declare an overrides set of limites, the control plane will configure to mimic the behavior of gateway implementation by which the "most specific hostname wins", thus enforcing only the corresponding applicable policies and limit definitions.

    -

    E.g., by default, a request coming for api.com will be rate limited according to the rules from the RateLimitPolicy that targets the route for api.com; while a request for other.com will be rate limited with the rules from the RateLimitPolicy targeting the route for *.com.

    -

    See more examples in Overlapping Gateway and HTTPRoute RateLimitPolicies.

    -

    Targeting a Gateway networking resource

    -

    A RateLimitPolicy that targets a Gateway can declare a block of defaults (spec.defaults) or a block of overrides (spec.overrides). As a standard, gateway policies that do not specify neither defaults nor overrides, act as defaults.

    -

    When declaring defaults, a RateLimitPolicy which targets a Gateway will be enforced to all HTTP traffic hitting the gateway, unless a more specific RateLimitPolicy targeting a matching HTTPRoute exists. Any new HTTPRoute referrencing the gateway as parent will be automatically covered by the default RateLimitPolicy, as well as changes in the existing HTTPRoutes.

    -

    Defaults provide cluster operators with the ability to protect the infrastructure against unplanned and malicious network traffic attempt, such as by setting safe default limits on hostnames and hostname wildcards.

    -

    Inversely, a gateway policy that specify overrides declares a set of rules to be enforced on all routes attached to the gateway, thus atomically replacing any more specific policy occasionally attached to any of those routes.

    -

    Target a Gateway HTTPRoute by setting the spec.targetRef field of the RateLimitPolicy as follows:

    -
    apiVersion: kuadrant.io/v1beta2
    -kind: RateLimitPolicy
    -metadata:
    -  name: <RateLimitPolicy name>
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -    name: <Gateway Name>
    -  defaults: # alternatively: `overrides`
    -    limits: {}
    -
    -

    rate limit policy targeting a Gateway resource

    -

    Overlapping Gateway and HTTPRoute RateLimitPolicies

    -

    Two possible semantics are to be considered here – gateway policy defaults vs gateway policy overrides.

    -

    Gateway RateLimitPolicies that declare defaults (or alternatively neither defaults nor overrides) protect all traffic routed through the gateway except where a more specific HTTPRoute RateLimitPolicy exists, in which case the HTTPRoute RateLimitPolicy prevails.

    -

    Example with 4 RateLimitPolicies, 3 HTTPRoutes and 1 Gateway default (plus 2 HTTPRoute and 2 Gateways without RateLimitPolicies attached):

    -
      -
    • RateLimitPolicy A → HTTPRoute A (a.toystore.com) → Gateway G (*.com)
    • -
    • RateLimitPolicy B → HTTPRoute B (b.toystore.com) → Gateway G (*.com)
    • -
    • RateLimitPolicy W → HTTPRoute W (*.toystore.com) → Gateway G (*.com)
    • -
    • RateLimitPolicy G (defaults) → Gateway G (*.com)
    • -
    -

    Expected behavior:

    -
      -
    • Request to a.toystore.com → RateLimitPolicy A will be enforced
    • -
    • Request to b.toystore.com → RateLimitPolicy B will be enforced
    • -
    • Request to other.toystore.com → RateLimitPolicy W will be enforced
    • -
    • Request to other.com (suppose a route exists) → RateLimitPolicy G will be enforced
    • -
    • Request to yet-another.net (suppose a route and gateway exist) → No RateLimitPolicy will be enforced
    • -
    -

    Gateway RateLimitPolicies that declare overrides protect all traffic routed through the gateway, regardless of existence of any more specific HTTPRoute RateLimitPolicy.

    -

    Example with 4 RateLimitPolicies, 3 HTTPRoutes and 1 Gateway override (plus 2 HTTPRoute and 2 Gateways without RateLimitPolicies attached):

    -
      -
    • RateLimitPolicy A → HTTPRoute A (a.toystore.com) → Gateway G (*.com)
    • -
    • RateLimitPolicy B → HTTPRoute B (b.toystore.com) → Gateway G (*.com)
    • -
    • RateLimitPolicy W → HTTPRoute W (*.toystore.com) → Gateway G (*.com)
    • -
    • RateLimitPolicy G (overrides) → Gateway G (*.com)
    • -
    -

    Expected behavior:

    -
      -
    • Request to a.toystore.com → RateLimitPolicy G will be enforced
    • -
    • Request to b.toystore.com → RateLimitPolicy G will be enforced
    • -
    • Request to other.toystore.com → RateLimitPolicy G will be enforced
    • -
    • Request to other.com (suppose a route exists) → RateLimitPolicy G will be enforced
    • -
    • Request to yet-another.net (suppose a route and gateway exist) → No RateLimitPolicy will be enforced
    • -
    -

    Limit definition

    -

    A limit will be activated whenever a request comes in and the request matches:

    -
      -
    • any of the route rules selected by the limit (via routeSelectors or implicit "catch-all" selector), and
    • -
    • all of the when conditions specified in the limit.
    • -
    -

    A limit can define:

    -
      -
    • counters that are qualified based on dynamic values fetched from the request, or
    • -
    • global counters (implicitly, when no qualified counter is specified)
    • -
    -

    A limit is composed of one or more rate limits.

    -

    E.g.

    -
    spec:
    -  limits:
    -    "toystore-all":
    -      rates:
    -
    -      - limit: 5000
    -        duration: 1
    -        unit: second
    -
    -    "toystore-api-per-username":
    -      rates:
    -
    -      - limit: 100
    -        duration: 1
    -        unit: second
    -      - limit: 1000
    -        duration: 1
    -        unit: minute
    -      counters:
    -      - auth.identity.username
    -      routeSelectors:
    -        hostnames:
    -        - api.toystore.com
    -
    -    "toystore-admin-unverified-users":
    -      rates:
    -
    -      - limit: 250
    -        duration: 1
    -        unit: second
    -      routeSelectors:
    -        hostnames:
    -        - admin.toystore.com
    -      when:
    -      - selector: auth.identity.email_verified
    -        operator: eq
    -        value: "false"
    -
    - - - - - - - - - - - - - - - - - - - - - -
    Request toRate limits enforced
    api.toystore.com100rps/username or 1000rpm/username (whatever happens first)
    admin.toystore.com250rps
    other.toystore.com5000rps
    -

    Route selectors

    -

    Route selectors allow targeting sections of a HTTPRoute, by specifying sets of HTTPRouteMatches and/or hostnames that make the policy controller look up within the HTTPRoute spec for compatible declarations, and select the corresponding HTTPRouteRules and hostnames, to then build conditions that activate the policy or policy rule.

    -

    Check out Route selectors for a full description, semantics and API reference.

    -

    when conditions

    -

    when conditions can be used to scope a limit (i.e. to filter the traffic to which a limit definition applies) without any coupling to the underlying network topology, i.e. without making direct references to HTTPRouteRules via routeSelectors.

    -

    Use when conditions to conditionally activate limits based on attributes that cannot be expressed in the HTTPRoutes' spec.hostnames and spec.rules.matches fields, or in general in RateLimitPolicies that target a Gateway.

    -

    The selectors within the when conditions of a RateLimitPolicy are a subset of Kuadrant's Well-known Attributes (RFC 0002). Check out the reference for the full list of supported selectors.

    -

    Examples

    -

    Check out the following user guides for examples of rate limiting services with Kuadrant:

    - -

    Known limitations

    -
      -
    • One HTTPRoute can only be targeted by one RateLimitPolicy.
    • -
    • One Gateway can only be targeted by one RateLimitPolicy.
    • -
    • RateLimitPolicies can only target HTTPRoutes/Gateways defined within the same namespace of the RateLimitPolicy.
    • -
    • 2+ RateLimitPolicies cannot target network resources that define/inherit the same exact hostname.
    • -
    -

    Limitation: Multiple network resources with identical hostnames

    -

    Kuadrant currently does not support multiple RateLimitPolicies simultaneously targeting network resources that declare identical hostnames. This includes multiple HTTPRoutes that specify the same hostnames in the spec.hostnames field, as well as HTTPRoutes that specify a hostname that is identical to a hostname specified in a listener of one of the route's parent gateways or HTTPRoutes that don't specify any hostname at all thus inheriting the hostnames from the parent gateways. In any of these cases, a maximum of one RateLimitPolicy targeting any of those resources that specify identical hostnames is allowed.

    -

    Moreover, having multiple resources that declare identical hostnames may lead to unexpected behavior and therefore should be avoided.

    -

    This limitation is rooted at the underlying components configured by Kuadrant for the implementation of its policies and the lack of information in the data plane regarding the exact route that honored by the API gateway in cases of conflicting hostnames.

    -

    To exemplify one way this limitation can impact deployments, consider the following topology:

    -
                     ┌──────────────┐
    -                 │   Gateway    │
    -                 ├──────────────┤
    -          ┌─────►│ listeners:   │◄──────┐
    -          │      │ - host: *.io │       │
    -          │      └──────────────┘       │
    -          │                             │
    -          │                             │
    -┌─────────┴─────────┐        ┌──────────┴────────┐
    -│     HTTPRoute     │        │     HTTPRoute     │
    -│     (route-a)     │        │     (route-b)     │
    -├───────────────────┤        ├───────────────────┤
    -│ hostnames:        │        │ hostnames:        │
    -│ - app.io          │        │ - app.io          │
    -│ rules:            │        │ rules:            │
    -│ - matches:        │        │ - matches:        │
    -│   - path:         │        │   - path:         │
    -│       value: /foo │        │       value: /bar │
    -└───────────────────┘        └───────────────────┘
    -          ▲                            ▲
    -          │                            │
    - ┌────────┴────────┐           ┌───────┴─────────┐
    - │ RateLimitPolicy │           │ RateLimitPolicy │
    - │   (policy-1)    │           │   (policy-2)    │
    - └─────────────────┘           └─────────────────┘
    -
    -

    In the example above, with the policy-1 resource created before policy-2, policy-2 will be enforced on all requests to app.io/bar while policy-1 will not be enforced at all. I.e. app.io/foo will not be rate-limited. Nevertheless, both policies will report status condition as Enforced.

    -

    Notice the enforcement of policy-2 and no enforcement of policy-1 is the opposite behavior as the analogous problem with the Kuadrant AuthPolicy.

    -

    A different way the limitation applies is when two or more routes of a gateway declare the exact same hostname and a gateway policy is defined with expectation to set default rules for the cases not covered by more specific policies. E.g.:

    -
                                        ┌─────────────────┐
    -                         ┌──────────┤ RateLimitPolicy │
    -                         │          │    (policy-2)   │
    -                         ▼          └─────────────────┘
    -                 ┌──────────────┐
    -                 │   Gateway    │
    -                 ├──────────────┤
    -          ┌─────►│ listeners:   │◄──────┐
    -          │      │ - host: *.io │       │
    -          │      └──────────────┘       │
    -          │                             │
    -          │                             │
    -┌─────────┴─────────┐        ┌──────────┴────────┐
    -│     HTTPRoute     │        │     HTTPRoute     │
    -│     (route-a)     │        │     (route-b)     │
    -├───────────────────┤        ├───────────────────┤
    -│ hostnames:        │        │ hostnames:        │
    -│ - app.io          │        │ - app.io          │
    -│ rules:            │        │ rules:            │
    -│ - matches:        │        │ - matches:        │
    -│   - path:         │        │   - path:         │
    -│       value: /foo │        │       value: /bar │
    -└───────────────────┘        └───────────────────┘
    -          ▲
    -          │
    - ┌────────┴────────┐
    - │ RateLimitPolicy │
    - │   (policy-1)    │
    - └─────────────────┘
    -
    -

    Once again, both policies will report status condition as Enforced. However, in this case, only policy-1 will be enforced on requests to app.io/foo, while policy-2 will not be enforced at all. I.e. app.io/bar will not be not rate-limited. This is same behavior as the analogous problem with the Kuadrant AuthPolicy.

    -

    To avoid these problems, use different hostnames in each route.

    -

    Implementation details

    -

    Driven by limitations related to how Istio injects configuration in the filter chains of the ingress gateways, Kuadrant relies on Envoy's Wasm Network filter in the data plane, to manage the integration with rate limiting service ("Limitador"), instead of the Rate Limit filter.

    -

    Motivation: Multiple rate limit domains
    -The first limitation comes from having only one filter chain per listener. This often leads to one single global rate limiting filter configuration per gateway, and therefore to a shared rate limit domain across applications and policies. Even though, in a rate limit filter, the triggering of rate limit calls, via actions to build so-called "descriptors", can be defined at the level of the virtual host and/or specific route rule, the overall rate limit configuration is only one, i.e., always the same rate limit domain for all calls to Limitador.

    -

    On the other hand, the possibility to configure and invoke the rate limit service for multiple domains depending on the context allows to isolate groups of policy rules, as well as to optimize performance in the rate limit service, which can rely on the domain for indexation.

    -

    Motivation: Fine-grained matching rules
    -A second limitation of configuring the rate limit filter via Istio, particularly from Gateway API resources, is that rate limit descriptors at the level of a specific HTTP route rule require "named routes" – defined only in an Istio VirtualService resource and referred in an EnvoyFilter one. Because Gateway API HTTPRoute rules lack a "name" property1, as well as the Istio VirtualService resources are only ephemeral data structures handled by Istio in-memory in its implementation of gateway configuration for Gateway API, where the names of individual route rules are auto-generated and not referable by users in a policy23, rate limiting by attributes of the HTTP request (e.g., path, method, headers, etc) would be very limited while depending only on Envoy's Rate Limit filter.

    -

    Motivated by the desire to support multiple rate limit domains per ingress gateway, as well as fine-grained HTTP route matching rules for rate limiting, Kuadrant implements a wasm-shim that handles the rules to invoke the rate limiting service, complying with Envoy's Rate Limit Service (RLS) protocol.

    -

    The wasm module integrates with the gateway in the data plane via Wasm Network filter, and parses a configuration composed out of user-defined RateLimitPolicy resources by the Kuadrant control plane. Whereas the rate limiting service ("Limitador") remains an implementation of Envoy's RLS protocol, capable of being integrated directly via Rate Limit extension or by Kuadrant, via wasm module for the Istio Gateway API implementation.

    -

    As a consequence of this design:

    -
      -
    • Users can define fine-grained rate limit rules that match their Gateway and HTTPRoute definitions including for subsections of these.
    • -
    • Rate limit definitions are insulated, not leaking across unrelated policies or applications.
    • -
    • Conditions to activate limits are evaluated in the context of the gateway process, reducing the gRPC calls to the external rate limiting service only to the cases where rate limit counters are known in advance to have to be checked/incremented.
    • -
    • The rate limiting service can rely on the indexation to look up for groups of limit definitions and counters.
    • -
    • Components remain compliant with industry protocols and flexible for different integration options.
    • -
    -

    A Kuadrant wasm-shim configuration for 2 RateLimitPolicy custom resources (a Gateway default RateLimitPolicy and a HTTPRoute RateLimitPolicy) looks like the following and it is generated automatically by the Kuadrant control plane:

    -
    apiVersion: extensions.istio.io/v1alpha1
    -kind: WasmPlugin
    -metadata:
    -  name: kuadrant-istio-ingressgateway
    -  namespace: istio-system
    -  
    -spec:
    -  phase: STATS
    -  pluginConfig:
    -    failureMode: deny
    -    rateLimitPolicies:
    -
    -    - domain: istio-system/gw-rlp # allows isolating policy rules and improve performance of the rate limit service
    -      hostnames:
    -      - '*.website'
    -      - '*.io'
    -      name: istio-system/gw-rlp
    -      rules: # match rules from the gateway and according to conditions specified in the policy
    -      - conditions:
    -        - allOf:
    -          - operator: startswith
    -            selector: request.url_path
    -            value: /
    -        data:
    -        - static: # tells which rate limit definitions and counters to activate
    -            key: limit.internet_traffic_all__593de456
    -            value: "1"
    -      - conditions:
    -        - allOf:
    -          - operator: startswith
    -            selector: request.url_path
    -            value: /
    -          - operator: endswith
    -            selector: request.host
    -            value: .io
    -        data:
    -        - static:
    -            key: limit.internet_traffic_apis_per_host__a2b149d2
    -            value: "1"
    -        - selector:
    -            selector: request.host
    -      service: kuadrant-rate-limiting-service
    -    - domain: default/app-rlp
    -      hostnames:
    -      - '*.toystore.website'
    -      - '*.toystore.io'
    -      name: default/app-rlp
    -      rules: # matches rules from a httproute and additional specified in the policy
    -      - conditions:
    -        - allOf:
    -          - operator: startswith
    -            selector: request.url_path
    -            value: /assets/
    -        data:
    -        - static:
    -            key: limit.toystore_assets_all_domains__8cfb7371
    -            value: "1"
    -      - conditions:
    -        - allOf:
    -          - operator: startswith
    -            selector: request.url_path
    -            value: /v1/
    -          - operator: eq
    -            selector: request.method
    -            value: GET
    -          - operator: endswith
    -            selector: request.host
    -            value: .toystore.website
    -          - operator: eq
    -            selector: auth.identity.username
    -            value: ""
    -        - allOf:
    -          - operator: startswith
    -            selector: request.url_path
    -            value: /v1/
    -          - operator: eq
    -            selector: request.method
    -            value: POST
    -          - operator: endswith
    -            selector: request.host
    -            value: .toystore.website
    -          - operator: eq
    -            selector: auth.identity.username
    -            value: ""
    -        data:
    -        - static:
    -            key: limit.toystore_v1_website_unauthenticated__3f9c40c6
    -            value: "1"
    -      service: kuadrant-rate-limiting-service
    -  selector:
    -    matchLabels:
    -      istio.io/gateway-name: istio-ingressgateway
    -  url: oci://quay.io/kuadrant/wasm-shim:v0.3.0
    -
    -
    -
    -
      -
    1. -

      https://github.com/kubernetes-sigs/gateway-api/pull/996 

      -
    2. -
    3. -

      https://github.com/istio/istio/issues/36790 

      -
    4. -
    5. -

      https://github.com/istio/istio/issues/37346 

      -
    6. -
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/reference/authpolicy/index.html b/0.10.0/kuadrant-operator/doc/reference/authpolicy/index.html deleted file mode 100644 index 252f7646c..000000000 --- a/0.10.0/kuadrant-operator/doc/reference/authpolicy/index.html +++ /dev/null @@ -1,4343 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Reference - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    The AuthPolicy Custom Resource Definition (CRD)

    - -

    AuthPolicy

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    specAuthPolicySpecYesThe specification for AuthPolicy custom resource
    statusAuthPolicyStatusNoThe status for the custom resource
    -

    AuthPolicySpec

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    targetRefLocalPolicyTargetReferenceYesReference to a Kubernetes resource that the policy attaches to
    rulesAuthSchemeNoImplicit default authentication/authorization rules
    routeSelectors[]RouteSelectorNoList of implicit default selectors of HTTPRouteRules whose matching rules activate the policy. At least one HTTPRouteRule must be selected to activate the policy. If omitted, all HTTPRouteRules of the targeted HTTPRoute activate the policy. Do not use it in policies targeting a Gateway.
    patternsMapNamedPattern>NoImplicit default named patterns of lists of selector, operator and value tuples, to be reused in when conditions and pattern-matching authorization rules.
    when[]PatternExpressionOrRefNoList of implicit default additional dynamic conditions (expressions) to activate the policy. Use it for filtering attributes that cannot be expressed in the targeted HTTPRoute's spec.hostnames and spec.rules.matches fields, or when targeting a Gateway.
    defaultsAuthPolicyCommonSpecNoExplicit default definitions. This field is mutually exclusive with any of the implicit default definitions: spec.rules, spec.routeSelectors, spec.patterns, spec.when
    overridesAuthPolicyCommonSpecNoAtomic overrides definitions. This field is mutually exclusive with any of the implicit or explicit default definitions: spec.rules, spec.routeSelectors, spec.patterns, spec.when, spec.default
    -

    AuthPolicyCommonSpec

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    rulesAuthSchemeNoAuthentication/authorization rules
    routeSelectors[]RouteSelectorNoList of selectors of HTTPRouteRules whose matching rules activate the policy. At least one HTTPRouteRule must be selected to activate the policy. If omitted, all HTTPRouteRules of the targeted HTTPRoute activate the policy. Do not use it in policies targeting a Gateway.
    patternsMapNamedPattern>NoNamed patterns of lists of selector, operator and value tuples, to be reused in when conditions and pattern-matching authorization rules.
    when[]PatternExpressionOrRefNoList of additional dynamic conditions (expressions) to activate the policy. Use it for filtering attributes that cannot be expressed in the targeted HTTPRoute's spec.hostnames and spec.rules.matches fields, or when targeting a Gateway.
    -

    AuthScheme

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    authenticationMapAuthenticationRule>NoAuthentication rules. At least one config MUST evaluate to a valid identity object for the auth request to be successful. If omitted or empty, anonymous access is assumed.
    metadataMapMetadataRule>NoRules for fetching auth metadata from external sources.
    authorizationMapAuthorizationRule>NoAuthorization rules. All policies MUST allow access for the auth request be successful.
    responseResponseSpecNoCustomizations to the response to the authorization request. Use it to set custom values for unauthenticated, unauthorized, and/or success access request.
    callbacksMapCallbackRule>NoRules for post-authorization callback requests to external services. Triggered regardless of the result of the authorization request.
    -

    AuthRuleCommon

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    routeSelectors[]RouteSelectorNoList of selectors of HTTPRouteRules whose matching rules activate the auth rule. At least one HTTPRouteRule must be selected to activate the auth rule. If omitted, the auth rule is activated at all requests where the policy is enforced. Do not use it in policies targeting a Gateway.
    when[]PatternExpressionOrRefNoList of additional dynamic conditions (expressions) to activate the auth rule. Use it for filtering attributes that cannot be expressed in the targeted HTTPRoute's spec.hostnames and spec.rules.matches fields, or when targeting a Gateway.
    cacheCaching specNoCaching options for the resolved object returned when applying this auth rule. (Default: disabled)
    priorityIntegerNoPriority group of the auth rule. All rules in the same priority group are evaluated concurrently; consecutive priority groups are evaluated sequentially. (Default: 0)
    metricsBooleanNoWhether the auth rule emits individual observability metrics. (Default: false)
    -

    AuthenticationRule

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    apiKeyAPI Key authentication specNoAuthentication based on API keys stored in Kubernetes secrets. Use one of: apiKey, jwt, oauth2Introspection, kubernetesTokenReview, x509, plain, anonymous.
    kubernetesTokenReviewKubernetesTokenReview specNoAuthentication by Kubernetes token review. Use one of: apiKey, jwt, oauth2Introspection, kubernetesTokenReview, x509, plain, anonymous.
    jwtJWT verification specNoAuthentication based on JSON Web Tokens (JWT). Use one of: apiKey, jwt, oauth2Introspection, kubernetesTokenReview, x509, plain, anonymous.
    oauth2IntrospectionOAuth2 Token Introscpection specNoAuthentication by OAuth2 token introspection. Use one of: apiKey, jwt, oauth2Introspection, kubernetesTokenReview, x509, plain, anonymous.
    x509X.509 authentication specNoAuthentication based on client X.509 certificates. The certificates presented by the clients must be signed by a trusted CA whose certificates are stored in Kubernetes secrets. Use one of: apiKey, jwt, oauth2Introspection, kubernetesTokenReview, x509, plain, anonymous.
    plainPlain identity object specNoIdentity object extracted from the context. Use this method when authentication is performed beforehand by a proxy and the resulting object passed to Authorino as JSON in the auth request. Use one of: apiKey, jwt, oauth2Introspection, kubernetesTokenReview, x509, plain, anonymous.
    anonymousAnonymous accessNoAnonymous access. Use one of: apiKey, jwt, oauth2Introspection, kubernetesTokenReview, x509, plain, anonymous.
    credentialsAuth credentials specNoCustomizations to where credentials are required to be passed in the request for authentication based on this auth rule. Defaults to HTTP Authorization header with prefix "Bearer".
    overridesIdentity extension specNoJSON overrides to set to the resolved identity object. Do not use it with identity objects of other JSON types (array, string, etc).
    defaultsIdentity extension specNoJSON defaults to set to the resolved identity object. Do not use it with identity objects of other JSON types (array, string, etc).
    (inline)AuthRuleCommonNo
    -

    MetadataRule

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    httpHTTP GET/GET-by-POST external metadata specNoExternal source of auth metadata via HTTP request. Use one of: http, userInfo, uma.
    userInfoOIDC UserInfo specNoOpendID Connect UserInfo linked to an OIDC authentication rule declared in this same AuthPolicy. Use one of: http, userInfo, uma.
    umaUMA metadata specNoUser-Managed Access (UMA) source of resource data. Use one of: http, userInfo, uma.
    (inline)AuthRuleCommonNo
    -

    AuthorizationRule

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    patternMatchingPattern-matching authorization specNoPattern-matching authorization rules. Use one of: patternMatching, opa, kubernetesSubjectAccessReview, spicedb.
    opaOPA authorization specNoOpen Policy Agent (OPA) Rego policy. Use one of: patternMatching, opa, kubernetesSubjectAccessReview, spicedb.
    kubernetesSubjectAccessReviewKubernetes SubjectAccessReview specNoAuthorization by Kubernetes SubjectAccessReview. Use one of: patternMatching, opa, kubernetesSubjectAccessReview, spicedb.
    spicedbSpiceDB authorization specNoAuthorization decision delegated to external Authzed/SpiceDB server. Use one of: patternMatching, opa, kubernetesSubjectAccessReview, spicedb.
    (inline)AuthRuleCommonNo
    -

    ResponseSpec

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    unauthenticatedCustom denial status specNoCustomizations on the denial status and other HTTP attributes when the request is unauthenticated. (Default: 401 Unauthorized)
    unauthorizedCustom denial status specNoCustomizations on the denial status and other HTTP attributes when the request is unauthorized. (Default: 403 Forbidden)
    successSuccessResponseSpecNoResponse items to be included in the auth response when the request is authenticated and authorized.
    -
    SuccessResponseSpec
    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    headersMapSuccessResponseItem>NoCustom success response items wrapped as HTTP headers to be injected in the request.
    dynamicMetadataMapSuccessResponseItem>NoCustom success response items wrapped as Envoy Dynamic Metadata. Use it to pass data along to other proxy filters, such as the rate-limit filter.
    -
    SuccessResponseItem
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    plainPlain text response itemNoPlain text content. Use one of: plain, json, wristband.
    jsonJSON injection response itemNoSpecification of a JSON object. Use one of: plain, json, wristband.
    wristbandFestival Wristband token response itemNoSpecification of a JSON object. Use one of: plain, json, wristband.
    keyStringNoThe key used to add the custom response item (name of the HTTP header or root property of the Dynamic Metadata object). Defaults to the name of the response item if omitted.
    -

    CallbackRule

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    httpHTTP endpoints callback specNoHTTP endpoint settings to build the callback request (webhook).
    (inline)AuthRuleCommonNo
    -

    NamedPattern

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    selectorStringYesA valid Well-known attribute whose resolved value in the data plane will be compared to value, using the operator.
    operatorStringYesThe binary operator to be applied to the resolved value specified by the selector. One of: eq (equal to), neq (not equal to), incl (includes; for arrays), excl (excludes; for arrays), matches (regex).
    valueStringYesThe static value to be compared to the one resolved from the selector.
    -

    AuthPolicyStatus

    - - - - - - - - - - - - - - - - - - - - -
    FieldTypeDescription
    observedGenerationStringNumber of the last observed generation of the resource. Use it to check if the status info is up to date with latest resource spec.
    conditions[]ConditionSpecList of conditions that define that status of the resource.
    -

    ConditionSpec

    -
      -
    • The lastTransitionTime field provides a timestamp for when the entity last transitioned from one status to another.
    • -
    • The message field is a human-readable message indicating details about the transition.
    • -
    • The reason field is a unique, one-word, CamelCase reason for the condition’s last transition.
    • -
    • The status field is a string, with possible values True, False, and Unknown.
    • -
    • The type field is a string with the following possible values:
    • -
    • Available: the resource has successfully configured;
    • -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeDescription
    typeStringCondition Type
    statusStringStatus: True, False, Unknown
    reasonStringCondition state reason
    messageStringCondition state description
    lastTransitionTimeTimestampLast transition timestamp
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/reference/dnspolicy/index.html b/0.10.0/kuadrant-operator/doc/reference/dnspolicy/index.html deleted file mode 100644 index 944efdfeb..000000000 --- a/0.10.0/kuadrant-operator/doc/reference/dnspolicy/index.html +++ /dev/null @@ -1,3913 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Reference - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    The DNSPolicy Custom Resource Definition (CRD)

    - -

    DNSPolicy

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    specDNSPolicySpecYesThe specification for DNSPolicy custom resource
    statusDNSPolicyStatusNoThe status for the custom resource
    -

    DNSPolicySpec

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    targetRefGateway API LocalPolicyTargetReferenceYesReference to a Kubernetes resource that the policy attaches to
    healthCheckHealthCheckSpecNoHealthCheck spec
    loadBalancingLoadBalancingSpecYes(loadbalanced only)LoadBalancing Spec, required when routingStrategy is "loadbalanced"
    routingStrategyString (immutable)YesImmutable! Routing Strategy to use, one of "simple" or "loadbalanced"
    providerRefsProviderRefsYesarray of references to providers. (currently limited to max 1)
    -

    ProviderRefs

    - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    providerRefs[]ProviderRefYesmax 1 reference. This is an array of providerRef that points to a local secret(s) that contains the required provider auth values
    -

    ProviderRef

    - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    nameStringYesName of the secret in the same namespace that contains the provider credentials
    -

    HealthCheckSpec

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    endpointStringYesEndpoint is the path to append to the host to reach the expected health check
    portNumberYesPort to connect to the host on
    protocolStringYesProtocol to use when connecting to the host, valid values are "HTTP" or "HTTPS"
    failureThresholdNumberYesFailureThreshold is a limit of consecutive failures that must occur for a host to be considered unhealthy
    -

    LoadBalancingSpec

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    weightedLoadBalancingWeightedYesWeighted routing spec
    geoLoadBalancingGeoYesGeo routing spec
    -

    LoadBalancingWeighted

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    defaultWeightNumberYesDefault weight to apply to created records
    custom[]CustomWeightNoCustom weights to manipulate records weights based on label selectors
    -

    CustomWeight

    - - - - - - - - - - - - - - - - - - - - -
    FieldTypeDescription
    selectormetav1.LabelSelectorLabel Selector to specify resources that should have this weight applied
    weightNumberWeight value to apply for matching resources
    -

    LoadBalancingGeo

    - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    defaultGeoStringYesDefault geo to apply to records
    -

    DNSPolicyStatus

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeDescription
    observedGenerationStringNumber of the last observed generation of the resource. Use it to check if the status info is up to date with latest resource spec.
    conditions[]Kubernetes meta/v1.ConditionList of conditions that define that status of the resource.
    healthCheckHealthCheckStatusHealthCheck status.
    recordConditions[String][]Kubernetes meta/v1.ConditionStatus of individual DNSRecords owned by this policy.
    -

    HealthCheckStatus

    - - - - - - - - - - - - - - - -
    FieldTypeDescription
    conditions[]Kubernetes meta/v1.ConditionList of conditions that define that status of the resource.
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/reference/kuadrant/index.html b/0.10.0/kuadrant-operator/doc/reference/kuadrant/index.html deleted file mode 100644 index 15433db44..000000000 --- a/0.10.0/kuadrant-operator/doc/reference/kuadrant/index.html +++ /dev/null @@ -1,3442 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - The Kuadrant Custom Resource Definition (CRD) - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    The Kuadrant Custom Resource Definition (CRD)

    -

    kuadrant

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    specKuadrantSpecNoBlank specification
    statusKuadrantStatusNoThe status for the custom resources.
    -

    KuadrantSpec

    -

    Currently blank specification.

    -

    KuadrantStatus

    - - - - - - - - - - - - - - - - - - - - -
    FieldTypeDescription
    observedGenerationStringNumber of the last observed generation of the resource. Use it to check if the status info is up to date with latest resource spec.
    conditions[]ConditionSpecList of conditions that define that status of the resource.
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/reference/ratelimitpolicy/index.html b/0.10.0/kuadrant-operator/doc/reference/ratelimitpolicy/index.html deleted file mode 100644 index 7fc53f50c..000000000 --- a/0.10.0/kuadrant-operator/doc/reference/ratelimitpolicy/index.html +++ /dev/null @@ -1,3859 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Reference - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    The RateLimitPolicy Custom Resource Definition (CRD)

    - -

    RateLimitPolicy

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    specRateLimitPolicySpecYesThe specification for RateLimitPolicy custom resource
    statusRateLimitPolicyStatusNoThe status for the custom resource
    -

    RateLimitPolicySpec

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    targetRefLocalPolicyTargetReferenceYesReference to a Kubernetes resource that the policy attaches to
    defaultsRateLimitPolicyCommonSpecNoDefault limit definitions. This field is mutually exclusive with the limits field
    overridesRateLimitPolicyCommonSpecNoOverrides limit definitions. This field is mutually exclusive with the limits field and defaults field. This field is only allowed for policies targeting Gateway in targetRef.kind
    limitsMapLimit>NoLimit definitions. This field is mutually exclusive with the defaults field
    -

    RateLimitPolicyCommonSpec

    - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    limitsMapLimit>NoExplicit Limit definitions. This field is mutually exclusive with RateLimitPolicySpec limits field
    -

    Limit

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    rates[]RateLimitNoList of rate limits associated with the limit definition
    counters[]StringNoList of rate limit counter qualifiers. Items must be a valid Well-known attribute. Each distinct value resolved in the data plane starts a separate counter for each rate limit.
    routeSelectors[]RouteSelectorNoList of selectors of HTTPRouteRules whose matching rules activate the limit. At least one HTTPRouteRule must be selected to activate the limit. If omitted, all HTTPRouteRules of the targeted HTTPRoute activate the limit. Do not use it in policies targeting a Gateway.
    when[]WhenConditionNoList of additional dynamic conditions (expressions) to activate the limit. All expression must evaluate to true for the limit to be applied. Use it for filtering attributes that cannot be expressed in the targeted HTTPRoute's spec.hostnames and spec.rules.matches fields, or when targeting a Gateway.
    -

    RateLimit

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    limitNumberYesMaximum value allowed within the given period of time (duration)
    durationNumberYesThe period of time in the specified unit that the limit applies
    unitStringYesUnit of time for the duration of the limit. One-of: "second", "minute", "hour", "day".
    -

    WhenCondition

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    selectorStringYesA valid Well-known attribute whose resolved value in the data plane will be compared to value, using the operator.
    operatorStringYesThe binary operator to be applied to the resolved value specified by the selector. One-of: "eq" (equal to), "neq" (not equal to)
    valueStringYesThe static value to be compared to the one resolved from the selector.
    -

    RateLimitPolicyStatus

    - - - - - - - - - - - - - - - - - - - - -
    FieldTypeDescription
    observedGenerationStringNumber of the last observed generation of the resource. Use it to check if the status info is up to date with latest resource spec.
    conditions[]ConditionSpecList of conditions that define that status of the resource.
    -

    ConditionSpec

    -
      -
    • The lastTransitionTime field provides a timestamp for when the entity last transitioned from one status to another.
    • -
    • The message field is a human-readable message indicating details about the transition.
    • -
    • The reason field is a unique, one-word, CamelCase reason for the condition’s last transition.
    • -
    • The status field is a string, with possible values True, False, and Unknown.
    • -
    • The type field is a string with the following possible values:
        -
      • Available: the resource has successfully configured;
      • -
      -
    • -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeDescription
    typeStringCondition Type
    statusStringStatus: True, False, Unknown
    reasonStringCondition state reason
    messageStringCondition state description
    lastTransitionTimeTimestampLast transition timestamp
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/reference/route-selectors/index.html b/0.10.0/kuadrant-operator/doc/reference/route-selectors/index.html deleted file mode 100644 index 63ebcaa2f..000000000 --- a/0.10.0/kuadrant-operator/doc/reference/route-selectors/index.html +++ /dev/null @@ -1,3473 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Route selectors - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Route selectors

    -

    The route selectors of a policy spec or policy rule (limit definition or auth rule) allow to specify selectors of routes or parts of a route, that transitively induce a set of conditions for a policy or policy rule to be enforced. It is defined as a set of HTTP route matching rules, where these matching rules must exist, partially or identically stated within the HTTPRouteRules of the HTTPRoute that is targeted by the policy.

    -

    The routeSelectors field

    -

    The routeSelectors field can be found in policy specs and policy rules (limit definition or auth rule).

    - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    routeSelectors[]RouteSelectorNoList of route selectors of HTTPRouteRules whose HTTPRouteMatches activate the policy or policy rule.
    -

    RouteSelector

    -

    Each RouteSelector is an object composed of a set of HTTPRouteMatch objects (from Gateway API), and an additional hostnames field.

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    matches[]HTTPRouteMatchNoList of selectors of HTTPRouteRules whose matching rules activate the policy or policy rule
    hostnames[]HostnameNoList of hostnames of the HTTPRoute that activate the policy or policy rule
    -

    Mechanics of the route selectors

    -

    Route selectors matches and the HTTPRoute's HTTPRouteMatches are pairwise compared to select or not select HTTPRouteRules that should activate a policy rule. To decide whether the route selector selects a HTTPRouteRule or not, for each pair of route selector HTTPRouteMatch and HTTPRoute HTTPRouteMatch:

    -
      -
    1. The route selector selects the HTTPRoute's HTTPRouteRule if the HTTPRouteRule contains at least one HTTPRouteMatch that specifies fields that are literally identical to all the fields specified by at least one HTTPRouteMatch of the route selector.
    2. -
    3. A HTTPRouteMatch within a HTTPRouteRule may include other fields that are not specified in a route selector match, and yet the route selector match selects the HTTPRouteRule if all fields of the route selector match are identically included in the HTTPRouteRule's HTTPRouteMatch; the opposite is NOT true.
    4. -
    5. Each field path of a HTTPRouteMatch, as well as each field method of a HTTPRouteMatch, as well as each element of the fields headers and queryParams of a HTTPRouteMatch, is atomic – this is true for the HTTPRouteMatches within a HTTPRouteRule, as well as for HTTPRouteMatches of a route selector.
    6. -
    -

    Additionally, at least one hostname specified in a route selector must identically match one of the hostnames specified (or inherited, when omitted) by the targeted HTTPRoute.

    -

    The semantics of the route selectors allows to assertively relate policy rule definitions to routing rules, with benefits for identifying the subsets of the network that are covered by a policy rule, while preventing unreachable definitions, as well as the overhead associated with the maintenance of such rules across multiple resources throughout time, according to network topology beneath. Moreover, the requirement of not having to be a full copy of the targeted HTTPRouteRule matches, but only partially identical, helps prevent repetition to some degree, as well as it enables to more easily define policy rules that scope across multiple HTTPRouteRules (by specifying less rules in the selector).

    -

    Golden rules and corner cases

    -

    A few rules and corner cases to keep in mind while using the RLP's routeSelectors:

    -
      -
    1. The golden rule – The route selectors in a policy or policy rule are not to be interpreted as the route matching rules that activate the policy or policy rule, but as selectors of the route rules that activate the policy or policy rule.
    2. -
    3. Due to (1) above, this can lead to cases, e.g., where a route selector that states matches: [{ method: POST }] selects a HTTPRouteRule that defines matches: [{ method: POST }, { method: GET }], effectively causing the policy or policy rule to be activated on requests to the HTTP method POST, but also to the HTTP method GET.
    4. -
    5. The requirement for the route selector match to state patterns that are identical to the patterns stated by the HTTPRouteRule (partially or entirely) makes, e.g., a route selector such as matches: { path: { type: PathPrefix, value: /foo } } to select a HTTPRouteRule that defines matches: { path: { type: PathPrefix, value: /foo }, method: GET }, but not to select a HTTPRouteRule that only defines matches: { method: GET }, even though the latter includes technically all HTTP paths; nor it selects a HTTPRouteRule that only defines matches: { path: { type: Exact, value: /foo } }, even though all requests to the exact path /foo are also technically requests to /foo*.
    6. -
    7. The atomicity property of fields of the route selectors makes, e.g., a route selector such as matches: { path: { value: /foo } } to select a HTTPRouteRule that defines matches: { path: { value: /foo } }, but not to select a HTTPRouteRule that only defines matches: { path: { type: PathPrefix, value: /foo } }. (This case may actually never happen because PathPrefix is the default value for path.type and will be set automatically by the Kubernetes API server.)
    8. -
    -

    Due to the nature of route selectors of defining pointers to HTTPRouteRules, the routeSelectors field is not supported in a RLP that targets a Gateway resource.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/reference/tlspolicy/index.html b/0.10.0/kuadrant-operator/doc/reference/tlspolicy/index.html deleted file mode 100644 index aaec98cc7..000000000 --- a/0.10.0/kuadrant-operator/doc/reference/tlspolicy/index.html +++ /dev/null @@ -1,3582 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Reference - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    The TLSPolicy Custom Resource Definition (CRD)

    - -

    TLSPolicy

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    specTLSPolicySpecYesThe specification for TLSPolicy custom resource
    statusTLSPolicyStatusNoThe status for the custom resource
    -

    TLSPolicySpec

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeRequiredDescription
    targetRefGateway API LocalPolicyTargetReferenceYesReference to a Kuberentes resource that the policy attaches to
    issuerRefCertManager meta/v1.ObjectReferenceYesIssuerRef is a reference to the issuer for the created certificate
    commonNameStringNoCommonName is a common name to be used on the created certificate
    durationKubernetes meta/v1.DurationNoThe requested 'duration' (i.e. lifetime) of the created certificate.
    renewBeforeKubernetes meta/v1.DurationNoHow long before the currently issued certificate's expiry cert-manager should renew the certificate.
    usages[]CertManager v1.KeyUsageNoUsages is the set of x509 usages that are requested for the certificate. Defaults to digital signature and key encipherment if not specified
    revisionHistoryLimitNumberNoRevisionHistoryLimit is the maximum number of CertificateRequest revisions that are maintained in the Certificate's history
    privateKeyCertManager meta/v1.CertificatePrivateKeyNoOptions to control private keys used for the Certificate
    -

    IssuerRef certmanmetav1.ObjectReference

    -

    TLSPolicyStatus

    - - - - - - - - - - - - - - - - - - - - -
    FieldTypeDescription
    observedGenerationStringNumber of the last observed generation of the resource. Use it to check if the status info is up to date with latest resource spec.
    conditions[]Kubernetes meta/v1.ConditionList of conditions that define that status of the resource.
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/tls/index.html b/0.10.0/kuadrant-operator/doc/tls/index.html deleted file mode 100644 index 6a5efd095..000000000 --- a/0.10.0/kuadrant-operator/doc/tls/index.html +++ /dev/null @@ -1,3637 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Overview - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    - -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    TLS

    -

    A Kuadrant TLSPolicy custom resource:

    -
      -
    1. Targets Gateway API networking resources Gateways to provide tls for gateway listeners by managing the lifecycle of tls certificates using CertManager.
    2. -
    -

    How it works

    -

    The TLSPolicy custom resource

    -

    Overview

    -

    The TLSPolicy spec includes the following parts:

    -
      -
    • A reference to an existing Gateway API resource (spec.targetRef)
    • -
    -

    High-level example and field definition

    -
    apiVersion: kuadrant.io/v1alpha1
    -kind: TLSPolicy
    -metadata:
    -  name: my-tls-policy
    -spec:
    -  # reference to an existing networking resource to attach the policy to
    -  # it can only be a Gateway API Gateway resource
    -  # it can only refer to objects in the same namespace as the TLSPolicy
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -    name: mygateway
    -
    -

    Check out the API reference for a full specification of the TLSPolicy CRD.

    -

    Using the TLSPolicy

    -

    Targeting a Gateway networking resource

    -

    When a TLSPolicy targets a Gateway, the policy will be enforced on all gateway listeners that have a valid TLS section.

    -

    Target a Gateway by setting the spec.targetRef field of the TLSPolicy as follows:

    -
    apiVersion: kuadrant.io/v1beta2
    -kind: TLSPolicy
    -metadata:
    -  name: <TLSPolicy name>
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -    name: <Gateway Name>
    -
    -

    Examples

    -

    Check out the following user guides for examples of using the Kuadrant TLSPolicy:

    -

    Known limitations

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/user-guides/auth-for-app-devs-and-platform-engineers/index.html b/0.10.0/kuadrant-operator/doc/user-guides/auth-for-app-devs-and-platform-engineers/index.html deleted file mode 100644 index e3f9aaa17..000000000 --- a/0.10.0/kuadrant-operator/doc/user-guides/auth-for-app-devs-and-platform-engineers/index.html +++ /dev/null @@ -1,3803 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - AuthPolicy for Application Developers and Platform Engineers - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Enforcing authentication & authorization with Kuadrant AuthPolicy

    -

    This guide walks you through the process of setting up a local Kubernetes cluster with Kuadrant where you will protect Gateway API endpoints by declaring Kuadrant AuthPolicy custom resources.

    -

    Two AuthPolicies will be declared:

    - - - - - - - - - - - - - - - - - -
    Use caseAuthPolicy
    App developer1 AuthPolicy targeting a HTTPRoute that routes traffic to a sample Toy Store application, and enforces API key authentication to all requests in this route, as well as requires API key owners to be mapped to groups:admins metadata to access a specific HTTPRouteRule of the route.
    Platform engineer use-case1 AuthPolicy targeting the istio-ingressgateway Gateway that enforces a trivial "deny-all" policy that locks down any other HTTPRoute attached to the Gateway.
    -

    Topology:

    -
                       ┌───────────────┐
    -                   │ (AuthPolicy)  │
    -                   │    gw-auth    │
    -                   └───────┬───────┘
    -                           │
    -                           ▼
    -                ┌──────────────────────┐
    -                │     (Gateway)        │
    -                │ istio-ingressgateway │
    -          ┌────►│                      │◄───┐
    -          │     │          *           │    │
    -          │     └──────────────────────┘    │
    -          │                                 │
    - ┌────────┴─────────┐              ┌────────┴─────────┐
    - │   (HTTPRoute)    │              │   (HTTPRoute)    │
    - │    toystore      │              │      other       │
    - │                  │              │                  │
    - │ api.toystore.com │              │ *.other-apps.com │
    - └──────────────────┘              └──────────────────┘
    -          ▲
    -          │
    -  ┌───────┴───────┐
    -  │ (AuthPolicy)  │
    -  │    toystore   │
    -  └───────────────┘
    -
    -

    Requisites

    - -

    Run the guide ① → ④

    -

    ① Setup (Persona: Cluster admin)

    -

    Clone the repo:

    -
    git clone git@github.com:Kuadrant/kuadrant-operator.git && cd kuadrant-operator
    -
    -

    Run the following command to create a local Kubernetes cluster with Kind, install & deploy Kuadrant:

    -
    make local-setup
    -
    -

    Request an instance of Kuadrant in the kuadrant-system namespace:

    -
    kubectl -n kuadrant-system apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta1
    -kind: Kuadrant
    -metadata:
    -  name: kuadrant
    -spec: {}
    -EOF
    -
    -

    ② Deploy the Toy Store sample application (Persona: App developer)

    -
    kubectl apply -f examples/toystore/toystore.yaml
    -
    -kubectl apply -f - <<EOF
    -apiVersion: gateway.networking.k8s.io/v1
    -kind: HTTPRoute
    -metadata:
    -  name: toystore
    -spec:
    -  parentRefs:
    -
    -  - name: istio-ingressgateway
    -    namespace: istio-system
    -  hostnames:
    -  - api.toystore.com
    -  rules:
    -  - matches:
    -    - method: GET
    -      path:
    -        type: PathPrefix
    -        value: "/cars"
    -    - method: GET
    -      path:
    -        type: PathPrefix
    -        value: "/dolls"
    -    backendRefs:
    -    - name: toystore
    -      port: 80
    -  - matches:
    -    - path:
    -        type: PathPrefix
    -        value: "/admin"
    -    backendRefs:
    -    - name: toystore
    -      port: 80
    -EOF
    -
    -

    Export the gateway hostname and port:

    -
    export INGRESS_HOST=$(kubectl get gtw istio-ingressgateway -n istio-system -o jsonpath='{.status.addresses[0].value}')
    -export INGRESS_PORT=$(kubectl get gtw istio-ingressgateway -n istio-system -o jsonpath='{.spec.listeners[?(@.name=="http")].port}')
    -export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
    -
    -

    Send requests to the application unprotected:

    -
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/cars -i
    -# HTTP/1.1 200 OK
    -
    -
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/dolls -i
    -# HTTP/1.1 200 OK
    -
    -
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/admin -i
    -# HTTP/1.1 200 OK
    -
    -

    ③ Protect the Toy Store application (Persona: App developer)

    -

    Create the AuthPolicy to enforce the following auth rules:

    -
      -
    • Authentication:
    • -
    • All users must present a valid API key
    • -
    • Authorization:
    • -
    • /admin* routes require user mapped to the admins group (kuadrant.io/groups=admins annotation added to the Kubernetes API key Secret)
    • -
    -
    kubectl apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta2
    -kind: AuthPolicy
    -metadata:
    -  name: toystore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: toystore
    -  rules:
    -    authentication:
    -      "api-key-authn":
    -        apiKey:
    -          selector: {}
    -        credentials:
    -          authorizationHeader:
    -            prefix: APIKEY
    -    authorization:
    -      "only-admins":
    -        opa:
    -          rego: |
    -            groups := split(object.get(input.auth.identity.metadata.annotations, "kuadrant.io/groups", ""), ",")
    -            allow { groups[_] == "admins" }
    -        routeSelectors:
    -
    -        - matches:
    -          - path:
    -              type: PathPrefix
    -              value: "/admin"
    -EOF
    -
    -

    Create the API keys:

    -
    kubectl apply -f -<<EOF
    -apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: api-key-regular-user
    -  labels:
    -    authorino.kuadrant.io/managed-by: authorino
    -stringData:
    -  api_key: iamaregularuser
    -type: Opaque
    ----
    -apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: api-key-admin-user
    -  labels:
    -    authorino.kuadrant.io/managed-by: authorino
    -  annotations:
    -    kuadrant.io/groups: admins
    -stringData:
    -  api_key: iamanadmin
    -type: Opaque
    -EOF
    -
    -

    Send requests to the application protected by Kuadrant:

    -
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/cars -i
    -# HTTP/1.1 401 Unauthorized
    -
    -
    curl -H 'Host: api.toystore.com' -H 'Authorization: APIKEY iamaregularuser' http://$GATEWAY_URL/cars -i
    -# HTTP/1.1 200 OK
    -
    -
    curl -H 'Host: api.toystore.com' -H 'Authorization: APIKEY iamaregularuser' http://$GATEWAY_URL/admin -i
    -# HTTP/1.1 403 Forbidden
    -
    -
    curl -H 'Host: api.toystore.com' -H 'Authorization: APIKEY iamanadmin' http://$GATEWAY_URL/admin -i
    -# HTTP/1.1 200 OK
    -
    -

    ④ Create a default "deny-all" policy at the level of the gateway (Persona: Platform engineer)

    -

    Create the policy:

    -
    kubectl -n istio-system apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta2
    -kind: AuthPolicy
    -metadata:
    -  name: gw-auth
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -    name: istio-ingressgateway
    -  rules:
    -    authorization:
    -      deny-all:
    -        opa:
    -          rego: "allow = false"
    -    response:
    -      unauthorized:
    -        headers:
    -          "content-type":
    -            value: application/json
    -        body:
    -          value: |
    -            {
    -              "error": "Forbidden",
    -              "message": "Access denied by default by the gateway operator. If you are the administrator of the service, create a specific auth policy for the route."
    -            }
    -EOF
    -
    -

    The policy won't be effective until there is at least one accepted route not yet protected by another more specific policy attached to it.

    -

    Create a route that will inherit the default policy attached to the gateway:

    -
    kubectl apply -f -<<EOF
    -apiVersion: gateway.networking.k8s.io/v1
    -kind: HTTPRoute
    -metadata:
    -  name: other
    -spec:
    -  parentRefs:
    -
    -  - name: istio-ingressgateway
    -    namespace: istio-system
    -  hostnames:
    -  - "*.other-apps.com"
    -EOF
    -
    -

    Send requests to the route protected by the default policy set at the level of the gateway:

    -
    curl -H 'Host: foo.other-apps.com' http://$GATEWAY_URL/ -i
    -# HTTP/1.1 403 Forbidden
    -
    -

    Cleanup

    -
    make local-cleanup
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/user-guides/authenticated-rl-for-app-developers/index.html b/0.10.0/kuadrant-operator/doc/user-guides/authenticated-rl-for-app-developers/index.html deleted file mode 100644 index acc1dc7ca..000000000 --- a/0.10.0/kuadrant-operator/doc/user-guides/authenticated-rl-for-app-developers/index.html +++ /dev/null @@ -1,3749 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Authenticated Rate Limiting for Application Developers - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Authenticated Rate Limiting for Application Developers

    -

    This user guide walks you through an example of how to configure authenticated rate limiting for an application using Kuadrant.

    -

    Authenticated rate limiting rate limits the traffic directed to an application based on attributes of the client user, who is authenticated by some authentication method. A few examples of authenticated rate limiting use cases are:

    -
      -
    • User A can send up to 50rps ("requests per second"), while User B can send up to 100rps.
    • -
    • Each user can send up to 20rpm ("request per minute").
    • -
    • Admin users (members of the 'admin' group) can send up to 100rps, while regular users (non-admins) can send up to 20rpm and no more than 5rps.
    • -
    -

    In this guide, we will rate limit a sample REST API called Toy Store. In reality, this API is just an echo service that echoes back to the user whatever attributes it gets in the request. The API exposes an endpoint at GET http://api.toystore.com/toy, to mimic an operation of reading toy records.

    -

    We will define 2 users of the API, which can send requests to the API at different rates, based on their user IDs. The authentication method used is API key.

    - - - - - - - - - - - - - - - - - -
    User IDRate limit
    alice5rp10s ("5 requests every 10 seconds")
    bob2rp10s ("2 requests every 10 seconds")
    -

    Run the steps ① → ④

    -

    ① Setup

    -

    This step uses tooling from the Kuadrant Operator component to create a containerized Kubernetes server locally using Kind, -where it installs Istio, Kubernetes Gateway API and Kuadrant itself.

    -
    -

    Note: In production environment, these steps are usually performed by a cluster operator with administrator privileges over the Kubernetes cluster.

    -
    -

    Clone the project:

    -
    git clone https://github.com/Kuadrant/kuadrant-operator && cd kuadrant-operator
    -
    -

    Setup the environment:

    -
    make local-setup
    -
    -

    Request an instance of Kuadrant:

    -
    kubectl -n kuadrant-system apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta1
    -kind: Kuadrant
    -metadata:
    -  name: kuadrant
    -spec: {}
    -EOF
    -
    -

    ② Deploy the Toy Store API

    -

    Create the deployment:

    -
    kubectl apply -f examples/toystore/toystore.yaml
    -
    -

    Create a HTTPRoute to route traffic to the service via Istio Ingress Gateway:

    -

    -
    kubectl apply -f - <<EOF
    -apiVersion: gateway.networking.k8s.io/v1
    -kind: HTTPRoute
    -metadata:
    -  name: toystore
    -spec:
    -  parentRefs:
    -
    -  - name: istio-ingressgateway
    -    namespace: istio-system
    -  hostnames:
    -  - api.toystore.com
    -  rules:
    -  - matches:
    -    - path:
    -        type: Exact
    -        value: "/toy"
    -      method: GET
    -    backendRefs:
    -    - name: toystore
    -      port: 80
    -EOF
    -
    -

    Export the gateway hostname and port:

    -
    export INGRESS_HOST=$(kubectl get gtw istio-ingressgateway -n istio-system -o jsonpath='{.status.addresses[0].value}')
    -export INGRESS_PORT=$(kubectl get gtw istio-ingressgateway -n istio-system -o jsonpath='{.spec.listeners[?(@.name=="http")].port}')
    -export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
    -
    -

    Verify the route works:

    -
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i
    -# HTTP/1.1 200 OK
    -
    -
    -

    Note: If the command above fails to hit the Toy Store API on your environment, try forwarding requests to the service and accessing over localhost:

    -

    kubectl port-forward -n istio-system service/istio-ingressgateway-istio 9080:80 >/dev/null 2>&1 &
    -export GATEWAY_URL=localhost:9080
    -
    -
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i
    -# HTTP/1.1 200 OK
    -

    -
    -

    ③ Enforce authentication on requests to the Toy Store API

    -

    Create a Kuadrant AuthPolicy to configure the authentication:

    -
    kubectl apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta2
    -kind: AuthPolicy
    -metadata:
    -  name: toystore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: toystore
    -  rules:
    -    authentication:
    -      "api-key-users":
    -        apiKey:
    -          selector:
    -            matchLabels:
    -              app: toystore
    -          allNamespaces: true
    -        credentials:
    -          authorizationHeader:
    -            prefix: APIKEY
    -    response:
    -      success:
    -        dynamicMetadata:
    -          "identity":
    -            json:
    -              properties:
    -                "userid":
    -                  selector: auth.identity.metadata.annotations.secret\.kuadrant\.io/user-id
    -EOF
    -
    -

    Verify the authentication works by sending a request to the Toy Store API without API key:

    -
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i
    -# HTTP/1.1 401 Unauthorized
    -# www-authenticate: APIKEY realm="api-key-users"
    -# x-ext-auth-reason: "credential not found"
    -
    -

    Create API keys for users alice and bob to authenticate:

    -
    -

    Note: Kuadrant stores API keys as Kubernetes Secret resources. User metadata can be stored in the annotations of the resource.

    -
    -
    kubectl apply -f - <<EOF
    -apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: bob-key
    -  labels:
    -    authorino.kuadrant.io/managed-by: authorino
    -    app: toystore
    -  annotations:
    -    secret.kuadrant.io/user-id: bob
    -stringData:
    -  api_key: IAMBOB
    -type: Opaque
    ----
    -apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: alice-key
    -  labels:
    -    authorino.kuadrant.io/managed-by: authorino
    -    app: toystore
    -  annotations:
    -    secret.kuadrant.io/user-id: alice
    -stringData:
    -  api_key: IAMALICE
    -type: Opaque
    -EOF
    -
    -

    ④ Enforce authenticated rate limiting on requests to the Toy Store API

    -

    Create a Kuadrant RateLimitPolicy to configure rate limiting:

    -

    -
    kubectl apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta2
    -kind: RateLimitPolicy
    -metadata:
    -  name: toystore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: toystore
    -  limits:
    -    "alice-limit":
    -      rates:
    -
    -      - limit: 5
    -        duration: 10
    -        unit: second
    -      when:
    -      - selector: metadata.filter_metadata.envoy\.filters\.http\.ext_authz.identity.userid
    -        operator: eq
    -        value: alice
    -    "bob-limit":
    -      rates:
    -      - limit: 2
    -        duration: 10
    -        unit: second
    -      when:
    -      - selector: metadata.filter_metadata.envoy\.filters\.http\.ext_authz.identity.userid
    -        operator: eq
    -        value: bob
    -EOF
    -
    -
    -

    Note: It may take a couple of minutes for the RateLimitPolicy to be applied depending on your cluster.

    -
    -

    Verify the rate limiting works by sending requests as Alice and Bob.

    -

    Up to 5 successful (200 OK) requests every 10 seconds allowed for Alice, then 429 Too Many Requests:

    -
    while :; do curl --write-out '%{http_code}\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMALICE' -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy | grep -E --color "\b(429)\b|$"; sleep 1; done
    -
    -

    Up to 2 successful (200 OK) requests every 10 seconds allowed for Bob, then 429 Too Many Requests:

    -
    while :; do curl --write-out '%{http_code}\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMBOB' -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy | grep -E --color "\b(429)\b|$"; sleep 1; done
    -
    -

    Cleanup

    -
    make local-cleanup
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/index.html b/0.10.0/kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/index.html deleted file mode 100644 index a8cee3450..000000000 --- a/0.10.0/kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/index.html +++ /dev/null @@ -1,4054 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Authenticated Rate Limiting with JWTs and Kubernetes RBAC - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Authenticated Rate Limiting with JWTs and Kubernetes RBAC

    -

    This user guide walks you through an example of how to use Kuadrant to protect an application with policies to enforce:

    -
      -
    • authentication based OpenId Connect (OIDC) ID tokens (signed JWTs), issued by a Keycloak server;
    • -
    • alternative authentication method by Kubernetes Service Account tokens;
    • -
    • authorization delegated to Kubernetes RBAC system;
    • -
    • rate limiting by user ID.
    • -
    -

    In this example, we will protect a sample REST API called Toy Store. In reality, this API is just an echo service that echoes back to the user whatever attributes it gets in the request.

    -

    The API listens to requests at the hostnames *.toystore.com, where it exposes the endpoints GET /toy*, POST /admin/toy and DELETE /amind/toy, respectively, to mimic operations of reading, creating, and deleting toy records.

    -

    Any authenticated user/service account can send requests to the Toy Store API, by providing either a valid Keycloak-issued access token or Kubernetes token.

    -

    Privileges to execute the requested operation (read, create or delete) will be granted according to the following RBAC rules, stored in the Kubernetes authorization system:

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    OperationEndpointRequired role
    ReadGET /toy*toystore-reader
    CreatePOST /admin/toytoystore-write
    DeleteDELETE /admin/toytoystore-write
    -

    Each user will be entitled to a maximum of 5rp10s (5 requests every 10 seconds).

    -

    Requirements

    - -

    Run the guide ① → ⑥

    -

    ① Setup a cluster with Kuadrant

    -

    This step uses tooling from the Kuadrant Operator component to create a containerized Kubernetes server locally using Kind, -where it installs Istio, Kubernetes Gateway API and Kuadrant itself.

    -
    -

    Note: In production environment, these steps are usually performed by a cluster operator with administrator privileges over the Kubernetes cluster.

    -
    -

    Clone the project:

    -
    git clone https://github.com/Kuadrant/kuadrant-operator && cd kuadrant-operator
    -
    -

    Setup the environment:

    -
    make local-setup
    -
    -

    Request an instance of Kuadrant:

    -
    kubectl -n kuadrant-system apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta1
    -kind: Kuadrant
    -metadata:
    -  name: kuadrant
    -spec: {}
    -EOF
    -
    -

    ② Deploy the Toy Store API

    -

    Deploy the application in the default namespace:

    -
    kubectl apply -f examples/toystore/toystore.yaml
    -
    -

    Route traffic to the application:

    -
    kubectl apply -f examples/toystore/httproute.yaml
    -
    -

    API lifecycle

    -

    Lifecycle

    -

    Try the API unprotected

    -

    Export the gateway hostname and port:

    -
    export INGRESS_HOST=$(kubectl get gtw istio-ingressgateway -n istio-system -o jsonpath='{.status.addresses[0].value}')
    -export INGRESS_PORT=$(kubectl get gtw istio-ingressgateway -n istio-system -o jsonpath='{.spec.listeners[?(@.name=="http")].port}')
    -export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
    -
    -
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i
    -# HTTP/1.1 200 OK
    -
    -

    It should return 200 OK.

    -
    -

    Note: If the command above fails to hit the Toy Store API on your environment, try forwarding requests to the service and accessing over localhost:

    -

    kubectl port-forward -n istio-system service/istio-ingressgateway-istio 9080:80 >/dev/null 2>&1 &
    -export GATEWAY_URL=localhost:9080
    -
    -
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i
    -# HTTP/1.1 200 OK
    -

    -
    -

    ③ Deploy Keycloak

    -

    Create the namesapce:

    -
    kubectl create namespace keycloak
    -
    -

    Deploy Keycloak with a bootstrap realm, users, and clients:

    -
    kubectl apply -n keycloak -f https://raw.githubusercontent.com/Kuadrant/authorino-examples/main/keycloak/keycloak-deploy.yaml
    -
    -
    -

    Note: The Keycloak server may take a couple of minutes to be ready.

    -
    -

    ④ Enforce authentication and authorization for the Toy Store API

    -

    Create a Kuadrant AuthPolicy to configure authentication and authorization:

    -
    kubectl apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta2
    -kind: AuthPolicy
    -metadata:
    -  name: toystore-protection
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: toystore
    -  rules:
    -    authentication:
    -      "keycloak-users":
    -        jwt:
    -          issuerUrl: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant
    -      "k8s-service-accounts":
    -        kubernetesTokenReview:
    -          audiences:
    -
    -          - https://kubernetes.default.svc.cluster.local
    -        overrides:
    -          "sub":
    -            selector: auth.identity.user.username
    -    authorization:
    -      "k8s-rbac":
    -        kubernetesSubjectAccessReview:
    -          user:
    -            selector: auth.identity.sub
    -    response:
    -      success:
    -        dynamicMetadata:
    -          "identity":
    -            json:
    -              properties:
    -                "userid":
    -                  selector: auth.identity.sub
    -EOF
    -
    -

    Try the API missing authentication

    -
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i
    -# HTTP/1.1 401 Unauthorized
    -# www-authenticate: Bearer realm="keycloak-users"
    -# www-authenticate: Bearer realm="k8s-service-accounts"
    -# x-ext-auth-reason: {"k8s-service-accounts":"credential not found","keycloak-users":"credential not found"}
    -
    -

    Try the API without permission

    -

    Obtain an access token with the Keycloak server:

    -
    ACCESS_TOKEN=$(kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=demo' -d 'username=john' -d 'password=p' -d 'scope=openid' | jq -r .access_token)
    -
    -

    Send a request to the API as the Keycloak-authenticated user while still missing permissions:

    -
    curl -H "Authorization: Bearer $ACCESS_TOKEN" -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i
    -# HTTP/1.1 403 Forbidden
    -
    -

    Create a Kubernetes Service Account to represent a consumer of the API associated with the alternative source of identities k8s-service-accounts:

    -
    kubectl apply -f - <<EOF
    -apiVersion: v1
    -kind: ServiceAccount
    -metadata:
    -  name: client-app-1
    -EOF
    -
    -

    Obtain an access token for the client-app-1 service account:

    -
    SA_TOKEN=$(kubectl create token client-app-1)
    -
    -

    Send a request to the API as the service account while still missing permissions:

    -
    curl -H "Authorization: Bearer $SA_TOKEN" -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i
    -# HTTP/1.1 403 Forbidden
    -
    -

    ⑤ Grant access to the Toy Store API for user and service account

    -

    Create the toystore-reader and toystore-writer roles:

    -
    kubectl apply -f - <<EOF
    -apiVersion: rbac.authorization.k8s.io/v1
    -kind: ClusterRole
    -metadata:
    -  name: toystore-reader
    -rules:
    -
    -- nonResourceURLs: ["/toy*"]
    -  verbs: ["get"]
    ----
    -apiVersion: rbac.authorization.k8s.io/v1
    -kind: ClusterRole
    -metadata:
    -  name: toystore-writer
    -rules:
    -- nonResourceURLs: ["/admin/toy"]
    -  verbs: ["post", "delete"]
    -EOF
    -
    -

    Add permissions to the user and service account:

    - - - - - - - - - - - - - - - - - - - - -
    UserKindRoles
    johnUser registered in Keycloaktoystore-reader, toystore-writer
    client-app-1Kuberentes Service Accounttoystore-reader
    -
    kubectl apply -f - <<EOF
    -apiVersion: rbac.authorization.k8s.io/v1
    -kind: ClusterRoleBinding
    -metadata:
    -  name: toystore-readers
    -roleRef:
    -  apiGroup: rbac.authorization.k8s.io
    -  kind: ClusterRole
    -  name: toystore-reader
    -subjects:
    -
    -- kind: User
    -  name: $(jq -R -r 'split(".") | .[1] | @base64d | fromjson | .sub' <<< "$ACCESS_TOKEN")
    -- kind: ServiceAccount
    -  name: client-app-1
    -  namespace: default
    ----
    -apiVersion: rbac.authorization.k8s.io/v1
    -kind: ClusterRoleBinding
    -metadata:
    -  name: toystore-writers
    -roleRef:
    -  apiGroup: rbac.authorization.k8s.io
    -  kind: ClusterRole
    -  name: toystore-writer
    -subjects:
    -- kind: User
    -  name: $(jq -R -r 'split(".") | .[1] | @base64d | fromjson | .sub' <<< "$ACCESS_TOKEN")
    -EOF
    -
    -
    -Q: Can I use Roles and RoleBindings instead of ClusterRoles and ClusterRoleBindings? -

    Yes, you can.

    -

    The example above is for non-resource URL Kubernetes roles. For using Roles and RoleBindings instead of - ClusterRoles and ClusterRoleBindings, thus more flexible resource-based permissions to protect the API, - see the spec for Kubernetes SubjectAccessReview authorization - in the Authorino docs.

    -
    -

    Try the API with permission

    -

    Send requests to the API as the Keycloak-authenticated user:

    -
    curl -H "Authorization: Bearer $ACCESS_TOKEN" -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i
    -# HTTP/1.1 200 OK
    -
    -
    curl -H "Authorization: Bearer $ACCESS_TOKEN" -H 'Host: api.toystore.com' -X POST http://$GATEWAY_URL/admin/toy -i
    -# HTTP/1.1 200 OK
    -
    -

    Send requests to the API as the Kubernetes service account:

    -
    curl -H "Authorization: Bearer $SA_TOKEN" -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i
    -# HTTP/1.1 200 OK
    -
    -
    curl -H "Authorization: Bearer $SA_TOKEN" -H 'Host: api.toystore.com' -X POST http://$GATEWAY_URL/admin/toy -i
    -# HTTP/1.1 403 Forbidden
    -
    -

    ⑥ Enforce rate limiting on requests to the Toy Store API

    -

    Create a Kuadrant RateLimitPolicy to configure rate limiting:

    -
    kubectl apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta2
    -kind: RateLimitPolicy
    -metadata:
    -  name: toystore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: toystore
    -  limits:
    -    "per-user":
    -      rates:
    -
    -      - limit: 5
    -        duration: 10
    -        unit: second
    -      counters:
    -      - metadata.filter_metadata.envoy\.filters\.http\.ext_authz.identity.userid
    -EOF
    -
    -
    -

    Note: It may take a couple of minutes for the RateLimitPolicy to be applied depending on your cluster.

    -
    -

    Try the API rate limited

    -

    Each user should be entitled to a maximum of 5 requests every 10 seconds.

    -
    -

    Note: If the tokens have expired, you may need to refresh them first.

    -
    -

    Send requests as the Keycloak-authenticated user:

    -
    while :; do curl --write-out '%{http_code}\n' --silent --output /dev/null -H "Authorization: Bearer $ACCESS_TOKEN" -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy | grep -E --color "\b(429)\b|$"; sleep 1; done
    -
    -

    Send requests as the Kubernetes service account:

    -
    while :; do curl --write-out '%{http_code}\n' --silent --output /dev/null -H "Authorization: Bearer $SA_TOKEN" -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy | grep -E --color "\b(429)\b|$"; sleep 1; done
    -
    -

    Cleanup

    -
    make local-cleanup
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/user-guides/gateway-dns/index.html b/0.10.0/kuadrant-operator/doc/user-guides/gateway-dns/index.html deleted file mode 100644 index 3cd2dc009..000000000 --- a/0.10.0/kuadrant-operator/doc/user-guides/gateway-dns/index.html +++ /dev/null @@ -1,3721 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Gateway DNS for Cluster Operators - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Gateway DNS for Cluster Operators

    -

    This user guide walks you through an example of how to configure DNS for all routes attached to an ingress gateway.

    -


    -

    Requisites

    - -

    Setup

    -

    This step uses tooling from the Kuadrant Operator component to create a containerized Kubernetes server locally using Kind, -where it installs Istio, Kubernetes Gateway API and Kuadrant itself.

    -

    Clone the project:

    -
    git clone https://github.com/Kuadrant/kuadrant-operator && cd kuadrant-operator
    -
    -

    Setup the environment:

    -
    make local-setup
    -
    -

    Create a namespace: -

    kubectl create namespace my-gateways
    -

    -

    Export a root domain and hosted zone id: -

    export ROOT_DOMAIN=<ROOT_DOMAIN>
    -

    -
    -

    Note: ROOT_DOMAIN should be set to your AWS hosted zone name.

    -
    -

    Create a dns provider secret

    -

    Create AWS provider secret. You should limit the permissions of this credential to only the zones you want us to access.

    -
    export AWS_ACCESS_KEY_ID=<AWS_ACCESS_KEY_ID> AWS_SECRET_ACCESS_KEY=<AWS_SECRET_ACCESS_KEY>
    -
    -kubectl -n my-gateways create secret generic aws-credentials \
    -  --type=kuadrant.io/aws \
    -  --from-literal=AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
    -  --from-literal=AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
    -
    -

    Create an ingress gateway

    -

    Create a gateway using your ROOT_DOMAIN as part of a listener hostname: -

    kubectl -n my-gateways apply -f - <<EOF
    -apiVersion: gateway.networking.k8s.io/v1
    -kind: Gateway
    -metadata:
    -  name: prod-web
    -spec:
    -  gatewayClassName: istio
    -  listeners:
    -
    -    - allowedRoutes:
    -        namespaces:
    -          from: All
    -      name: api
    -      hostname: "*.$ROOT_DOMAIN"
    -      port: 80
    -      protocol: HTTP
    -EOF
    -

    -

    Check gateway status: -

    kubectl get gateway prod-web -n my-gateways
    -
    -Response: -
    NAME       CLASS   ADDRESS        PROGRAMMED   AGE
    -prod-web   istio   172.18.200.1   True         25s
    -

    -

    Enable DNS on the gateway

    -

    Create a Kuadrant DNSPolicy to configure DNS: -

    kubectl -n my-gateways apply -f - <<EOF
    -apiVersion: kuadrant.io/v1alpha1
    -kind: DNSPolicy
    -metadata:
    -  name: prod-web
    -spec:
    -  targetRef:
    -    name: prod-web
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -  routingStrategy: simple
    -EOF
    -

    -

    Check policy status: -

    kubectl get dnspolicy -o wide -n my-gateways
    -
    -Response: -
    NAME       STATUS     TARGETREFKIND   TARGETREFNAME   AGE
    -prod-web   Accepted   Gateway         prod-web        26s
    -

    -

    Deploy a sample API to test DNS

    -

    Deploy the sample API: -

    kubectl -n my-gateways apply -f examples/toystore/toystore.yaml
    -kubectl -n my-gateways wait --for=condition=Available deployments toystore --timeout=60s
    -

    -

    Route traffic to the API from our gateway: -

    kubectl -n my-gateways apply -f - <<EOF
    -apiVersion: gateway.networking.k8s.io/v1
    -kind: HTTPRoute
    -metadata:
    -  name: toystore
    -spec:
    -  parentRefs:
    -
    -  - name: prod-web
    -    namespace: my-gateways
    -  hostnames:
    -  - "*.$ROOT_DOMAIN"
    -  rules:
    -  - backendRefs:
    -    - name: toystore
    -      port: 80
    -EOF
    -

    -

    Verify a DNSRecord resource is created: -

    kubectl get dnsrecords -n my-gateways
    -NAME           READY
    -prod-web-api   True
    -

    -

    Verify DNS works by sending requests

    -

    Verify DNS using dig: -

    dig foo.$ROOT_DOMAIN +short
    -
    -Response: -
    172.18.200.1
    -

    -

    Verify DNS using curl:

    -

    curl http://api.$ROOT_DOMAIN
    -
    -Response: -
    {
    -  "method": "GET",
    -  "path": "/",
    -  "query_string": null,
    -  "body": "",
    -  "headers": {
    -    "HTTP_HOST": "api.$ROOT_DOMAIN",
    -    "HTTP_USER_AGENT": "curl/7.85.0",
    -    "HTTP_ACCEPT": "*/*",
    -    "HTTP_X_FORWARDED_FOR": "10.244.0.1",
    -    "HTTP_X_FORWARDED_PROTO": "http",
    -    "HTTP_X_ENVOY_INTERNAL": "true",
    -    "HTTP_X_REQUEST_ID": "9353dd3d-0fe5-4404-86f4-a9732a9c119c",
    -    "HTTP_X_ENVOY_DECORATOR_OPERATION": "toystore.my-gateways.svc.cluster.local:80/*",
    -    "HTTP_X_ENVOY_PEER_METADATA": "ChQKDkFQUF9DT05UQUlORVJTEgIaAAoaCgpDTFVTVEVSX0lEEgwaCkt1YmVybmV0ZXMKHQoMSU5TVEFOQ0VfSVBTEg0aCzEwLjI0NC4wLjIyChkKDUlTVElPX1ZFUlNJT04SCBoGMS4xNy4yCtcBCgZMQUJFTFMSzAEqyQEKIwoVaXN0aW8uaW8vZ2F0ZXdheS1uYW1lEgoaCHByb2Qtd2ViChkKDGlzdGlvLmlvL3JldhIJGgdkZWZhdWx0CjMKH3NlcnZpY2UuaXN0aW8uaW8vY2Fub25pY2FsLW5hbWUSEBoOcHJvZC13ZWItaXN0aW8KLwojc2VydmljZS5pc3Rpby5pby9jYW5vbmljYWwtcmV2aXNpb24SCBoGbGF0ZXN0CiEKF3NpZGVjYXIuaXN0aW8uaW8vaW5qZWN0EgYaBHRydWUKGgoHTUVTSF9JRBIPGg1jbHVzdGVyLmxvY2FsCigKBE5BTUUSIBoecHJvZC13ZWItaXN0aW8tYzU0NWQ4ZjY4LTdjcjg2ChoKCU5BTUVTUEFDRRINGgtteS1nYXRld2F5cwpWCgVPV05FUhJNGktrdWJlcm5ldGVzOi8vYXBpcy9hcHBzL3YxL25hbWVzcGFjZXMvbXktZ2F0ZXdheXMvZGVwbG95bWVudHMvcHJvZC13ZWItaXN0aW8KFwoRUExBVEZPUk1fTUVUQURBVEESAioACiEKDVdPUktMT0FEX05BTUUSEBoOcHJvZC13ZWItaXN0aW8=",
    -    "HTTP_X_ENVOY_PEER_METADATA_ID": "router~10.244.0.22~prod-web-istio-c545d8f68-7cr86.my-gateways~my-gateways.svc.cluster.local",
    -    "HTTP_X_ENVOY_ATTEMPT_COUNT": "1",
    -    "HTTP_X_B3_TRACEID": "d65f580db9c6a50c471cdb534771c61a",
    -    "HTTP_X_B3_SPANID": "471cdb534771c61a",
    -    "HTTP_X_B3_SAMPLED": "0",
    -    "HTTP_VERSION": "HTTP/1.1"
    -  },
    -  "uuid": "0ecb9f84-db30-4289-a3b8-e22d4021122f"
    -}
    -

    -

    Cleanup

    -
    make local-cleanup
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/user-guides/gateway-rl-for-cluster-operators/index.html b/0.10.0/kuadrant-operator/doc/user-guides/gateway-rl-for-cluster-operators/index.html deleted file mode 100644 index 62dc9d79e..000000000 --- a/0.10.0/kuadrant-operator/doc/user-guides/gateway-rl-for-cluster-operators/index.html +++ /dev/null @@ -1,3715 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - RateLimitPolicy for Platform Engineers - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Gateway Rate Limiting for Cluster Operators

    -

    This user guide walks you through an example of how to configure rate limiting for all routes attached to an ingress gateway.

    -


    -

    Run the steps ① → ⑤

    -

    ① Setup

    -

    This step uses tooling from the Kuadrant Operator component to create a containerized Kubernetes server locally using Kind, -where it installs Istio, Kubernetes Gateway API and Kuadrant itself.

    -
    -

    Note: In production environment, these steps are usually performed by a cluster operator with administrator privileges over the Kubernetes cluster.

    -
    -

    Clone the project:

    -
    git clone https://github.com/Kuadrant/kuadrant-operator && cd kuadrant-operator
    -
    -

    Setup the environment:

    -
    make local-setup
    -
    -

    Request an instance of Kuadrant:

    -
    kubectl -n kuadrant-system apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta1
    -kind: Kuadrant
    -metadata:
    -  name: kuadrant
    -spec: {}
    -EOF
    -
    -

    ② Create the ingress gateways

    -
    kubectl -n istio-system apply -f - <<EOF
    -apiVersion: gateway.networking.k8s.io/v1
    -kind: Gateway
    -metadata:
    -  name: external
    -  annotations:
    -    kuadrant.io/namespace: kuadrant-system
    -    networking.istio.io/service-type: ClusterIP
    -spec:
    -  gatewayClassName: istio
    -  listeners:
    -
    -  - name: external
    -    port: 80
    -    protocol: HTTP
    -    hostname: '*.io'
    -    allowedRoutes:
    -      namespaces:
    -        from: All
    ----
    -apiVersion: gateway.networking.k8s.io/v1
    -kind: Gateway
    -metadata:
    -  name: internal
    -  annotations:
    -    kuadrant.io/namespace: kuadrant-system
    -    networking.istio.io/service-type: ClusterIP
    -spec:
    -  gatewayClassName: istio
    -  listeners:
    -  - name: local
    -    port: 80
    -    protocol: HTTP
    -    hostname: '*.local'
    -    allowedRoutes:
    -      namespaces:
    -        from: All
    -EOF
    -
    -

    ③ Enforce rate limiting on requests incoming through the external gateway

    -
        ┌───────────┐      ┌───────────┐
    -    │ (Gateway) │      │ (Gateway) │
    -    │  external │      │  internal │
    -    │           │      │           │
    -    │   *.io    │      │  *.local  │
    -    └───────────┘      └───────────┘
    -          ▲
    -          │
    -┌─────────┴─────────┐
    -│ (RateLimitPolicy) │
    -│       gw-rlp      │
    -└───────────────────┘
    -
    -

    Create a Kuadrant RateLimitPolicy to configure rate limiting:

    -
    kubectl apply -n istio-system -f - <<EOF
    -apiVersion: kuadrant.io/v1beta2
    -kind: RateLimitPolicy
    -metadata:
    -  name: gw-rlp
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -    name: external
    -  limits:
    -    "global":
    -      rates:
    -
    -      - limit: 5
    -        duration: 10
    -        unit: second
    -EOF
    -
    -
    -

    Note: It may take a couple of minutes for the RateLimitPolicy to be applied depending on your cluster.

    -
    -

    ④ Deploy a sample API to test rate limiting enforced at the level of the gateway

    -
                               ┌───────────┐      ┌───────────┐
    -┌───────────────────┐      │ (Gateway) │      │ (Gateway) │
    -│ (RateLimitPolicy) │      │  external │      │  internal │
    -│       gw-rlp      ├─────►│           │      │           │
    -└───────────────────┘      │   *.io    │      │  *.local  │
    -                           └─────┬─────┘      └─────┬─────┘
    -                                 │                  │
    -                                 └─────────┬────────┘
    -                                           │
    -                                 ┌─────────┴────────┐
    -                                 │   (HTTPRoute)    │
    -                                 │     toystore     │
    -                                 │                  │
    -                                 │ *.toystore.io    │
    -                                 │ *.toystore.local │
    -                                 └────────┬─────────┘
    -                                          │
    -                                   ┌──────┴───────┐
    -                                   │   (Service)  │
    -                                   │   toystore   │
    -                                   └──────────────┘
    -
    -

    Deploy the sample API:

    -
    kubectl apply -f examples/toystore/toystore.yaml
    -
    -

    Route traffic to the API from both gateways:

    -
    kubectl apply -f - <<EOF
    -apiVersion: gateway.networking.k8s.io/v1
    -kind: HTTPRoute
    -metadata:
    -  name: toystore
    -spec:
    -  parentRefs:
    -
    -  - name: external
    -    namespace: istio-system
    -  - name: internal
    -    namespace: istio-system
    -  hostnames:
    -  - "*.toystore.io"
    -  - "*.toystore.local"
    -  rules:
    -  - backendRefs:
    -    - name: toystore
    -      port: 80
    -EOF
    -
    -

    ⑤ Verify the rate limiting works by sending requests in a loop

    -

    Expose the gateways, respectively at the port numbers 9081 and 9082 of the local host:

    -
    kubectl port-forward -n istio-system service/external-istio 9081:80 >/dev/null 2>&1 &
    -kubectl port-forward -n istio-system service/internal-istio 9082:80 >/dev/null 2>&1 &
    -
    -

    Up to 5 successful (200 OK) requests every 10 seconds through the external ingress gateway (*.io), then 429 Too Many Requests:

    -
    while :; do curl --write-out '%{http_code}\n' --silent --output /dev/null -H 'Host: api.toystore.io' http://localhost:9081 | grep -E --color "\b(429)\b|$"; sleep 1; done
    -
    -

    Unlimited successful (200 OK) through the internal ingress gateway (*.local):

    -
    while :; do curl --write-out '%{http_code}\n' --silent --output /dev/null -H 'Host: api.toystore.local' http://localhost:9082 | grep -E --color "\b(429)\b|$"; sleep 1; done
    -
    -

    Cleanup

    -
    make local-cleanup
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/user-guides/gateway-tls/index.html b/0.10.0/kuadrant-operator/doc/user-guides/gateway-tls/index.html deleted file mode 100644 index bdcbc793e..000000000 --- a/0.10.0/kuadrant-operator/doc/user-guides/gateway-tls/index.html +++ /dev/null @@ -1,3762 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Gateway TLS for Cluster Operators - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    - -
    - - - -
    -
    - - - - - - - - - - - - -

    Gateway TLS for Cluster Operators

    -

    This user guide walks you through an example of how to configure TLS for all routes attached to an ingress gateway.

    -


    -

    Requisites

    - -

    Setup

    -

    This step uses tooling from the Kuadrant Operator component to create a containerized Kubernetes server locally using Kind, -where it installs Istio, Kubernetes Gateway API, CertManager and Kuadrant itself.

    -

    Clone the project:

    -
    git clone https://github.com/Kuadrant/kuadrant-operator && cd kuadrant-operator
    -
    -

    Setup the environment:

    -
    make local-setup
    -
    -

    Create a namespace: -

    kubectl create namespace my-gateways
    -

    -

    Create an ingress gateway

    -

    Create a gateway: -

    kubectl -n my-gateways apply -f - <<EOF
    -apiVersion: gateway.networking.k8s.io/v1
    -kind: Gateway
    -metadata:
    -  name: prod-web
    -spec:
    -  gatewayClassName: istio
    -  listeners:
    -
    -    - allowedRoutes:
    -        namespaces:
    -          from: All
    -      name: api
    -      hostname: "*.toystore.local"
    -      port: 443
    -      protocol: HTTPS
    -      tls:
    -        mode: Terminate
    -        certificateRefs:
    -          - name: toystore-local-tls
    -            kind: Secret
    -EOF
    -

    -

    Enable TLS on the gateway

    -

    The TLSPolicy requires a reference to an existing CertManager Issuer.

    -

    Create a CertManager Issuer: -

    kubectl apply -n my-gateways -f - <<EOF
    -apiVersion: cert-manager.io/v1
    -kind: Issuer
    -metadata:
    -  name: selfsigned-issuer
    -spec:
    -  selfSigned: {}
    -EOF
    -

    -
    -

    Note: We are using a self-signed issuer here but any supported CerManager issuer or cluster issuer can be used.

    -
    -

    kubectl get issuer selfsigned-issuer -n my-gateways
    -
    -Response: -
    NAME                        READY   AGE
    -selfsigned-issuer   True    18s
    -

    -

    Create a Kuadrant TLSPolicy to configure TLS: -

    kubectl apply -n my-gateways -f - <<EOF
    -apiVersion: kuadrant.io/v1alpha1
    -kind: TLSPolicy
    -metadata:
    -  name: prod-web
    -spec:
    -  targetRef:
    -    name: prod-web
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -  issuerRef:
    -    group: cert-manager.io
    -    kind: Issuer
    -    name: selfsigned-issuer
    -EOF
    -

    -

    Check policy status: -

    kubectl get tlspolicy -o wide -n my-gateways
    -
    -Response: -
    NAME       STATUS     TARGETREFKIND   TARGETREFNAME   AGE
    -prod-web   Accepted   Gateway         prod-web        13s
    -

    -

    Check a Certificate resource was created: -

    kubectl get certificates -n my-gateways
    -
    -Response -
    NAME                 READY   SECRET               AGE
    -toystore-local-tls   True    toystore-local-tls   7m30s
    -

    -

    Check a TLS Secret resource was created: -

    kubectl get secrets -n my-gateways --field-selector="type=kubernetes.io/tls"
    -
    -Response: -
    NAME                 TYPE                DATA   AGE
    -toystore-local-tls   kubernetes.io/tls   3      7m42s
    -

    -

    Deploy a sample API to test TLS

    -

    Deploy the sample API: -

    kubectl -n my-gateways apply -f examples/toystore/toystore.yaml
    -kubectl -n my-gateways wait --for=condition=Available deployments toystore --timeout=60s
    -

    -

    Route traffic to the API from our gateway: -

    kubectl -n my-gateways apply -f - <<EOF
    -apiVersion: gateway.networking.k8s.io/v1
    -kind: HTTPRoute
    -metadata:
    -  name: toystore
    -spec:
    -  parentRefs:
    -
    -  - name: prod-web
    -    namespace: my-gateways
    -  hostnames:
    -  - "*.toystore.local"
    -  rules:
    -  - backendRefs:
    -    - name: toystore
    -      port: 80
    -EOF
    -

    -

    Verify TLS works by sending requests

    -

    Get the gateway address@ -

    GWADDRESS=`kubectl get gateway/prod-web -n my-gateways -o=jsonpath='{.status.addresses[?(@.type=="IPAddress")].value}'`
    -echo $GWADDRESS
    -
    -Response: -
    172.18.200.1
    -

    -

    Verify we can access the service via TLS: -

    curl -vkI https://api.toystore.local --resolve "api.toystore.local:443:$GWADDRESS"
    -
    -Response: -
    * Added api.toystore.local:443:172.18.200.1 to DNS cache
    -* Hostname api.toystore.local was found in DNS cache
    -*   Trying 172.18.200.1:443...
    -* Connected to api.toystore.local (172.18.200.1) port 443 (#0)
    -* ALPN: offers h2
    -* ALPN: offers http/1.1
    -* TLSv1.0 (OUT), TLS header, Certificate Status (22):
    -* TLSv1.3 (OUT), TLS handshake, Client hello (1):
    -* TLSv1.2 (IN), TLS header, Certificate Status (22):
    -* TLSv1.3 (IN), TLS handshake, Server hello (2):
    -* TLSv1.2 (IN), TLS header, Finished (20):
    -* TLSv1.2 (IN), TLS header, Supplemental data (23):
    -* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
    -* TLSv1.3 (IN), TLS handshake, Certificate (11):
    -* TLSv1.3 (IN), TLS handshake, CERT verify (15):
    -* TLSv1.3 (IN), TLS handshake, Finished (20):
    -* TLSv1.2 (OUT), TLS header, Finished (20):
    -* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
    -* TLSv1.2 (OUT), TLS header, Supplemental data (23):
    -* TLSv1.3 (OUT), TLS handshake, Finished (20):
    -* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
    -* ALPN: server accepted h2
    -* Server certificate:
    -*  subject: [NONE]
    -*  start date: Feb 15 11:46:50 2024 GMT
    -*  expire date: May 15 11:46:50 2024 GMT
    -* Using HTTP2, server supports multiplexing
    -* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
    -* TLSv1.2 (OUT), TLS header, Supplemental data (23):
    -* TLSv1.2 (OUT), TLS header, Supplemental data (23):
    -* TLSv1.2 (OUT), TLS header, Supplemental data (23):
    -* h2h3 [:method: HEAD]
    -* h2h3 [:path: /]
    -* h2h3 [:scheme: https]
    -* h2h3 [:authority: api.toystore.local]
    -* h2h3 [user-agent: curl/7.85.0]
    -* h2h3 [accept: */*]
    -* Using Stream ID: 1 (easy handle 0x5623e4fe5bf0)
    -* TLSv1.2 (OUT), TLS header, Supplemental data (23):
    -> HEAD / HTTP/2
    -> Host: api.toystore.local
    -> user-agent: curl/7.85.0
    -> accept: */*
    -> 
    -* TLSv1.2 (IN), TLS header, Supplemental data (23):
    -* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
    -* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
    -* old SSL session ID is stale, removing
    -* TLSv1.2 (IN), TLS header, Supplemental data (23):
    -* Connection state changed (MAX_CONCURRENT_STREAMS == 2147483647)!
    -* TLSv1.2 (OUT), TLS header, Supplemental data (23):
    -* TLSv1.2 (IN), TLS header, Supplemental data (23):
    -< HTTP/2 200 
    -HTTP/2 200 
    -< content-type: application/json
    -content-type: application/json
    -< server: istio-envoy
    -server: istio-envoy
    -< date: Thu, 15 Feb 2024 12:13:27 GMT
    -date: Thu, 15 Feb 2024 12:13:27 GMT
    -< content-length: 1658
    -content-length: 1658
    -< x-envoy-upstream-service-time: 1
    -x-envoy-upstream-service-time: 1
    -
    -< 
    -
    -* Connection #0 to host api.toystore.local left intact
    -

    -

    Cleanup

    -
    make local-cleanup
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/index.html b/0.10.0/kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/index.html deleted file mode 100644 index 602306da5..000000000 --- a/0.10.0/kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/index.html +++ /dev/null @@ -1,4602 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Secure, connect and protect - OpenShift - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Secure, protect, and connect APIs with Kuadrant on OpenShift

    -

    Overview

    -

    This guide walks you through using Kuadrant on OpenShift to secure, protect, and connect an API exposed by a Gateway that is based on Kubernetes Gateway API. You can use this walkthrough for a Gateway deployed on a single OpenShift cluster or a Gateway distributed across multiple OpenShift clusters with a shared listener hostname. This guide shows how the platform engineer and application developer user roles can each use Kuadrant to achieve their goals.

    -

    What Kuadrant can do for you in a multicluster environment

    -

    You can leverage Kuadrant's capabilities in single or multiple clusters. The following features are designed to work across multiple clusters as well as in a single-cluster environment.

    -
      -
    • Multicluster ingress: Kuadrant provides multicluster ingress connectivity using DNS to bring traffic to your Gateways by using a strategy defined in a DNSPolicy.
    • -
    • Global rate limiting: Kuadrant can enable global rate limiting use cases when configured to use a shared Redis store for counters based on limits defined by a RateLimitPolicy.
    • -
    • Global auth: You can configure a Kuadrant AuthPolicy to leverage external auth providers to ensure that different clusters exposing the same API authenticate and authorize in the same way.
    • -
    • Integration with federated metrics stores: Kuadrant has example dashboards and metrics for visualizing your Gateways and observing traffic hitting those Gateways across multiple clusters.
    • -
    -

    User roles

    -
      -
    • -

      Platform engineer: This guide walks you through deploying a Gateway that provides secure communication and is protected and ready for use by application development teams to deploy an API. It then walks through using this Gateway in clusters in different geographic regions, leveraging Kuadrant to bring specific traffic to your geo-located Gateways to reduce latency and distribute load, while still being protected and secured with global rate limiting and auth.

      -
    • -
    • -

      Application developer: This guide walks through how you can use the Kuadrant OpenAPI Specification (OAS) extensions and kuadrantctl CLI to generate an HTTPRoute for your API and to add specific auth and rate limiting requirements.

      -
    • -
    -

    As an optional extra, this guide highlights how both user roles can observe and monitor these Gateways when the OpenShift user workload monitoring and observability stack is deployed.

    -

    Deployment management tooling

    -

    While this document uses kubectl commands for simplicity, working with multiple clusters is complex, and it is best to use a tool such as Argo CD to manage the deployment of resources to multiple clusters.

    -

    Prerequisites

    -

    This guide expects that you have successfully installed Kuadrant on at least one OpenShift cluster:

    -
      -
    • You have completed the steps in Install Kuadrant on an OpenShift cluster for one or more clusters.
    • -
    • For multicluster scenarios, you have installed Kuadrant on at least two different OpenShift clusters, and have a shared accessible Redis store.
    • -
    • You have the kubectl command line installed.
    • -
    • Optional: User workload monitoring is configured to remote write to a central storage system such as Thanos, as described in Install Kuadrant on an OpenShift cluster.
    • -
    -

    Platform engineer workflow

    -

    NOTE: You must perform the following steps in each cluster individually, unless specifically excluded.

    -

    Step 1 - Set your environment variables

    -

    Set the following environment variables used for convenience in this guide: -

    export zid=change-this-to-your-zone-id
    -export rootDomain=example.com
    -export gatewayNS=api-gateway
    -export gatewayName=external
    -export devNS=toystore
    -export AWS_ACCESS_KEY_ID=xxxx
    -export AWS_SECRET_ACCESS_KEY=xxxx
    -export AWS_REGION=us-east-1
    -export clusterIssuerName=lets-encrypt
    -export EMAIL=foo@example.com
    -

    -

    Step 2 - Set up a DNS Provider

    -

    The DNS provider declares a credential to access the zone(s) that Kuadrant can use to set up DNS configuration. You should ensure that this credential only has access to the zones you want managed.

    -

    Create the DNS Provider Secret resource

    -

    Apply the following Secret resource to each cluster. Alternatively, if you are adding an additional cluster, add it to the new cluster:

    -
    kubectl create ns ${gatewayNS}
    -
    -

    Create the secret credentials as follows:

    -
    kubectl -n ${gatewayNS} create secret generic aws-credentials \
    -  --type=kuadrant.io/aws \
    -  --from-literal=AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
    -  --from-literal=AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
    -
    -

    Step 3 - Add a TLS issuer

    -

    To secure communication to the Gateways, you will define a TLS issuer for TLS certificates. This example uses Let's Encrypt, but you can use any issuer supported by cert-manager.

    -

    The following example uses Let's Encrypt staging, which you must also apply to all clusters:

    -
    kubectl apply -f - <<EOF
    -apiVersion: cert-manager.io/v1
    -kind: ClusterIssuer
    -metadata:
    -  name: ${clusterIssuerName}
    -spec:
    -  acme:
    -    email: ${EMAIL} 
    -    privateKeySecretRef:
    -      name: le-secret
    -    server: https://acme-staging-v02.api.letsencrypt.org/directory
    -    solvers:
    -
    -      - dns01:
    -          route53:
    -            hostedZoneID: ${zid}
    -            region: ${AWS_REGION}
    -            accessKeyIDSecretRef:
    -              key: AWS_ACCESS_KEY_ID
    -              name: aws-credentials
    -            secretAccessKeySecretRef:
    -              key: AWS_SECRET_ACCESS_KEY
    -              name: aws-credentials
    -EOF
    -
    -

    Then wait for the ClusterIssuer to become ready as follows:

    -
    kubectl wait clusterissuer/${clusterIssuerName} --for=condition=ready=true
    -
    -

    Step 4 - Set up a Gateway

    -

    For Kuadrant to balance traffic using DNS across two or more clusters, you must define a Gateway with a shared host. You will define this by using an HTTPS listener with a wildcard hostname based on the root domain. As mentioned earlier, you must apply these resources to all clusters.

    -

    NOTE: For now, the Gateway is set to accept an HTTPRoute from the same namespace only. This allows you to restrict who can use the Gateway until it is ready for general use.

    -
    kubectl apply -f - <<EOF
    -apiVersion: gateway.networking.k8s.io/v1
    -kind: Gateway
    -metadata:
    -  name: ${gatewayName}
    -  namespace: ${gatewayNS}
    -  labels:
    -    kuadrant.io/gateway: "true"
    -spec:
    -    gatewayClassName: istio
    -    listeners:
    -
    -    - allowedRoutes:
    -        namespaces:
    -          from: Same
    -      hostname: "*.${rootDomain}"
    -      name: api
    -      port: 443
    -      protocol: HTTPS
    -      tls:
    -        certificateRefs:
    -        - group: ""
    -          kind: Secret
    -          name: api-${gatewayName}-tls
    -        mode: Terminate
    -EOF
    -
    -

    Check the status of your Gateway as follows:

    -
    kubectl get gateway ${gatewayName} -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}'
    -kubectl get gateway ${gatewayName} -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Programmed")].message}'
    -
    -

    Your Gateway should be accepted and programmed (valid and assigned an external address). However, if you check your listener status as follows, you will see that it is not yet programmed or ready to accept traffic due to bad TLS configuration:

    -
    kubectl get gateway ${gatewayName} -n ${gatewayNS} -o=jsonpath='{.status.listeners[0].conditions[?(@.type=="Programmed")].message}'
    -
    -

    Kuadrant can help with this by using a TLSPolicy.

    -

    Step 5 - Secure and protect the Gateway with auth, TLS, rate limit, and DNS policies

    -

    While your Gateway is now deployed, it has no exposed endpoints and your listener is not programmed. Next, you can set up a TLSPolicy that leverages your CertificateIssuer to set up your listener certificates.

    -

    You will also define an AuthPolicy that will set up a default 403 response for any unprotected endpoints, as well as a RateLimitPolicy that will set up a default artificially low global limit to further protect any endpoints exposed by this Gateway.

    -

    Set the Auth policy

    -

    Set a default, deny-all AuthPolicy for your Gateway as follows:

    -
    kubectl apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta2
    -kind: AuthPolicy
    -metadata:
    -  name: ${gatewayName}-auth
    -  namespace: ${gatewayNS}
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -    name: ${gatewayName}
    -  defaults:
    -    rules:
    -      authorization:
    -        "deny":
    -          opa:
    -            rego: "allow = false"
    -EOF
    -
    -

    Check that your auth policy was accepted by the controller as follows:

    -
    kubectl get authpolicy ${gatewayName}-auth -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}'
    -
    -

    Set the TLS policy

    -

    Set the TLSPolicy for your Gateway as follows:

    -
    kubectl apply -f - <<EOF
    -apiVersion: kuadrant.io/v1alpha1
    -kind: TLSPolicy
    -metadata:
    -  name: ${gatewayName}-tls
    -  namespace: ${gatewayNS}
    -spec:
    -  targetRef:
    -    name: ${gatewayName}
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -  issuerRef:
    -    group: cert-manager.io
    -    kind: ClusterIssuer
    -    name: ${clusterIssuerName}
    -EOF
    -
    -

    Check that your TLS policy was accepted by the controller as follows:

    -
    kubectl get tlspolicy ${gatewayName}-tls -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}'
    -
    -

    Set the rate limit policy

    -

    Set the default RateLimitPolicy for your Gateway as follows:

    -
    kubectl apply -f  - <<EOF
    -apiVersion: kuadrant.io/v1beta2
    -kind: RateLimitPolicy
    -metadata:
    -  name: ${gatewayName}-rlp
    -  namespace: ${gatewayNS}
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -    name: ${gatewayName}
    -  defaults:
    -    limits:
    -      "low-limit":
    -        rates:
    -
    -        - limit: 2
    -          duration: 10
    -          unit: second
    -EOF
    -
    -

    To check your rate limits have been accepted, enter the following command:

    -
    kubectl get ratelimitpolicy ${gatewayName}-rlp -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}'
    -
    -

    Set the DNS policy

    -

    Set the DNSPolicy for your Gateway as follows:

    -
    kubectl apply -f - <<EOF
    -apiVersion: kuadrant.io/v1alpha1
    -kind: DNSPolicy
    -metadata:
    -  name: ${gatewayName}-dnspolicy
    -  namespace: ${gatewayNS}
    -spec:
    -  routingStrategy: loadbalanced
    -  loadBalancing:
    -    geo: 
    -      defaultGeo: US 
    -    weighted:
    -      defaultWeight: 120 
    -  targetRef:
    -    name: ${gatewayName}
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -  providerRefs:
    -
    -  - name: aws-credentials
    -EOF
    -
    -

    NOTE: The DNSPolicy will use the DNS Provider Secret that you defined earlier.

    -

    Check that your DNSPolicy has been accepted as follows:

    -
    kubectl get dnspolicy ${gatewayName}-dnspolicy -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}'
    -
    -

    Create an HTTP route

    -

    Create an HTTPRoute for your Gateway as follows:

    -
    kubectl apply -f - <<EOF
    -apiVersion: gateway.networking.k8s.io/v1
    -kind: HTTPRoute
    -metadata:
    -  name: test
    -  namespace: ${gatewayNS}
    -spec:
    -  parentRefs:
    -
    -  - name: ${gatewayName}
    -    namespace: ${gatewayNS}
    -  hostnames:
    -  - "test.${rootDomain}"
    -  rules:
    -  - backendRefs:
    -    - name: toystore
    -      port: 80
    -EOF
    -
    -

    Check your Gateway policies are enforced as follows:

    -
    kubectl get dnspolicy ${gatewayName}-dnspolicy -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Enforced")].message}'
    -kubectl get authpolicy ${gatewayName}-auth -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Enforced")].message}'
    -kubectl get ratelimitpolicy ${gatewayName}-rlp -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Enforced")].message}'
    -
    -

    Check your listener is ready as follows:

    -
    kubectl get gateway ${gatewayName} -n ${gatewayNS} -o=jsonpath='{.status.listeners[0].conditions[?(@.type=="Programmed")].message}'
    -
    -

    Step 6 - Test connectivity and deny all auth

    -

    You can use curl to hit your endpoint. You should see a 403. Because this example uses Let's Encrypt staging, you can pass the -k flag:

    -
    curl -k -w "%{http_code}" https://$(kubectl get httproute test -n ${gatewayNS} -o=jsonpath='{.spec.hostnames[0]}')
    -
    -

    Step 7 - Opening up the Gateway for other namespaces

    -

    Because you have configured the Gateway, secured it with Kuadrant policies, and tested it, you can now open it up for use by other teams in other namespaces:

    -
    kubectl patch gateway ${gatewayName} -n ${gatewayNS} --type='json' -p='[{"op": "replace", "path": "/spec/listeners/0/allowedRoutes/namespaces/from", "value":"All"}]'
    -
    -

    Step 8 - Extending this Gateway to multiple clusters and configuring geo-based routing

    -

    To distribute this Gateway across multiple clusters, repeat this setup process for each cluster. By default, this will implement a round-robin DNS strategy to distribute traffic evenly across the different clusters. Setting up your Gateways to serve clients based on their geographic location is straightforward with your current configuration.

    -

    Assuming that you have deployed Gateway instances across multiple clusters as per this guide, the next step involves updating the DNS controller with the geographic regions of the visible Gateways.

    -

    For instance, if you have one cluster in North America and another in the EU, you can direct traffic to these Gateways based on their location by applying the appropriate labels:

    -

    For your North American cluster, enter the following command:

    -
    kubectl label --overwrite gateway ${gatewayName} kuadrant.io/lb-attribute-geo-code=US -n ${gatewayNS}
    -
    -

    Application developer workflow

    -

    This section of the walkthrough focuses on using an OpenAPI Specification (OAS) to define an API. You will use Kuadrant OAS extensions to specify the routing, authentication, and rate limiting requirements. Next, you will use the kuadrantctl tool to generate an AuthPolicy, an HTTPRoute, and a RateLimitPolicy, which you will then apply to your cluster to enforce the settings defined in your OAS.

    -

    NOTE: While this section uses the kuadrantctl tool, this is not essential. You can also create and apply an AuthPolicy, RateLimitPolicy, and HTTPRoute by using the oc or kubectl commands.

    -

    Prerequisites

    -
      -
    • You have installed kuadrantctl. You can find a compatible binary and download it from the kuadrantctl releases page.
    • -
    • You have the ability to distribute resources generated by kuadrantctl to multiple clusters, as though you are a platform engineer.
    • -
    -

    Step 1 - Deploy the toystore app

    -

    To begin, deploy a new version of the toystore app to a developer namespace as follows:

    -
    kubectl apply -f https://raw.githubusercontent.com/Kuadrant/Kuadrant-operator/main/examples/toystore/toystore.yaml -n ${devNS}
    -
    -

    Step 2 - Set up HTTPRoute and backend

    -

    Copy at least one of the following example OAS to a local location:

    - -

    Set up some new environment variables as follows:

    -
    export oasPath=examples/oas-apikey.yaml
    -# Ensure you still have these environment variables setup from the start of this guide:
    -export rootDomain=example.com
    -export gatewayNS=api-gateway
    -
    -

    Step 3 - Use OAS to define your HTTPRoute rules

    -

    You can generate Kuadrant and Gateway API resources directly from OAS documents by using an x-kuadrant extension.

    -

    NOTE: For a more in-depth look at the OAS extension, see the kuadrantctl documentation.

    -

    You will use kuadrantctl to generate your HTTPRoute.

    -

    NOTE: The sample OAS has some placeholders for namespaces and domains. You will inject valid values into these placeholders based on your previous environment variables.

    -

    Generate the resource from your OAS as follows, (envsubst will replace the placeholders):

    -
    cat $oasPath | envsubst | kuadrantctl generate gatewayapi httproute --oas - | kubectl apply -f -
    -
    -
    kubectl get httproute toystore -n ${devNS} -o=yaml
    -
    -

    You should see that this route is affected by the AuthPolicy and RateLimitPolicy defined as defaults on the Gateway in the Gateway namespace.

    -
    - lastTransitionTime: "2024-04-26T13:37:43Z"
    -        message: Object affected by AuthPolicy demo/external
    -        observedGeneration: 2
    -        reason: Accepted
    -        status: "True"
    -        type: kuadrant.io/AuthPolicyAffected
    -- lastTransitionTime: "2024-04-26T14:07:28Z"
    -        message: Object affected by RateLimitPolicy demo/external
    -        observedGeneration: 1
    -        reason: Accepted
    -        status: "True"
    -        type: kuadrant.io/RateLimitPolicyAffected        
    -
    -

    Step 4 - Test connectivity and deny-all auth

    -

    You can use curl to hit an endpoint in the toystore app. Because you are using Let's Encrypt staging in this example, you can pass the -k flag as follows:

    -
    curl -s -k -o /dev/null -w "%{http_code}" "https://$(kubectl get httproute toystore -n ${devNS} -o=jsonpath='{.spec.hostnames[0]}')/v1/toys"
    -
    -

    You are getting a 403 because of the existing default, deny-all AuthPolicy applied at the Gateway. You can override this for your HTTPRoute.

    -

    Choose one of the following options:

    -
      -
    • API key auth flow
    • -
    • OpenID Connect auth flow
    • -
    -

    Step 5 - Set up API key auth flow

    -

    Set up an example API key in each cluster as follows:

    -
    kubectl apply -f - <<EOF
    -apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: toystore-api-key
    -  namespace: ${devNS}
    -  labels:
    -    authorino.kuadrant.io/managed-by: authorino
    -    kuadrant.io/apikeys-by: api_key
    -stringData:
    -  api_key: secret
    -type: Opaque
    -EOF
    -
    -

    Next, generate an AuthPolicy that uses secrets in your cluster as API keys as follows:

    -
    cat $oasPath | envsubst | kuadrantctl generate kuadrant authpolicy --oas -
    -
    -

    From this, you can see an AuthPolicy generated based on your OAS that will look for API keys in secrets labeled api_key and look for that key in the header api_key. You can now apply this to the Gateway as follows:

    -
    cat $oasPath | envsubst | kuadrantctl generate kuadrant authpolicy --oas -  | kubectl apply -f -
    -
    -

    You should get a 200 from the following GET because it has no auth requirement:

    -
    curl -s -k -o /dev/null -w "%{http_code}" "https://$(kubectl get httproute toystore -n ${devNS} -o=jsonpath='{.spec.hostnames[0]}')/v1/toys"
    -
    -

    You should get a 401 for the following POST request because it does not have any auth requirements:

    -
    curl -XPOST -s -k -o /dev/null -w "%{http_code}" "https://$(kubectl get httproute toystore -n ${devNS} -o=jsonpath='{.spec.hostnames[0]}')/v1/toys"
    -
    -

    Finally, if you add your API key header, with a valid key as follows, you should get a 200 response:

    -
    curl -XPOST -H 'api_key: secret' -s -k -o /dev/null -w "%{http_code}" "https://$(kubectl get httproute toystore -n ${devNS} -o=jsonpath='{.spec.hostnames[0]}')/v1/toys"
    -
    -

    Optional: Step 6 - Set up OpenID Connect auth flow (skip if using API key only)

    -

    This section of the walkthrough uses the kuadrantctl tool to create an AuthPolicy that integrates with an OpenID provider and a RateLimitPolicy that leverages JWT values for per-user rate limiting. It is important to note that OpenID requires an external provider. Therefore, you should adapt the following example to suit your specific needs and provider.

    -

    The platform engineer workflow established default policies for authentication and rate limiting at your Gateway. The new developer-defined policies, which you will create, are intended to target your HTTPRoute and will supersede the existing policies for requests to your API endpoints, similar to your previous API key example.

    -

    The example OAS uses Kuadrant-based extensions. These extensions enable you to define routing and service protection requirements. For more details, see OpenAPI Kuadrant extensions.

    -

    Prerequisites

    - -

    Set up an OpenID AuthPolicy

    -

    Set the following environment variables:

    -
    export openIDHost=some.keycloak.com
    -export oasPath=examples/oas-oidc.yaml
    -
    -

    NOTE: The sample OAS has some placeholders for namespaces and domains. You will inject valid values into these placeholders based on your previous environment variables.

    -

    You can use your OAS and kuadrantctl to generate an AuthPolicy to replace the default on the Gateway as follows:

    -
    cat $oasPath | envsubst | kuadrantctl generate kuadrant authpolicy --oas -
    -
    -

    If you are happy with the generated resource, you can apply it to the cluster as follows:

    -
    cat $oasPath | envsubst | kuadrantctl generate kuadrant authpolicy --oas - | kubectl apply -f -
    -
    -

    You should see in the status of the AuthPolicy that it has been accepted and enforced:

    -
    kubectl get authpolicy -n ${devNS} toystore -o=jsonpath='{.status.conditions}'
    -
    -

    On your HTTPRoute, you should also see it now affected by this AuthPolicy in the toystore namespace:

    -
    kubectl get httproute toystore -n ${devNS} -o=jsonpath='{.status.parents[0].conditions[?(@.type=="kuadrant.io/AuthPolicyAffected")].message}'
    -
    -

    Test your OpenID AuthPolicy

    -

    You can test your AuthPolicy as follows:

    -
    export ACCESS_TOKEN=$(curl -k -H "Content-Type: application/x-www-form-urlencoded" \
    -        -d 'grant_type=password' \
    -        -d 'client_id=toystore' \
    -        -d 'scope=openid' \
    -        -d 'username=bob' \
    -        -d 'password=p' "https://${openIDHost}/auth/realms/toystore/protocol/openid-connect/token" | jq -r '.access_token')
    -
    -
    curl -k -XPOST --write-out '%{http_code}\n' --silent --output /dev/null "https://$(kubectl get httproute toystore -n ${devNS} -o=jsonpath='{.spec.hostnames[0]}')/v1/toys"
    -
    -

    You should see a 401 response code. Make a request with a valid bearer token as follows:

    -
    curl -k -XPOST --write-out '%{http_code}\n' --silent --output /dev/null -H "Authorization: Bearer $ACCESS_TOKEN" "https://$(kubectl get httproute toystore -n ${devNS} -o=jsonpath='{.spec.hostnames[0]}')/v1/toys"
    -
    -

    You should see a 200 response code.

    -

    Step 7 - Set up rate limiting

    -

    Lastly, you can generate your RateLimitPolicy to add your rate limits, based on your OAS file. Rate limiting is simplified for this walkthrough and is based on either the bearer token or the API key value. There are more advanced examples in the How-to guides on the Kuadrant documentation site, for example: Authenticated rate limiting with JWTs and Kubernetes RBAC.

    -

    You can continue to use this sample OAS document, which includes both authentication and a rate limit:

    -
    export oasPath=examples/oas-oidc.yaml
    -
    -

    Again, you should see the rate limit policy accepted and enforced:

    -
    kubectl get ratelimitpolicy -n ${devNS} toystore -o=jsonpath='{.status.conditions}'
    -
    -

    On your HTTRoute, you should now see it is affected by the RateLimitPolicy in the same namespace:

    -
    kubectl get httproute toystore -n ${devNS} -o=jsonpath='{.status.parents[0].conditions[?(@.type=="kuadrant.io/RateLimitPolicyAffected")].message}'
    -
    -

    Test your RateLimitPolicy

    -

    You can now test your rate limiting as follows:

    -

    NOTE: You might need to wait a minute for the new rate limits to be applied. With the following requests, you should see a number of 429 responses.

    -
    API Key auth
    -
    for i in {1..3}
    -do
    -printf "request $i "
    -curl -XPOST -H 'api_key:secret' -s -k -o /dev/null -w "%{http_code}"  "https://$(kubectl get httproute toystore -n ${devNS} -o=jsonpath='{.spec.hostnames[0]}')/v1/toys"
    -printf "\n -- \n"
    -done 
    -
    -
    OpenID Connect auth
    -
    export ACCESS_TOKEN=$(curl -k -H "Content-Type: application/x-www-form-urlencoded" \
    -        -d 'grant_type=password' \
    -        -d 'client_id=toystore' \
    -        -d 'scope=openid' \
    -        -d 'username=bob' \
    -        -d 'password=p' "https://${openIDHost}/auth/realms/toystore/protocol/openid-connect/token" | jq -r '.access_token')
    -
    -
    for i in {1..3}
    -do
    -curl -k -XPOST --write-out '%{http_code}\n' --silent --output /dev/null -H "Authorization: Bearer $ACCESS_TOKEN" https://$(kubectl get httproute toystore -n ${devNS}-o=jsonpath='{.spec.hostnames[0]}')/v1/toys
    -done
    -
    -

    Conclusion

    -

    You have completed the secure, protect, and connect walkthrough. To learn more about Kuadrant, visit https://docs.kuadrant.io.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/user-guides/secure-protect-connect/index.html b/0.10.0/kuadrant-operator/doc/user-guides/secure-protect-connect/index.html deleted file mode 100644 index 0e81d7faf..000000000 --- a/0.10.0/kuadrant-operator/doc/user-guides/secure-protect-connect/index.html +++ /dev/null @@ -1,3968 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Secure, connect and protect - Kubernetes - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Secure, protect, and connect services with Kuadrant on Kubernetes

    -

    Prerequisites

    - -

    Overview

    -

    In this guide, we will cover the different policies from Kuadrant and how you can use them to secure, protect and connect an Istio-controlled gateway in a single cluster, and how you can set more refined protection on the HTTPRoutes exposed by that gateway.

    -

    Here are the steps we will go through:

    -

    1) Deploy a sample application

    -

    2) Define a new Gateway

    -

    3) Ensure TLS-based secure connectivity to the gateway with a TLSPolicy

    -

    4) Define a default RateLimitPolicy to set some infrastructure limits on your gateway

    -

    5) Define a default AuthPolicy to deny all access to the gateway

    -

    6) Define a DNSPolicy to bring traffic to the gateway

    -

    7) Override the Gateway's deny-all AuthPolicy with an endpoint-specific policy

    -

    8) Override the Gateway rate limits with an endpoint-specific policy

    -

    You will need to set the KUBECTL_CONTEXT environment variable for the kubectl context of the cluster you are targeting. -If you have followed the single cluster setup, it should be something like below. -Adjust the name of the cluster accordingly to match the kubernetes cluster you are targeting. -You can get the current context with kubectl config current-context

    -
    # Typical single cluster context
    -export KUBECTL_CONTEXT=kind-kuadrant-local
    -
    -# Example context for additional 'multi cluster' clusters
    -# export KUBECTL_CONTEXT=kind-kuadrant-local-1
    -
    -

    To help with this walk through, you should also set a KUADRANT_ZONE_ROOT_DOMAIN environment variable to a domain you want to use. If you want to try DNSPolicy, this should also be a domain you have access to the DNS for in AWS Route53 or GCP. E.g.:

    -
    export KUADRANT_ZONE_ROOT_DOMAIN=my.domain.iown
    -
    -

    ❶ Deploy the example app we will serve via our gateway

    -
    kubectl --context $KUBECTL_CONTEXT apply -f https://raw.githubusercontent.com/Kuadrant/kuadrant-operator/main/examples/toystore/toystore.yaml
    -
    -

    ❷ Define a new Istio-managed gateway

    -
    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF
    -apiVersion: gateway.networking.k8s.io/v1
    -kind: Gateway
    -metadata:
    -  name: api-gateway
    -  namespace: kuadrant-system
    -spec:
    -  gatewayClassName: istio
    -  listeners:
    -
    -  - allowedRoutes:
    -      namespaces:
    -        from: All
    -    name: api
    -    hostname: "*.$KUADRANT_ZONE_ROOT_DOMAIN"
    -    port: 443
    -    protocol: HTTPS
    -    tls:
    -      mode: Terminate
    -      certificateRefs:
    -        - name: apps-hcpapps-tls
    -          kind: Secret
    -EOF
    -
    -

    If you take a look at the gateway status, you will see a TLS status error similar to the following:

    -
    message: invalid certificate reference /Secret/apps-hcpapps-tls. secret kuadrant-system/apps-hcpapps-tls not found
    -
    -

    This is because currently there is not a TLS secret in place. Let's fix that by creating a TLSPolicy.

    -

    ❸ Define the TLSPolicy

    -
    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF
    -apiVersion: kuadrant.io/v1alpha1
    -kind: TLSPolicy
    -metadata:
    -  name: api-gateway-tls
    -  namespace: kuadrant-system
    -spec:
    -  targetRef:
    -    name: api-gateway
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -  issuerRef:
    -    group: cert-manager.io
    -    kind: ClusterIssuer
    -    name: kuadrant-operator-glbc-ca
    -EOF
    -
    -
    -

    Note: You may have to create a cluster issuer in the Kubernetes cluster, depending on if one was created during your initial cluster setup or not. Here is an example of how to create a self-signed CA as a cluster issuer.

    -
    -
    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF
    -apiVersion: cert-manager.io/v1
    -kind: ClusterIssuer
    -metadata:
    -  name: kuadrant-operator-glbc-ca
    -spec:
    -  selfSigned: {}
    -EOF
    -
    -

    The TLSPolicy should eventually have an Accepted condition.

    -
    kubectl --context $KUBECTL_CONTEXT wait tlspolicy api-gateway-tls -n kuadrant-system --for=condition=accepted
    -
    -

    Now, if you look at the status of the gateway, you will see the error is gone, and the status of the policy will report the listener as now secured with a TLS certificate and the gateway as affected by the TLS policy.

    -

    Our communication with our gateway is now secured via TLS. Note that any new listeners will also be handled by the TLSPolicy.

    -

    Let's define a HTTPRoute and test our policy. We will re-use this later on with some of the other policies as well.

    -
    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF
    -apiVersion: gateway.networking.k8s.io/v1beta1
    -kind: HTTPRoute
    -metadata:
    -  name: toystore
    -  labels:
    -    deployment: toystore
    -    service: toystore
    -spec:
    -  parentRefs:
    -
    -  - name: api-gateway
    -    namespace: kuadrant-system
    -  hostnames:
    -  - "api.$KUADRANT_ZONE_ROOT_DOMAIN"
    -  rules:
    -  - matches:
    -    - method: GET
    -      path:
    -        type: PathPrefix
    -        value: "/cars"
    -    - method: GET
    -      path:
    -        type: PathPrefix
    -        value: "/dolls"
    -    backendRefs:
    -    - name: toystore
    -      port: 80
    -  - matches:
    -    - path:
    -        type: PathPrefix
    -        value: "/admin"
    -    backendRefs:
    -    - name: toystore
    -      port: 80
    -EOF
    -
    -

    With this HTTPRoute in place, the service we deployed is exposed via the gateway. We should be able to access our endpoint via HTTPS:

    -
    export INGRESS_HOST=$(kubectl --context $KUBECTL_CONTEXT get gtw api-gateway -o jsonpath='{.status.addresses[0].value}' -n kuadrant-system)
    -
    -curl -k --resolve api.${KUADRANT_ZONE_ROOT_DOMAIN}:443:${INGRESS_HOST} "https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars"
    -
    -

    ❹ Define Infrastructure Rate Limiting

    -

    We have a secure communication in place. However, there is nothing limiting users from overloading our infrastructure and service components that will sit behind this gateway. Let's add a rate limiting layer to protect our services and infrastructure.

    -
    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta2
    -kind: RateLimitPolicy
    -metadata:
    -  name: infra-ratelimit
    -  namespace: kuadrant-system
    -spec:
    -  targetRef:
    -    name: api-gateway
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -  limits:
    -    "global":
    -      rates:
    -
    -      - limit: 5
    -        duration: 10
    -        unit: second
    -EOF
    -
    -kubectl --context $KUBECTL_CONTEXT wait ratelimitpolicy infra-ratelimit -n kuadrant-system --for=condition=accepted
    -
    -
    -

    Note: It may take a couple of minutes for the RateLimitPolicy to be applied depending on your cluster.

    -
    -

    The limit here is artificially low in order for us to show it working easily. Let's test it with our endpoint:

    -
    for i in {1..10}; do curl -k --resolve api.${KUADRANT_ZONE_ROOT_DOMAIN}:443:${INGRESS_HOST} "https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars" && sleep 1; done
    -
    -

    We should see 409 Too Many Requestss start returning after the 5th request.

    -

    ❺ Define the Gateway AuthPolicy

    -

    Communication is secured and we have some protection for our infrastructure, but we do not trust any client to access our endpoints. By default, we want to allow only authenticated access. To protect our gateway, we will add a deny-all AuthPolicy. Later, we will override this with a more specific AuthPolicy for the API.

    -
    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta2
    -kind: AuthPolicy
    -metadata:
    -  name: deny-all
    -  namespace: kuadrant-system
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -    name: api-gateway
    -  rules:
    -    authorization:
    -      deny-all:
    -        opa:
    -          rego: "allow = false"
    -    response:
    -      unauthorized:
    -        headers:
    -          "content-type":
    -            value: application/json
    -        body:
    -          value: |
    -            {
    -              "error": "Forbidden",
    -              "message": "Access denied by default by the gateway operator. If you are the administrator of the service, create a specific auth policy for the route."
    -            }
    -EOF
    -
    -

    Let's test it again. This time we expect a 403 Forbidden.

    -
    curl -k --resolve api.${KUADRANT_ZONE_ROOT_DOMAIN}:443:${INGRESS_HOST}  "https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars"
    -
    -

    ❻ Define the DNSPolicy

    -

    (Skip this step if you did not configure a DNS provider during the setup.)

    -

    Now, we have our gateway protected and communications secured. We are ready to configure DNS, so it is easy for clients to connect and access the APIs we intend to expose via this gateway.

    -
    -

    Note: You may need to create a DNS Provider Secret resource depending on if one was created during your initial cluster setup or not. You should have an aws-credentials Secret already created in the kuadrant-system namespace. However, if it doesn't exist, you can follow these commands to create one:

    -
    -
    export AWS_ACCESS_KEY_ID=xxxxxxx # Key ID from AWS with Route 53 access
    -export AWS_SECRET_ACCESS_KEY=xxxxxxx # Access key from AWS with Route 53 access
    -
    -kubectl -n kuadrant-system create secret generic aws-credentials \
    -  --type=kuadrant.io/aws \
    -  --from-literal=AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
    -  --from-literal=AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
    -
    -

    Next, create the DNSPolicy:

    -
    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF
    -apiVersion: kuadrant.io/v1alpha1
    -kind: DNSPolicy
    -metadata:
    -  name: simple-dnspolicy
    -  namespace: kuadrant-system
    -spec:
    -  routingStrategy: simple
    -  targetRef:
    -    name: api-gateway
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -  providerRefs:
    -
    -  - name: aws-credentials
    -EOF
    -
    -kubectl --context $KUBECTL_CONTEXT wait dnspolicy simple-dnspolicy -n kuadrant-system --for=condition=enforced
    -
    -

    If you want to see the DNSRecord created by the this policy, execute the following command:

    -
    kubectl --context $KUBECTL_CONTEXT get dnsrecord.kuadrant.io api-gateway-api -n kuadrant-system -o=yaml
    -
    -

    So now we have a wildcard DNS record to bring traffic to our gateway.

    -

    Let's test it again. This time we expect a 403 still as the deny-all policy is still in effect. Notice we no longer need to set the Host header directly.

    -
    -

    Note: If you have followed through this guide on more than 1 cluster, the DNS record for the HTTPRoute hostname will have multiple IP addresses. This means that requests will be made in a round robin pattern across clusters as your DNS provider sends different responses to lookups. You may need to send multiple requests before one hits the cluster you are currently configuring.

    -
    -
    curl -k "https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars" -i
    -
    -

    ❼ Override the Gateway's deny-all AuthPolicy

    -

    Next, we are going to allow authenticated access to our Toystore API. To do this, we will define an AuthPolicy that targets the HTTPRoute. Note that any new HTTPRoutes will still be affected by the gateway-level policy, but as we want users to now access this API, we need to override that policy. For simplicity, we will use API keys to authenticate the requests, though many other options are available.

    -

    Let's define an API Key for users bob and alice.

    -
    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF
    -apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: bob-key
    -  labels:
    -    authorino.kuadrant.io/managed-by: authorino
    -    app: toystore
    -  annotations:
    -    secret.kuadrant.io/user-id: bob
    -stringData:
    -  api_key: IAMBOB
    -type: Opaque
    ----
    -apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: alice-key
    -  labels:
    -    authorino.kuadrant.io/managed-by: authorino
    -    app: toystore
    -  annotations:
    -    secret.kuadrant.io/user-id: alice
    -stringData:
    -  api_key: IAMALICE
    -type: Opaque
    -EOF
    -
    -

    Now, we will override the AuthPolicy to start accepting the API keys:

    -
    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta2
    -kind: AuthPolicy
    -metadata:
    -  name: toystore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: toystore
    -  rules:
    -    authentication:
    -      "api-key-users":
    -        apiKey:
    -          selector:
    -            matchLabels:
    -              app: toystore
    -        credentials:
    -          authorizationHeader:
    -            prefix: APIKEY
    -    response:
    -      success:
    -        dynamicMetadata:
    -          "identity":
    -            json:
    -              properties:
    -                "userid":
    -                  selector: auth.identity.metadata.annotations.secret\.kuadrant\.io/user-id
    -EOF
    -
    -

    ❽ Override the Gateway's RateLimitPolicy

    -

    The gateway limits are a good set of limits for the general case, but as the developers of this API we know that we only want to allow a certain number of requests to specific users, and a general limit for all other users.

    -
    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta2
    -kind: RateLimitPolicy
    -metadata:
    -  name: toystore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: toystore
    -  limits:
    -    "general-user":
    -      rates:
    -
    -      - limit: 1
    -        duration: 3
    -        unit: second
    -      counters:
    -      - metadata.filter_metadata.envoy\.filters\.http\.ext_authz.identity.userid
    -      when:
    -      - selector: metadata.filter_metadata.envoy\.filters\.http\.ext_authz.identity.userid
    -        operator: neq
    -        value: bob
    -    "bob-limit":
    -      rates:
    -      - limit: 2
    -        duration: 3
    -        unit: second
    -      when:
    -      - selector: metadata.filter_metadata.envoy\.filters\.http\.ext_authz.identity.userid
    -        operator: eq
    -        value: bob
    -EOF
    -
    -
    -

    Note: It may take a couple of minutes for the RateLimitPolicy to be applied depending on your cluster.

    -
    -

    As just another example, we have given bob twice as many requests to use compared to everyone else.

    -

    Let's test this new setup.

    -

    By sending requests as alice:

    -
    while :; do curl -k --resolve api.${KUADRANT_ZONE_ROOT_DOMAIN}:443:${INGRESS_HOST} --write-out '%{http_code}\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMALICE' "https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars" | grep -E --color "\b(429)\b|$"; sleep 1; done
    -
    -

    By sending requests as bob:

    -
    while :; do curl -k --resolve api.${KUADRANT_ZONE_ROOT_DOMAIN}:443:${INGRESS_HOST} --write-out '%{http_code}\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMBOB' "https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars" | grep -E --color "\b(429)\b|$"; sleep 1; done
    -
    -
    -

    Note: If you configured a DNS provider during the setup and defined the DNSPolicy as described in one of the previous chapters you can omit the --resolve api.${KUADRANT_ZONE_ROOT_DOMAIN}:443:${INGRESS_HOST} flag.

    -

    Note: If you have followed through this guide on more than 1 cluster, the DNS record for the HTTPRoute hostname will have multiple IP addresses. This means that requests will be made in a round robin pattern across clusters as your DNS provider sends different responses to lookups.

    -
    -
    while :; do curl -k --write-out '%{http_code}\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMALICE' "https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars" | grep -E --color "\b(429)\b|$"; sleep 1; done
    -
    -
    while :; do curl -k --write-out '%{http_code}\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMBOB' "https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars" | grep -E --color "\b(429)\b|$"; sleep 1; done
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/doc/user-guides/simple-rl-for-app-developers/index.html b/0.10.0/kuadrant-operator/doc/user-guides/simple-rl-for-app-developers/index.html deleted file mode 100644 index 6e4664247..000000000 --- a/0.10.0/kuadrant-operator/doc/user-guides/simple-rl-for-app-developers/index.html +++ /dev/null @@ -1,3541 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Simple Rate Limiting for Application Developers - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    - -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Simple Rate Limiting for Application Developers

    -

    This user guide walks you through an example of how to configure rate limiting for an endpoint of an application using Kuadrant.

    -


    -

    In this guide, we will rate limit a sample REST API called Toy Store. In reality, this API is just an echo service that echoes back to the user whatever attributes it gets in the request. The API listens to requests at the hostname api.toystore.com, where it exposes the endpoints GET /toys* and POST /toys, respectively, to mimic a operations of reading and writing toy records.

    -

    We will rate limit the POST /toys endpoint to a maximum of 5rp10s ("5 requests every 10 seconds").

    -


    -

    Run the steps ① → ③

    -

    ① Setup

    -

    This step uses tooling from the Kuadrant Operator component to create a containerized Kubernetes server locally using Kind, -where it installs Istio, Kubernetes Gateway API and Kuadrant itself.

    -
    -

    Note: In production environment, these steps are usually performed by a cluster operator with administrator privileges over the Kubernetes cluster.

    -
    -

    Clone the project:

    -
    git clone https://github.com/Kuadrant/kuadrant-operator && cd kuadrant-operator
    -
    -

    Setup the environment:

    -
    make local-setup
    -
    -

    Request an instance of Kuadrant:

    -
    kubectl -n kuadrant-system apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta1
    -kind: Kuadrant
    -metadata:
    -  name: kuadrant
    -spec: {}
    -EOF
    -
    -

    ② Deploy the Toy Store API

    -

    Create the deployment:

    -
    kubectl apply -f examples/toystore/toystore.yaml
    -
    -

    Create a HTTPRoute to route traffic to the service via Istio Ingress Gateway:

    -

    -
    kubectl apply -f - <<EOF
    -apiVersion: gateway.networking.k8s.io/v1
    -kind: HTTPRoute
    -metadata:
    -  name: toystore
    -spec:
    -  parentRefs:
    -
    -  - name: istio-ingressgateway
    -    namespace: istio-system
    -  hostnames:
    -  - api.toystore.com
    -  rules:
    -  - matches:
    -    - method: GET
    -      path:
    -        type: PathPrefix
    -        value: "/toys"
    -    backendRefs:
    -    - name: toystore
    -      port: 80
    -  - matches: # it has to be a separate HTTPRouteRule so we do not rate limit other endpoints
    -    - method: POST
    -      path:
    -        type: Exact
    -        value: "/toys"
    -    backendRefs:
    -    - name: toystore
    -      port: 80
    -EOF
    -
    -

    Export the gateway hostname and port:

    -
    export INGRESS_HOST=$(kubectl get gtw istio-ingressgateway -n istio-system -o jsonpath='{.status.addresses[0].value}')
    -export INGRESS_PORT=$(kubectl get gtw istio-ingressgateway -n istio-system -o jsonpath='{.spec.listeners[?(@.name=="http")].port}')
    -export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
    -
    -

    Verify the route works:

    -
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/toys -i
    -# HTTP/1.1 200 OK
    -
    -
    -

    Note: If the command above fails to hit the Toy Store API on your environment, try forwarding requests to the service and accessing over localhost:

    -

    kubectl port-forward -n istio-system service/istio-ingressgateway-istio 9080:80 >/dev/null 2>&1 &
    -export GATEWAY_URL=localhost:9080
    -
    -
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/toys -i
    -# HTTP/1.1 200 OK
    -

    -
    -

    ③ Enforce rate limiting on requests to the Toy Store API

    -

    Create a Kuadrant RateLimitPolicy to configure rate limiting:

    -

    -
    kubectl apply -f - <<EOF
    -apiVersion: kuadrant.io/v1beta2
    -kind: RateLimitPolicy
    -metadata:
    -  name: toystore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: toystore
    -  limits:
    -    "create-toy":
    -      rates:
    -
    -      - limit: 5
    -        duration: 10
    -        unit: second
    -      routeSelectors:
    -      - matches: # selects the 2nd HTTPRouteRule of the targeted route
    -        - method: POST
    -          path:
    -            type: Exact
    -            value: "/toys"
    -EOF
    -
    -
    -

    Note: It may take a couple of minutes for the RateLimitPolicy to be applied depending on your cluster.

    -
    -


    -

    Verify the rate limiting works by sending requests in a loop.

    -

    Up to 5 successful (200 OK) requests every 10 seconds to POST /toys, then 429 Too Many Requests:

    -
    while :; do curl --write-out '%{http_code}\n' --silent --output /dev/null -H 'Host: api.toystore.com' http://$GATEWAY_URL/toys -X POST | grep -E --color "\b(429)\b|$"; sleep 1; done
    -
    -

    Unlimited successful (200 OK) to GET /toys:

    -
    while :; do curl --write-out '%{http_code}\n' --silent --output /dev/null -H 'Host: api.toystore.com' http://$GATEWAY_URL/toys | grep -E --color "\b(429)\b|$"; sleep 1; done
    -
    -

    Cleanup

    -
    make local-cleanup
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/examples/alerts/index.html b/0.10.0/kuadrant-operator/examples/alerts/index.html deleted file mode 100644 index c8a75c5b7..000000000 --- a/0.10.0/kuadrant-operator/examples/alerts/index.html +++ /dev/null @@ -1,3492 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Index - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Index

    - -

    SLO Multi burn rate multi window alerts

    -

    Kuadrant have created two example SLO alerts to help give ideas on the types of SLO alerts that could be used with the operator. We have created one alert for latency and one for availability, both are Multiwindow, Multi-Burn-Rate Alerts. The alerts show a scenario where a 28d rolling window is used and a uptime of 99.95% i.e only 0.05% error budget margin is desired. This in real world time would be downtime of around:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Time FrameDuration
    Daily:43s
    Weekly:5m 2.4s
    Monthly:21m 44s
    Quarterly:1h 5m 12s
    Yearly:4h 20m 49s
    -

    These values can be changed to suit different scenarios

    -

    Sloth

    -

    Sloth is a tool to aid in the creation of multi burn rate and multi window SLO alerts and was used to create both the availability and latency alerts. It follows the common standard set out by Google's SRE book. Sloth generates alerts based on specific specs given. The specs for our example alerts can be found in the example/sloth folder.

    -

    Metrics used for the alerts

    -

    Availability

    -

    For the availability SLO alerts the Istio metric istio_requests_total was used as its a counter type metric meaning the values can only increase as well as it gives information on all requests handled by the Istio proxy.

    -

    Latency

    -

    For the availability SLO alerts the Istio metric istio_request_duration_milliseconds was used as its a Histogram.

    -

    Sloth generation

    -

    You can modify the examples Sloth specs we have and regenerate the prometheus rules using the Sloth CLI and the generate command. For more information please the Sloth website

    -

    sloth generate -i examples/alerts/sloth/latency.yaml --default-slo-period=28d
    -
    -You can also use the make target to generate the rules to.

    -
    make sloth-generate
    -
    -

    Prometheus unit tests

    -

    There are also two matching unit tests to verify and test the alerts that Sloth has generated. These can be run using the make target:

    -
    make test-alerts
    -
    -

    Note: The prometheus unit tests will also run via Github actions when a change is made in the alerts file.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrant-operator/examples/alerts/kustomization.yaml b/0.10.0/kuadrant-operator/examples/alerts/kustomization.yaml deleted file mode 100644 index bbdda37bd..000000000 --- a/0.10.0/kuadrant-operator/examples/alerts/kustomization.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -resources: - - prometheusrules_policies_missing.yaml - - slo-availability.yaml - - slo-latency.yaml diff --git a/0.10.0/kuadrant-operator/examples/alerts/prometheusrules_policies_missing.yaml b/0.10.0/kuadrant-operator/examples/alerts/prometheusrules_policies_missing.yaml deleted file mode 100644 index 3622b7962..000000000 --- a/0.10.0/kuadrant-operator/examples/alerts/prometheusrules_policies_missing.yaml +++ /dev/null @@ -1,57 +0,0 @@ -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: policies-missing - namespace: monitoring -spec: - groups: - - name: policy-rules - rules: - - alert: GatewayWithoutDnsPolicy - expr: | - label_replace(gatewayapi_gateway_info, "gateway_name", "$1", "name", "(.*)") unless - (label_replace(gatewayapi_gateway_info, "gateway_name", "$1", "name", "(.*)") - * on(gateway_name) group_left - label_replace(gatewayapi_dnspolicy_target_info{target_kind="Gateway"}, "gateway_name", "$1", "target_name", "(.*)")) - for: 5m - labels: - severity: warning - annotations: - summary: "No DNSPolicy targeting Gateway '{{ $labels.gateway_name }}'" - description: "This alert fires if a gateway does not have an associated DNSPolicy." - - alert: GatewayWithoutTlsPolicy - expr: | - label_replace(gatewayapi_gateway_info, "gateway_name", "$1", "name", "(.*)") unless - (label_replace(gatewayapi_gateway_info, "gateway_name", "$1", "name", "(.*)") - * on(gateway_name) group_left - label_replace(gatewayapi_tlspolicy_target_info{target_kind="Gateway"}, "gateway_name", "$1", "target_name", "(.*)")) - for: 5m - labels: - severity: warning - annotations: - summary: "No TLSPolicy targeting Gateway '{{ $labels.gateway_name }}'" - description: "This alert fires if a gateway does not have an associated TLSPolicy." - - alert: HTTPRouteWithoutAuthPolicy - expr: | - label_replace(gatewayapi_httproute_created, "httproute_name", "$1", "name", "(.*)") unless - (label_replace(gatewayapi_httproute_created, "httproute_name", "$1", "name", "(.*)") - * on(httproute_name) group_left - label_replace(gatewayapi_authpolicy_target_info{target_kind="HTTPRoute"}, "httproute_name", "$1", "target_name", "(.*)")) - for: 5m - labels: - severity: warning - annotations: - summary: "No AuthPolicy targeting HTTPRoute '{{ $labels.httproute_name }}'" - description: "This alert fires if a HTTPRoute does not have an associated AuthPolicy." - - alert: HTTPRouteWithoutRateLimitPolicy - expr: | - label_replace(gatewayapi_httproute_created, "httproute_name", "$1", "name", "(.*)") unless - (label_replace(gatewayapi_httproute_created, "httproute_name", "$1", "name", "(.*)") - * on(httproute_name) group_left - label_replace(gatewayapi_ratelimitpolicy_target_info{target_kind="HTTPRoute"}, "httproute_name", "$1", "target_name", "(.*)")) - for: 5m - labels: - severity: warning - annotations: - summary: "No RateLimitPolicy targeting HTTPRoute '{{ $labels.httproute_name }}'" - description: "This alert fires if a HTTPRoute does not have an associated RateLimitPolicy." diff --git a/0.10.0/kuadrant-operator/examples/alerts/slo-availability.yaml b/0.10.0/kuadrant-operator/examples/alerts/slo-availability.yaml deleted file mode 100644 index 3263bc611..000000000 --- a/0.10.0/kuadrant-operator/examples/alerts/slo-availability.yaml +++ /dev/null @@ -1,212 +0,0 @@ - ---- -# Code generated by Sloth (v0.11.0): https://github.com/slok/sloth. -# DO NOT EDIT. - -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - creationTimestamp: null - labels: - app.kubernetes.io/component: SLO - app.kubernetes.io/managed-by: sloth - name: availability-slo - namespace: monitoring -spec: - groups: - - name: sloth-slo-sli-recordings-kuadrant-requests-availability - rules: - - expr: | - (sum(rate(istio_requests_total{job="ingress-metrics-proxy",response_code=~"5.*"}[5m])) by (request_host)) - / - (sum(rate(istio_requests_total{job="ingress-metrics-proxy"}[5m]) )by (request_host)) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-availability - sloth_service: kuadrant - sloth_slo: requests-availability - sloth_window: 5m - record: slo:sli_error:ratio_rate5m - - expr: | - (sum(rate(istio_requests_total{job="ingress-metrics-proxy",response_code=~"5.*"}[30m])) by (request_host)) - / - (sum(rate(istio_requests_total{job="ingress-metrics-proxy"}[30m]) )by (request_host)) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-availability - sloth_service: kuadrant - sloth_slo: requests-availability - sloth_window: 30m - record: slo:sli_error:ratio_rate30m - - expr: | - (sum(rate(istio_requests_total{job="ingress-metrics-proxy",response_code=~"5.*"}[1h])) by (request_host)) - / - (sum(rate(istio_requests_total{job="ingress-metrics-proxy"}[1h]) )by (request_host)) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-availability - sloth_service: kuadrant - sloth_slo: requests-availability - sloth_window: 1h - record: slo:sli_error:ratio_rate1h - - expr: | - (sum(rate(istio_requests_total{job="ingress-metrics-proxy",response_code=~"5.*"}[2h])) by (request_host)) - / - (sum(rate(istio_requests_total{job="ingress-metrics-proxy"}[2h]) )by (request_host)) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-availability - sloth_service: kuadrant - sloth_slo: requests-availability - sloth_window: 2h - record: slo:sli_error:ratio_rate2h - - expr: | - (sum(rate(istio_requests_total{job="ingress-metrics-proxy",response_code=~"5.*"}[6h])) by (request_host)) - / - (sum(rate(istio_requests_total{job="ingress-metrics-proxy"}[6h]) )by (request_host)) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-availability - sloth_service: kuadrant - sloth_slo: requests-availability - sloth_window: 6h - record: slo:sli_error:ratio_rate6h - - expr: | - (sum(rate(istio_requests_total{job="ingress-metrics-proxy",response_code=~"5.*"}[1d])) by (request_host)) - / - (sum(rate(istio_requests_total{job="ingress-metrics-proxy"}[1d]) )by (request_host)) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-availability - sloth_service: kuadrant - sloth_slo: requests-availability - sloth_window: 1d - record: slo:sli_error:ratio_rate1d - - expr: | - (sum(rate(istio_requests_total{job="ingress-metrics-proxy",response_code=~"5.*"}[3d])) by (request_host)) - / - (sum(rate(istio_requests_total{job="ingress-metrics-proxy"}[3d]) )by (request_host)) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-availability - sloth_service: kuadrant - sloth_slo: requests-availability - sloth_window: 3d - record: slo:sli_error:ratio_rate3d - - expr: | - sum_over_time(slo:sli_error:ratio_rate5m{sloth_id="kuadrant-requests-availability", sloth_service="kuadrant", sloth_slo="requests-availability"}[4w]) - / ignoring (sloth_window) - count_over_time(slo:sli_error:ratio_rate5m{sloth_id="kuadrant-requests-availability", sloth_service="kuadrant", sloth_slo="requests-availability"}[4w]) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-availability - sloth_service: kuadrant - sloth_slo: requests-availability - sloth_window: 4w - record: slo:sli_error:ratio_rate4w - - name: sloth-slo-meta-recordings-kuadrant-requests-availability - rules: - - expr: vector(0.9995) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-availability - sloth_service: kuadrant - sloth_slo: requests-availability - record: slo:objective:ratio - - expr: vector(1-0.9995) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-availability - sloth_service: kuadrant - sloth_slo: requests-availability - record: slo:error_budget:ratio - - expr: vector(28) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-availability - sloth_service: kuadrant - sloth_slo: requests-availability - record: slo:time_period:days - - expr: | - slo:sli_error:ratio_rate5m{sloth_id="kuadrant-requests-availability", sloth_service="kuadrant", sloth_slo="requests-availability"} - / on(sloth_id, sloth_slo, sloth_service) group_left - slo:error_budget:ratio{sloth_id="kuadrant-requests-availability", sloth_service="kuadrant", sloth_slo="requests-availability"} - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-availability - sloth_service: kuadrant - sloth_slo: requests-availability - record: slo:current_burn_rate:ratio - - expr: | - slo:sli_error:ratio_rate4w{sloth_id="kuadrant-requests-availability", sloth_service="kuadrant", sloth_slo="requests-availability"} - / on(sloth_id, sloth_slo, sloth_service) group_left - slo:error_budget:ratio{sloth_id="kuadrant-requests-availability", sloth_service="kuadrant", sloth_slo="requests-availability"} - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-availability - sloth_service: kuadrant - sloth_slo: requests-availability - record: slo:period_burn_rate:ratio - - expr: 1 - slo:period_burn_rate:ratio{sloth_id="kuadrant-requests-availability", - sloth_service="kuadrant", sloth_slo="requests-availability"} - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-availability - sloth_service: kuadrant - sloth_slo: requests-availability - record: slo:period_error_budget_remaining:ratio - - expr: vector(1) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-availability - sloth_mode: cli-gen-k8s - sloth_objective: "99.95" - sloth_service: kuadrant - sloth_slo: requests-availability - sloth_spec: sloth.slok.dev/v1 - sloth_version: v0.11.0 - record: sloth_slo_info - - name: sloth-slo-alerts-kuadrant-requests-availability - rules: - - alert: KuadrantAvailabilityHighErrorRate - annotations: - summary: High error rate on HTTPRoute requests responses - title: (page) {{$labels.sloth_service}} {{$labels.sloth_slo}} SLO error budget - burn rate is too fast. - expr: | - ( - max(slo:sli_error:ratio_rate5m{sloth_id="kuadrant-requests-availability", sloth_service="kuadrant", sloth_slo="requests-availability"} > (13.44 * 0.0004999999999999716)) without (sloth_window) - and - max(slo:sli_error:ratio_rate1h{sloth_id="kuadrant-requests-availability", sloth_service="kuadrant", sloth_slo="requests-availability"} > (13.44 * 0.0004999999999999716)) without (sloth_window) - ) - or - ( - max(slo:sli_error:ratio_rate30m{sloth_id="kuadrant-requests-availability", sloth_service="kuadrant", sloth_slo="requests-availability"} > (5.6000000000000005 * 0.0004999999999999716)) without (sloth_window) - and - max(slo:sli_error:ratio_rate6h{sloth_id="kuadrant-requests-availability", sloth_service="kuadrant", sloth_slo="requests-availability"} > (5.6000000000000005 * 0.0004999999999999716)) without (sloth_window) - ) - labels: - category: availability - severity: critical - sloth_severity: page - - alert: KuadrantAvailabilityHighErrorRate - annotations: - summary: High error rate on HTTPRoute requests responses - title: (ticket) {{$labels.sloth_service}} {{$labels.sloth_slo}} SLO error - budget burn rate is too fast. - expr: | - ( - max(slo:sli_error:ratio_rate2h{sloth_id="kuadrant-requests-availability", sloth_service="kuadrant", sloth_slo="requests-availability"} > (2.8000000000000003 * 0.0004999999999999716)) without (sloth_window) - and - max(slo:sli_error:ratio_rate1d{sloth_id="kuadrant-requests-availability", sloth_service="kuadrant", sloth_slo="requests-availability"} > (2.8000000000000003 * 0.0004999999999999716)) without (sloth_window) - ) - or - ( - max(slo:sli_error:ratio_rate6h{sloth_id="kuadrant-requests-availability", sloth_service="kuadrant", sloth_slo="requests-availability"} > (0.9333333333333333 * 0.0004999999999999716)) without (sloth_window) - and - max(slo:sli_error:ratio_rate3d{sloth_id="kuadrant-requests-availability", sloth_service="kuadrant", sloth_slo="requests-availability"} > (0.9333333333333333 * 0.0004999999999999716)) without (sloth_window) - ) - labels: - category: availability - severity: warning - sloth_severity: ticket diff --git a/0.10.0/kuadrant-operator/examples/alerts/slo-latency.yaml b/0.10.0/kuadrant-operator/examples/alerts/slo-latency.yaml deleted file mode 100644 index 63e61c2cd..000000000 --- a/0.10.0/kuadrant-operator/examples/alerts/slo-latency.yaml +++ /dev/null @@ -1,212 +0,0 @@ - ---- -# Code generated by Sloth (v0.11.0): https://github.com/slok/sloth. -# DO NOT EDIT. - -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - creationTimestamp: null - labels: - app.kubernetes.io/component: SLO - app.kubernetes.io/managed-by: sloth - name: latency-slo - namespace: monitoring -spec: - groups: - - name: sloth-slo-sli-recordings-kuadrant-requests-latency - rules: - - expr: | - (( sum(rate(istio_request_duration_milliseconds_count{job="ingress-metrics-proxy",response_code="200"}[5m]))by (request_host) - sum(rate(istio_request_duration_milliseconds_bucket{le="250", job="ingress-metrics-proxy", response_code="200" }[5m]) )by (request_host) )) - / - (sum(rate(istio_request_duration_milliseconds_count{job="ingress-metrics-proxy",response_code="200"}[5m]))by (request_host)) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-latency - sloth_service: kuadrant - sloth_slo: requests-latency - sloth_window: 5m - record: slo:sli_error:ratio_rate5m - - expr: | - (( sum(rate(istio_request_duration_milliseconds_count{job="ingress-metrics-proxy",response_code="200"}[30m]))by (request_host) - sum(rate(istio_request_duration_milliseconds_bucket{le="250", job="ingress-metrics-proxy", response_code="200" }[30m]) )by (request_host) )) - / - (sum(rate(istio_request_duration_milliseconds_count{job="ingress-metrics-proxy",response_code="200"}[30m]))by (request_host)) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-latency - sloth_service: kuadrant - sloth_slo: requests-latency - sloth_window: 30m - record: slo:sli_error:ratio_rate30m - - expr: | - (( sum(rate(istio_request_duration_milliseconds_count{job="ingress-metrics-proxy",response_code="200"}[1h]))by (request_host) - sum(rate(istio_request_duration_milliseconds_bucket{le="250", job="ingress-metrics-proxy", response_code="200" }[1h]) )by (request_host) )) - / - (sum(rate(istio_request_duration_milliseconds_count{job="ingress-metrics-proxy",response_code="200"}[1h]))by (request_host)) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-latency - sloth_service: kuadrant - sloth_slo: requests-latency - sloth_window: 1h - record: slo:sli_error:ratio_rate1h - - expr: | - (( sum(rate(istio_request_duration_milliseconds_count{job="ingress-metrics-proxy",response_code="200"}[2h]))by (request_host) - sum(rate(istio_request_duration_milliseconds_bucket{le="250", job="ingress-metrics-proxy", response_code="200" }[2h]) )by (request_host) )) - / - (sum(rate(istio_request_duration_milliseconds_count{job="ingress-metrics-proxy",response_code="200"}[2h]))by (request_host)) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-latency - sloth_service: kuadrant - sloth_slo: requests-latency - sloth_window: 2h - record: slo:sli_error:ratio_rate2h - - expr: | - (( sum(rate(istio_request_duration_milliseconds_count{job="ingress-metrics-proxy",response_code="200"}[6h]))by (request_host) - sum(rate(istio_request_duration_milliseconds_bucket{le="250", job="ingress-metrics-proxy", response_code="200" }[6h]) )by (request_host) )) - / - (sum(rate(istio_request_duration_milliseconds_count{job="ingress-metrics-proxy",response_code="200"}[6h]))by (request_host)) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-latency - sloth_service: kuadrant - sloth_slo: requests-latency - sloth_window: 6h - record: slo:sli_error:ratio_rate6h - - expr: | - (( sum(rate(istio_request_duration_milliseconds_count{job="ingress-metrics-proxy",response_code="200"}[1d]))by (request_host) - sum(rate(istio_request_duration_milliseconds_bucket{le="250", job="ingress-metrics-proxy", response_code="200" }[1d]) )by (request_host) )) - / - (sum(rate(istio_request_duration_milliseconds_count{job="ingress-metrics-proxy",response_code="200"}[1d]))by (request_host)) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-latency - sloth_service: kuadrant - sloth_slo: requests-latency - sloth_window: 1d - record: slo:sli_error:ratio_rate1d - - expr: | - (( sum(rate(istio_request_duration_milliseconds_count{job="ingress-metrics-proxy",response_code="200"}[3d]))by (request_host) - sum(rate(istio_request_duration_milliseconds_bucket{le="250", job="ingress-metrics-proxy", response_code="200" }[3d]) )by (request_host) )) - / - (sum(rate(istio_request_duration_milliseconds_count{job="ingress-metrics-proxy",response_code="200"}[3d]))by (request_host)) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-latency - sloth_service: kuadrant - sloth_slo: requests-latency - sloth_window: 3d - record: slo:sli_error:ratio_rate3d - - expr: | - sum_over_time(slo:sli_error:ratio_rate5m{sloth_id="kuadrant-requests-latency", sloth_service="kuadrant", sloth_slo="requests-latency"}[4w]) - / ignoring (sloth_window) - count_over_time(slo:sli_error:ratio_rate5m{sloth_id="kuadrant-requests-latency", sloth_service="kuadrant", sloth_slo="requests-latency"}[4w]) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-latency - sloth_service: kuadrant - sloth_slo: requests-latency - sloth_window: 4w - record: slo:sli_error:ratio_rate4w - - name: sloth-slo-meta-recordings-kuadrant-requests-latency - rules: - - expr: vector(0.9995) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-latency - sloth_service: kuadrant - sloth_slo: requests-latency - record: slo:objective:ratio - - expr: vector(1-0.9995) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-latency - sloth_service: kuadrant - sloth_slo: requests-latency - record: slo:error_budget:ratio - - expr: vector(28) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-latency - sloth_service: kuadrant - sloth_slo: requests-latency - record: slo:time_period:days - - expr: | - slo:sli_error:ratio_rate5m{sloth_id="kuadrant-requests-latency", sloth_service="kuadrant", sloth_slo="requests-latency"} - / on(sloth_id, sloth_slo, sloth_service) group_left - slo:error_budget:ratio{sloth_id="kuadrant-requests-latency", sloth_service="kuadrant", sloth_slo="requests-latency"} - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-latency - sloth_service: kuadrant - sloth_slo: requests-latency - record: slo:current_burn_rate:ratio - - expr: | - slo:sli_error:ratio_rate4w{sloth_id="kuadrant-requests-latency", sloth_service="kuadrant", sloth_slo="requests-latency"} - / on(sloth_id, sloth_slo, sloth_service) group_left - slo:error_budget:ratio{sloth_id="kuadrant-requests-latency", sloth_service="kuadrant", sloth_slo="requests-latency"} - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-latency - sloth_service: kuadrant - sloth_slo: requests-latency - record: slo:period_burn_rate:ratio - - expr: 1 - slo:period_burn_rate:ratio{sloth_id="kuadrant-requests-latency", sloth_service="kuadrant", - sloth_slo="requests-latency"} - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-latency - sloth_service: kuadrant - sloth_slo: requests-latency - record: slo:period_error_budget_remaining:ratio - - expr: vector(1) - labels: - owner: kuadrant-org - sloth_id: kuadrant-requests-latency - sloth_mode: cli-gen-k8s - sloth_objective: "99.95" - sloth_service: kuadrant - sloth_slo: requests-latency - sloth_spec: sloth.slok.dev/v1 - sloth_version: v0.11.0 - record: sloth_slo_info - - name: sloth-slo-alerts-kuadrant-requests-latency - rules: - - alert: KuadrantlatencyHighErrorRate - annotations: - summary: High latency on HTTPRoute requests responses - title: (page) {{$labels.sloth_service}} {{$labels.sloth_slo}} SLO error budget - burn rate is too fast. - expr: | - ( - max(slo:sli_error:ratio_rate5m{sloth_id="kuadrant-requests-latency", sloth_service="kuadrant", sloth_slo="requests-latency"} > (13.44 * 0.0004999999999999716)) without (sloth_window) - and - max(slo:sli_error:ratio_rate1h{sloth_id="kuadrant-requests-latency", sloth_service="kuadrant", sloth_slo="requests-latency"} > (13.44 * 0.0004999999999999716)) without (sloth_window) - ) - or - ( - max(slo:sli_error:ratio_rate30m{sloth_id="kuadrant-requests-latency", sloth_service="kuadrant", sloth_slo="requests-latency"} > (5.6000000000000005 * 0.0004999999999999716)) without (sloth_window) - and - max(slo:sli_error:ratio_rate6h{sloth_id="kuadrant-requests-latency", sloth_service="kuadrant", sloth_slo="requests-latency"} > (5.6000000000000005 * 0.0004999999999999716)) without (sloth_window) - ) - labels: - category: latency - severity: critical - sloth_severity: page - - alert: KuadrantlatencyHighErrorRate - annotations: - summary: High latency on HTTPRoute requests responses - title: (ticket) {{$labels.sloth_service}} {{$labels.sloth_slo}} SLO error - budget burn rate is too fast. - expr: | - ( - max(slo:sli_error:ratio_rate2h{sloth_id="kuadrant-requests-latency", sloth_service="kuadrant", sloth_slo="requests-latency"} > (2.8000000000000003 * 0.0004999999999999716)) without (sloth_window) - and - max(slo:sli_error:ratio_rate1d{sloth_id="kuadrant-requests-latency", sloth_service="kuadrant", sloth_slo="requests-latency"} > (2.8000000000000003 * 0.0004999999999999716)) without (sloth_window) - ) - or - ( - max(slo:sli_error:ratio_rate6h{sloth_id="kuadrant-requests-latency", sloth_service="kuadrant", sloth_slo="requests-latency"} > (0.9333333333333333 * 0.0004999999999999716)) without (sloth_window) - and - max(slo:sli_error:ratio_rate3d{sloth_id="kuadrant-requests-latency", sloth_service="kuadrant", sloth_slo="requests-latency"} > (0.9333333333333333 * 0.0004999999999999716)) without (sloth_window) - ) - labels: - category: latency - severity: warning - sloth_severity: ticket diff --git a/0.10.0/kuadrant-operator/examples/alerts/sloth/slo-availability.yaml b/0.10.0/kuadrant-operator/examples/alerts/sloth/slo-availability.yaml deleted file mode 100644 index 65768e265..000000000 --- a/0.10.0/kuadrant-operator/examples/alerts/sloth/slo-availability.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: sloth.slok.dev/v1 -kind: PrometheusServiceLevel -metadata: - name: availability-slo - namespace: monitoring -spec: - service: "kuadrant" - labels: - owner: "kuadrant-org" - slos: - - name: "requests-availability" - objective: 99.95 - description: "Multi window multi burn rate SLO based on availability for HTTP request responses." - sli: - events: - errorQuery: sum(rate(istio_requests_total{job="ingress-metrics-proxy",response_code=~"5.*"}[{{.window}}])) by (request_host) - totalQuery: sum(rate(istio_requests_total{job="ingress-metrics-proxy"}[{{.window}}]) )by (request_host) - alerting: - name: KuadrantAvailabilityHighErrorRate - labels: - category: "availability" - annotations: - # Overwrite default Sloth SLO alert summmary on ticket and page alerts. - summary: "High error rate on HTTPRoute requests responses" - pageAlert: - labels: - severity: critical - ticketAlert: - labels: - severity: warning - diff --git a/0.10.0/kuadrant-operator/examples/alerts/sloth/slo-latency.yaml b/0.10.0/kuadrant-operator/examples/alerts/sloth/slo-latency.yaml deleted file mode 100644 index 6f526dc82..000000000 --- a/0.10.0/kuadrant-operator/examples/alerts/sloth/slo-latency.yaml +++ /dev/null @@ -1,34 +0,0 @@ -apiVersion: sloth.slok.dev/v1 -kind: PrometheusServiceLevel -metadata: - name: latency-slo - namespace: monitoring -spec: - service: "kuadrant" - labels: - owner: "kuadrant-org" - slos: - - name: "requests-latency" - objective: 99.95 - description: "Multi window multi burn rate SLO based on latency for HTTP request responses." - sli: - events: - errorQuery: ( - sum(rate(istio_request_duration_milliseconds_count{job="ingress-metrics-proxy",response_code="200"}[{{.window}}]))by (request_host) - - - sum(rate(istio_request_duration_milliseconds_bucket{le="250", job="ingress-metrics-proxy", response_code="200" }[{{.window}}]) )by (request_host) - ) - totalQuery: sum(rate(istio_request_duration_milliseconds_count{job="ingress-metrics-proxy",response_code="200"}[{{.window}}]))by (request_host) - alerting: - name: KuadrantlatencyHighErrorRate - labels: - category: "latency" - annotations: - # Overwrite default Sloth SLO alert summmary on ticket and page alerts. - summary: "High latency on HTTPRoute requests responses" - pageAlert: - labels: - severity: critical - ticketAlert: - labels: - severity: warning diff --git a/0.10.0/kuadrant-operator/examples/alerts/tests/slo-availability-test.yaml b/0.10.0/kuadrant-operator/examples/alerts/tests/slo-availability-test.yaml deleted file mode 100644 index 9b8a33526..000000000 --- a/0.10.0/kuadrant-operator/examples/alerts/tests/slo-availability-test.yaml +++ /dev/null @@ -1,47 +0,0 @@ -rule_files: - - /prometheus/availability-rules.yaml - -evaluation_interval: 1m - -tests: - - interval: 1m - input_series: - # Promtool uses expanding notation as its way of creating time series (https://prometheus.io/docs/prometheus/latest/configuration/unit_testing_rules/#series) - # 0+0x30 = 0, 0, 0, ...0 For a total of 31 times THEN 0+10x30 = 0, 10 ,20, ... 300 For a total of 31 times - - series: istio_requests_total{job="ingress-metrics-proxy",response_code="500"} - values: "0+0x30 0+10x30" - # 0+1x30 = 0, 1, 2, ...30 For a total of 31 times THEN 31+100x30 = 31, 131 ,231, 331 ... 3031 For a total of 31 times - - series: istio_requests_total{job="ingress-metrics-proxy"} - values: "0+1x30 31+100x30" - alert_rule_test: - - eval_time: 30m - alertname: KuadrantAvailabilityHighErrorRate - exp_alerts: [] - - eval_time: 60m - alertname: KuadrantAvailabilityHighErrorRate - exp_alerts: - - exp_labels: - alertname: KuadrantAvailabilityHighErrorRate - category: availability - owner: kuadrant-org - severity: critical - sloth_id: kuadrant-requests-availability - sloth_service: kuadrant - sloth_severity: page - sloth_slo: requests-availability - exp_annotations: - summary: High error rate on HTTPRoute requests responses - title: (page) kuadrant requests-availability SLO error budget burn rate is too fast. - - exp_labels: - alertname: KuadrantAvailabilityHighErrorRate - category: availability - owner: kuadrant-org - severity: warning - sloth_id: kuadrant-requests-availability - sloth_service: kuadrant - sloth_severity: ticket - sloth_slo: requests-availability - exp_annotations: - summary: High error rate on HTTPRoute requests responses - title: (ticket) kuadrant requests-availability SLO error budget burn rate is too fast. - diff --git a/0.10.0/kuadrant-operator/examples/alerts/tests/slo-latency-test.yaml b/0.10.0/kuadrant-operator/examples/alerts/tests/slo-latency-test.yaml deleted file mode 100644 index de331c0de..000000000 --- a/0.10.0/kuadrant-operator/examples/alerts/tests/slo-latency-test.yaml +++ /dev/null @@ -1,47 +0,0 @@ -rule_files: - - /prometheus/latency-rules.yaml - -evaluation_interval: 1m - -tests: - - interval: 1m - input_series: - # Promtool uses expanding notation as its way of creating time series (https://prometheus.io/docs/prometheus/latest/configuration/unit_testing_rules/#series) - # 0+1x30 = 0, 1, 2, ...30 For a total of 31 times THEN 31+10x30 = 31, 41 ,51, ... 331 For a total of 31 times - - series: istio_request_duration_milliseconds_bucket{le="250",job="ingress-metrics-proxy",response_code="200"} - values: "0+1x30 31+10x30" - # 0+1x30 = 0, 1, 2, ...30 For a total of 31 times THEN 31+100x30 = 31, 131 ,231, 331 ... 3031 For a total of 31 times - - series: istio_request_duration_milliseconds_count{job="ingress-metrics-proxy",response_code="200"} - values: "0+1x30 31+100x30" - alert_rule_test: - - eval_time: 30m - alertname: KuadrantlatencyHighErrorRate - exp_alerts: [] - - eval_time: 60m - alertname: KuadrantlatencyHighErrorRate - exp_alerts: - - exp_labels: - alertname: KuadrantlatencyHighErrorRate - category: latency - owner: kuadrant-org - severity: critical - sloth_id: kuadrant-requests-latency - sloth_service: kuadrant - sloth_severity: page - sloth_slo: requests-latency - exp_annotations: - summary: High latency on HTTPRoute requests responses - title: (page) kuadrant requests-latency SLO error budget burn rate is too fast. - - exp_labels: - alertname: KuadrantlatencyHighErrorRate - category: latency - owner: kuadrant-org - severity: warning - sloth_id: kuadrant-requests-latency - sloth_service: kuadrant - sloth_severity: ticket - sloth_slo: requests-latency - exp_annotations: - summary: High latency on HTTPRoute requests responses - title: (ticket) kuadrant requests-latency SLO error budget burn rate is too fast. - diff --git a/0.10.0/kuadrant-operator/examples/dashboards/app_developer.json b/0.10.0/kuadrant-operator/examples/dashboards/app_developer.json deleted file mode 100644 index aa7f03ebe..000000000 --- a/0.10.0/kuadrant-operator/examples/dashboards/app_developer.json +++ /dev/null @@ -1,1693 +0,0 @@ -{ - "__requires": [ - { - "type": "panel", - "id": "dashlist", - "name": "Dashboard list", - "version": "" - }, - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "9.5.3" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "1.0.0" - }, - { - "type": "panel", - "id": "stat", - "name": "Stat", - "version": "" - }, - { - "type": "panel", - "id": "table", - "name": "Table", - "version": "" - }, - { - "type": "panel", - "id": "text", - "name": "Text", - "version": "" - }, - { - "type": "panel", - "id": "timeseries", - "name": "Time series", - "version": "" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": { - "type": "datasource", - "uid": "grafana" - }, - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "target": { - "limit": 100, - "matchAny": false, - "tags": [], - "type": "dashboard" - }, - "type": "dashboard" - } - ] - }, - "description": "App Developer Dashboard", - "editable": true, - "fiscalYearStartMonth": 0, - "gnetId": 7630, - "graphTooltip": 1, - "id": null, - "links": [], - "liveNow": false, - "panels": [ - { - "datasource": { - "type": "datasource", - "uid": "grafana" - }, - "description": "", - "gridPos": { - "h": 7, - "w": 6, - "x": 0, - "y": 0 - }, - "id": 155, - "options": { - "maxItems": 10, - "query": "", - "showHeadings": false, - "showRecentlyViewed": false, - "showSearch": true, - "showStarred": false, - "tags": [ - "kuadrant" - ] - }, - "pluginVersion": "9.5.3", - "title": "Kuadrant Dashboards", - "type": "dashlist" - }, - { - "datasource": { - "type": "datasource", - "uid": "grafana" - }, - "description": "", - "gridPos": { - "h": 7, - "w": 18, - "x": 6, - "y": 0 - }, - "id": 153, - "options": { - "code": { - "language": "plaintext", - "showLineNumbers": false, - "showMiniMap": false - }, - "content": "#### Overview of API/HTTPRoute Metrics\n\nThe row of panels below is repeated for each HTTPRoute resource in your cluster.\nThey provide real-time & historical insights into the performance and health of each API.\nMetrics displayed include request rates, success/error breakdown, and latency percentiles, giving a snapshot of API efficiency and reliability.\nUse this dashboard to monitor traffic patterns, identify potential issues, and ensure optimal performance of your services.\n\n*Important: HTTPRoutes must include a \"service\" and \"deployment\" label with a value that matches the name of the service & deployment being routed to. eg. \"service=myapp, deployment=myapp\"*", - "mode": "markdown" - }, - "pluginVersion": "9.5.3", - "title": "App Developer Dashboard", - "type": "text" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 7 - }, - "id": 141, - "panels": [], - "repeat": "api", - "title": "\"$api\" API - Requests, latency and errors", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Hostname: \"Domain name for the API server.\" | API Namespace: \"Kubernetes namespace where the API is deployed.\" | Gateway name: \"Name of the Gateway API gateway the HTTPRoute is targeting\" | Gateway name: \"Name of the Gateway API gateway namespace\"\n", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "center", - "cellOptions": { - "type": "auto" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 3, - "w": 24, - "x": 0, - "y": 8 - }, - "id": 97, - "options": { - "cellHeight": "sm", - "footer": { - "countRows": false, - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, - "showHeader": true - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "gatewayapi_httproute_hostname_info{name=~\"$api\"}", - "format": "table", - "hide": false, - "instant": true, - "legendFormat": "__auto", - "range": false, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "gatewayapi_httproute_labels{name=~\"$api\"}", - "format": "table", - "hide": false, - "instant": true, - "range": false, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "gatewayapi_httproute_parent_info{name=~\"$api\"}", - "format": "table", - "hide": false, - "instant": true, - "range": false, - "refId": "C" - } - ], - "transformations": [ - { - "id": "seriesToColumns", - "options": { - "byField": "name" - } - }, - { - "id": "organize", - "options": { - "excludeByName": { - "Time 1": true, - "Time 2": true, - "Value #A": true, - "Value #B": true, - "__name__ 1": true, - "__name__ 2": true, - "cluster_id 1": false, - "container 1": true, - "container 2": true, - "customresource_group 1": true, - "customresource_group 2": true, - "customresource_kind 1": true, - "customresource_kind 2": true, - "customresource_version 1": true, - "customresource_version 2": true, - "deployment": false, - "exported_namespace 2": true, - "instance 1": true, - "instance 2": true, - "job 1": true, - "job 2": true, - "name": true, - "namespace 1": false, - "namespace 2": true, - "namespace 3": false, - "parent_name": false, - "parent_namespace": false, - "prometheus 1": true, - "prometheus 2": true, - "service": false - }, - "indexByName": { - "Time 1": 1, - "Time 2": 13, - "Time 3": 33, - "Value #A": 12, - "Value #B": 24, - "Value #C": 51, - "__name__ 1": 2, - "__name__ 2": 14, - "__name__ 3": 34, - "cluster_id 1": 52, - "cluster_id 2": 28, - "cluster_id 3": 35, - "container 1": 3, - "container 2": 15, - "container 3": 36, - "customresource_group 1": 4, - "customresource_group 2": 16, - "customresource_group 3": 37, - "customresource_kind 1": 5, - "customresource_kind 2": 17, - "customresource_kind 3": 38, - "customresource_version 1": 6, - "customresource_version 2": 18, - "customresource_version 3": 39, - "deployment": 19, - "hostname": 7, - "instance 1": 8, - "instance 2": 20, - "instance 3": 40, - "job 1": 9, - "job 2": 21, - "job 3": 41, - "name": 0, - "namespace 1": 10, - "namespace 2": 22, - "namespace 3": 42, - "parent_group": 43, - "parent_kind": 44, - "parent_name": 45, - "parent_namespace": 46, - "prometheus 1": 11, - "prometheus 2": 23, - "prometheus 3": 47, - "receive 1": 25, - "receive 2": 29, - "receive 3": 48, - "replica 1": 26, - "replica 2": 30, - "replica 3": 49, - "service": 31, - "tenant_id 1": 27, - "tenant_id 2": 32, - "tenant_id 3": 50 - }, - "renameByName": { - "Time 2": "", - "Value #C": "", - "cluster_id 1": "Cluster ID", - "customresource_kind 2": "", - "deployment": "API Workload (Deployment)", - "exported_namespace 1": "API Namespace", - "exported_namespace 2": "", - "hostname": "Hostname", - "name": "API Name (HTTPRoute)", - "namespace 1": "Namespace", - "owner": "Owner", - "parent_name": "Gateway name", - "parent_namespace": "Gateway namespace", - "service": "Service" - } - } - }, - { - "id": "filterFieldsByName", - "options": { - "include": { - "names": [ - "Hostname", - "Gateway name", - "Gateway namespace", - "Cluster ID" - ] - } - } - } - ], - "type": "table" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Requests per second, broken down by response code e.g. 200, 302, 403, 500", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "axisSoftMin": 0, - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 5, - "gradientMode": "opacity", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 1, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 2, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "reqps" - }, - "overrides": [ - { - "matcher": { - "id": "byFrameRefID", - "options": "A" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "blue", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byFrameRefID", - "options": "B" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "light-yellow", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byFrameRefID", - "options": "C" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "light-green", - "mode": "fixed" - } - } - ] - } - ] - }, - "gridPos": { - "h": 6, - "w": 9, - "x": 0, - "y": 11 - }, - "id": 156, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(istio_requests_total{destination_service_name=~\"$api\"}[5m])) by (destination_service_name) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{deployment=~\"$api\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "legendFormat": "total", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(istio_requests_total{destination_service_name=~\"$api\"}[5m])) by (destination_service_name, response_code) * on(destination_service_name) group_left(name) (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{deployment=~\"$api\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "hide": false, - "legendFormat": "{{response_code}}", - "range": true, - "refId": "B" - } - ], - "title": "request breakdown by code (req/s)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Total requests per second", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "blue", - "mode": "fixed" - }, - "decimals": 2, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 2, - "w": 2, - "x": 9, - "y": 11 - }, - "id": 137, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "sum(rate(istio_requests_total{destination_service_name=~\"$api\"}[5m])) by (destination_service_name) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{deployment=~\"$api\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "hide": false, - "instant": true, - "legendFormat": "__auto", - "range": false, - "refId": "C" - } - ], - "title": "total", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Total number of responses.", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "blue", - "mode": "fixed" - }, - "decimals": 0, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "none" - }, - "overrides": [] - }, - "gridPos": { - "h": 2, - "w": 2, - "x": 11, - "y": 11 - }, - "id": 149, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "sum(increase(istio_requests_total{destination_service_name=~\"$api\"}[$__range])) by (destination_service_name) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{service=~\"$api\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "hide": false, - "instant": true, - "legendFormat": "__auto", - "range": false, - "refId": "C" - } - ], - "title": "total", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Time it takes to process a request", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "axisSoftMin": 0, - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 5, - "gradientMode": "opacity", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineStyle": { - "fill": "solid" - }, - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ms" - }, - "overrides": [ - { - "matcher": { - "id": "byFrameRefID", - "options": "A" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "super-light-blue", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byFrameRefID", - "options": "C" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "light-blue", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byFrameRefID", - "options": "B" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "blue", - "mode": "fixed" - } - } - ] - } - ] - }, - "gridPos": { - "h": 6, - "w": 9, - "x": 13, - "y": 11 - }, - "id": 129, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{destination_service_name=~\"$api\"}[5m])) by (le, destination_service_name)) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{deployment=~\"$api\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "hide": false, - "legendFormat": "P95", - "range": true, - "refId": "C" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{destination_service_name=~\"$api\"}[5m])) by (le, destination_service_name)) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{deployment=~\"$api\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "legendFormat": "P90", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{destination_service_name=~\"$api\"}[5m])) by (le, destination_service_name)) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{deployment=~\"$api\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "hide": false, - "legendFormat": "P99", - "range": true, - "refId": "B" - } - ], - "title": "request latency (percentiles)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "99% of API requests were completed inside this value, while the remaining 1% took longer.", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "blue", - "mode": "fixed" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ms" - }, - "overrides": [] - }, - "gridPos": { - "h": 2, - "w": 2, - "x": 22, - "y": 11 - }, - "id": 139, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{destination_service_name=~\"$api\"}[5m])) by (le, destination_service_name)) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{deployment=~\"$api\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "hide": false, - "instant": true, - "legendFormat": "P99 {{destination_service_name}}", - "range": false, - "refId": "B" - } - ], - "title": "P99", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Requests per second that resulted in a success (2xx, 3xx).", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "light-green", - "mode": "fixed" - }, - "decimals": 2, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 2, - "w": 2, - "x": 9, - "y": 13 - }, - "id": 147, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "sum(rate(istio_requests_total{response_code=~\"2.*|3.*\",destination_service_name=~\"$api\"}[5m])) by (destination_service_name) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{deployment=~\"$api\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "hide": false, - "instant": true, - "legendFormat": "__auto", - "range": false, - "refId": "C" - } - ], - "title": "success", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Total number of success response (2xx, 3xx).", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "light-green", - "mode": "fixed" - }, - "decimals": 0, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "none" - }, - "overrides": [] - }, - "gridPos": { - "h": 2, - "w": 2, - "x": 11, - "y": 13 - }, - "id": 150, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "sum(increase(istio_requests_total{response_code=~\"2.*|3.*\",destination_service_name=~\"$api\"}[$__range])) by (destination_service_name) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{service=~\"$api\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "hide": false, - "instant": true, - "legendFormat": "__auto", - "range": false, - "refId": "C" - } - ], - "title": "success", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "95% of API requests were completed inside this value, while the remaining 5% took longer.", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "light-blue", - "mode": "fixed" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ms" - }, - "overrides": [] - }, - "gridPos": { - "h": 2, - "w": 2, - "x": 22, - "y": 13 - }, - "id": 146, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{destination_service_name=~\"$api\"}[5m])) by (le, destination_service_name)) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{deployment=~\"$api\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "hide": false, - "instant": true, - "legendFormat": "__auto", - "range": false, - "refId": "C" - } - ], - "title": "P95", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Requests per second that resulted in an error (4xx, 5xx).", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "light-yellow", - "mode": "fixed" - }, - "decimals": 2, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 2, - "w": 2, - "x": 9, - "y": 15 - }, - "id": 148, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "sum(rate(istio_requests_total{response_code=~\"4.*|5.*\",destination_service_name=~\"$api\"}[5m])) by (destination_service_name) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{deployment=~\"$api\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "hide": false, - "instant": true, - "legendFormat": "__auto", - "range": false, - "refId": "C" - } - ], - "title": "error", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Total number of error response (4xx, 5xx).", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "light-yellow", - "mode": "fixed" - }, - "decimals": 0, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "none" - }, - "overrides": [] - }, - "gridPos": { - "h": 2, - "w": 2, - "x": 11, - "y": 15 - }, - "id": 151, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "sum(increase(istio_requests_total{response_code=~\"4.*|5.*\",destination_service_name=~\"$api\"}[$__range])) by (destination_service_name) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{service=~\"$api\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "hide": false, - "instant": true, - "legendFormat": "__auto", - "range": false, - "refId": "C" - } - ], - "title": "error", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Shows that 90% of API requests were completed inside this value, while the remaining 10% took longer.", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "super-light-blue", - "mode": "fixed" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ms" - }, - "overrides": [] - }, - "gridPos": { - "h": 2, - "w": 2, - "x": 22, - "y": 15 - }, - "id": 138, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{destination_service_name=~\"$api\"}[5m])) by (le, destination_service_name)) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "instant": true, - "legendFormat": "P90 {{destination_service_name}}", - "range": false, - "refId": "A" - } - ], - "title": "P90", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Requests per second, broken down by response code e.g. 200, 302, 403, 500", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "axisSoftMin": 0, - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 5, - "gradientMode": "opacity", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 1, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 2, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "reqps" - }, - "overrides": [ - { - "matcher": { - "id": "byFrameRefID", - "options": "A" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "blue", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byFrameRefID", - "options": "B" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "light-yellow", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byFrameRefID", - "options": "C" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "light-green", - "mode": "fixed" - } - } - ] - } - ] - }, - "gridPos": { - "h": 9, - "w": 9, - "x": 0, - "y": 17 - }, - "id": 99, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(istio_requests_total{destination_service_name=~\"$api\"}[5m])) by (cluster_id, destination_service_name) * on(cluster_id, destination_service_name) group_right() (group without(instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{deployment=~\"$api\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "legendFormat": "\"{{cluster_id}}\" total", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(istio_requests_total{destination_service_name=~\"$api\"}[5m])) by (cluster_id, destination_service_name, response_code) * on(cluster_id, destination_service_name) group_left(name) (group without(instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{deployment=~\"$api\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "hide": false, - "legendFormat": "\"{{cluster_id}}\" {{response_code}}", - "range": true, - "refId": "B" - } - ], - "title": "request breakdown by cluster and code (req/s)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Time it takes to process a request", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "axisSoftMin": 0, - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 5, - "gradientMode": "opacity", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineStyle": { - "fill": "solid" - }, - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ms" - }, - "overrides": [ - { - "matcher": { - "id": "byFrameRefID", - "options": "A" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "super-light-blue", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byFrameRefID", - "options": "C" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "light-blue", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byFrameRefID", - "options": "B" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "blue", - "mode": "fixed" - } - } - ] - } - ] - }, - "gridPos": { - "h": 9, - "w": 9, - "x": 13, - "y": 17 - }, - "id": 157, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{destination_service_name=~\"$api\"}[5m])) by (le, destination_service_name, cluster_id)) * on(destination_service_name, cluster_id) group_right() (group without(instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{deployment=~\"$api\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "hide": false, - "legendFormat": "\"{{cluster_id}}\" P95", - "range": true, - "refId": "C" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{destination_service_name=~\"$api\"}[5m])) by (le, destination_service_name, cluster_id)) * on(destination_service_name, cluster_id) group_right() (group without(instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{deployment=~\"$api\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "legendFormat": "\"{{cluster_id}}\" P90", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{destination_service_name=~\"$api\"}[5m])) by (le, destination_service_name, cluster_id)) * on(destination_service_name, cluster_id) group_right() (group without(instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{deployment=~\"$api\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "hide": false, - "legendFormat": "\"{{cluster_id}}\" P99", - "range": true, - "refId": "B" - } - ], - "title": "request latency by cluster (percentiles)", - "type": "timeseries" - } - ], - "refresh": "30s", - "schemaVersion": 38, - "style": "dark", - "tags": [ - "kuadrant" - ], - "templating": { - "list": [ - { - "current": { - "selected": false, - "text": "Kuadrant-Thanos-Hub", - "value": "Kuadrant-Thanos-Hub" - }, - "hide": 0, - "includeAll": false, - "label": "Datasource", - "multi": false, - "name": "datasource", - "options": [], - "query": "prometheus", - "queryValue": "", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" - }, - { - "current": {}, - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "definition": "label_values(gatewayapi_httproute_labels, name)", - "description": "Name of the API", - "hide": 0, - "includeAll": true, - "label": "API name", - "multi": true, - "name": "api", - "options": [], - "query": { - "query": "label_values(gatewayapi_httproute_labels, name)", - "refId": "StandardVariableQuery" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - } - ] - }, - "time": { - "from": "now-15m", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "30s", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "App Developer Dashboard", - "uid": "J_sdY4-Ik", - "version": 1, - "weekStart": "" -} diff --git a/0.10.0/kuadrant-operator/examples/dashboards/business_user.json b/0.10.0/kuadrant-operator/examples/dashboards/business_user.json deleted file mode 100644 index a5cc60788..000000000 --- a/0.10.0/kuadrant-operator/examples/dashboards/business_user.json +++ /dev/null @@ -1,768 +0,0 @@ -{ - "__requires": [ - { - "type": "panel", - "id": "dashlist", - "name": "Dashboard list", - "version": "" - }, - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "9.5.3" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "1.0.0" - }, - { - "type": "panel", - "id": "state-timeline", - "name": "State timeline", - "version": "" - }, - { - "type": "panel", - "id": "table", - "name": "Table", - "version": "" - }, - { - "type": "panel", - "id": "text", - "name": "Text", - "version": "" - }, - { - "type": "panel", - "id": "timeseries", - "name": "Time series", - "version": "" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": { - "type": "datasource", - "uid": "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, - "fiscalYearStartMonth": 0, - "graphTooltip": 1, - "id": null, - "links": [], - "liveNow": false, - "panels": [ - { - "datasource": { - "type": "datasource", - "uid": "grafana" - }, - "description": "", - "gridPos": { - "h": 7, - "w": 6, - "x": 0, - "y": 0 - }, - "id": 162, - "options": { - "maxItems": 10, - "query": "", - "showHeadings": false, - "showRecentlyViewed": false, - "showSearch": true, - "showStarred": false, - "tags": [ - "kuadrant" - ] - }, - "pluginVersion": "9.5.3", - "title": "Kuadrant Dashboards", - "type": "dashlist" - }, - { - "datasource": { - "type": "datasource", - "uid": "grafana" - }, - "description": "", - "gridPos": { - "h": 7, - "w": 18, - "x": 6, - "y": 0 - }, - "id": 150, - "options": { - "code": { - "language": "plaintext", - "showLineNumbers": false, - "showMiniMap": false - }, - "content": "#### Business Overview of APIs\n\nThe panels below are grouped by APIs, realized by a [Gateway API HTTPRoute](https://gateway-api.sigs.k8s.io/concepts/api-overview/#httproute). Each panel provides a comprehensive overview of request and error metrics associated with each API. Additionally, these panels include a heatmap that visualizes requests per second, offering real-time insights into the traffic patterns and operational status of your services.\n\n*Important: HTTPRoutes must include a \"service\" and \"deployment\" label with a value that matches the name of the service & deployment being routed to. eg. \"service=myapp, deployment=myapp\"*\n", - "mode": "markdown" - }, - "pluginVersion": "9.5.3", - "title": "Business User Dashboard", - "type": "text" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 7 - }, - "id": 6, - "panels": [], - "repeat": "route_name", - "title": "\"$route_name\" API", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Aggregated rate of requests per API (HTTPRoute). The API name can be cross referenced with the API list to see additional details.\n\nNote: HTTPRoutes require a label `deployment` with the name of the corresponding Deployment so that istio request metrics can be paired with HTTPRoute metrics.", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "blue", - "mode": "fixed" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "axisSoftMin": 0, - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 5, - "gradientMode": "opacity", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineStyle": { - "fill": "solid" - }, - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 2, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 8 - }, - "id": 4, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": false - }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(istio_requests_total{}[5m])) by (destination_service_name) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{name=~\"${route_name}\",exported_namespace=~\"${api_namespace}\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "legendFormat": "API: {{name}}", - "range": true, - "refId": "A" - } - ], - "title": "Traffic summary (req/sec)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "req/s Heatmap", - "fieldConfig": { - "defaults": { - "color": { - "mode": "continuous-blues" - }, - "custom": { - "fillOpacity": 70, - "lineWidth": 0, - "spanNulls": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 8 - }, - "id": 22, - "options": { - "alignValue": "center", - "legend": { - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "mergeValues": false, - "rowHeight": 0.9, - "showValue": "never", - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "sum(rate(istio_requests_total{}[5m])) by (destination_service_name) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{name=~\"${route_name}\",exported_namespace=~\"${api_namespace}\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "format": "time_series", - "instant": false, - "legendFormat": "most recent", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(istio_requests_total{}[5m] offset $__range)) by (destination_service_name) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{name=~\"${route_name}\",exported_namespace=~\"${api_namespace}\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "format": "time_series", - "hide": false, - "legendFormat": "previous", - "range": true, - "refId": "B" - } - ], - "title": "Historical request comparison (req/sec)", - "type": "state-timeline" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Aggregated rate of requests per endpoint/path.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "axisSoftMin": 0, - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 5, - "gradientMode": "opacity", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineStyle": { - "fill": "solid" - }, - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 2, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 15 - }, - "id": 7, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(istio_requests_total{}[5m])) by (destination_service_name, request_url_path) * on(destination_service_name) group_left() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{name=~\"${route_name}\",exported_namespace=~\"${api_namespace}\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "legendFormat": "{{request_url_path}}", - "range": true, - "refId": "A" - } - ], - "title": "Breakdown by path (req/sec)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "auto", - "cellOptions": { - "type": "auto" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 15 - }, - "id": 155, - "options": { - "cellHeight": "sm", - "footer": { - "countRows": false, - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, - "showHeader": true - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "sum by(request_url_path) (increase(istio_requests_total{}[$__range]) * on(destination_service_name) group_left() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{name=~\"$route_name\",exported_namespace=~\"$api_namespace\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\"))))", - "format": "table", - "instant": true, - "range": false, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "sum by(request_url_path) (increase(istio_requests_total{}[$__range] offset $__range) * on(destination_service_name) group_left() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{name=~\"$route_name\",exported_namespace=~\"$api_namespace\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\"))))", - "format": "table", - "hide": false, - "instant": true, - "range": false, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "sum by(request_url_path) (increase(istio_requests_total{}[$__range]) * on(destination_service_name) group_left() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{name=~\"$route_name\",exported_namespace=~\"$api_namespace\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))) - sum by(request_url_path) (increase(istio_requests_total{}[$__range] offset $__range) * on(destination_service_name) group_left() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{name=~\"$route_name\",exported_namespace=~\"$api_namespace\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\"))))", - "format": "table", - "hide": false, - "instant": true, - "range": false, - "refId": "C" - } - ], - "title": "Total requests for selected range", - "transformations": [ - { - "id": "seriesToColumns", - "options": { - "byField": "request_url_path" - } - }, - { - "id": "organize", - "options": { - "excludeByName": { - "Time": true, - "Time 1": true, - "Time 2": true, - "Time 3": true, - "connection_security_policy 1": true, - "connection_security_policy 2": true, - "connection_security_policy 3": true, - "destination_app 1": true, - "destination_app 2": true, - "destination_app 3": true, - "destination_canonical_revision 1": true, - "destination_canonical_revision 2": true, - "destination_canonical_revision 3": true, - "destination_canonical_service 1": true, - "destination_canonical_service 2": true, - "destination_canonical_service 3": true, - "destination_cluster 1": true, - "destination_cluster 2": true, - "destination_cluster 3": true, - "destination_port 1": true, - "destination_port 2": true, - "destination_port 3": true, - "destination_principal 1": true, - "destination_principal 2": true, - "destination_principal 3": true, - "destination_service 1": true, - "destination_service 2": true, - "destination_service 3": true, - "destination_service_name 1": true, - "destination_service_name 2": true, - "destination_service_name 3": true, - "destination_service_namespace 1": true, - "destination_service_namespace 2": true, - "destination_service_namespace 3": true, - "destination_version 1": true, - "destination_version 2": true, - "destination_version 3": true, - "destination_workload 1": true, - "destination_workload 2": true, - "destination_workload 3": true, - "destination_workload_namespace 1": true, - "destination_workload_namespace 2": true, - "destination_workload_namespace 3": true, - "endpoint 1": true, - "endpoint 2": true, - "endpoint 3": true, - "instance 1": true, - "instance 2": true, - "instance 3": true, - "istio_io_gateway_name 1": true, - "istio_io_gateway_name 2": true, - "istio_io_gateway_name 3": true, - "job 1": true, - "job 2": true, - "job 3": true, - "namespace 1": true, - "namespace 2": true, - "namespace 3": true, - "pod 1": true, - "pod 2": true, - "pod 3": true, - "pod_template_hash 1": true, - "pod_template_hash 2": true, - "pod_template_hash 3": true, - "prometheus 1": true, - "prometheus 2": true, - "prometheus 3": true, - "receive 1": true, - "receive 2": true, - "receive 3": true, - "replica 1": true, - "replica 2": true, - "replica 3": true, - "reporter 1": true, - "reporter 2": true, - "reporter 3": true, - "request_host 1": true, - "request_host 2": true, - "request_host 3": true, - "request_protocol 1": true, - "request_protocol 2": true, - "request_protocol 3": true, - "response_code 1": true, - "response_code 2": true, - "response_code 3": true, - "response_flags 1": true, - "response_flags 2": true, - "response_flags 3": true, - "service 1": true, - "service 2": true, - "service 3": true, - "service_istio_io_canonical_name 1": true, - "service_istio_io_canonical_name 2": true, - "service_istio_io_canonical_name 3": true, - "service_istio_io_canonical_revision 1": true, - "service_istio_io_canonical_revision 2": true, - "service_istio_io_canonical_revision 3": true, - "sidecar_istio_io_inject 1": true, - "sidecar_istio_io_inject 2": true, - "sidecar_istio_io_inject 3": true, - "source_canonical_revision 1": true, - "source_canonical_revision 2": true, - "source_canonical_revision 3": true, - "source_canonical_service 1": true, - "source_canonical_service 2": true, - "source_canonical_service 3": true, - "source_cluster 1": true, - "source_cluster 2": true, - "source_cluster 3": true, - "source_principal 1": true, - "source_principal 2": true, - "source_principal 3": true, - "source_workload 1": true, - "source_workload 2": true, - "source_workload 3": true, - "source_workload_namespace 1": true, - "source_workload_namespace 2": true, - "source_workload_namespace 3": true, - "tenant_id 1": true, - "tenant_id 2": true, - "tenant_id 3": true - }, - "indexByName": {}, - "renameByName": { - "Value #A": "Most recent", - "Value #B": "Previous", - "Value #C": "Increase/Decrease", - "request_url_path": "Request path" - } - } - } - ], - "type": "table" - } - ], - "refresh": "30s", - "schemaVersion": 38, - "style": "dark", - "tags": [ - "kuadrant" - ], - "templating": { - "list": [ - { - "current": { - "selected": false, - "text": "Kuadrant-Thanos-Hub", - "value": "Kuadrant-Thanos-Hub" - }, - "hide": 0, - "includeAll": false, - "multi": false, - "name": "datasource", - "options": [], - "query": "prometheus", - "queryValue": "", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" - }, - { - "current": {}, - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "definition": "label_values(kube_namespace_created, exported_namespace)", - "description": "Namespace of HTTPRoute resources", - "hide": 0, - "includeAll": true, - "label": "API/HTTPRoute Namespace", - "multi": true, - "name": "api_namespace", - "options": [], - "query": { - "query": "label_values(kube_namespace_created, exported_namespace)", - "refId": "StandardVariableQuery" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - }, - { - "current": {}, - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "definition": "label_values(gatewayapi_httproute_labels, name)", - "description": "Name of the HTTPRoute resource", - "hide": 0, - "includeAll": true, - "label": "API/Route Name", - "multi": true, - "name": "route_name", - "options": [], - "query": { - "query": "label_values(gatewayapi_httproute_labels, name)", - "refId": "StandardVariableQuery" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - } - ] - }, - "time": { - "from": "now-30m", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "30s", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Business User Dashboard", - "uid": "jA3LDk-Iz", - "version": 1, - "weekStart": "" -} diff --git a/0.10.0/kuadrant-operator/examples/dashboards/controller-resources-metrics.json b/0.10.0/kuadrant-operator/examples/dashboards/controller-resources-metrics.json deleted file mode 100644 index 1658cc8e0..000000000 --- a/0.10.0/kuadrant-operator/examples/dashboards/controller-resources-metrics.json +++ /dev/null @@ -1,339 +0,0 @@ -{ - "__requires": [ - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "1.0.0" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": { - "type": "datasource", - "uid": "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, - "fiscalYearStartMonth": 0, - "graphTooltip": 0, - "links": [], - "liveNow": false, - "panels": [ - { - "datasource": { - "type": "datasource", - "uid": "grafana" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "continuous-GrYlRd" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 20, - "gradientMode": "scheme", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "smooth", - "lineWidth": 3, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "percent" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 0 - }, - "id": 2, - "interval": "1m", - "links": [], - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.4.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "exemplar": true, - "expr": "rate(process_cpu_seconds_total{job=\"$job\", namespace=\"$namespace\", pod=\"$pod\"}[5m]) * 100", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "Pod: {{pod}} | Container: {{container}}", - "refId": "A", - "step": 10 - } - ], - "title": "Controller CPU Usage", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "continuous-GrYlRd" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 20, - "gradientMode": "scheme", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "smooth", - "lineWidth": 3, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "bytes" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 0 - }, - "id": 4, - "interval": "1m", - "links": [], - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.4.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "exemplar": true, - "expr": "process_resident_memory_bytes{job=\"$job\", namespace=\"$namespace\", pod=\"$pod\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "Pod: {{pod}} | Container: {{container}}", - "refId": "A", - "step": 10 - } - ], - "title": "Controller Memory Usage", - "type": "timeseries" - } - ], - "refresh": "", - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "current": { - "selected": false, - "text": "Kuadrant-Thanos-Hub", - "value": "Kuadrant-Thanos-Hub" - }, - "hide": 0, - "includeAll": false, - "label": "Datasource", - "multi": false, - "name": "datasource", - "options": [], - "query": "prometheus", - "queryValue": "", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "definition": "label_values(controller_runtime_reconcile_total{namespace=~\"$namespace\"}, job)", - "hide": 0, - "includeAll": false, - "multi": false, - "name": "job", - "options": [], - "query": { - "query": "label_values(controller_runtime_reconcile_total{namespace=~\"$namespace\"}, job)", - "refId": "StandardVariableQuery" - }, - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - }, - { - "current": { - "selected": false, - "text": "observability", - "value": "observability" - }, - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "definition": "label_values(controller_runtime_reconcile_total, namespace)", - "hide": 0, - "includeAll": false, - "multi": false, - "name": "namespace", - "options": [], - "query": { - "query": "label_values(controller_runtime_reconcile_total, namespace)", - "refId": "StandardVariableQuery" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - }, - { - "current": { - "selected": false, - "text": "All", - "value": "$__all" - }, - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "definition": "label_values(controller_runtime_reconcile_total{namespace=~\"$namespace\", job=\"$job\"}, pod)", - "hide": 2, - "includeAll": true, - "label": "pod", - "multi": true, - "name": "pod", - "options": [], - "query": { - "query": "label_values(controller_runtime_reconcile_total{namespace=~\"$namespace\", job=\"$job\"}, pod)", - "refId": "StandardVariableQuery" - }, - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - } - ] - }, - "time": { - "from": "now-15m", - "to": "now" - }, - "timepicker": {}, - "timezone": "", - "title": "Controller-Resources-Metrics", - "weekStart": "" -} diff --git a/0.10.0/kuadrant-operator/examples/dashboards/controller-runtime-metrics.json b/0.10.0/kuadrant-operator/examples/dashboards/controller-runtime-metrics.json deleted file mode 100644 index e2c8ec6e5..000000000 --- a/0.10.0/kuadrant-operator/examples/dashboards/controller-runtime-metrics.json +++ /dev/null @@ -1,776 +0,0 @@ -{ - "__requires": [ - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "1.0.0" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": { - "type": "datasource", - "uid": "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, - "fiscalYearStartMonth": 0, - "graphTooltip": 0, - "links": [], - "liveNow": false, - "panels": [ - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 9, - "panels": [], - "title": "Reconciliation Metrics", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Total number of reconciliations per controller", - "fieldConfig": { - "defaults": { - "color": { - "mode": "continuous-GrYlRd" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 20, - "gradientMode": "scheme", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "smooth", - "lineWidth": 3, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "cpm" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 1 - }, - "id": 7, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": true, - "expr": "sum(rate(controller_runtime_reconcile_total{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, pod)", - "interval": "", - "legendFormat": "{{instance}} {{pod}}", - "range": true, - "refId": "A" - } - ], - "title": "Total Reconciliation Count Per Controller", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Total number of reconciliation errors per controller", - "fieldConfig": { - "defaults": { - "color": { - "mode": "continuous-GrYlRd" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 20, - "gradientMode": "scheme", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "smooth", - "lineWidth": 3, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "cpm" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 1 - }, - "id": 6, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": true, - "expr": "sum(rate(controller_runtime_reconcile_errors_total{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, pod)", - "interval": "", - "legendFormat": "{{instance}} {{pod}}", - "range": true, - "refId": "A" - } - ], - "title": "Reconciliation Error Count Per Controller", - "type": "timeseries" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 8 - }, - "id": 11, - "panels": [], - "title": "Work Queue Metrics", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "How long in seconds an item stays in workqueue before being requested", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "normal" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "s" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 9 - }, - "id": 13, - "options": { - "legend": { - "calcs": [ - "max", - "mean" - ], - "displayMode": "list", - "placement": "right" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "exemplar": true, - "expr": "histogram_quantile(0.50, sum(rate(workqueue_queue_duration_seconds_bucket{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, name, le))", - "interval": "", - "legendFormat": "P50 {{name}} {{instance}} ", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "exemplar": true, - "expr": "histogram_quantile(0.90, sum(rate(workqueue_queue_duration_seconds_bucket{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, name, le))", - "hide": false, - "interval": "", - "legendFormat": "P90 {{name}} {{instance}} ", - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "exemplar": true, - "expr": "histogram_quantile(0.99, sum(rate(workqueue_queue_duration_seconds_bucket{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, name, le))", - "hide": false, - "interval": "", - "legendFormat": "P99 {{name}} {{instance}} ", - "refId": "C" - } - ], - "title": "Seconds For Items Stay In Queue (before being requested) (P50, P90, P99)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "continuous-GrYlRd" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 20, - "gradientMode": "scheme", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "smooth", - "lineWidth": 3, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "ops" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 9 - }, - "id": 15, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.4.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "exemplar": true, - "expr": "sum(rate(workqueue_adds_total{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, name)", - "interval": "", - "legendFormat": "{{name}} {{instance}}", - "refId": "A" - } - ], - "title": "Work Queue Add Rate", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "How long in seconds processing an item from workqueue takes.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "s" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 16 - }, - "id": 19, - "options": { - "legend": { - "calcs": [ - "max", - "mean" - ], - "displayMode": "table", - "placement": "right" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "exemplar": true, - "expr": "histogram_quantile(0.50, sum(rate(workqueue_work_duration_seconds_bucket{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, name, le))", - "interval": "", - "legendFormat": "P50 {{name}} {{instance}} ", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "exemplar": true, - "expr": "histogram_quantile(0.90, sum(rate(workqueue_work_duration_seconds_bucket{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, name, le))", - "hide": false, - "interval": "", - "legendFormat": "P90 {{name}} {{instance}} ", - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "exemplar": true, - "expr": "histogram_quantile(0.99, sum(rate(workqueue_work_duration_seconds_bucket{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, name, le))", - "hide": false, - "interval": "", - "legendFormat": "P99 {{name}} {{instance}} ", - "refId": "C" - } - ], - "title": "Seconds Processing Items From WorkQueue (P50, P90, P99)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Total number of retries handled by workqueue", - "fieldConfig": { - "defaults": { - "color": { - "mode": "continuous-GrYlRd" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 20, - "gradientMode": "scheme", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "smooth", - "lineWidth": 3, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "ops" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 16 - }, - "id": 17, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "exemplar": true, - "expr": "sum(rate(workqueue_retries_total{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, name)", - "interval": "", - "legendFormat": "{{name}} {{instance}} ", - "refId": "A" - } - ], - "title": "Work Queue Retries Rate", - "type": "timeseries" - } - ], - "refresh": "", - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "current": { - "selected": false, - "text": "Kuadrant-Thanos-Hub", - "value": "Kuadrant-Thanos-Hub" - }, - "hide": 0, - "includeAll": false, - "label": "Datasource", - "multi": false, - "name": "datasource", - "options": [], - "query": "prometheus", - "queryValue": "", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "definition": "label_values(controller_runtime_reconcile_total{namespace=~\"$namespace\"}, job)", - "hide": 0, - "includeAll": false, - "multi": false, - "name": "job", - "options": [], - "query": { - "query": "label_values(controller_runtime_reconcile_total{namespace=~\"$namespace\"}, job)", - "refId": "StandardVariableQuery" - }, - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "definition": "label_values(controller_runtime_reconcile_total, namespace)", - "hide": 0, - "includeAll": false, - "multi": false, - "name": "namespace", - "options": [], - "query": { - "query": "label_values(controller_runtime_reconcile_total, namespace)", - "refId": "StandardVariableQuery" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - }, - { - "current": { - "selected": true, - "text": [ - "All" - ], - "value": [ - "$__all" - ] - }, - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "definition": "label_values(controller_runtime_reconcile_total{namespace=~\"$namespace\", job=~\"$job\"}, pod)", - "hide": 2, - "includeAll": true, - "label": "pod", - "multi": true, - "name": "pod", - "options": [], - "query": { - "query": "label_values(controller_runtime_reconcile_total{namespace=~\"$namespace\", job=~\"$job\"}, pod)", - "refId": "StandardVariableQuery" - }, - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - } - ] - }, - "time": { - "from": "now-15m", - "to": "now" - }, - "timepicker": {}, - "timezone": "", - "title": "Controller-Runtime-Metrics", - "weekStart": "" -} diff --git a/0.10.0/kuadrant-operator/examples/dashboards/kustomization.yaml b/0.10.0/kuadrant-operator/examples/dashboards/kustomization.yaml deleted file mode 100644 index 96a64d330..000000000 --- a/0.10.0/kuadrant-operator/examples/dashboards/kustomization.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -# grafana-dashboard dashboards as configmaps -configMapGenerator: -- name: grafana-app-developer - namespace: monitoring - files: - - ./app_developer.json -- name: grafana-business-user - namespace: monitoring - files: - - ./business_user.json -- name: grafana-platform-engineer - namespace: monitoring - files: - - ./platform_engineer.json -- name: grafana-controller-runtime - namespace: monitoring - files: - - ./controller-runtime-metrics.json -- name: grafana-controller-resources - namespace: monitoring - files: - - ./controller-resources-metrics.json - -generatorOptions: - disableNameSuffixHash: true diff --git a/0.10.0/kuadrant-operator/examples/dashboards/platform_engineer.json b/0.10.0/kuadrant-operator/examples/dashboards/platform_engineer.json deleted file mode 100644 index 24589a3a7..000000000 --- a/0.10.0/kuadrant-operator/examples/dashboards/platform_engineer.json +++ /dev/null @@ -1,2616 +0,0 @@ -{ - "__requires": [ - { - "type": "panel", - "id": "dashlist", - "name": "Dashboard list", - "version": "" - }, - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "9.5.3" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "1.0.0" - }, - { - "type": "panel", - "id": "stat", - "name": "Stat", - "version": "" - }, - { - "type": "panel", - "id": "state-timeline", - "name": "State timeline", - "version": "" - }, - { - "type": "panel", - "id": "table", - "name": "Table", - "version": "" - }, - { - "type": "panel", - "id": "text", - "name": "Text", - "version": "" - }, - { - "type": "panel", - "id": "timeseries", - "name": "Time series", - "version": "" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": { - "type": "datasource", - "uid": "grafana" - }, - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "target": { - "limit": 100, - "matchAny": false, - "tags": [], - "type": "dashboard" - }, - "type": "dashboard" - } - ] - }, - "description": "APIs", - "editable": true, - "fiscalYearStartMonth": 0, - "gnetId": 7630, - "graphTooltip": 1, - "id": null, - "links": [], - "liveNow": false, - "panels": [ - { - "datasource": { - "type": "datasource", - "uid": "grafana" - }, - "description": "", - "gridPos": { - "h": 7, - "w": 6, - "x": 0, - "y": 0 - }, - "id": 152, - "options": { - "maxItems": 10, - "query": "", - "showHeadings": false, - "showRecentlyViewed": false, - "showSearch": true, - "showStarred": false, - "tags": [ - "kuadrant" - ] - }, - "pluginVersion": "9.5.3", - "title": "Kuadrant Dashboards", - "type": "dashlist" - }, - { - "datasource": { - "type": "datasource", - "uid": "grafana" - }, - "description": "", - "gridPos": { - "h": 7, - "w": 18, - "x": 6, - "y": 0 - }, - "id": 150, - "options": { - "code": { - "language": "plaintext", - "showLineNumbers": false, - "showMiniMap": false - }, - "content": "#### Overview of Gateways, Policies and APIs\n\nThe panels below are grouped by Gateways and APIs. A Gateway is a [Gateway API defined gateway](https://gateway-api.sigs.k8s.io/concepts/api-overview/#gateway) resource. An API is realised by a [Gateway API HTTPRoute](https://gateway-api.sigs.k8s.io/concepts/api-overview/#httproute).\nAny policies [attached to the Gateways and APIs](https://gateway-api.sigs.k8s.io/geps/gep-713/) will be shown, as well as summary request and error metrics for APIs.\n\n*Important: HTTPRoutes must include a \"service\" and \"deployment\" label with a value that matches the name of the service & deployment being routed to. eg. \"service=myapp, deployment=myapp\"*", - "mode": "markdown" - }, - "pluginVersion": "9.5.3", - "title": "Platform Engineer Dashboard", - "type": "text" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 7 - }, - "id": 128, - "panels": [], - "title": "Gateways", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Total number of Gateway API gateways", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "blue", - "mode": "fixed" - }, - "mappings": [], - "noValue": "0", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 3, - "w": 3, - "x": 0, - "y": 8 - }, - "id": 146, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "count(gatewayapi_gateway_info{exported_namespace=~\"${gateway_namespace}\"})", - "instant": true, - "range": false, - "refId": "A" - } - ], - "title": "Total", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "List of all Gateways, their class and status.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "center", - "cellOptions": { - "type": "auto" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Programmed" - }, - "properties": [ - { - "id": "unit", - "value": "bool" - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Accepted" - }, - "properties": [ - { - "id": "unit", - "value": "bool" - } - ] - } - ] - }, - "gridPos": { - "h": 9, - "w": 21, - "x": 3, - "y": 8 - }, - "id": 115, - "options": { - "cellHeight": "sm", - "footer": { - "countRows": false, - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, - "frameIndex": 0, - "showHeader": true, - "sortBy": [] - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "gatewayapi_gateway_info{exported_namespace=~\"${gateway_namespace}\"}", - "format": "table", - "instant": true, - "range": false, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "gatewayapi_gateway_status{exported_namespace=~\"${gateway_namespace}\",type=\"Programmed\"}", - "format": "table", - "hide": false, - "instant": true, - "range": false, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "gatewayapi_gateway_status{exported_namespace=~\"${gateway_namespace}\",type=\"Accepted\"}", - "format": "table", - "hide": false, - "instant": true, - "range": false, - "refId": "C" - } - ], - "title": "Gateways", - "transformations": [ - { - "id": "concatenate", - "options": { - "frameNameLabel": "frame", - "frameNameMode": "drop" - } - }, - { - "id": "organize", - "options": { - "excludeByName": { - "Time": true, - "Value #A": true, - "__name__ 1": true, - "__name__ 2": true, - "__name__ 3": true, - "cluster_id 2": true, - "cluster_id 3": true, - "container 1": true, - "container 2": true, - "container 3": true, - "customresource_group 1": true, - "customresource_group 2": true, - "customresource_group 3": true, - "customresource_kind 1": true, - "customresource_kind 2": true, - "customresource_kind 3": true, - "customresource_version 1": true, - "customresource_version 2": true, - "customresource_version 3": true, - "exported_namespace 1": false, - "exported_namespace 2": true, - "exported_namespace 3": true, - "instance 1": true, - "instance 2": true, - "instance 3": true, - "job 1": true, - "job 2": true, - "job 3": true, - "name 1": false, - "name 2": true, - "name 3": true, - "namespace 1": true, - "namespace 2": true, - "namespace 3": true, - "prometheus 1": true, - "prometheus 2": true, - "prometheus 3": true, - "receive 1": true, - "receive 2": true, - "receive 3": true, - "replica 1": true, - "replica 2": true, - "replica 3": true, - "tenant_id 1": true, - "tenant_id 2": true, - "tenant_id 3": true, - "type 1": true, - "type 2": true - }, - "indexByName": { - "Time": 1, - "Value #A": 13, - "Value #B": 26, - "Value #C": 39, - "__name__ 1": 2, - "__name__ 2": 14, - "__name__ 3": 27, - "container 1": 3, - "container 2": 15, - "container 3": 28, - "customresource_group 1": 4, - "customresource_group 2": 16, - "customresource_group 3": 29, - "customresource_kind 1": 5, - "customresource_kind 2": 17, - "customresource_kind 3": 30, - "customresource_version 1": 6, - "customresource_version 2": 18, - "customresource_version 3": 31, - "exported_namespace 1": 8, - "exported_namespace 2": 19, - "exported_namespace 3": 32, - "gatewayclass_name": 0, - "instance 1": 9, - "instance 2": 20, - "instance 3": 33, - "job 1": 10, - "job 2": 21, - "job 3": 34, - "name 1": 7, - "name 2": 22, - "name 3": 35, - "namespace 1": 11, - "namespace 2": 23, - "namespace 3": 36, - "prometheus 1": 12, - "prometheus 2": 24, - "prometheus 3": 37, - "type 1": 25, - "type 2": 38 - }, - "renameByName": { - "Time": "", - "Value #B": "Programmed", - "Value #C": "Accepted", - "__name__ 3": "", - "cluster_id 1": "Cluster ID", - "exported_namespace 1": "Namespace", - "gatewayclass_name": "Gateway Class", - "job 1": "", - "name 1": "Name" - } - } - } - ], - "type": "table" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Total Gateways with an [Accepted and Programmed](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io%2fv1.GatewayConditionType) state of True", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "light-green", - "mode": "fixed" - }, - "mappings": [], - "noValue": "0", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 3, - "w": 3, - "x": 0, - "y": 11 - }, - "id": 147, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "count(gatewayapi_gateway_status{exported_namespace=~\"${gateway_namespace}\",type=\"Accepted\"} > 0 and ignoring(type) gatewayapi_gateway_status{exported_namespace=~\"${gateway_namespace}\",type=\"Programmed\"} > 0)", - "instant": true, - "range": false, - "refId": "A" - } - ], - "title": "Healthy", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Total Gateways with a False or missing [Accepted or Programmed](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io%2fv1.GatewayConditionType) state.", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "light-yellow", - "mode": "fixed" - }, - "mappings": [], - "noValue": "0", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 3, - "w": 3, - "x": 0, - "y": 14 - }, - "id": 148, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "count(\n(gatewayapi_gateway_info{exported_namespace=~\"${gateway_namespace}\"} * on(name, exported_namespace, instance) group_left gatewayapi_gateway_status{exported_namespace=~\"${gateway_namespace}\",type=\"Programmed\"} < 1)\nor ignoring(type) \n(gatewayapi_gateway_info{exported_namespace=~\"${gateway_namespace}\"} * on(name, exported_namespace, instance) group_left gatewayapi_gateway_status{exported_namespace=~\"${gateway_namespace}\",type=\"Accepted\"} < 1)\n)", - "instant": true, - "range": false, - "refId": "A" - } - ], - "title": "Unhealthy", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "List of all listeners in Gateways", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "center", - "cellOptions": { - "type": "auto" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 17 - }, - "id": 154, - "options": { - "cellHeight": "sm", - "footer": { - "countRows": false, - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, - "frameIndex": 0, - "showHeader": true, - "sortBy": [] - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "gatewayapi_gateway_listener_info{exported_namespace=~\"${gateway_namespace}\"}", - "format": "table", - "instant": true, - "range": false, - "refId": "A" - } - ], - "title": "Gateway Listeners", - "transformations": [ - { - "id": "organize", - "options": { - "excludeByName": { - "Time": true, - "Value": true, - "Value #A": true, - "Value #B": true, - "Value #C": true, - "Value #D": true, - "__name__": true, - "container": true, - "customresource_group": true, - "customresource_kind": true, - "customresource_version": true, - "instance": true, - "job": true, - "namespace": false, - "prometheus": true, - "receive": true, - "replica": true, - "target_group": true, - "tenant_id": true - }, - "indexByName": { - "Time": 0, - "Value": 21, - "__name__": 1, - "allowed_routes_namespaces_from": 19, - "cluster_id": 20, - "container": 2, - "customresource_group": 3, - "customresource_kind": 4, - "customresource_version": 5, - "hostname": 11, - "instance": 7, - "job": 8, - "listener_name": 12, - "name": 6, - "namespace": 9, - "port": 13, - "prometheus": 10, - "protocol": 14, - "receive": 15, - "replica": 16, - "tenant_id": 17, - "tls_mode": 18 - }, - "renameByName": { - "Value #A": "", - "allowed_routes_namespaces_from": "Allowed Routes NS", - "cluster_id": "Cluster ID", - "customresource_kind": "Kind", - "exported_namespace": "Namespace", - "hostname": "Hostname", - "listener_name": "Listener", - "name": "Gateway", - "namespace": "Gateway NS", - "port": "Port", - "protocol": "Protocol", - "receive": "", - "target_kind": "Target Kind", - "target_name": "Target Name", - "tls_mode": "TLS Mode" - } - } - } - ], - "type": "table" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "List of all Policies targeting a Gateway", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "center", - "cellOptions": { - "type": "auto" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 17 - }, - "id": 117, - "options": { - "cellHeight": "sm", - "footer": { - "countRows": false, - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, - "frameIndex": 0, - "showHeader": true, - "sortBy": [] - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "gatewayapi_tlspolicy_target_info{exported_namespace=~\"${gateway_namespace}\",target_kind=\"Gateway\"}", - "format": "table", - "instant": true, - "range": false, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "gatewayapi_ratelimitpolicy_target_info{exported_namespace=~\"${gateway_namespace}\",target_kind=\"Gateway\"}", - "format": "table", - "hide": false, - "instant": true, - "range": false, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "gatewayapi_authpolicy_target_info{exported_namespace=~\"${gateway_namespace}\",target_kind=\"Gateway\"}", - "format": "table", - "hide": false, - "instant": true, - "range": false, - "refId": "C" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "gatewayapi_dnspolicy_target_info{exported_namespace=~\"${gateway_namespace}\",target_kind=\"Gateway\"}", - "format": "table", - "hide": false, - "instant": true, - "range": false, - "refId": "D" - } - ], - "title": "Gateway Policies", - "transformations": [ - { - "id": "merge", - "options": {} - }, - { - "id": "organize", - "options": { - "excludeByName": { - "Time": true, - "Value": true, - "Value #A": true, - "Value #B": true, - "Value #C": true, - "Value #D": true, - "__name__": true, - "container": true, - "customresource_group": true, - "customresource_version": true, - "instance": true, - "job": true, - "namespace": true, - "prometheus": true, - "receive": true, - "replica": true, - "target_group": true, - "tenant_id": true - }, - "indexByName": { - "Time": 0, - "Value #A": 15, - "Value #B": 16, - "__name__": 1, - "container": 2, - "customresource_group": 3, - "customresource_kind": 4, - "customresource_version": 5, - "exported_namespace": 7, - "instance": 8, - "job": 9, - "name": 6, - "namespace": 10, - "prometheus": 11, - "target_group": 12, - "target_kind": 13, - "target_name": 14 - }, - "renameByName": { - "Value #A": "", - "cluster_id": "Cluster ID", - "customresource_kind": "Kind", - "exported_namespace": "Namespace", - "name": "Name", - "namespace": "Namespace", - "receive": "", - "target_kind": "Target Kind", - "target_name": "Target Name" - } - } - } - ], - "type": "table" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 26 - }, - "id": 145, - "panels": [], - "title": "APIs/HTTPRoutes", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "List of all APIs (HTTPRoutes) and their hostnames & corresponding Deployment names.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "center", - "cellOptions": { - "type": "auto" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 27 - }, - "id": 97, - "options": { - "cellHeight": "sm", - "footer": { - "countRows": false, - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, - "showHeader": true - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "gatewayapi_httproute_hostname_info{name=~\"${route_name}\",exported_namespace=~\"${api_policy_namespace}\"}", - "format": "table", - "instant": true, - "legendFormat": "__auto", - "range": false, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "gatewayapi_httproute_labels{name=~\"${route_name}\",exported_namespace=~\"${api_policy_namespace}\"}", - "format": "table", - "hide": false, - "instant": true, - "range": false, - "refId": "B" - } - ], - "title": "APIs/HTTPRoutes", - "transformations": [ - { - "id": "concatenate", - "options": { - "frameNameLabel": "frame", - "frameNameMode": "drop" - } - }, - { - "id": "organize", - "options": { - "excludeByName": { - "Time": true, - "Value #A": true, - "Value #B": true, - "__name__ 1": true, - "__name__ 2": true, - "cluster_id 2": true, - "container 1": true, - "container 2": true, - "customresource_group 1": true, - "customresource_group 2": true, - "customresource_kind 1": true, - "customresource_kind 2": true, - "customresource_version 1": true, - "customresource_version 2": true, - "instance 1": true, - "instance 2": true, - "job 1": true, - "job 2": true, - "name 1": true, - "name 2": true, - "namespace 1": false, - "namespace 2": true, - "prometheus 1": true, - "prometheus 2": true, - "receive 1": true, - "receive 2": true, - "replica 1": true, - "replica 2": true, - "service": true, - "tenant_id 1": true, - "tenant_id 2": true - }, - "indexByName": { - "Time": 0, - "Value #A": 17, - "Value #B": 33, - "__name__ 1": 1, - "__name__ 2": 18, - "cluster_id 1": 9, - "cluster_id 2": 19, - "container 1": 2, - "container 2": 20, - "customresource_group 1": 3, - "customresource_group 2": 21, - "customresource_kind 1": 4, - "customresource_kind 2": 22, - "customresource_version 1": 5, - "customresource_version 2": 23, - "deployment": 6, - "hostname": 7, - "instance 1": 10, - "instance 2": 24, - "job 1": 11, - "job 2": 25, - "name 1": 12, - "name 2": 26, - "namespace 1": 8, - "namespace 2": 27, - "prometheus 1": 13, - "prometheus 2": 28, - "receive 1": 14, - "receive 2": 29, - "replica 1": 15, - "replica 2": 30, - "service": 31, - "tenant_id 1": 16, - "tenant_id 2": 32 - }, - "renameByName": { - "cluster_id 1": "Cluster ID", - "deployment": "Deployment", - "hostname": "Hostname", - "namespace 1": "Namespace", - "prometheus 2": "" - } - } - } - ], - "type": "table" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "List of all Policies targeting HTTPRoutes", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "center", - "cellOptions": { - "type": "auto" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 27 - }, - "id": 118, - "options": { - "cellHeight": "sm", - "footer": { - "countRows": false, - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, - "frameIndex": 0, - "showHeader": true, - "sortBy": [] - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "gatewayapi_tlspolicy_target_info{exported_namespace=~\"${api_policy_namespace}\",target_kind!=\"Gateway\",target_name=~\"${route_name}\"}", - "format": "table", - "instant": true, - "range": false, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "gatewayapi_ratelimitpolicy_target_info{exported_namespace=~\"${api_policy_namespace}\",target_kind!=\"Gateway\",target_name=~\"${route_name}\"}", - "format": "table", - "hide": false, - "instant": true, - "range": false, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "gatewayapi_authpolicy_target_info{exported_namespace=~\"${api_policy_namespace}\",target_kind!=\"Gateway\",target_name=~\"${route_name}\"}", - "format": "table", - "hide": false, - "instant": true, - "range": false, - "refId": "C" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "gatewayapi_dnspolicy_target_info{exported_namespace=~\"${api_policy_namespace}\",target_kind!=\"Gateway\",target_name=~\"${route_name}\"}", - "format": "table", - "hide": false, - "instant": true, - "range": false, - "refId": "D" - } - ], - "title": "HTTPRoute Policies", - "transformations": [ - { - "id": "merge", - "options": {} - }, - { - "id": "organize", - "options": { - "excludeByName": { - "Time": true, - "Value": true, - "Value #A": true, - "Value #B": true, - "Value #C": true, - "Value #D": true, - "__name__": true, - "container": true, - "customresource_group": true, - "customresource_version": true, - "instance": true, - "job": true, - "namespace": false, - "prometheus": true, - "receive": true, - "replica": true, - "target_group": true, - "tenant_id": true - }, - "indexByName": { - "Time": 0, - "Value #A": 15, - "Value #B": 16, - "__name__": 1, - "container": 2, - "customresource_group": 3, - "customresource_kind": 4, - "customresource_version": 5, - "exported_namespace": 7, - "instance": 8, - "job": 9, - "name": 6, - "namespace": 10, - "prometheus": 11, - "target_group": 12, - "target_kind": 13, - "target_name": 14 - }, - "renameByName": { - "Value #A": "", - "cluster_id": "Cluster ID", - "customresource_kind": "Kind", - "exported_namespace": "Namespace", - "name": "Name", - "namespace": "Namespace", - "target_kind": "Target Kind", - "target_name": "Target Name", - "target_namespace": "Target Namespace" - } - } - } - ], - "type": "table" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Aggregated rate of requests per API (HTTPRoute). The API name can be cross referenced with the API list to see additional details.\n\nNote: HTTPRoutes require a label `deployment` with the name of the corresponding Deployment so that istio request metrics can be paired with HTTPRoute metrics.", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "blue", - "mode": "fixed" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "axisSoftMin": 0, - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 5, - "gradientMode": "opacity", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineStyle": { - "fill": "solid" - }, - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 2, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 33 - }, - "id": 120, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(istio_requests_total{}[5m])) by (destination_service_name) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{name=~\"${route_name}\",exported_namespace=~\"${api_policy_namespace}\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "legendFormat": "API: {{name}}", - "range": true, - "refId": "A" - } - ], - "title": "Total requests (req/sec)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Aggregated rate of requests per API (HTTPRoute). The API name can be cross referenced with the API list to see additional details.\n\nNote: HTTPRoutes require a label `deployment` with the name of the corresponding Deployment so that istio request metrics can be paired with HTTPRoute metrics.", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "blue", - "mode": "fixed" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "axisSoftMin": 0, - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 5, - "gradientMode": "opacity", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineStyle": { - "fill": "solid" - }, - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 2, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 33 - }, - "id": 153, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(istio_requests_total{}[5m])) by (destination_service_name) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{name=~\"${route_name}\",exported_namespace=~\"${api_policy_namespace}\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "legendFormat": "API: {{name}}", - "range": true, - "refId": "A" - } - ], - "title": "Total requests (req/sec)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Aggregated request latencies per API (HTTPRoute). 99th and 95th percentiles are shown. The API name can be cross referenced with the API list to see additional details.\n\nNote: HTTPRoutes require a label `deployment` with the name of the corresponding Deployment so that istio request metrics can be paired with HTTPRoute metrics.", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "blue", - "mode": "fixed" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "axisSoftMin": 0, - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 5, - "gradientMode": "opacity", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineStyle": { - "fill": "solid" - }, - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ms" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 33 - }, - "id": 137, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{destination_service_name=~\"$route_name\"}[5m])) by (le, destination_service_name)) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{service=~\"$route_name\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "legendFormat": "{{service}} - 99th %ile", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{destination_service_name=~\"$route_name\"}[5m])) by (le, destination_service_name)) * on(destination_service_name) group_right() (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{service=~\"$route_name\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "hide": false, - "legendFormat": "{{service}} - 95th %ile", - "range": true, - "refId": "C" - } - ], - "title": "Request latency", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "$datasource" - }, - "description": "CPU Usage of all workloads (Deployments) linked to a HTTPRoute. That is, they have a corresponding HTTPRoute with a deployment label.", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "blue", - "mode": "fixed" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 5, - "gradientMode": "opacity", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "normal" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "short" - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "quota - requests" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "#F2495C", - "mode": "fixed" - } - }, - { - "id": "custom.fillOpacity", - "value": 0 - }, - { - "id": "custom.lineWidth", - "value": 2 - }, - { - "id": "custom.stacking", - "value": { - "group": false, - "mode": "normal" - } - }, - { - "id": "custom.lineStyle", - "value": { - "dash": [ - 10, - 10 - ], - "fill": "dash" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "quota - limits" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "#FF9830", - "mode": "fixed" - } - }, - { - "id": "custom.fillOpacity", - "value": 0 - }, - { - "id": "custom.lineWidth", - "value": 2 - }, - { - "id": "custom.stacking", - "value": { - "group": false, - "mode": "normal" - } - }, - { - "id": "custom.lineStyle", - "value": { - "dash": [ - 10, - 10 - ], - "fill": "dash" - } - } - ] - } - ] - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 40 - }, - "id": 141, - "interval": "1m", - "links": [], - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "pluginVersion": "8.5.5", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{exported_namespace=~\"$api_policy_namespace\"}\n* on(namespace, exported_namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{exported_namespace=~\"$api_policy_namespace\", workload_type=\"deployment\"}\n) by (workload, workload_type)\n* on(workload) (group by(workload) (label_replace(gatewayapi_httproute_labels{exported_namespace=~\"$api_policy_namespace\",name=~\"$route_name\"}, \"workload\", \"$1\",\"deployment\", \"(.+)\")))", - "format": "time_series", - "legendFormat": "API: {{workload}}", - "range": true, - "refId": "A" - } - ], - "title": "CPU Usage", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "$datasource" - }, - "description": "Memory Usage of all workloads (Deployments) linked to a HTTPRoute. That is, they have a corresponding HTTPRoute with a deployment label.", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "blue", - "mode": "fixed" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 5, - "gradientMode": "opacity", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "normal" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "bytes" - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "quota - requests" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "#F2495C", - "mode": "fixed" - } - }, - { - "id": "custom.fillOpacity", - "value": 0 - }, - { - "id": "custom.lineWidth", - "value": 2 - }, - { - "id": "custom.stacking", - "value": { - "group": false, - "mode": "normal" - } - }, - { - "id": "custom.lineStyle", - "value": { - "dash": [ - 10, - 10 - ], - "fill": "dash" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "quota - limits" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "#FF9830", - "mode": "fixed" - } - }, - { - "id": "custom.fillOpacity", - "value": 0 - }, - { - "id": "custom.lineWidth", - "value": 2 - }, - { - "id": "custom.stacking", - "value": { - "group": false, - "mode": "normal" - } - }, - { - "id": "custom.lineStyle", - "value": { - "dash": [ - 10, - 10 - ], - "fill": "dash" - } - } - ] - } - ] - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 40 - }, - "id": 143, - "interval": "1m", - "links": [], - "options": { - "legend": { - "calcs": [], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "pluginVersion": "8.5.5", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(\n container_memory_working_set_bytes{metrics_path=\"/metrics/cadvisor\", exported_namespace=~\"$api_policy_namespace\", container!=\"\", image!=\"\"}\n * on(namespace, exported_namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{exported_namespace=~\"$api_policy_namespace\", workload_type=\"deployment\"}\n) by (workload, workload_type)\n* on(workload) (group by(workload) (label_replace(gatewayapi_httproute_labels{exported_namespace=~\"$api_policy_namespace\",name=~\"$route_name\"}, \"workload\", \"$1\",\"deployment\", \"(.+)\")))", - "format": "time_series", - "legendFormat": "API: {{workload}}", - "range": true, - "refId": "A" - } - ], - "title": "Memory Usage", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Rate of 4xx & 5xx response codes and total HTTP response code errors by API/HTTPRoute", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "light-yellow", - "mode": "continuous-YlRd" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "axisSoftMin": 0, - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 5, - "gradientMode": "opacity", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 1, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 2, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 40 - }, - "id": 139, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(istio_requests_total{response_code=~\"4.*|5.*\"}[5m])) by (destination_service_name, response_code) * on(destination_service_name) group_left(name) (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{exported_namespace=~\"${api_policy_namespace}\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "legendFormat": "{{name}} - {{response_code}}", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(istio_requests_total{response_code=~\"4.*|5.*\"}[5m])) by (destination_service_name) * on(destination_service_name) group_left(name) (group without(cluster_id, instance, app_kubernetes_io_instance) (label_replace(gatewayapi_httproute_labels{exported_namespace=~\"${api_policy_namespace}\"}, \"destination_service_name\", \"$1\",\"service\", \"(.+)\")))", - "hide": false, - "legendFormat": "{{name}} - Total Errors", - "range": true, - "refId": "B" - } - ], - "title": "Errors (req/s)", - "type": "timeseries" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 47 - }, - "id": 155, - "panels": [], - "title": "Alerts", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Total number of firing alerts, grouped by Alert Name. Note that there may be more than 1 instance of an alert active based on different labels (like pods or namespace). These will only be counted once here if the alertname is the same for each one.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "noValue": "0", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "semi-dark-red", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 0, - "y": 48 - }, - "id": 156, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "count(sum by(alertname, alertstate, severity, cluster_id) (ALERTS{alertstate=\"firing\"}))", - "instant": true, - "legendFormat": "__auto", - "range": false, - "refId": "A" - } - ], - "title": "Total Firing", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Currently pending or firing alerts, grouped by Alert Name. Note that there may be more than 1 instance of an alert active based on different labels (like pods or namespace). The total number of instances of an alert in that state is shown in the '# Active` column. For further details on the individual alert instances, check your alerting system.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "center", - "cellOptions": { - "type": "auto" - }, - "filterable": true, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - } - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "alertstate" - }, - "properties": [ - { - "id": "mappings", - "value": [ - { - "options": { - "firing": { - "color": "semi-dark-red", - "index": 1, - "text": "Firing" - }, - "pending": { - "color": "orange", - "index": 0, - "text": "Pending" - } - }, - "type": "value" - } - ] - }, - { - "id": "custom.cellOptions", - "value": { - "mode": "basic", - "type": "color-background" - } - } - ] - } - ] - }, - "gridPos": { - "h": 8, - "w": 21, - "x": 3, - "y": 48 - }, - "id": 157, - "options": { - "cellHeight": "sm", - "footer": { - "countRows": false, - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, - "showHeader": true, - "sortBy": [] - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "sum by(alertname, alertstate, severity, cluster_id) (ALERTS{alertstate=\"firing\"} or ALERTS{alertstate=\"pending\"})", - "format": "table", - "instant": true, - "legendFormat": "__auto", - "range": false, - "refId": "A" - } - ], - "title": "Currently Active", - "transformations": [ - { - "id": "organize", - "options": { - "excludeByName": { - "Time": true, - "Value": false, - "__name__": true, - "container": true, - "endpoint": true, - "instance": true, - "job": true, - "namespace": true, - "pod": true, - "prometheus": true, - "receive": true, - "replica": true, - "rule_group": true, - "service": true, - "tenant_id": true - }, - "indexByName": { - "Time": 0, - "Value": 2, - "alertname": 1, - "alertstate": 3, - "cluster_id": 4, - "severity": 5 - }, - "renameByName": { - "Value": "# Active", - "alertname": "Name", - "alertstate": "State", - "cluster_id": "Cluster ID", - "severity": "Severity" - } - } - }, - { - "id": "sortBy", - "options": { - "fields": {}, - "sort": [ - { - "field": "Name" - } - ] - } - } - ], - "type": "table" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Total number of pending alerts, grouped by Alert Name. Note that there may be more than 1 instance of an alert active based on different labels (like pods or namespace). These will only be counted once here if the alertname is the same for each one.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "noValue": "0", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "orange", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 0, - "y": 52 - }, - "id": 159, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.5.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "count(sum by(alertname, alertstate, severity, cluster_id) (ALERTS{alertstate=\"pending\"}))", - "instant": true, - "legendFormat": "__auto", - "range": false, - "refId": "A" - } - ], - "title": "Total Pending", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "Historical state of any alerts that were pending or firing, grouped by Alert Name. Note that more than 1 instance of an alert may have been active based on different labels (like pods or namespace). For further details on the individual alert instances, check your alerting system.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "fillOpacity": 100, - "lineWidth": 0, - "spanNulls": false - }, - "mappings": [ - { - "options": { - "firing": { - "color": "semi-dark-red", - "index": 1, - "text": "Firing" - }, - "pending": { - "color": "orange", - "index": 0, - "text": "Pending" - } - }, - "type": "value" - }, - { - "options": { - "match": "empty", - "result": { - "color": "light-green", - "index": 2, - "text": "Inactive" - } - }, - "type": "special" - } - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "light-green", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 10, - "w": 24, - "x": 0, - "y": 56 - }, - "id": 158, - "options": { - "alignValue": "center", - "legend": { - "displayMode": "list", - "placement": "bottom", - "showLegend": false - }, - "mergeValues": true, - "rowHeight": 0.9, - "showValue": "auto", - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "sum by(alertname, alertstate, severity, cluster_id) (ALERTS{alertstate=\"firing\"} or ALERTS{alertstate=\"pending\"})", - "format": "table", - "instant": false, - "legendFormat": "{{alertname}}", - "range": true, - "refId": "A" - } - ], - "title": "Active State Timeline", - "transformations": [ - { - "id": "groupingToMatrix", - "options": { - "columnField": "alertname", - "emptyValue": "empty", - "rowField": "Time", - "valueField": "alertstate" - } - }, - { - "id": "convertFieldType", - "options": { - "conversions": [ - { - "destinationType": "time", - "targetField": "Time\\alertname" - } - ], - "fields": {} - } - }, - { - "id": "sortBy", - "options": { - "fields": {}, - "sort": [ - { - "desc": false, - "field": "Time\\alertname" - } - ] - } - } - ], - "type": "state-timeline" - } - ], - "refresh": "30s", - "schemaVersion": 38, - "style": "dark", - "tags": [ - "kuadrant" - ], - "templating": { - "list": [ - { - "current": { - "selected": false, - "text": "Kuadrant-Thanos-Hub", - "value": "Kuadrant-Thanos-Hub" - }, - "hide": 0, - "includeAll": false, - "multi": false, - "name": "datasource", - "options": [], - "query": "prometheus", - "queryValue": "", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" - }, - { - "current": { - "selected": false, - "text": "All", - "value": "$__all" - }, - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "definition": "label_values(gatewayapi_gateway_info, exported_namespace)", - "description": "", - "hide": 0, - "includeAll": true, - "label": "Gateway Namespace", - "multi": true, - "name": "gateway_namespace", - "options": [], - "query": { - "query": "label_values(gatewayapi_gateway_info, exported_namespace)", - "refId": "StandardVariableQuery" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - }, - { - "current": {}, - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "definition": "label_values(kube_namespace_created, exported_namespace)", - "description": "Namespace of HTTPRoute & Policy resources", - "hide": 0, - "includeAll": true, - "label": "API/Route & Policy Namespace", - "multi": true, - "name": "api_policy_namespace", - "options": [], - "query": { - "query": "label_values(kube_namespace_created, exported_namespace)", - "refId": "StandardVariableQuery" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - }, - { - "current": {}, - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "definition": "label_values(gatewayapi_httproute_labels, name)", - "description": "Name of the HTTPRoute resource", - "hide": 0, - "includeAll": true, - "label": "API/Route Name", - "multi": true, - "name": "route_name", - "options": [], - "query": { - "query": "label_values(gatewayapi_httproute_labels, name)", - "refId": "StandardVariableQuery" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "30s", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Platform Engineer Dashboard", - "uid": "djqDaDISk", - "version": 1, - "weekStart": "" -} diff --git a/0.10.0/kuadrant-operator/examples/dnspolicy/application.yaml b/0.10.0/kuadrant-operator/examples/dnspolicy/application.yaml deleted file mode 100644 index 33764d89a..000000000 --- a/0.10.0/kuadrant-operator/examples/dnspolicy/application.yaml +++ /dev/null @@ -1,50 +0,0 @@ -apiVersion: gateway.networking.k8s.io/v1 -kind: HTTPRoute -metadata: - name: my-route-${DNSPOLICY_NAMESPACE} -spec: - parentRefs: - - kind: Gateway - name: prod-web-istio - namespace: ${DNSPOLICY_NAMESPACE} - hostnames: - - "app.${KUADRANT_ZONE_ROOT_DOMAIN}" - rules: - - backendRefs: - - name: echo - port: 8080 ---- -apiVersion: v1 -kind: Service -metadata: - name: echo -spec: - ports: - - name: http-port - port: 8080 - targetPort: http-port - protocol: TCP - selector: - app: echo ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: echo -spec: - replicas: 1 - selector: - matchLabels: - app: echo - template: - metadata: - labels: - app: echo - spec: - containers: - - name: echo - image: docker.io/jmalloc/echo-server - ports: - - name: http-port - containerPort: 8080 - protocol: TCP diff --git a/0.10.0/kuadrant-operator/examples/dnspolicy/aws-dns-provider-secret.yaml b/0.10.0/kuadrant-operator/examples/dnspolicy/aws-dns-provider-secret.yaml deleted file mode 100644 index 82a488d50..000000000 --- a/0.10.0/kuadrant-operator/examples/dnspolicy/aws-dns-provider-secret.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: aws-credentials - namespace: ${DNSPOLICY_NAMESPACE} -type: "kuadrant.io/aws" -stringData: - AWS_ACCESS_KEY_ID: ${KUADRANT_AWS_ACCESS_KEY_ID} - AWS_SECRET_ACCESS_KEY: ${KUADRANT_AWS_SECRET_ACCESS_KEY} - AWS_REGION: ${KUADRANT_AWS_REGION} diff --git a/0.10.0/kuadrant-operator/examples/dnspolicy/dnspolicy-bad-strategy.yaml b/0.10.0/kuadrant-operator/examples/dnspolicy/dnspolicy-bad-strategy.yaml deleted file mode 100644 index 33e4606cc..000000000 --- a/0.10.0/kuadrant-operator/examples/dnspolicy/dnspolicy-bad-strategy.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: kuadrant.io/v1alpha1 -kind: DNSPolicy -metadata: - name: prod-web - namespace: ${DNSPOLICY_NAMESPACE} -spec: - targetRef: - name: prod-web-istio - group: gateway.networking.k8s.io - kind: Gateway - providerRefs: - - name: aws-credentials - routingStrategy: simple diff --git a/0.10.0/kuadrant-operator/examples/dnspolicy/dnspolicy-healthchecks.yaml b/0.10.0/kuadrant-operator/examples/dnspolicy/dnspolicy-healthchecks.yaml deleted file mode 100644 index 2682fb6ea..000000000 --- a/0.10.0/kuadrant-operator/examples/dnspolicy/dnspolicy-healthchecks.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: kuadrant.io/v1alpha1 -kind: DNSPolicy -metadata: - name: prod-web - namespace: ${DNSPOLICY_NAMESPACE} -spec: - targetRef: - name: prod-web-istio - group: gateway.networking.k8s.io - kind: Gateway - providerRefs: - - name: aws-credentials - routingStrategy: loadbalanced - loadBalancing: - weighted: - defaultWeight: 120 - geo: - defaultGeo: EU - healthCheck: - endpoint: /healthz - port: 1111111 - protocol: HTTP - failureThreshold: 3 diff --git a/0.10.0/kuadrant-operator/examples/dnspolicy/dnspolicy.yaml b/0.10.0/kuadrant-operator/examples/dnspolicy/dnspolicy.yaml deleted file mode 100644 index 8d8194385..000000000 --- a/0.10.0/kuadrant-operator/examples/dnspolicy/dnspolicy.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: kuadrant.io/v1alpha1 -kind: DNSPolicy -metadata: - name: prod-web - namespace: ${DNSPOLICY_NAMESPACE} -spec: - targetRef: - name: prod-web-istio - group: gateway.networking.k8s.io - kind: Gateway - providerRefs: - - name: aws-credentials - routingStrategy: loadbalanced - loadBalancing: - weighted: - defaultWeight: 120 - geo: - defaultGeo: EU diff --git a/0.10.0/kuadrant-operator/examples/dnspolicy/gateway.yaml b/0.10.0/kuadrant-operator/examples/dnspolicy/gateway.yaml deleted file mode 100644 index e5db812be..000000000 --- a/0.10.0/kuadrant-operator/examples/dnspolicy/gateway.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: gateway.networking.k8s.io/v1 -kind: Gateway -metadata: - name: prod-web-istio - namespace: ${DNSPOLICY_NAMESPACE} -spec: - gatewayClassName: istio - listeners: - - allowedRoutes: - namespaces: - from: All - name: api - hostname: app.${KUADRANT_ZONE_ROOT_DOMAIN} - port: 443 - protocol: HTTPS - tls: - mode: Terminate - certificateRefs: - - name: example-app-tls - kind: Secret diff --git a/0.10.0/kuadrant-operator/examples/dnspolicy/script.sh b/0.10.0/kuadrant-operator/examples/dnspolicy/script.sh deleted file mode 100644 index ffa5c5b35..000000000 --- a/0.10.0/kuadrant-operator/examples/dnspolicy/script.sh +++ /dev/null @@ -1,27 +0,0 @@ -export DNSPOLICY_NAMESPACE=gateway -kubectl create ns gateway -envsubst < examples/dnspolicy/aws-dns-provider-secret.yaml | kubectl apply -f - -envsubst < examples/dnspolicy/gateway.yaml | kubectl apply -f - -envsubst < examples/dnspolicy/dnspolicy.yaml | kubectl apply -f - -envsubst < examples/dnspolicy/application.yaml | kubectl apply -f - - -read -r -p "press enter to cause conflict" -export DNSPOLICY_NAMESPACE=gateway-2 -kubectl create ns gateway-2 -envsubst < examples/dnspolicy/aws-dns-provider-secret.yaml | kubectl apply -f - -envsubst < examples/dnspolicy/gateway.yaml | kubectl apply -f - -envsubst < examples/dnspolicy/dnspolicy-bad-strategy.yaml | kubectl apply -f - -envsubst < examples/dnspolicy/application.yaml | kubectl apply -f - - -read -r -p "press enter to delete conflict" -kubectl delete ns gateway-2 - -read -r -p "press enter to configure bad health checks" -export DNSPOLICY_NAMESPACE=gateway -envsubst < examples/dnspolicy/dnspolicy-healthchecks.yaml | kubectl apply -f - - -read -r -p "press enter to configure good health checks" -kubectl patch dnspolicy prod-web -n ${DNSPOLICY_NAMESPACE} --type='json' -p='[{"op": "replace", "path": "/spec/healthCheck/port", "value":80}]' - -read -r -p "press enter to clean up sample" -kubectl delete ns ${DNSPOLICY_NAMESPACE} diff --git a/0.10.0/kuadrant-operator/examples/metal-lb.yaml b/0.10.0/kuadrant-operator/examples/metal-lb.yaml deleted file mode 100644 index a2e5e41d8..000000000 --- a/0.10.0/kuadrant-operator/examples/metal-lb.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: metallb.io/v1beta1 -kind: IPAddressPool -metadata: - name: example - namespace: metallb-system -spec: - addresses: - - 172.31.200.0/24 ---- -apiVersion: metallb.io/v1beta1 -kind: L2Advertisement -metadata: - name: empty - namespace: metallb-system diff --git a/0.10.0/kuadrant-operator/examples/oas-apikey.yaml b/0.10.0/kuadrant-operator/examples/oas-apikey.yaml deleted file mode 100644 index 524dfb0fa..000000000 --- a/0.10.0/kuadrant-operator/examples/oas-apikey.yaml +++ /dev/null @@ -1,48 +0,0 @@ ---- -openapi: "3.1.0" -info: - title: "Pet Store API" - version: "1.0.0" - x-kuadrant: - route: - name: "toystore" - namespace: $devNS - hostnames: - - toystore.$rootDomain - parentRefs: - - name: $gatewayName - namespace: $gatewayNS -servers: - - url: https://toystore.$rootDomain/v1 -paths: - /toys: - get: # No sec requirements - operationId: "getToy" - responses: - 405: - description: "invalid input" - post: # API key - operationId: "postToy" - security: - - api_key: [] - responses: - 405: - description: "invalid input" - x-kuadrant: - backendRefs: - - name: toystore - namespace: $devNS - port: 80 - rate_limit: - rates: - - limit: 1 - duration: 10 - unit: second - counters: - - request.headers.api_key -components: - securitySchemes: - api_key: - type: apiKey - name: api_key - in: header diff --git a/0.10.0/kuadrant-operator/examples/oas-oidc.yaml b/0.10.0/kuadrant-operator/examples/oas-oidc.yaml deleted file mode 100644 index 0e9199e71..000000000 --- a/0.10.0/kuadrant-operator/examples/oas-oidc.yaml +++ /dev/null @@ -1,55 +0,0 @@ ---- -openapi: "3.1.0" -info: - title: "Pet Store API" - version: "1.0.0" - x-kuadrant: - route: - name: "toystore" - namespace: $devNS - hostnames: - - toystore.$rootDomain - parentRefs: - - name: $gatewayName - namespace: $gatewayNS -servers: - - url: https://toystore.$rootDomain/v1 -paths: - /toys: - get: # No sec requirements - operationId: "getToy" - responses: - 405: - description: "invalid input" - x-kuadrant: - rate_limit: - rates: - - limit: 1 - duration: 5 - unit: second - counters: - - request.headers.Authorization - post: # OIDC protected - operationId: "postToy" - security: - - oidc: [] - responses: - 405: - description: "invalid input" - x-kuadrant: - backendRefs: - - name: toystore - namespace: $devNS - port: 80 - rate_limit: - rates: - - limit: 1 - duration: 10 - unit: second - counters: - - request.headers.Authorization -components: - securitySchemes: - oidc: - type: openIdConnect - openIdConnectUrl: https://$openIDHost/auth/realms/toystore diff --git a/0.10.0/kuadrant-operator/examples/toystore/admin-key-secret.yaml b/0.10.0/kuadrant-operator/examples/toystore/admin-key-secret.yaml deleted file mode 100644 index 7893c1e29..000000000 --- a/0.10.0/kuadrant-operator/examples/toystore/admin-key-secret.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -apiVersion: v1 -kind: Secret -metadata: - annotations: - secret.kuadrant.io/user-id: alice - creationTimestamp: null - labels: - app: toystore - admin: "yes" - authorino.kuadrant.io/managed-by: authorino - name: toystore-admin-apikey -stringData: - api_key: IAMADMIN -type: Opaque diff --git a/0.10.0/kuadrant-operator/examples/toystore/alice-api-key-secret.yaml b/0.10.0/kuadrant-operator/examples/toystore/alice-api-key-secret.yaml deleted file mode 100644 index 744e029b8..000000000 --- a/0.10.0/kuadrant-operator/examples/toystore/alice-api-key-secret.yaml +++ /dev/null @@ -1,14 +0,0 @@ ---- -apiVersion: v1 -kind: Secret -metadata: - annotations: - secret.kuadrant.io/user-id: alice - creationTimestamp: null - labels: - app: toystore - authorino.kuadrant.io/managed-by: authorino - name: toystore-alice-apikey -stringData: - api_key: ALICEKEYFORDEMO -type: Opaque diff --git a/0.10.0/kuadrant-operator/examples/toystore/authpolicy.yaml b/0.10.0/kuadrant-operator/examples/toystore/authpolicy.yaml deleted file mode 100644 index a7a404b71..000000000 --- a/0.10.0/kuadrant-operator/examples/toystore/authpolicy.yaml +++ /dev/null @@ -1,56 +0,0 @@ ---- -apiVersion: kuadrant.io/v1beta2 -kind: AuthPolicy -metadata: - name: toystore -spec: - targetRef: - group: gateway.networking.k8s.io - kind: HTTPRoute - name: toystore - routeSelectors: - - matches: - - path: - type: Exact - value: "/admin/toy" - method: DELETE - rules: - authentication: - "apikey": - apiKey: - selector: - matchLabels: - app: toystore - credentials: - authorizationHeader: - prefix: APIKEY - response: - success: - dynamicMetadata: - "ext_auth_data": - json: - properties: - "user-id": - selector: auth.identity.metadata.annotations.secret\.kuadrant\.io/user-id ---- -apiVersion: kuadrant.io/v1beta1 -kind: AuthPolicy -metadata: - name: toystore - namespace: istio-system -spec: - targetRef: - group: gateway.networking.k8s.io - kind: Gateway - name: istio-ingressgateway - rules: - authentication: - "apikey": - apiKey: - selector: - matchLabels: - app: toystore - admin: "yes" - credentials: - authorizationHeader: - prefix: APIKEY diff --git a/0.10.0/kuadrant-operator/examples/toystore/authpolicy_jwt-k8s-authnz.yaml b/0.10.0/kuadrant-operator/examples/toystore/authpolicy_jwt-k8s-authnz.yaml deleted file mode 100644 index 87b2c8fdf..000000000 --- a/0.10.0/kuadrant-operator/examples/toystore/authpolicy_jwt-k8s-authnz.yaml +++ /dev/null @@ -1,44 +0,0 @@ -# A Kuadrant AuthPolicy to protect an API with authentication based on OpenId Connect (OIDC) ID tokens (signed JWTs) -# and Kubernetes Service Account tokens combined, and authorization with permissions (bindings) stored in the -# Kubernetes RBAC, enforced by Authorino, Kuadrant's authorization service. -apiVersion: kuadrant.io/v1beta2 -kind: AuthPolicy -metadata: - name: toystore-protection -spec: - targetRef: - group: gateway.networking.k8s.io - kind: HTTPRoute - name: toystore - rules: - # The list of trusted identity sources which can send requests the protected API. - authentication: - # An OIDC authentication server listed as a trusted source of identities which can send requests the protected API. - # Authorino will prefetch the JWKS using OpenId Connect Discovery, and verify ID tokens (JWTs) issued by the server - # as valid authentication tokens to consume the protected API. - # Read more about this feature at https://github.com/Kuadrant/authorino/blob/v0.11.0/docs/user-guides/oidc-jwt-authentication.md. - "keycloak-users": - jwt: - issuerUrl: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant - - # Authorino will verify Kubernetes Service Account tokens, using Kubernetes TokenReview API, - # as valid authentication tokens to consume the protected API. - # Read more about this feature at https://github.com/Kuadrant/authorino/blob/v0.11.0/docs/user-guides/kubernetes-tokenreview.md. - "k8s-service-accounts": - kubernetesTokenReview: - audiences: - - https://kubernetes.default.svc.cluster.local - - # Authorino will enforce authorization using Kubernetes SubjectAccessReview API. - # Permissions to consume the API are stored in the Kubernetes cluster as ClusterRoles and ClusterRoleBindings. - # The path and the method of the request to the protected API will be implicitly used as the rules to check for - # an existing binding in the Kubernetes RBAC system. - # Read more about this feature at https://github.com/Kuadrant/authorino/blob/v0.11.0/docs/user-guides/kubernetes-subjectaccessreview.md. - # For using Roles and RoleBindings instead of ClusterRoles and ClusterRoleBindings, thus more flexible attribute-based - # permissions to protect the API, see the spec for `resourceAttributes` in the Authorino docs at - # https://github.com/Kuadrant/authorino/blob/v0.11.0/docs/features.md#kubernetes-subjectaccessreview-authorizationkubernetes. - authorization: - "k8s-rbac": - kubernetesSubjectAccessReview: - user: - selector: auth.identity.sub diff --git a/0.10.0/kuadrant-operator/examples/toystore/bob-api-key-secret.yaml b/0.10.0/kuadrant-operator/examples/toystore/bob-api-key-secret.yaml deleted file mode 100644 index e4edd01a1..000000000 --- a/0.10.0/kuadrant-operator/examples/toystore/bob-api-key-secret.yaml +++ /dev/null @@ -1,14 +0,0 @@ ---- -apiVersion: v1 -kind: Secret -metadata: - annotations: - secret.kuadrant.io/user-id: bob - creationTimestamp: null - labels: - app: toystore - authorino.kuadrant.io/managed-by: authorino - name: toystore-bob-apikey -stringData: - api_key: BOBKEYFORDEMO -type: Opaque diff --git a/0.10.0/kuadrant-operator/examples/toystore/httproute.yaml b/0.10.0/kuadrant-operator/examples/toystore/httproute.yaml deleted file mode 100644 index f44f9f9e5..000000000 --- a/0.10.0/kuadrant-operator/examples/toystore/httproute.yaml +++ /dev/null @@ -1,29 +0,0 @@ ---- -apiVersion: gateway.networking.k8s.io/v1 -kind: HTTPRoute -metadata: - name: toystore - labels: - app: toystore -spec: - parentRefs: - - name: istio-ingressgateway - namespace: istio-system - hostnames: ["*.toystore.com"] - rules: - - matches: - - path: - type: PathPrefix - value: "/toy" - method: GET - - path: - type: Exact - value: "/admin/toy" - method: POST - - path: - type: Exact - value: "/admin/toy" - method: DELETE - backendRefs: - - name: toystore - port: 80 diff --git a/0.10.0/kuadrant-operator/examples/toystore/kuadrant.yaml b/0.10.0/kuadrant-operator/examples/toystore/kuadrant.yaml deleted file mode 100644 index 29de2d9a1..000000000 --- a/0.10.0/kuadrant-operator/examples/toystore/kuadrant.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -apiVersion: kuadrant.io/v1beta1 -kind: Kuadrant -metadata: - name: kuadrant-sample -spec: {} diff --git a/0.10.0/kuadrant-operator/examples/toystore/ratelimitpolicy_gateway.yaml b/0.10.0/kuadrant-operator/examples/toystore/ratelimitpolicy_gateway.yaml deleted file mode 100644 index 57b53002b..000000000 --- a/0.10.0/kuadrant-operator/examples/toystore/ratelimitpolicy_gateway.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: kuadrant.io/v1beta2 -kind: RateLimitPolicy -metadata: - name: toystore-gw - namespace: istio-system -spec: - targetRef: - group: gateway.networking.k8s.io - kind: Gateway - name: istio-ingressgateway - limits: - "expensive-operation": - rates: - - limit: 2 - duration: 30 - unit: second - when: - - selector: request.method - operator: eq - value: POST - - "limit-per-ip": - rates: - - limit: 5 - duration: 30 - unit: second - when: - - selector: source.ip - operator: eq - value: source.address diff --git a/0.10.0/kuadrant-operator/examples/toystore/ratelimitpolicy_httproute.yaml b/0.10.0/kuadrant-operator/examples/toystore/ratelimitpolicy_httproute.yaml deleted file mode 100644 index de10f7143..000000000 --- a/0.10.0/kuadrant-operator/examples/toystore/ratelimitpolicy_httproute.yaml +++ /dev/null @@ -1,50 +0,0 @@ -apiVersion: kuadrant.io/v1beta2 -kind: RateLimitPolicy -metadata: - name: toystore-httproute -spec: - targetRef: - group: gateway.networking.k8s.io - kind: HTTPRoute - name: toystore - limits: - "global": - rates: - - limit: 6 - duration: 30 - unit: second - - "get-toy": - rates: - - limit: 5 - duration: 30 - unit: second - routeSelectors: - - matches: - - path: - type: Exact - value: "/toy" - method: GET - - "admin-post-or-delete-toy-per-user": - rates: - - limit: 2 - duration: 30 - unit: second - counters: - - metadata.filter_metadata.envoy\.filters\.http\.ext_authz.username - routeSelectors: - - matches: - - path: - type: Exact - value: "/admin/toy" - method: POST - - matches: - - path: - type: Exact - value: "/admin/toy" - method: DELETE - when: - - selector: metadata.filter_metadata.envoy\.filters\.http\.ext_authz.admin - operator: eq - value: "true" diff --git a/0.10.0/kuadrant-operator/examples/toystore/toystore.yaml b/0.10.0/kuadrant-operator/examples/toystore/toystore.yaml deleted file mode 100644 index 58451d099..000000000 --- a/0.10.0/kuadrant-operator/examples/toystore/toystore.yaml +++ /dev/null @@ -1,39 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: toystore - labels: - app: toystore -spec: - selector: - matchLabels: - app: toystore - template: - metadata: - labels: - app: toystore - spec: - containers: - - name: toystore - image: quay.io/3scale/authorino:echo-api - env: - - name: PORT - value: "3000" - ports: - - containerPort: 3000 - name: http - replicas: 1 ---- -apiVersion: v1 -kind: Service -metadata: - name: toystore -spec: - selector: - app: toystore - ports: - - name: http - port: 80 - protocol: TCP - targetPort: 3000 diff --git a/0.10.0/kuadrant-operator/index.html b/0.10.0/kuadrant-operator/index.html deleted file mode 100644 index 2c3495d71..000000000 --- a/0.10.0/kuadrant-operator/index.html +++ /dev/null @@ -1,3977 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Overview - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Kuadrant Operator

    -

    Code Style -Testing -codecov -License -OpenSSF Best Practices -FOSSA Status

    -

    The Operator to install and manage the lifecycle of the Kuadrant components deployments.

    -

    Overview

    -

    Kuadrant is a re-architecture of API Management using Cloud Native concepts and separating the components to be less coupled, -more reusable and leverage the underlying kubernetes platform. It aims to deliver a smooth experience to providers and consumers -of applications & services when it comes to rate limiting, authentication, authorization, discoverability, change management, usage contracts, insights, etc.

    -

    Kuadrant aims to produce a set of loosely coupled functionalities built directly on top of Kubernetes. -Furthermore, it only strives to provide what Kubernetes doesn’t offer out of the box, i.e. Kuadrant won’t be designing a new Gateway/proxy, -instead it will opt to connect with what’s there and what’s being developed (think Envoy, Istio, GatewayAPI).

    -

    Kuadrant is a system of cloud-native k8s components that grows as users’ needs grow.

    -
      -
    • From simple protection of a Service (via AuthN) that is used by teammates working on the same cluster, or “sibling” services, up to AuthZ of users using OIDC plus custom policies.
    • -
    • From no rate-limiting to rate-limiting for global service protection on to rate-limiting by users/plans
    • -
    -

    Architecture

    -

    Kuadrant relies on Istio and the Gateway API -to operate the cluster (Istio's) ingress gateway to provide API management with authentication (authN), -authorization (authZ) and rate limiting capabilities.

    -

    Kuadrant components

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CRDDescription
    Control PlaneThe control plane takes the customer desired configuration (declaratively as kubernetes custom resources) as input and ensures all components are configured to obey customer's desired behavior.
    This repository contains the source code of the kuadrant control plane
    Kuadrant OperatorA Kubernetes Operator to manage the lifecycle of the kuadrant deployment
    AuthorinoThe AuthN/AuthZ enforcer. As the external istio authorizer (envoy external authorization serving gRPC service)
    LimitadorThe external rate limiting service. It exposes a gRPC service implementing the Envoy Rate Limit protocol (v3)
    Authorino OperatorA Kubernetes Operator to manage Authorino instances
    Limitador OperatorA Kubernetes Operator to manage Limitador instances
    DNS OperatorA Kubernetes Operator to manage DNS records in external providers
    -

    Provided APIs

    -

    The kuadrant control plane owns the following Custom Resource Definitions, CRDs:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CRDDescriptionExample
    AuthPolicy CRD [doc] [reference]Enable AuthN and AuthZ based access control on workloadsAuthPolicy CR
    RateLimitPolicy CRD [doc] [reference]Enable access control on workloads based on HTTP rate limitingRateLimitPolicy CR
    DNSPolicy CRD [doc] [reference]Enable DNS managementDNSPolicy CR
    TLSPolicy CRD [doc] [reference]Enable TLS managementTLSPolicy CR
    -

    Additionally, Kuadrant provides the following CRDs

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CRDOwnerDescriptionExample
    Kuadrant CRDKuadrant OperatorRepresents an instance of kuadrantKuadrant CR
    Limitador CRDLimitador OperatorRepresents an instance of LimitadorLimitador CR
    Authorino CRDAuthorino OperatorRepresents an instance of AuthorinoAuthorino CR
    -

    Kuadrant Architecture

    -

    Getting started

    -

    Pre-requisites

    - -

    Installing Kuadrant

    -

    Installing Kuadrant is a two-step procedure. Firstly, install the Kuadrant Operator and secondly, -request a Kuadrant instance by creating a Kuadrant custom resource.

    -

    1. Install the Kuadrant Operator

    -

    The Kuadrant Operator is available in public community operator catalogs, such as the Kubernetes OperatorHub.io and the Openshift Container Platform and OKD OperatorHub.

    -

    Kubernetes

    -

    The operator is available from OperatorHub.io. -Just go to the linked page and follow installation steps (or just run these two commands):

    -
    # Install Operator Lifecycle Manager (OLM), a tool to help manage the operators running on your cluster.
    -
    -curl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.23.1/install.sh | bash -s v0.23.1
    -
    -# Install the operator by running the following command:
    -
    -kubectl create -f https://operatorhub.io/install/kuadrant-operator.yaml
    -
    -

    Openshift

    -

    The operator is available from the Openshift Console OperatorHub. -Just follow installation steps choosing the "Kuadrant Operator" from the catalog:

    -

    Kuadrant Operator in OperatorHub

    -

    2. Request a Kuadrant instance

    -

    Create the namespace:

    -
    kubectl create namespace kuadrant
    -
    -

    Apply the Kuadrant custom resource:

    -
    kubectl -n kuadrant apply -f - <<EOF
    ----
    -apiVersion: kuadrant.io/v1beta1
    -kind: Kuadrant
    -metadata:
    -  name: kuadrant-sample
    -spec: {}
    -EOF
    -
    -

    Protect your service

    -

    If you are an API Provider

    -
      -
    • Deploy the service/API to be protected ("Upstream")
    • -
    • Expose the service/API using the kubernetes Gateway API, ie - HTTPRoute object.
    • -
    • Write and apply the Kuadrant's RateLimitPolicy and/or - AuthPolicy custom resources targeting the HTTPRoute resource - to have your API protected.
    • -
    -

    If you are a Cluster Operator

    -
      -
    • (Optionally) deploy istio ingress gateway using the - Gateway resource.
    • -
    • Write and apply the Kuadrant's RateLimitPolicy and/or - AuthPolicy custom resources targeting the Gateway resource - to have your gateway traffic protected.
    • -
    -

    User guides

    -

    The user guides section of the docs gathers several use-cases as well as the instructions to implement them using kuadrant.

    - -

    Kuadrant Rate Limiting

    -

    Documentation

    -

    Docs can be found on the Kuadrant website.

    -

    Contributing

    -

    The Development guide describes how to build the kuadrant operator and -how to test your changes before submitting a patch or opening a PR.

    -

    Join us on the #kuadrant channel in the Kubernetes Slack workspace, -for live discussions about the roadmap and more.

    -

    Licensing

    -

    This software is licensed under the Apache 2.0 license.

    -

    See the LICENSE and NOTICE files that should have been provided along with this software for details.

    -

    FOSSA Status

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrantctl/doc/RELEASE/index.html b/0.10.0/kuadrantctl/doc/RELEASE/index.html deleted file mode 100644 index c95b6d261..000000000 --- a/0.10.0/kuadrantctl/doc/RELEASE/index.html +++ /dev/null @@ -1,3452 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - RELEASE - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    RELEASE

    - -

    Release

    -

    The release process follows a streamlined approach, no release branches involved. -New releases can be major, minor or patch based releases, but always incrementing digits -regarding the latest release version.

    -

    New Major.Minor.Patch version

    -
      -
    1. Create a new minor release branch from the HEAD of main: -
      git checkout -b release-vX.Y.Z
      -
    2. -
    3. Update version (prefixed with "v"): -
      make prepare-release VERSION=vX.Y.Z
      -
    4. -
    5. Verify local changes: -
      make install
      -bin/kuadrantctl version
      -
      -The output should be the new version, for example : -
      kuadrantctl v0.3.0 (ff779a1-dirty)
      -
    6. -
    7. Commit and push: -
      git add .
      -git commit -m "prepare-release: release-vX.Y.Z"
      -git push origin release-vX.Y.Z
      -
    8. -
    9. Create git tag: -
      git tag -s -m vX.Y.Z vX.Y.Z
      -git push origin vX.Y.Z
      -
    10. -
    11. -

      In Github, create release.

      -
    12. -
    13. -

      Pick recently pushed git tag

      -
    14. -
    15. Automatically generate release notes from previous released tag
    16. -
    17. -

      Set as the latest release

      -
    18. -
    19. -

      Verify that the build Release workflow is triggered and completes for the new tag

      -
    20. -
    -

    Verify new release is available

    -
      -
    1. Download the latest binary for your platform from the kuadrantctl Latest Releases page.
    2. -
    3. Unpack the binary.
    4. -
    5. Move it to a directory in your $PATH so that it can be executed from anywhere.
    6. -
    7. Check the version: -
      kuadrantctl version
      -
      -The output should be the new version, for example : -
      kuadrantctl v0.3.0 (eec318b2e11e7ea5add5e550ff872bde64555d8f)
      -
    8. -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrantctl/doc/development/index.html b/0.10.0/kuadrantctl/doc/development/index.html deleted file mode 100644 index 7a1587bd3..000000000 --- a/0.10.0/kuadrantctl/doc/development/index.html +++ /dev/null @@ -1,3415 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Development Guide - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Development Guide

    -

    Technology stack required for development

    -
      -
    • git
    • -
    • go version 1.21+
    • -
    -

    Build the CLI

    -
    $ git clone https://github.com/kuadrant/kuadrantctl.git
    -$ cd kuadrantctl && make install
    -$ bin/kuadrantctl version
    -{"level":"info","ts":"2023-11-08T23:44:57+01:00","msg":"kuadrantctl version: latest"}
    -
    -

    Quick steps to contribute

    -
      -
    • Fork the project.
    • -
    • Download your fork to your PC (git clone https://github.com/your_username/kuadrantctl && cd kuadrantctl)
    • -
    • Create your feature branch (git checkout -b my-new-feature)
    • -
    • Make changes and run tests (make test)
    • -
    • Add them to staging (git add .)
    • -
    • Commit your changes (git commit -m 'Add some feature')
    • -
    • Push to the branch (git push origin my-new-feature)
    • -
    • Create new pull request
    • -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrantctl/doc/generate-gateway-api-httproute/index.html b/0.10.0/kuadrantctl/doc/generate-gateway-api-httproute/index.html deleted file mode 100644 index 0d9646175..000000000 --- a/0.10.0/kuadrantctl/doc/generate-gateway-api-httproute/index.html +++ /dev/null @@ -1,3509 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Generating Gateway API HTTPRoutes - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Generating Gateway API HTTPRoutes

    - -

    Generate Gateway API HTTPRoute object from OpenAPI 3

    -

    The kuadrantctl generate gatewayapi httproute command generates an Gateway API HTTPRoute -from your OpenAPI Specification (OAS) 3.x powered with kuadrant extensions.

    -

    OpenAPI specification

    -

    An OpenAPI document resource can be provided to the cli by one of the following channels:

    -
      -
    • Filename in the available path.
    • -
    • URL format (supported schemes are HTTP and HTTPS). The CLI will try to download from the given address.
    • -
    • Read from stdin standard input stream.
    • -
    -

    Usage

    -
    $ kuadrantctl generate gatewayapi httproute -h
    -Generate Gateway API HTTPRoute from OpenAPI 3.0.X
    -
    -Usage:
    -  kuadrantctl generate gatewayapi httproute [flags]
    -
    -Flags:
    -  -h, --help          help for httproute
    -  --oas string        Path to OpenAPI spec file (in JSON or YAML format), URL, or '-' to read from standard input (required)
    -  -o Output format:   'yaml' or 'json'. (default "yaml")
    -
    -Global Flags:
    -  -v, --verbose   verbose output
    -
    -
    -

    Under the example folder there are examples of OAS 3 that can be used to generate the resources

    -
    -

    As an AuthPolicy and RateLimitPolicy both require a HTTPRoute to target, the user guides for generating those policies include examples of running the kuadrantctl generate gatewayapi httproute command.

    -

    You can find those guides here:

    - - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrantctl/doc/generate-kuadrant-auth-policy/index.html b/0.10.0/kuadrantctl/doc/generate-kuadrant-auth-policy/index.html deleted file mode 100644 index 34c0052e2..000000000 --- a/0.10.0/kuadrantctl/doc/generate-kuadrant-auth-policy/index.html +++ /dev/null @@ -1,3997 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Generating Kuadrant AuthPolicies - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Generating Kuadrant AuthPolicies

    - -

    Generate Kuadrant AuthPolicy object from OpenAPI 3

    -

    The kuadrantctl generate kuadrant authpolicy command generates an Kuadrant AuthPolicy -from your OpenAPI Specification (OAS) 3.x powered with kuadrant extensions.

    -

    OpenAPI specification

    -

    An OpenAPI document resource can be provided to the cli by one of the following channels:

    -
      -
    • Filename in the available path.
    • -
    • URL format (supported schemes are HTTP and HTTPS). The CLI will try to download from the given address.
    • -
    • Read from stdin standard input stream.
    • -
    -

    OpenAPI Security Scheme Object types

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypesImplemented
    openIdConnectYES
    apiKeyYES
    httpNO
    oauth2NO
    -

    openIdConnect Type Description

    -

    The following OAS example has one protected endpoint GET /dog with openIdConnect security scheme type.

    -
    paths:
    -  /dog:
    -    get:
    -      operationId: "getDog"
    -      security:
    -
    -        - securedDog: []
    -      responses:
    -        405:
    -          description: "invalid input"
    -components:
    -  securitySchemes:
    -    securedDog:
    -      type: openIdConnect
    -      openIdConnectUrl: https://example.com/.well-known/openid-configuration
    -
    -

    Running the command

    -
    kuadrantctl generate kuadrant authpolicy --oas ./petstore-openapi.yaml  | yq -P
    -
    -

    The generated authpolicy (only relevan fields shown here):

    -
    kind: AuthPolicy
    -apiVersion: kuadrant.io/v1beta2
    -metadata:
    -  name: petstore
    -  namespace: petstore
    -  creationTimestamp: null
    -spec:
    -  routeSelectors:
    -
    -    - matches:
    -        - path:
    -            type: Exact
    -            value: /api/v1/dog
    -          method: GET
    -  rules:
    -    authentication:
    -      getDog_securedDog:
    -        credentials: {}
    -        jwt:
    -          issuerUrl: https://example.com/.well-known/openid-configuration
    -        routeSelectors:
    -          - matches:
    -              - path:
    -                  type: Exact
    -                  value: /api/v1/dog
    -                method: GET
    -
    -

    apiKey Type Description

    -

    The following OAS example has one protected endpoint GET /dog with apiKey security scheme type.

    -
    paths:
    -  /dog:
    -    get:
    -      operationId: "getDog"
    -      security:
    -
    -        - securedDog: []
    -      responses:
    -        405:
    -          description: "invalid input"
    -components:
    -  securitySchemes:
    -    securedDog:
    -      type: apiKey
    -      name: dog_token
    -      in: query
    -
    -

    Running the command

    -
    kuadrantctl generate kuadrant authpolicy --oas ./petstore-openapi.yaml  | yq -P
    -
    -

    The generated authpolicy (only relevan fields shown here):

    -
    kind: AuthPolicy
    -apiVersion: kuadrant.io/v1beta2
    -metadata:
    -  name: petstore
    -  namespace: petstore
    -  creationTimestamp: null
    -spec:
    -  routeSelectors:
    -
    -    - matches:
    -        - path:
    -            type: Exact
    -            value: /dog
    -          method: GET
    -  rules:
    -    authentication:
    -      getDog_securedDog:
    -        credentials:
    -          queryString:
    -            name: dog_token
    -          apiKey:
    -            selector:
    -              matchLabels:
    -                kuadrant.io/apikeys-by: securedDog
    -        routeSelectors:
    -          - matches:
    -              - path:
    -                  type: Exact
    -                  value: /dog
    -                method: GET
    -
    -

    In this particular example, the endpoint GET /dog will be protected. -The token needs to be in the query string of the request included in a parameter named dog_token. -Kuadrant will validate received tokens against tokens found in kubernetes secrets with label kuadrant.io/apikeys-by: ${sec scheme name}. -In this particular example the label selector will be: kuadrant.io/apikeys-by: securedDog.

    -

    Like the following example:

    -
    apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: api-key-1
    -  labels:
    -    authorino.kuadrant.io/managed-by: authorino
    -    kuadrant.io/apikeys-by: securedDog
    -stringData:
    -  api_key: MYSECRETTOKENVALUE
    -type: Opaque
    -
    -
    -

    Note: Kuadrant validates tokens against api keys found in secrets. The label selector format kuadrant.io/apikeys-by: ${sec scheme name} is arbitrary and designed for this CLI command.

    -
    -

    For more information about Kuadrant auth based on api key: https://docs.kuadrant.io/latest/authorino/docs/user-guides/api-key-authentication/

    -

    Usage

    -
    Generate Kuadrant AuthPolicy from OpenAPI 3.0.X
    -
    -Usage:
    -  kuadrantctl generate kuadrant authpolicy [flags]
    -
    -Flags:
    -  -h, --help         help for authpolicy
    -  --oas string        Path to OpenAPI spec file (in JSON or YAML format), URL, or '-' to read from standard input (required)
    -  -o Output format:   'yaml' or 'json'. (default "yaml")
    -
    -Global Flags:
    -  -v, --verbose   verbose output
    -
    -
    -

    Under the example folder there are examples of OAS 3 that can be used to generate the resources

    -
    -

    User Guide

    -

    The verification steps will lead you to the process of deploying and testing the following api with -endpoints protected using different security schemes:

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    OperationSecurity Scheme
    GET /api/v1/catpublic (not auth)
    POST /api/v1/catApiKey in header
    GET /api/v1/dogOpenIdConnect
    GET /api/v1/snakeOpenIdConnect OR ApiKey in query string
    -
      -
    • [Optional] Setup SSO service supporting OIDC. For this example, we will be using keycloak.
    • -
    • Create a new realm petstore
    • -
    • Create a client petstore. In the Client Protocol field, select openid-connect.
    • -
    • Configure client settings. Access Type to public. Direct Access Grants Enabled to ON (for this example password will be used directly to generate the token).
    • -
    • Add a user to the realm
        -
      • Click the Users menu on the left side of the window. Click Add user.
      • -
      • Type the username bob, set the Email Verified switch to ON, and click Save.
      • -
      • On the Credentials tab, set the password p. Enter the password in both the fields, set the Temporary switch to OFF to avoid the password reset at the next login, and click Set Password.
      • -
      -
    • -
    -

    Now, let's run local cluster to test the kuadrantctl new command to generate authpolicy.

    -
      -
    • Clone the repo
    • -
    -
    git clone https://github.com/Kuadrant/kuadrantctl.git
    -cd kuadrantctl
    -
    -
      -
    • Setup a cluster, Istio and Gateway API CRDs and Kuadrant
    • -
    -

    Use our single-cluster quick start script - this will install Kuadrant in a local kind cluster: https://docs.kuadrant.io/latest/getting-started-single-cluster/

    -
      -
    • Build and install CLI in bin/kuadrantctl path
    • -
    -
    make install
    -
    -
      -
    • Deploy petstore backend API
    • -
    -
    kubectl create namespace petstore
    -kubectl apply -n petstore -f examples/petstore/petstore.yaml
    -
    -
      -
    • Let's create Petstore's OpenAPI spec
    • -
    -
    - -
    cat <<EOF >petstore-openapi.yaml
    ----
    -openapi: "3.1.0"
    -info:
    -  title: "Pet Store API"
    -  version: "1.0.0"
    -x-kuadrant:
    -  route:
    -    name: "petstore"
    -    namespace: "petstore"
    -    hostnames:
    -
    -      - example.com
    -    parentRefs:
    -      - name: istio-ingressgateway
    -        namespace: istio-system
    -servers:
    -  - url: https://example.io/api/v1
    -paths:
    -  /cat:
    -    x-kuadrant:
    -      backendRefs:
    -        - name: petstore
    -          port: 80
    -          namespace: petstore
    -    get:  # No sec requirements
    -      operationId: "getCat"
    -      responses:
    -        405:
    -          description: "invalid input"
    -    post:  # API key
    -      operationId: "postCat"
    -      security:
    -        - cat_api_key: []
    -      responses:
    -        405:
    -          description: "invalid input"
    -  /dog:
    -    x-kuadrant:
    -      backendRefs:
    -        - name: petstore
    -          port: 80
    -          namespace: petstore
    -    get:  # OIDC
    -      operationId: "getDog"
    -      security:
    -        - oidc:
    -          - read:dogs
    -      responses:
    -        405:
    -          description: "invalid input"
    -  /snake:
    -    x-kuadrant:
    -      backendRefs:
    -        - name: petstore
    -          port: 80
    -          namespace: petstore
    -    get:  # OIDC or API key
    -      operationId: "getSnake"
    -      security:
    -        - oidc: ["read:snakes"]
    -        - snakes_api_key: []
    -      responses:
    -        405:
    -          description: "invalid input"
    -components:
    -  securitySchemes:
    -    cat_api_key:
    -      type: apiKey
    -      name: api_key
    -      in: header
    -    oidc:
    -      type: openIdConnect
    -      openIdConnectUrl: https://${KEYCLOAK_PUBLIC_DOMAIN}/auth/realms/petstore
    -    snakes_api_key:
    -      type: apiKey
    -      name: snake_token
    -      in: query
    -EOF
    -
    - -
    - -
    -

    Replace ${KEYCLOAK_PUBLIC_DOMAIN} with your SSO instance domain

    -
    -
      -
    • -

      Create an API key only valid for POST /api/v1/cat endpoint -

      kubectl apply -f -<<EOF
      -apiVersion: v1
      -kind: Secret
      -metadata:
      -  name: cat-api-key-1
      -  namespace: petstore
      -  labels:
      -    authorino.kuadrant.io/managed-by: authorino
      -    kuadrant.io/apikeys-by: cat_api_key
      -stringData:
      -  api_key: I_LIKE_CATS
      -type: Opaque
      -EOF
      -

      -
      -

      Note: the label's value of kuadrant.io/apikeys-by: cat_api_key is the name of the sec scheme of the OpenAPI spec.

      -
      -
    • -
    • -

      Create an API key only valid for GET /api/v1/snake endpoint

      -
    • -
    -
    kubectl apply -f -<<EOF
    -apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: snake-api-key-1
    -  namespace: petstore
    -  labels:
    -    authorino.kuadrant.io/managed-by: authorino
    -    kuadrant.io/apikeys-by: snakes_api_key
    -stringData:
    -  api_key: I_LIKE_SNAKES
    -type: Opaque
    -EOF
    -
    -
    -

    Note: the label's value of kuadrant.io/apikeys-by: snakes_api_key is the name of the sec scheme of the OpenAPI spec.

    -
    -
      -
    • Create the HTTPRoute using the CLI
    • -
    -
    bin/kuadrantctl generate gatewayapi httproute --oas petstore-openapi.yaml | kubectl apply -n petstore -f -
    -
    -
      -
    • Create Kuadrant's Auth Policy
    • -
    -
    bin/kuadrantctl generate kuadrant authpolicy --oas petstore-openapi.yaml | kubectl apply -n petstore -f -
    -
    -

    Now, we are ready to test OpenAPI endpoints ❗

    -
      -
    • GET /api/v1/cat -> It's a public endpoint, hence should return 200 Ok
    • -
    -
    curl  -H "Host: example.com" -i "http://127.0.0.1:9080/api/v1/cat"
    -
    -
      -
    • POST /api/v1/cat -> It's a protected endpoint with apikey
    • -
    -

    Without any credentials, it should return 401 Unauthorized

    -
    curl  -H "Host: example.com" -X POST -i "http://127.0.0.1:9080/api/v1/cat"
    -
    -
    HTTP/1.1 401 Unauthorized
    -www-authenticate: Bearer realm="getDog_oidc"
    -www-authenticate: Bearer realm="getSnake_oidc"
    -www-authenticate: snake_token realm="getSnake_snakes_api_key"
    -www-authenticate: api_key realm="postCat_cat_api_key"
    -x-ext-auth-reason: {"postCat_cat_api_key":"credential not found"}
    -date: Tue, 28 Nov 2023 22:28:44 GMT
    -server: istio-envoy
    -content-length: 0
    -
    -

    The reason headers tell that credential not found. -Credentials satisfying postCat_cat_api_key authentication is needed.

    -

    According to the OpenAPI spec, it should be a header named api_key. -What if we try a wrong token? one token assigned to other endpoint, -i.e. I_LIKE_SNAKES instead of the valid one I_LIKE_CATS. It should return 401 Unauthorized.

    -
    curl  -H "Host: example.com" -H "api_key: I_LIKE_SNAKES" -X POST -i "http://127.0.0.1:9080/api/v1/cat"
    -
    -
    HTTP/1.1 401 Unauthorized
    -www-authenticate: Bearer realm="getDog_oidc"
    -www-authenticate: Bearer realm="getSnake_oidc"
    -www-authenticate: snake_token realm="getSnake_snakes_api_key"
    -www-authenticate: api_key realm="postCat_cat_api_key"
    -x-ext-auth-reason: {"postCat_cat_api_key":"the API Key provided is invalid"}
    -date: Tue, 28 Nov 2023 22:32:55 GMT
    -server: istio-envoy
    -content-length: 0
    -
    -

    The reason headers tell that the API Key provided is invalid. -Using valid token (from the secret cat-api-key-1 assigned to POST /api/v1/cats) -in the api_key header should return 200 Ok

    -
    curl  -H "Host: example.com" -H "api_key: I_LIKE_CATS" -X POST -i "http://127.0.0.1:9080/api/v1/cat"
    -
    -
      -
    • GET /api/v1/dog -> It's a protected endpoint with oidc (assigned to our keycloak instance and petstore realm)
    • -
    -

    without credentials, it should return 401 Unauthorized

    -
    curl -H "Host: example.com" -i "http://127.0.0.1:9080/api/v1/dog"
    -
    -

    To get the authentication token, this example is using Direct Access Grants oauth2 grant type -(also known as Client Credentials grant type). When configuring the Keycloak (OIDC provider) client -settings, we enabled Direct Access Grants to enable this procedure. -We will be authenticating as bob user with p password. -We previously created bob user in Keycloak in the petstore realm.

    -
    export ACCESS_TOKEN=$(curl -k -H "Content-Type: application/x-www-form-urlencoded" \
    -        -d 'grant_type=password' \
    -        -d 'client_id=petstore' \
    -        -d 'scope=openid' \
    -        -d 'username=bob' \
    -        -d 'password=p' "https://${KEYCLOAK_PUBLIC_DOMAIN}/auth/realms/petstore/protocol/openid-connect/token" | jq -r '.access_token')
    -
    -
    -

    Replace ${KEYCLOAK_PUBLIC_DOMAIN} with your SSO instance domain

    -
    -

    With the access token in place, let's try to get those puppies

    -
    curl -H "Authorization: Bearer $ACCESS_TOKEN" -H 'Host: example.com' http://127.0.0.1:9080/api/v1/dog -i
    -
    -

    it should return 200 OK

    -
      -
    • GET /api/v1/snake -> It's a protected endpoint with oidc (assigned to our keycloak instance and petstore realm) OR with apiKey
    • -
    -

    This example is to show that multiple security requirements (with OR semantics) can be specified -for an OpenAPI operation.

    -

    Without credentials, it should return 401 Unauthorized

    -
    curl -H "Host: example.com" -i "http://127.0.0.1:9080/api/v1/snake"
    -
    -

    With the access token in place, it should return 200 OK (unless the token has expired).

    -
    curl -H "Authorization: Bearer $ACCESS_TOKEN" -H 'Host: example.com' http://127.0.0.1:9080/api/v1/snake -i
    -
    -

    With apiKey it should also work. According to the OpenAPI spec security scheme, -it should be a query string named snake_token and the token needs to be valid token -(from the secret snake-api-key-1 assigned to GET /api/v1/snake)

    -
    curl -H 'Host: example.com' -i "http://127.0.0.1:9080/api/v1/snake?snake_token=I_LIKE_SNAKES"
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrantctl/doc/generate-kuadrant-rate-limit-policy/index.html b/0.10.0/kuadrantctl/doc/generate-kuadrant-rate-limit-policy/index.html deleted file mode 100644 index 46baf5d0d..000000000 --- a/0.10.0/kuadrantctl/doc/generate-kuadrant-rate-limit-policy/index.html +++ /dev/null @@ -1,3686 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Generating Kuadrant RateLimitPolicies - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Generating Kuadrant RateLimitPolicies

    - -

    Generate Kuadrant RateLimitPolicy object from OpenAPI 3

    -

    The kuadrantctl generate kuadrant ratelimitpolicy command generates a Kuadrant RateLimitPolicy -from your OpenAPI Specification (OAS) 3.x document powered with Kuadrant extensions.

    -

    OpenAPI specification

    -

    An OpenAPI document resource can be provided to the Kuadrant CLI in one of the following ways:

    -
      -
    • Filename in the available path.
    • -
    • URL format (supported schemes are HTTP and HTTPS). The CLI will try to download from the given address.
    • -
    • Read from stdin standard input stream.
    • -
    -

    Usage

    -
    Generate Kuadrant RateLimitPolicy from OpenAPI 3.0.x
    -
    -Usage:
    -  kuadrantctl generate kuadrant ratelimitpolicy [flags]
    -
    -Flags:
    -  -h, --help         help for ratelimitpolicy
    -  --oas string        Path to OpenAPI spec file (in JSON or YAML format), URL, or '-' to read from standard input (required)
    -  -o Output format:   'yaml' or 'json'. (default "yaml")
    -
    -Global Flags:
    -  -v, --verbose   verbose output
    -
    -
    -

    Note: The kuadrantctl/examples directory in GitHub includes sample OAS 3 files that you can use to generate the resources.

    -
    -

    Procedure

    -
      -
    1. -

      Clone the Git repository as follows: -

      git clone https://github.com/Kuadrant/kuadrantctl.git
      -cd kuadrantctl
      - ```
      -2. Set up a cluster, Istio and Gateway API CRDs, and Kuadrant as follows: 
      -
      -
      -* Use the single-cluster quick start script to install Kuadrant in a local `kind` cluster: https://docs.kuadrant.io/latest/getting-started-single-cluster/.
      -
      -
      -3. Build and install the CLI in `bin/kuadrantctl` path as follows:
      -```bash
      -make install
      -

      -
    2. -
    3. -

      Deploy the Petstore backend API as follows: -

      kubectl create namespace petstore
      -kubectl apply -n petstore -f examples/petstore/petstore.yaml
      -

      -
    4. -
    5. -

      Create the Petstore OpenAPI definition as follows:

      -
    6. -
    -
    - -
    cat <<EOF >petstore-openapi.yaml
    ----
    -openapi: "3.0.3"
    -info:
    -  title: "Pet Store API"
    -  version: "1.0.0"
    -x-kuadrant:  ## Root-level Kuadrant extension
    -  route:
    -    name: "petstore"
    -    namespace: "petstore"
    -    hostnames:
    -
    -      - example.com
    -    parentRefs:
    -      - name: istio-ingressgateway
    -        namespace: istio-system
    -servers:
    -  - url: https://example.io/v1
    -paths:
    -  /cat:
    -    x-kuadrant:  ## Path-level Kuadrant extension
    -      backendRefs:
    -        - name: petstore
    -          port: 80
    -          namespace: petstore
    -      rate_limit:
    -        rates:
    -          - limit: 1
    -            duration: 10
    -            unit: second
    -        counters:
    -          - request.headers.x-forwarded-for
    -    get:  # Added to the route and rate limited
    -      operationId: "getCat"
    -      responses:
    -        405:
    -          description: "invalid input"
    -    post:  # NOT added to the route
    -      x-kuadrant: 
    -        disable: true
    -      operationId: "postCat"
    -      responses:
    -        405:
    -          description: "invalid input"
    -  /dog:
    -    get:  # Added to the route and rate limited
    -      x-kuadrant:  ## Operation-level Kuadrant extension
    -        backendRefs:
    -          - name: petstore
    -            port: 80
    -            namespace: petstore
    -        rate_limit:
    -          rates:
    -            - limit: 3
    -              duration: 10
    -              unit: second
    -          counters:
    -            - request.headers.x-forwarded-for
    -      operationId: "getDog"
    -      responses:
    -        405:
    -          description: "invalid input"
    -    post:  # Added to the route and NOT rate limited
    -      x-kuadrant:  ## Operation-level Kuadrant extension
    -        backendRefs:
    -          - name: petstore
    -            port: 80
    -            namespace: petstore
    -      operationId: "postDog"
    -      responses:
    -        405:
    -          description: "invalid input"
    -EOF
    -
    -
    - -
    -

    Note: The servers base path is not included. This is work-in-progress in follow-up PRs.

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - -
    OperationApplied configuration
    GET /catShould return 200 OK and be rate limited (1 req / 10 seconds).
    POST /catNot added to the HTTPRoute. Should return 404 Not Found.
    GET /dogShould return 200 OK and be rate limited (3 req / 10 seconds).
    POST /dogShould return 200 OK and NOT rate limited.
    -
      -
    1. -

      Create the HTTPRoute by using the CLI as follows: -

      bin/kuadrantctl generate gatewayapi httproute --oas petstore-openapi.yaml | kubectl apply -n petstore -f -
      -

      -
    2. -
    3. -

      Create the rate limit policy as follows: -

      bin/kuadrantctl generate kuadrant ratelimitpolicy --oas petstore-openapi.yaml | kubectl apply -n petstore -f -
      -

      -
    4. -
    5. -

      Test the OpenAPI endpoints as follows:

      -
    6. -
    7. -

      GET /cat - Should return 200 OK and be rate limited (1 req / 10 seconds). -

      curl --resolve example.com:9080:127.0.0.1 -v "http://example.com:9080/cat"
      -

      -
    8. -
    9. POST /cat - Not added to the HTTPRoute. Should return 404 Not Found. -
      curl --resolve example.com:9080:127.0.0.1 -v -X POST "http://example.com:9080/cat"
      -
    10. -
    11. GET /dog - Should return 200 OK and be rate limited (3 req / 10 seconds).
    12. -
    -
    curl --resolve example.com:9080:127.0.0.1 -v "http://example.com:9080/dog"
    -
    -
      -
    • POST /dog - Should return 200 OK and NOT rate limited.
    • -
    -
    curl --resolve example.com:9080:127.0.0.1 -v -X POST "http://example.com:9080/dog"
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrantctl/doc/images/apicurio-security-scheme-apikey.png b/0.10.0/kuadrantctl/doc/images/apicurio-security-scheme-apikey.png deleted file mode 100644 index 0da63fc05154c49b077c510f1c40ddeff30ae168..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9423 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 S_?FM!^O3x|Tt4F8*Z&KFz3J%y diff --git a/0.10.0/kuadrantctl/doc/images/apicurio-vendor-extension-backend-rate-limit.png b/0.10.0/kuadrantctl/doc/images/apicurio-vendor-extension-backend-rate-limit.png deleted file mode 100644 index 8d18f023f2ea1fed483092f266c9feda6f6ac6bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40320 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 op%6Me3k}b2>D>Q?{D57)m+gi*3nsP)Xz - - - - - - - - - - - - - - - - - - - - - - - CI/CD with kuadrantctl & Tekton - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    kuadrantctl - CI/CD with Tekton and Argo CD

    -

    This guide demonstrates setting up a CI/CD pipeline by using Tekton to deploy Kubernetes Gateway API and Kuadrant resources generated by kuadrantctl, from an OpenAPI definition. In this example, these resources are applied directly to the cluster where Tekton is running.

    -

    Prerequisites

    -
      -
    • Kuadrant, and all of its prerequisites, installed on a Kubernetes or OpenShift cluster.
    • -
    • Tekton Pipelines installed on your cluster.
    • -
    • kubectl configured with access to communicate with your cluster.
    • -
    • Optional: Tekton CLI tkn for easier interaction with Tekton resources.
    • -
    -

    Procedure

    -

    Step 1 - Set up your namespace

    -

    Create a dedicated namespace as follows:

    -
    kubectl create namespace petstore
    -
    -

    Step 2 - Create a Persistent Volume Claim

    -

    For this example, to store associated Tekton build artifacts, create a Persistent Volume Claim (PVC) in the petstore namespace as follows:

    -
    kubectl apply -n petstore -f - <<EOF
    -apiVersion: v1
    -kind: PersistentVolumeClaim
    -metadata:
    -  name: tekton-kuadrantctl-pvc
    -  namespace: petstore
    -spec:
    -  accessModes:
    -
    -    - ReadWriteOnce
    -  resources:
    -    requests:
    -      storage: 1Gi
    -EOF
    -
    -

    Step 3 - Define the Tekton Task

    -

    Define the task that outlines steps to clone a repository, generate Kuadrant and Kubernetes resources by using kuadrantctl, and apply them directly to the cluster as follows:

    -
    kubectl apply -f - <<'EOF'
    -apiVersion: tekton.dev/v1beta1
    -kind: Task
    -metadata:
    -  name: run-kuadrantctl
    -  namespace: petstore
    -spec:
    -  params:
    -
    -    - name: gitRepoUrl
    -      description: URL of the git repository to clone
    -    - name: gitRevision
    -      description: Git revision to checkout (branch, tag, sha)
    -  workspaces:
    -    - name: source
    -      description: Workspace to checkout the git repo
    -    - name: kubeconfig
    -      description: Workspace containing kubeconfig for Kubernetes cluster access
    -  steps:
    -    - name: clean-workspace
    -      image: alpine:latest
    -      script: |
    -        sh -c 'rm -rf $(workspaces.source.path)/* $(workspaces.source.path)/.[!.]* $(workspaces.source.path)/..?*'
    -    - name: clone
    -      image: alpine/git:latest
    -      script: |
    -        git clone $(params.gitRepoUrl) $(workspaces.source.path)
    -        cd $(workspaces.source.path)
    -        git checkout $(params.gitRevision)
    -    - name: download-kuadrantctl
    -      image: curlimages/curl:latest
    -      script: |
    -        ARCH=$(uname -m)
    -        case $ARCH in
    -        x86_64) BIN_ARCH="amd64";;
    -        arm64) BIN_ARCH="arm64";;
    -        aarch64) BIN_ARCH="arm64";;
    -        *) echo "Unsupported architecture: $ARCH" && exit 1 ;;
    -        esac
    -        cd $(workspaces.source.path)
    -        curl -LO "https://github.com/Kuadrant/kuadrantctl/releases/download/v0.2.3/kuadrantctl-v0.2.3-linux-$BIN_ARCH.tar.gz"
    -        tar -xzf kuadrantctl-v0.2.3-linux-$BIN_ARCH.tar.gz
    -    - name: run-kuadrantctl
    -      image: alpine:latest
    -      script: |
    -        cd $(workspaces.source.path)
    -        mkdir -p generated-resources
    -        ./kuadrantctl generate kuadrant authpolicy --oas openapi.yaml | tee generated-resources/authpolicy.yaml
    -        ./kuadrantctl generate kuadrant ratelimitpolicy --oas openapi.yaml |  tee generated-resources/ratelimitpolicy.yaml
    -        ./kuadrantctl generate gatewayapi httproute --oas openapi.yaml | tee generated-resources/httproute.yaml
    -    - name: apply-resources
    -      image: bitnami/kubectl
    -      script: |
    -        cd $(workspaces.source.path)
    -        export KUADRANT_ZONE_ROOT_DOMAIN=example.com # domain name used in the HTTPRoute for the petstore sample app
    -        for file in ./generated-resources/*.yaml; do
    -          envsubst < "$file" | kubectl apply -n petstore -f - 
    -        done
    -EOF
    -
    -

    Note: This example uses Tekton with kubectl to apply resources to a cluster. It is best to use a tool such as Argo CD to implement continuous delivery by using a GitOps approach. In this scenario, you would do the following:

    -
      -
    • Use kuadrantctl to generate Kubernetes and Kuadrant resources as part a Tekton pipeline.
    • -
    • Commit these new resources to a Git repository.
    • -
    • Use ArgoCD to sync these changes from the Git repository to a Kubernetes or OpenShift cluster.
    • -
    -

    Step 4 - Create a Kubeconfig secret

    -
    -

    Important: While this guide uses a kubeconfig secret for simplicity, do not use this in production environments. Instead, use a service account for enhanced security.

    -
    -

    This example uses a kubeconfig secret and role bindings to demonstrate how to provide access for pushing generated resources to a cluster. However, for production setups, employing a service account is best.

    -

    To proceed, create a kubeconfig secret in the petstore namespace to provide Tekton with access to your Kubernetes cluster as follows:

    -
    kubectl create secret generic kubeconfig-secret --from-file=kubeconfig=/path/to/.kube/config -n petstore
    -
    -

    Create an associated ClusterRole and ClusterRoleBinding as follows:

    -
    kubectl apply -n petstore -f - <<EOF
    -apiVersion: rbac.authorization.k8s.io/v1
    -kind: ClusterRole
    -metadata:
    -  name: kuadrant-ci-example-full-access
    -rules:
    -
    -- apiGroups: ["*"]
    -  resources: ["*"]
    -  verbs: ["*"]
    ----
    -apiVersion: rbac.authorization.k8s.io/v1
    -kind: ClusterRoleBinding
    -metadata:
    -  name: kuadrant-ci-example-full-access-binding
    -subjects:
    -- kind: ServiceAccount
    -  name: default
    -  namespace: petstore
    -roleRef:
    -  kind: ClusterRole
    -  name: kuadrant-ci-example-full-access
    -  apiGroup: rbac.authorization.k8s.io
    -EOF
    -
    -

    Step 5 - Trigger the TaskRun

    -

    Execute the task from the petstore namespace, referencing the kubeconfig secret for cluster access as follows:

    -

    This example runs this task with the Kuadrant Petstore app: https://github.com/kuadrant/api-petstore.

    -
    kubectl apply -n petstore -f - <<EOF
    -apiVersion: tekton.dev/v1beta1
    -kind: TaskRun
    -metadata:
    -  name: run-kuadrantctl-taskrun
    -  namespace: petstore
    -spec:
    -  taskRef:
    -    name: run-kuadrantctl
    -  params:
    -
    -    - name: gitRepoUrl
    -      value: "https://github.com/kuadrant/api-petstore.git"
    -    - name: gitRevision
    -      value: "main"
    -  workspaces:
    -    - name: source
    -      persistentVolumeClaim:
    -        claimName: tekton-kuadrantctl-pvc
    -    - name: kubeconfig
    -      secret:
    -        secretName: kubeconfig-secret
    -EOF
    -
    -

    If you have tkn installed, you can easily view the progress of the pipe run as follows:

    -
    tkn taskrun list -n petstore
    -NAME                      STARTED          DURATION   STATUS
    -run-kuadrantctl-taskrun   12 seconds ago   ---        Running(Pending)
    -
    -
    tkn taskrun logs -n petstore -f
    -
    -
    -[clone] Cloning into '/workspace/source'...
    -[clone] Already on 'main'
    -[clone] Your branch is up to date with 'origin/main'.
    -
    -[download-kuadrantctl]   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
    -[download-kuadrantctl]                                  Dload  Upload   Total   Spent    Left  Speed
    -  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
    -100 21.4M  100 21.4M    0     0  6601k      0  0:00:03  0:00:03 --:--:-- 8756k
    -
    -[run-kuadrantctl] {"kind":"AuthPolicy","apiVersion":"kuadrant.io/v1beta2","metadata":{"name":"petstore","namespace":"petstore","creationTimestamp":null,"labels":{"deployment":"petstore","owner":"jbloggs"}},"spec":{"targetRef":{"group":"gateway.networking.k8s.io","kind":"HTTPRoute","name":"petstore","namespace":"petstore"},"routeSelectors":[{"matches":[{"path":{"type":"Exact","value":"/api/v3/store/admin"},"method":"GET"}]}],"rules":{"authentication":{"storeAdmin_api_key":{"credentials":{"customHeader":{"name":"api_key"}},"apiKey":{"selector":{"matchLabels":{"kuadrant.io/apikeys-by":"api_key"}}},"routeSelectors":[{"matches":[{"path":{"type":"Exact","value":"/api/v3/store/admin"},"method":"GET"}]}]}}}},"status":{}}
    -[run-kuadrantctl] {"kind":"RateLimitPolicy","apiVersion":"kuadrant.io/v1beta2","metadata":{"name":"petstore","namespace":"petstore","creationTimestamp":null,"labels":{"deployment":"petstore","owner":"jbloggs"}},"spec":{"targetRef":{"group":"gateway.networking.k8s.io","kind":"HTTPRoute","name":"petstore","namespace":"petstore"},"limits":{"getInventory":{"routeSelectors":[{"matches":[{"path":{"type":"Exact","value":"/api/v3/store/inventory"},"method":"GET"}]}],"rates":[{"limit":10,"duration":10,"unit":"second"}]},"loginUser":{"routeSelectors":[{"matches":[{"path":{"type":"Exact","value":"/api/v3/user/login"},"method":"GET"}]}],"rates":[{"limit":2,"duration":10,"unit":"second"}]}}},"status":{}}
    -[run-kuadrantctl] {"kind":"HTTPRoute","apiVersion":"gateway.networking.k8s.io/v1beta1","metadata":{"name":"petstore","namespace":"petstore","creationTimestamp":null,"labels":{"deployment":"petstore","owner":"jbloggs"}},"spec":{"parentRefs":[{"kind":"Gateway","namespace":"kuadrant-multi-cluster-gateways","name":"prod-web"}],"hostnames":["petstore.${KUADRANT_ZONE_ROOT_DOMAIN}"],"rules":[{"matches":[{"path":{"type":"Exact","value":"/api/v3/user/login"},"method":"GET"}],"backendRefs":[{"name":"petstore","namespace":"petstore","port":8080}]},{"matches":[{"path":{"type":"Exact","value":"/api/v3/store/admin"},"method":"GET"}],"backendRefs":[{"name":"petstore","namespace":"petstore","port":8080}]},{"matches":[{"path":{"type":"Exact","value":"/api/v3/store/inventory"},"method":"GET"}],"backendRefs":[{"name":"petstore","namespace":"petstore","port":8080}]}]},"status":{"parents":null}}
    -
    -[apply-resources] authpolicy.kuadrant.io/petstore created
    -[apply-resources] httproute.gateway.networking.k8s.io/petstore created
    -[apply-resources] ratelimitpolicy.kuadrant.io/petstore created
    -
    -

    Step 6 - Cleanup

    -

    Clean up your resources as follows:

    -
      -
    1. Remove the petstore namespace:
    2. -
    3. kubectl delete ns petstore
    4. -
    5. Remove the ClusterRole and ClusterRoleBinding:
    6. -
    7. kubectl delete clusterrole kuadrant-ci-example-full-access
    8. -
    9. kubectl delete clusterrolebinding kuadrant-ci-example-full-access-binding
    10. -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrantctl/doc/openapi-apicurio/index.html b/0.10.0/kuadrantctl/doc/openapi-apicurio/index.html deleted file mode 100644 index 44251dec3..000000000 --- a/0.10.0/kuadrantctl/doc/openapi-apicurio/index.html +++ /dev/null @@ -1,3645 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Using Apicurio Studio with Kuadrant OAS extensions - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Using Apicurio Studio with Kuadrant OAS extensions

    -

    You can use OpenAPI extensions to define extra functionality beyond what is covered by the standard OpenAPI specification. Extensions typically start with the x- prefix, for example, x-codegen. Kuadrant OpenAPI extensions start with the x-kuadrant prefix, and allow you to configure Kuadrant policy information alongside your API.

    -

    Apicurio Studio is a UI tool for visualizing and editing OpenAPI designs and definitions, which can visualize security details and custom extensions specified in your OpenAPI definition.

    -

    Prerequisites

    - -

    Procedure

    -

    Step 1 - Access your OpenAPI definition in Apicurio Studio

    -

    Open or import your OpenAPI definition in Apicurio Studio. On the Design tab, select the VENDOR-EXTENSiONS section to add an extension. Alternatively, you can use the Source tab to edit the API definition directly.

    -

    Step 2 - Add Kuadrant extensions to your API definition

    -

    The following configuration and extension points are supported by Apicurio Studio and the kuadrantctl CLI:

    -

    Generate an HTTP route

    -

    To generate an HTTPRoute for the API, add the following x-kuadrant block to your API definition in Apicurio Studio, replacing values to match your API details and the location of your Gateway:

    -
    x-kuadrant:
    -    route:
    -        name: petstore
    -        namespace: petstore
    -        hostnames:
    -
    -            - 'petstore.example.com'
    -        parentRefs:
    -            -   name: prod-web
    -                namespace: kuadrant-multi-cluster-gateways
    -                kind: Gateway
    -
    -

    For more details, see Generate Gateway API HTTPRoute object from OpenAPI 3.

    -

    Generate an AuthPolicy

    -

    To generate an AuthPolicy, add a securityScheme to the components block in your API definition. The following securityScheme requires that an API key header is set:

    -
        securitySchemes:
    -        api_key:
    -            type: apiKey
    -            name: api_key
    -            in: header
    -
    -

    Although securityScheme is not an OpenAPI extension, it is used by kuadrantctl like the other extensions mentioned in this document.

    -

    When added, Apicurio Studio will display the following update in the SECURITY SCHEMES section:

    -

    Apicurio security requirements

    -

    For more details, see Generate Kuadrant AuthPolicy object from OpenAPI 3.

    -

    Generate a RateLimitPolicy

    -

    To generate a RateLimitPolicy for the API, add the following x-kuadrant block to a path in your API definition, replacing values to match your API details.

    -
    paths:
    -    /:
    -        x-kuadrant:
    -            backendRefs:
    -                -
    -                    name: petstore
    -                    namespace: petstore
    -                    port: 8080
    -            rate_limit:
    -                rates:
    -                    -
    -                        limit: 10
    -                        duration: 10
    -                        unit: second
    -
    -

    When added, Apicurio Studio will display the following update in the VENDOR-EXTENSiONS section for that specific path:

    -

    Apicurio RateLimitPolicy Vendor Extension

    -

    For more details, see Generate Kuadrant RateLimitPolicy object from OpenAPI 3.

    -

    Additional resources

    - - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrantctl/doc/openapi-kuadrant-extensions/index.html b/0.10.0/kuadrantctl/doc/openapi-kuadrant-extensions/index.html deleted file mode 100644 index 398637e3c..000000000 --- a/0.10.0/kuadrantctl/doc/openapi-kuadrant-extensions/index.html +++ /dev/null @@ -1,3460 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - OpenAPI 3.0.x Kuadrant extensions - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    OpenAPI 3.0.x Kuadrant extensions

    -

    This reference information shows examples of how to add Kuadrant extensions at the root, path, or operation level in an OpenAPI 3.0.x definition.

    -

    Root-level Kuadrant extension

    -

    You can add a Kuadrant extension at the root level of an OpenAPI definition. The following example shows an extension added for a petstore app:

    -
    x-kuadrant:
    -  route:  ## HTTPRoute metadata
    -    name: "petstore"
    -    namespace: "petstore"
    -    labels:  ## map[string]string
    -      deployment: petstore
    -    hostnames:  ## []gateway.networking.k8s.io/v1beta1.Hostname
    -
    -      - example.com
    -    parentRefs:  ## []gateway.networking.k8s.io/v1beta1.ParentReference
    -      - name: apiGateway
    -        namespace: gateways
    -
    -

    Path-level Kuadrant extension

    -

    You can add a Kuadrant extension at the path level of an OpenAPI definition. -This configuration at the path level is the default when there is no operation-level configuration. -The following example shows an extension added for a /cat path:

    -
    paths:
    -  /cat:
    -    x-kuadrant:  ## Path-level Kuadrant extension
    -      disable: true  ## Remove from the HTTPRoute. Optional. Default: false
    -      pathMatchType: Exact ## Specifies how to match against the path value. Valid values: [Exact;PathPrefix]. Optional. Default: Exact
    -      backendRefs:  ## Backend references to be included in the HTTPRoute. []gateway.networking.k8s.io/v1beta1.HTTPBackendRef. Optional.
    -
    -        - name: petstore
    -          port: 80
    -          namespace: petstore
    -      rate_limit:  ## Rate limit configuration. Optional.
    -        rates:   ## Kuadrant API []github.com/kuadrant/kuadrant-operator/api/v1beta2.Rate
    -          - limit: 1
    -            duration: 10
    -            unit: second
    -        counters:   ## Kuadrant API []github.com/kuadrant/kuadrant-operator/api/v1beta2.CountextSelector
    -          - auth.identity.username
    -        when:   ## Kuadrant API []github.com/kuadrant/kuadrant-operator/api/v1beta2.WhenCondition
    -          - selector: metadata.filter_metadata.envoy\.filters\.http\.ext_authz.identity.userid
    -            operator: eq
    -            value: alice
    -
    -

    Operation-level Kuadrant extension

    -

    You can add a Kuadrant extension at the operation level of an OpenAPI definition. This extension uses the same schema as the path-level Kuadrant extension. The following example shows an extension added for a get operation:

    -
    paths:
    -  /cat:
    -    get:
    -      x-kuadrant:  ## Operation-level Kuadrant extension
    -        disable: true  ## Remove from the HTTPRoute. Optional. Default: path level "disable" value.
    -        pathMatchType: Exact ## Specifies how to match against the path value. Valid values: [Exact;PathPrefix]. Optional. Default: Exact.
    -        backendRefs:  ## Backend references to be included in the HTTPRoute. Optional.
    -
    -          - name: petstore
    -            port: 80
    -            namespace: petstore
    -        rate_limit:  ## Rate limit configuration. Optional.
    -          rates:   ## Kuadrant API github.com/kuadrant/kuadrant-operator/api/v1beta2.Rate
    -            - limit: 1
    -              duration: 10
    -              unit: second
    -          counters:   ## Kuadrant API github.com/kuadrant/kuadrant-operator/api/v1beta2.CountextSelector
    -            - auth.identity.username
    -          when:   ## Kuadrant API github.com/kuadrant/kuadrant-operator/api/v1beta2.WhenCondition
    -            - selector: metadata.filter_metadata.envoy\.filters\.http\.ext_authz.identity.userid
    -              operator: eq
    -              value: alice
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrantctl/doc/openapi-openshift-dev-spaces/index.html b/0.10.0/kuadrantctl/doc/openapi-openshift-dev-spaces/index.html deleted file mode 100644 index bca3556d5..000000000 --- a/0.10.0/kuadrantctl/doc/openapi-openshift-dev-spaces/index.html +++ /dev/null @@ -1,4085 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - Using OpenShift Dev Spaces with Kuadrant OAS extensions - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Integrating Kuadrant OAS extensions with Red Hat OpenShift Dev Spaces

    -

    OpenAPI extensions enhance the standard OpenAPI specification by adding custom functionality. Kuadrant OpenAPI extensions are identified by the x-kuadrant prefix. You can use OpenAPI extensions to integrate Kuadrant policies directly into your API definitions.

    -

    Red Hat OpenShift Dev Spaces provides a browser-based, cloud-native IDE that supports rapid and decentralized development in container-based environments. This tutorial demonstrates how to use OpenShift Dev Spaces to modify an OpenAPI definition by incorporating Kuadrant policies, and then use the kuadrantctl CLI to create Kubernetes resources for both Gateway API and Kuadrant.

    -

    Prerequisites

    -
      -
    • -

      You must have access to one of the following Dev Spaces instances:

      -
    • -
    • -

      A self-hosted OpenShift Dev Spaces instance.

      -
    • -
    • An OpenShift Dev Spaces instance provided by the Red Hat Developer Sandbox.
    • -
    -

    Procedure

    -

    Step 1 - Setting up your workspace

    -

    Create a workspace in Dev Spaces for your project as follows:

    -
      -
    1. Fork the following repository: https://github.com/Kuadrant/blank-petstore.
    2. -
    3. In Dev Spaces, select Create Workspace, and enter the URL of your forked repository. For example: https://github.com/<your-username>/blank-petstore.git.
    4. -
    5. Click Create & Open.
    6. -
    -

    Step 2 - Configuring VS Code in Dev Spaces

    -

    For this tutorial, you will perform the following tasks:

    -
      -
    • Install kuadrantctl in your workspace to demonstrate Kubernetes resource generation from your modified OpenAPI definition.
    • -
    • Optional: Configure Git with your username and email to enable pushing changes back to your repository.
    • -
    -

    Install the kuadrantctl CLI

    -

    To install kuadrantctl in your Dev Spaces workspace, enter the following command:

    -
    curl -sL "https://github.com/kuadrant/kuadrantctl/releases/download/v0.2.3/kuadrantctl-v0.2.3-linux-amd64.tar.gz" | tar xz -C /home/user/.local/bin
    -
    -

    This command installs kuadrantctl in /home/user/.local/bin, which is included in the container's $PATH by default.

    -

    Optional: Configuring Git

    -

    If you plan to push changes back to your repository, configure your Git username and email as follows:

    -
    git config --global user.email "foo@example.com"
    -git config --global user.name "Foo Example"
    -
    -

    Step 3 - Adding Kuadrant policies to your OpenAPI definition

    -

    After creating your workspace, Dev Spaces will launch VS Code loaded with your forked repository. Navigate to the openapi.yaml file in the sample app to begin modifications.

    -

    Kuadrant policies overview

    -

    You will enhance your API definition by applying Kuadrant policies to the following endpoints:

    -
      -
    • /pet/findByStatus
    • -
    • /user/login
    • -
    • /store/inventory
    • -
    -

    In this tutorial, you will add Kuadrant policies to your API definition as follows:

    -
      -
    • Generate an HTTPRoute to expose these three routes for an existing Gateway.
    • -
    • Add API key authentication for the /user/login route, using a Kuadrant AuthPolicy and OAS securitySchemes.
    • -
    • Add a Kuadrant RateLimitPolicy to the /store/inventory endpoint, to limit the amount of requests this endpoint can receive.
    • -
    -

    Defining a Gateway

    -

    Use the x-kuadrant extension in the root level to specify a Gateway. This information will be used to generate HTTPRoutes at the path level. For example:

    -
    x-kuadrant:
    -  route:  ## HTTPRoute metadata
    -    name: "petstore"
    -    namespace: "petstore"
    -    labels:  ## map[string]string
    -      deployment: petstore
    -    hostnames:  ## []gateway.networking.k8s.io/v1beta1.Hostname
    -
    -      - example.com
    -    parentRefs:  ## []gateway.networking.k8s.io/v1beta1.ParentReference
    -      - name: apiGateway
    -        namespace: gateways
    -
    -

    Specifying HTTPRoutes for each path

    -

    For each path, add an x-kuadrant extension with backendRefs to link your routes to your paths as follows:

    -
      /pet/findByStatus:
    -    x-kuadrant:
    -      backendRefs:
    -
    -      - name: petstore
    -        namespace: petstore
    -        port: 8080
    -    get:
    -      # ...
    -
    -
      /user/login:
    -    x-kuadrant:
    -      backendRefs:
    -
    -      - name: petstore
    -        namespace: petstore
    -        port: 8080
    -    get:
    -      # ...
    -
    -
      /store/inventory:
    -    x-kuadrant:
    -      backendRefs:
    -
    -      - name: petstore
    -        namespace: petstore
    -        port: 8080
    -    get:
    -      # ...
    -
    -

    Note: The x-kuadrant extension at the path level applies to all HTTP methods defined in the path. For method-specific policies, move the extension inside the relevant HTTP method block, for example, get or post.

    -

    Implementing AuthPolicy and security schemes

    -

    To secure the /user/login endpoint with API key authentication, use the following configuration:

    -
      /user/login:
    -    # ...
    -    get:
    -      security:
    -
    -      - api_key: []
    -
    -
    components:
    -  schemas:
    -    # ...
    -  securitySchemes:
    -    api_key:
    -      type: apiKey
    -      name: api_key
    -      in: header
    -
    -

    This configuration generates an AuthPolicy that references an API key stored in a labeled Secret:

    -

    apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: petstore-api-key
    -  namespace: petstore
    -  labels:
    -    authorino.kuadrant.io/managed-by: authorino
    -    kuadrant.io/apikeys-by: api_key
    -stringData:
    -  api_key: secret
    -type: Opaque
    -
    -For simplicity, this example uses a simple, static API key for your app.

    -

    Applying a RateLimitPolicy to an endpoint

    -

    To enforce rate limiting on the /store/inventory endpoint, add the following x-kuadrant extension:

    -
      /store/inventory:
    -    get:
    -      # ...
    -      x-kuadrant:
    -        backendRefs:
    -          # ...
    -        rate_limit:
    -          rates:
    -
    -          - limit: 10
    -            duration: 10
    -            unit: second
    -
    -

    This limits to 10 requests every 10 seconds for the /store/inventory endpoint.

    -

    Step 4 - Generate Kubernetes resources by using kuadrantctl

    -

    With your extensions in place, you can use kuadrantctl to generate the follollowing Kubernetes resources:

    -
      -
    • An HTTPRoute for your petstore app for each of your endpoints.
    • -
    • An AuthPolicy with a simple, static API key from a secret for the /user/login endpoint.
    • -
    • A RateLimitPolicy with a rate limit of 10 requests every 10 seconds for the /store/inventory endpoint.
    • -
    -

    In Dev Spaces, select ☰ > Terminal > New Terminal, and run the following commands:

    -
    Generate an HTTPRoute
    -
    kuadrantctl generate gatewayapi httproute --oas openapi.yaml
    -
    -

    This command outputs the following HTTPRoute:

    -
    kind: HTTPRoute
    -apiVersion: gateway.networking.k8s.io/v1beta1
    -metadata:
    -  name: petstore
    -  namespace: petstore
    -  creationTimestamp: null
    -  labels:
    -    deployment: petstore
    -spec:
    -  parentRefs:
    -
    -    - namespace: gateways
    -      name: apiGateway
    -  hostnames:
    -    - example.com
    -  rules:
    -    - matches:
    -        - path:
    -            type: Exact
    -            value: /api/v3/pet/findByStatus
    -          method: GET
    -      backendRefs:
    -        - name: petstore
    -          namespace: petstore
    -          port: 8080
    -    - matches:
    -        - path:
    -            type: Exact
    -            value: /api/v3/store/inventory
    -          method: GET
    -      backendRefs:
    -        - name: petstore
    -          namespace: petstore
    -          port: 8080
    -    - matches:
    -        - path:
    -            type: Exact
    -            value: /api/v3/user/login
    -          method: GET
    -      backendRefs:
    -        - name: petstore
    -          namespace: petstore
    -          port: 8080
    -status:
    -  parents: null
    -
    -
    Generate an AuthPolicy
    -
    kuadrantctl generate kuadrant authpolicy --oas openapi.yaml
    -
    -

    This command outputs the following AuthPolicy:

    -
    apiVersion: kuadrant.io/v1beta2
    -kind: AuthPolicy
    -metadata:
    -  name: petstore
    -  namespace: petstore
    -  creationTimestamp: null
    -  labels:
    -    deployment: petstore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: petstore
    -    namespace: petstore
    -  routeSelectors:
    -
    -    - matches:
    -        - path:
    -            type: Exact
    -            value: /api/v3/user/login
    -          method: GET
    -  rules:
    -    authentication:
    -      GETuserlogin_api_key:
    -        credentials:
    -          customHeader:
    -            name: api_key
    -        apiKey:
    -          selector:
    -            matchLabels:
    -              kuadrant.io/apikeys-by: api_key
    -        routeSelectors:
    -          - matches:
    -              - path:
    -                  type: Exact
    -                  value: /api/v3/user/login
    -                method: GET
    -status: {}
    -
    -
    Generate a RateLimitPolicy
    -
    kuadrantctl generate kuadrant ratelimitpolicy --oas openapi.yaml
    -
    -

    This command outputs the following RateLimitPolicy:

    -
    apiVersion: kuadrant.io/v1beta2
    -kind: RateLimitPolicy
    -metadata:
    -  name: petstore
    -  namespace: petstore
    -  creationTimestamp: null
    -  labels:
    -    deployment: petstore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: petstore
    -    namespace: petstore
    -  limits:
    -    GETstoreinventory:
    -      routeSelectors:
    -
    -        - matches:
    -            - path:
    -                type: Exact
    -                value: /api/v3/store/inventory
    -              method: GET
    -      rates:
    -        - limit: 10
    -          duration: 10
    -          unit: second
    -status: {}
    -
    -

    Step 5 - Applying resources to the app

    -
    -

    Note: By default, the oc and kubectl commands in Dev Spaces target the cluster running Dev Spaces. If you want to apply resources to another cluster, you must log in with oc or kubectl to another cluster, and pass a different --context to these commands to apply resources to another cluster.

    -
    -

    You can now apply these policies to a running app by using kubectl or oc. If Dev Spaces is running on a cluster where Kuadrant is also installed, you can apply these resources as follows:

    -
    kuadrantctl generate gatewayapi httproute --oas openapi.yaml | kubectl apply -f -
    -kuadrantctl generate kuadrant authpolicy --oas openapi.yaml | kubectl apply -f -
    -kuadrantctl generate kuadrant ratelimitpolicy --oas openapi.yaml | kubectl apply -f -
    -
    -

    Alternatively, you can use kuadrantctl as part of a CI/CD pipeline. For more details, see the kuadrantctl CI/CD guide.

    -

    If you completed the optional Git configuration step, you can enter git commit to commit the these changes and push them to your fork.

    -

    Additional resources

    -

    For more details, see the following documentation on using x-kuadrant OAS extensions with kuadrantctl:

    - - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/kuadrantctl/index.html b/0.10.0/kuadrantctl/index.html deleted file mode 100644 index 935210779..000000000 --- a/0.10.0/kuadrantctl/index.html +++ /dev/null @@ -1,4049 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Getting Started - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    kuadrantctl

    -

    License

    -

    kuadrantctl is a CLI tool for managing Kuadrant configurations and resources.

    -

    Installing

    -

    kuadrantctl can be installed either by downloading pre-compiled binaries or by compiling from source. For most users, downloading the binary is the easiest and recommended method.

    -

    Installing Pre-compiled Binaries

    -
      -
    1. Download the latest binary for your platform from the kuadrantctl Releases page.
    2. -
    3. Unpack the binary.
    4. -
    5. Move it to a directory in your $PATH so that it can be executed from anywhere.
    6. -
    -

    Compiling from Source

    -

    If you prefer to compile from source or are contributing to the project, you can install kuadrantctl using make install. This method requires Golang 1.21 or newer.

    -

    It is possible to use the make target install to compile from source. From root of the repository, run

    -
    make install
    -
    -

    This will compile kuadrantctl and install it in the bin directory at root of directory. It will also ensure the correct version of the binary is displayed . It can be ran using ./bin/kuadrantctl .

    -

    Usage

    -

    Below is a high-level overview of its commands, along with links to detailed documentation for more complex commands.

    -

    General Syntax

    -
    kuadrantctl [command] [subcommand] [flags]
    -
    -

    Commands Overview

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    CommandDescription
    completionGenerate autocompletion scripts for the specified shell
    generateCommands related to Kubernetes Gateway API and Kuadrant resource generation from OpenAPI 3.x specifications
    helpHelp about any command
    versionPrint the version number of kuadrantctl
    -

    Flags

    - - - - - - - - - - - - - - - - - -
    FlagDescription
    -h, --helpHelp for kuadrantctl
    -v, --verboseEnable verbose output
    -

    Commands Detail

    -

    completion

    -

    Generate an autocompletion script for the specified shell.

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    SubcommandDescription
    bashGenerate script for Bash
    fishGenerate script for Fish
    powershellGenerate script for PowerShell
    zshGenerate script for Zsh
    -

    generate

    -

    Commands related to Kubernetes Gateway API and Kuadrant resource generation from OpenAPI 3.x specifications.

    - - - - - - - - - - - - - - - - - -
    SubcommandDescription
    gatewayapiGenerate Gateway API resources
    kuadrantGenerate Kuadrant resources
    -
    generate gatewayapi
    -

    Generate Gateway API resources from an OpenAPI 3.x specification

    - - - - - - - - - - - - - - - -
    SubcommandDescriptionFlags
    httprouteGenerate Gateway API HTTPRoute from OpenAPI 3.0.X--oas string Path to OpenAPI spec file (in JSON or YAML format), URL, or '-' to read from standard input (required). -o Output format: 'yaml' or 'json'. (default "yaml")
    -
    generate kuadrant
    -

    Generate Kuadrant resources from an OpenAPI 3.x specification

    - - - - - - - - - - - - - - - - - - - - -
    SubcommandDescriptionFlags
    authpolicyGenerate a Kuadrant AuthPolicy from an OpenAPI 3.0.x specification--oas string Path to OpenAPI spec file (in JSON or YAML format), URL, or '-' to read from standard input (required). -o Output format: 'yaml' or 'json'. (default "yaml")
    ratelimitpolicyGenerate Kuadrant RateLimitPolicy from an OpenAPI 3.0.x specification--oas string Path to OpenAPI spec file (in JSON or YAML format), URL, or '-' to read from standard input (required). -o Output format: 'yaml' or 'json'. (default "yaml")
    -

    version

    -

    Print the version number of kuadrantctl.

    -

    No additional flags or subcommands.

    -

    Additional Guides

    -

    Generating Gateway API HTTPRoute Objects

    -
      -
    • Generates Gateway API HTTPRoute objects from an OpenAPI Specification (OAS) 3.x.
    • -
    • Supports reading from a file, URL, or stdin.
    • -
    • Example usages and more information can be found in the detailed guide.
    • -
    -

    Generating Kuadrant AuthPolicy Objects

    -
      -
    • Generates Kuadrant AuthPolicy objects for managing API authentication.
    • -
    • Supports openIdConnect and apiKey types from the OpenAPI Security Scheme Object.
    • -
    • Example usages and more information can be found in the detailed guide.
    • -
    -

    Generating Kuadrant RateLimitPolicy Objects

    -
      -
    • Generates Kuadrant RateLimitPolicy objects for managing API rate limiting.
    • -
    • Supports reading from a file, URL, or stdin.
    • -
    • Example usages and more information can be found in the detailed guide.
    • -
    -

    For more detailed information about each command, including options and usage examples, use kuadrantctl [command] --help.

    -

    Using with GitHub Actions

    -
    - name: Install kuadrantctl
    -  uses: jaxxstorm/action-install-gh-release@v1.10.0
    -  with: # Grab the latest version
    -    repo: Kuadrant/kuadrantctl
    -
    -

    Commands

    - -

    Contributing

    -

    The Development guide describes how to build the kuadrantctl CLI and how to test your changes before submitting a patch or opening a PR.

    -

    Licensing

    -

    This software is licensed under the Apache 2.0 license.

    -

    See the LICENSE and NOTICE files that should have been provided along with this software for details.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/limitador-operator/doc/development/index.html b/0.10.0/limitador-operator/doc/development/index.html deleted file mode 100644 index 9386862e1..000000000 --- a/0.10.0/limitador-operator/doc/development/index.html +++ /dev/null @@ -1,3945 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Developer's Guide - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Development Guide

    -

    Technology stack required for development

    - -

    Build

    -
    make
    -
    -

    Run locally

    -

    You need an active session open to a kubernetes cluster.

    -

    Optionally, run kind with local-env-setup.

    -
    make local-env-setup
    -
    -

    Then, run the operator locally

    -
    make run
    -
    -

    Deploy the operator in a deployment object

    -
    make local-setup
    -
    -

    Deploy the operator using OLM

    -

    You can deploy the operator using OLM just running a few commands. -No need to build any image. Kuadrant engineering team provides latest and -released version tagged images. They are available in -the Quay.io/Kuadrant image repository.

    -

    Create kind cluster

    -
    make kind-create-cluster
    -
    -

    Deploy OLM system

    -
    make install-olm
    -
    -

    Deploy the operator using OLM. The make deploy-catalog target accepts the following variables:

    - - - - - - - - - - - - - - - -
    Makefile VariableDescriptionDefault value
    CATALOG_IMGCatalog image URLquay.io/kuadrant/limitador-operator-catalog:latest
    -
    make deploy-catalog [CATALOG_IMG=quay.io/kuadrant/limitador-operator-catalog:latest]
    -
    -

    Build custom OLM catalog

    -

    If you want to deploy (using OLM) a custom limitador operator, you need to build your own catalog.

    -

    Build operator bundle image

    -

    The make bundle target accepts the following variables:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Makefile VariableDescriptionDefault valueNotes
    IMGOperator image URLquay.io/kuadrant/limitador-operator:latest
    VERSIONBundle version0.0.0
    RELATED_IMAGE_LIMITADORLimitador bundle URLquay.io/kuadrant/limitador:latestLIMITADOR_VERSION var could be use to build this URL providing the tag
    -
      -
    • Build the bundle manifests
    • -
    -
    make bundle [IMG=quay.io/kuadrant/limitador-operator:latest] \
    -            [VERSION=0.0.0] \
    -            [RELATED_IMAGE_LIMITADOR=quay.io/kuadrant/limitador:latest]
    -
    -
      -
    • Build the bundle image from the manifests
    • -
    - - - - - - - - - - - - - - - -
    Makefile VariableDescriptionDefault value
    BUNDLE_IMGOperator bundle image URLquay.io/kuadrant/limitador-operator-bundle:latest
    -
    make bundle-build [BUNDLE_IMG=quay.io/kuadrant/limitador-operator-bundle:latest]
    -
    -
      -
    • Push the bundle image to a registry
    • -
    - - - - - - - - - - - - - - - -
    Makefile VariableDescriptionDefault value
    BUNDLE_IMGOperator bundle image URLquay.io/kuadrant/limitador-operator-bundle:latest
    -
    make bundle-push [BUNDLE_IMG=quay.io/kuadrant/limitador-operator-bundle:latest]
    -
    -

    Build custom catalog

    -

    The catalog format will be File-based Catalog.

    -

    Make sure all the required bundles are pushed to the registry. It is required by the opm tool.

    -

    The make catalog target accepts the following variables:

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    Makefile VariableDescriptionDefault value
    BUNDLE_IMGOperator bundle image URLquay.io/kuadrant/limitador-operator-bundle:latest
    REPLACES_VERSIONPrevious operator version0.0.0-alpha
    CHANNELSCatalog channelspreview
    -
    make catalog [BUNDLE_IMG=quay.io/kuadrant/limitador-operator-bundle:latest] \
    -             [REPLACES_VERSION=0.0.0-alpha] \
    -             [CHANNELS=preview]
    -
    -
      -
    • Build the catalog image from the manifests
    • -
    - - - - - - - - - - - - - - - -
    Makefile VariableDescriptionDefault value
    CATALOG_IMGOperator catalog image URLquay.io/kuadrant/limitador-operator-catalog:latest
    -
    make catalog-build [CATALOG_IMG=quay.io/kuadrant/limitador-operator-catalog:latest]
    -
    -
      -
    • Push the catalog image to a registry
    • -
    -
    make catalog-push [CATALOG_IMG=quay.io/kuadrant/limitador-operator-bundle:latest]
    -
    -

    You can try out your custom catalog image following the steps of the -Deploy the operator using OLM section.

    -

    Cleaning up

    -
    make local-cleanup
    -
    -

    Run tests

    -

    Unittests

    -
    make test-unit
    -
    -

    Optionally, add TEST_NAME makefile variable to run specific test

    -
    make test-unit TEST_NAME=TestConstants
    -
    -

    or even subtest

    -
    make test-unit TEST_NAME=TestLimitIndexEquals/empty_indexes_are_equal
    -
    -

    Integration tests

    -

    You need an active session open to a kubernetes cluster.

    -

    Optionally, run local cluster with kind

    -
    make local-env-setup
    -
    -

    Run integration tests

    -
    make test-integration
    -
    -

    All tests

    -

    You need an active session open to a kubernetes cluster.

    -

    Optionally, run local cluster with kind

    -
    make local-env-setup
    -
    -

    Run all tests

    -
    make test
    -
    -

    Lint tests

    -
    make run-lint
    -
    -

    (Un)Install Limitador CRD

    -

    You need an active session open to a kubernetes cluster.

    -

    Remove CRDs

    -
    make uninstall
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/limitador-operator/doc/logging/index.html b/0.10.0/limitador-operator/doc/logging/index.html deleted file mode 100644 index 7aaae6af4..000000000 --- a/0.10.0/limitador-operator/doc/logging/index.html +++ /dev/null @@ -1,3393 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Logging - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Logging

    -

    The limitador operator outputs 3 levels of log messages: (from lowest to highest level)

    -
      -
    1. debug
    2. -
    3. info (default)
    4. -
    5. error
    6. -
    -

    info logging is restricted to high-level information. Actions like creating, deleting or updating kubernetes resources will be logged with reduced details about the corresponding objects, and without any further detailed logs of the steps in between, except for errors.

    -

    Only debug logging will include processing details.

    -

    To configure the desired log level, set the environment variable LOG_LEVEL to one of the supported values listed above. Default log level is info.

    -

    Apart from log level, the controller can output messages to the logs in 2 different formats:

    -
      -
    • production (default): each line is a parseable JSON object with properties {"level":string, "ts":int, "msg":string, "logger":string, extra values...}
    • -
    • development: more human-readable outputs, extra stack traces and logging info, plus extra values output as JSON, in the format: <timestamp-iso-8601>\t<log-level>\t<logger>\t<message>\t{extra-values-as-json}
    • -
    -

    To configure the desired log mode, set the environment variable LOG_MODE to one of the supported values listed above. Default log mode is production.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/limitador-operator/doc/rate-limit-headers/index.html b/0.10.0/limitador-operator/doc/rate-limit-headers/index.html deleted file mode 100644 index cc579806d..000000000 --- a/0.10.0/limitador-operator/doc/rate-limit-headers/index.html +++ /dev/null @@ -1,3395 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Rate limit headers - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Rate Limit Headers

    -

    It enables RateLimit Header Fields for HTTP as specified in -Rate Limit Headers Draft

    -
    apiVersion: limitador.kuadrant.io/v1alpha1
    -kind: Limitador
    -metadata:
    -  name: limitador-sample
    -spec:
    -  rateLimitHeaders: DRAFT_VERSION_03
    -
    -

    Current valid values are:

    - -

    By default, when spec.rateLimitHeaders is null, --rate-limit-headers command line arg is not -included in the limitador's deployment.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/limitador-operator/doc/resource-requirements/index.html b/0.10.0/limitador-operator/doc/resource-requirements/index.html deleted file mode 100644 index a868a813d..000000000 --- a/0.10.0/limitador-operator/doc/resource-requirements/index.html +++ /dev/null @@ -1,3464 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Resource Requirements - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Resource Requirements

    -

    The default resource requirement for Limitador deployments is specified in Limitador v1alpha1 API reference -and will be applied if the resource requirement is not set in the spec.

    -
    apiVersion: limitador.kuadrant.io/v1alpha1
    -kind: Limitador
    -metadata:
    -  name: limitador-sample
    -spec:
    -  listener:
    -    http:
    -      port: 8080
    -    grpc:
    -      port: 8081
    -  limits:
    -
    -    - conditions: ["get_toy == 'yes'"]
    -      max_value: 2
    -      namespace: toystore-app
    -      seconds: 30
    -      variables: []  
    -
    - - - - - - - - - - - - - - - - - - - - - -
    Fieldjson/yaml fieldTypeRequiredDefault valueDescription
    ResourceRequirementsresourceRequirements*corev1.ResourceRequirementsNo{"limits": {"cpu": "500m","memory": "64Mi"},"requests": {"cpu": "250m","memory": "32Mi"}}Limitador deployment resource requirements
    -

    Example with resource limits

    -

    The resource requests and limits for the deployment can be set like the following:

    -
    apiVersion: limitador.kuadrant.io/v1alpha1
    -kind: Limitador
    -metadata:
    -  name: limitador-sample
    -spec:
    -  listener:
    -    http:
    -      port: 8080
    -    grpc:
    -      port: 8081
    -  limits:
    -
    -    - conditions: ["get_toy == 'yes'"]
    -      max_value: 2
    -      namespace: toystore-app
    -      seconds: 30
    -      variables: []
    -  resourceRequirements:
    -    limits:
    -      cpu: 200m
    -      memory: 400Mi
    -    requests:
    -      cpu: 101m  
    -      memory: 201Mi    
    -
    -

    To specify the deployment without resource requests or limits, set an empty struct {} to the field: -

    apiVersion: limitador.kuadrant.io/v1alpha1
    -kind: Limitador
    -metadata:
    -  name: limitador-sample
    -spec:
    -  listener:
    -    http:
    -      port: 8080
    -    grpc:
    -      port: 8081
    -  limits:
    -
    -    - conditions: [ "get_toy == 'yes'" ]
    -      max_value: 2
    -      namespace: toystore-app
    -      seconds: 30
    -      variables: []
    -  resourceRequirements: {}
    -

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/limitador-operator/doc/storage/index.html b/0.10.0/limitador-operator/doc/storage/index.html deleted file mode 100644 index 7f1c11883..000000000 --- a/0.10.0/limitador-operator/doc/storage/index.html +++ /dev/null @@ -1,3770 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Storage - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Storage

    -

    Limitador limits counters are stored in a backend storage. This is In contrast to the storage of -the limits themselves, which are always stored in ephemeral memory. Limitador's operator -supports several storage configurations:

    -
      -
    • In-Memory: ephemeral and cannot be shared
    • -
    • Redis: Persistent (depending on the redis storage configuration) and can be shared
    • -
    • Redis Cached: Persistent (depending on the redis storage configuration) and can be shared
    • -
    • Disk: Persistent (depending on the underlying disk persistence capabilities) and cannot be shared
    • -
    -

    In-Memory

    -

    Counters are held in Limitador (ephemeral)

    -

    In-Memory is the default option defined by the Limitador's Operator.

    -
    apiVersion: limitador.kuadrant.io/v1alpha1
    -kind: Limitador
    -metadata:
    -  name: limitador-sample
    -spec:
    -  storage: null
    -
    -

    For any of those, one should store the URL of the Redis service, inside a K8s opaque -Secret.

    -
    apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: redisconfig
    -stringData:
    -  URL: redis://127.0.0.1/a # Redis URL of its running instance
    -type: Opaque
    -
    -

    Redis

    -

    Uses Redis to store counters.

    -

    Selected when spec.storage.redis is not null.

    -
    apiVersion: limitador.kuadrant.io/v1alpha1
    -kind: Limitador
    -metadata:
    -  name: limitador-sample
    -spec:
    -  storage:
    -    redis:
    -      configSecretRef: # The secret reference storing the URL for Redis
    -        name: redisconfig
    -
    -

    The URL of the Redis service is provided inside a K8s opaque -Secret. -The secret is required to be in the same namespace as the Limitador CR.

    -
    apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: redisconfig
    -stringData:
    -  URL: redis://127.0.0.1/a # Redis URL of its running instance
    -type: Opaque
    -
    -

    Note: Limitador's Operator will only read the URL field of the secret.

    -

    Redis Cached

    -

    Uses Redis to store counters, with an in-memory cache.

    -

    Selected when spec.storage.redis-cached is not null.

    -
    apiVersion: limitador.kuadrant.io/v1alpha1
    -kind: Limitador
    -metadata:
    -  name: limitador-sample
    -spec:
    -  storage:
    -    redis-cached:
    -      configSecretRef: # The secret reference storing the URL for Redis
    -        name: redisconfig
    -
    -

    The URL of the Redis service is provided inside a K8s opaque -Secret. -The secret is required to be in the same namespace as the Limitador CR. -

    apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: redisconfig
    -stringData:
    -  URL: redis://127.0.0.1/a # Redis URL of its running instance
    -type: Opaque
    -

    -

    Note: Limitador's Operator will only read the URL field of the secret.

    -

    Additionally, caching options can be specified in the spec.storage.redis-cached.options field.

    -

    Options

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionDescription
    batch-sizeSize of entries to flush in as single flush [default: 100]
    flush-periodFlushing period for counters in milliseconds [default: 1000]
    max-cachedMaximum amount of counters cached [default: 10000]
    response-timeoutTimeout for Redis commands in milliseconds [default: 350]
    -

    For example:

    -
    apiVersion: limitador.kuadrant.io/v1alpha1
    -kind: Limitador
    -metadata:
    -  name: limitador-sample
    -spec:
    -  storage:
    -    redis-cached:
    -      configSecretRef: # The secret reference storing the URL for Redis
    -        name: redisconfig
    -      options: # Every option is optional
    -        batch-size: 50
    -        max-cached: 5000
    -
    -

    Disk

    -

    Counters are held on disk (persistent). -Kubernetes Persistent Volumes -will be used to store counters.

    -

    Selected when spec.storage.disk is not null.

    -
    apiVersion: limitador.kuadrant.io/v1alpha1
    -kind: Limitador
    -metadata:
    -  name: limitador-sample
    -spec:
    -  storage:
    -    disk: {}
    -
    -

    Additionally, disk options can be specified in the spec.storage.disk.persistentVolumeClaim -and spec.storage.disk.optimize fields.

    -

    Persistent Volume Claim Options

    -

    spec.storage.disk.persistentVolumeClaim field is an object with the following fields.

    - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    storageClassNameStorageClass of the storage offered by cluster administrators [default: default storage class of the cluster]
    resourcesThe minimum resources the volume should have. Resources will not take any effect when VolumeName is provided. This parameter is not updateable when the underlying PV is not resizable. [default: 1Gi]
    volumeNameThe binding reference to the existing PersistentVolume backing this claim [default: null]
    -

    Example:

    -
    apiVersion: limitador.kuadrant.io/v1alpha1
    -kind: Limitador
    -metadata:
    -  name: limitador-sample
    -spec:
    -  storage:
    -    disk:
    -      persistentVolumeClaim:
    -        storageClassName: "customClass"
    -        resources:
    -          requests: 2Gi
    -
    -

    Optimize

    -

    Defines the valid optimization option of the disk persistence type.

    -

    spec.storage.disk.optimize field is a string type with the following valid values:

    - - - - - - - - - - - - - - - - - -
    OptionDescription
    throughputOptimizes for higher throughput. Default
    diskOptimizes for disk usage
    -

    Example:

    -
    apiVersion: limitador.kuadrant.io/v1alpha1
    -kind: Limitador
    -metadata:
    -  name: limitador-sample
    -spec:
    -  storage:
    -    disk:
    -      optimize: disk
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/limitador-operator/doc/tracing/index.html b/0.10.0/limitador-operator/doc/tracing/index.html deleted file mode 100644 index 83dbf1d36..000000000 --- a/0.10.0/limitador-operator/doc/tracing/index.html +++ /dev/null @@ -1,3383 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Tracing - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Tracing

    -

    Limitador offers distributed tracing enablement using the .spec.tracing CR configuration:

    -
    ---
    -apiVersion: limitador.kuadrant.io/v1alpha1
    -kind: Limitador
    -metadata:
    -  name: limitador-sample
    -spec:
    -  listener:
    -    http:
    -      port: 8080
    -    grpc:
    -      port: 8081
    -  limits:
    -
    -    - conditions: ["get_toy == 'yes'"]
    -      max_value: 2
    -      namespace: toystore-app
    -      seconds: 30
    -      variables: []
    -  verbosity: 3
    -  tracing:
    -    endpoint: rpc://my-otlp-collector:4317
    -
    -

    Currently limitador only supports collectors using the OpenTelemetry Protocol with TLS disabled. The endpoint configuration option should contain the scheme, host and port of the service. The quantity and level of the information provided by the spans is configured via the verbosity argument.

    -

    Limitador tracing example

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/limitador-operator/index.html b/0.10.0/limitador-operator/index.html deleted file mode 100644 index b9b0e2ad7..000000000 --- a/0.10.0/limitador-operator/index.html +++ /dev/null @@ -1,3583 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Overview - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Limitador Operator

    -

    License -FOSSA Status -codecov

    -

    Overview

    -

    The Operator to manage Limitador deployments.

    -

    CustomResourceDefinitions

    -
      -
    • Limitador, which defines a desired Limitador deployment.
    • -
    -

    Limitador CRD

    -

    Limitador v1alpha1 API reference

    -

    Example:

    -
    ---
    -apiVersion: limitador.kuadrant.io/v1alpha1
    -kind: Limitador
    -metadata:
    -  name: limitador-sample
    -spec:
    -  listener:
    -    http:
    -      port: 8080
    -    grpc:
    -      port: 8081
    -  limits:
    -
    -    - conditions: ["get_toy == 'yes'"]
    -      max_value: 2
    -      namespace: toystore-app
    -      seconds: 30
    -      variables: []
    -
    -

    Features

    - -

    Contributing

    -

    The Development guide describes how to build the operator and -how to test your changes before submitting a patch or opening a PR.

    -

    Join us on the #kuadrant channel in the Kubernetes Slack workspace, -for live discussions about the roadmap and more.

    -

    Licensing

    -

    This software is licensed under the Apache 2.0 license.

    -

    See the LICENSE and NOTICE files that should have been provided along with this software for details.

    -

    FOSSA Status

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/limitador/LICENSE b/0.10.0/limitador/LICENSE deleted file mode 100644 index 261eeb9e9..000000000 --- a/0.10.0/limitador/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/0.10.0/limitador/doc/how-it-works/index.html b/0.10.0/limitador/doc/how-it-works/index.html deleted file mode 100644 index b34fbb026..000000000 --- a/0.10.0/limitador/doc/how-it-works/index.html +++ /dev/null @@ -1,3502 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - How it works - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    How it works

    - -

    How it works

    -

    Limitador ensures that the most restrictive limit configuration will apply.

    -

    Limitador will try to match each incoming descriptor with the same namespaced -counter's conditions and variables. -The namespace for the descriptors is defined by the domain field -whereas for the rate limit configuration the namespace field is being used. -For each matching counter, the counter is increased and the limits checked.

    -

    One example to illustrate:

    -

    Let's say we have 1 rate limit configuration (one counter per config):

    -
    conditions: ["KEY_A == 'VALUE_A'"]
    -max_value: 1
    -seconds: 60
    -variables: []
    -namespace: example.org
    -
    -

    Limitador receives one descriptor with two entries:

    -
    domain: example.org
    -descriptors:
    -
    -  - entries:
    -    - KEY_A: VALUE_A
    -    - OTHER_KEY: OTHER_VALUE
    -
    -

    The counter's condition will match. Then, the counter will be increased and the limit checked. -If the limit is exceeded, the request will be rejected with 429 Too Many Requests, -otherwise accepted.

    -

    Note that the counter is being activated even though it does not match all the entries of the -descriptor. The same rule applies for the variables field.

    -

    Currently, the implementation of condition only allow for equal (==) and not equal (!=) operators. -More operators will be implemented based off the use cases for them.

    -

    The variables field is a list of keys. -The matching rule is defined just as the existence of the list of descriptor entries with the -same key values. If variables is variables: [A, B, C], -one descriptor matches if it has at least three entries with the same A, B, C keys.

    -

    Few examples to illustrate.

    -

    Having the following descriptors:

    -
    domain: example.org
    -descriptors:
    -
    -  - entries:
    -    - KEY_A: VALUE_A
    -    - OTHER_KEY: OTHER_VALUE
    -
    -

    the following counters would not be activated.

    -

    conditions: ["KEY_B == 'VALUE_B'"]
    -max_value: 1
    -seconds: 60
    -variables: []
    -namespace: example.org
    -
    -Reason: conditions key does not exist

    -

    conditions:
    -
    -  - "KEY_A == 'VALUE_A'"
    -  - "OTHER_KEY == 'WRONG_VALUE'"
    -max_value: 1
    -seconds: 60
    -variables: []
    -namespace: example.org
    -
    -Reason: not all the conditions match

    -

    conditions: []
    -max_value: 1
    -seconds: 60
    -variables: ["MY_VAR"]
    -namespace: example.org
    -
    -Reason: the variable name does not exist

    -

    conditions: ["KEY_B == 'VALUE_B'"]
    -max_value: 1
    -seconds: 60
    -variables: ["MY_VAR"]
    -namespace: example.org
    -
    -Reason: Both variables and conditions must match. In this particular case, only conditions match

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/limitador/doc/migrations/conditions/index.html b/0.10.0/limitador/doc/migrations/conditions/index.html deleted file mode 100644 index 91187982f..000000000 --- a/0.10.0/limitador/doc/migrations/conditions/index.html +++ /dev/null @@ -1,3447 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - New condition syntax - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    New condition syntax

    -

    With limitador-server version 1.0.0 (and the limitador crate version 0.3.0), the syntax for conditions within -limit definitions has changed.

    -

    Changes

    -

    The new syntax

    -

    The new syntax formalizes what part of an expression is the identifier and which is the value to test against. -Identifiers are simple string value, while string literals are to be demarcated by single quotes (') or double quotes -(") so that foo == " bar" now makes it explicit that the value is to be prefixed with a space character.

    -

    A few remarks:

    -
      -
    • Only string values are supported, as that's what they really are
    • -
    • There is no escape character sequence supported in string literals
    • -
    • A new operator has been added, !=
    • -
    -

    The issue with the deprecated syntax

    -

    The previous syntax wouldn't differentiate between values and the identifier, so that foo == bar was valid. In this -case foo was the identifier of the variable, while bar was the value to evaluate it against. Whitespaces before and -after the operator == would be equally important. SO that foo == bar would test for a foo variable being equal -to bar where the trailing whitespace after the identifier, and the one prefixing the value, would have been -evaluated.

    -

    Server binary users

    -

    The server still allows for the deprecated syntax, but warns about its usage. You can easily migrate your limits file, -using the following command:

    -
    limitador-server --validate old_limits.yaml > updated_limits.yaml
    -
    -

    Which should output Deprecated syntax for conditions corrected! to stderr while stdout would be the limits using -the new syntax. It is recommended you manually verify the resulting LIMITS_FILE.

    -

    Crate users

    -

    A feature lenient_conditions has been added, which lets you use the syntax used in previous version of the crate. -The function limitador::limit::check_deprecated_syntax_usages_and_reset() lets you verify if the deprecated syntax -has been used as limit::Limits are created with their condition strings using the deprecated syntax.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/limitador/doc/server/configuration/index.html b/0.10.0/limitador/doc/server/configuration/index.html deleted file mode 100644 index 6fa92c6e0..000000000 --- a/0.10.0/limitador/doc/server/configuration/index.html +++ /dev/null @@ -1,3916 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Limitador configuration - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Limitador configuration

    -

    Command line configuration

    -

    The preferred way of starting and configuring the Limitador server is using the command line:

    -
    Rate Limiting Server
    -
    -Usage: limitador-server [OPTIONS] <LIMITS_FILE> [STORAGE]
    -
    -STORAGES:
    -  memory        Counters are held in Limitador (ephemeral)
    -  disk          Counters are held on disk (persistent)
    -  redis         Uses Redis to store counters
    -  redis_cached  Uses Redis to store counters, with an in-memory cache
    -
    -Arguments:
    -  <LIMITS_FILE>  The limit file to use
    -
    -Options:
    -  -b, --rls-ip <ip>
    -          The IP to listen on for RLS [default: 0.0.0.0]
    -  -p, --rls-port <port>
    -          The port to listen on for RLS [default: 8081]
    -  -B, --http-ip <http_ip>
    -          The IP to listen on for HTTP [default: 0.0.0.0]
    -  -P, --http-port <http_port>
    -          The port to listen on for HTTP [default: 8080]
    -  -l, --limit-name-in-labels
    -          Include the Limit Name in prometheus label
    -  -v...
    -          Sets the level of verbosity
    -      --tracing-endpoint <tracing_endpoint>
    -          The endpoint for the tracing service
    -      --validate
    -          Validates the LIMITS_FILE and exits
    -  -H, --rate-limit-headers <rate_limit_headers>
    -          Enables rate limit response headers [default: NONE] [possible values: NONE, DRAFT_VERSION_03]
    -      --grpc-reflection-service
    -          Enables gRPC server reflection service
    -  -h, --help
    -          Print help
    -  -V, --version
    -          Print version
    -
    -

    The values used are authoritative over any environment variables independently set.

    -

    Limit definitions

    -

    The LIMITS_FILE provided is the source of truth for all the limits that will be enforced. The file location will be -monitored by the server for any changes and be hot reloaded. If the changes are invalid, they will be ignored on hot -reload, or the server will fail to start.

    -

    The LIMITS_FILE's format

    -

    When starting the server, you point it to a LIMITS_FILE, which is expected to be a yaml file with an array of -limit definitions, with the following format:

    -
    ---
    -"$schema": http://json-schema.org/draft-04/schema#
    -type: object
    -properties:
    -  name:
    -    type: string
    -  namespace:
    -    type: string
    -  seconds:
    -    type: integer
    -  max_value:
    -    type: integer
    -  conditions:
    -    type: array
    -    items:
    -
    -      - type: string
    -  variables:
    -    type: array
    -    items:
    -      - type: string
    -required:
    -  - namespace
    -  - seconds
    -  - max_value
    -  - conditions
    -  - variables
    -
    -

    Here is an example of such a limit definition:

    -
    namespace: example.org
    -max_value: 10
    -seconds: 60
    -conditions:
    -
    -  - "req.method == 'GET'"
    -variables:
    -  - user_id
    -
    -
      -
    • namespace namespaces the limit, will generally be the domain, see here
    • -
    • seconds is the duration for which the limit applies, in seconds: e.g. 60 is a span of time of one minute
    • -
    • max_value is the actual limit, e.g. 100 would limit to 100 requests
    • -
    • name lets the user optionally name the limit
    • -
    • variables is an array of variables, which once resolved, will be used to qualify counters for the limit, - e.g. api_key to limit per api keys
    • -
    • conditions is an array of conditions, which once evaluated will decide whether to apply the limit or not
    • -
    -

    condition syntax

    -

    Each condition is an expression producing a boolean value (true or false). All conditions must evaluate to -true for the limit to be applied on a request.

    -

    Expressions follow the following syntax: $IDENTIFIER $OP $STRING_LITERAL, where:

    -
      -
    • $IDENTIFIER will be used to resolve the value at evaluation time, e.g. role
    • -
    • $OP is an operator, either == or !=
    • -
    • $STRING_LITERAL is a literal string value, " or ' demarcated, e.g. "admin"
    • -
    -

    So that role != "admin" would apply the limit on request from all users, but admin's.

    -

    Counter storages

    -

    Limitador will load all the limit definitions from the LIMITS_FILE and keep these in memory. To enforce these -limits, Limitador needs to track requests in the form of counters. There would be at least one counter per limit, but -that number grows when variables are used to qualify counters per some arbitrary values.

    -

    memory

    -

    As the name implies, Limitador will keep all counters in memory. This yields the best results in terms of latency as -well as accuracy. By default, only up to 1000 "concurrent" counters will be kept around, evicting the oldest entries. -"Concurrent" in this context means counters that need to exist at the "same time", based of the period of the limit, -as "expired" counters are discarded.

    -

    This storage is ephemeral, as if the process is restarted, all the counters are lost and effectively "reset" all the -limits as if no traffic had been rate limited, which can be fine for short-lived limits, less for longer-lived ones.

    -

    redis

    -

    When you want persistence of your counters, such as for disaster recovery or across restarts, using redis will store -the counters in a redis instance using the provided URL. Increments to individual counters is made within redis -itself, providing accuracy over these, races tho can occur when multiple Limitador servers are used against a single -redis and using "stacked" limits (i.e. over different periods). Latency is also impacted, as it results in one -additional hop to talk to redis and maintain the counters.

    -

    TLS Support

    -

    Connect to a redis instance using the rediss:// URL scheme.

    -

    To enable insecure mode, append #insecure at the end of the URL. For example:

    -
    limitador-server <LIMITS_FILE> redis rediss://127.0.0.1/#insecure"
    -
    -

    Authentication

    -

    To enable authentication, use the username and password properties of the URL scheme. For example:

    -
    limitador-server <LIMITS_FILE> redis redis://my-username:my-password@127.0.0.1"
    -
    -

    when the username is omitted, redis assumes default user. For example:

    -
    limitador-server <LIMITS_FILE> redis redis://:my-password@127.0.0.1"
    -
    -

    Usage

    -
    Uses Redis to store counters
    -
    -Usage: limitador-server <LIMITS_FILE> redis <URL>
    -
    -Arguments:
    -  <URL>  Redis URL to use
    -
    -Options:
    -  -h, --help  Print help
    -
    -

    redis_cached

    -

    In order to avoid some communication overhead to redis, redis_cached adds an in memory caching layer within the -Limitador servers. This lowers the latency, but sacrifices some accuracy as it will not only cache counters, but also -coalesce counters updates to redis over time. See this configuration option for more -information.

    -

    TLS Support

    -

    Connect to a redis instance using the rediss:// URL scheme.

    -

    To enable insecure mode, append #insecure at the end of the URL. For example:

    -
    limitador-server <LIMITS_FILE> redis rediss://127.0.0.1/#insecure"
    -
    -

    Authentication

    -

    To enable authentication, use the username and password properties of the URL scheme. For example:

    -
    limitador-server <LIMITS_FILE> redis redis://my-username:my-password@127.0.0.1"
    -
    -

    when the username is omitted, redis assumes default user. For example:

    -
    limitador-server <LIMITS_FILE> redis redis://:my-password@127.0.0.1"
    -
    -

    Usage

    -
    Uses Redis to store counters, with an in-memory cache
    -
    -Usage: limitador-server <LIMITS_FILE> redis_cached [OPTIONS] <URL>
    -
    -Arguments:
    -  <URL>  Redis URL to use
    -
    -Options:
    -      --batch-size <batch>          Size of entries to flush in as single flush [default: 100]
    -      --flush-period <flush>        Flushing period for counters in milliseconds [default: 1000]
    -      --max-cached <max>            Maximum amount of counters cached [default: 10000]
    -      --response-timeout <timeout>  Timeout for Redis commands in milliseconds [default: 350]
    -  -h, --help                        Print help
    -
    -

    disk

    -

    Disk storage using RocksDB. Counters are held on disk (persistent).

    -
    Counters are held on disk (persistent)
    -
    -Usage: limitador-server <LIMITS_FILE> disk [OPTIONS] <PATH>
    -
    -Arguments:
    -  <PATH>  Path to counter DB
    -
    -Options:
    -      --optimize <OPTIMIZE>  Optimizes either to save disk space or higher throughput [default: throughput] [possible values: throughput, disk]
    -  -h, --help                 Print help
    -
    -

    For an in-depth coverage of the different topologies supported and how they affect the behavior, see the -topologies' document.

    -

    Configuration using environment variables

    -

    The Limitador server has some options that can be configured with environment variables. These will override the -default values the server uses. Any argument used when starting the server will prevail over the -environment variables.

    -

    ENVOY_RLS_HOST

    -
      -
    • Host where the Envoy RLS server listens.
    • -
    • Optional. Defaults to "0.0.0.0".
    • -
    • Format: string.
    • -
    -

    ENVOY_RLS_PORT

    -
      -
    • Port where the Envoy RLS server listens.
    • -
    • Optional. Defaults to 8081.
    • -
    • Format: integer.
    • -
    -

    HTTP_API_HOST

    -
      -
    • Host where the HTTP server listens.
    • -
    • Optional. Defaults to "0.0.0.0".
    • -
    • Format: string.
    • -
    -

    HTTP_API_PORT

    -
      -
    • Port where the HTTP API listens.
    • -
    • Optional. Defaults to 8080.
    • -
    • Format: integer.
    • -
    -

    LIMITS_FILE

    -
      -
    • YAML file that contains the limits to create when Limitador boots. If the -limits specified already have counters associated, Limitador will not delete them. -Changes to the file will be picked up by the running server.
    • -
    • Required. No default
    • -
    • Format: string, file path.
    • -
    -

    LIMIT_NAME_IN_PROMETHEUS_LABELS

    -
      -
    • Enables using limit names as labels in Prometheus metrics. This is disabled by -default because for a few limits it should be fine, but it could become a -problem when defining lots of limits. See the caution note in the Prometheus -docs
    • -
    • Optional. Disabled by default.
    • -
    • Format: bool, set to "1" to enable.
    • -
    -

    TRACING_ENDPOINT

    -
      -
    • The endpoint of the OTLP tracing collector (scheme://host:port).
    • -
    • Optional. Default to "" (tracing disabled)
    • -
    • Format: string
    • -
    -

    REDIS_LOCAL_CACHE_ENABLED

    -
      -
    • Enables a storage implementation that uses Redis, but also caches some data in -memory. The idea is to improve throughput and latencies by caching the counters -in memory to reduce the number of accesses to Redis. To achieve that, this mode -sacrifices some rate-limit accuracy. This mode does two things:
        -
      • Batches counter updates. Instead of updating the counters on every -request, it updates them in memory and commits them to Redis in batches. The -flushing interval can be configured with the -REDIS_LOCAL_CACHE_FLUSHING_PERIOD_MS -env. The trade-off is that when running several instances of Limitador, -other instances will not become aware of the counter updates until they're -committed to Redis.
      • -
      • Caches counters. Instead of fetching the value of a counter every time -it's needed, the value is cached for a configurable period. The trade-off is -that when running several instances of Limitador, an instance will not -become aware of the counter updates other instances do while the value is -cached. When a counter is already at 0 (limit exceeded), it's cached until -it expires in Redis. In this case, no matter what other instances do, we -know that the quota will not be reestablished until the key expires in -Redis, so in this case, rate-limit accuracy is not affected. When a counter -has still some quota remaining the situation is different, that's why we can -tune for how long it will be cached. The formula is as follows: -MIN(ttl_in_redis/REDIS_LOCAL_CACHE_TTL_RATIO_CACHED_COUNTERS, -REDIS_LOCAL_CACHE_MAX_TTL_CACHED_COUNTERS_MS). -For example, let's image that the current TTL (time remaining until the -limit resets) in Redis for a counter is 10 seconds, and we set the ratio to -2, and the max time for 30s. In this case, the counter will be cached for 5s -(min(10/2, 30)). During those 5s, Limitador will not fetch the value of that -counter from Redis, so it will answer faster, but it will also miss the -updates done by other instances, so it can go over the limits in that 5s -interval.
      • -
      -
    • -
    • Optional. Disabled by default.
    • -
    • Format: set to "1" to enable.
    • -
    • Note: "REDIS_URL" needs to be set.
    • -
    -

    REDIS_LOCAL_CACHE_FLUSHING_PERIOD_MS

    -
      -
    • Used to configure the maximum flushing period. See -REDIS_LOCAL_CACHE_ENABLED. This env only applies -when "REDIS_LOCAL_CACHE_ENABLED" == 1.
    • -
    • Optional. Defaults to 1000.
    • -
    • Format: integer. Duration in milliseconds.
    • -
    -

    REDIS_LOCAL_CACHE_BATCH_SIZE

    -
      -
    • Used to configure the maximum number of counters to update in a flush. See -REDIS_LOCAL_CACHE_ENABLED. This env only applies -when "REDIS_LOCAL_CACHE_ENABLED" == 1.
    • -
    • Optional. Defaults to 100.
    • -
    • Format: integer.
    • -
    -

    REDIS_URL

    -
      -
    • Redis URL. Required only when you want to use Redis to store the limits.
    • -
    • Optional. By default, Limitador stores the limits in memory and does not -require Redis.
    • -
    • Format: string, URL in the format of "redis://127.0.0.1:6379".
    • -
    -

    RUST_LOG

    -
      -
    • Defines the log level.
    • -
    • Optional. Defaults to "error".
    • -
    • Format: enum: "debug", "error", "info", "warn", or "trace".
    • -
    -

    RATE_LIMIT_HEADERS

    -
      -
    • Enables rate limit response headers. Only supported by the RLS server.
    • -
    • Optional. Defaults to "NONE".
    • -
    • Must be one of:
    • -
    • "NONE" - Does not add any additional headers to the http response.
    • -
    • "DRAFT_VERSION_03". Adds response headers per https://datatracker.ietf.org/doc/id/draft-polli-ratelimit-headers-03.html
    • -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/limitador/doc/topologies/index.html b/0.10.0/limitador/doc/topologies/index.html deleted file mode 100644 index 985efae9e..000000000 --- a/0.10.0/limitador/doc/topologies/index.html +++ /dev/null @@ -1,3571 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Topologies - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Deployment topologies

    -

    In-memory

    -

    Redis

    -

    Redis active-active storage

    -

    The RedisLabs version of Redis supports active-active -replication. -Limitador is compatible with that deployment mode, but there are a few things to -take into account regarding limit accuracy.

    -

    Considerations

    -

    With an active-active deployment, the data needs to be replicated between -instances. An update in an instance takes a short time to be reflected in the -other. That time lag depends mainly on the network speed between the Redis -instances, and it affects the accuracy of the rate-limiting performed by -Limitador because it can go over limits while the updates of the counters are -being replicated.

    -

    The impact of that greatly depends on the use case. With limits of a few -seconds, and a low number of hits, we could easily go over limits. On the other -hand, if we have defined limits with a high number of hits and a long period, -the effect will be basically negligible. For example, if we define a limit of -one hour, and we know that the data takes around one second to be replicated, -the accuracy loss is going to be negligible.

    -

    Set up

    -

    In order to try active-active replication, you can follow this tutorial from -RedisLabs.

    -

    Disk

    -

    Disk storage using RocksDB. Counters are held on disk (persistent).

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/limitador/index.html b/0.10.0/limitador/index.html deleted file mode 100644 index b6f65075d..000000000 --- a/0.10.0/limitador/index.html +++ /dev/null @@ -1,3643 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Overview - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Limitador

    -

    Limitador GH Workflow -docs.rs -Crates.io -Docker Repository on Quay -codecov -FOSSA Status

    -

    Limitador is a generic rate-limiter written in Rust. It can be used as a -library, or as a service. The service exposes HTTP endpoints to apply and observe -limits. Limitador can be used with Envoy because it also exposes a grpc service, on a different -port, that implements the Envoy Rate Limit protocol (v3).

    - -

    Limitador is under active development, and its API has not been stabilized yet.

    -

    Getting started

    - -

    Rust library

    -

    Add this to your Cargo.toml: -

    [dependencies]
    -limitador = { version = "0.3.0" }
    -

    -

    For more information, see the README of the crate

    -

    Server

    -

    Run with Docker (replace latest with the version you want): -

    docker run --rm --net=host -it quay.io/kuadrant/limitador:v1.0.0
    -

    -

    Run locally: -

    cargo run --release --bin limitador-server -- --help
    -

    -

    Refer to the help message on how to start up the server. More information are available -in the server's README.md

    -

    Development

    -

    Build

    -
    cargo build
    -
    -

    Run the tests

    -

    Some tests need a redis deployed in localhost:6379. You can run it in Docker with: -

    docker run --rm -p 6379:6379 -it redis
    -

    -

    Then, run the tests:

    -
    cargo test --all-features
    -
    -

    or you can run tests disabling the "redis storage" feature: -

    cd limitador; cargo test --no-default-features
    -

    -

    Contributing

    -

    Join us on the #kuadrant channel in the Kubernetes Slack workspace, -for live discussions about the roadmap and more.

    -

    License

    -

    Apache 2.0 License

    -

    FOSSA Status

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/limitador/limitador-server/docs/http_server_spec.json b/0.10.0/limitador/limitador-server/docs/http_server_spec.json deleted file mode 100644 index 4a17d7ac0..000000000 --- a/0.10.0/limitador/limitador-server/docs/http_server_spec.json +++ /dev/null @@ -1,305 +0,0 @@ -{ - "swagger": "2.0", - "definitions": { - "CheckAndReportInfo": { - "type": "object", - "properties": { - "delta": { - "type": "integer", - "format": "int64" - }, - "namespace": { - "type": "string" - }, - "values": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "response_headers": { - "type": "string", - "enum": ["none", "DraftVersion03"] - } - }, - "required": [ - "delta", - "namespace", - "values" - ] - }, - "Counter": { - "type": "object", - "properties": { - "expires_in_seconds": { - "type": "integer", - "format": "int64" - }, - "limit": { - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "type": "string" - } - }, - "max_value": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "seconds": { - "type": "integer", - "format": "int64" - }, - "variables": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "conditions", - "max_value", - "namespace", - "seconds", - "variables" - ] - }, - "remaining": { - "type": "integer", - "format": "int64" - }, - "set_variables": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "required": [ - "limit", - "set_variables" - ] - }, - "Limit": { - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "type": "string" - } - }, - "max_value": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "seconds": { - "type": "integer", - "format": "int64" - }, - "variables": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "conditions", - "max_value", - "namespace", - "seconds", - "variables" - ] - } - }, - "paths": { - "/check": { - "post": { - "responses": { - "200": { - "description": "OK", - "schema": {} - }, - "429": { - "description": "Too Many Requests" - }, - "500": { - "description": "Internal Server Error" - } - }, - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/CheckAndReportInfo" - } - } - ] - } - }, - "/check_and_report": { - "post": { - "responses": { - "200": { - "description": "OK", - "schema": {} - }, - "429": { - "description": "Too Many Requests" - }, - "500": { - "description": "Internal Server Error" - } - }, - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/CheckAndReportInfo" - } - } - ] - } - }, - "/counters/{namespace}": { - "get": { - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/Counter" - } - } - }, - "429": { - "description": "Too Many Requests" - }, - "500": { - "description": "Internal Server Error" - } - }, - "parameters": [ - { - "in": "path", - "name": "namespace", - "required": true, - "type": "string" - } - ] - } - }, - "/limits/{namespace}": { - "get": { - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/Limit" - } - } - }, - "429": { - "description": "Too Many Requests" - }, - "500": { - "description": "Internal Server Error" - } - }, - "parameters": [ - { - "in": "path", - "name": "namespace", - "required": true, - "type": "string" - } - ] - }, - "delete": { - "responses": { - "200": { - "description": "OK", - "schema": {} - }, - "429": { - "description": "Too Many Requests" - }, - "500": { - "description": "Internal Server Error" - } - }, - "parameters": [ - { - "in": "path", - "name": "namespace", - "required": true, - "type": "string" - } - ] - } - }, - "/report": { - "post": { - "responses": { - "200": { - "description": "OK", - "schema": {} - }, - "429": { - "description": "Too Many Requests" - }, - "500": { - "description": "Internal Server Error" - } - }, - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/CheckAndReportInfo" - } - } - ] - } - }, - "/status": { - "get": { - "responses": { - "200": { - "description": "OK", - "schema": {} - } - } - } - } - }, - "info": { - "version": "1.0.0", - "title": "Limitador server endpoints" - } -} diff --git a/0.10.0/limitador/limitador-server/index.html b/0.10.0/limitador/limitador-server/index.html deleted file mode 100644 index 805393e3c..000000000 --- a/0.10.0/limitador/limitador-server/index.html +++ /dev/null @@ -1,3501 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Overview - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Limitador (server)

    -

    Docker Repository on Quay

    -

    By default, Limitador starts the HTTP server in localhost:8080, and the grpc -service that implements the Envoy Rate Limit protocol in localhost:8081. That -can be configured with these ENVs: ENVOY_RLS_HOST, ENVOY_RLS_PORT, -HTTP_API_HOST, and HTTP_API_PORT.

    -

    Or using the command line arguments:

    -
    Rate Limiting Server
    -
    -Usage: limitador-server [OPTIONS] <LIMITS_FILE> [STORAGE]
    -
    -STORAGES:
    -  memory        Counters are held in Limitador (ephemeral)
    -  disk          Counters are held on disk (persistent)
    -  redis         Uses Redis to store counters
    -  redis_cached  Uses Redis to store counters, with an in-memory cache
    -
    -Arguments:
    -  <LIMITS_FILE>  The limit file to use
    -
    -Options:
    -  -b, --rls-ip <ip>
    -          The IP to listen on for RLS [default: 0.0.0.0]
    -  -p, --rls-port <port>
    -          The port to listen on for RLS [default: 8081]
    -  -B, --http-ip <http_ip>
    -          The IP to listen on for HTTP [default: 0.0.0.0]
    -  -P, --http-port <http_port>
    -          The port to listen on for HTTP [default: 8080]
    -  -l, --limit-name-in-labels
    -          Include the Limit Name in prometheus label
    -  -v...
    -          Sets the level of verbosity
    -      --tracing-endpoint <tracing_endpoint>
    -          The endpoint for the tracing service
    -      --validate
    -          Validates the LIMITS_FILE and exits
    -  -H, --rate-limit-headers <rate_limit_headers>
    -          Enables rate limit response headers [default: NONE] [possible values: NONE, DRAFT_VERSION_03]
    -  -h, --help
    -          Print help
    -  -V, --version
    -          Print version
    -
    -

    When using environment variables, these will override the defaults. While environment variable are themselves -overridden by the command line arguments provided. See the individual STORAGES help for more options relative to -each of the storages.

    -

    The OpenAPI spec of the HTTP service is -here.

    -

    Limitador has to be started with a YAML file that has some limits defined. -There's an example file that allows 10 requests per minute and per user_id when the HTTP method is "GET" and 5 when it is a "POST". -You can run it with Docker (replace latest with the version you want): -

    docker run --rm --net=host -it -v $(pwd)/examples/limits.yaml:/home/limitador/my_limits.yaml:ro quay.io/kuadrant/limitador:latest limitador-server /home/limitador/my_limits.yaml
    -

    -

    You can also use the YAML file when running locally: -

    cargo run --release --bin limitador-server ./examples/limits.yaml
    -

    -

    If you want to use Limitador with Envoy, there's a minimal Envoy config for -testing purposes here. The config -forwards the "userid" header and the request method to Limitador. It assumes -that there's an upstream API deployed on port 1323. You can use -echo, for example.

    -

    Limitador has several options that can be configured via ENV. This -doc specifies them.

    -

    Limits storage

    -

    Limitador can store its limits and counters in-memory, disk or in Redis. In-memory is -faster, but the limits are applied per instance. When using Redis, multiple -instances of Limitador can share the same limits, but it's slower.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/limitador/limitador-server/kubernetes/centos-pod.yaml b/0.10.0/limitador/limitador-server/kubernetes/centos-pod.yaml deleted file mode 100644 index 520c91f9b..000000000 --- a/0.10.0/limitador/limitador-server/kubernetes/centos-pod.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: centos - labels: - app: centos -spec: - containers: - - image: centos - command: - - "sleep" - - "604800" - imagePullPolicy: IfNotPresent - name: centos - restartPolicy: Always diff --git a/0.10.0/limitador/limitador-server/kubernetes/index.html b/0.10.0/limitador/limitador-server/kubernetes/index.html deleted file mode 100644 index 16a0bbf66..000000000 --- a/0.10.0/limitador/limitador-server/kubernetes/index.html +++ /dev/null @@ -1,3830 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Kubernetes - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Kubernetes

    -

    The purpose of this documentation is to deploy a sample application published via AWS ELB, that will be ratelimited at infrastructure level, thanks to the use the envoyproxy sidecar container, that will be in charge of contacting to a ratelimit service (limitador), that will allow the request (or not) if it is within the permitted limits.

    -

    There are mainly two recommended way of using limitador in kubernetes:

    -
      -
    1. There is an ingress based on envoyproxy that contacts with limitador ratelimit service before forwarding (or not) the request to the application
    2. -
    3. There is an envoyproxy sidecar container living in the application pod that contacts with limitador ratelimit service before forwarding (or not) the request to the main application container in the same pod
    4. -
    -

    In this example it will be described the second scenario (where there is an application with an envoyproxy sidecar container contacting to limitador service).

    -
    -

    NOTE -
    If you don't want to manually manage the sidecar container definitions on your deployments (harcoding the container spec, loading the envoy configuration from a configmap that requires a pod restart to reload possibles configuration changes...), you can use marin3r, a light weight envoy control plane that allows you to inject envoyproxy sidecar containers and dynamically consume configs from Kubernetes custom resources.

    -
    -

    This is the network diagram of the deployed example:

    -

    Ratelimit

    -

    Components

    -

    In order to that that ratelimit test, you need to deploy a few components. Some of them are mandatory, and a few are optional:

    -

    Mandatory

    -
      -
    • Application (a sample application deployment called kuard):
    • -
    • App has an envoyproxy sidecar container with its configuration file in a configmap, composed by:
        -
      • Cluster kuard points to main application container (127.0.0.1:8080)
      • -
      • Cluster kuard_ratelimit points to limitador headless service (limitador:8081)
      • -
      • Listener HTTP points to envoyproxy sidecar (0.0.0.0:38080)
      • -
      • When envoy contacts with the ratelimit service, you can define a timeout, and if there is no response within that timeout (because ratelimit is overloaded taking more time to process the request, or because rateliit service is down), you can choose from envoy to deny the request or pass it to the application. In this case, there is set a 1s timeout, and if there is no answer in this 1 second, request is passed to the application (failure_mode_deny: false), so we guarantee that the maximum overhead added by a non working ratelimit service is 1 extra second to the final response time.
      • -
      -
    • -
    • -

      App service published with type: LoadBalancer, which creates a AWS ELB. This service has an annotation to enable proxy protocol on the AWS Load balancer in order to be able to keep the real client IP at envoy level (instead of the k8s node private IP), so it can be used to ratelimit per each real client IP if desired.

      -
    • -
    • -

      Ratelimit application (a deployment called limitador):

      -
    • -
    • Limitador Configmap with limits definition (1000 rps per hostname).
    • -
    • -

      Limitador headless service published on limitador:8081. It is important to use a headless service in order to balance correctly the traffic between limitador pods, otherwise GRPC connections are not well balanced.

      -
    • -
    • -

      Redis database to persist ratelimit configuration:

      -
    • -
    • Redis service
    • -
    • Redis statefulset with a persistent volume
    • -
    -

    Optional

    -
      -
    • Centos pod:
    • -
    • Used to executed hey tool benchmarks from the cluster, so we ensure network latency does not affect the results. Actually, to achieve better results, this pod should be on another cluster (to not share the network between client and network) and be placed on the same Region (to reduce latency). The client could be a bottle neck for the performance test.
    • -
    • This centos is going to public AWS ELB to access the app, so simulating it is a normal client from the same Region
    • -
    • Prometheus monitoring and grafana dashboard resources
    • -
    -

    K8s deployment

    -
      -
    • -

      Deploy the redis instance that will keep the limits for different limitador pods: -

      kubectl apply -f redis-service.yaml
      -kubectl apply -f redis-statefulset.yaml
      -

      -
    • -
    • -

      Deploy limitador application. It is important to create the configmap with limitador limits before the deployment, in order to load it from limitador pods. At the moment, if you update the limits configmap you need to restart the pods. Additionally, limitador has an API in order to load limits dynamically, but for simplicity for this test a configmap has been used: -

      kubectl apply -f limitador-config-configmap.yaml
      -kubectl apply -f limitador-service.yaml
      -kubectl apply -f limitador-deployment.yaml
      -

      -
    • -
    • -

      Deploy sample kuard application with the envoyproxy sidecar container (if you do any change on the envoy configmap, remember you need to restart app pods in order to reload the config): -

      kubectl apply -f kuard-envoy-config-configmap.yaml
      -kubectl apply -f kuard-service.yaml
      -kubectl apply -f kuard-deployment.yaml
      -

      -
    • -
    • -

      At this point you shoud see all pods running, and kuard pods should have 2 containers (the main kuard container, and the envoyproxy sidecar container): -

       kubectl get pods
      -NAME                         READY   STATUS    RESTARTS   AGE
      -kuard-f859bb896-gmzxn        2/2     Running   0          7m
      -kuard-f859bb896-z95w8        2/2     Running   0          7m
      -limitador-68d494f54c-qv996   1/1     Running   0          8m
      -limitador-68d494f54c-zzmhn   1/1     Running   0          8m
      -redis-0                      1/1     Running   0          9m
      -

      -
    • -
    • -

      Now you should be able to access to kuard application using the load balancer DNS name: -

      ▶ kubectl get service kuard
      -NAME    TYPE           CLUSTER-IP       EXTERNAL-IP                                                              PORT(S)        AGE
      -kuard   LoadBalancer   172.30.117.198   a96d5449fbc3f4cd892e15e5b36cde48-457963259.us-east-1.elb.amazonaws.com   80:31450/TCP   4m
      -

      -
    • -
    • -

      If you go to the browser and paste the EXTERNAL-IP, your request will follow the next workflow:

      -
    • -
    • The requests will go from your local machine through internet to the public AWS ELB where the app is published
    • -
    • Then it will go to the NodePort of your k8s cluster nodes
    • -
    • Once on a k8s node, it will go to kuard Service Virtual IP, and will arrive to an envoyproxy sidecar container inside kuard pod
    • -
    • Envoyproxy sidecar container will contact with limitador headless Service, to authorize the requests or not:
        -
      • If the request is authorized (within the configured limits), it will send the request to the app container (0.0.0.0:8080) in the same pod, and request will end up with a HTTP 200 response
      • -
      • If the request is limited (beyond the limits), request will end up with HTTP 429 response
      • -
      -
    • -
    -

    Monitoring

    -

    Both envoyproxy sidecar and limitador applications include built-in prometheus metrics.

    -

    Prometheus

    -

    In order to scrape that metrics within a prometheus-operator deployed in the cluster, you need to create a PodMonitor resource for every application: -

    kubectl apply -f kuard-podmonitor.yaml
    -kubectl apply -f limitador-podmonitor.yaml
    -

    -

    Grafana dashboard

    -

    Then, if you have grafana deployed in the cluster, you can import a Kuadrant Limitador grafana dashboard that we have prepared, which includes:

    -
      -
    • Kuard envoyproxy sidecar metrics (globally and per pod)
    • -
    • Limitador metrics (globally and per pod)
    • -
    • And for every deployed component (limitador, kuard, redis):
    • -
    • Number of pods (total, available, unavaible, pod restarts...)
    • -
    • CPU usage per pod
    • -
    • Memory usage per pod
    • -
    • Network usage per pod
    • -
    -

    Benchmarking

    -
      -
    • In order to check that the ratelimit is working as expected, you can use any benchmarking tool, like hey
    • -
    • You can use if you want a centos pod (better to create it on a different custer within the same Region): -
      kubectl apply -f centos-pod.yaml
      -
    • -
    • Connect to centos pod: -
      kubectl exec --stdin --tty centos -- /bin/bash
      -
    • -
    • And install hey with: -
      [root@centos /]# curl -sf https://gobinaries.com/rakyll/hey | sh
      -
    • -
    • Now you can execute the benchmark using the following escenario:
    • -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ItemValue
    TargetAWS ELB DNS Name
    App pods2
    Limitador pods2
    Limits1.000 rps per hostname
    Hey duration1 minute
    Hey Traffic-c 60 -q 20 (around 1.200 rps)
    -
      -
    • Theoretically:
    • -
    • It should let pass 1.000 requests, and limit 200 requests per second
    • -
    • It should let pass 60 * 1.000 = 60.0000 requests, and limit 60 * 200 = 12.000 requests per minute
    • -
    • Each limitador pod should handle half of the traffic (500 rps OK, and 200 rps limited)
    • -
    -
    [root@centos /]# hey -z 60s -c 60 -q 20 "http://a96d5449fbc3f4cd892e15e5b36cde48-457963259.us-east-1.elb.amazonaws.com"
    -
    -Summary:
    -  Total:    60.0131 secs
    -  Slowest:  0.1028 secs
    -  Fastest:  0.0023 secs
    -  Average:  0.0075 secs
    -  Requests/sec: 1199.3721
    -
    -  Total data:   106581650 bytes
    -  Size/request: 1480 bytes
    -
    -Response time histogram:
    -  0.002 [1] |
    -  0.012 [70626] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    -  0.022 [1291]  |■
    -  0.032 [0] |
    -  0.043 [0] |
    -  0.053 [0] |
    -  0.063 [0] |
    -  0.073 [0] |
    -  0.083 [0] |
    -  0.093 [23]    |
    -  0.103 [37]    |
    -
    -
    -Latency distribution:
    -  10% in 0.0053 secs
    -  25% in 0.0063 secs
    -  50% in 0.0073 secs
    -  75% in 0.0085 secs
    -  90% in 0.0096 secs
    -  95% in 0.0102 secs
    -  99% in 0.0139 secs
    -
    -Details (average, fastest, slowest):
    -  DNS+dialup:   0.0001 secs, 0.0023 secs, 0.1028 secs
    -  DNS-lookup:   0.0001 secs, 0.0000 secs, 0.0711 secs
    -  req write:    0.0000 secs, 0.0000 secs, 0.0014 secs
    -  resp wait:    0.0074 secs, 0.0023 secs, 0.0303 secs
    -  resp read:    0.0000 secs, 0.0000 secs, 0.0049 secs
    -
    -Status code distribution:
    -  [200] 60046 responses
    -  [429] 11932 responses
    -
    -
      -
    • -

      We can see that:

      -
        -
      • Client could send 1192.2171rps (about 1200rps)
      • -
      • 60046 requests (about 60000) were OK (HTTP 200)
      • -
      • 11932 requests (about 12000) were limited (HTTP 429)
      • -
      • Average latency (since the request goes out from the client to AWS ELB, k8s node, envoyproxy container, limitador+redis, kuar app container) is 10ms
      • -
      -
    • -
    • -

      In addition, if we do a longer test with 5 minutes traffic for example, you can check with the grafana dashboard how these requests are processed by envoyproxy sidecar container of kuard pods and limitador pods:

      -
        -
      • Kuard Envoyproxy Sidecar Metrics:
          -
        • Globally it handles around 1200rps: it permits around 1krps and limits around 200rps
        • -
        • Each envoyproxy sidecar of each kuard pod handles around half of the traffic: it permits around 500rps and limits around 100rps. The balance between pods is not 100% perfect, caused by random iptables forwarding when using a k8s service - Kuard Envoyproxy Sidecar Metrics
        • -
        -
      • -
      • Limitador Metrics:
          -
        • Globally it handles around 1200rps: it permits around 1krps and limits around 200rps
        • -
        • Each limitador pod handles around half of the traffic: it permits around 500rps and limits around 100rps. The balance between pods is perfect thanks to using a headless service with GRPC connections - Limitador Metrics
        • -
        -
      • -
      -
    • -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/limitador/limitador-server/kubernetes/kuard-deployment.yaml b/0.10.0/limitador/limitador-server/kubernetes/kuard-deployment.yaml deleted file mode 100644 index d9c152020..000000000 --- a/0.10.0/limitador/limitador-server/kubernetes/kuard-deployment.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: kuard - labels: - app: kuard -spec: - replicas: 2 - selector: - matchLabels: - app: kuard - template: - metadata: - labels: - app: kuard - spec: - containers: - - name: kuard - image: gcr.io/kuar-demo/kuard-amd64:blue - ports: - - containerPort: 8080 - name: http - protocol: TCP - - name: envoy - image: envoyproxy/envoy:v1.16.0 - command: ["envoy"] - args: ["-c", "/etc/envoy.yaml", "--service-node", "kuard", "--service-cluster", "kuard"] - ports: - - name: envoy-http - containerPort: 38080 - protocol: TCP - - name: envoy-metrics - containerPort: 9901 - protocol: TCP - volumeMounts: - - name: kuard-envoy-config - mountPath: /etc/envoy.yaml - subPath: envoy.yaml - volumes: - - name: kuard-envoy-config - configMap: - name: kuard-envoy-config \ No newline at end of file diff --git a/0.10.0/limitador/limitador-server/kubernetes/kuard-envoy-config-configmap.yaml b/0.10.0/limitador/limitador-server/kubernetes/kuard-envoy-config-configmap.yaml deleted file mode 100644 index 120574aa8..000000000 --- a/0.10.0/limitador/limitador-server/kubernetes/kuard-envoy-config-configmap.yaml +++ /dev/null @@ -1,84 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: kuard-envoy-config - labels: - app: kuard -data: - envoy.yaml: > - static_resources: - clusters: - - name: kuard - connect_timeout: 2s - type: STRICT_DNS - dns_lookup_family: V4_ONLY - lb_policy: ROUND_ROBIN - load_assignment: - cluster_name: kuard - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: { address: 127.0.0.1, port_value: 8080 } - - name: kuard_ratelimit - type: STRICT_DNS - connect_timeout: 1s - dns_lookup_family: V4_ONLY - lb_policy: ROUND_ROBIN - http2_protocol_options: {} - load_assignment: - cluster_name: kuard_ratelimit - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: { address: limitador, port_value: 8081 } - listeners: - - name: http - address: - socket_address: - address: 0.0.0.0 - port_value: 38080 - filter_chains: - - use_proxy_proto: true - filters: - - name: envoy.filters.network.http_connection_manager - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager - use_remote_address: true - access_log: - - name: envoy.access_loggers.file - typed_config: - "@type": type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog - path: "/dev/stdout" - stat_prefix: http - route_config: - name: local_route - virtual_hosts: - - name: kuard - domains: ["*"] - routes: - - { route: { cluster: kuard }, match: { prefix: "/" } } - rate_limits: - - actions: - - request_headers: - header_name: :authority - descriptor_key: per_hostname_per_second_burst - http_filters: - - name: envoy.filters.http.ratelimit - typed_config: - "@type": "type.googleapis.com/envoy.extensions.filters.http.ratelimit.v3.RateLimit" - domain: kuard - failure_mode_deny: false - timeout: 1s - rate_limit_service: - transport_api_version: V3 - grpc_service: - { envoy_grpc: { cluster_name: kuard_ratelimit } } - - name: envoy.filters.http.router - admin: - access_log_path: /dev/stdout - address: - socket_address: - address: 0.0.0.0 - port_value: 9901 diff --git a/0.10.0/limitador/limitador-server/kubernetes/kuard-envoyproxy-sidecar-metrics-dashboard-screenshot.png b/0.10.0/limitador/limitador-server/kubernetes/kuard-envoyproxy-sidecar-metrics-dashboard-screenshot.png deleted file mode 100644 index 0c85cc99a35ad456fd8fa895e94ad27491e4b161..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80203 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 MAND&`eK7R$Z-lDX?*IS* diff --git a/0.10.0/limitador/limitador-server/kubernetes/kuard-podmonitor.yaml b/0.10.0/limitador/limitador-server/kubernetes/kuard-podmonitor.yaml deleted file mode 100644 index 631edef16..000000000 --- a/0.10.0/limitador/limitador-server/kubernetes/kuard-podmonitor.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: monitoring.coreos.com/v1 -kind: PodMonitor -metadata: - name: kuard - labels: - app: kuard -spec: - podMetricsEndpoints: - - interval: 10s - path: /stats/prometheus - port: envoy-metrics - scheme: http - selector: - matchLabels: - app: kuard diff --git a/0.10.0/limitador/limitador-server/kubernetes/kuard-service.yaml b/0.10.0/limitador/limitador-server/kubernetes/kuard-service.yaml deleted file mode 100644 index c53350507..000000000 --- a/0.10.0/limitador/limitador-server/kubernetes/kuard-service.yaml +++ /dev/null @@ -1,16 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: kuard - labels: - app: kuard - annotations: - service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" -spec: - type: LoadBalancer - ports: - - name: envoy-http - port: 80 - targetPort: envoy-http - selector: - app: kuard \ No newline at end of file diff --git a/0.10.0/limitador/limitador-server/kubernetes/limitador-config-configmap.yaml b/0.10.0/limitador/limitador-server/kubernetes/limitador-config-configmap.yaml deleted file mode 100644 index a14318c29..000000000 --- a/0.10.0/limitador/limitador-server/kubernetes/limitador-config-configmap.yaml +++ /dev/null @@ -1,16 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: limitador-config - labels: - app: limitador -data: - limits.yaml: | - --- - - - namespace: kuard - max_value: 1000 - seconds: 1 - conditions: [] - variables: - - per_hostname_per_second_burst \ No newline at end of file diff --git a/0.10.0/limitador/limitador-server/kubernetes/limitador-deployment.yaml b/0.10.0/limitador/limitador-server/kubernetes/limitador-deployment.yaml deleted file mode 100644 index 0b236b665..000000000 --- a/0.10.0/limitador/limitador-server/kubernetes/limitador-deployment.yaml +++ /dev/null @@ -1,62 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: limitador - labels: - app: limitador -spec: - replicas: 2 - selector: - matchLabels: - app: limitador - template: - metadata: - labels: - app: limitador - spec: - containers: - - name: limitador - image: quay.io/kuadrant/limitador:latest - imagePullPolicy: IfNotPresent - env: - - name: RUST_LOG - value: info - - name: REDIS_URL - value: "redis://redis:6379" - - name: LIMITS_FILE - value: /home/limitador/limits.yaml - ports: - - name: http - containerPort: 8080 - protocol: TCP - - name: grpc - containerPort: 8081 - protocol: TCP - livenessProbe: - httpGet: - path: /status - port: http - scheme: HTTP - initialDelaySeconds: 5 - timeoutSeconds: 2 - periodSeconds: 10 - successThreshold: 1 - failureThreshold: 3 - readinessProbe: - httpGet: - path: /status - port: http - scheme: HTTP - initialDelaySeconds: 5 - timeoutSeconds: 5 - periodSeconds: 10 - successThreshold: 1 - failureThreshold: 3 - volumeMounts: - - mountPath: /home/limitador/limits.yaml - name: runtime-config - subPath: limits.yaml - volumes: - - name: runtime-config - configMap: - name: limitador-config diff --git a/0.10.0/limitador/limitador-server/kubernetes/limitador-grafanadashboard.json b/0.10.0/limitador/limitador-server/kubernetes/limitador-grafanadashboard.json deleted file mode 100644 index f0f3b9f12..000000000 --- a/0.10.0/limitador/limitador-server/kubernetes/limitador-grafanadashboard.json +++ /dev/null @@ -1,2154 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 28, - "iteration": 1604592740368, - "links": [], - "panels": [ - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 67, - "panels": [], - "title": "Kuard Envoyproxy Sidecar metrics", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 1 - }, - "id": 39, - "interval": "", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": {}, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(envoy_cluster_ratelimit_ok{namespace=\"$namespace\", envoy_cluster_name=\"$limitador_namespace\"}[1m]))", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "ok", - "refId": "A" - }, - { - "expr": "sum(rate(envoy_cluster_ratelimit_over_limit{namespace=\"$namespace\", envoy_cluster_name=\"$limitador_namespace\"}[1m]))", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "overlimit", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Requests per second (global)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "reqps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 10 - }, - "id": 65, - "interval": "", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": {}, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(envoy_cluster_ratelimit_ok{namespace=\"$namespace\", envoy_cluster_name=\"$limitador_namespace\"}[1m])) by (pod)", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{ pod }}-ok", - "refId": "A" - }, - { - "expr": "sum(rate(envoy_cluster_ratelimit_over_limit{namespace=\"$namespace\", envoy_cluster_name=\"$limitador_namespace\"}[1m])) by (pod)", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{ pod }}-over-limit", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Requests per second (per pod)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "reqps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 19 - }, - "id": 20, - "panels": [], - "title": "Limitador metrics", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 20 - }, - "id": 68, - "interval": "", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": {}, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(authorized_calls{namespace=\"$namespace\", limitador_namespace=\"$limitador_namespace\"}[1m]))", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "authorized", - "refId": "A" - }, - { - "expr": "sum(rate(limited_calls{namespace=\"$namespace\", limitador_namespace=\"$limitador_namespace\"}[1m]))", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "limited", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Requests per second (global)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "reqps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 29 - }, - "id": 69, - "interval": "", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": {}, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(authorized_calls{namespace=\"$namespace\", limitador_namespace=\"$limitador_namespace\"}[1m])) by (pod)", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{ pod }}-authorized", - "refId": "A" - }, - { - "expr": "sum(rate(limited_calls{namespace=\"$namespace\", limitador_namespace=\"$limitador_namespace\"}[1m])) by (pod)", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{ pod }}-limited", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Requests per second (per pod)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "reqps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 38 - }, - "id": 13, - "panels": [], - "repeat": "deployment", - "scopedVars": { - "deployment": { - "selected": true, - "text": "limitador", - "value": "limitador" - } - }, - "title": "Pods ($deployment)", - "type": "row" - }, - { - "cacheTimeout": null, - "colorBackground": true, - "colorValue": false, - "colors": [ - "#F2495C", - "rgba(237, 129, 40, 0.89)", - "#299c46" - ], - "datasource": "$datasource", - "decimals": 0, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 3, - "w": 6, - "x": 0, - "y": 39 - }, - "hideTimeOverride": true, - "id": 30, - "interval": "", - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "options": {}, - "pluginVersion": "6.2.4", - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "scopedVars": { - "deployment": { - "selected": true, - "text": "limitador", - "value": "limitador" - } - }, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(kube_deployment_status_replicas_available{namespace='$namespace',deployment='$deployment'}) or kube_statefulset_status_replicas {namespace='$namespace',statefulset='$deployment'}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "1,2", - "timeFrom": "30s", - "timeShift": "30s", - "title": "Running pods", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "avg" - }, - { - "cacheTimeout": null, - "colorBackground": true, - "colorPrefix": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#F2495C" - ], - "datasource": "$datasource", - "decimals": 0, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 3, - "w": 6, - "x": 6, - "y": 39 - }, - "hideTimeOverride": true, - "id": 32, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "options": {}, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "scopedVars": { - "deployment": { - "selected": true, - "text": "limitador", - "value": "limitador" - } - }, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(kube_deployment_status_replicas_unavailable{namespace='$namespace',deployment='$deployment'}) or (kube_statefulset_status_replicas {namespace='$namespace',statefulset='$deployment'} - kube_statefulset_status_replicas_ready {namespace='$namespace',statefulset='$deployment'} )", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "1,2", - "timeFrom": "30s", - "timeShift": "30s", - "title": "Unavailable pods", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "avg" - }, - { - "cacheTimeout": null, - "colorBackground": true, - "colorValue": false, - "colors": [ - "#F2495C", - "rgba(237, 129, 40, 0.89)", - "#299c46" - ], - "datasource": "$datasource", - "decimals": 0, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 3, - "w": 6, - "x": 12, - "y": 39 - }, - "hideTimeOverride": true, - "id": 37, - "interval": "", - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "options": {}, - "pluginVersion": "6.2.4", - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "scopedVars": { - "deployment": { - "selected": true, - "text": "limitador", - "value": "limitador" - } - }, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "count(count(container_memory_usage_bytes{namespace='$namespace',pod=~'$deployment-.*'}) by (node))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "1,2", - "timeFrom": "30s", - "timeShift": "30s", - "title": "Pods distributed on hosts", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "avg" - }, - { - "cacheTimeout": null, - "colorBackground": true, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "decimals": 0, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 3, - "w": 6, - "x": 18, - "y": 39 - }, - "hideTimeOverride": true, - "id": 36, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "options": {}, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "scopedVars": { - "deployment": { - "selected": true, - "text": "limitador", - "value": "limitador" - } - }, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "max(sum(delta(kube_pod_container_status_restarts_total{namespace='$namespace',pod=~'$deployment-.*'}[5m])) by (pod))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "1,2", - "timeFrom": "30s", - "timeShift": "30s", - "title": "Max pods restarts (last 5 minutes)", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "avg" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - "h": 7, - "w": 24, - "x": 0, - "y": 42 - }, - "id": 11, - "legend": { - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "options": {}, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "deployment": { - "selected": true, - "text": "limitador", - "value": "limitador" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "kube_deployment_status_replicas{namespace='$namespace',deployment='$deployment'} or kube_statefulset_status_replicas {namespace='$namespace',statefulset='$deployment'}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "total-pods", - "legendLink": null, - "refId": "A", - "step": 10 - }, - { - "expr": "kube_deployment_status_replicas_available{namespace='$namespace',deployment='$deployment'} or kube_statefulset_status_replicas_ready {namespace='$namespace',statefulset='$deployment'}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "-avail-pods", - "refId": "B" - }, - { - "expr": "kube_deployment_status_replicas_unavailable{namespace='$namespace',deployment='$deployment'} or (kube_statefulset_status_replicas {namespace='$namespace',statefulset='$deployment'} - kube_statefulset_status_replicas_ready {namespace='$namespace',statefulset='$deployment'} )", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "unavail-pods", - "refId": "C" - }, - { - "expr": "count(count(container_memory_usage_bytes{namespace='$namespace',pod=~'$deployment-.*'}) by (node))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "used-hosts", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Pod count (total, avail, unvail) and pods hosts distribution", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - "h": 6, - "w": 24, - "x": 0, - "y": 49 - }, - "id": 9, - "legend": { - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": {}, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatedByRow": false, - "scopedVars": { - "deployment": { - "selected": true, - "text": "limitador", - "value": "limitador" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(kube_pod_container_status_restarts_total{namespace='$namespace',pod=~'$deployment-.*'}[5m])) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{pod}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Pods restarts (last 5 minutes)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 55 - }, - "id": 4, - "panels": [], - "repeat": "deployment", - "scopedVars": { - "deployment": { - "selected": true, - "text": "limitador", - "value": "limitador" - } - }, - "title": "CPU Usage ($deployment)", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - "h": 7, - "w": 24, - "x": 0, - "y": 56 - }, - "id": 64, - "interval": "", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "options": {}, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "deployment": { - "selected": true, - "text": "limitador", - "value": "limitador" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{namespace=~'$namespace',pod=~'$deployment-.*'}) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{pod}}", - "legendLink": null, - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 63 - }, - "id": 5, - "panels": [], - "repeat": "deployment", - "scopedVars": { - "deployment": { - "selected": true, - "text": "limitador", - "value": "limitador" - } - }, - "title": "CPU Quota ($deployment)", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "columns": [], - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fontSize": "100%", - "gridPos": { - "h": 7, - "w": 24, - "x": 0, - "y": 64 - }, - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "options": {}, - "pageSize": null, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "deployment": { - "selected": true, - "text": "limitador", - "value": "limitador" - } - }, - "scroll": true, - "seriesOverrides": [], - "showHeader": true, - "sort": { - "col": 1, - "desc": false - }, - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "CPU Usage", - "colorMode": null, - "colors": [], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests", - "colorMode": null, - "colors": [], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests %", - "colorMode": null, - "colors": [], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "CPU Limits", - "colorMode": null, - "colors": [], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Limits %", - "colorMode": null, - "colors": [], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Pod", - "colorMode": null, - "colors": [], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "pod", - "thresholds": [], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{namespace=~'$namespace',pod=~'$deployment-.*'}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_requests_cpu_cores{namespace=~'$namespace',pod=~'$deployment-.*'}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{namespace=~'$namespace',pod=~'$deployment-.*'}) by (pod) / sum(kube_pod_container_resource_requests_cpu_cores{namespace=~'$namespace',pod=~'$deployment-.*'}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_limits_cpu_cores{namespace=~'$namespace',pod=~'$deployment-.*'}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{namespace=~'$namespace',pod=~'$deployment-.*'}) by (pod) / sum(kube_pod_container_resource_limits_cpu_cores{namespace=~'$namespace',pod=~'$deployment-.*'}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "CPU Quota", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 71 - }, - "id": 6, - "panels": [], - "repeat": "deployment", - "scopedVars": { - "deployment": { - "selected": true, - "text": "limitador", - "value": "limitador" - } - }, - "title": "Memory Usage ($deployment)", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - "h": 7, - "w": 24, - "x": 0, - "y": 72 - }, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "options": {}, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "deployment": { - "selected": true, - "text": "limitador", - "value": "limitador" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(container_memory_usage_bytes{namespace=~'$namespace', pod=~'$deployment-.*', container!=''}) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{pod}}", - "legendLink": null, - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory Usage", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 79 - }, - "id": 7, - "panels": [], - "repeat": "deployment", - "scopedVars": { - "deployment": { - "selected": true, - "text": "limitador", - "value": "limitador" - } - }, - "title": "Memory Quota ($deployment)", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "columns": [], - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fontSize": "100%", - "gridPos": { - "h": 7, - "w": 24, - "x": 0, - "y": 80 - }, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "options": {}, - "pageSize": null, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "deployment": { - "selected": true, - "text": "limitador", - "value": "limitador" - } - }, - "scroll": true, - "seriesOverrides": [], - "showHeader": true, - "sort": { - "col": 1, - "desc": true - }, - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Memory Usage", - "colorMode": null, - "colors": [], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [], - "type": "number", - "unit": "decbytes" - }, - { - "alias": "Memory Requests", - "colorMode": null, - "colors": [], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [], - "type": "number", - "unit": "decbytes" - }, - { - "alias": "Memory Requests %", - "colorMode": null, - "colors": [], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Memory Limits", - "colorMode": null, - "colors": [], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [], - "type": "number", - "unit": "decbytes" - }, - { - "alias": "Memory Limits %", - "colorMode": null, - "colors": [], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Pod", - "colorMode": null, - "colors": [], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTooltip": "Drill down", - "linkUrl": "/d/6581e46e4e5c7ba40a07646395ef7b55/kubernetes-compute-resources-pod?var-namespace=$namespace&var-pod=$__cell", - "pattern": "pod", - "thresholds": [], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(container_memory_usage_bytes{namespace=~'$namespace',pod=~'$deployment-.*', container!=''}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_requests_memory_bytes{namespace=~'$namespace',pod=~'$deployment-.*'}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(container_memory_usage_bytes{namespace=~'$namespace',pod!~'.*redis.*',pod=~'$deployment-.*', container!=''}) by (pod) / sum(kube_pod_container_resource_requests_memory_bytes{namespace=~'$namespace',pod=~'$deployment-.*'}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_limits_memory_bytes{namespace=~'$namespace',pod=~'$deployment-.*'}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(container_memory_usage_bytes{namespace=~'$namespace',pod=~'$deployment-.*', container!=''}) by (pod) / sum(kube_pod_container_resource_limits_memory_bytes{namespace=~'$namespace',pod=~'$deployment-.*'}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Memory Quota", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 87 - }, - "id": 15, - "panels": [], - "repeat": "deployment", - "scopedVars": { - "deployment": { - "selected": true, - "text": "limitador", - "value": "limitador" - } - }, - "title": "Network Usage ($deployment)", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - "h": 6, - "w": 24, - "x": 0, - "y": 88 - }, - "id": 17, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": {}, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "deployment": { - "selected": true, - "text": "limitador", - "value": "limitador" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_receive_bytes_total{namespace=~'$namespace',pod=~'$deployment-.*'}[5m])) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{pod}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Receive Bandwidth", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - "h": 6, - "w": 24, - "x": 0, - "y": 94 - }, - "id": 18, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": {}, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "deployment": { - "selected": true, - "text": "limitador", - "value": "limitador" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_transmit_bytes_total{namespace=~'$namespace',pod=~'$deployment-.*'}[5m])) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{pod}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Transmit Bandwidth", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "refresh": "10s", - "schemaVersion": 18, - "style": "dark", - "tags": [ - "kuadrant", - "backend" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "datasource", - "options": [], - "query": "prometheus", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" - }, - { - "allValue": null, - "datasource": "$datasource", - "definition": "label_values(limitador_up,namespace)", - "hide": 0, - "includeAll": false, - "label": "namespace", - "multi": false, - "name": "namespace", - "options": [], - "query": "label_values(limitador_up,namespace)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "tags": [], - "text": "limitador", - "value": "limitador" - }, - "hide": 0, - "includeAll": false, - "label": "component", - "multi": false, - "name": "deployment", - "options": [ - { - "selected": true, - "text": "limitador", - "value": "limitador" - }, - { - "selected": false, - "text": "kuard", - "value": "kuard" - }, - { - "selected": false, - "text": "redis", - "value": "redis" - } - ], - "query": "limitador,kuard,redis", - "skipUrlSync": false, - "type": "custom" - }, - { - "allValue": null, - "current": { - "text": "kuard", - "value": "kuard" - }, - "datasource": "$datasource", - "definition": "label_values(authorized_calls{namespace=\"$namespace\"},limitador_namespace)", - "hide": 0, - "includeAll": false, - "label": "limitador_namespace", - "multi": false, - "name": "limitador_namespace", - "options": [ - { - "selected": true, - "text": "kuard", - "value": "kuard" - } - ], - "query": "label_values(authorized_calls{namespace=\"$namespace\"},limitador_namespace)", - "refresh": 0, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-30m", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Kuadrant Limitador", - "version": 8 -} \ No newline at end of file diff --git a/0.10.0/limitador/limitador-server/kubernetes/limitador-metrics-dashboard-screenshot.png b/0.10.0/limitador/limitador-server/kubernetes/limitador-metrics-dashboard-screenshot.png deleted file mode 100644 index d674b48e9736b379872a2506a79bef664afd4cfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70285 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 i#Q*zb^8etcXkpR6D#_HbLo|=S3{}y3fV}_v^Zx \ No newline at end of file diff --git a/0.10.0/limitador/limitador-server/kubernetes/redis-service.yaml b/0.10.0/limitador/limitador-server/kubernetes/redis-service.yaml deleted file mode 100644 index 2096d64dd..000000000 --- a/0.10.0/limitador/limitador-server/kubernetes/redis-service.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: redis -spec: - ports: - - name: redis - port: 6379 - protocol: TCP - targetPort: redis - selector: - statefulset: redis - type: ClusterIP \ No newline at end of file diff --git a/0.10.0/limitador/limitador-server/kubernetes/redis-statefulset.yaml b/0.10.0/limitador/limitador-server/kubernetes/redis-statefulset.yaml deleted file mode 100644 index b344e8be4..000000000 --- a/0.10.0/limitador/limitador-server/kubernetes/redis-statefulset.yaml +++ /dev/null @@ -1,55 +0,0 @@ -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: redis -spec: - selector: - matchLabels: - statefulset: redis - serviceName: redis - replicas: 1 - template: - metadata: - labels: - statefulset: redis - spec: - containers: - - name: redis - image: redis:6.0 - ports: - - containerPort: 6379 - name: redis - livenessProbe: - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 5 - successThreshold: 1 - failureThreshold: 5 - exec: - command: - - redis-cli - - ping - readinessProbe: - initialDelaySeconds: 5 - periodSeconds: 10 - timeoutSeconds: 2 - successThreshold: 1 - failureThreshold: 5 - exec: - command: - - redis-cli - - ping - volumeMounts: - - name: redis-storage - mountPath: /data - subPath: data - volumeClaimTemplates: - - metadata: - name: redis-storage - spec: - volumeMode: Filesystem - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 1Gi \ No newline at end of file diff --git a/0.10.0/limitador/limitador-server/sandbox/Makefile b/0.10.0/limitador/limitador-server/sandbox/Makefile deleted file mode 100644 index 7d90b8e64..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/Makefile +++ /dev/null @@ -1,126 +0,0 @@ -SHELL := /bin/bash - -MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) -PROJECT_PATH := $(patsubst %/,%,$(dir $(MKFILE_PATH))) - -DOCKER ?= $(shell which docker 2> /dev/null || echo "docker") - -all: help - -##@ General - -# The help target prints out all targets with their descriptions organized -# beneath their categories. The categories are represented by '##@' and the -# target descriptions by '##'. The awk commands is responsible for reading the -# entire set of makefiles included in this invocation, looking for lines of the -# file as xyz: ## something, and then pretty-format the target and help. Then, -# if there's a line with ##@ something, that gets pretty-printed as a category. -# More info on the usage of ANSI control characters for terminal formatting: -# https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters -# More info on the awk command: -# http://linuxcommand.org/lc3_adv_awk.php - -help: ## Display this help. - @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-30s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) - -##@ Deployment Options - -deploy-in-memory: clean ## Counters are held in Limitador (ephemeral) - $(DOCKER) compose -f docker-compose-envoy.yaml -f docker-compose-limitador-memory.yaml up - -deploy-redis: clean ## Uses Redis to store counters - $(DOCKER) compose -f docker-compose-envoy.yaml -f docker-compose-limitador-redis.yaml up - -deploy-redis-tls: clean ## Uses Redis with TLS and password protected to store counters - $(MAKE) ca - $(MAKE) redis-client-certs - $(DOCKER) compose -f docker-compose-envoy.yaml -f docker-compose-limitador-redis-tls.yaml up - -deploy-redis-cached: clean ## Uses Redis to store counters, with an in-memory cache - $(DOCKER) compose -f docker-compose-envoy.yaml -f docker-compose-limitador-redis-cached.yaml up - -deploy-redis-otel: clean ## Uses Redis to store counters, instrumented with opentelemetry - $(DOCKER) compose -f docker-compose-envoy.yaml -f docker-compose-limitador-redis-otel.yaml up - -deploy-disk: clean ## Uses disk to store counters - $(DOCKER) compose -f docker-compose-envoy.yaml -f docker-compose-limitador-disk.yaml up - -deploy-distributed: clean ## Counters are held in Limitador (ephemeral) but replicated to other Limitador servers. - $(DOCKER) compose -f docker-compose-envoy.yaml -f docker-compose-limitador-distributed.yaml up - -deploy-distributed-3-node: clean ## Counters are held in Limitador (ephemeral) but replicated to 3 other local Limitador servers. - $(DOCKER) compose -f docker-compose-envoy-3-node.yaml -f docker-compose-limitador-distributed-3-node.yaml up - -##@ Helper targets - -build: clean ## Build the "limitador-testing" image - $(DOCKER) compose -f docker-compose-limitador-memory.yaml build - -build-all-features: clean ## Build the image "limitador-testing-all-features" image - $(DOCKER) compose -f docker-compose-limitador-distributed.yaml build - -ca: ## Create CA cert - openssl genrsa -out ca.key 2048 - openssl req -batch -new -x509 -nodes -key ca.key -sha256 -days 1024 -out ca.crt - -redis-client-certs: ## Create CSR, then sign it with CA cert - openssl req -subj '/CN=redis' -newkey rsa:4096 -nodes \ - -sha256 \ - -days 3650 \ - -keyout redis.key \ - -out redis.csr - chmod +r redis.key - openssl x509 -req -in redis.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out redis.crt -days 500 -sha256 - -##@ Cleanning targets - -redis-clean-certs: ## Clean certs - - rm *.crt *.key *.pem *.csr - -clean-containers: ## clean containers - - $(DOCKER) compose down --volumes --remove-orphans - - $(DOCKER) compose -f docker-compose-envoy.yaml -f docker-compose-limitador-memory.yaml down --volumes --remove-orphans - - $(DOCKER) compose -f docker-compose-envoy.yaml -f docker-compose-limitador-redis.yaml down --volumes --remove-orphans - - $(DOCKER)_compose -f docker-compose-envoy.yaml -f docker-compose-limitador-redis-cached.yaml down --volumes --remove-orphans - - $(DOCKER) compose -f docker-compose-envoy.yaml -f docker-compose-limitador-disk.yaml down --volumes --remove-orphans - - $(DOCKER) compose -f docker-compose-envoy.yaml -f docker-compose-limitador-redis-otel.yaml down --volumes --remove-orphans - - $(MAKE) cleancerts - -clean: ## clean all - - $(MAKE) clean-containers - - $(MAKE) redis-clean-certs - -GRPCURL=$(PROJECT_PATH)/bin/grpcurl -$(GRPCURL): - $(call go-install-tool,$(GRPCURL),github.com/fullstorydev/grpcurl/cmd/grpcurl@v1.8.9) - -.PHONY: grpcurl -grpcurl: $(GRPCURL) ## Download grpcurl locally if necessary. - -.PHONY: ghz -ghz: - $(call go-install-tool,$(PROJECT_PATH)/bin/ghz,github.com/bojand/ghz/cmd/ghz@latest) - -RPS?=1000 -.PHONY: load-test -load-test: ghz - # see https://ghz.sh/docs/load for usage details - $(PROJECT_PATH)/bin/ghz 127.0.0.1:18081 --insecure \ - --call envoy.service.ratelimit.v3.RateLimitService.ShouldRateLimit \ - --async --concurrency=50 \ - --rps=$(RPS) \ - --total=$(RPS)0 \ - --data-file load-test.json - -# go-install-tool will 'go install' any package $2 and install it to $1. -define go-install-tool -@[ -f $(1) ] || { \ -set -e ;\ -TMP_DIR=$$(mktemp -d) ;\ -cd $$TMP_DIR ;\ -go mod init tmp ;\ -echo "Downloading $(2)" ;\ -GOBIN=$(PROJECT_PATH)/bin go install $(2) ;\ -rm -rf $$TMP_DIR ;\ -} -endef diff --git a/0.10.0/limitador/limitador-server/sandbox/docker-compose-envoy-3-node.yaml b/0.10.0/limitador/limitador-server/sandbox/docker-compose-envoy-3-node.yaml deleted file mode 100644 index 702fd2348..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/docker-compose-envoy-3-node.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -version: '3.8' -services: - envoy: - image: envoyproxy/envoy:v1.20-latest - depends_on: - - upstream - - limitador - command: - - /usr/local/bin/envoy - - --config-path - - /etc/envoy.yaml - - --log-level - - info - - --component-log-level - - http:debug,router:debug - - --service-cluster - - proxy - expose: - - "80" - - "8001" - ports: - - "18000:80" - - "18001:8001" - volumes: - - ./envoy.yaml:/etc/envoy.yaml - envoy2: - image: envoyproxy/envoy:v1.20-latest - depends_on: - - upstream - - limitador - command: - - /usr/local/bin/envoy - - --config-path - - /etc/envoy.yaml - - --log-level - - info - - --component-log-level - - http:debug,router:debug - - --service-cluster - - proxy - expose: - - "80" - - "8001" - ports: - - "18100:80" - - "18101:8001" - volumes: - - ./envoy.yaml:/etc/envoy.yaml - envoy3: - image: envoyproxy/envoy:v1.20-latest - depends_on: - - upstream - - limitador - command: - - /usr/local/bin/envoy - - --config-path - - /etc/envoy.yaml - - --log-level - - info - - --component-log-level - - http:debug,router:debug - - --service-cluster - - proxy - expose: - - "80" - - "8001" - ports: - - "18200:80" - - "18201:8001" - volumes: - - ./envoy.yaml:/etc/envoy.yaml - upstream: - image: kennethreitz/httpbin diff --git a/0.10.0/limitador/limitador-server/sandbox/docker-compose-envoy.yaml b/0.10.0/limitador/limitador-server/sandbox/docker-compose-envoy.yaml deleted file mode 100644 index bfbfca172..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/docker-compose-envoy.yaml +++ /dev/null @@ -1,28 +0,0 @@ ---- -version: '3.8' -services: - envoy: - image: envoyproxy/envoy:v1.20-latest - depends_on: - - upstream - - limitador - command: - - /usr/local/bin/envoy - - --config-path - - /etc/envoy.yaml - - --log-level - - info - - --component-log-level - - http:debug,router:debug - - --service-cluster - - proxy - expose: - - "80" - - "8001" - ports: - - "18000:80" - - "18001:8001" - volumes: - - ./envoy.yaml:/etc/envoy.yaml - upstream: - image: kennethreitz/httpbin diff --git a/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-disk.yaml b/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-disk.yaml deleted file mode 100644 index f84a7c731..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-disk.yaml +++ /dev/null @@ -1,31 +0,0 @@ ---- -version: '3.8' -services: - limitador: - image: ${LIMITADOR_IMAGE:-limitador-testing} - build: - context: ../.. - dockerfile: Dockerfile - command: - - limitador-server - - --rls-ip - - 0.0.0.0 - - --rls-port - - "8081" - - --http-ip - - 0.0.0.0 - - --http-port - - "8080" - - -vvv - - --grpc-reflection-service - - /opt/kuadrant/limits/limits.yaml - - disk - - "/tmp/data" - expose: - - "8080" - - "8081" - ports: - - "18080:8080" - - "18081:8081" - volumes: - - ./limits.yaml:/opt/kuadrant/limits/limits.yaml diff --git a/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-distributed-3-node.yaml b/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-distributed-3-node.yaml deleted file mode 100644 index 31aca3d92..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-distributed-3-node.yaml +++ /dev/null @@ -1,58 +0,0 @@ ---- -version: '3.8' -services: - limitador: - image: limitador-testing-all-features - build: - context: ../.. - dockerfile: Dockerfile - args: - - CARGO_ARGS=--all-features - command: | - limitador-server --rls-ip 0.0.0.0 --rls-port 8081 --http-ip 0.0.0.0 --http-port "8080" - -vv --grpc-reflection-service /opt/kuadrant/limits/limits.yaml - distributed limitador 0.0.0.0:5001 http://limitador2:5001 http://limitador3:5001 - expose: - - "8080" - - "8081" - - "5001" - ports: - - "18080:8080" - - "18081:8081" - - "15001:5001" - volumes: - - ./limits.yaml:/opt/kuadrant/limits/limits.yaml - limitador2: - image: limitador-testing-all-features - build: - context: ../.. - dockerfile: Dockerfile - args: - - CARGO_ARGS=--all-features - command: | - limitador-server --rls-ip 0.0.0.0 --rls-port 8081 --http-ip 0.0.0.0 --http-port "8080" - -vv --grpc-reflection-service /opt/kuadrant/limits/limits.yaml - distributed limitador2 0.0.0.0:5001 http://limitador:5001 http://limitador3:5001 - expose: - - "8080" - - "8081" - - "5001" - volumes: - - ./limits.yaml:/opt/kuadrant/limits/limits.yaml - limitador3: - image: limitador-testing-all-features - build: - context: ../.. - dockerfile: Dockerfile - args: - - CARGO_ARGS=--all-features - command: | - limitador-server --rls-ip 0.0.0.0 --rls-port 8081 --http-ip 0.0.0.0 --http-port "8080" - -vv --grpc-reflection-service /opt/kuadrant/limits/limits.yaml - distributed limitador3 0.0.0.0:5001 http://limitador:5001 http://limitador2:5001 - expose: - - "8080" - - "8081" - - "5001" - volumes: - - ./limits.yaml:/opt/kuadrant/limits/limits.yaml diff --git a/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-distributed.yaml b/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-distributed.yaml deleted file mode 100644 index c0d830380..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-distributed.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -version: '3.8' -services: - limitador: - image: limitador-testing-all-features - build: - context: ../.. - dockerfile: Dockerfile - args: - - CARGO_ARGS=--all-features - command: | - limitador-server --rls-ip 0.0.0.0 --rls-port 8081 --http-ip 0.0.0.0 --http-port "8080" - -vv --grpc-reflection-service /opt/kuadrant/limits/limits.yaml - distributed ${PEER_ID:-node1} 0.0.0.0:5001 ${PEER_URLS:-} - expose: - - "8080" - - "8081" - - "5001" - ports: - - "18080:8080" - - "18081:8081" - - "15001:5001" - volumes: - - ./limits.yaml:/opt/kuadrant/limits/limits.yaml diff --git a/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-memory.yaml b/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-memory.yaml deleted file mode 100644 index 133d7ffa2..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-memory.yaml +++ /dev/null @@ -1,30 +0,0 @@ ---- -version: '3.8' -services: - limitador: - image: ${LIMITADOR_IMAGE:-limitador-testing} - build: - context: ../.. - dockerfile: Dockerfile - command: - - limitador-server - - --rls-ip - - 0.0.0.0 - - --rls-port - - "8081" - - --http-ip - - 0.0.0.0 - - --http-port - - "8080" - - -vvv - - --grpc-reflection-service - - /opt/kuadrant/limits/limits.yaml - - memory - expose: - - "8080" - - "8081" - ports: - - "18080:8080" - - "18081:8081" - volumes: - - ./limits.yaml:/opt/kuadrant/limits/limits.yaml diff --git a/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-redis-cached.yaml b/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-redis-cached.yaml deleted file mode 100644 index 7c257bbe5..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-redis-cached.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -version: '3.8' -services: - limitador: - image: ${LIMITADOR_IMAGE:-limitador-testing} - build: - context: ../.. - dockerfile: Dockerfile - depends_on: - - redis - command: - - limitador-server - - --rls-ip - - 0.0.0.0 - - --rls-port - - "8081" - - --http-ip - - 0.0.0.0 - - --http-port - - "8080" - - -vvv - - --grpc-reflection-service - - /opt/kuadrant/limits/limits.yaml - - redis_cached - - --batch-size - - "100" - - --flush-period - - "1000" - - --max-cached - - "10000" - - --response-timeout - - "350" - - redis://redis:6379 - expose: - - "8080" - - "8081" - ports: - - "18080:8080" - - "18081:8081" - volumes: - - ./limits.yaml:/opt/kuadrant/limits/limits.yaml - redis: - image: redis:5 diff --git a/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-redis-otel.yaml b/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-redis-otel.yaml deleted file mode 100644 index 8c61f7aab..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-redis-otel.yaml +++ /dev/null @@ -1,47 +0,0 @@ ---- -version: '3.8' -services: - limitador: - image: ${LIMITADOR_IMAGE:-limitador-testing} - build: - context: ../.. - dockerfile: Dockerfile - depends_on: - - jaeger - - redis - command: - - limitador-server - - --tracing-endpoint - - "rpc://jaeger:4317" - - --rls-ip - - 0.0.0.0 - - --rls-port - - "8081" - - --http-ip - - 0.0.0.0 - - --http-port - - "8080" - - -vvvv - - --grpc-reflection-service - - /opt/kuadrant/limits/limits.yaml - - redis - - redis://redis:6379 - expose: - - "8080" - - "8081" - ports: - - "18080:8080" - - "18081:8081" - volumes: - - ./limits.yaml:/opt/kuadrant/limits/limits.yaml - redis: - image: redis:7 - jaeger: - image: jaegertracing/all-in-one:latest - environment: - JAEGER_DISABLED: "false" - COLLECTOR_OTLP_ENABLED: "true" - ports: - - 16686:16686 - expose: - - "4317" diff --git a/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-redis-tls.yaml b/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-redis-tls.yaml deleted file mode 100644 index 5c603a5e2..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-redis-tls.yaml +++ /dev/null @@ -1,45 +0,0 @@ ---- -version: '3.8' -services: - limitador: - image: ${LIMITADOR_IMAGE:-limitador-testing} - build: - context: ../.. - dockerfile: Dockerfile - depends_on: - - redis - command: - - limitador-server - - --rls-ip - - 0.0.0.0 - - --rls-port - - "8081" - - --http-ip - - 0.0.0.0 - - --http-port - - "8080" - - -vvv - - --grpc-reflection-service - - /opt/kuadrant/limits/limits.yaml - - redis - - rediss://:foobared@redis:6379/#insecure - expose: - - "8080" - - "8081" - ports: - - "18080:8080" - volumes: - - ./limits.yaml:/opt/kuadrant/limits/limits.yaml - redis: - image: redis:6.2 - restart: always - ports: - - '6379:6379' - command: - - redis-server - - /usr/local/etc/redis/redis.conf - volumes: - - ./redis-tls/redis-config.conf:/usr/local/etc/redis/redis.conf - - ./redis.crt:/usr/local/etc/redis/certs/redis.crt - - ./redis.key:/usr/local/etc/redis/certs/redis.key - - ./ca.crt:/usr/local/etc/redis/certs/ca.crt diff --git a/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-redis.yaml b/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-redis.yaml deleted file mode 100644 index f5fc3b025..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/docker-compose-limitador-redis.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -version: '3.8' -services: - limitador: - image: ${LIMITADOR_IMAGE:-limitador-testing} - build: - context: ../.. - dockerfile: Dockerfile - depends_on: - - redis - command: - - limitador-server - - --rls-ip - - 0.0.0.0 - - --rls-port - - "8081" - - --http-ip - - 0.0.0.0 - - --http-port - - "8080" - - -vvv - - --grpc-reflection-service - - /opt/kuadrant/limits/limits.yaml - - redis - - redis://redis:6379 - expose: - - "8080" - - "8081" - ports: - - "18080:8080" - - "18081:8081" - volumes: - - ./limits.yaml:/opt/kuadrant/limits/limits.yaml - redis: - image: redis:5 diff --git a/0.10.0/limitador/limitador-server/sandbox/envoy.yaml b/0.10.0/limitador/limitador-server/sandbox/envoy.yaml deleted file mode 100644 index 7e678e10a..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/envoy.yaml +++ /dev/null @@ -1,84 +0,0 @@ ---- -static_resources: - listeners: - - name: main - address: - socket_address: - address: 0.0.0.0 - port_value: 80 - filter_chains: - - filters: - - name: envoy.filters.network.http_connection_manager - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager - stat_prefix: ingress_http - route_config: - name: local_route - virtual_hosts: - - name: local_service - domains: - - "*" - routes: - - match: - prefix: "/" - route: - cluster: upstream - rate_limits: - - actions: - - request_headers: - header_name: :method - descriptor_key: req.method - - request_headers: - header_name: :path - descriptor_key: req.path - http_filters: - - name: envoy.filters.http.ratelimit - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.http.ratelimit.v3.RateLimit - domain: "test_namespace" - failure_mode_deny: true - timeout: 3s - rate_limit_service: - transport_api_version: "v3" - grpc_service: - envoy_grpc: - cluster_name: limitador - - name: envoy.filters.http.router - clusters: - - name: upstream - connect_timeout: 0.25s - type: STRICT_DNS - lb_policy: round_robin - load_assignment: - cluster_name: upstream - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: upstream - port_value: 80 - - name: limitador - connect_timeout: 1s - type: STRICT_DNS - lb_policy: round_robin - typed_extension_protocol_options: - envoy.extensions.upstreams.http.v3.HttpProtocolOptions: - "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions - explicit_http_config: - http2_protocol_options: {} - load_assignment: - cluster_name: limitador - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: limitador - port_value: 8081 -admin: - access_log_path: "/dev/null" - address: - socket_address: - address: 0.0.0.0 - port_value: 8001 diff --git a/0.10.0/limitador/limitador-server/sandbox/envoy2.yaml b/0.10.0/limitador/limitador-server/sandbox/envoy2.yaml deleted file mode 100644 index d1d159580..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/envoy2.yaml +++ /dev/null @@ -1,84 +0,0 @@ ---- -static_resources: - listeners: - - name: main - address: - socket_address: - address: 0.0.0.0 - port_value: 80 - filter_chains: - - filters: - - name: envoy.filters.network.http_connection_manager - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager - stat_prefix: ingress_http - route_config: - name: local_route - virtual_hosts: - - name: local_service - domains: - - "*" - routes: - - match: - prefix: "/" - route: - cluster: upstream - rate_limits: - - actions: - - request_headers: - header_name: :method - descriptor_key: req.method - - request_headers: - header_name: :path - descriptor_key: req.path - http_filters: - - name: envoy.filters.http.ratelimit - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.http.ratelimit.v3.RateLimit - domain: "test_namespace" - failure_mode_deny: true - timeout: 3s - rate_limit_service: - transport_api_version: "v3" - grpc_service: - envoy_grpc: - cluster_name: limitador - - name: envoy.filters.http.router - clusters: - - name: upstream - connect_timeout: 0.25s - type: STRICT_DNS - lb_policy: round_robin - load_assignment: - cluster_name: upstream - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: upstream - port_value: 80 - - name: limitador - connect_timeout: 1s - type: STRICT_DNS - lb_policy: round_robin - typed_extension_protocol_options: - envoy.extensions.upstreams.http.v3.HttpProtocolOptions: - "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions - explicit_http_config: - http2_protocol_options: {} - load_assignment: - cluster_name: limitador - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: limitador2 - port_value: 8081 -admin: - access_log_path: "/dev/null" - address: - socket_address: - address: 0.0.0.0 - port_value: 8001 diff --git a/0.10.0/limitador/limitador-server/sandbox/envoy3.yaml b/0.10.0/limitador/limitador-server/sandbox/envoy3.yaml deleted file mode 100644 index 03180c47b..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/envoy3.yaml +++ /dev/null @@ -1,84 +0,0 @@ ---- -static_resources: - listeners: - - name: main - address: - socket_address: - address: 0.0.0.0 - port_value: 80 - filter_chains: - - filters: - - name: envoy.filters.network.http_connection_manager - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager - stat_prefix: ingress_http - route_config: - name: local_route - virtual_hosts: - - name: local_service - domains: - - "*" - routes: - - match: - prefix: "/" - route: - cluster: upstream - rate_limits: - - actions: - - request_headers: - header_name: :method - descriptor_key: req.method - - request_headers: - header_name: :path - descriptor_key: req.path - http_filters: - - name: envoy.filters.http.ratelimit - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.http.ratelimit.v3.RateLimit - domain: "test_namespace" - failure_mode_deny: true - timeout: 3s - rate_limit_service: - transport_api_version: "v3" - grpc_service: - envoy_grpc: - cluster_name: limitador - - name: envoy.filters.http.router - clusters: - - name: upstream - connect_timeout: 0.25s - type: STRICT_DNS - lb_policy: round_robin - load_assignment: - cluster_name: upstream - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: upstream - port_value: 80 - - name: limitador - connect_timeout: 1s - type: STRICT_DNS - lb_policy: round_robin - typed_extension_protocol_options: - envoy.extensions.upstreams.http.v3.HttpProtocolOptions: - "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions - explicit_http_config: - http2_protocol_options: {} - load_assignment: - cluster_name: limitador - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: limitador3 - port_value: 8081 -admin: - access_log_path: "/dev/null" - address: - socket_address: - address: 0.0.0.0 - port_value: 8001 diff --git a/0.10.0/limitador/limitador-server/sandbox/index.html b/0.10.0/limitador/limitador-server/sandbox/index.html deleted file mode 100644 index 8727be641..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/index.html +++ /dev/null @@ -1,3801 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Sandbox - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - - - - - -
    -
    - - - - - - - - - - - - -

    Sandbox

    - -

    Testing Environment

    -

    Requirements

    -
      -
    • docker v24+
    • -
    -

    Setup

    -

    Clone the project

    -
    git clone https://github.com/Kuadrant/limitador.git
    -cd limitador/limitador-server/sandbox
    -
    -

    Check out make help for all the targets.

    -

    Deployment options

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Limitador's configurationCommandInfo
    In-memory configurationmake deploy-in-memoryCounters are held in Limitador (ephemeral)
    Redismake deploy-redisUses Redis to store counters
    Redis Securedmake deploy-redis-tlsUses Redis with TLS and password protected to store counters
    Redis Cachedmake deploy-redis-cachedUses Redis to store counters, with an in-memory cache
    Redis Otel Instrumentedmake deploy-redis-otelUses redis to store counters, instrumented with opentelemetry
    Diskmake deploy-diskUses disk to store counters
    Distributedmake deploy-distributedCounters are held in Limitador (ephemeral) but replicated to other Limitador servers.
    -

    | Distributed 3 Node | make deploy-distributed-3-node | Counters are held in Limitador (ephemeral) but replicated to 3 other Limitador servers. |

    -

    Running Multi Node Distributed Deployments

    -

    The make deploy-distributed target can be connected to other Limitador servers but requires you to set the PEER_ID and PEER_URLS environment variables when you run the target.

    -

    If you have 3 servers you want to replicate between, you would run the following commands:

    -
    # on server where: hostname=server1
    -PEER_ID=`hostname` PEER_URLS="http://server2:15001 http://server3:15001" make deploy-distributed
    -
    -
    # on server where: hostname=server2
    -PEER_ID=`hostname` PEER_URLS="http://server1:15001 http://server3:15001" make deploy-distributed
    -
    -
    # on server where: hostname=server3
    -PEER_ID=`hostname` PEER_URLS="http://server1:15001 http://server2:15001" make deploy-distributed
    -
    -

    The PEER_ID just need to be unique between the servers, and the PEER_URLS should be a space-separated list of the other servers' URLs.

    -

    Limitador's admin HTTP endpoint

    -

    Limits

    -
    curl -i http://127.0.0.1:18080/limits/test_namespace
    -
    -

    Counters

    -
    curl -i http://127.0.0.1:18080/counters/test_namespace
    -
    -

    Metrics

    -
    curl -i http://127.0.0.1:18080/metrics
    -
    -

    Limitador's GRPC RateLimitService endpoint

    -

    Get grpcurl. You need Go SDK installed.

    -

    Golang version >= 1.18 (from fullstorydev/grpcurl)

    -
    make grpcurl
    -
    -

    Inspect RateLimitService GRPC service

    -
    bin/grpcurl -plaintext 127.0.0.1:18081 describe envoy.service.ratelimit.v3.RateLimitService
    -
    -

    Make a custom request

    -
    bin/grpcurl -plaintext -d @ 127.0.0.1:18081 envoy.service.ratelimit.v3.RateLimitService.ShouldRateLimit <<EOM
    -{
    -    "domain": "test_namespace",
    -    "hits_addend": 1,
    -    "descriptors": [
    -        {
    -            "entries": [
    -                {
    -                    "key": "req.method",
    -                    "value": "POST"
    -                },
    -                {
    -                    "key": "req.path",
    -                    "value": "/"
    -                }
    -            ]
    -        }
    -    ]
    -}
    -EOM
    -
    -

    Do repeated requests. As the limit is set to max 5 request for 60 seconds, -you should see OVER_LIMIT response after 5 requests.

    -
    while :; do bin/grpcurl -plaintext -d @ 127.0.0.1:18081 envoy.service.ratelimit.v3.RateLimitService.ShouldRateLimit <<EOM; sleep 1; done
    -{
    -    "domain": "test_namespace",
    -    "hits_addend": 1,
    -    "descriptors": [
    -        {
    -            "entries": [
    -                {
    -                    "key": "req.method",
    -                    "value": "POST"
    -                },
    -                {
    -                    "key": "req.path",
    -                    "value": "/"
    -                }
    -            ]
    -        }
    -    ]
    -}
    -EOM
    -
    -

    Downstream traffic

    -

    Upstream service implemented by httpbin.org

    -
    curl -i -H "Host: example.com" http://127.0.0.1:18000/get
    -
    -

    Load Testing the GRPC RateLimitService directly

    -

    This load test will use grpcurl. You need Go SDK installed.

    -

    Run a load test a 5000 requests per second (RPS) for 10 seconds:

    -
    RPS=5000 make load-test
    -
    -

    Load Testing via Envoy Proxy

    -
    cargo run --manifest-path loadtest/Cargo.toml  --package loadtest --release -- --report-file=report.htm
    -
    -

    The report will be saved in report.htm file.

    -

    Limitador Image

    -

    By default, the sandbox will run Limitador's limitador-testing:latest image.

    -

    Building limitador-testing:latest image

    -

    You can easily build the limitador's image from the current workspace code base with:

    -
    make build
    -
    -

    The image will be tagged with limitador-testing:latest

    -

    Using custom Limitador's image

    -

    The LIMITADOR_IMAGE environment variable overrides the default image. For example:

    -
    make deploy-in-memory LIMITADOR_IMAGE=quay.io/kuadrant/limitador:latest
    -
    -

    Clean env

    -
    make clean
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/limitador/limitador-server/sandbox/limits.yaml b/0.10.0/limitador/limitador-server/sandbox/limits.yaml deleted file mode 100644 index 68b6df8df..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/limits.yaml +++ /dev/null @@ -1,22 +0,0 @@ ---- -- namespace: test_namespace - max_value: 10 - seconds: 60 - conditions: - - "req.method == 'GET'" - - "req.path != '/json'" - variables: [] -- namespace: test_namespace - max_value: 5 - seconds: 60 - conditions: - - "req.method == 'POST'" - - "req.path != '/json'" - variables: [] -- namespace: test_namespace - max_value: 50000 - seconds: 10 - conditions: - - "req.method == 'GET'" - - "req.path == '/json'" - variables: [] diff --git a/0.10.0/limitador/limitador-server/sandbox/load-test.json b/0.10.0/limitador/limitador-server/sandbox/load-test.json deleted file mode 100644 index b23422cc9..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/load-test.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "domain": "test_namespace", - "hits_addend": 1, - "descriptors": [ - { - "entries": [ - { - "key": "req.method", - "value": "GET" - }, - { - "key": "req.path", - "value": "/json" - } - ] - } - ] -} \ No newline at end of file diff --git a/0.10.0/limitador/limitador-server/sandbox/loadtest/Cargo.lock b/0.10.0/limitador/limitador-server/sandbox/loadtest/Cargo.lock deleted file mode 100644 index e0ca2c5f8..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/loadtest/Cargo.lock +++ /dev/null @@ -1,1874 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "addr2line" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "arrayvec" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" - -[[package]] -name = "async-compression" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5" -dependencies = [ - "flate2", - "futures-core", - "memchr", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "async-trait" -version = "0.1.80" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "autocfg" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" - -[[package]] -name = "backtrace" -version = "0.3.72" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17c6a35df3749d2e8bb1b7b21a976d82b15548788d2735b9d82f329268f71a11" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "bumpalo" -version = "3.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" - -[[package]] -name = "cc" -version = "1.0.99" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - -[[package]] -name = "chrono" -version = "0.4.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "num-traits", - "windows-targets 0.52.5", -] - -[[package]] -name = "cookie" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24" -dependencies = [ - "percent-encoding", - "time", - "version_check", -] - -[[package]] -name = "cookie_store" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "387461abbc748185c3a6e1673d826918b450b87ff22639429c694619a83b6cf6" -dependencies = [ - "cookie", - "idna 0.3.0", - "log", - "publicsuffix", - "serde", - "serde_derive", - "serde_json", - "time", - "url", -] - -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" - -[[package]] -name = "cpufeatures" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "ctrlc" -version = "3.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "672465ae37dc1bc6380a6547a8883d5dd397b0f1faaad4f265726cc7042a5345" -dependencies = [ - "nix", - "windows-sys 0.52.0", -] - -[[package]] -name = "data-encoding" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" - -[[package]] -name = "deranged" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" -dependencies = [ - "powerfmt", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "downcast-rs" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" - -[[package]] -name = "either" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" - -[[package]] -name = "encoding_rs" -version = "0.8.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "fastrand" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" - -[[package]] -name = "flate2" -version = "1.0.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "flume" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" -dependencies = [ - "futures-core", - "futures-sink", - "nanorand", - "spin", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futures" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" - -[[package]] -name = "futures-executor" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" - -[[package]] -name = "futures-macro" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "futures-sink" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" - -[[package]] -name = "futures-task" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" - -[[package]] -name = "futures-util" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - -[[package]] -name = "gimli" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" - -[[package]] -name = "goose" -version = "0.17.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cfeedc01d217935e1371901ea642ea6693d68893c67336d146eba23be04bf11" -dependencies = [ - "async-trait", - "chrono", - "ctrlc", - "downcast-rs", - "flume", - "futures", - "gumdrop", - "http", - "itertools", - "lazy_static", - "log", - "num-format", - "rand", - "regex", - "reqwest", - "serde", - "serde_json", - "simplelog", - "strum", - "strum_macros", - "tokio", - "tokio-tungstenite", - "tungstenite", - "url", -] - -[[package]] -name = "gumdrop" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bc700f989d2f6f0248546222d9b4258f5b02a171a431f8285a81c08142629e3" -dependencies = [ - "gumdrop_derive", -] - -[[package]] -name = "gumdrop_derive" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "729f9bd3449d77e7831a18abfb7ba2f99ee813dfd15b8c2167c9a54ba20aa99d" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "h2" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "hyper" -version = "0.14.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper", - "native-tls", - "tokio", - "tokio-native-tls", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.60" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "idna" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "idna" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "indexmap" -version = "2.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" -dependencies = [ - "equivalent", - "hashbrown", -] - -[[package]] -name = "ipnet" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" - -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" - -[[package]] -name = "js-sys" -version = "0.3.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.155" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" - -[[package]] -name = "linux-raw-sys" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" - -[[package]] -name = "loadtest" -version = "0.1.0" -dependencies = [ - "goose", - "tokio", -] - -[[package]] -name = "lock_api" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" - -[[package]] -name = "memchr" -version = "2.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "miniz_oxide" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" -dependencies = [ - "adler", -] - -[[package]] -name = "mio" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" -dependencies = [ - "libc", - "wasi", - "windows-sys 0.48.0", -] - -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom", -] - -[[package]] -name = "native-tls" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "nix" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" -dependencies = [ - "bitflags 2.5.0", - "cfg-if", - "cfg_aliases", - "libc", -] - -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[package]] -name = "num-format" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" -dependencies = [ - "arrayvec", - "itoa", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "num_threads" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" -dependencies = [ - "libc", -] - -[[package]] -name = "object" -version = "0.35.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8ec7ab813848ba4522158d5517a6093db1ded27575b070f4177b8d12b41db5e" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" - -[[package]] -name = "openssl" -version = "0.10.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" -dependencies = [ - "bitflags 2.5.0", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.102" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "pin-project-lite" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "proc-macro2" -version = "1.0.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "psl-types" -version = "2.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" - -[[package]] -name = "publicsuffix" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96a8c1bda5ae1af7f99a2962e49df150414a43d62404644d98dd5c3a93d07457" -dependencies = [ - "idna 0.3.0", - "psl-types", -] - -[[package]] -name = "quote" -version = "1.0.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "regex" -version = "1.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" - -[[package]] -name = "reqwest" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "async-compression", - "base64", - "bytes", - "cookie", - "cookie_store", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-tls", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "system-configuration", - "tokio", - "tokio-native-tls", - "tokio-util", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "rustix" -version = "0.38.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" -dependencies = [ - "bitflags 2.5.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64", -] - -[[package]] -name = "rustversion" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "schannel" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "security-framework" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" -dependencies = [ - "bitflags 2.5.0", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "serde" -version = "1.0.203" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.203" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "serde_json" -version = "1.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "simplelog" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16257adbfaef1ee58b1363bdc0664c9b8e1e30aed86049635fb5f147d065a9c0" -dependencies = [ - "log", - "termcolor", - "time", -] - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - -[[package]] -name = "socket2" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -dependencies = [ - "lock_api", -] - -[[package]] -name = "strum" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" - -[[package]] -name = "strum_macros" -version = "0.25.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.66", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.66" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "tempfile" -version = "3.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" -dependencies = [ - "cfg-if", - "fastrand", - "rustix", - "windows-sys 0.52.0", -] - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "thiserror" -version = "1.0.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "time" -version = "0.3.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" -dependencies = [ - "deranged", - "itoa", - "libc", - "num-conv", - "num_threads", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tinyvec" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "num_cpus", - "pin-project-lite", - "socket2", - "tokio-macros", - "windows-sys 0.48.0", -] - -[[package]] -name = "tokio-macros" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-tungstenite" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" -dependencies = [ - "futures-util", - "log", - "tokio", - "tungstenite", -] - -[[package]] -name = "tokio-util" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tower-service" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" - -[[package]] -name = "tracing" -version = "0.1.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" -dependencies = [ - "pin-project-lite", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" -dependencies = [ - "once_cell", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "tungstenite" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" -dependencies = [ - "byteorder", - "bytes", - "data-encoding", - "http", - "httparse", - "log", - "rand", - "sha1", - "thiserror", - "url", - "utf-8", -] - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - -[[package]] -name = "unicode-ident" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-normalization" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "url" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" -dependencies = [ - "form_urlencoded", - "idna 0.5.0", - "percent-encoding", -] - -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.66", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" - -[[package]] -name = "web-sys" -version = "0.3.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "winapi-util" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "windows-core" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" -dependencies = [ - "windows-targets 0.52.5", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.5", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" -dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", - "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" - -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] diff --git a/0.10.0/limitador/limitador-server/sandbox/loadtest/Cargo.toml b/0.10.0/limitador/limitador-server/sandbox/loadtest/Cargo.toml deleted file mode 100644 index 86103223e..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/loadtest/Cargo.toml +++ /dev/null @@ -1,10 +0,0 @@ -[package] -name = "loadtest" -version = "0.1.0" -edition = "2021" - -[dependencies] -goose = "^0.17" -tokio = "^1.12" - -[workspace] \ No newline at end of file diff --git a/0.10.0/limitador/limitador-server/sandbox/loadtest/src/main.rs b/0.10.0/limitador/limitador-server/sandbox/loadtest/src/main.rs deleted file mode 100644 index 41c2bd556..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/loadtest/src/main.rs +++ /dev/null @@ -1,26 +0,0 @@ -use goose::prelude::*; - -async fn loadtest_get_json(user: &mut GooseUser) -> TransactionResult { - let _goose_metrics = user.get("/json").await?; - - Ok(()) -} - -#[tokio::main] -async fn main() -> Result<(), GooseError> { - GooseAttack::initialize()? - .register_scenario( - scenario!("LoadtestTransactions").register_transaction(transaction!(loadtest_get_json)), - ) - .set_default(GooseDefault::Host, "http://localhost:18000")? - .set_default(GooseDefault::HatchRate, "2")? - .set_default( - GooseDefault::CoordinatedOmissionMitigation, - GooseCoordinatedOmissionMitigation::Average, - )? - .set_default(GooseDefault::RunTime, 20)? - .execute() - .await?; - - Ok(()) -} diff --git a/0.10.0/limitador/limitador-server/sandbox/redis-otel/index.html b/0.10.0/limitador/limitador-server/sandbox/redis-otel/index.html deleted file mode 100644 index 8719674df..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/redis-otel/index.html +++ /dev/null @@ -1,3437 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Limitador instrumentation sandbox - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Limitador instrumentation sandbox

    -

    Limitador is configured to push traces to an opentelemetry collector.

    -

    Run sandbox

    -
    make build
    -make deploy-redis-otel
    -
    -

    Run some traffic

    -
    make grpcurl
    -
    -
    bin/grpcurl -plaintext -d @ 127.0.0.1:18081 envoy.service.ratelimit.v3.RateLimitService.ShouldRateLimit <<EOM
    -{
    -    "domain": "test_namespace",
    -    "hits_addend": 1,
    -    "descriptors": [
    -        {
    -            "entries": [
    -                {
    -                    "key": "req.method",
    -                    "value": "POST"
    -                }
    -            ]
    -        }
    -    ]
    -}
    -EOM
    -
    -

    See the trace in UI

    -
    firefox -private-window "localhost:16686"
    -
    -

    Screenshot 2024-03-21 at 17-08-35 Jaeger UI

    -
    -

    Recommended to start looking at check_and_update operation.

    -
    -

    Tear down sandbox

    -
    make clean
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/limitador/limitador-server/sandbox/redis-tls/index.html b/0.10.0/limitador/limitador-server/sandbox/redis-tls/index.html deleted file mode 100644 index deb2a328d..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/redis-tls/index.html +++ /dev/null @@ -1,3381 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Index - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Index

    - -

    Testing redis security

    -

    Execute bash shell in redis pod

    -
    docker compose -p sandbox exec redis /bin/bash
    -
    -

    Connect to this Redis server with redis-cli:

    -
    root@e024a29b74ba:/data# redis-cli --tls --cacert /usr/local/etc/redis/certs/ca.crt -a foobared
    -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/limitador/limitador-server/sandbox/redis-tls/redis-config.conf b/0.10.0/limitador/limitador-server/sandbox/redis-tls/redis-config.conf deleted file mode 100644 index b478e76e6..000000000 --- a/0.10.0/limitador/limitador-server/sandbox/redis-tls/redis-config.conf +++ /dev/null @@ -1,7 +0,0 @@ -requirepass foobared -port 0 -tls-port 6379 -tls-cert-file /usr/local/etc/redis/certs/redis.crt -tls-key-file /usr/local/etc/redis/certs/redis.key -tls-ca-cert-file /usr/local/etc/redis/certs/ca.crt -tls-auth-clients no diff --git a/0.10.0/limitador/limitador/index.html b/0.10.0/limitador/limitador/index.html deleted file mode 100644 index f1472bbb8..000000000 --- a/0.10.0/limitador/limitador/index.html +++ /dev/null @@ -1,3443 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Crate - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Limitador (library)

    -

    Crates.io -docs.rs

    -

    An embeddable rate-limiter library supporting in-memory, Redis and disk data stores.

    -

    For the complete documentation of the crate's API, please refer to docs.rs

    -

    Features

    -
      -
    • redis_storage: support for using Redis as the data storage backend.
    • -
    • disk_storage: support for using RocksDB as a local disk storage backend.
    • -
    • lenient_conditions: support for the deprecated syntax of Conditions
    • -
    • default: redis_storage.
    • -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/search/search_index.json b/0.10.0/search/search_index.json deleted file mode 100644 index f7cc1eaad..000000000 --- a/0.10.0/search/search_index.json +++ /dev/null @@ -1 +0,0 @@ -{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Overview","text":"

    Kuadrant combines Gateway API and Istio-based gateway controllers to enhance application connectivity. It enables platform engineers and application developers to easily connect, secure, and protect their services and infrastructure across multiple clusters with policies for TLS, DNS, application authentication & authorization, and rate limiting. Additionally, Kuadrant offers observability templates to further support infrastructure management.

    "},{"location":"#getting-started","title":"Getting Started","text":"

    For a quick local setup of Kuadrant, see our Single Cluster or Multi Cluster guides. Explore the single and multi-cluster architecture in our Architectural Overview.

    "},{"location":"getting-started-multi-cluster/","title":"Multi-Cluster","text":""},{"location":"getting-started-multi-cluster/#kuadrant-getting-started-multi-cluster","title":"Kuadrant Getting Started - Multi Cluster","text":""},{"location":"getting-started-multi-cluster/#overview","title":"Overview","text":"

    In this quick start, we will cover the setup of Kuadrant in multiple local kind clusters. This document is intended as a follow on to the single cluster guide. It can be used for adding 1 or more clusters to your local setup.

    "},{"location":"getting-started-multi-cluster/#prerequisites","title":"Prerequisites","text":"
    • Completed the Single-cluster Quick Start
    "},{"location":"getting-started-multi-cluster/#environmental-variables","title":"Environmental Variables","text":"

    The same environment variable requirements from the Single-cluster Quick Start apply to this document, including the KUADRANT_REF variable.

    "},{"location":"getting-started-multi-cluster/#set-up-a-kind-cluster-and-install-kuadrant","title":"Set Up a kind cluster and install Kuadrant","text":"

    Run the same quickstart script from the single cluster quick start:

    curl \"https://raw.githubusercontent.com/kuadrant/kuadrant-operator/${KUADRANT_REF}/hack/quickstart-setup.sh\" | bash\n

    The script will detect if you already have a cluster from the single cluster setup running, and prompt you for a multi cluster setup. This will setup an additional kind cluster, install Istio and install Kuadrant. You can re-run the script multiple times to add more clusters. Each cluster will have a number suffix in the name. For example: kuadrant-local-1, kuadrant-local-2, kuadrant-local-3. The original cluster from the single cluster setup will keep its name of just kuadrant-local.

    "},{"location":"getting-started-multi-cluster/#clean-up","title":"Clean Up","text":"

    To ensure that any DNS records are removed, you should remove any DNSPolicy and TLSPolicy resources before deleting the local cluster.

    "},{"location":"getting-started-multi-cluster/#whats-next","title":"What's Next","text":"

    The next step is to setup and use the policies provided by Kuadrant.

    Secure, Protect and Connect your Gateway

    "},{"location":"getting-started-single-cluster/","title":"Single-Cluster","text":""},{"location":"getting-started-single-cluster/#kuadrant-getting-started-single-cluster","title":"Kuadrant Getting Started - Single Cluster","text":""},{"location":"getting-started-single-cluster/#overview","title":"Overview","text":"

    In this quick start, we will cover:

    • setup of Kuadrant in a singe local kind cluster
    "},{"location":"getting-started-single-cluster/#prerequisites","title":"Prerequisites","text":"
    • Docker
    • Kind
    • Kubectl
    • OpenSSL >= 3
    • AWS account with Route 53 enabled or GCP with Cloud DNS enabled
    • Docker Mac Net Connect (macOS users only)
    "},{"location":"getting-started-single-cluster/#environmental-variables","title":"Environmental Variables","text":""},{"location":"getting-started-single-cluster/#general","title":"General","text":"Env Var Example Value Description ISTIO_INSTALL_SAIL true Whether to install istio through project sail, default false

    If you want to make use of the Kuadrant DNSPolicy you should setup the following environmental variables depending on your DNS Provider:

    "},{"location":"getting-started-single-cluster/#aws","title":"AWS","text":"Env Var Example Value Description KUADRANT_ZONE_ROOT_DOMAIN jbloggs.hcpapps.net Hostname for the root Domain KUADRANT_AWS_DNS_PUBLIC_ZONE_ID Z01234567US0IQE3YLO00 AWS Route 53 Zone ID for specified KUADRANT_ZONE_ROOT_DOMAIN KUADRANT_AWS_ACCESS_KEY_ID AKIA1234567890000000 Access Key ID, for user with permissions to Route 53 in the account where root domain is created KUADRANT_AWS_SECRET_ACCESS_KEY Z01234567US0000000 Access Secret Access Key, for user with permissions to Route 53 in the account where root domain is created KUADRANT_AWS_REGION eu-west-1 AWS Region"},{"location":"getting-started-single-cluster/#gcp","title":"GCP","text":"Env Var Example Value Description GOOGLE {\"client_id\": \"00000000-00000000000000.apps.googleusercontent.com\",\"client_secret\": \"d-FL95Q00000000000000\",\"refresh_token\": \"00000aaaaa00000000-AAAAAAAAAAAAKFGJFJDFKDK\",\"type\": \"authorized_user\"} This is the JSON created from either the JSON credentials created by the Google Cloud CLI or a Service account PROJECT_ID my_project_id ID to the google project ZONE_NAME jbloggs-google Zone name ZONE_DNS_NAME jbloggs.google.hcpapps.net DNS name LOG_LEVEL 1 Log level for the Controller

    Alternatively, to set defaults, add the above environment variables to your .zshrc or .bash_profile.

    "},{"location":"getting-started-single-cluster/#set-the-release-you-want-to-use","title":"Set the release you want to use","text":"
    export KUADRANT_REF=v0.10.0\nexport ISTIO_INSTALL_SAIL=true\n
    "},{"location":"getting-started-single-cluster/#set-up-a-kind-cluster-and-install-kuadrant","title":"Set Up a kind cluster and install Kuadrant","text":"

    Run the following:

    curl \"https://raw.githubusercontent.com/kuadrant/kuadrant-operator/${KUADRANT_REF}/hack/quickstart-setup.sh\" | bash\n
    This will setup a single kind cluster, install Istio and install Kuadrant. Once this completes you should be able to move on to using the various policy apis offered by Kuadrant.

    "},{"location":"getting-started-single-cluster/#clean-up","title":"Clean Up","text":"

    To ensure that any DNS records are removed, you should remove any DNSPolicy and TLSPolicy resources before deleting the local cluster.

    "},{"location":"getting-started-single-cluster/#whats-next","title":"What's Next","text":"

    The next step is to setup and use the policies provided by Kuadrant.

    Secure, Protect and Connect your Gateway

    "},{"location":"kuadrant-operator/","title":"Kuadrant Operator","text":"

    The Operator to install and manage the lifecycle of the Kuadrant components deployments.

    "},{"location":"kuadrant-operator/#overview","title":"Overview","text":"

    Kuadrant is a re-architecture of API Management using Cloud Native concepts and separating the components to be less coupled, more reusable and leverage the underlying kubernetes platform. It aims to deliver a smooth experience to providers and consumers of applications & services when it comes to rate limiting, authentication, authorization, discoverability, change management, usage contracts, insights, etc.

    Kuadrant aims to produce a set of loosely coupled functionalities built directly on top of Kubernetes. Furthermore, it only strives to provide what Kubernetes doesn\u2019t offer out of the box, i.e. Kuadrant won\u2019t be designing a new Gateway/proxy, instead it will opt to connect with what\u2019s there and what\u2019s being developed (think Envoy, Istio, GatewayAPI).

    Kuadrant is a system of cloud-native k8s components that grows as users\u2019 needs grow.

    • From simple protection of a Service (via AuthN) that is used by teammates working on the same cluster, or \u201csibling\u201d services, up to AuthZ of users using OIDC plus custom policies.
    • From no rate-limiting to rate-limiting for global service protection on to rate-limiting by users/plans
    "},{"location":"kuadrant-operator/#architecture","title":"Architecture","text":"

    Kuadrant relies on Istio and the Gateway API to operate the cluster (Istio's) ingress gateway to provide API management with authentication (authN), authorization (authZ) and rate limiting capabilities.

    "},{"location":"kuadrant-operator/#kuadrant-components","title":"Kuadrant components","text":"CRD Description Control Plane The control plane takes the customer desired configuration (declaratively as kubernetes custom resources) as input and ensures all components are configured to obey customer's desired behavior. This repository contains the source code of the kuadrant control plane Kuadrant Operator A Kubernetes Operator to manage the lifecycle of the kuadrant deployment Authorino The AuthN/AuthZ enforcer. As the external istio authorizer (envoy external authorization serving gRPC service) Limitador The external rate limiting service. It exposes a gRPC service implementing the Envoy Rate Limit protocol (v3) Authorino Operator A Kubernetes Operator to manage Authorino instances Limitador Operator A Kubernetes Operator to manage Limitador instances DNS Operator A Kubernetes Operator to manage DNS records in external providers"},{"location":"kuadrant-operator/#provided-apis","title":"Provided APIs","text":"

    The kuadrant control plane owns the following Custom Resource Definitions, CRDs:

    CRD Description Example AuthPolicy CRD [doc] [reference] Enable AuthN and AuthZ based access control on workloads AuthPolicy CR RateLimitPolicy CRD [doc] [reference] Enable access control on workloads based on HTTP rate limiting RateLimitPolicy CR DNSPolicy CRD [doc] [reference] Enable DNS management DNSPolicy CR TLSPolicy CRD [doc] [reference] Enable TLS management TLSPolicy CR

    Additionally, Kuadrant provides the following CRDs

    CRD Owner Description Example Kuadrant CRD Kuadrant Operator Represents an instance of kuadrant Kuadrant CR Limitador CRD Limitador Operator Represents an instance of Limitador Limitador CR Authorino CRD Authorino Operator Represents an instance of Authorino Authorino CR

    "},{"location":"kuadrant-operator/#getting-started","title":"Getting started","text":""},{"location":"kuadrant-operator/#pre-requisites","title":"Pre-requisites","text":"
    • Istio is installed in the cluster. Otherwise, refer to the Istio getting started guide.
    • Kubernetes Gateway API is installed in the cluster. Otherwise, configure Istio to expose a service using the Kubernetes Gateway API.
    • cert-manager is installed in the cluster. Otherwise, refer to the cert-manager installation guide.
    "},{"location":"kuadrant-operator/#installing-kuadrant","title":"Installing Kuadrant","text":"

    Installing Kuadrant is a two-step procedure. Firstly, install the Kuadrant Operator and secondly, request a Kuadrant instance by creating a Kuadrant custom resource.

    "},{"location":"kuadrant-operator/#1-install-the-kuadrant-operator","title":"1. Install the Kuadrant Operator","text":"

    The Kuadrant Operator is available in public community operator catalogs, such as the Kubernetes OperatorHub.io and the Openshift Container Platform and OKD OperatorHub.

    Kubernetes

    The operator is available from OperatorHub.io. Just go to the linked page and follow installation steps (or just run these two commands):

    # Install Operator Lifecycle Manager (OLM), a tool to help manage the operators running on your cluster.\n\ncurl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.23.1/install.sh | bash -s v0.23.1\n\n# Install the operator by running the following command:\n\nkubectl create -f https://operatorhub.io/install/kuadrant-operator.yaml\n

    Openshift

    The operator is available from the Openshift Console OperatorHub. Just follow installation steps choosing the \"Kuadrant Operator\" from the catalog:

    "},{"location":"kuadrant-operator/#2-request-a-kuadrant-instance","title":"2. Request a Kuadrant instance","text":"

    Create the namespace:

    kubectl create namespace kuadrant\n

    Apply the Kuadrant custom resource:

    kubectl -n kuadrant apply -f - <<EOF\n---\napiVersion: kuadrant.io/v1beta1\nkind: Kuadrant\nmetadata:\n  name: kuadrant-sample\nspec: {}\nEOF\n
    "},{"location":"kuadrant-operator/#protect-your-service","title":"Protect your service","text":""},{"location":"kuadrant-operator/#if-you-are-an-api-provider","title":"If you are an API Provider","text":"
    • Deploy the service/API to be protected (\"Upstream\")
    • Expose the service/API using the kubernetes Gateway API, ie HTTPRoute object.
    • Write and apply the Kuadrant's RateLimitPolicy and/or AuthPolicy custom resources targeting the HTTPRoute resource to have your API protected.
    "},{"location":"kuadrant-operator/#if-you-are-a-cluster-operator","title":"If you are a Cluster Operator","text":"
    • (Optionally) deploy istio ingress gateway using the Gateway resource.
    • Write and apply the Kuadrant's RateLimitPolicy and/or AuthPolicy custom resources targeting the Gateway resource to have your gateway traffic protected.
    "},{"location":"kuadrant-operator/#user-guides","title":"User guides","text":"

    The user guides section of the docs gathers several use-cases as well as the instructions to implement them using kuadrant.

    • Simple Rate Limiting for Application Developers
    • Authenticated Rate Limiting for Application Developers
    • Gateway Rate Limiting for Cluster Operators
    • Authenticated Rate Limiting with JWTs and Kubernetes RBAC
    "},{"location":"kuadrant-operator/#kuadrant-rate-limiting","title":"Kuadrant Rate Limiting","text":""},{"location":"kuadrant-operator/#documentation","title":"Documentation","text":"

    Docs can be found on the Kuadrant website.

    "},{"location":"kuadrant-operator/#contributing","title":"Contributing","text":"

    The Development guide describes how to build the kuadrant operator and how to test your changes before submitting a patch or opening a PR.

    Join us on the #kuadrant channel in the Kubernetes Slack workspace, for live discussions about the roadmap and more.

    "},{"location":"kuadrant-operator/#licensing","title":"Licensing","text":"

    This software is licensed under the Apache 2.0 license.

    See the LICENSE and NOTICE files that should have been provided along with this software for details.

    "},{"location":"kuadrant-operator/doc/auth/","title":"Kuadrant Auth","text":"

    A Kuadrant AuthPolicy custom resource:

    1. Targets Gateway API networking resources such as HTTPRoutes and Gateways, using these resources to obtain additional context, i.e., which traffic workload (HTTP attributes, hostnames, user attributes, etc) to enforce auth.
    2. Supports targeting subsets (sections) of a network resource to apply the auth rules to.
    3. Abstracts the details of the underlying external authorization protocol and configuration resources, that have a much broader remit and surface area.
    4. Enables cluster operators to set defaults that govern behavior at the lower levels of the network, until a more specific policy is applied.
    "},{"location":"kuadrant-operator/doc/auth/#how-it-works","title":"How it works","text":""},{"location":"kuadrant-operator/doc/auth/#envoys-external-authorization-protocol","title":"Envoy's External Authorization Protocol","text":"

    Kuadrant's Auth implementation relies on the Envoy's External Authorization protocol. The workflow per request goes:

    1. On incoming request, the gateway checks the matching rules for enforcing the auth rules, as stated in the AuthPolicy custom resources and targeted Gateway API networking objects
    2. If the request matches, the gateway sends one CheckRequest to the external auth service (\"Authorino\").
    3. The external auth service responds with a CheckResponse back to the gateway with either an OK or DENIED response code.

    An AuthPolicy and its targeted Gateway API networking resource contain all the statements to configure both the ingress gateway and the external auth service.

    "},{"location":"kuadrant-operator/doc/auth/#the-authpolicy-custom-resource","title":"The AuthPolicy custom resource","text":""},{"location":"kuadrant-operator/doc/auth/#overview","title":"Overview","text":"

    The AuthPolicy spec includes the following parts:

    • A reference to an existing Gateway API resource (spec.targetRef)
    • Authentication/authorization scheme (spec.rules)
    • Top-level route selectors (spec.routeSelectors)
    • Top-level additional conditions (spec.when)
    • List of named patterns (spec.patterns)

    The auth scheme specify rules for:

    • Authentication (spec.rules.authentication)
    • External auth metadata fetching (spec.rules.metadata)
    • Authorization (spec.rules.authorization)
    • Custom response items (spec.rules.response)
    • Callbacks (spec.rules.callbacks)

    Each auth rule can declare specific routeSelectors and when conditions for the rule to apply.

    The auth scheme (rules), as well as conditions and named patterns can be declared at the top-level level of the spec (with the semantics of defaults) or alternatively within explicit defaults or overrides blocks.

    "},{"location":"kuadrant-operator/doc/auth/#high-level-example-and-field-definition","title":"High-level example and field definition","text":"
    apiVersion: kuadrant.io/v1beta2\nkind: AuthPolicy\nmetadata:\n  name: my-auth-policy\nspec:\n  # Reference to an existing networking resource to attach the policy to. REQUIRED.\n  # It can be a Gateway API HTTPRoute or Gateway resource.\n  # It can only refer to objects in the same namespace as the AuthPolicy.\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute / Gateway\n    name: myroute / mygateway\n\n  # Selectors of HTTPRouteRules within the targeted HTTPRoute that activate the AuthPolicy.\n  # Each element contains a HTTPRouteMatch object that will be used to select HTTPRouteRules that include at least\n  # one identical HTTPRouteMatch.\n  # The HTTPRouteMatch part does not have to be fully identical, but the what's stated in the selector must be\n  # identically stated in the HTTPRouteRule.\n  # Do not use it on AuthPolicies that target a Gateway.\n  routeSelectors:\n\n  - matches:\n    - path:\n        type: PathPrefix\n        value: \"/admin\"\n\n  # Additional dynamic conditions to trigger the AuthPolicy.\n  # Use it for filtering attributes not supported by HTTPRouteRule or with AuthPolicies that target a Gateway.\n  # Check out https://github.com/Kuadrant/architecture/blob/main/rfcs/0002-well-known-attributes.md to learn more\n  # about the Well-known Attributes that can be used in this field.\n  # Equivalent to if otherwise declared within `defaults`.\n  when: [\u2026]\n\n  # Sets of common patterns of selector-operator-value triples, to be referred by name in `when` conditions\n  # and pattern-matching rules. Often employed to avoid repetition in the policy.\n  # Equivalent to if otherwise declared within `defaults`.\n  patterns: {\u2026}\n\n  # The auth rules to apply to the network traffic routed through the targeted resource.\n  # Equivalent to if otherwise declared within `defaults`.\n  rules:\n    # Authentication rules to enforce.\n    # At least one config must evaluate to a valid identity object for the auth request to be successful.\n    # If omitted or empty, anonymous access is assumed.\n    authentication:\n      \"my-authn-rule\":\n        # The authentication method of this rule.\n        # One-of: apiKey, jwt, oauth2Introspection, kubernetesTokenReview, x509, plain, anonymous.\n        apiKey: {\u2026}\n\n        # Where credentials are required to be passed in the request for authentication based on this rule.\n        # One-of: authorizationHeader, customHeader, queryString, cookie.\n        credentials:\n          authorizationHeader:\n            prefix: APIKEY\n\n        # Rule-level route selectors.\n        routeSelectors: [\u2026]\n\n        # Rule-level additional conditions.\n        when: [\u2026]\n\n        # Configs for caching the resolved object returned out of evaluating this auth rule.\n        cache: {\u2026}\n\n    # Rules for fetching auth metadata from external sources.\n    metadata:\n      \"my-external-source\":\n        # The method for fetching metadata from the external source.\n        # One-of: http: userInfo, uma.\n        http: {\u2026}\n\n    # Authorization rules to enforce.\n    # All policies must allow access for the auth request be successful.\n    authorization:\n      \"my-authz-rule\":\n        # The authorization method of this rule.\n        # One-of: patternMatching, opa, kubernetesSubjectAccessReview, spicedb.\n        opa: {\u2026}\n\n    # Customizations to the authorization response.\n    response:\n      # Custom denial status and other HTTP attributes for unauthenticated requests.\n      unauthenticated: {\u2026}\n\n      # Custom denial status and other HTTP attributes for unauhtorized requests.\n      unauthorized: {\u2026}\n\n      # Custom response items when access is granted.\n      success:\n        # Custom response items wrapped as HTTP headers to be injected in the request\n        headers:\n          \"my-custom-header\":\n            # One-of: plain, json, wristband.\n            plain: {\u2026}\n\n        # Custom response items wrapped as envoy dynamic metadata.\n        dynamicMetadata:\n          # One-of: plain, json, wristband.\n          \"my-custom-dyn-metadata\":\n            json: {\u2026}\n\n    # Rules for post-authorization callback requests to external services.\n    # Triggered regardless of the result of the authorization request.\n    callbacks:\n      \"my-webhook\":\n        http: {\u2026}\n\n    # Explicit defaults. Used in policies that target a Gateway object to express default rules to be enforced on\n    # routes that lack a more specific policy attached to.\n    # Mutually exclusive with `overrides` and with declaring the `rules`, `when` and `patterns` at the top-level of\n    # the spec.\n    defaults:\n      rules:\n        authentication: {\u2026}\n        metadata: {\u2026}\n        authorization: {\u2026}\n        response: {\u2026}\n        callbacks: {\u2026}\n      when: [\u2026]\n      patterns: {\u2026}\n\n    # Overrides. Used in policies that target a Gateway object to be enforced on all routes linked to the gateway,\n    # thus also overriding any more specific policy occasionally attached to any of those routes.\n    # Mutually exclusive with `defaults` and with declaring `rules`, `when` and `patterns` at the top-level of\n    # the spec.\n    overrides:\n      rules:\n        authentication: {\u2026}\n        metadata: {\u2026}\n        authorization: {\u2026}\n        response: {\u2026}\n        callbacks: {\u2026}\n      when: [\u2026]\n      patterns: {\u2026}\n

    Check out the API reference for a full specification of the AuthPolicy CRD.

    "},{"location":"kuadrant-operator/doc/auth/#using-the-authpolicy","title":"Using the AuthPolicy","text":""},{"location":"kuadrant-operator/doc/auth/#targeting-a-httproute-networking-resource","title":"Targeting a HTTPRoute networking resource","text":"

    When an AuthPolicy targets a HTTPRoute, the policy is enforced to all traffic routed according to the rules and hostnames specified in the HTTPRoute, across all Gateways referenced in the spec.parentRefs field of the HTTPRoute.

    The targeted HTTPRoute's rules and/or hostnames to which the policy must be enforced can be filtered to specific subsets, by specifying the routeSelectors field of the AuthPolicy spec.

    Target a HTTPRoute by setting the spec.targetRef field of the AuthPolicy as follows:

    apiVersion: kuadrant.io/v1beta2\nkind: AuthPolicy\nmetadata:\n  name: my-route-auth\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: <HTTPRoute Name>\n  rules: {\u2026}\n
    \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510             \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 (Infra namespace) \u2502             \u2502   (App namespace)  \u2502\n\u2502                   \u2502             \u2502                    \u2502\n\u2502  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510      \u2502  parentRefs \u2502  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510     \u2502\n\u2502  \u2502 Gateway \u2502\u25c4\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2524 HTTPRoute \u2502     \u2502\n\u2502  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518      \u2502             \u2502  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518     \u2502\n\u2502                   \u2502             \u2502        \u25b2           \u2502\n\u2502                   \u2502             \u2502        \u2502           \u2502\n\u2502                   \u2502             \u2502        \u2502           \u2502\n\u2502                   \u2502             \u2502        \u2502 targetRef \u2502\n\u2502                   \u2502             \u2502        \u2502           \u2502\n\u2502                   \u2502             \u2502  \u250c\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2510    \u2502\n\u2502                   \u2502             \u2502  \u2502 AuthPolicy \u2502    \u2502\n\u2502                   \u2502             \u2502  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518    \u2502\n\u2502                   \u2502             \u2502                    \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518             \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n
    "},{"location":"kuadrant-operator/doc/auth/#hostnames-and-wildcards","title":"Hostnames and wildcards","text":"

    If an AuthPolicy targets a route defined for *.com and another AuthPolicy targets another route for api.com, the Kuadrant control plane will not merge these two AuthPolicies. Rather, it will mimic the behavior of gateway implementation by which the \"most specific hostname wins\", thus enforcing only the corresponding applicable policies and auth rules.

    E.g., a request coming for api.com will be protected according to the rules from the AuthPolicy that targets the route for api.com; while a request for other.com will be protected with the rules from the AuthPolicy targeting the route for *.com.

    Example with 3 AuthPolicies and 3 HTTPRoutes:

    • AuthPolicy A \u2192 HTTPRoute A (a.toystore.com)
    • AuthPolicy B \u2192 HTTPRoute B (b.toystore.com)
    • AuthPolicy W \u2192 HTTPRoute W (*.toystore.com)

    Expected behavior:

    • Request to a.toystore.com \u2192 AuthPolicy A will be enforced
    • Request to b.toystore.com \u2192 AuthPolicy B will be enforced
    • Request to other.toystore.com \u2192 AuthPolicy W will be enforced
    "},{"location":"kuadrant-operator/doc/auth/#targeting-a-gateway-networking-resource","title":"Targeting a Gateway networking resource","text":"

    An AuthPolicy that targets a Gateway can declare a block of defaults (spec.defaults) or a block of overrides (spec.overrides). As a standard, gateway policies that do not specify neither defaults nor overrides, act as defaults.

    When declaring defaults, an AuthPolicy which targets a Gateway will be enforced to all HTTP traffic hitting the gateway, unless a more specific AuthPolicy targeting a matching HTTPRoute exists. Any new HTTPRoute referrencing the gateway as parent will be automatically covered by the default AuthPolicy, as well as changes in the existing HTTPRoutes.

    Defaults provide cluster operators with the ability to protect the infrastructure against unplanned and malicious network traffic attempt, such as by setting preemptive \"deny-all\" policies on hostnames and hostname wildcards.

    Inversely, a gateway policy that specify overrides declares a set of rules to be enforced on all routes attached to the gateway, thus atomically replacing any more specific policy occasionally attached to any of those routes.

    Target a Gateway HTTPRoute by setting the spec.targetRef field of the AuthPolicy as follows:

    apiVersion: kuadrant.io/v1beta2\nkind: AuthPolicy\nmetadata:\n  name: my-gw-auth\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: Gateway\n    name: <Gateway Name>\n  defaults: # alternatively: `overrides`\n    rules: {\u2026}\n
    \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510             \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 (Infra namespace) \u2502             \u2502   (App namespace)  \u2502\n\u2502                   \u2502             \u2502                    \u2502\n\u2502  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510      \u2502  parentRefs \u2502  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510     \u2502\n\u2502  \u2502 Gateway \u2502\u25c4\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2524 HTTPRoute \u2502     \u2502\n\u2502  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518      \u2502             \u2502  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518     \u2502\n\u2502       \u25b2           \u2502             \u2502        \u25b2           \u2502\n\u2502       \u2502           \u2502             \u2502        \u2502           \u2502\n\u2502       \u2502           \u2502             \u2502        \u2502           \u2502\n\u2502       \u2502 targetRef \u2502             \u2502        \u2502 targetRef \u2502\n\u2502       \u2502           \u2502             \u2502        \u2502           \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2510    \u2502             \u2502  \u250c\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2510    \u2502\n\u2502 \u2502 AuthPolicy \u2502    \u2502             \u2502  \u2502 AuthPolicy \u2502    \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518    \u2502             \u2502  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518    \u2502\n\u2502                   \u2502             \u2502                    \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518             \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n
    "},{"location":"kuadrant-operator/doc/auth/#overlapping-gateway-and-httproute-authpolicies","title":"Overlapping Gateway and HTTPRoute AuthPolicies","text":"

    Two possible semantics are to be considered here \u2013 gateway policy defaults vs gateway policy overrides.

    Gateway AuthPolicies that declare defaults (or alternatively neither defaults nor overrides) protect all traffic routed through the gateway except where a more specific HTTPRoute AuthPolicy exists, in which case the HTTPRoute AuthPolicy prevails.

    Example with 4 AuthPolicies, 3 HTTPRoutes and 1 Gateway default (plus 2 HTTPRoute and 2 Gateways without AuthPolicies attached):

    • AuthPolicy A \u2192 HTTPRoute A (a.toystore.com) \u2192 Gateway G (*.com)
    • AuthPolicy B \u2192 HTTPRoute B (b.toystore.com) \u2192 Gateway G (*.com)
    • AuthPolicy W \u2192 HTTPRoute W (*.toystore.com) \u2192 Gateway G (*.com)
    • AuthPolicy G (defaults) \u2192 Gateway G (*.com)

    Expected behavior:

    • Request to a.toystore.com \u2192 AuthPolicy A will be enforced
    • Request to b.toystore.com \u2192 AuthPolicy B will be enforced
    • Request to other.toystore.com \u2192 AuthPolicy W will be enforced
    • Request to other.com (suppose a route exists) \u2192 AuthPolicy G will be enforced
    • Request to yet-another.net (suppose a route and gateway exist) \u2192 No AuthPolicy will be enforced

    Gateway AuthPolicies that declare overrides protect all traffic routed through the gateway, regardless of existence of any more specific HTTPRoute AuthPolicy.

    Example with 4 AuthPolicies, 3 HTTPRoutes and 1 Gateway override (plus 2 HTTPRoute and 2 Gateways without AuthPolicies attached):

    • AuthPolicy A \u2192 HTTPRoute A (a.toystore.com) \u2192 Gateway G (*.com)
    • AuthPolicy B \u2192 HTTPRoute B (b.toystore.com) \u2192 Gateway G (*.com)
    • AuthPolicy W \u2192 HTTPRoute W (*.toystore.com) \u2192 Gateway G (*.com)
    • AuthPolicy G (overrides) \u2192 Gateway G (*.com)

    Expected behavior:

    • Request to a.toystore.com \u2192 AuthPolicy G will be enforced
    • Request to b.toystore.com \u2192 AuthPolicy G will be enforced
    • Request to other.toystore.com \u2192 AuthPolicy G will be enforced
    • Request to other.com (suppose a route exists) \u2192 AuthPolicy G will be enforced
    • Request to yet-another.net (suppose a route and gateway exist) \u2192 No AuthPolicy will be enforced
    "},{"location":"kuadrant-operator/doc/auth/#route-selectors","title":"Route selectors","text":"

    Route selectors allow targeting sections of a HTTPRoute, by specifying sets of HTTPRouteMatches and/or hostnames that make the policy controller look up within the HTTPRoute spec for compatible declarations, and select the corresponding HTTPRouteRules and hostnames, to then build conditions that activate the policy or policy rule.

    Check out Route selectors for a full description, semantics and API reference.

    "},{"location":"kuadrant-operator/doc/auth/#when-conditions","title":"when conditions","text":"

    when conditions can be used to scope an AuthPolicy or auth rule within an AuthPolicy (i.e. to filter the traffic to which a policy or policy rule applies) without any coupling to the underlying network topology, i.e. without making direct references to HTTPRouteRules via routeSelectors.

    Use when conditions to conditionally activate policies and policy rules based on attributes that cannot be expressed in the HTTPRoutes' spec.hostnames and spec.rules.matches fields, or in general in AuthPolicies that target a Gateway.

    when conditions in an AuthPolicy are compatible with Authorino conditions, thus supporting complex boolean expressions with AND and OR operators, as well as grouping.

    The selectors within the when conditions of an AuthPolicy are a subset of Kuadrant's Well-known Attributes (RFC 0002). Check out the reference for the full list of supported selectors.

    Authorino JSON path string modifiers can also be applied to the selectors within the when conditions of an AuthPolicy.

    "},{"location":"kuadrant-operator/doc/auth/#examples","title":"Examples","text":"

    Check out the following user guides for examples of protecting services with Kuadrant:

    • Enforcing authentication & authorization with Kuadrant AuthPolicy, for app developers and platform engineers
    • Authenticated Rate Limiting for Application Developers
    • Authenticated Rate Limiting with JWTs and Kubernetes RBAC
    "},{"location":"kuadrant-operator/doc/auth/#known-limitations","title":"Known limitations","text":"
    • One HTTPRoute can only be targeted by one AuthPolicy.
    • One Gateway can only be targeted by one AuthPolicy.
    • AuthPolicies can only target HTTPRoutes/Gateways defined within the same namespace of the AuthPolicy.
    • 2+ AuthPolicies cannot target network resources that define/inherit the same exact hostname.
    "},{"location":"kuadrant-operator/doc/auth/#limitation-multiple-network-resources-with-identical-hostnames","title":"Limitation: Multiple network resources with identical hostnames","text":"

    Kuadrant currently does not support multiple AuthPolicies simultaneously targeting network resources that declare identical hostnames. This includes multiple HTTPRoutes that specify the same hostnames in the spec.hostnames field, as well as HTTPRoutes that specify a hostname that is identical to a hostname specified in a listener of one of the route's parent gateways or HTTPRoutes that don't specify any hostname at all thus inheriting the hostnames from the parent gateways. In any of these cases, a maximum of one AuthPolicy targeting any of those resources that specify identical hostnames is allowed.

    Moreover, having multiple resources that declare identical hostnames may lead to unexpected behavior and therefore should be avoided.

    This limitation is rooted at the underlying components configured by Kuadrant for the implementation of its policies and the lack of information in the data plane regarding the exact route that is honored by the API gateway at each specific request, in cases of conflicting hostnames.

    To exemplify one way this limitation can impact deployments, consider the following topology:

                     \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n                 \u2502   Gateway    \u2502\n                 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n          \u250c\u2500\u2500\u2500\u2500\u2500\u25ba\u2502 listeners:   \u2502\u25c4\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n          \u2502      \u2502 - host: *.io \u2502       \u2502\n          \u2502      \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518       \u2502\n          \u2502                             \u2502\n          \u2502                             \u2502\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510        \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502     HTTPRoute     \u2502        \u2502     HTTPRoute     \u2502\n\u2502     (route-a)     \u2502        \u2502     (route-b)     \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524        \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 hostnames:        \u2502        \u2502 hostnames:        \u2502\n\u2502 - app.io          \u2502        \u2502 - app.io          \u2502\n\u2502 rules:            \u2502        \u2502 rules:            \u2502\n\u2502 - matches:        \u2502        \u2502 - matches:        \u2502\n\u2502   - path:         \u2502        \u2502   - path:         \u2502\n\u2502       value: /foo \u2502        \u2502       value: /bar \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518        \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n          \u25b2                            \u25b2\n          \u2502                            \u2502\n    \u250c\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2510               \u250c\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n    \u2502 AuthPolicy \u2502               \u2502 AuthPolicy \u2502\n    \u2502 (policy-1) \u2502               \u2502 (policy-2) \u2502\n    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518               \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n

    In the example above, with the policy-1 resource created before policy-2, policy-1 will be enforced on all requests to app.io/foo while policy-2 will be rejected. I.e. app.io/bar will not be secured. In fact, the status conditions of policy-2 shall reflect Enforced=false with message \"AuthPolicy has encountered some issues: AuthScheme is not ready yet\".

    Notice the enforcement of policy-1 and no enforcement of policy-2 is the opposite behavior as the analogous problem with the Kuadrant RateLimitPolicy.

    A slightly different way the limitation applies is when two or more routes of a gateway declare the exact same hostname and a gateway policy is defined with expectation to set default rules for the cases not covered by more specific policies. E.g.:

                                        \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n                         \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 AuthPolicy \u2502\n                         \u2502          \u2502 (policy-2) \u2502\n                         \u25bc          \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n                 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n                 \u2502   Gateway    \u2502\n                 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n          \u250c\u2500\u2500\u2500\u2500\u2500\u25ba\u2502 listeners:   \u2502\u25c4\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n          \u2502      \u2502 - host: *.io \u2502       \u2502\n          \u2502      \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518       \u2502\n          \u2502                             \u2502\n          \u2502                             \u2502\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510        \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502     HTTPRoute     \u2502        \u2502     HTTPRoute     \u2502\n\u2502     (route-a)     \u2502        \u2502     (route-b)     \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524        \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 hostnames:        \u2502        \u2502 hostnames:        \u2502\n\u2502 - app.io          \u2502        \u2502 - app.io          \u2502\n\u2502 rules:            \u2502        \u2502 rules:            \u2502\n\u2502 - matches:        \u2502        \u2502 - matches:        \u2502\n\u2502   - path:         \u2502        \u2502   - path:         \u2502\n\u2502       value: /foo \u2502        \u2502       value: /bar \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518        \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n          \u25b2\n          \u2502\n    \u250c\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n    \u2502 AuthPolicy \u2502\n    \u2502 (policy-1) \u2502\n    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n

    Once again, requests to app.io/foo will be protected under AuthPolicy policy-1, while requests to app.io/bar will not be protected under any policy at all, unlike expected gateway policy policy-2 enforced as default. Both policies will report status condition as Enforced nonetheless.

    To avoid these problems, use different hostnames in each route.

    "},{"location":"kuadrant-operator/doc/auth/#implementation-details","title":"Implementation details","text":"

    Under the hood, for each AuthPolicy, Kuadrant creates an Istio AuthorizationPolicy and an Authorino AuthConfig custom resources.

    Only requests that matches the rules in the Istio AuthorizationPolicy cause an authorization request to be sent to the external authorization service (\"Authorino\"), i.e., only requests directed to the HTTPRouteRules targeted by the AuthPolicy (directly or indirectly), according to the declared top-level route selectors (if present), or all requests for which a matching HTTPRouteRule exists (otherwise).

    Authorino looks up for the auth scheme (AuthConfig custom resource) to enforce using the provided hostname of the original request as key. It then checks again if the request matches at least one of the selected HTTPRouteRules, in which case it enforces the auth scheme.

    Exception to the rule Due to limitations imposed by the Istio `AuthorizationPolicy`, there are a few patterns of HTTPRouteRules that cannot be translated to filters for the external authorization request. Therefore, the following patterns used in HTTPRouteMatches of top-level route selectors of an AuthPolicy will not be included in the Istio AuthorizationPolicy rules that trigger the check request with Authorino: `PathMatchRegularExpression`, `HeaderMatchRegularExpression`, and `HTTPQueryParamMatch`. As a consequence to the above, requests that do not match these rules and otherwise would not be checked with Authorino will result in a request to the external authorization service. Authorino nonetheless will still verify those patterns and ensure the auth scheme is enforced only when it matches a selected HTTPRouteRule. Users of Kuadrant may observe an unnecessary call to the authorization service in those cases where the request is out of the scope of the AuthPolicy and therefore always authorized."},{"location":"kuadrant-operator/doc/auth/#internal-custom-resources-and-namespaces","title":"Internal custom resources and namespaces","text":"

    While the Istio AuthorizationPolicy needs to be created in the same namespace as the gateway workload, the Authorino AuthConfig is created in the namespace of the AuthPolicy itself. This allows to simplify references such as to Kubernetes Secrets referred in the AuthPolicy, as well as the RBAC to support the architecture.

    "},{"location":"kuadrant-operator/doc/development/","title":"Development Guide","text":""},{"location":"kuadrant-operator/doc/development/#technology-stack-required-for-development","title":"Technology stack required for development","text":"
    • operator-sdk version v1.32.0
    • kind version v0.23.0
    • git
    • go version 1.22+
    • kubernetes version v1.19+
    • kubectl version v1.19+
    "},{"location":"kuadrant-operator/doc/development/#build","title":"Build","text":"
    make build\n
    "},{"location":"kuadrant-operator/doc/development/#deploy-on-local-kubernetes-cluster","title":"Deploy on local kubernetes cluster","text":"

    Run local Kubernetes cluster using Docker container using Kind and deploy kuadrant operator (and all dependencies) in a single command.

    make local-setup\n

    The make local-setup target accepts the following variables:

    Makefile Variable Description Default value GATEWAYAPI_PROVIDER GatewayAPI provider name. Accepted values: [istio] istio"},{"location":"kuadrant-operator/doc/development/#run-as-a-local-process","title":"Run as a local process","text":"

    Run local Kubernetes cluster using Docker container using Kind and deploy all dependencies in a single command.

    make local-env-setup\n

    The make local-env-setup target accepts the following variables:

    Makefile Variable Description Default value GATEWAYAPI_PROVIDER GatewayAPI provider name. Accepted values: [istio] istio

    Then, run the operator locally

    make run\n
    "},{"location":"kuadrant-operator/doc/development/#deploy-on-existing-kubernetes-cluster","title":"Deploy on existing kubernetes cluster","text":"

    Requirements:

    • Active session open to the kubernetes cluster.
    • GatewayAPI installed
    • GatewayAPI provider installed. Currently only Istio supported.
    • Cert Manager installed

    Before running the kuadrant operator, some dependencies needs to be deployed.

    make install\nmake deploy-dependencies\n

    Then, deploy the operator

    make deploy\n
    "},{"location":"kuadrant-operator/doc/development/#deploy-kuadrant-operator-using-olm","title":"Deploy kuadrant operator using OLM","text":"

    You can deploy kuadrant using OLM just running few commands. No need to build any image. Kuadrant engineering team provides latest and release version tagged images. They are available in the Quay.io/Kuadrant image repository.

    Create kind cluster

    make kind-create-cluster\n

    Deploy OLM system

    make install-olm\n

    Deploy kuadrant using OLM. The make deploy-catalog target accepts the following variables:

    Makefile Variable Description Default value CATALOG_IMG Kuadrant operator catalog image URL quay.io/kuadrant/kuadrant-operator-catalog:latest
    make deploy-catalog [CATALOG_IMG=quay.io/kuadrant/kuadrant-operator-catalog:latest]\n
    "},{"location":"kuadrant-operator/doc/development/#build-custom-olm-catalog","title":"Build custom OLM catalog","text":"

    If you want to deploy (using OLM) a custom kuadrant operator, you need to build your own catalog. Furthermore, if you want to deploy a custom limitador or authorino operator, you also need to build your own catalog. The kuadrant operator bundle includes the authorino or limtador operator dependency version, hence using other than latest version requires a custom kuadrant operator bundle and a custom catalog including the custom bundle.

    "},{"location":"kuadrant-operator/doc/development/#build-kuadrant-operator-bundle-image","title":"Build kuadrant operator bundle image","text":"

    The make bundle target accepts the following variables:

    Makefile Variable Description Default value Notes IMG Kuadrant operator image URL quay.io/kuadrant/kuadrant-operator:latest TAG var could be use to build this URL, defaults to latest if not provided VERSION Bundle version 0.0.0 LIMITADOR_OPERATOR_BUNDLE_IMG Limitador operator bundle URL quay.io/kuadrant/limitador-operator-bundle:latest LIMITADOR_OPERATOR_VERSION var could be used to build this, defaults to latest if not provided AUTHORINO_OPERATOR_BUNDLE_IMG Authorino operator bundle URL quay.io/kuadrant/authorino-operator-bundle:latest AUTHORINO_OPERATOR_VERSION var could be used to build this, defaults to latest if not provided DNS_OPERATOR_BUNDLE_IMG DNS operator bundle URL quay.io/kuadrant/dns-operator-bundle:latest DNS_OPERATOR_BUNDLE_IMG var could be used to build this, defaults to latest if not provided RELATED_IMAGE_WASMSHIM WASM shim image URL oci://quay.io/kuadrant/wasm-shim:latest WASM_SHIM_VERSION var could be used to build this, defaults to latest if not provided
    • Build the bundle manifests
    make bundle [IMG=quay.io/kuadrant/kuadrant-operator:latest] \\\n            [VERSION=0.0.0] \\\n            [LIMITADOR_OPERATOR_BUNDLE_IMG=quay.io/kuadrant/limitador-operator-bundle:latest] \\\n            [AUTHORINO_OPERATOR_BUNDLE_IMG=quay.io/kuadrant/authorino-operator-bundle:latest] \\\n            [DNS_OPERATOR_BUNDLE_IMG=quay.io/kuadrant/dns-operator-bundle:latest] \\\n            [RELATED_IMAGE_WASMSHIM=oci://quay.io/kuadrant/wasm-shim:latest]\n
    • Build the bundle image from the manifests
    Makefile Variable Description Default value BUNDLE_IMG Kuadrant operator bundle image URL quay.io/kuadrant/kuadrant-operator-bundle:latest
    make bundle-build [BUNDLE_IMG=quay.io/kuadrant/kuadrant-operator-bundle:latest]\n
    • Push the bundle image to a registry
    Makefile Variable Description Default value BUNDLE_IMG Kuadrant operator bundle image URL quay.io/kuadrant/kuadrant-operator-bundle:latest
    make bundle-push [BUNDLE_IMG=quay.io/kuadrant/kuadrant-operator-bundle:latest]\n

    Frequently, you may need to build custom kuadrant bundle with the default (latest) Limitador and Authorino bundles. These are the example commands to build the manifests, build the bundle image and push to the registry.

    In the example, a new kuadrant operator bundle version 0.8.0 will be created that references the kuadrant operator image quay.io/kuadrant/kuadrant-operator:v0.5.0 and latest Limitador and Authorino bundles.

    # manifests\nmake bundle IMG=quay.io/kuadrant/kuadrant-operator:v0.5.0 VERSION=0.8.0\n\n# bundle image\nmake bundle-build BUNDLE_IMG=quay.io/kuadrant/kuadrant-operator-bundle:my-bundle\n\n# push bundle image\nmake bundle-push BUNDLE_IMG=quay.io/kuadrant/kuadrant-operator-bundle:my-bundle\n
    "},{"location":"kuadrant-operator/doc/development/#build-custom-catalog","title":"Build custom catalog","text":"

    The catalog's format will be File-based Catalog.

    Make sure all the required bundles are pushed to the registry. It is required by the opm tool.

    The make catalog target accepts the following variables:

    Makefile Variable Description Default value BUNDLE_IMG Kuadrant operator bundle image URL quay.io/kuadrant/kuadrant-operator-bundle:latest LIMITADOR_OPERATOR_BUNDLE_IMG Limitador operator bundle URL quay.io/kuadrant/limitador-operator-bundle:latest AUTHORINO_OPERATOR_BUNDLE_IMG Authorino operator bundle URL quay.io/kuadrant/authorino-operator-bundle:latest DNS_OPERATOR_BUNDLE_IMG DNS operator bundle URL quay.io/kuadrant/dns-operator-bundle:latest
    make catalog [BUNDLE_IMG=quay.io/kuadrant/kuadrant-operator-bundle:latest] \\\n            [LIMITADOR_OPERATOR_BUNDLE_IMG=quay.io/kuadrant/limitador-operator-bundle:latest] \\\n            [AUTHORINO_OPERATOR_BUNDLE_IMG=quay.io/kuadrant/authorino-operator-bundle:latest] \\\n            [DNS_OPERATOR_BUNDLE_IMG=quay.io/kuadrant/dns-operator-bundle:latest]\n
    • Build the catalog image from the manifests
    Makefile Variable Description Default value CATALOG_IMG Kuadrant operator catalog image URL quay.io/kuadrant/kuadrant-operator-catalog:latest
    make catalog-build [CATALOG_IMG=quay.io/kuadrant/kuadrant-operator-catalog:latest]\n
    • Push the catalog image to a registry
    make catalog-push [CATALOG_IMG=quay.io/kuadrant/kuadrant-operator-bundle:latest]\n

    You can try out your custom catalog image following the steps of the Deploy kuadrant operator using OLM section.

    "},{"location":"kuadrant-operator/doc/development/#cleaning-up","title":"Cleaning up","text":"
    make local-cleanup\n
    "},{"location":"kuadrant-operator/doc/development/#run-tests","title":"Run tests","text":""},{"location":"kuadrant-operator/doc/development/#unittests","title":"Unittests","text":"
    make test-unit\n

    Optionally, add TEST_NAME makefile variable to run specific test

    make test-unit TEST_NAME=TestLimitIndexEquals\n

    or even subtest

    make test-unit TEST_NAME=TestLimitIndexEquals/empty_indexes_are_equal\n
    "},{"location":"kuadrant-operator/doc/development/#integration-tests","title":"Integration tests","text":"

    Multiple controller integration tests are defined

    Golang package Required environment Makefile env setup target Makefile test run target github.com/kuadrant/kuadrant-operator/tests/bare_k8s no gateway provider, no GatewayAPI CRDs. Just Kuadrant API and Kuadrant dependencies. make local-k8s-env-setup make test-bare-k8s-integration github.com/kuadrant/kuadrant-operator/tests/gatewayapi no gateway provider. GatewayAPI CRDs, Kuadrant API and Kuadrant dependencies. make local-gatewayapi-env-setup make test-gatewayapi-env-integration github.com/kuadrant/kuadrant-operator/controllers at least one gatewayapi provider. It can be any: istio, envoygateway, ... make local-env-setup GATEWAYAPI_PROVIDER=[istio] (Default istio) make test-integration github.com/kuadrant/kuadrant-operator/tests/istio GatewayAPI CRDs, Istio, Kuadrant API and Kuadrant dependencies. make local-env-setup GATEWAYAPI_PROVIDER=istio make test-istio-env-integration"},{"location":"kuadrant-operator/doc/development/#lint-tests","title":"Lint tests","text":"
    make run-lint\n
    "},{"location":"kuadrant-operator/doc/development/#uninstall-kuadrant-crds","title":"(Un)Install Kuadrant CRDs","text":"

    You need an active session open to a kubernetes cluster.

    Remove CRDs

    make uninstall\n
    "},{"location":"kuadrant-operator/doc/dns/","title":"Kuadrant DNS","text":"

    A Kuadrant DNSPolicy custom resource:

    1. Targets Gateway API networking resources Gateways to provide dns management by managing the lifecycle of dns records in external dns providers such as AWS Route53 and Google DNS.
    "},{"location":"kuadrant-operator/doc/dns/#how-it-works","title":"How it works","text":"

    A DNSPolicy and its targeted Gateway API networking resource contain all the statements to configure both the ingress gateway and the external DNS service. The needed dns names are gathered from the listener definitions and the IPAdresses | CNAME hosts are gathered from the status block of the gateway resource.

    "},{"location":"kuadrant-operator/doc/dns/#the-dnspolicy-custom-resource","title":"The DNSPolicy custom resource","text":""},{"location":"kuadrant-operator/doc/dns/#overview","title":"Overview","text":"

    The DNSPolicy spec includes the following parts:

    • A reference to an existing Gateway API resource (spec.targetRef)
    • DNS Routing Strategy (spec.routingStrategy)
    • LoadBalancing specification (spec.loadBalancing)
    • HealthCheck specification (spec.healthCheck)
    "},{"location":"kuadrant-operator/doc/dns/#high-level-example-and-field-definition","title":"High-level example and field definition","text":"
    apiVersion: kuadrant.io/v1alpha1\nkind: DNSPolicy\nmetadata:\n  name: my-dns-policy\nspec:\n  # reference to an existing networking resource to attach the policy to\n  # it can only be a Gateway API Gateway resource\n  # it can only refer to objects in the same namespace as the DNSPolicy\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: Gateway\n    name: mygateway\n\n # reference to an existing secret resource containing provider credentials and configuration\n # it can only refer to Secrets in the same namespace as the DNSPolicy that have the type kuadrant.io/(provider) e.g kuadrant.io/aws\n  providerRefs:\n\n   - name: my-aws-credentials\n\n  # (optional) routing strategy to use when creating DNS records, defaults to `loadbalanced`\n  # determines what DNS records are created in the DNS provider\n  # check out Kuadrant RFC 0005 https://github.com/Kuadrant/architecture/blob/main/rfcs/0005-single-cluster-dnspolicy.md to learn more about the Routing Strategy field\n  # One-of: simple, loadbalanced.\n  routingStrategy: loadbalanced\n\n  # (optional) loadbalancing specification\n  # use it for providing the specification of how dns will be configured in order to provide balancing of load across multiple clusters when using the `loadbalanced` routing strategy\n  # Primary use of this is for multi cluster deployments\n  # check out Kuadrant RFC 0003 https://github.com/Kuadrant/architecture/blob/main/rfcs/0003-dns-policy.md to learn more about the options that can be used in this field\n  loadBalancing:\n    # (optional) weighted specification\n    # use it to control the weight value applied to records\n    weighted:\n      # use it to change the weight of a record based on labels applied to the target meta resource i.e. Gateway in a single cluster context or ManagedCluster in multi cluster with OCM\n      custom:\n\n        - weight: 200\n          selector:\n            matchLabels:\n              kuadrant.io/lb-attribute-custom-weight: AWS\n      # (optional) weight value that will be applied to weighted dns records by default. Integer greater than 0 and no larger than the maximum value accepted by the target dns provider, defaults to `120` \n      defaultWeight: 100\n    # (optional) geo specification\n    # use it to control the geo value applied to records \n    geo:\n      # (optional) default geo to be applied to records \n      defaultGeo: IE\n\n  # (optional) health check specification\n  # health check probes with the following specification will be created for each DNS target\n  healthCheck:\n    allowInsecureCertificates: true\n    endpoint: /\n    expectedResponses:\n\n      - 200\n      - 201\n      - 301\n    failureThreshold: 5\n    port: 443\n    protocol: https\n

    Check out the API reference for a full specification of the DNSPolicy CRD.

    "},{"location":"kuadrant-operator/doc/dns/#using-the-dnspolicy","title":"Using the DNSPolicy","text":""},{"location":"kuadrant-operator/doc/dns/#dns-provider-setup","title":"DNS Provider Setup","text":"

    A DNSPolicy acts against a target Gateway by processing its listeners for hostnames that it can create dns records for. In order for it to do this, it must know about the dns provider. This is done through the creation of dns provider secrets containing the credentials and configuration for the dns provider account.

    If for example a Gateway is created with a listener with a hostname of echo.apps.hcpapps.net:

    apiVersion: gateway.networking.k8s.io/v1\nkind: Gateway\nmetadata:\n  name: my-gw\nspec:\n  listeners:\n\n    - allowedRoutes:\n        namespaces:\n          from: All\n      name: api\n      hostname: echo.apps.hcpapps.net\n      port: 80\n      protocol: HTTP\n

    In order for the DNSPolicy to act upon that listener, a DNS provider Secret must exist for that hostnames' domain.

    apiVersion: v1\nkind: Secret\nmetadata:\n  name: my-aws-credentials\n  namespace: <Gateway Namespace>\ndata:\n  AWS_ACCESS_KEY_ID: <AWS_ACCESS_KEY_ID>\n  AWS_REGION: <AWS_REGION>\n  AWS_SECRET_ACCESS_KEY: <AWS_SECRET_ACCESS_KEY>\ntype: kuadrant.io/aws\n

    By default, Kuadrant will list the available zones and find the matching zone based on the listener host in the gateway listener. If it finds more than one matching zone for a given listener host, it will not update any of those zones. When providing a credential you should limit that credential down to just have write access to the zones you want Kuadrant to manage. Below is an example of a an AWS policy for doing this type of thing:

    {\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Sid\": \"VisualEditor0\",\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"route53:ListTagsForResources\",\n                \"route53:GetHealthCheckLastFailureReason\",\n                \"route53:GetHealthCheckStatus\",\n                \"route53:GetChange\",\n                \"route53:GetHostedZone\",\n                \"route53:ChangeResourceRecordSets\",\n                \"route53:ListResourceRecordSets\",\n                \"route53:GetHealthCheck\",\n                \"route53:UpdateHostedZoneComment\",\n                \"route53:UpdateHealthCheck\",\n                \"route53:CreateHealthCheck\",\n                \"route53:DeleteHealthCheck\",\n                \"route53:ListTagsForResource\",\n                \"route53:ListHealthChecks\",\n                \"route53:GetGeoLocation\",\n                \"route53:ListGeoLocations\",\n                \"route53:ListHostedZonesByName\",\n                \"route53:GetHealthCheckCount\"\n            ],\n            \"Resource\": [\n                \"arn:aws:route53:::hostedzone/Z08187901Y93585DDGM6K\",\n                \"arn:aws:route53:::healthcheck/*\",\n                \"arn:aws:route53:::change/*\"\n            ]\n        },\n        {\n            \"Sid\": \"VisualEditor1\",\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"route53:ListHostedZones\"\n            ],\n            \"Resource\": \"*\"\n        }\n    ]\n}\n
    "},{"location":"kuadrant-operator/doc/dns/#targeting-a-gateway-networking-resource","title":"Targeting a Gateway networking resource","text":"

    When a DNSPolicy targets a Gateway, the policy will be enforced on all gateway listeners.

    Target a Gateway by setting the spec.targetRef field of the DNSPolicy as follows:

    apiVersion: kuadrant.io/v1beta2\nkind: DNSPolicy\nmetadata:\n  name: <DNSPolicy name>\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: Gateway\n    name: <Gateway Name>\n
    "},{"location":"kuadrant-operator/doc/dns/#dnsrecord-resource","title":"DNSRecord Resource","text":"

    The DNSPolicy will create a DNSRecord resource for each listener hostname. The DNSPolicy resource uses the status of the Gateway to determine what dns records need to be created based on the clusters it has been placed onto.

    Given the following multi cluster gateway status:

    status:\n  addresses:\n\n    - type: kuadrant.io/MultiClusterIPAddress\n      value: kind-mgc-workload-1/172.31.201.1\n    - type: kuadrant.io/MultiClusterIPAddress\n      value: kind-mgc-workload-2/172.31.202.1\n  listeners:\n    - attachedRoutes: 1\n      conditions: []\n      name: kind-mgc-workload-1.api\n      supportedKinds: []\n    - attachedRoutes: 1\n      conditions: []\n      name: kind-mgc-workload-2.api\n      supportedKinds: []        \n

    A DNSPolicy targeting this gateway would create an appropriate DNSRecord based on the routing strategy selected.

    "},{"location":"kuadrant-operator/doc/dns/#loadbalanced","title":"loadbalanced","text":"
    apiVersion: kuadrant.io/v1alpha1\nkind: DNSRecord\nmetadata:\n  name: echo.apps.hcpapps.net\n  namespace: <Gateway Namespace>\nspec:\n  endpoints:\n\n    - dnsName: 24osuu.lb-2903yb.echo.apps.hcpapps.net\n      recordTTL: 60\n      recordType: A\n      targets:\n        - 172.31.202.1\n    - dnsName: default.lb-2903yb.echo.apps.hcpapps.net\n      providerSpecific:\n        - name: weight\n          value: \"120\"\n      recordTTL: 60\n      recordType: CNAME\n      setIdentifier: 24osuu.lb-2903yb.echo.apps.hcpapps.net\n      targets:\n        - 24osuu.lb-2903yb.echo.apps.hcpapps.net\n    - dnsName: default.lb-2903yb.echo.apps.hcpapps.net\n      providerSpecific:\n        - name: weight\n          value: \"120\"\n      recordTTL: 60\n      recordType: CNAME\n      setIdentifier: lrnse3.lb-2903yb.echo.apps.hcpapps.net\n      targets:\n        - lrnse3.lb-2903yb.echo.apps.hcpapps.net\n    - dnsName: echo.apps.hcpapps.net\n      recordTTL: 300\n      recordType: CNAME\n      targets:\n        - lb-2903yb.echo.apps.hcpapps.net\n    - dnsName: lb-2903yb.echo.apps.hcpapps.net\n      providerSpecific:\n        - name: geo-country-code\n          value: '*'\n      recordTTL: 300\n      recordType: CNAME\n      setIdentifier: default\n      targets:\n        - default.lb-2903yb.echo.apps.hcpapps.net\n    - dnsName: lrnse3.lb-2903yb.echo.apps.hcpapps.net\n      recordTTL: 60\n      recordType: A\n      targets:\n        - 172.31.201.1\n  providerRefs:\n    - name: my-aws-credentials\n

    After DNSRecord reconciliation the listener hostname should be resolvable through dns:

    dig echo.apps.hcpapps.net +short\nlb-2903yb.echo.apps.hcpapps.net.\ndefault.lb-2903yb.echo.apps.hcpapps.net.\nlrnse3.lb-2903yb.echo.apps.hcpapps.net.\n172.31.201.1\n
    "},{"location":"kuadrant-operator/doc/dns/#simple","title":"simple","text":"
    apiVersion: kuadrant.io/v1alpha1\nkind: DNSRecord\nmetadata:\n  name: echo.apps.hcpapps.net\n  namespace: <Gateway Namespace>\nspec:\n  endpoints:\n\n    - dnsName: echo.apps.hcpapps.net\n      recordTTL: 60\n      recordType: A\n      targets:\n        - 172.31.201.1\n        - 172.31.202.1\n  providerRefs:\n   - name: my-aws-credentials \n

    After DNSRecord reconciliation the listener hostname should be resolvable through dns:

    dig echo.apps.hcpapps.net +short\n172.31.201.1\n
    "},{"location":"kuadrant-operator/doc/dns/#known-limitations","title":"Known limitations","text":"
    • One Gateway can only be targeted by one DNSPolicy.
    • DNSPolicies can only target Gateways defined within the same namespace of the DNSPolicy.
    "},{"location":"kuadrant-operator/doc/dnshealthchecks/","title":"DNS Health Checks","text":"

    DNS Health Checks are a tool provided by some DNS Providers for ensuring the availability and reliability of your DNS Records and only publishing DNS Records that resolve to healthy workloads. Kuadrant offers a powerful feature known as DNSPolicy, which allows you to configure these health checks for all the managed DNS endpoints created as a result of that policy. This guide provides a comprehensive overview of how to set up, utilize, and understand these DNS health checks.

    "},{"location":"kuadrant-operator/doc/dnshealthchecks/#supported-providers","title":"Supported Providers","text":"

    we currently only support AWS Route53 DNS Health checks.

    "},{"location":"kuadrant-operator/doc/dnshealthchecks/#configuration-of-health-checks","title":"Configuration of Health Checks","text":"

    To configure a DNS health check, you need to specify the healthCheck section of the DNSPolicy, which includes important properties such as:

    • endpoint: This is the path where the health checks take place, usually represented as '/healthz' or something similar.
    • port: Specific port for the connection to be checked.
    • protocol: Type of protocol being used, like HTTP or HTTPS.
    • FailureThreshold: How many times we can tolerate a failure on this endpoint, before removing the related DNS entry.
    apiVersion: kuadrant.io/v1alpha1\nkind: DNSPolicy\nmetadata:\n  name: prod-web\n  namespace: multi-cluster-gateways\nspec:\n  targetRef:\n    name: prod-web\n    group: gateway.networking.k8s.io\n    kind: Gateway\n  loadBalancing: simple\n  healthCheck:\n    endpoint: \"/health\"\n    port: 443\n    protocol: \"HTTPS\"\n    failureThreshold: 5\n

    This configuration sets up a DNS health check in AWS Route53 which will connect by HTTPS on port 443 and request the path /health.

    "},{"location":"kuadrant-operator/doc/dnshealthchecks/#reviewing-the-status-of-health-checks","title":"Reviewing the status of Health Checks","text":"

    The DNS Record CR will show whether the health check has been created or not in the DNS Provider, and will also show any errors encountered when trying to create or update the health check configuration.

    To see the status of the executing health check requires logging in to the Route53 console to view the current probe results.

    "},{"location":"kuadrant-operator/doc/dnshealthchecks/#reconfiguring-health-checks","title":"Reconfiguring Health Checks","text":"

    To reconfigure the health checks, update the HealthCheck section of the DNS Policy, this will be reflected into all the health checks created as a result of this policy.

    "},{"location":"kuadrant-operator/doc/dnshealthchecks/#removing-health-checks","title":"Removing Health Checks","text":"

    To remove the health checks created in AWS, delete the healthcheck section of the DNS Policy. All health checks will be deleted automatically, if the DNS Policy is deleted.

    "},{"location":"kuadrant-operator/doc/dnshealthchecks/#limitations","title":"Limitations","text":"

    As Route53 will only perform health checks on an IP address, currently do not create health checks on DNS Policies that target gateways with hostname addresses.

    "},{"location":"kuadrant-operator/doc/dnshealthchecks/#other-providers","title":"Other Providers","text":"

    Although we intend to support integrating with the DNS Health checks provided by other DNS Providers in the future, we currently only support AWS Route53.

    "},{"location":"kuadrant-operator/doc/logging/","title":"Logging","text":"

    The kuadrant operator outputs 3 levels of log messages: (from lowest to highest level)

    1. debug
    2. info (default)
    3. error

    info logging is restricted to high-level information. Actions like creating, deleteing or updating kubernetes resources will be logged with reduced details about the corresponding objects, and without any further detailed logs of the steps in between, except for errors.

    Only debug logging will include processing details.

    To configure the desired log level, set the environment variable LOG_LEVEL to one of the supported values listed above. Default log level is info.

    Apart from log level, the operator can output messages to the logs in 2 different formats:

    • production (default): each line is a parseable JSON object with properties {\"level\":string, \"ts\":int, \"msg\":string, \"logger\":string, extra values...}
    • development: more human-readable outputs, extra stack traces and logging info, plus extra values output as JSON, in the format: <timestamp-iso-8601>\\t<log-level>\\t<logger>\\t<message>\\t{extra-values-as-json}

    To configure the desired log mode, set the environment variable LOG_MODE to one of the supported values listed above. Default log level is production.

    "},{"location":"kuadrant-operator/doc/rate-limiting/","title":"Kuadrant Rate Limiting","text":"

    A Kuadrant RateLimitPolicy custom resource, often abbreviated \"RateLimitPolicy\":

    1. Targets Gateway API networking resources such as HTTPRoutes and Gateways, using these resources to obtain additional context, i.e., which traffic workload (HTTP attributes, hostnames, user attributes, etc) to rate limit.
    2. Supports targeting subsets (sections) of a network resource to apply the limits to.
    3. Abstracts the details of the underlying Rate Limit protocol and configuration resources, that have a much broader remit and surface area.
    4. Enables cluster operators to set defaults that govern behavior at the lower levels of the network, until a more specific policy is applied.
    "},{"location":"kuadrant-operator/doc/rate-limiting/#how-it-works","title":"How it works","text":""},{"location":"kuadrant-operator/doc/rate-limiting/#envoys-rate-limit-service-protocol","title":"Envoy's Rate Limit Service Protocol","text":"

    Kuadrant's Rate Limit implementation relies on the Envoy's Rate Limit Service (RLS) protocol. The workflow per request goes:

    1. On incoming request, the gateway checks the matching rules for enforcing rate limits, as stated in the RateLimitPolicy custom resources and targeted Gateway API networking objects
    2. If the request matches, the gateway sends one RateLimitRequest to the external rate limiting service (\"Limitador\").
    3. The external rate limiting service responds with a RateLimitResponse back to the gateway with either an OK or OVER_LIMIT response code.

    A RateLimitPolicy and its targeted Gateway API networking resource contain all the statements to configure both the ingress gateway and the external rate limiting service.

    "},{"location":"kuadrant-operator/doc/rate-limiting/#the-ratelimitpolicy-custom-resource","title":"The RateLimitPolicy custom resource","text":""},{"location":"kuadrant-operator/doc/rate-limiting/#overview","title":"Overview","text":"

    The RateLimitPolicy spec includes, basically, two parts:

    • A reference to an existing Gateway API resource (spec.targetRef)
    • Limit definitions (spec.limits)

    Each limit definition includes:

    • A set of rate limits (spec.limits.<limit-name>.rates[])
    • (Optional) A set of dynamic counter qualifiers (spec.limits.<limit-name>.counters[])
    • (Optional) A set of route selectors, to further qualify the specific routing rules when to activate the limit (spec.limits.<limit-name>.routeSelectors[])
    • (Optional) A set of additional dynamic conditions to activate the limit (spec.limits.<limit-name>.when[])

    The limit definitions (limits) can be declared at the top-level level of the spec (with the semantics of defaults) or alternatively within explicit defaults or overrides blocks.

    Check out Kuadrant RFC 0002 to learn more about the Well-known Attributes that can be used to define counter qualifiers (counters) and conditions (when)."},{"location":"kuadrant-operator/doc/rate-limiting/#high-level-example-and-field-definition","title":"High-level example and field definition","text":"
    apiVersion: kuadrant.io/v1beta2\nkind: RateLimitPolicy\nmetadata:\n  name: my-rate-limit-policy\nspec:\n  # Reference to an existing networking resource to attach the policy to. REQUIRED.\n  # It can be a Gateway API HTTPRoute or Gateway resource.\n  # It can only refer to objects in the same namespace as the RateLimitPolicy.\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute / Gateway\n    name: myroute / mygateway\n\n  # The limits definitions to apply to the network traffic routed through the targeted resource.\n  # Equivalent to if otherwise declared within `defaults`.\n  limits:\n    \"my_limit\":\n      # The rate limits associated with this limit definition. REQUIRED.\n      # E.g., to specify a 50rps rate limit, add `{ limit: 50, duration: 1, unit: secod }`\n      rates: [\u2026]\n\n      # Counter qualifiers.\n      # Each dynamic value in the data plane starts a separate counter, combined with each rate limit.\n      # E.g., to define a separate rate limit for each user name detected by the auth layer, add `metadata.filter_metadata.envoy\\.filters\\.http\\.ext_authz.username`.\n      # Check out Kuadrant RFC 0002 (https://github.com/Kuadrant/architecture/blob/main/rfcs/0002-well-known-attributes.md) to learn more about the Well-known Attributes that can be used in this field.\n      counters: [\u2026]\n\n      # Further qualification of the scpecific HTTPRouteRules within the targeted HTTPRoute that should trigger the limit.\n      # Each element contains a HTTPRouteMatch object that will be used to select HTTPRouteRules that include at least one identical HTTPRouteMatch.\n      # The HTTPRouteMatch part does not have to be fully identical, but the what's stated in the selector must be identically stated in the HTTPRouteRule.\n      # Do not use it on RateLimitPolicies that target a Gateway.\n      routeSelectors: [\u2026]\n\n      # Additional dynamic conditions to trigger the limit.\n      # Use it for filtering attributes not supported by HTTPRouteRule or with RateLimitPolicies that target a Gateway.\n      # Check out Kuadrant RFC 0002 (https://github.com/Kuadrant/architecture/blob/main/rfcs/0002-well-known-attributes.md) to learn more about the Well-known Attributes that can be used in this field.\n      when: [\u2026]\n\n    # Explicit defaults. Used in policies that target a Gateway object to express default rules to be enforced on\n    # routes that lack a more specific policy attached to.\n    # Mutually exclusive with `overrides` and with declaring `limits` at the top-level of the spec.\n    defaults:\n      limits: {\u2026}\n\n    # Overrides. Used in policies that target a Gateway object to be enforced on all routes linked to the gateway,\n    # thus also overriding any more specific policy occasionally attached to any of those routes.\n    # Mutually exclusive with `defaults` and with declaring `limits` at the top-level of the spec.\n    overrides:\n      limits: {\u2026}\n
    "},{"location":"kuadrant-operator/doc/rate-limiting/#using-the-ratelimitpolicy","title":"Using the RateLimitPolicy","text":""},{"location":"kuadrant-operator/doc/rate-limiting/#targeting-a-httproute-networking-resource","title":"Targeting a HTTPRoute networking resource","text":"

    When a RateLimitPolicy targets a HTTPRoute, the policy is enforced to all traffic routed according to the rules and hostnames specified in the HTTPRoute, across all Gateways referenced in the spec.parentRefs field of the HTTPRoute.

    The targeted HTTPRoute's rules and/or hostnames to which the policy must be enforced can be filtered to specific subsets, by specifying the routeSelectors field of the limit definition.

    Target a HTTPRoute by setting the spec.targetRef field of the RateLimitPolicy as follows:

    apiVersion: kuadrant.io/v1beta2\nkind: RateLimitPolicy\nmetadata:\n  name: <RateLimitPolicy name>\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: <HTTPRoute Name>\n  limits: {\u2026}\n

    "},{"location":"kuadrant-operator/doc/rate-limiting/#hostnames-and-wildcards","title":"Hostnames and wildcards","text":"

    If a RateLimitPolicy targets a route defined for *.com and another RateLimitPolicy targets another route for api.com, the Kuadrant control plane will not merge these two RateLimitPolicies. Unless one of the policies declare an overrides set of limites, the control plane will configure to mimic the behavior of gateway implementation by which the \"most specific hostname wins\", thus enforcing only the corresponding applicable policies and limit definitions.

    E.g., by default, a request coming for api.com will be rate limited according to the rules from the RateLimitPolicy that targets the route for api.com; while a request for other.com will be rate limited with the rules from the RateLimitPolicy targeting the route for *.com.

    See more examples in Overlapping Gateway and HTTPRoute RateLimitPolicies.

    "},{"location":"kuadrant-operator/doc/rate-limiting/#targeting-a-gateway-networking-resource","title":"Targeting a Gateway networking resource","text":"

    A RateLimitPolicy that targets a Gateway can declare a block of defaults (spec.defaults) or a block of overrides (spec.overrides). As a standard, gateway policies that do not specify neither defaults nor overrides, act as defaults.

    When declaring defaults, a RateLimitPolicy which targets a Gateway will be enforced to all HTTP traffic hitting the gateway, unless a more specific RateLimitPolicy targeting a matching HTTPRoute exists. Any new HTTPRoute referrencing the gateway as parent will be automatically covered by the default RateLimitPolicy, as well as changes in the existing HTTPRoutes.

    Defaults provide cluster operators with the ability to protect the infrastructure against unplanned and malicious network traffic attempt, such as by setting safe default limits on hostnames and hostname wildcards.

    Inversely, a gateway policy that specify overrides declares a set of rules to be enforced on all routes attached to the gateway, thus atomically replacing any more specific policy occasionally attached to any of those routes.

    Target a Gateway HTTPRoute by setting the spec.targetRef field of the RateLimitPolicy as follows:

    apiVersion: kuadrant.io/v1beta2\nkind: RateLimitPolicy\nmetadata:\n  name: <RateLimitPolicy name>\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: Gateway\n    name: <Gateway Name>\n  defaults: # alternatively: `overrides`\n    limits: {\u2026}\n

    "},{"location":"kuadrant-operator/doc/rate-limiting/#overlapping-gateway-and-httproute-ratelimitpolicies","title":"Overlapping Gateway and HTTPRoute RateLimitPolicies","text":"

    Two possible semantics are to be considered here \u2013 gateway policy defaults vs gateway policy overrides.

    Gateway RateLimitPolicies that declare defaults (or alternatively neither defaults nor overrides) protect all traffic routed through the gateway except where a more specific HTTPRoute RateLimitPolicy exists, in which case the HTTPRoute RateLimitPolicy prevails.

    Example with 4 RateLimitPolicies, 3 HTTPRoutes and 1 Gateway default (plus 2 HTTPRoute and 2 Gateways without RateLimitPolicies attached):

    • RateLimitPolicy A \u2192 HTTPRoute A (a.toystore.com) \u2192 Gateway G (*.com)
    • RateLimitPolicy B \u2192 HTTPRoute B (b.toystore.com) \u2192 Gateway G (*.com)
    • RateLimitPolicy W \u2192 HTTPRoute W (*.toystore.com) \u2192 Gateway G (*.com)
    • RateLimitPolicy G (defaults) \u2192 Gateway G (*.com)

    Expected behavior:

    • Request to a.toystore.com \u2192 RateLimitPolicy A will be enforced
    • Request to b.toystore.com \u2192 RateLimitPolicy B will be enforced
    • Request to other.toystore.com \u2192 RateLimitPolicy W will be enforced
    • Request to other.com (suppose a route exists) \u2192 RateLimitPolicy G will be enforced
    • Request to yet-another.net (suppose a route and gateway exist) \u2192 No RateLimitPolicy will be enforced

    Gateway RateLimitPolicies that declare overrides protect all traffic routed through the gateway, regardless of existence of any more specific HTTPRoute RateLimitPolicy.

    Example with 4 RateLimitPolicies, 3 HTTPRoutes and 1 Gateway override (plus 2 HTTPRoute and 2 Gateways without RateLimitPolicies attached):

    • RateLimitPolicy A \u2192 HTTPRoute A (a.toystore.com) \u2192 Gateway G (*.com)
    • RateLimitPolicy B \u2192 HTTPRoute B (b.toystore.com) \u2192 Gateway G (*.com)
    • RateLimitPolicy W \u2192 HTTPRoute W (*.toystore.com) \u2192 Gateway G (*.com)
    • RateLimitPolicy G (overrides) \u2192 Gateway G (*.com)

    Expected behavior:

    • Request to a.toystore.com \u2192 RateLimitPolicy G will be enforced
    • Request to b.toystore.com \u2192 RateLimitPolicy G will be enforced
    • Request to other.toystore.com \u2192 RateLimitPolicy G will be enforced
    • Request to other.com (suppose a route exists) \u2192 RateLimitPolicy G will be enforced
    • Request to yet-another.net (suppose a route and gateway exist) \u2192 No RateLimitPolicy will be enforced
    "},{"location":"kuadrant-operator/doc/rate-limiting/#limit-definition","title":"Limit definition","text":"

    A limit will be activated whenever a request comes in and the request matches:

    • any of the route rules selected by the limit (via routeSelectors or implicit \"catch-all\" selector), and
    • all of the when conditions specified in the limit.

    A limit can define:

    • counters that are qualified based on dynamic values fetched from the request, or
    • global counters (implicitly, when no qualified counter is specified)

    A limit is composed of one or more rate limits.

    E.g.

    spec:\n  limits:\n    \"toystore-all\":\n      rates:\n\n      - limit: 5000\n        duration: 1\n        unit: second\n\n    \"toystore-api-per-username\":\n      rates:\n\n      - limit: 100\n        duration: 1\n        unit: second\n      - limit: 1000\n        duration: 1\n        unit: minute\n      counters:\n      - auth.identity.username\n      routeSelectors:\n        hostnames:\n        - api.toystore.com\n\n    \"toystore-admin-unverified-users\":\n      rates:\n\n      - limit: 250\n        duration: 1\n        unit: second\n      routeSelectors:\n        hostnames:\n        - admin.toystore.com\n      when:\n      - selector: auth.identity.email_verified\n        operator: eq\n        value: \"false\"\n
    Request to Rate limits enforced api.toystore.com 100rps/username or 1000rpm/username (whatever happens first) admin.toystore.com 250rps other.toystore.com 5000rps"},{"location":"kuadrant-operator/doc/rate-limiting/#route-selectors","title":"Route selectors","text":"

    Route selectors allow targeting sections of a HTTPRoute, by specifying sets of HTTPRouteMatches and/or hostnames that make the policy controller look up within the HTTPRoute spec for compatible declarations, and select the corresponding HTTPRouteRules and hostnames, to then build conditions that activate the policy or policy rule.

    Check out Route selectors for a full description, semantics and API reference.

    "},{"location":"kuadrant-operator/doc/rate-limiting/#when-conditions","title":"when conditions","text":"

    when conditions can be used to scope a limit (i.e. to filter the traffic to which a limit definition applies) without any coupling to the underlying network topology, i.e. without making direct references to HTTPRouteRules via routeSelectors.

    Use when conditions to conditionally activate limits based on attributes that cannot be expressed in the HTTPRoutes' spec.hostnames and spec.rules.matches fields, or in general in RateLimitPolicies that target a Gateway.

    The selectors within the when conditions of a RateLimitPolicy are a subset of Kuadrant's Well-known Attributes (RFC 0002). Check out the reference for the full list of supported selectors.

    "},{"location":"kuadrant-operator/doc/rate-limiting/#examples","title":"Examples","text":"

    Check out the following user guides for examples of rate limiting services with Kuadrant:

    • Simple Rate Limiting for Application Developers
    • Authenticated Rate Limiting for Application Developers
    • Gateway Rate Limiting for Cluster Operators
    • Authenticated Rate Limiting with JWTs and Kubernetes RBAC
    "},{"location":"kuadrant-operator/doc/rate-limiting/#known-limitations","title":"Known limitations","text":"
    • One HTTPRoute can only be targeted by one RateLimitPolicy.
    • One Gateway can only be targeted by one RateLimitPolicy.
    • RateLimitPolicies can only target HTTPRoutes/Gateways defined within the same namespace of the RateLimitPolicy.
    • 2+ RateLimitPolicies cannot target network resources that define/inherit the same exact hostname.
    "},{"location":"kuadrant-operator/doc/rate-limiting/#limitation-multiple-network-resources-with-identical-hostnames","title":"Limitation: Multiple network resources with identical hostnames","text":"

    Kuadrant currently does not support multiple RateLimitPolicies simultaneously targeting network resources that declare identical hostnames. This includes multiple HTTPRoutes that specify the same hostnames in the spec.hostnames field, as well as HTTPRoutes that specify a hostname that is identical to a hostname specified in a listener of one of the route's parent gateways or HTTPRoutes that don't specify any hostname at all thus inheriting the hostnames from the parent gateways. In any of these cases, a maximum of one RateLimitPolicy targeting any of those resources that specify identical hostnames is allowed.

    Moreover, having multiple resources that declare identical hostnames may lead to unexpected behavior and therefore should be avoided.

    This limitation is rooted at the underlying components configured by Kuadrant for the implementation of its policies and the lack of information in the data plane regarding the exact route that honored by the API gateway in cases of conflicting hostnames.

    To exemplify one way this limitation can impact deployments, consider the following topology:

                     \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n                 \u2502   Gateway    \u2502\n                 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n          \u250c\u2500\u2500\u2500\u2500\u2500\u25ba\u2502 listeners:   \u2502\u25c4\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n          \u2502      \u2502 - host: *.io \u2502       \u2502\n          \u2502      \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518       \u2502\n          \u2502                             \u2502\n          \u2502                             \u2502\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510        \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502     HTTPRoute     \u2502        \u2502     HTTPRoute     \u2502\n\u2502     (route-a)     \u2502        \u2502     (route-b)     \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524        \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 hostnames:        \u2502        \u2502 hostnames:        \u2502\n\u2502 - app.io          \u2502        \u2502 - app.io          \u2502\n\u2502 rules:            \u2502        \u2502 rules:            \u2502\n\u2502 - matches:        \u2502        \u2502 - matches:        \u2502\n\u2502   - path:         \u2502        \u2502   - path:         \u2502\n\u2502       value: /foo \u2502        \u2502       value: /bar \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518        \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n          \u25b2                            \u25b2\n          \u2502                            \u2502\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510           \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 RateLimitPolicy \u2502           \u2502 RateLimitPolicy \u2502\n \u2502   (policy-1)    \u2502           \u2502   (policy-2)    \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518           \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n

    In the example above, with the policy-1 resource created before policy-2, policy-2 will be enforced on all requests to app.io/bar while policy-1 will not be enforced at all. I.e. app.io/foo will not be rate-limited. Nevertheless, both policies will report status condition as Enforced.

    Notice the enforcement of policy-2 and no enforcement of policy-1 is the opposite behavior as the analogous problem with the Kuadrant AuthPolicy.

    A different way the limitation applies is when two or more routes of a gateway declare the exact same hostname and a gateway policy is defined with expectation to set default rules for the cases not covered by more specific policies. E.g.:

                                        \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n                         \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 RateLimitPolicy \u2502\n                         \u2502          \u2502    (policy-2)   \u2502\n                         \u25bc          \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n                 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n                 \u2502   Gateway    \u2502\n                 \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n          \u250c\u2500\u2500\u2500\u2500\u2500\u25ba\u2502 listeners:   \u2502\u25c4\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n          \u2502      \u2502 - host: *.io \u2502       \u2502\n          \u2502      \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518       \u2502\n          \u2502                             \u2502\n          \u2502                             \u2502\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510        \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502     HTTPRoute     \u2502        \u2502     HTTPRoute     \u2502\n\u2502     (route-a)     \u2502        \u2502     (route-b)     \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524        \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 hostnames:        \u2502        \u2502 hostnames:        \u2502\n\u2502 - app.io          \u2502        \u2502 - app.io          \u2502\n\u2502 rules:            \u2502        \u2502 rules:            \u2502\n\u2502 - matches:        \u2502        \u2502 - matches:        \u2502\n\u2502   - path:         \u2502        \u2502   - path:         \u2502\n\u2502       value: /foo \u2502        \u2502       value: /bar \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518        \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n          \u25b2\n          \u2502\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 RateLimitPolicy \u2502\n \u2502   (policy-1)    \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n

    Once again, both policies will report status condition as Enforced. However, in this case, only policy-1 will be enforced on requests to app.io/foo, while policy-2 will not be enforced at all. I.e. app.io/bar will not be not rate-limited. This is same behavior as the analogous problem with the Kuadrant AuthPolicy.

    To avoid these problems, use different hostnames in each route.

    "},{"location":"kuadrant-operator/doc/rate-limiting/#implementation-details","title":"Implementation details","text":"

    Driven by limitations related to how Istio injects configuration in the filter chains of the ingress gateways, Kuadrant relies on Envoy's Wasm Network filter in the data plane, to manage the integration with rate limiting service (\"Limitador\"), instead of the Rate Limit filter.

    Motivation: Multiple rate limit domains The first limitation comes from having only one filter chain per listener. This often leads to one single global rate limiting filter configuration per gateway, and therefore to a shared rate limit domain across applications and policies. Even though, in a rate limit filter, the triggering of rate limit calls, via actions to build so-called \"descriptors\", can be defined at the level of the virtual host and/or specific route rule, the overall rate limit configuration is only one, i.e., always the same rate limit domain for all calls to Limitador.

    On the other hand, the possibility to configure and invoke the rate limit service for multiple domains depending on the context allows to isolate groups of policy rules, as well as to optimize performance in the rate limit service, which can rely on the domain for indexation.

    Motivation: Fine-grained matching rules A second limitation of configuring the rate limit filter via Istio, particularly from Gateway API resources, is that rate limit descriptors at the level of a specific HTTP route rule require \"named routes\" \u2013 defined only in an Istio VirtualService resource and referred in an EnvoyFilter one. Because Gateway API HTTPRoute rules lack a \"name\" property1, as well as the Istio VirtualService resources are only ephemeral data structures handled by Istio in-memory in its implementation of gateway configuration for Gateway API, where the names of individual route rules are auto-generated and not referable by users in a policy23, rate limiting by attributes of the HTTP request (e.g., path, method, headers, etc) would be very limited while depending only on Envoy's Rate Limit filter.

    Motivated by the desire to support multiple rate limit domains per ingress gateway, as well as fine-grained HTTP route matching rules for rate limiting, Kuadrant implements a wasm-shim that handles the rules to invoke the rate limiting service, complying with Envoy's Rate Limit Service (RLS) protocol.

    The wasm module integrates with the gateway in the data plane via Wasm Network filter, and parses a configuration composed out of user-defined RateLimitPolicy resources by the Kuadrant control plane. Whereas the rate limiting service (\"Limitador\") remains an implementation of Envoy's RLS protocol, capable of being integrated directly via Rate Limit extension or by Kuadrant, via wasm module for the Istio Gateway API implementation.

    As a consequence of this design:

    • Users can define fine-grained rate limit rules that match their Gateway and HTTPRoute definitions including for subsections of these.
    • Rate limit definitions are insulated, not leaking across unrelated policies or applications.
    • Conditions to activate limits are evaluated in the context of the gateway process, reducing the gRPC calls to the external rate limiting service only to the cases where rate limit counters are known in advance to have to be checked/incremented.
    • The rate limiting service can rely on the indexation to look up for groups of limit definitions and counters.
    • Components remain compliant with industry protocols and flexible for different integration options.

    A Kuadrant wasm-shim configuration for 2 RateLimitPolicy custom resources (a Gateway default RateLimitPolicy and a HTTPRoute RateLimitPolicy) looks like the following and it is generated automatically by the Kuadrant control plane:

    apiVersion: extensions.istio.io/v1alpha1\nkind: WasmPlugin\nmetadata:\n  name: kuadrant-istio-ingressgateway\n  namespace: istio-system\n  \u2026\nspec:\n  phase: STATS\n  pluginConfig:\n    failureMode: deny\n    rateLimitPolicies:\n\n    - domain: istio-system/gw-rlp # allows isolating policy rules and improve performance of the rate limit service\n      hostnames:\n      - '*.website'\n      - '*.io'\n      name: istio-system/gw-rlp\n      rules: # match rules from the gateway and according to conditions specified in the policy\n      - conditions:\n        - allOf:\n          - operator: startswith\n            selector: request.url_path\n            value: /\n        data:\n        - static: # tells which rate limit definitions and counters to activate\n            key: limit.internet_traffic_all__593de456\n            value: \"1\"\n      - conditions:\n        - allOf:\n          - operator: startswith\n            selector: request.url_path\n            value: /\n          - operator: endswith\n            selector: request.host\n            value: .io\n        data:\n        - static:\n            key: limit.internet_traffic_apis_per_host__a2b149d2\n            value: \"1\"\n        - selector:\n            selector: request.host\n      service: kuadrant-rate-limiting-service\n    - domain: default/app-rlp\n      hostnames:\n      - '*.toystore.website'\n      - '*.toystore.io'\n      name: default/app-rlp\n      rules: # matches rules from a httproute and additional specified in the policy\n      - conditions:\n        - allOf:\n          - operator: startswith\n            selector: request.url_path\n            value: /assets/\n        data:\n        - static:\n            key: limit.toystore_assets_all_domains__8cfb7371\n            value: \"1\"\n      - conditions:\n        - allOf:\n          - operator: startswith\n            selector: request.url_path\n            value: /v1/\n          - operator: eq\n            selector: request.method\n            value: GET\n          - operator: endswith\n            selector: request.host\n            value: .toystore.website\n          - operator: eq\n            selector: auth.identity.username\n            value: \"\"\n        - allOf:\n          - operator: startswith\n            selector: request.url_path\n            value: /v1/\n          - operator: eq\n            selector: request.method\n            value: POST\n          - operator: endswith\n            selector: request.host\n            value: .toystore.website\n          - operator: eq\n            selector: auth.identity.username\n            value: \"\"\n        data:\n        - static:\n            key: limit.toystore_v1_website_unauthenticated__3f9c40c6\n            value: \"1\"\n      service: kuadrant-rate-limiting-service\n  selector:\n    matchLabels:\n      istio.io/gateway-name: istio-ingressgateway\n  url: oci://quay.io/kuadrant/wasm-shim:v0.3.0\n
    1. https://github.com/kubernetes-sigs/gateway-api/pull/996\u00a0\u21a9

    2. https://github.com/istio/istio/issues/36790\u00a0\u21a9

    3. https://github.com/istio/istio/issues/37346\u00a0\u21a9

    "},{"location":"kuadrant-operator/doc/tls/","title":"TLS","text":"

    A Kuadrant TLSPolicy custom resource:

    1. Targets Gateway API networking resources Gateways to provide tls for gateway listeners by managing the lifecycle of tls certificates using CertManager.
    "},{"location":"kuadrant-operator/doc/tls/#how-it-works","title":"How it works","text":""},{"location":"kuadrant-operator/doc/tls/#the-tlspolicy-custom-resource","title":"The TLSPolicy custom resource","text":""},{"location":"kuadrant-operator/doc/tls/#overview","title":"Overview","text":"

    The TLSPolicy spec includes the following parts:

    • A reference to an existing Gateway API resource (spec.targetRef)
    "},{"location":"kuadrant-operator/doc/tls/#high-level-example-and-field-definition","title":"High-level example and field definition","text":"
    apiVersion: kuadrant.io/v1alpha1\nkind: TLSPolicy\nmetadata:\n  name: my-tls-policy\nspec:\n  # reference to an existing networking resource to attach the policy to\n  # it can only be a Gateway API Gateway resource\n  # it can only refer to objects in the same namespace as the TLSPolicy\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: Gateway\n    name: mygateway\n

    Check out the API reference for a full specification of the TLSPolicy CRD.

    "},{"location":"kuadrant-operator/doc/tls/#using-the-tlspolicy","title":"Using the TLSPolicy","text":""},{"location":"kuadrant-operator/doc/tls/#targeting-a-gateway-networking-resource","title":"Targeting a Gateway networking resource","text":"

    When a TLSPolicy targets a Gateway, the policy will be enforced on all gateway listeners that have a valid TLS section.

    Target a Gateway by setting the spec.targetRef field of the TLSPolicy as follows:

    apiVersion: kuadrant.io/v1beta2\nkind: TLSPolicy\nmetadata:\n  name: <TLSPolicy name>\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: Gateway\n    name: <Gateway Name>\n
    "},{"location":"kuadrant-operator/doc/tls/#examples","title":"Examples","text":"

    Check out the following user guides for examples of using the Kuadrant TLSPolicy:

    "},{"location":"kuadrant-operator/doc/tls/#known-limitations","title":"Known limitations","text":""},{"location":"kuadrant-operator/doc/install/install-kubernetes/","title":"Install Kuadrant on a Kubernetes cluster","text":"

    Note

    You must perform these steps on each Kubernetes cluster where you want to use Kuadrant.

    "},{"location":"kuadrant-operator/doc/install/install-kubernetes/#prerequisites","title":"Prerequisites","text":"
    • Access to a Kubernetes cluster, with kubeadmin or an account with similar permissions
    • cert-manager installed
    "},{"location":"kuadrant-operator/doc/install/install-kubernetes/#procedure","title":"Procedure","text":"

    This guide will show you how to install Kuadrant onto a bare Kubernetes cluster.

    Alternatively, if you are looking instead for a way to set up Kuadrant locally to evaluate or develop, consider running the kind & Kubernetes quickstart script.

    "},{"location":"kuadrant-operator/doc/install/install-kubernetes/#install-gateway-api","title":"Install Gateway API","text":"
    kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.1.0/standard-install.yaml\n
    "},{"location":"kuadrant-operator/doc/install/install-kubernetes/#install-olm","title":"Install OLM","text":"

    Note

    Currently, we recommend installing our operator via OLM. We plan to support Helm soon.

    curl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.28.0/install.sh | bash -s v0.28.0\n
    "},{"location":"kuadrant-operator/doc/install/install-kubernetes/#install-istio-as-a-gateway-api-provider","title":"Install Istio as a Gateway API provider","text":"

    Note

    There are several ways to install Istio (via istioctl, Helm chart or Operator) - this is just an example for starting from a bare Kubernetes cluster.

    curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.21.4 sh -\n./istio-1.21.4/bin/istioctl install --set profile=minimal\n./istio-1.21.4/bin/istioctl operator init\nkubectl apply -f https://raw.githubusercontent.com/Kuadrant/kuadrant-operator/main/config/dependencies/istio/istio-operator.yaml\n
    "},{"location":"kuadrant-operator/doc/install/install-kubernetes/#install-kuadrant","title":"Install Kuadrant","text":"
    kubectl create -f https://operatorhub.io/install/kuadrant-operator.yaml\nkubectl get crd --watch | grep -m 1 \"kuadrants.kuadrant.io\"\n
    "},{"location":"kuadrant-operator/doc/install/install-kubernetes/#request-a-kuadrant-instance","title":"Request a Kuadrant instance","text":"
    kubectl create namespace kuadrant-system\nkubectl -n kuadrant-system apply -f - <<EOF\napiVersion: kuadrant.io/v1beta1\nkind: Kuadrant\nmetadata:\n  name: kuadrant\nspec: {}\nEOF\n

    Kuadrant should now install. You can check the operator's install status with:

    kubectl wait --for=jsonpath='{.status.state}'=AtLatestKnown subscription/my-kuadrant-operator -n operators --timeout=600s\n

    Kuadrant is now ready to use.

    "},{"location":"kuadrant-operator/doc/install/install-kubernetes/#optional-dnspolicy-setup","title":"(Optional) DNSPolicy setup","text":"

    If you plan to use DNSPolicy, you will need an AWS Account with access to Route 53 (more providers coming soon), and a hosted zone.

    Export the following environment variables for setup:

    export AWS_ACCESS_KEY_ID=xxxxxxx # Key ID from AWS with Route 53 access\nexport AWS_SECRET_ACCESS_KEY=xxxxxxx # Access key from AWS with Route 53 access\n

    Create an AWS credentials secret:

    kubectl -n kuadrant-system create secret generic aws-credentials \\\n  --type=kuadrant.io/aws \\\n  --from-literal=AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \\\n  --from-literal=AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY\n
    "},{"location":"kuadrant-operator/doc/install/install-kubernetes/#optional-multi-cluster-ratelimitpolicy","title":"(Optional) Multi-cluster RateLimitPolicy","text":"

    To enable RateLimitPolicy to use shared, multi-cluster counters for Kuadrant's Limitador component, you need to configure Kuadrant with a Redis cluster URL. Redis URIs can be either redis:// for standard connections or rediss:// for secure connections.

    Follow these steps to create the necessary secret:

    1. Replace some-redis.com:6379 with the URL of your accessible Redis cluster. Ensure you include the appropriate URI scheme (redis:// or rediss://).

    2. Execute the following commands:

      # Replace this with an accessible Redis cluster URL\nexport REDIS_URL=redis://user:xxxxxx@some-redis.com:6379\n\nkubectl -n kuadrant-system create secret generic redis-config \\\n  --from-literal=URL=$REDIS_URL\n

    This will create a secret named redis-config in the kuadrant-system namespace containing your Redis cluster URL, which Kuadrant will use for multi-cluster rate limiting.

    You'll also need to update your earlier created Kuadrant instance to reconfigure Kuadrant to use Redis:

    kubectl apply -f - <<EOF\napiVersion: kuadrant.io/v1beta1\nkind: Kuadrant\nmetadata:\n  name: kuadrant\n  namespace: kuadrant-system\nspec:\n  limitador:\n    storage:\n      redis-cached:\n        configSecretRef:\n          name: redis-config \nEOF\n
    "},{"location":"kuadrant-operator/doc/install/install-kubernetes/#next-steps","title":"Next Steps","text":"
    • Secure, protect, and connect APIs with Kuadrant on Kubernetes
    "},{"location":"kuadrant-operator/doc/install/install-openshift/","title":"Install Kuadrant on an OpenShift cluster","text":"

    Note

    You must perform these steps on each OpenShift cluster that you want to use Kuadrant on.

    "},{"location":"kuadrant-operator/doc/install/install-openshift/#prerequisites","title":"Prerequisites","text":"
    • OpenShift Container Platform 4.14.x or later with community Operator catalog available.
    • AWS account with Route 53 and zone.
    • Accessible Redis instance.
    "},{"location":"kuadrant-operator/doc/install/install-openshift/#procedure","title":"Procedure","text":""},{"location":"kuadrant-operator/doc/install/install-openshift/#step-1-set-up-your-environment","title":"Step 1 - Set up your environment","text":"
    export AWS_ACCESS_KEY_ID=xxxxxxx # Key ID from AWS with Route 53 access\nexport AWS_SECRET_ACCESS_KEY=xxxxxxx # Access key from AWS with Route 53 access\nexport REDIS_URL=redis://user:xxxxxx@some-redis.com:10340 # A Redis cluster URL\n
    "},{"location":"kuadrant-operator/doc/install/install-openshift/#step-2-install-gateway-api-v1","title":"Step 2 - Install Gateway API v1","text":"

    Before you can use Kuadrant, you must install Gateway API v1 as follows:

    kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/standard-install.yaml\n
    "},{"location":"kuadrant-operator/doc/install/install-openshift/#step-3-install-cert-manager","title":"Step 3 - Install cert-manager","text":"

    Before you can use Kuadrant, you must install cert-manager.

    The minimum supported version of cert-manager is v1.12.1.

    Install one of the different flavours of the Cert-Manager.

    "},{"location":"kuadrant-operator/doc/install/install-openshift/#install-community-version-of-the-cert-manager","title":"Install community version of the cert-manager","text":"

    Consider installing cert-manager via OperatorHub, which you can do from the OpenShift web console.

    More installation options at cert-manager.io

    "},{"location":"kuadrant-operator/doc/install/install-openshift/#install-cert-manager-operator-for-red-hat-openshift","title":"Install cert-manager Operator for Red Hat OpenShift","text":"

    You can install the cert-manager Operator for Red Hat OpenShift by using the web console.

    "},{"location":"kuadrant-operator/doc/install/install-openshift/#step-4-install-and-configure-istio-with-the-sail-operator","title":"Step 4 - Install and configure Istio with the Sail Operator","text":"

    Kuadrant integrates with Istio as a Gateway API provider. You can set up an Istio-based Gateway API provider by using the Sail Operator.

    "},{"location":"kuadrant-operator/doc/install/install-openshift/#install-istio","title":"Install Istio","text":"

    To install the Istio Gateway provider, run the following commands:

    kubectl create ns istio-system\n
    kubectl  apply -f - <<EOF\nkind: OperatorGroup\napiVersion: operators.coreos.com/v1\nmetadata:\n  name: sail\n  namespace: istio-system\nspec:\n  upgradeStrategy: Default\n---\napiVersion: operators.coreos.com/v1alpha1\nkind: Subscription\nmetadata:\n  name: sailoperator\n  namespace: istio-system\nspec:\n  channel: 3.0-dp1\n  installPlanApproval: Automatic\n  name: sailoperator\n  source: community-operators\n  sourceNamespace: openshift-marketplace\nEOF\n

    Check the status of the installation as follows:

    kubectl get installplan -n istio-system -o=jsonpath='{.items[0].status.phase}'\n

    When ready, the status will change from installing to complete.

    "},{"location":"kuadrant-operator/doc/install/install-openshift/#configure-istio","title":"Configure Istio","text":"

    To configure the Istio Gateway API provider, run the following command:

    kubectl apply -f - <<EOF\napiVersion: operator.istio.io/v1alpha1\nkind: Istio\nmetadata:\n  name: default\nspec:\n  version: v1.21.0\n  namespace: istio-system\n  # Disable autoscaling to reduce dev resources\n  values:\n    pilot:\n      autoscaleEnabled: false\nEOF\n

    Wait for Istio to be ready as follows:

    kubectl wait istio/default -n istio-system --for=\"condition=Ready=true\"\n
    "},{"location":"kuadrant-operator/doc/install/install-openshift/#step-5-optional-configure-observability-and-metrics","title":"Step 5 - Optional: Configure observability and metrics","text":"

    Kuadrant provides a set of example dashboards that use known metrics exported by Kuadrant and Gateway components to provide insight into different components of your APIs and Gateways. While not essential, it is best to set up an OpenShift monitoring stack. This section provides links to OpenShift and Thanos documentation on configuring monitoring and metrics storage.

    You can set up user-facing monitoring by following the steps in the OpenShift documentation on configuring the monitoring stack.

    If you have user workload monitoring enabled, it is best to configure remote writes to a central storage system such as Thanos:

    • OpenShift remote write configuration
    • Kube Thanos

    The example dashboards and alerts for observing Kuadrant functionality use low-level CPU metrics and network metrics available from the user monitoring stack in OpenShift. They also use resource state metrics from Gateway API and Kuadrant resources.

    To scrape these additional metrics, you can install a kube-state-metrics instance, with a custom resource configuration as follows:

    kubectl apply -f https://raw.githubusercontent.com/Kuadrant/kuadrant-operator/main/config/observability/openshift/kube-state-metrics.yaml\nkubectl apply -k https://github.com/Kuadrant/gateway-api-state-metrics?ref=main\n

    To enable request metrics in Istio, you must create a telemetry resource as follows:

    kubectl apply -f https://raw.githubusercontent.com/Kuadrant/kuadrant-operator/main/config/observability/openshift/telemetry.yaml\n

    If you have Grafana installed in your cluster, you can import the example dashboards and alerts.

    For example installation details, see installing Grafana on OpenShift. When installed, you must add your Thanos instance as a data source to Grafana. Alternatively, if you are using only the user workload monitoring stack in your OpenShift cluster, and not writing metrics to an external Thanos instance, you can set up a data source to the thanos-querier route in the OpenShift cluster.

    "},{"location":"kuadrant-operator/doc/install/install-openshift/#step-6-create-secrets-for-your-credentials","title":"Step 6 - Create secrets for your credentials","text":"

    Before installing the Kuadrant Operator, you must enter the following commands to set up secrets that you will use later:

    kubectl create ns kuadrant-system\n

    Set up a CatalogSource as follows:

    kubectl apply -f - <<EOF\napiVersion: operators.coreos.com/v1alpha1\nkind: CatalogSource\nmetadata:\n  name: kuadrant-operator-catalog\n  namespace: kuadrant-system\nspec:\n  sourceType: grpc\n  image: quay.io/kuadrant/kuadrant-operator-catalog:v0.7.1\n  displayName: Kuadrant Operators\n  publisher: grpc\n  updateStrategy:\n    registryPoll:\n      interval: 45m\nEOF\n
    "},{"location":"kuadrant-operator/doc/install/install-openshift/#aws-route-53-credentials-for-tls","title":"AWS Route 53 credentials for TLS","text":"

    Set the AWS Route 53 credentials for TLS verification as follows:

    kubectl -n kuadrant-system create secret generic aws-credentials \\\n  --type=kuadrant.io/aws \\\n  --from-literal=AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \\\n  --from-literal=AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY\n
    "},{"location":"kuadrant-operator/doc/install/install-openshift/#redis-credentials-for-rate-limiting-counters","title":"Redis credentials for rate limiting counters","text":"

    Set the Redis credentials for shared multicluster counters for the Kuadrant Limitador component as follows:

    kubectl -n kuadrant-system create secret generic redis-config \\\n  --from-literal=URL=$REDIS_URL\n
    "},{"location":"kuadrant-operator/doc/install/install-openshift/#aws-route-53-credentials-for-dns","title":"AWS Route 53 credentials for DNS","text":"

    Set the AWS Route 53 credentials for managing DNS records as follows:

    kubectl create ns ingress-gateway\n
    kubectl -n ingress-gateway create secret generic aws-credentials \\\n  --type=kuadrant.io/aws \\\n  --from-literal=AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \\\n  --from-literal=AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY\n
    "},{"location":"kuadrant-operator/doc/install/install-openshift/#step-7-install-the-kuadrant-operator","title":"Step 7 - Install the Kuadrant Operator","text":"

    To install the Kuadrant Operator, enter the following command:

    kubectl apply -f - <<EOF\napiVersion: operators.coreos.com/v1alpha1\nkind: Subscription\nmetadata:\n  name: kuadrant-operator\n  namespace: kuadrant-system\nspec:\n  channel: preview\n  installPlanApproval: Automatic\n  name: kuadrant-operator\n  source: kuadrant-operator-catalog\n  sourceNamespace: kuadrant-system\n---\nkind: OperatorGroup\napiVersion: operators.coreos.com/v1\nmetadata:\n  name: kuadrant\n  namespace: kuadrant-system\nspec:\n  upgradeStrategy: Default\nEOF\n

    Wait for the Kuadrant Operators to be installed as follows:

    kubectl get installplan -n kuadrant-system -o=jsonpath='{.items[0].status.phase}'\n

    After some time, this command should return complete.

    "},{"location":"kuadrant-operator/doc/install/install-openshift/#step-8-configure-kuadrant","title":"Step 8 - Configure Kuadrant","text":"

    To configure your Kuadrant deployment, enter the following command:

    kubectl apply -f - <<EOF\napiVersion: kuadrant.io/v1beta1\nkind: Kuadrant\nmetadata:\n  name: kuadrant\n  namespace: kuadrant-system\nspec:\n  limitador:\n    storage:\n      redis-cached:\n        configSecretRef:\n          name: redis-config\nEOF\n

    Wait for Kuadrant to be ready as follows:

    kubectl wait kuadrant/kuadrant --for=\"condition=Ready=true\" -n kuadrant-system --timeout=300s\n

    Kuadrant is now ready to use.

    "},{"location":"kuadrant-operator/doc/install/install-openshift/#next-steps","title":"Next steps","text":"
    • Secure, protect, and connect APIs with Kuadrant on OpenShift
    "},{"location":"kuadrant-operator/doc/observability/examples/","title":"Example Dashboards and Alerts","text":"

    Explore a variety of starting points for monitoring your Kuadrant installation with our examples folder. These dashboards and alerts are ready-to-use and easily customizable to fit your environment.

    There are some example dashboards uploaded to Grafana.com . You can use the ID's listed below to import these dashboards into Grafana:

    Name ID App Developer Dashboard 21538 Business User Dashboard 20981 Platform Engineer Dashboard 20982"},{"location":"kuadrant-operator/doc/observability/examples/#dashboards","title":"Dashboards","text":""},{"location":"kuadrant-operator/doc/observability/examples/#importing-dashboards-into-grafana","title":"Importing Dashboards into Grafana","text":"

    For more details on how to import dashboards into Grafana, visit the import dashboards page.

    • UI Method:
      • JSON - Use the 'Import' feature in the Grafana UI to upload dashboard JSON files directly.
      • ID - Use the 'Import' feature in the Grafana UI to import via Grafana.com using a Dashboard ID.
    • ConfigMap Method: Automate dashboard provisioning by adding files to a ConfigMap, which should be mounted at /etc/grafana/provisioning/dashboards.

    Datasources are configured as template variables, automatically integrating with your existing data sources. Metrics for these dashboards are sourced from Prometheus. For more details on the metrics used, visit the metrics documentation page.

    "},{"location":"kuadrant-operator/doc/observability/examples/#alerts","title":"Alerts","text":""},{"location":"kuadrant-operator/doc/observability/examples/#setting-up-alerts-in-prometheus","title":"Setting Up Alerts in Prometheus","text":"

    You can integrate the example alerts into Prometheus as PrometheusRule resources. Feel free to adjust alert thresholds to suit your specific operational needs.

    Additionally, Service Level Objective (SLO) alerts generated with Sloth are included. A benefit of these alerts is the ability to integrate them with this SLO dashboard, which utilizes generated labels to comprehensively overview your SLOs.

    Further information on the metrics used for these alerts can be found on the metrics page.

    "},{"location":"kuadrant-operator/doc/observability/metrics/","title":"Metrics","text":"

    This is a reference page for some of the different metrics used in example dashboards and alerts. It is not an exhaustive list. The documentation for each component may provide more details on a per-component basis. Some of the metrics are sourced from components outside the Kuadrant project, for example, Envoy. The value of this reference is showing some of the more widely desired metrics, and how to join the metrics from different sources together in a meaningful way.

    "},{"location":"kuadrant-operator/doc/observability/metrics/#metrics-sources","title":"Metrics sources","text":"
    • Kuadrant components
    • Istio
    • Envoy
    • Kube State Metrics
    • Gateway API State Metrics
    • Kubernetes metrics
    "},{"location":"kuadrant-operator/doc/observability/metrics/#resource-usage-metrics","title":"Resource usage metrics","text":"

    Resource metrics, like CPU, memory and disk usage, primarily come from the Kubernetes metrics components. These include container_cpu_usage_seconds_total, container_memory_working_set_bytes and kubelet_volume_stats_used_bytes. A stable list of metrics is maintained in the Kubernetes repository. These low-level metrics typically have a set of recording rules that aggregate values by labels and time ranges. For example, node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate or namespace_workload_pod:kube_pod_owner:relabel. If you have deployed the kube-prometheus project, you should have the majority of these metrics being scraped.

    "},{"location":"kuadrant-operator/doc/observability/metrics/#networking-metrics","title":"Networking metrics","text":"

    Low-level networking metrics like container_network_receive_bytes_total are also available from the Kubernetes metrics components. HTTP & GRPC traffic metrics with higher level labels are available from Istio. One of the main metrics would be istio_requests_total, which is a counter incremented for every request handled by an Istio proxy. Latency metrics are available via the istio_request_duration_milliseconds metric, with buckets for varying response times.

    Some example dashboards have panels that make use of the request URL path. The path is not added as a label to Istio metrics by default, as it has the potential to increase metric cardinality, and thus storage requirements. If you want to make use of the path in your queries or visualisations, you can enable the request path metric via the Telemetry resource in istio:

    apiVersion: telemetry.istio.io/v1alpha1\nkind: Telemetry\nmetadata:\n  name: namespace-metrics\n  namespace: istio-system\nspec:\n  metrics:\n\n  - providers:\n    - name: prometheus\n    overrides:\n    - match:\n        metric: REQUEST_COUNT\n      tagOverrides:\n        request_url_path:\n          value: \"request.url_path\"\n    - match:      \n        metric: REQUEST_DURATION\n      tagOverrides:\n        request_url_path:\n          value: \"request.url_path\"\n
    "},{"location":"kuadrant-operator/doc/observability/metrics/#state-metrics","title":"State metrics","text":"

    The kube-state-metrics project exposes the state of various kuberenetes resources as metrics and labels. For example, the ready status of a Pod is available as kube_pod_status_ready, with labels for the pod name and namespace. This can be useful for linking lower level container metrics back to a meaningful resource in the Kubernetes world.

    "},{"location":"kuadrant-operator/doc/observability/metrics/#joining-metrics","title":"Joining metrics","text":"

    Metric queries can be as simple as just the name of the metric, or can be complex with joining & grouping. A lot of the time it can be useful to tie back low level metrics to more meaningful Kubernetes resources. For example, if the memory usage is maxed out on a container and that container is constantly being OOMKilled, it can be useful to get the Deployment and Namespace of that container for debugging. Prometheus query language (or promql) allows vector matching or results (sometimes called joining).

    When using Gateway API and Kuadrant resources like HTTPRoute and RateLimitPolicy, the state metrics can be joined to Istio metrics to give a meaningful result set. Here's an example that queries the number of requests per second, and includes the name of the HTTPRoute that the traffic is for.

    sum(\n    rate(\n        istio_requests_total{}[5m]\n    )\n) by (destination_service_name)\n\n\n* on(destination_service_name) group_right \n    label_replace(gatewayapi_httproute_labels{}, \\\"destination_service_name\\\", \\\"$1\\\",\\\"service\\\", \\\"(.+)\\\")\n

    Breaking this query down, there are 2 parts. The first part is getting the rate of requests hitting the Istio gateway, aggregated to 5m intervals:

    sum(\n    rate(\n        destination_service_name{}[5m]\n    )\n) by (destination_service_name)\n

    The result set here will include a label for the destination service name (i.e. the Service in Kubernetes). This label is key to looking up the HTTPRoute this traffic belongs to.

    The 2nd part of the query uses the gatewayapi_httproute_labels metric and the label_replace function. The gatewayapi_httproute_labels metric gives a list of all httproutes, including any labels on them. The HTTPRoute in this example has a label called 'service', set to be the same as the Istio service name. This allows us to join the 2 results set. However, because the label doesn't match exactly (destination_service_name and service), we can replace the label so that it does match. That's what the label_replace does.

        label_replace(gatewayapi_httproute_labels{}, \\\"destination_service_name\\\", \\\"$1\\\",\\\"service\\\", \\\"(.+)\\\")\n

    The 2 parts are joined together using vector matching.

    * on(destination_service_name) group_right \n
    • * is the binary operator i.e. multiplication (gives join like behaviour)
    • on() specifies which labels to \"join\" the 2 results with
    • group_right enables a one to many matching.

    See the Prometheus documentation for further details on matching.

    "},{"location":"kuadrant-operator/doc/observability/tracing/","title":"Enabling tracing with a central collector","text":""},{"location":"kuadrant-operator/doc/observability/tracing/#introduction","title":"Introduction","text":"

    This guide outlines the steps to enable tracing in Istio and Kuadrant components (Authorino and Limitador), directing traces to a central collector for improved observability and troubleshooting. We'll also explore a typical troubleshooting flow using traces and logs.

    "},{"location":"kuadrant-operator/doc/observability/tracing/#prerequisites","title":"Prerequisites","text":"
    • A Kubernetes cluster with Istio and Kuadrant installed.
    • A trace collector (e.g., Jaeger or Tempo) configured to support OpenTelemetry (OTel).
    "},{"location":"kuadrant-operator/doc/observability/tracing/#configuration-steps","title":"Configuration Steps","text":""},{"location":"kuadrant-operator/doc/observability/tracing/#istio-tracing-configuration","title":"Istio Tracing Configuration","text":"

    Enable tracing in Istio by using the Telemetry API. Depending on your method for installing Istio, you will need to configure a tracing extensionProvider in your MeshConfig, Istio or IstioOperator resource as well. Here is an example Telemetry and Istio config to sample 100% of requests, if using the Istio Sail Operator.

    apiVersion: telemetry.istio.io/v1alpha1\nkind: Telemetry\nmetadata:\n  name: mesh-default\n  namespace: istio-system\nspec:\n  tracing:\n\n  - providers:\n    - name: tempo-otlp\n    randomSamplingPercentage: 100\n---\napiVersion: operator.istio.io/v1alpha1\nkind: Istio\nmetadata:\n  name: default\nspec:\n  namespace: istio-system\n  values:\n    meshConfig:\n      defaultConfig:\n        tracing: {}\n      enableTracing: true\n      extensionProviders:\n      - name: tempo-otlp\n        opentelemetry:\n          port: 4317\n          service: tempo.tempo.svc.cluster.local\n

    Important:

    The OpenTelemetry collector protocol should be explicitly set in the service port name or appProtocol fields as per the Istio documentation. For example, when using gRPC, the port name should begin with grpc- or the appProtocol should be grpc.

    "},{"location":"kuadrant-operator/doc/observability/tracing/#kuadrant-tracing-configuration","title":"Kuadrant Tracing Configuration","text":"

    The Authorino and Limitador components have request tracing capabilities. Here is an example configuration to enable and send traces to a central collector. Ensure the collector is the same one that Istio is sending traces so that they can be correlated later.

    apiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  tracing:\n    endpoint: rpc://tempo.tempo.svc.cluster.local:4317\n    insecure: true\n---\napiVersion: limitador.kuadrant.io/v1alpha1\nkind: Limitador\nmetadata:\n  name: limitador\nspec:\n  tracing:\n    endpoint: rpc://tempo.tempo.svc.cluster.local:4317\n

    Once the changes are applied, the authorino and limitador components will be redeployed tracing enabled.

    Note:

    There are plans to consolidate the tracing configuration to a single location i.e. the Kuadrant CR. This will eventually eliminate the need to configure tracing in both the Authorino and Limitador CRs.

    Important:

    Currently, trace IDs do not propagate to wasm modules in Istio/Envoy, affecting trace continuity in Limitador. This means that requests passed to limitador will not have the relavant 'parent' trace ID in its trace information. If however the trace initiation point is outside of Envoy/Istio, the 'parent' trace ID will be available to limitador and included in traces passed to the collector. This has an impact on correlating traces from limitador with traces from authorino, the gateway and any other components in the path of requests.

    "},{"location":"kuadrant-operator/doc/observability/tracing/#troubleshooting-flow-using-traces-and-logs","title":"Troubleshooting Flow Using Traces and Logs","text":"

    Using a tracing interface like the Jaeger UI or Grafana, you can search for trace information by the trace ID. You may get the trace ID from logs, or from a header in a sample request you want to troubleshoot. You can also search for recent traces, filtering by the service you want to focus on.

    Here is an example trace in the Grafana UI showing the total request time from the gateway (Istio), the time to check the curent rate limit count (and update it) in limitador and the time to check auth in Authorino:

    In limitador, it is possible to enable request logging with trace IDs to get more information on requests. This requires the log level to be increased to at least debug, so the verbosity must be set to 3 or higher in the Limitador CR. For example:

    apiVersion: limitador.kuadrant.io/v1alpha1\nkind: Limitador\nmetadata:\n  name: limitador\nspec:\n  verbosity: 3\n

    A log entry will look something like this, with the traceparent field holding the trace ID:

    \"Request received: Request { metadata: MetadataMap { headers: {\"te\": \"trailers\", \"grpc-timeout\": \"5000m\", \"content-type\": \"application/grpc\", \"traceparent\": \"00-4a2a933a23df267aed612f4694b32141-00f067aa0ba902b7-01\", \"x-envoy-internal\": \"true\", \"x-envoy-expected-rq-timeout-ms\": \"5000\"} }, message: RateLimitRequest { domain: \"default/toystore\", descriptors: [RateLimitDescriptor { entries: [Entry { key: \"limit.general_user__f5646550\", value: \"1\" }, Entry { key: \"metadata.filter_metadata.envoy\\\\.filters\\\\.http\\\\.ext_authz.identity.userid\", value: \"alice\" }], limit: None }], hits_addend: 1 }, extensions: Extensions }\"\n

    If you centrally aggregate logs using something like promtail and loki, you can jump between trace information and the relevant logs for that service:

    Using a combination of tracing and logs, you can visualise and troubleshoot reuqest timing issues and drill down to specific services. This method becomes even more powerful when combined with metrics and dashboards to get a more complete picture of your users traffic.

    "},{"location":"kuadrant-operator/doc/proposals/rlp-target-gateway-resource/","title":"RLP can target a Gateway resource","text":"

    Previous version: https://hackmd.io/IKEYD6NrSzuGQG1nVhwbcw

    Based on: https://hackmd.io/_1k6eLCNR2eb9RoSzOZetg

    "},{"location":"kuadrant-operator/doc/proposals/rlp-target-gateway-resource/#introduction","title":"Introduction","text":"

    The current RateLimitPolicy CRD already implements a targetRef with a reference to Gateway API's HTTPRoute. This doc captures the design and some implementation details of allowing the targetRef to reference a Gateway API's Gateway.

    Having in place this HTTPRoute - Gateway hierarchy, we are also considering to apply Policy Attachment's defaults/overrides approach to the RateLimitPolicy CRD. But for now, it will only be about targeting the Gateway resource.

    On designing Kuadrant's rate limiting and considering Istio/Envoy's rate limiting offering, we hit two limitations (described here). Therefore, not giving up entirely in existing Envoy's RateLimit Filter, we decided to move on and leverage the Envoy's Wasm Network Filter and implement rate limiting wasm-shim module compliant with the Envoy's Rate Limit Service (RLS). This wasm-shim module accepts a PluginConfig struct object as input configuration object.

    "},{"location":"kuadrant-operator/doc/proposals/rlp-target-gateway-resource/#use-cases-targeting-a-gateway","title":"Use Cases targeting a gateway","text":"

    A key use case is being able to provide governance over what service providers can and cannot do when exposing a service via a shared ingress gateway. As well as providing certainty that no service is exposed without my ability as a cluster administrator to protect my infrastructure from unplanned load from badly behaving clients etc.

    "},{"location":"kuadrant-operator/doc/proposals/rlp-target-gateway-resource/#goals","title":"Goals","text":"

    The goal of this document is to define:

    • The schema of this PluginConfig struct.
    • The kuadrant-operator behavior filling the PluginConfig struct having as input the RateLimitPolicy k8s objects
    • The behavior of the wasm-shim having the PluginConfig struct as input.
    "},{"location":"kuadrant-operator/doc/proposals/rlp-target-gateway-resource/#envoys-rate-limit-service-protocol","title":"Envoy's Rate Limit Service Protocol","text":"

    Kuadrant's rate limit relies on the Rate Limit Service (RLS) protocol, hence the gateway generates, based on a set of actions, a set of descriptors (one descriptor is a set of descriptor entries). Those descriptors are send to the external rate limit service provider. When multiple descriptors are provided, the external service provider will limit on ALL of them and return an OVER_LIMIT response if any of them are over limit.

    "},{"location":"kuadrant-operator/doc/proposals/rlp-target-gateway-resource/#schema-crd-of-the-ratelimitpolicy","title":"Schema (CRD) of the RateLimitPolicy","text":"
    ---\napiVersion: kuadrant.io/v1beta1\nkind: RateLimitPolicy\nmetadata:\n  name: my-rate-limit-policy\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute / Gateway\n    name: myroute / mygateway\n  rateLimits:\n\n    - rules:\n        - paths: [\"/admin/*\"]\n          methods: [\"GET\"]\n          hosts: [\"example.com\"]\n      configurations:\n        - actions:\n          - generic_key:\n              descriptor_key: admin\n              descriptor_value: \"yes\"\n      limits:\n        - conditions: [\"admin == yes\"]\n          max_value: 500\n          seconds: 30\n          variables: []\n

    .spec.rateLimits holds a list of rate limit configurations represented by the object RateLimit. Each RateLimit object represents a complete rate limit configuration. It contains three fields:

    • rules (optional): Rules allow matching hosts and/or methods and/or paths. Matching occurs when at least one rule applies against the incoming request. If rules are not set, it is equivalent to matching all the requests.

    • configurations (required): Specifies a set of rate limit configurations that could be applied. The rate limit configuration object is the equivalent of the config.route.v3.RateLimit envoy object. One configuration is, in turn, a list of rate limit actions. Each action populates a descriptor entry. A vector of descriptor entries compose a descriptor. Each configuration produces, at most, one descriptor. Depending on the incoming request, one configuration may or may not produce a rate limit descriptor. These rate limiting configuration rules provide flexibility to produce multiple descriptors. For example, you may want to define one generic rate limit descriptor and another descriptor depending on some header. If the header does not exist, the second descriptor is not generated, but traffic keeps being rate limited based on the generic descriptor.

    configurations:\n\n  - actions:\n    - request_headers:\n        header_name: \"X-MY-CUSTOM-HEADER\"\n        descriptor_key: \"custom-header\"\n        skip_if_absent: true\n  - actions:\n    - generic_key:\n        descriptor_key: admin\n        descriptor_value: \"1\"\n
    • limits (optional): configuration of the rate limiting service (Limitador). Check out limitador documentation for more information about the fields of each Limit object.

    Note: No namespace/domain defined. Kuadrant operator will figure out.

    Note: There is no PREAUTH, POSTAUTH stage defined. Ratelimiting filter should be placed after authorization filter to enable authenticated rate limiting. In the future, stage can be implemented.

    "},{"location":"kuadrant-operator/doc/proposals/rlp-target-gateway-resource/#kuadrant-operators-behavior","title":"Kuadrant-operator's behavior","text":"

    One HTTPRoute can only be targeted by one rate limit policy.

    Similarly, one Gateway can only be targeted by one rate limit policy.

    However, indirectly, one gateway will be affected by multiple rate limit policies. It is by design of the Gateway API, one gateway can be referenced by multiple HTTPRoute objects. Furthermore, one HTTPRoute can reference multiple gateways.

    The kuadrant operator will aggregate all the rate limit policies that apply for each gateway, including RLP targeting HTTPRoutes and Gateways.

    "},{"location":"kuadrant-operator/doc/proposals/rlp-target-gateway-resource/#virtualhosting-ratelimitpolicies","title":"\"VirtualHosting\" RateLimitPolicies","text":"

    Rate limit policies are scoped by the domains defined at the referenced HTTPRoute's hostnames and Gateway's Listener's Hostname.

    "},{"location":"kuadrant-operator/doc/proposals/rlp-target-gateway-resource/#multiple-httproutes-with-the-same-hostname","title":"Multiple HTTPRoutes with the same hostname","text":"

    When there are multiple HTTPRoutes with the same hostname, HTTPRoutes are all admitted and envoy merge the routing configuration in the same virtualhost. In these cases, the control plane has to \"merge\" the rate limit configuration into a single entry for the wasm filter.

    "},{"location":"kuadrant-operator/doc/proposals/rlp-target-gateway-resource/#overlapping-httproutes","title":"Overlapping HTTPRoutes","text":"

    If some RLP targets a route for *.com and other RLP targets another route for api.com, the control plane does not do any merging. A request coming for api.com will be rate limited with the rules from the RLP targeting the route api.com. Also, a request coming for other.com will be rate limited with the rules from the RLP targeting the route *.com.

    "},{"location":"kuadrant-operator/doc/proposals/rlp-target-gateway-resource/#examples","title":"examples","text":"

    RLP A -> HTTPRoute A (api.toystore.com) -> Gateway G (*.com)

    RLP B -> HTTPRoute B (other.toystore.com) -> Gateway G (*.com)

    RLP H -> HTTPRoute H (*.toystore.com) -> Gateway G (*.com)

    RLP G -> Gateway G (*.com)

    Request 1 (api.toystore.com) -> apply RLP A and RLP G

    Request 2 (other.toystore.com) -> apply RLP B and RLP G

    Request 3 (unknown.toystore.com) -> apply RLP H and RLP G

    Request 4 (other.com) -> apply RLP G

    "},{"location":"kuadrant-operator/doc/proposals/rlp-target-gateway-resource/#rate-limit-domain-limitador-namespace","title":"rate limit domain / limitador namespace","text":"

    The kuadrant operator will add domain attribute of the Envoy's Rate Limit Service (RLS). It will also add the namespace attribute of the Limitador's rate limit config. The operator will ensure that the associated actions and rate limits have a common domain/namespace.

    The value of this domain/namespace seems to be related to the virtualhost for which rate limit applies.

    "},{"location":"kuadrant-operator/doc/proposals/rlp-target-gateway-resource/#schema-of-the-wasm-filter-configuration-object-the-pluginconfig","title":"Schema of the WASM filter configuration object: the PluginConfig","text":"

    Currently the PluginConfig looks like this:

    #  The filter\u2019s behaviour in case the rate limiting service does not respond back. When it is set to true, Envoy will not allow traffic in case of communication failure between rate limiting service and the proxy.\nfailure_mode_deny: true\nratelimitpolicies:\n  default/toystore: # rate limit policy {NAMESPACE/NAME}\n    hosts: # HTTPRoute hostnames\n\n      - '*.toystore.com'\n    rules: # route level actions\n      - operations:\n          - paths:\n              - /admin/toy\n            methods:\n              - POST\n              - DELETE\n        actions:\n          - generic_key:\n              descriptor_value: yes\n              descriptor_key: admin\n    global_actions: # virtualHost level actions\n      - generic_key:\n          descriptor_value: yes\n          descriptor_key: vhaction\n    upstream_cluster: rate-limit-cluster # Limitador address reference\n    domain: toystore-app # RLS protocol domain value\n

    Proposed new design for the WASM filter configuration object (PluginConfig struct):

    #  The filter\u2019s behaviour in case the rate limiting service does not respond back. When it is set to true, Envoy will not allow traffic in case of communication failure between rate limiting service and the proxy.\nfailure_mode_deny: true\nrate_limit_policies:\n\n  - name: toystore\n    rate_limit_domain: toystore-app\n    upstream_cluster: rate-limit-cluster\n    hostnames: [\"*.toystore.com\"]\n    gateway_actions:\n      - rules:\n          - paths: [\"/admin/toy\"]\n            methods: [\"GET\"]\n            hosts: [\"pets.toystore.com\"]\n        configurations:\n          - actions:\n            - generic_key:\n                descriptor_key: admin\n                descriptor_value: \"1\"\n

    Update highlights:

    • [minor] rate_limit_policies is a list instead of a map indexed by the name/namespace.
    • [major] no distinction between \"rules\" and global actions
    • [major] more aligned with RLS: multiple descriptors structured by \"rate limit configurations\" with matching rules
    "},{"location":"kuadrant-operator/doc/proposals/rlp-target-gateway-resource/#wasm-shim","title":"WASM-SHIM","text":"

    WASM filter rate limit policies are not exactly the same as user managed RateLimitPolicy custom resources. The WASM filter rate limit policies is part of the internal configuration and therefore not exposed to the end user.

    At the WASM filter level, there are no route level or gateway level rate limit policies. The rate limit policies in the wasm plugin configuration may not map 1:1 to user managed RateLimitPolicy custom resources. WASM rate limit policies have an internal logical name and a set of hostnames to activate it based on the incoming request\u2019s host header.

    The WASM filter builds a tree based data structure holding the rate limit policies. The longest (sub)domain match is used to select the policy to be applied. Only one policy is being applied per invocation.

    "},{"location":"kuadrant-operator/doc/proposals/rlp-target-gateway-resource/#rate-limit-configurations","title":"rate limit configurations","text":"

    The WASM filter configuration object contains a list of rate limit configurations to build a list of Envoy's RLS descriptors. These configurations are defined at

    rate_limit_policies[*].gateway_actions[*].configurations\n

    For example:

    configurations:\n\n- actions:\n   - generic_key:\n        descriptor_key: admin\n        descriptor_value: \"1\"\n

    How to read the policy:

    • Each configuration produces, at most, one descriptor. Depending on the incoming request, one configuration may or may not produce a rate limit descriptor.

    • Each policy configuration has associated, optionally, a set of rules to match. Rules allow matching hosts and/or methods and/or paths. Matching occurs when at least one rule applies against the incoming request. If rules are not set, it is equivalent to matching all the requests.

    • Each configuration object defines a list of actions. Each action may (or may not) produce a descriptor entry (descriptor list item). If an action cannot append a descriptor entry, no descriptor is generated for the configuration.

    Note: The external rate limit service will be called when the gateway_actions object produces at least one not empty descriptor.

    "},{"location":"kuadrant-operator/doc/proposals/rlp-target-gateway-resource/#example","title":"example","text":"

    WASM filter rate limit policy for *.toystore.com. I want some rate limit descriptors configuration only for api.toystore.com and another set of descriptors for admin.toystore.com. The wasm filter config would look like this:

    failure_mode_deny: true\nrate_limit_policies:\n\n  - name: toystore\n    rate_limit_domain: toystore-app\n    upstream_cluster: rate-limit-cluster\n    hostnames: [\"*.toystore.com\"]\n    gateway_actions:\n      - configurations:  # no rules. Applies to all *.toystore.com traffic\n          - actions:\n              - generic_key:\n                  descriptor_key: toystore-app\n                  descriptor_value: \"1\"\n      - rules:\n          - hosts: [\"api.toystore.com\"]\n        configurations:\n          - actions:\n              - generic_key:\n                  descriptor_key: api\n                  descriptor_value: \"1\"\n      - rules:\n          - hosts: [\"admin.toystore.com\"]\n        configurations:\n          - actions:\n              - generic_key:\n                  descriptor_key: admin\n                  descriptor_value: \"1\"\n
    • When a request for api.toystore.com hits the filter, the descriptors generated would be:

    descriptor 1

    (\"toystore-app\", \"1\")\n
    descriptor 2
    (\"api\", \"1\")\n

    • When a request for admin.toystore.com hits the filter, the descriptors generated would be:

    descriptor 1

    (\"toystore-app\", \"1\")\n
    descriptor 2
    (\"admin\", \"1\")\n

    • When a request for other.toystore.com hits the filter, the descriptors generated would be: descriptor 1
      (\"toystore-app\", \"1\")\n
    "},{"location":"kuadrant-operator/doc/reference/authpolicy/","title":"The AuthPolicy Custom Resource Definition (CRD)","text":"
    • AuthPolicy
    • AuthPolicySpec
    • AuthScheme
      • AuthRuleCommon
      • AuthenticationRule
      • MetadataRule
      • AuthorizationRule
      • ResponseSpec
      • SuccessResponseSpec
        • SuccessResponseItem
      • CallbackRule
    • NamedPattern
    • AuthPolicyCommonSpec
    • AuthPolicyStatus
    • ConditionSpec
    "},{"location":"kuadrant-operator/doc/reference/authpolicy/#authpolicy","title":"AuthPolicy","text":"Field Type Required Description spec AuthPolicySpec Yes The specification for AuthPolicy custom resource status AuthPolicyStatus No The status for the custom resource"},{"location":"kuadrant-operator/doc/reference/authpolicy/#authpolicyspec","title":"AuthPolicySpec","text":"Field Type Required Description targetRef LocalPolicyTargetReference Yes Reference to a Kubernetes resource that the policy attaches to rules AuthScheme No Implicit default authentication/authorization rules routeSelectors []RouteSelector No List of implicit default selectors of HTTPRouteRules whose matching rules activate the policy. At least one HTTPRouteRule must be selected to activate the policy. If omitted, all HTTPRouteRules of the targeted HTTPRoute activate the policy. Do not use it in policies targeting a Gateway. patterns MapNamedPattern> No Implicit default named patterns of lists of selector, operator and value tuples, to be reused in when conditions and pattern-matching authorization rules. when []PatternExpressionOrRef No List of implicit default additional dynamic conditions (expressions) to activate the policy. Use it for filtering attributes that cannot be expressed in the targeted HTTPRoute's spec.hostnames and spec.rules.matches fields, or when targeting a Gateway. defaults AuthPolicyCommonSpec No Explicit default definitions. This field is mutually exclusive with any of the implicit default definitions: spec.rules, spec.routeSelectors, spec.patterns, spec.when overrides AuthPolicyCommonSpec No Atomic overrides definitions. This field is mutually exclusive with any of the implicit or explicit default definitions: spec.rules, spec.routeSelectors, spec.patterns, spec.when, spec.default"},{"location":"kuadrant-operator/doc/reference/authpolicy/#authpolicycommonspec","title":"AuthPolicyCommonSpec","text":"Field Type Required Description rules AuthScheme No Authentication/authorization rules routeSelectors []RouteSelector No List of selectors of HTTPRouteRules whose matching rules activate the policy. At least one HTTPRouteRule must be selected to activate the policy. If omitted, all HTTPRouteRules of the targeted HTTPRoute activate the policy. Do not use it in policies targeting a Gateway. patterns MapNamedPattern> No Named patterns of lists of selector, operator and value tuples, to be reused in when conditions and pattern-matching authorization rules. when []PatternExpressionOrRef No List of additional dynamic conditions (expressions) to activate the policy. Use it for filtering attributes that cannot be expressed in the targeted HTTPRoute's spec.hostnames and spec.rules.matches fields, or when targeting a Gateway."},{"location":"kuadrant-operator/doc/reference/authpolicy/#authscheme","title":"AuthScheme","text":"Field Type Required Description authentication MapAuthenticationRule> No Authentication rules. At least one config MUST evaluate to a valid identity object for the auth request to be successful. If omitted or empty, anonymous access is assumed. metadata MapMetadataRule> No Rules for fetching auth metadata from external sources. authorization MapAuthorizationRule> No Authorization rules. All policies MUST allow access for the auth request be successful. response ResponseSpec No Customizations to the response to the authorization request. Use it to set custom values for unauthenticated, unauthorized, and/or success access request. callbacks MapCallbackRule> No Rules for post-authorization callback requests to external services. Triggered regardless of the result of the authorization request."},{"location":"kuadrant-operator/doc/reference/authpolicy/#authrulecommon","title":"AuthRuleCommon","text":"Field Type Required Description routeSelectors []RouteSelector No List of selectors of HTTPRouteRules whose matching rules activate the auth rule. At least one HTTPRouteRule must be selected to activate the auth rule. If omitted, the auth rule is activated at all requests where the policy is enforced. Do not use it in policies targeting a Gateway. when []PatternExpressionOrRef No List of additional dynamic conditions (expressions) to activate the auth rule. Use it for filtering attributes that cannot be expressed in the targeted HTTPRoute's spec.hostnames and spec.rules.matches fields, or when targeting a Gateway. cache Caching spec No Caching options for the resolved object returned when applying this auth rule. (Default: disabled) priority Integer No Priority group of the auth rule. All rules in the same priority group are evaluated concurrently; consecutive priority groups are evaluated sequentially. (Default: 0) metrics Boolean No Whether the auth rule emits individual observability metrics. (Default: false)"},{"location":"kuadrant-operator/doc/reference/authpolicy/#authenticationrule","title":"AuthenticationRule","text":"Field Type Required Description apiKey API Key authentication spec No Authentication based on API keys stored in Kubernetes secrets. Use one of: apiKey, jwt, oauth2Introspection, kubernetesTokenReview, x509, plain, anonymous. kubernetesTokenReview KubernetesTokenReview spec No Authentication by Kubernetes token review. Use one of: apiKey, jwt, oauth2Introspection, kubernetesTokenReview, x509, plain, anonymous. jwt JWT verification spec No Authentication based on JSON Web Tokens (JWT). Use one of: apiKey, jwt, oauth2Introspection, kubernetesTokenReview, x509, plain, anonymous. oauth2Introspection OAuth2 Token Introscpection spec No Authentication by OAuth2 token introspection. Use one of: apiKey, jwt, oauth2Introspection, kubernetesTokenReview, x509, plain, anonymous. x509 X.509 authentication spec No Authentication based on client X.509 certificates. The certificates presented by the clients must be signed by a trusted CA whose certificates are stored in Kubernetes secrets. Use one of: apiKey, jwt, oauth2Introspection, kubernetesTokenReview, x509, plain, anonymous. plain Plain identity object spec No Identity object extracted from the context. Use this method when authentication is performed beforehand by a proxy and the resulting object passed to Authorino as JSON in the auth request. Use one of: apiKey, jwt, oauth2Introspection, kubernetesTokenReview, x509, plain, anonymous. anonymous Anonymous access No Anonymous access. Use one of: apiKey, jwt, oauth2Introspection, kubernetesTokenReview, x509, plain, anonymous. credentials Auth credentials spec No Customizations to where credentials are required to be passed in the request for authentication based on this auth rule. Defaults to HTTP Authorization header with prefix \"Bearer\". overrides Identity extension spec No JSON overrides to set to the resolved identity object. Do not use it with identity objects of other JSON types (array, string, etc). defaults Identity extension spec No JSON defaults to set to the resolved identity object. Do not use it with identity objects of other JSON types (array, string, etc). (inline) AuthRuleCommon No"},{"location":"kuadrant-operator/doc/reference/authpolicy/#metadatarule","title":"MetadataRule","text":"Field Type Required Description http HTTP GET/GET-by-POST external metadata spec No External source of auth metadata via HTTP request. Use one of: http, userInfo, uma. userInfo OIDC UserInfo spec No OpendID Connect UserInfo linked to an OIDC authentication rule declared in this same AuthPolicy. Use one of: http, userInfo, uma. uma UMA metadata spec No User-Managed Access (UMA) source of resource data. Use one of: http, userInfo, uma. (inline) AuthRuleCommon No"},{"location":"kuadrant-operator/doc/reference/authpolicy/#authorizationrule","title":"AuthorizationRule","text":"Field Type Required Description patternMatching Pattern-matching authorization spec No Pattern-matching authorization rules. Use one of: patternMatching, opa, kubernetesSubjectAccessReview, spicedb. opa OPA authorization spec No Open Policy Agent (OPA) Rego policy. Use one of: patternMatching, opa, kubernetesSubjectAccessReview, spicedb. kubernetesSubjectAccessReview Kubernetes SubjectAccessReview spec No Authorization by Kubernetes SubjectAccessReview. Use one of: patternMatching, opa, kubernetesSubjectAccessReview, spicedb. spicedb SpiceDB authorization spec No Authorization decision delegated to external Authzed/SpiceDB server. Use one of: patternMatching, opa, kubernetesSubjectAccessReview, spicedb. (inline) AuthRuleCommon No"},{"location":"kuadrant-operator/doc/reference/authpolicy/#responsespec","title":"ResponseSpec","text":"Field Type Required Description unauthenticated Custom denial status spec No Customizations on the denial status and other HTTP attributes when the request is unauthenticated. (Default: 401 Unauthorized) unauthorized Custom denial status spec No Customizations on the denial status and other HTTP attributes when the request is unauthorized. (Default: 403 Forbidden) success SuccessResponseSpec No Response items to be included in the auth response when the request is authenticated and authorized."},{"location":"kuadrant-operator/doc/reference/authpolicy/#successresponsespec","title":"SuccessResponseSpec","text":"Field Type Required Description headers MapSuccessResponseItem> No Custom success response items wrapped as HTTP headers to be injected in the request. dynamicMetadata MapSuccessResponseItem> No Custom success response items wrapped as Envoy Dynamic Metadata. Use it to pass data along to other proxy filters, such as the rate-limit filter."},{"location":"kuadrant-operator/doc/reference/authpolicy/#successresponseitem","title":"SuccessResponseItem","text":"Field Type Required Description plain Plain text response item No Plain text content. Use one of: plain, json, wristband. json JSON injection response item No Specification of a JSON object. Use one of: plain, json, wristband. wristband Festival Wristband token response item No Specification of a JSON object. Use one of: plain, json, wristband. key String No The key used to add the custom response item (name of the HTTP header or root property of the Dynamic Metadata object). Defaults to the name of the response item if omitted."},{"location":"kuadrant-operator/doc/reference/authpolicy/#callbackrule","title":"CallbackRule","text":"Field Type Required Description http HTTP endpoints callback spec No HTTP endpoint settings to build the callback request (webhook). (inline) AuthRuleCommon No"},{"location":"kuadrant-operator/doc/reference/authpolicy/#namedpattern","title":"NamedPattern","text":"Field Type Required Description selector String Yes A valid Well-known attribute whose resolved value in the data plane will be compared to value, using the operator. operator String Yes The binary operator to be applied to the resolved value specified by the selector. One of: eq (equal to), neq (not equal to), incl (includes; for arrays), excl (excludes; for arrays), matches (regex). value String Yes The static value to be compared to the one resolved from the selector."},{"location":"kuadrant-operator/doc/reference/authpolicy/#authpolicystatus","title":"AuthPolicyStatus","text":"Field Type Description observedGeneration String Number of the last observed generation of the resource. Use it to check if the status info is up to date with latest resource spec. conditions []ConditionSpec List of conditions that define that status of the resource."},{"location":"kuadrant-operator/doc/reference/authpolicy/#conditionspec","title":"ConditionSpec","text":"
    • The lastTransitionTime field provides a timestamp for when the entity last transitioned from one status to another.
    • The message field is a human-readable message indicating details about the transition.
    • The reason field is a unique, one-word, CamelCase reason for the condition\u2019s last transition.
    • The status field is a string, with possible values True, False, and Unknown.
    • The type field is a string with the following possible values:
    • Available: the resource has successfully configured;
    Field Type Description type String Condition Type status String Status: True, False, Unknown reason String Condition state reason message String Condition state description lastTransitionTime Timestamp Last transition timestamp"},{"location":"kuadrant-operator/doc/reference/dnspolicy/","title":"The DNSPolicy Custom Resource Definition (CRD)","text":"
    • DNSPolicy
    • DNSPolicySpec
      • ProviderRefs
      • HealthCheckSpec
      • LoadBalancingSpec
      • LoadBalancingWeighted
        • CustomWeight
      • LoadBalancingGeo
    • DNSPolicyStatus
      • HealthCheckStatus
    "},{"location":"kuadrant-operator/doc/reference/dnspolicy/#dnspolicy","title":"DNSPolicy","text":"Field Type Required Description spec DNSPolicySpec Yes The specification for DNSPolicy custom resource status DNSPolicyStatus No The status for the custom resource"},{"location":"kuadrant-operator/doc/reference/dnspolicy/#dnspolicyspec","title":"DNSPolicySpec","text":"Field Type Required Description targetRef Gateway API LocalPolicyTargetReference Yes Reference to a Kubernetes resource that the policy attaches to healthCheck HealthCheckSpec No HealthCheck spec loadBalancing LoadBalancingSpec Yes(loadbalanced only) LoadBalancing Spec, required when routingStrategy is \"loadbalanced\" routingStrategy String (immutable) Yes Immutable! Routing Strategy to use, one of \"simple\" or \"loadbalanced\" providerRefs ProviderRefs Yes array of references to providers. (currently limited to max 1)"},{"location":"kuadrant-operator/doc/reference/dnspolicy/#providerrefs","title":"ProviderRefs","text":"Field Type Required Description providerRefs []ProviderRef Yes max 1 reference. This is an array of providerRef that points to a local secret(s) that contains the required provider auth values"},{"location":"kuadrant-operator/doc/reference/dnspolicy/#providerref","title":"ProviderRef","text":"Field Type Required Description name String Yes Name of the secret in the same namespace that contains the provider credentials"},{"location":"kuadrant-operator/doc/reference/dnspolicy/#healthcheckspec","title":"HealthCheckSpec","text":"Field Type Required Description endpoint String Yes Endpoint is the path to append to the host to reach the expected health check port Number Yes Port to connect to the host on protocol String Yes Protocol to use when connecting to the host, valid values are \"HTTP\" or \"HTTPS\" failureThreshold Number Yes FailureThreshold is a limit of consecutive failures that must occur for a host to be considered unhealthy"},{"location":"kuadrant-operator/doc/reference/dnspolicy/#loadbalancingspec","title":"LoadBalancingSpec","text":"Field Type Required Description weighted LoadBalancingWeighted Yes Weighted routing spec geo LoadBalancingGeo Yes Geo routing spec"},{"location":"kuadrant-operator/doc/reference/dnspolicy/#loadbalancingweighted","title":"LoadBalancingWeighted","text":"Field Type Required Description defaultWeight Number Yes Default weight to apply to created records custom []CustomWeight No Custom weights to manipulate records weights based on label selectors"},{"location":"kuadrant-operator/doc/reference/dnspolicy/#customweight","title":"CustomWeight","text":"Field Type Description selector metav1.LabelSelector Label Selector to specify resources that should have this weight applied weight Number Weight value to apply for matching resources"},{"location":"kuadrant-operator/doc/reference/dnspolicy/#loadbalancinggeo","title":"LoadBalancingGeo","text":"Field Type Required Description defaultGeo String Yes Default geo to apply to records"},{"location":"kuadrant-operator/doc/reference/dnspolicy/#dnspolicystatus","title":"DNSPolicyStatus","text":"Field Type Description observedGeneration String Number of the last observed generation of the resource. Use it to check if the status info is up to date with latest resource spec. conditions []Kubernetes meta/v1.Condition List of conditions that define that status of the resource. healthCheck HealthCheckStatus HealthCheck status. recordConditions [String][]Kubernetes meta/v1.Condition Status of individual DNSRecords owned by this policy."},{"location":"kuadrant-operator/doc/reference/dnspolicy/#healthcheckstatus","title":"HealthCheckStatus","text":"Field Type Description conditions []Kubernetes meta/v1.Condition List of conditions that define that status of the resource."},{"location":"kuadrant-operator/doc/reference/kuadrant/","title":"The Kuadrant Custom Resource Definition (CRD)","text":""},{"location":"kuadrant-operator/doc/reference/kuadrant/#kuadrant","title":"kuadrant","text":"Field Type Required Description spec KuadrantSpec No Blank specification status KuadrantStatus No The status for the custom resources."},{"location":"kuadrant-operator/doc/reference/kuadrant/#kuadrantspec","title":"KuadrantSpec","text":"

    Currently blank specification.

    "},{"location":"kuadrant-operator/doc/reference/kuadrant/#kuadrantstatus","title":"KuadrantStatus","text":"Field Type Description observedGeneration String Number of the last observed generation of the resource. Use it to check if the status info is up to date with latest resource spec. conditions []ConditionSpec List of conditions that define that status of the resource."},{"location":"kuadrant-operator/doc/reference/ratelimitpolicy/","title":"The RateLimitPolicy Custom Resource Definition (CRD)","text":"
    • RateLimitPolicy
    • RateLimitPolicySpec
      • RateLimitPolicyCommonSpec
      • Limit
        • RateLimit
        • WhenCondition
    • RateLimitPolicyStatus
      • ConditionSpec
    "},{"location":"kuadrant-operator/doc/reference/ratelimitpolicy/#ratelimitpolicy","title":"RateLimitPolicy","text":"Field Type Required Description spec RateLimitPolicySpec Yes The specification for RateLimitPolicy custom resource status RateLimitPolicyStatus No The status for the custom resource"},{"location":"kuadrant-operator/doc/reference/ratelimitpolicy/#ratelimitpolicyspec","title":"RateLimitPolicySpec","text":"Field Type Required Description targetRef LocalPolicyTargetReference Yes Reference to a Kubernetes resource that the policy attaches to defaults RateLimitPolicyCommonSpec No Default limit definitions. This field is mutually exclusive with the limits field overrides RateLimitPolicyCommonSpec No Overrides limit definitions. This field is mutually exclusive with the limits field and defaults field. This field is only allowed for policies targeting Gateway in targetRef.kind limits MapLimit> No Limit definitions. This field is mutually exclusive with the defaults field"},{"location":"kuadrant-operator/doc/reference/ratelimitpolicy/#ratelimitpolicycommonspec","title":"RateLimitPolicyCommonSpec","text":"Field Type Required Description limits MapLimit> No Explicit Limit definitions. This field is mutually exclusive with RateLimitPolicySpec limits field"},{"location":"kuadrant-operator/doc/reference/ratelimitpolicy/#limit","title":"Limit","text":"Field Type Required Description rates []RateLimit No List of rate limits associated with the limit definition counters []String No List of rate limit counter qualifiers. Items must be a valid Well-known attribute. Each distinct value resolved in the data plane starts a separate counter for each rate limit. routeSelectors []RouteSelector No List of selectors of HTTPRouteRules whose matching rules activate the limit. At least one HTTPRouteRule must be selected to activate the limit. If omitted, all HTTPRouteRules of the targeted HTTPRoute activate the limit. Do not use it in policies targeting a Gateway. when []WhenCondition No List of additional dynamic conditions (expressions) to activate the limit. All expression must evaluate to true for the limit to be applied. Use it for filtering attributes that cannot be expressed in the targeted HTTPRoute's spec.hostnames and spec.rules.matches fields, or when targeting a Gateway."},{"location":"kuadrant-operator/doc/reference/ratelimitpolicy/#ratelimit","title":"RateLimit","text":"Field Type Required Description limit Number Yes Maximum value allowed within the given period of time (duration) duration Number Yes The period of time in the specified unit that the limit applies unit String Yes Unit of time for the duration of the limit. One-of: \"second\", \"minute\", \"hour\", \"day\"."},{"location":"kuadrant-operator/doc/reference/ratelimitpolicy/#whencondition","title":"WhenCondition","text":"Field Type Required Description selector String Yes A valid Well-known attribute whose resolved value in the data plane will be compared to value, using the operator. operator String Yes The binary operator to be applied to the resolved value specified by the selector. One-of: \"eq\" (equal to), \"neq\" (not equal to) value String Yes The static value to be compared to the one resolved from the selector."},{"location":"kuadrant-operator/doc/reference/ratelimitpolicy/#ratelimitpolicystatus","title":"RateLimitPolicyStatus","text":"Field Type Description observedGeneration String Number of the last observed generation of the resource. Use it to check if the status info is up to date with latest resource spec. conditions []ConditionSpec List of conditions that define that status of the resource."},{"location":"kuadrant-operator/doc/reference/ratelimitpolicy/#conditionspec","title":"ConditionSpec","text":"
    • The lastTransitionTime field provides a timestamp for when the entity last transitioned from one status to another.
    • The message field is a human-readable message indicating details about the transition.
    • The reason field is a unique, one-word, CamelCase reason for the condition\u2019s last transition.
    • The status field is a string, with possible values True, False, and Unknown.
    • The type field is a string with the following possible values:
      • Available: the resource has successfully configured;
    Field Type Description type String Condition Type status String Status: True, False, Unknown reason String Condition state reason message String Condition state description lastTransitionTime Timestamp Last transition timestamp"},{"location":"kuadrant-operator/doc/reference/route-selectors/","title":"Route selectors","text":"

    The route selectors of a policy spec or policy rule (limit definition or auth rule) allow to specify selectors of routes or parts of a route, that transitively induce a set of conditions for a policy or policy rule to be enforced. It is defined as a set of HTTP route matching rules, where these matching rules must exist, partially or identically stated within the HTTPRouteRules of the HTTPRoute that is targeted by the policy.

    "},{"location":"kuadrant-operator/doc/reference/route-selectors/#the-routeselectors-field","title":"The routeSelectors field","text":"

    The routeSelectors field can be found in policy specs and policy rules (limit definition or auth rule).

    Field Type Required Description routeSelectors []RouteSelector No List of route selectors of HTTPRouteRules whose HTTPRouteMatches activate the policy or policy rule."},{"location":"kuadrant-operator/doc/reference/route-selectors/#routeselector","title":"RouteSelector","text":"

    Each RouteSelector is an object composed of a set of HTTPRouteMatch objects (from Gateway API), and an additional hostnames field.

    Field Type Required Description matches []HTTPRouteMatch No List of selectors of HTTPRouteRules whose matching rules activate the policy or policy rule hostnames []Hostname No List of hostnames of the HTTPRoute that activate the policy or policy rule"},{"location":"kuadrant-operator/doc/reference/route-selectors/#mechanics-of-the-route-selectors","title":"Mechanics of the route selectors","text":"

    Route selectors matches and the HTTPRoute's HTTPRouteMatches are pairwise compared to select or not select HTTPRouteRules that should activate a policy rule. To decide whether the route selector selects a HTTPRouteRule or not, for each pair of route selector HTTPRouteMatch and HTTPRoute HTTPRouteMatch:

    1. The route selector selects the HTTPRoute's HTTPRouteRule if the HTTPRouteRule contains at least one HTTPRouteMatch that specifies fields that are literally identical to all the fields specified by at least one HTTPRouteMatch of the route selector.
    2. A HTTPRouteMatch within a HTTPRouteRule may include other fields that are not specified in a route selector match, and yet the route selector match selects the HTTPRouteRule if all fields of the route selector match are identically included in the HTTPRouteRule's HTTPRouteMatch; the opposite is NOT true.
    3. Each field path of a HTTPRouteMatch, as well as each field method of a HTTPRouteMatch, as well as each element of the fields headers and queryParams of a HTTPRouteMatch, is atomic \u2013 this is true for the HTTPRouteMatches within a HTTPRouteRule, as well as for HTTPRouteMatches of a route selector.

    Additionally, at least one hostname specified in a route selector must identically match one of the hostnames specified (or inherited, when omitted) by the targeted HTTPRoute.

    The semantics of the route selectors allows to assertively relate policy rule definitions to routing rules, with benefits for identifying the subsets of the network that are covered by a policy rule, while preventing unreachable definitions, as well as the overhead associated with the maintenance of such rules across multiple resources throughout time, according to network topology beneath. Moreover, the requirement of not having to be a full copy of the targeted HTTPRouteRule matches, but only partially identical, helps prevent repetition to some degree, as well as it enables to more easily define policy rules that scope across multiple HTTPRouteRules (by specifying less rules in the selector).

    "},{"location":"kuadrant-operator/doc/reference/route-selectors/#golden-rules-and-corner-cases","title":"Golden rules and corner cases","text":"

    A few rules and corner cases to keep in mind while using the RLP's routeSelectors:

    1. The golden rule \u2013 The route selectors in a policy or policy rule are not to be interpreted as the route matching rules that activate the policy or policy rule, but as selectors of the route rules that activate the policy or policy rule.
    2. Due to (1) above, this can lead to cases, e.g., where a route selector that states matches: [{ method: POST }] selects a HTTPRouteRule that defines matches: [{ method: POST }, { method: GET }], effectively causing the policy or policy rule to be activated on requests to the HTTP method POST, but also to the HTTP method GET.
    3. The requirement for the route selector match to state patterns that are identical to the patterns stated by the HTTPRouteRule (partially or entirely) makes, e.g., a route selector such as matches: { path: { type: PathPrefix, value: /foo } } to select a HTTPRouteRule that defines matches: { path: { type: PathPrefix, value: /foo }, method: GET }, but not to select a HTTPRouteRule that only defines matches: { method: GET }, even though the latter includes technically all HTTP paths; nor it selects a HTTPRouteRule that only defines matches: { path: { type: Exact, value: /foo } }, even though all requests to the exact path /foo are also technically requests to /foo*.
    4. The atomicity property of fields of the route selectors makes, e.g., a route selector such as matches: { path: { value: /foo } } to select a HTTPRouteRule that defines matches: { path: { value: /foo } }, but not to select a HTTPRouteRule that only defines matches: { path: { type: PathPrefix, value: /foo } }. (This case may actually never happen because PathPrefix is the default value for path.type and will be set automatically by the Kubernetes API server.)

    Due to the nature of route selectors of defining pointers to HTTPRouteRules, the routeSelectors field is not supported in a RLP that targets a Gateway resource.

    "},{"location":"kuadrant-operator/doc/reference/tlspolicy/","title":"The TLSPolicy Custom Resource Definition (CRD)","text":"
    • TLSPolicy
    • TLSPolicySpec
    • TLSPolicyStatus
    "},{"location":"kuadrant-operator/doc/reference/tlspolicy/#tlspolicy","title":"TLSPolicy","text":"Field Type Required Description spec TLSPolicySpec Yes The specification for TLSPolicy custom resource status TLSPolicyStatus No The status for the custom resource"},{"location":"kuadrant-operator/doc/reference/tlspolicy/#tlspolicyspec","title":"TLSPolicySpec","text":"Field Type Required Description targetRef Gateway API LocalPolicyTargetReference Yes Reference to a Kuberentes resource that the policy attaches to issuerRef CertManager meta/v1.ObjectReference Yes IssuerRef is a reference to the issuer for the created certificate commonName String No CommonName is a common name to be used on the created certificate duration Kubernetes meta/v1.Duration No The requested 'duration' (i.e. lifetime) of the created certificate. renewBefore Kubernetes meta/v1.Duration No How long before the currently issued certificate's expiry cert-manager should renew the certificate. usages []CertManager v1.KeyUsage No Usages is the set of x509 usages that are requested for the certificate. Defaults to digital signature and key encipherment if not specified revisionHistoryLimit Number No RevisionHistoryLimit is the maximum number of CertificateRequest revisions that are maintained in the Certificate's history privateKey CertManager meta/v1.CertificatePrivateKey No Options to control private keys used for the Certificate

    IssuerRef certmanmetav1.ObjectReference

    "},{"location":"kuadrant-operator/doc/reference/tlspolicy/#tlspolicystatus","title":"TLSPolicyStatus","text":"Field Type Description observedGeneration String Number of the last observed generation of the resource. Use it to check if the status info is up to date with latest resource spec. conditions []Kubernetes meta/v1.Condition List of conditions that define that status of the resource."},{"location":"kuadrant-operator/doc/user-guides/auth-for-app-devs-and-platform-engineers/","title":"Enforcing authentication & authorization with Kuadrant AuthPolicy","text":"

    This guide walks you through the process of setting up a local Kubernetes cluster with Kuadrant where you will protect Gateway API endpoints by declaring Kuadrant AuthPolicy custom resources.

    Two AuthPolicies will be declared:

    Use case AuthPolicy App developer 1 AuthPolicy targeting a HTTPRoute that routes traffic to a sample Toy Store application, and enforces API key authentication to all requests in this route, as well as requires API key owners to be mapped to groups:admins metadata to access a specific HTTPRouteRule of the route. Platform engineer use-case 1 AuthPolicy targeting the istio-ingressgateway Gateway that enforces a trivial \"deny-all\" policy that locks down any other HTTPRoute attached to the Gateway.

    Topology:

                       \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n                   \u2502 (AuthPolicy)  \u2502\n                   \u2502    gw-auth    \u2502\n                   \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n                           \u2502\n                           \u25bc\n                \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n                \u2502     (Gateway)        \u2502\n                \u2502 istio-ingressgateway \u2502\n          \u250c\u2500\u2500\u2500\u2500\u25ba\u2502                      \u2502\u25c4\u2500\u2500\u2500\u2510\n          \u2502     \u2502          *           \u2502    \u2502\n          \u2502     \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518    \u2502\n          \u2502                                 \u2502\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510              \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502   (HTTPRoute)    \u2502              \u2502   (HTTPRoute)    \u2502\n \u2502    toystore      \u2502              \u2502      other       \u2502\n \u2502                  \u2502              \u2502                  \u2502\n \u2502 api.toystore.com \u2502              \u2502 *.other-apps.com \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518              \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n          \u25b2\n          \u2502\n  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n  \u2502 (AuthPolicy)  \u2502\n  \u2502    toystore   \u2502\n  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n
    "},{"location":"kuadrant-operator/doc/user-guides/auth-for-app-devs-and-platform-engineers/#requisites","title":"Requisites","text":"
    • Docker
    "},{"location":"kuadrant-operator/doc/user-guides/auth-for-app-devs-and-platform-engineers/#run-the-guide-1-4","title":"Run the guide \u2460 \u2192 \u2463","text":""},{"location":"kuadrant-operator/doc/user-guides/auth-for-app-devs-and-platform-engineers/#1-setup-persona-cluster-admin","title":"\u2460 Setup (Persona: Cluster admin)","text":"

    Clone the repo:

    git clone git@github.com:Kuadrant/kuadrant-operator.git && cd kuadrant-operator\n

    Run the following command to create a local Kubernetes cluster with Kind, install & deploy Kuadrant:

    make local-setup\n

    Request an instance of Kuadrant in the kuadrant-system namespace:

    kubectl -n kuadrant-system apply -f - <<EOF\napiVersion: kuadrant.io/v1beta1\nkind: Kuadrant\nmetadata:\n  name: kuadrant\nspec: {}\nEOF\n
    "},{"location":"kuadrant-operator/doc/user-guides/auth-for-app-devs-and-platform-engineers/#2-deploy-the-toy-store-sample-application-persona-app-developer","title":"\u2461 Deploy the Toy Store sample application (Persona: App developer)","text":"
    kubectl apply -f examples/toystore/toystore.yaml\n\nkubectl apply -f - <<EOF\napiVersion: gateway.networking.k8s.io/v1\nkind: HTTPRoute\nmetadata:\n  name: toystore\nspec:\n  parentRefs:\n\n  - name: istio-ingressgateway\n    namespace: istio-system\n  hostnames:\n  - api.toystore.com\n  rules:\n  - matches:\n    - method: GET\n      path:\n        type: PathPrefix\n        value: \"/cars\"\n    - method: GET\n      path:\n        type: PathPrefix\n        value: \"/dolls\"\n    backendRefs:\n    - name: toystore\n      port: 80\n  - matches:\n    - path:\n        type: PathPrefix\n        value: \"/admin\"\n    backendRefs:\n    - name: toystore\n      port: 80\nEOF\n

    Export the gateway hostname and port:

    export INGRESS_HOST=$(kubectl get gtw istio-ingressgateway -n istio-system -o jsonpath='{.status.addresses[0].value}')\nexport INGRESS_PORT=$(kubectl get gtw istio-ingressgateway -n istio-system -o jsonpath='{.spec.listeners[?(@.name==\"http\")].port}')\nexport GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT\n

    Send requests to the application unprotected:

    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/cars -i\n# HTTP/1.1 200 OK\n
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/dolls -i\n# HTTP/1.1 200 OK\n
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/admin -i\n# HTTP/1.1 200 OK\n
    "},{"location":"kuadrant-operator/doc/user-guides/auth-for-app-devs-and-platform-engineers/#3-protect-the-toy-store-application-persona-app-developer","title":"\u2462 Protect the Toy Store application (Persona: App developer)","text":"

    Create the AuthPolicy to enforce the following auth rules:

    • Authentication:
    • All users must present a valid API key
    • Authorization:
    • /admin* routes require user mapped to the admins group (kuadrant.io/groups=admins annotation added to the Kubernetes API key Secret)
    kubectl apply -f - <<EOF\napiVersion: kuadrant.io/v1beta2\nkind: AuthPolicy\nmetadata:\n  name: toystore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: toystore\n  rules:\n    authentication:\n      \"api-key-authn\":\n        apiKey:\n          selector: {}\n        credentials:\n          authorizationHeader:\n            prefix: APIKEY\n    authorization:\n      \"only-admins\":\n        opa:\n          rego: |\n            groups := split(object.get(input.auth.identity.metadata.annotations, \"kuadrant.io/groups\", \"\"), \",\")\n            allow { groups[_] == \"admins\" }\n        routeSelectors:\n\n        - matches:\n          - path:\n              type: PathPrefix\n              value: \"/admin\"\nEOF\n

    Create the API keys:

    kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: api-key-regular-user\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\nstringData:\n  api_key: iamaregularuser\ntype: Opaque\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: api-key-admin-user\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n  annotations:\n    kuadrant.io/groups: admins\nstringData:\n  api_key: iamanadmin\ntype: Opaque\nEOF\n

    Send requests to the application protected by Kuadrant:

    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/cars -i\n# HTTP/1.1 401 Unauthorized\n
    curl -H 'Host: api.toystore.com' -H 'Authorization: APIKEY iamaregularuser' http://$GATEWAY_URL/cars -i\n# HTTP/1.1 200 OK\n
    curl -H 'Host: api.toystore.com' -H 'Authorization: APIKEY iamaregularuser' http://$GATEWAY_URL/admin -i\n# HTTP/1.1 403 Forbidden\n
    curl -H 'Host: api.toystore.com' -H 'Authorization: APIKEY iamanadmin' http://$GATEWAY_URL/admin -i\n# HTTP/1.1 200 OK\n
    "},{"location":"kuadrant-operator/doc/user-guides/auth-for-app-devs-and-platform-engineers/#4-create-a-default-deny-all-policy-at-the-level-of-the-gateway-persona-platform-engineer","title":"\u2463 Create a default \"deny-all\" policy at the level of the gateway (Persona: Platform engineer)","text":"

    Create the policy:

    kubectl -n istio-system apply -f - <<EOF\napiVersion: kuadrant.io/v1beta2\nkind: AuthPolicy\nmetadata:\n  name: gw-auth\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: Gateway\n    name: istio-ingressgateway\n  rules:\n    authorization:\n      deny-all:\n        opa:\n          rego: \"allow = false\"\n    response:\n      unauthorized:\n        headers:\n          \"content-type\":\n            value: application/json\n        body:\n          value: |\n            {\n              \"error\": \"Forbidden\",\n              \"message\": \"Access denied by default by the gateway operator. If you are the administrator of the service, create a specific auth policy for the route.\"\n            }\nEOF\n

    The policy won't be effective until there is at least one accepted route not yet protected by another more specific policy attached to it.

    Create a route that will inherit the default policy attached to the gateway:

    kubectl apply -f -<<EOF\napiVersion: gateway.networking.k8s.io/v1\nkind: HTTPRoute\nmetadata:\n  name: other\nspec:\n  parentRefs:\n\n  - name: istio-ingressgateway\n    namespace: istio-system\n  hostnames:\n  - \"*.other-apps.com\"\nEOF\n

    Send requests to the route protected by the default policy set at the level of the gateway:

    curl -H 'Host: foo.other-apps.com' http://$GATEWAY_URL/ -i\n# HTTP/1.1 403 Forbidden\n
    "},{"location":"kuadrant-operator/doc/user-guides/auth-for-app-devs-and-platform-engineers/#cleanup","title":"Cleanup","text":"
    make local-cleanup\n
    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-for-app-developers/","title":"Authenticated Rate Limiting for Application Developers","text":"

    This user guide walks you through an example of how to configure authenticated rate limiting for an application using Kuadrant.

    Authenticated rate limiting rate limits the traffic directed to an application based on attributes of the client user, who is authenticated by some authentication method. A few examples of authenticated rate limiting use cases are:

    • User A can send up to 50rps (\"requests per second\"), while User B can send up to 100rps.
    • Each user can send up to 20rpm (\"request per minute\").
    • Admin users (members of the 'admin' group) can send up to 100rps, while regular users (non-admins) can send up to 20rpm and no more than 5rps.

    In this guide, we will rate limit a sample REST API called Toy Store. In reality, this API is just an echo service that echoes back to the user whatever attributes it gets in the request. The API exposes an endpoint at GET http://api.toystore.com/toy, to mimic an operation of reading toy records.

    We will define 2 users of the API, which can send requests to the API at different rates, based on their user IDs. The authentication method used is API key.

    User ID Rate limit alice 5rp10s (\"5 requests every 10 seconds\") bob 2rp10s (\"2 requests every 10 seconds\")"},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-for-app-developers/#run-the-steps-1-4","title":"Run the steps \u2460 \u2192 \u2463","text":""},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-for-app-developers/#1-setup","title":"\u2460 Setup","text":"

    This step uses tooling from the Kuadrant Operator component to create a containerized Kubernetes server locally using Kind, where it installs Istio, Kubernetes Gateway API and Kuadrant itself.

    Note: In production environment, these steps are usually performed by a cluster operator with administrator privileges over the Kubernetes cluster.

    Clone the project:

    git clone https://github.com/Kuadrant/kuadrant-operator && cd kuadrant-operator\n

    Setup the environment:

    make local-setup\n

    Request an instance of Kuadrant:

    kubectl -n kuadrant-system apply -f - <<EOF\napiVersion: kuadrant.io/v1beta1\nkind: Kuadrant\nmetadata:\n  name: kuadrant\nspec: {}\nEOF\n
    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-for-app-developers/#2-deploy-the-toy-store-api","title":"\u2461 Deploy the Toy Store API","text":"

    Create the deployment:

    kubectl apply -f examples/toystore/toystore.yaml\n

    Create a HTTPRoute to route traffic to the service via Istio Ingress Gateway:

    kubectl apply -f - <<EOF\napiVersion: gateway.networking.k8s.io/v1\nkind: HTTPRoute\nmetadata:\n  name: toystore\nspec:\n  parentRefs:\n\n  - name: istio-ingressgateway\n    namespace: istio-system\n  hostnames:\n  - api.toystore.com\n  rules:\n  - matches:\n    - path:\n        type: Exact\n        value: \"/toy\"\n      method: GET\n    backendRefs:\n    - name: toystore\n      port: 80\nEOF\n

    Export the gateway hostname and port:

    export INGRESS_HOST=$(kubectl get gtw istio-ingressgateway -n istio-system -o jsonpath='{.status.addresses[0].value}')\nexport INGRESS_PORT=$(kubectl get gtw istio-ingressgateway -n istio-system -o jsonpath='{.spec.listeners[?(@.name==\"http\")].port}')\nexport GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT\n

    Verify the route works:

    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i\n# HTTP/1.1 200 OK\n

    Note: If the command above fails to hit the Toy Store API on your environment, try forwarding requests to the service and accessing over localhost:

    kubectl port-forward -n istio-system service/istio-ingressgateway-istio 9080:80 >/dev/null 2>&1 &\nexport GATEWAY_URL=localhost:9080\n
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i\n# HTTP/1.1 200 OK\n

    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-for-app-developers/#3-enforce-authentication-on-requests-to-the-toy-store-api","title":"\u2462 Enforce authentication on requests to the Toy Store API","text":"

    Create a Kuadrant AuthPolicy to configure the authentication:

    kubectl apply -f - <<EOF\napiVersion: kuadrant.io/v1beta2\nkind: AuthPolicy\nmetadata:\n  name: toystore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: toystore\n  rules:\n    authentication:\n      \"api-key-users\":\n        apiKey:\n          selector:\n            matchLabels:\n              app: toystore\n          allNamespaces: true\n        credentials:\n          authorizationHeader:\n            prefix: APIKEY\n    response:\n      success:\n        dynamicMetadata:\n          \"identity\":\n            json:\n              properties:\n                \"userid\":\n                  selector: auth.identity.metadata.annotations.secret\\.kuadrant\\.io/user-id\nEOF\n

    Verify the authentication works by sending a request to the Toy Store API without API key:

    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i\n# HTTP/1.1 401 Unauthorized\n# www-authenticate: APIKEY realm=\"api-key-users\"\n# x-ext-auth-reason: \"credential not found\"\n

    Create API keys for users alice and bob to authenticate:

    Note: Kuadrant stores API keys as Kubernetes Secret resources. User metadata can be stored in the annotations of the resource.

    kubectl apply -f - <<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: bob-key\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    app: toystore\n  annotations:\n    secret.kuadrant.io/user-id: bob\nstringData:\n  api_key: IAMBOB\ntype: Opaque\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: alice-key\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    app: toystore\n  annotations:\n    secret.kuadrant.io/user-id: alice\nstringData:\n  api_key: IAMALICE\ntype: Opaque\nEOF\n
    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-for-app-developers/#4-enforce-authenticated-rate-limiting-on-requests-to-the-toy-store-api","title":"\u2463 Enforce authenticated rate limiting on requests to the Toy Store API","text":"

    Create a Kuadrant RateLimitPolicy to configure rate limiting:

    kubectl apply -f - <<EOF\napiVersion: kuadrant.io/v1beta2\nkind: RateLimitPolicy\nmetadata:\n  name: toystore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: toystore\n  limits:\n    \"alice-limit\":\n      rates:\n\n      - limit: 5\n        duration: 10\n        unit: second\n      when:\n      - selector: metadata.filter_metadata.envoy\\.filters\\.http\\.ext_authz.identity.userid\n        operator: eq\n        value: alice\n    \"bob-limit\":\n      rates:\n      - limit: 2\n        duration: 10\n        unit: second\n      when:\n      - selector: metadata.filter_metadata.envoy\\.filters\\.http\\.ext_authz.identity.userid\n        operator: eq\n        value: bob\nEOF\n

    Note: It may take a couple of minutes for the RateLimitPolicy to be applied depending on your cluster.

    Verify the rate limiting works by sending requests as Alice and Bob.

    Up to 5 successful (200 OK) requests every 10 seconds allowed for Alice, then 429 Too Many Requests:

    while :; do curl --write-out '%{http_code}\\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMALICE' -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy | grep -E --color \"\\b(429)\\b|$\"; sleep 1; done\n

    Up to 2 successful (200 OK) requests every 10 seconds allowed for Bob, then 429 Too Many Requests:

    while :; do curl --write-out '%{http_code}\\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMBOB' -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy | grep -E --color \"\\b(429)\\b|$\"; sleep 1; done\n
    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-for-app-developers/#cleanup","title":"Cleanup","text":"
    make local-cleanup\n
    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/","title":"Authenticated Rate Limiting with JWTs and Kubernetes RBAC","text":"

    This user guide walks you through an example of how to use Kuadrant to protect an application with policies to enforce:

    • authentication based OpenId Connect (OIDC) ID tokens (signed JWTs), issued by a Keycloak server;
    • alternative authentication method by Kubernetes Service Account tokens;
    • authorization delegated to Kubernetes RBAC system;
    • rate limiting by user ID.

    In this example, we will protect a sample REST API called Toy Store. In reality, this API is just an echo service that echoes back to the user whatever attributes it gets in the request.

    The API listens to requests at the hostnames *.toystore.com, where it exposes the endpoints GET /toy*, POST /admin/toy and DELETE /amind/toy, respectively, to mimic operations of reading, creating, and deleting toy records.

    Any authenticated user/service account can send requests to the Toy Store API, by providing either a valid Keycloak-issued access token or Kubernetes token.

    Privileges to execute the requested operation (read, create or delete) will be granted according to the following RBAC rules, stored in the Kubernetes authorization system:

    Operation Endpoint Required role Read GET /toy* toystore-reader Create POST /admin/toy toystore-write Delete DELETE /admin/toy toystore-write

    Each user will be entitled to a maximum of 5rp10s (5 requests every 10 seconds).

    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/#requirements","title":"Requirements","text":"
    • Docker
    • kubectl command-line tool
    • jq
    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/#run-the-guide-1-6","title":"Run the guide \u2460 \u2192 \u2465","text":""},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/#1-setup-a-cluster-with-kuadrant","title":"\u2460 Setup a cluster with Kuadrant","text":"

    This step uses tooling from the Kuadrant Operator component to create a containerized Kubernetes server locally using Kind, where it installs Istio, Kubernetes Gateway API and Kuadrant itself.

    Note: In production environment, these steps are usually performed by a cluster operator with administrator privileges over the Kubernetes cluster.

    Clone the project:

    git clone https://github.com/Kuadrant/kuadrant-operator && cd kuadrant-operator\n

    Setup the environment:

    make local-setup\n

    Request an instance of Kuadrant:

    kubectl -n kuadrant-system apply -f - <<EOF\napiVersion: kuadrant.io/v1beta1\nkind: Kuadrant\nmetadata:\n  name: kuadrant\nspec: {}\nEOF\n
    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/#2-deploy-the-toy-store-api","title":"\u2461 Deploy the Toy Store API","text":"

    Deploy the application in the default namespace:

    kubectl apply -f examples/toystore/toystore.yaml\n

    Route traffic to the application:

    kubectl apply -f examples/toystore/httproute.yaml\n
    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/#api-lifecycle","title":"API lifecycle","text":""},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/#try-the-api-unprotected","title":"Try the API unprotected","text":"

    Export the gateway hostname and port:

    export INGRESS_HOST=$(kubectl get gtw istio-ingressgateway -n istio-system -o jsonpath='{.status.addresses[0].value}')\nexport INGRESS_PORT=$(kubectl get gtw istio-ingressgateway -n istio-system -o jsonpath='{.spec.listeners[?(@.name==\"http\")].port}')\nexport GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT\n
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i\n# HTTP/1.1 200 OK\n

    It should return 200 OK.

    Note: If the command above fails to hit the Toy Store API on your environment, try forwarding requests to the service and accessing over localhost:

    kubectl port-forward -n istio-system service/istio-ingressgateway-istio 9080:80 >/dev/null 2>&1 &\nexport GATEWAY_URL=localhost:9080\n
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i\n# HTTP/1.1 200 OK\n

    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/#3-deploy-keycloak","title":"\u2462 Deploy Keycloak","text":"

    Create the namesapce:

    kubectl create namespace keycloak\n

    Deploy Keycloak with a bootstrap realm, users, and clients:

    kubectl apply -n keycloak -f https://raw.githubusercontent.com/Kuadrant/authorino-examples/main/keycloak/keycloak-deploy.yaml\n

    Note: The Keycloak server may take a couple of minutes to be ready.

    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/#4-enforce-authentication-and-authorization-for-the-toy-store-api","title":"\u2463 Enforce authentication and authorization for the Toy Store API","text":"

    Create a Kuadrant AuthPolicy to configure authentication and authorization:

    kubectl apply -f - <<EOF\napiVersion: kuadrant.io/v1beta2\nkind: AuthPolicy\nmetadata:\n  name: toystore-protection\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: toystore\n  rules:\n    authentication:\n      \"keycloak-users\":\n        jwt:\n          issuerUrl: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\n      \"k8s-service-accounts\":\n        kubernetesTokenReview:\n          audiences:\n\n          - https://kubernetes.default.svc.cluster.local\n        overrides:\n          \"sub\":\n            selector: auth.identity.user.username\n    authorization:\n      \"k8s-rbac\":\n        kubernetesSubjectAccessReview:\n          user:\n            selector: auth.identity.sub\n    response:\n      success:\n        dynamicMetadata:\n          \"identity\":\n            json:\n              properties:\n                \"userid\":\n                  selector: auth.identity.sub\nEOF\n
    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/#try-the-api-missing-authentication","title":"Try the API missing authentication","text":"
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i\n# HTTP/1.1 401 Unauthorized\n# www-authenticate: Bearer realm=\"keycloak-users\"\n# www-authenticate: Bearer realm=\"k8s-service-accounts\"\n# x-ext-auth-reason: {\"k8s-service-accounts\":\"credential not found\",\"keycloak-users\":\"credential not found\"}\n
    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/#try-the-api-without-permission","title":"Try the API without permission","text":"

    Obtain an access token with the Keycloak server:

    ACCESS_TOKEN=$(kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=demo' -d 'username=john' -d 'password=p' -d 'scope=openid' | jq -r .access_token)\n

    Send a request to the API as the Keycloak-authenticated user while still missing permissions:

    curl -H \"Authorization: Bearer $ACCESS_TOKEN\" -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i\n# HTTP/1.1 403 Forbidden\n

    Create a Kubernetes Service Account to represent a consumer of the API associated with the alternative source of identities k8s-service-accounts:

    kubectl apply -f - <<EOF\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: client-app-1\nEOF\n

    Obtain an access token for the client-app-1 service account:

    SA_TOKEN=$(kubectl create token client-app-1)\n

    Send a request to the API as the service account while still missing permissions:

    curl -H \"Authorization: Bearer $SA_TOKEN\" -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i\n# HTTP/1.1 403 Forbidden\n
    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/#5-grant-access-to-the-toy-store-api-for-user-and-service-account","title":"\u2464 Grant access to the Toy Store API for user and service account","text":"

    Create the toystore-reader and toystore-writer roles:

    kubectl apply -f - <<EOF\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: toystore-reader\nrules:\n\n- nonResourceURLs: [\"/toy*\"]\n  verbs: [\"get\"]\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: toystore-writer\nrules:\n- nonResourceURLs: [\"/admin/toy\"]\n  verbs: [\"post\", \"delete\"]\nEOF\n

    Add permissions to the user and service account:

    User Kind Roles john User registered in Keycloak toystore-reader, toystore-writer client-app-1 Kuberentes Service Account toystore-reader
    kubectl apply -f - <<EOF\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: toystore-readers\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: toystore-reader\nsubjects:\n\n- kind: User\n  name: $(jq -R -r 'split(\".\") | .[1] | @base64d | fromjson | .sub' <<< \"$ACCESS_TOKEN\")\n- kind: ServiceAccount\n  name: client-app-1\n  namespace: default\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: toystore-writers\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: toystore-writer\nsubjects:\n- kind: User\n  name: $(jq -R -r 'split(\".\") | .[1] | @base64d | fromjson | .sub' <<< \"$ACCESS_TOKEN\")\nEOF\n
    Q: Can I use Roles and RoleBindings instead of ClusterRoles and ClusterRoleBindings?

    Yes, you can.

    The example above is for non-resource URL Kubernetes roles. For using Roles and RoleBindings instead of ClusterRoles and ClusterRoleBindings, thus more flexible resource-based permissions to protect the API, see the spec for Kubernetes SubjectAccessReview authorization in the Authorino docs.

    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/#try-the-api-with-permission","title":"Try the API with permission","text":"

    Send requests to the API as the Keycloak-authenticated user:

    curl -H \"Authorization: Bearer $ACCESS_TOKEN\" -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i\n# HTTP/1.1 200 OK\n
    curl -H \"Authorization: Bearer $ACCESS_TOKEN\" -H 'Host: api.toystore.com' -X POST http://$GATEWAY_URL/admin/toy -i\n# HTTP/1.1 200 OK\n

    Send requests to the API as the Kubernetes service account:

    curl -H \"Authorization: Bearer $SA_TOKEN\" -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy -i\n# HTTP/1.1 200 OK\n
    curl -H \"Authorization: Bearer $SA_TOKEN\" -H 'Host: api.toystore.com' -X POST http://$GATEWAY_URL/admin/toy -i\n# HTTP/1.1 403 Forbidden\n
    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/#6-enforce-rate-limiting-on-requests-to-the-toy-store-api","title":"\u2465 Enforce rate limiting on requests to the Toy Store API","text":"

    Create a Kuadrant RateLimitPolicy to configure rate limiting:

    kubectl apply -f - <<EOF\napiVersion: kuadrant.io/v1beta2\nkind: RateLimitPolicy\nmetadata:\n  name: toystore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: toystore\n  limits:\n    \"per-user\":\n      rates:\n\n      - limit: 5\n        duration: 10\n        unit: second\n      counters:\n      - metadata.filter_metadata.envoy\\.filters\\.http\\.ext_authz.identity.userid\nEOF\n

    Note: It may take a couple of minutes for the RateLimitPolicy to be applied depending on your cluster.

    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/#try-the-api-rate-limited","title":"Try the API rate limited","text":"

    Each user should be entitled to a maximum of 5 requests every 10 seconds.

    Note: If the tokens have expired, you may need to refresh them first.

    Send requests as the Keycloak-authenticated user:

    while :; do curl --write-out '%{http_code}\\n' --silent --output /dev/null -H \"Authorization: Bearer $ACCESS_TOKEN\" -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy | grep -E --color \"\\b(429)\\b|$\"; sleep 1; done\n

    Send requests as the Kubernetes service account:

    while :; do curl --write-out '%{http_code}\\n' --silent --output /dev/null -H \"Authorization: Bearer $SA_TOKEN\" -H 'Host: api.toystore.com' http://$GATEWAY_URL/toy | grep -E --color \"\\b(429)\\b|$\"; sleep 1; done\n
    "},{"location":"kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/#cleanup","title":"Cleanup","text":"
    make local-cleanup\n
    "},{"location":"kuadrant-operator/doc/user-guides/gateway-dns/","title":"Gateway DNS for Cluster Operators","text":"

    This user guide walks you through an example of how to configure DNS for all routes attached to an ingress gateway.

    "},{"location":"kuadrant-operator/doc/user-guides/gateway-dns/#requisites","title":"Requisites","text":"
    • Docker
    • Rout53 Hosted Zone
    "},{"location":"kuadrant-operator/doc/user-guides/gateway-dns/#setup","title":"Setup","text":"

    This step uses tooling from the Kuadrant Operator component to create a containerized Kubernetes server locally using Kind, where it installs Istio, Kubernetes Gateway API and Kuadrant itself.

    Clone the project:

    git clone https://github.com/Kuadrant/kuadrant-operator && cd kuadrant-operator\n

    Setup the environment:

    make local-setup\n

    Create a namespace:

    kubectl create namespace my-gateways\n

    Export a root domain and hosted zone id:

    export ROOT_DOMAIN=<ROOT_DOMAIN>\n

    Note: ROOT_DOMAIN should be set to your AWS hosted zone name.

    "},{"location":"kuadrant-operator/doc/user-guides/gateway-dns/#create-a-dns-provider-secret","title":"Create a dns provider secret","text":"

    Create AWS provider secret. You should limit the permissions of this credential to only the zones you want us to access.

    export AWS_ACCESS_KEY_ID=<AWS_ACCESS_KEY_ID> AWS_SECRET_ACCESS_KEY=<AWS_SECRET_ACCESS_KEY>\n\nkubectl -n my-gateways create secret generic aws-credentials \\\n  --type=kuadrant.io/aws \\\n  --from-literal=AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \\\n  --from-literal=AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY\n
    "},{"location":"kuadrant-operator/doc/user-guides/gateway-dns/#create-an-ingress-gateway","title":"Create an ingress gateway","text":"

    Create a gateway using your ROOT_DOMAIN as part of a listener hostname:

    kubectl -n my-gateways apply -f - <<EOF\napiVersion: gateway.networking.k8s.io/v1\nkind: Gateway\nmetadata:\n  name: prod-web\nspec:\n  gatewayClassName: istio\n  listeners:\n\n    - allowedRoutes:\n        namespaces:\n          from: All\n      name: api\n      hostname: \"*.$ROOT_DOMAIN\"\n      port: 80\n      protocol: HTTP\nEOF\n

    Check gateway status:

    kubectl get gateway prod-web -n my-gateways\n
    Response:
    NAME       CLASS   ADDRESS        PROGRAMMED   AGE\nprod-web   istio   172.18.200.1   True         25s\n

    "},{"location":"kuadrant-operator/doc/user-guides/gateway-dns/#enable-dns-on-the-gateway","title":"Enable DNS on the gateway","text":"

    Create a Kuadrant DNSPolicy to configure DNS:

    kubectl -n my-gateways apply -f - <<EOF\napiVersion: kuadrant.io/v1alpha1\nkind: DNSPolicy\nmetadata:\n  name: prod-web\nspec:\n  targetRef:\n    name: prod-web\n    group: gateway.networking.k8s.io\n    kind: Gateway\n  routingStrategy: simple\nEOF\n

    Check policy status:

    kubectl get dnspolicy -o wide -n my-gateways\n
    Response:
    NAME       STATUS     TARGETREFKIND   TARGETREFNAME   AGE\nprod-web   Accepted   Gateway         prod-web        26s\n

    "},{"location":"kuadrant-operator/doc/user-guides/gateway-dns/#deploy-a-sample-api-to-test-dns","title":"Deploy a sample API to test DNS","text":"

    Deploy the sample API:

    kubectl -n my-gateways apply -f examples/toystore/toystore.yaml\nkubectl -n my-gateways wait --for=condition=Available deployments toystore --timeout=60s\n

    Route traffic to the API from our gateway:

    kubectl -n my-gateways apply -f - <<EOF\napiVersion: gateway.networking.k8s.io/v1\nkind: HTTPRoute\nmetadata:\n  name: toystore\nspec:\n  parentRefs:\n\n  - name: prod-web\n    namespace: my-gateways\n  hostnames:\n  - \"*.$ROOT_DOMAIN\"\n  rules:\n  - backendRefs:\n    - name: toystore\n      port: 80\nEOF\n

    Verify a DNSRecord resource is created:

    kubectl get dnsrecords -n my-gateways\nNAME           READY\nprod-web-api   True\n

    "},{"location":"kuadrant-operator/doc/user-guides/gateway-dns/#verify-dns-works-by-sending-requests","title":"Verify DNS works by sending requests","text":"

    Verify DNS using dig:

    dig foo.$ROOT_DOMAIN +short\n
    Response:
    172.18.200.1\n

    Verify DNS using curl:

    curl http://api.$ROOT_DOMAIN\n
    Response:
    {\n  \"method\": \"GET\",\n  \"path\": \"/\",\n  \"query_string\": null,\n  \"body\": \"\",\n  \"headers\": {\n    \"HTTP_HOST\": \"api.$ROOT_DOMAIN\",\n    \"HTTP_USER_AGENT\": \"curl/7.85.0\",\n    \"HTTP_ACCEPT\": \"*/*\",\n    \"HTTP_X_FORWARDED_FOR\": \"10.244.0.1\",\n    \"HTTP_X_FORWARDED_PROTO\": \"http\",\n    \"HTTP_X_ENVOY_INTERNAL\": \"true\",\n    \"HTTP_X_REQUEST_ID\": \"9353dd3d-0fe5-4404-86f4-a9732a9c119c\",\n    \"HTTP_X_ENVOY_DECORATOR_OPERATION\": \"toystore.my-gateways.svc.cluster.local:80/*\",\n    \"HTTP_X_ENVOY_PEER_METADATA\": \"ChQKDkFQUF9DT05UQUlORVJTEgIaAAoaCgpDTFVTVEVSX0lEEgwaCkt1YmVybmV0ZXMKHQoMSU5TVEFOQ0VfSVBTEg0aCzEwLjI0NC4wLjIyChkKDUlTVElPX1ZFUlNJT04SCBoGMS4xNy4yCtcBCgZMQUJFTFMSzAEqyQEKIwoVaXN0aW8uaW8vZ2F0ZXdheS1uYW1lEgoaCHByb2Qtd2ViChkKDGlzdGlvLmlvL3JldhIJGgdkZWZhdWx0CjMKH3NlcnZpY2UuaXN0aW8uaW8vY2Fub25pY2FsLW5hbWUSEBoOcHJvZC13ZWItaXN0aW8KLwojc2VydmljZS5pc3Rpby5pby9jYW5vbmljYWwtcmV2aXNpb24SCBoGbGF0ZXN0CiEKF3NpZGVjYXIuaXN0aW8uaW8vaW5qZWN0EgYaBHRydWUKGgoHTUVTSF9JRBIPGg1jbHVzdGVyLmxvY2FsCigKBE5BTUUSIBoecHJvZC13ZWItaXN0aW8tYzU0NWQ4ZjY4LTdjcjg2ChoKCU5BTUVTUEFDRRINGgtteS1nYXRld2F5cwpWCgVPV05FUhJNGktrdWJlcm5ldGVzOi8vYXBpcy9hcHBzL3YxL25hbWVzcGFjZXMvbXktZ2F0ZXdheXMvZGVwbG95bWVudHMvcHJvZC13ZWItaXN0aW8KFwoRUExBVEZPUk1fTUVUQURBVEESAioACiEKDVdPUktMT0FEX05BTUUSEBoOcHJvZC13ZWItaXN0aW8=\",\n    \"HTTP_X_ENVOY_PEER_METADATA_ID\": \"router~10.244.0.22~prod-web-istio-c545d8f68-7cr86.my-gateways~my-gateways.svc.cluster.local\",\n    \"HTTP_X_ENVOY_ATTEMPT_COUNT\": \"1\",\n    \"HTTP_X_B3_TRACEID\": \"d65f580db9c6a50c471cdb534771c61a\",\n    \"HTTP_X_B3_SPANID\": \"471cdb534771c61a\",\n    \"HTTP_X_B3_SAMPLED\": \"0\",\n    \"HTTP_VERSION\": \"HTTP/1.1\"\n  },\n  \"uuid\": \"0ecb9f84-db30-4289-a3b8-e22d4021122f\"\n}\n

    "},{"location":"kuadrant-operator/doc/user-guides/gateway-dns/#cleanup","title":"Cleanup","text":"
    make local-cleanup\n
    "},{"location":"kuadrant-operator/doc/user-guides/gateway-rl-for-cluster-operators/","title":"Gateway Rate Limiting for Cluster Operators","text":"

    This user guide walks you through an example of how to configure rate limiting for all routes attached to an ingress gateway.

    "},{"location":"kuadrant-operator/doc/user-guides/gateway-rl-for-cluster-operators/#run-the-steps-1-5","title":"Run the steps \u2460 \u2192 \u2464","text":""},{"location":"kuadrant-operator/doc/user-guides/gateway-rl-for-cluster-operators/#1-setup","title":"\u2460 Setup","text":"

    This step uses tooling from the Kuadrant Operator component to create a containerized Kubernetes server locally using Kind, where it installs Istio, Kubernetes Gateway API and Kuadrant itself.

    Note: In production environment, these steps are usually performed by a cluster operator with administrator privileges over the Kubernetes cluster.

    Clone the project:

    git clone https://github.com/Kuadrant/kuadrant-operator && cd kuadrant-operator\n

    Setup the environment:

    make local-setup\n

    Request an instance of Kuadrant:

    kubectl -n kuadrant-system apply -f - <<EOF\napiVersion: kuadrant.io/v1beta1\nkind: Kuadrant\nmetadata:\n  name: kuadrant\nspec: {}\nEOF\n
    "},{"location":"kuadrant-operator/doc/user-guides/gateway-rl-for-cluster-operators/#2-create-the-ingress-gateways","title":"\u2461 Create the ingress gateways","text":"
    kubectl -n istio-system apply -f - <<EOF\napiVersion: gateway.networking.k8s.io/v1\nkind: Gateway\nmetadata:\n  name: external\n  annotations:\n    kuadrant.io/namespace: kuadrant-system\n    networking.istio.io/service-type: ClusterIP\nspec:\n  gatewayClassName: istio\n  listeners:\n\n  - name: external\n    port: 80\n    protocol: HTTP\n    hostname: '*.io'\n    allowedRoutes:\n      namespaces:\n        from: All\n---\napiVersion: gateway.networking.k8s.io/v1\nkind: Gateway\nmetadata:\n  name: internal\n  annotations:\n    kuadrant.io/namespace: kuadrant-system\n    networking.istio.io/service-type: ClusterIP\nspec:\n  gatewayClassName: istio\n  listeners:\n  - name: local\n    port: 80\n    protocol: HTTP\n    hostname: '*.local'\n    allowedRoutes:\n      namespaces:\n        from: All\nEOF\n
    "},{"location":"kuadrant-operator/doc/user-guides/gateway-rl-for-cluster-operators/#3-enforce-rate-limiting-on-requests-incoming-through-the-external-gateway","title":"\u2462 Enforce rate limiting on requests incoming through the external gateway","text":"
        \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510      \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n    \u2502 (Gateway) \u2502      \u2502 (Gateway) \u2502\n    \u2502  external \u2502      \u2502  internal \u2502\n    \u2502           \u2502      \u2502           \u2502\n    \u2502   *.io    \u2502      \u2502  *.local  \u2502\n    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518      \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n          \u25b2\n          \u2502\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 (RateLimitPolicy) \u2502\n\u2502       gw-rlp      \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n

    Create a Kuadrant RateLimitPolicy to configure rate limiting:

    kubectl apply -n istio-system -f - <<EOF\napiVersion: kuadrant.io/v1beta2\nkind: RateLimitPolicy\nmetadata:\n  name: gw-rlp\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: Gateway\n    name: external\n  limits:\n    \"global\":\n      rates:\n\n      - limit: 5\n        duration: 10\n        unit: second\nEOF\n

    Note: It may take a couple of minutes for the RateLimitPolicy to be applied depending on your cluster.

    "},{"location":"kuadrant-operator/doc/user-guides/gateway-rl-for-cluster-operators/#4-deploy-a-sample-api-to-test-rate-limiting-enforced-at-the-level-of-the-gateway","title":"\u2463 Deploy a sample API to test rate limiting enforced at the level of the gateway","text":"
                               \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510      \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510      \u2502 (Gateway) \u2502      \u2502 (Gateway) \u2502\n\u2502 (RateLimitPolicy) \u2502      \u2502  external \u2502      \u2502  internal \u2502\n\u2502       gw-rlp      \u251c\u2500\u2500\u2500\u2500\u2500\u25ba\u2502           \u2502      \u2502           \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518      \u2502   *.io    \u2502      \u2502  *.local  \u2502\n                           \u2514\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2518      \u2514\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2518\n                                 \u2502                  \u2502\n                                 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n                                           \u2502\n                                 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n                                 \u2502   (HTTPRoute)    \u2502\n                                 \u2502     toystore     \u2502\n                                 \u2502                  \u2502\n                                 \u2502 *.toystore.io    \u2502\n                                 \u2502 *.toystore.local \u2502\n                                 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n                                          \u2502\n                                   \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n                                   \u2502   (Service)  \u2502\n                                   \u2502   toystore   \u2502\n                                   \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n

    Deploy the sample API:

    kubectl apply -f examples/toystore/toystore.yaml\n

    Route traffic to the API from both gateways:

    kubectl apply -f - <<EOF\napiVersion: gateway.networking.k8s.io/v1\nkind: HTTPRoute\nmetadata:\n  name: toystore\nspec:\n  parentRefs:\n\n  - name: external\n    namespace: istio-system\n  - name: internal\n    namespace: istio-system\n  hostnames:\n  - \"*.toystore.io\"\n  - \"*.toystore.local\"\n  rules:\n  - backendRefs:\n    - name: toystore\n      port: 80\nEOF\n
    "},{"location":"kuadrant-operator/doc/user-guides/gateway-rl-for-cluster-operators/#5-verify-the-rate-limiting-works-by-sending-requests-in-a-loop","title":"\u2464 Verify the rate limiting works by sending requests in a loop","text":"

    Expose the gateways, respectively at the port numbers 9081 and 9082 of the local host:

    kubectl port-forward -n istio-system service/external-istio 9081:80 >/dev/null 2>&1 &\nkubectl port-forward -n istio-system service/internal-istio 9082:80 >/dev/null 2>&1 &\n

    Up to 5 successful (200 OK) requests every 10 seconds through the external ingress gateway (*.io), then 429 Too Many Requests:

    while :; do curl --write-out '%{http_code}\\n' --silent --output /dev/null -H 'Host: api.toystore.io' http://localhost:9081 | grep -E --color \"\\b(429)\\b|$\"; sleep 1; done\n

    Unlimited successful (200 OK) through the internal ingress gateway (*.local):

    while :; do curl --write-out '%{http_code}\\n' --silent --output /dev/null -H 'Host: api.toystore.local' http://localhost:9082 | grep -E --color \"\\b(429)\\b|$\"; sleep 1; done\n
    "},{"location":"kuadrant-operator/doc/user-guides/gateway-rl-for-cluster-operators/#cleanup","title":"Cleanup","text":"
    make local-cleanup\n
    "},{"location":"kuadrant-operator/doc/user-guides/gateway-tls/","title":"Gateway TLS for Cluster Operators","text":"

    This user guide walks you through an example of how to configure TLS for all routes attached to an ingress gateway.

    "},{"location":"kuadrant-operator/doc/user-guides/gateway-tls/#requisites","title":"Requisites","text":"
    • Docker
    "},{"location":"kuadrant-operator/doc/user-guides/gateway-tls/#setup","title":"Setup","text":"

    This step uses tooling from the Kuadrant Operator component to create a containerized Kubernetes server locally using Kind, where it installs Istio, Kubernetes Gateway API, CertManager and Kuadrant itself.

    Clone the project:

    git clone https://github.com/Kuadrant/kuadrant-operator && cd kuadrant-operator\n

    Setup the environment:

    make local-setup\n

    Create a namespace:

    kubectl create namespace my-gateways\n

    "},{"location":"kuadrant-operator/doc/user-guides/gateway-tls/#create-an-ingress-gateway","title":"Create an ingress gateway","text":"

    Create a gateway:

    kubectl -n my-gateways apply -f - <<EOF\napiVersion: gateway.networking.k8s.io/v1\nkind: Gateway\nmetadata:\n  name: prod-web\nspec:\n  gatewayClassName: istio\n  listeners:\n\n    - allowedRoutes:\n        namespaces:\n          from: All\n      name: api\n      hostname: \"*.toystore.local\"\n      port: 443\n      protocol: HTTPS\n      tls:\n        mode: Terminate\n        certificateRefs:\n          - name: toystore-local-tls\n            kind: Secret\nEOF\n

    "},{"location":"kuadrant-operator/doc/user-guides/gateway-tls/#enable-tls-on-the-gateway","title":"Enable TLS on the gateway","text":"

    The TLSPolicy requires a reference to an existing CertManager Issuer.

    Create a CertManager Issuer:

    kubectl apply -n my-gateways -f - <<EOF\napiVersion: cert-manager.io/v1\nkind: Issuer\nmetadata:\n  name: selfsigned-issuer\nspec:\n  selfSigned: {}\nEOF\n

    Note: We are using a self-signed issuer here but any supported CerManager issuer or cluster issuer can be used.

    kubectl get issuer selfsigned-issuer -n my-gateways\n
    Response:
    NAME                        READY   AGE\nselfsigned-issuer   True    18s\n

    Create a Kuadrant TLSPolicy to configure TLS:

    kubectl apply -n my-gateways -f - <<EOF\napiVersion: kuadrant.io/v1alpha1\nkind: TLSPolicy\nmetadata:\n  name: prod-web\nspec:\n  targetRef:\n    name: prod-web\n    group: gateway.networking.k8s.io\n    kind: Gateway\n  issuerRef:\n    group: cert-manager.io\n    kind: Issuer\n    name: selfsigned-issuer\nEOF\n

    Check policy status:

    kubectl get tlspolicy -o wide -n my-gateways\n
    Response:
    NAME       STATUS     TARGETREFKIND   TARGETREFNAME   AGE\nprod-web   Accepted   Gateway         prod-web        13s\n

    Check a Certificate resource was created:

    kubectl get certificates -n my-gateways\n
    Response
    NAME                 READY   SECRET               AGE\ntoystore-local-tls   True    toystore-local-tls   7m30s\n

    Check a TLS Secret resource was created:

    kubectl get secrets -n my-gateways --field-selector=\"type=kubernetes.io/tls\"\n
    Response:
    NAME                 TYPE                DATA   AGE\ntoystore-local-tls   kubernetes.io/tls   3      7m42s\n

    "},{"location":"kuadrant-operator/doc/user-guides/gateway-tls/#deploy-a-sample-api-to-test-tls","title":"Deploy a sample API to test TLS","text":"

    Deploy the sample API:

    kubectl -n my-gateways apply -f examples/toystore/toystore.yaml\nkubectl -n my-gateways wait --for=condition=Available deployments toystore --timeout=60s\n

    Route traffic to the API from our gateway:

    kubectl -n my-gateways apply -f - <<EOF\napiVersion: gateway.networking.k8s.io/v1\nkind: HTTPRoute\nmetadata:\n  name: toystore\nspec:\n  parentRefs:\n\n  - name: prod-web\n    namespace: my-gateways\n  hostnames:\n  - \"*.toystore.local\"\n  rules:\n  - backendRefs:\n    - name: toystore\n      port: 80\nEOF\n

    "},{"location":"kuadrant-operator/doc/user-guides/gateway-tls/#verify-tls-works-by-sending-requests","title":"Verify TLS works by sending requests","text":"

    Get the gateway address@

    GWADDRESS=`kubectl get gateway/prod-web -n my-gateways -o=jsonpath='{.status.addresses[?(@.type==\"IPAddress\")].value}'`\necho $GWADDRESS\n
    Response:
    172.18.200.1\n

    Verify we can access the service via TLS:

    curl -vkI https://api.toystore.local --resolve \"api.toystore.local:443:$GWADDRESS\"\n
    Response:
    * Added api.toystore.local:443:172.18.200.1 to DNS cache\n* Hostname api.toystore.local was found in DNS cache\n*   Trying 172.18.200.1:443...\n* Connected to api.toystore.local (172.18.200.1) port 443 (#0)\n* ALPN: offers h2\n* ALPN: offers http/1.1\n* TLSv1.0 (OUT), TLS header, Certificate Status (22):\n* TLSv1.3 (OUT), TLS handshake, Client hello (1):\n* TLSv1.2 (IN), TLS header, Certificate Status (22):\n* TLSv1.3 (IN), TLS handshake, Server hello (2):\n* TLSv1.2 (IN), TLS header, Finished (20):\n* TLSv1.2 (IN), TLS header, Supplemental data (23):\n* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):\n* TLSv1.3 (IN), TLS handshake, Certificate (11):\n* TLSv1.3 (IN), TLS handshake, CERT verify (15):\n* TLSv1.3 (IN), TLS handshake, Finished (20):\n* TLSv1.2 (OUT), TLS header, Finished (20):\n* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):\n* TLSv1.2 (OUT), TLS header, Supplemental data (23):\n* TLSv1.3 (OUT), TLS handshake, Finished (20):\n* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384\n* ALPN: server accepted h2\n* Server certificate:\n*  subject: [NONE]\n*  start date: Feb 15 11:46:50 2024 GMT\n*  expire date: May 15 11:46:50 2024 GMT\n* Using HTTP2, server supports multiplexing\n* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0\n* TLSv1.2 (OUT), TLS header, Supplemental data (23):\n* TLSv1.2 (OUT), TLS header, Supplemental data (23):\n* TLSv1.2 (OUT), TLS header, Supplemental data (23):\n* h2h3 [:method: HEAD]\n* h2h3 [:path: /]\n* h2h3 [:scheme: https]\n* h2h3 [:authority: api.toystore.local]\n* h2h3 [user-agent: curl/7.85.0]\n* h2h3 [accept: */*]\n* Using Stream ID: 1 (easy handle 0x5623e4fe5bf0)\n* TLSv1.2 (OUT), TLS header, Supplemental data (23):\n> HEAD / HTTP/2\n> Host: api.toystore.local\n> user-agent: curl/7.85.0\n> accept: */*\n> \n* TLSv1.2 (IN), TLS header, Supplemental data (23):\n* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):\n* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):\n* old SSL session ID is stale, removing\n* TLSv1.2 (IN), TLS header, Supplemental data (23):\n* Connection state changed (MAX_CONCURRENT_STREAMS == 2147483647)!\n* TLSv1.2 (OUT), TLS header, Supplemental data (23):\n* TLSv1.2 (IN), TLS header, Supplemental data (23):\n< HTTP/2 200 \nHTTP/2 200 \n< content-type: application/json\ncontent-type: application/json\n< server: istio-envoy\nserver: istio-envoy\n< date: Thu, 15 Feb 2024 12:13:27 GMT\ndate: Thu, 15 Feb 2024 12:13:27 GMT\n< content-length: 1658\ncontent-length: 1658\n< x-envoy-upstream-service-time: 1\nx-envoy-upstream-service-time: 1\n\n< \n\n* Connection #0 to host api.toystore.local left intact\n

    "},{"location":"kuadrant-operator/doc/user-guides/gateway-tls/#cleanup","title":"Cleanup","text":"
    make local-cleanup\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/","title":"Secure, protect, and connect APIs with Kuadrant on OpenShift","text":""},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#overview","title":"Overview","text":"

    This guide walks you through using Kuadrant on OpenShift to secure, protect, and connect an API exposed by a Gateway that is based on Kubernetes Gateway API. You can use this walkthrough for a Gateway deployed on a single OpenShift cluster or a Gateway distributed across multiple OpenShift clusters with a shared listener hostname. This guide shows how the platform engineer and application developer user roles can each use Kuadrant to achieve their goals.

    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#what-kuadrant-can-do-for-you-in-a-multicluster-environment","title":"What Kuadrant can do for you in a multicluster environment","text":"

    You can leverage Kuadrant's capabilities in single or multiple clusters. The following features are designed to work across multiple clusters as well as in a single-cluster environment.

    • Multicluster ingress: Kuadrant provides multicluster ingress connectivity using DNS to bring traffic to your Gateways by using a strategy defined in a DNSPolicy.
    • Global rate limiting: Kuadrant can enable global rate limiting use cases when configured to use a shared Redis store for counters based on limits defined by a RateLimitPolicy.
    • Global auth: You can configure a Kuadrant AuthPolicy to leverage external auth providers to ensure that different clusters exposing the same API authenticate and authorize in the same way.
    • Integration with federated metrics stores: Kuadrant has example dashboards and metrics for visualizing your Gateways and observing traffic hitting those Gateways across multiple clusters.
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#user-roles","title":"User roles","text":"
    • Platform engineer: This guide walks you through deploying a Gateway that provides secure communication and is protected and ready for use by application development teams to deploy an API. It then walks through using this Gateway in clusters in different geographic regions, leveraging Kuadrant to bring specific traffic to your geo-located Gateways to reduce latency and distribute load, while still being protected and secured with global rate limiting and auth.

    • Application developer: This guide walks through how you can use the Kuadrant OpenAPI Specification (OAS) extensions and kuadrantctl CLI to generate an HTTPRoute for your API and to add specific auth and rate limiting requirements.

    As an optional extra, this guide highlights how both user roles can observe and monitor these Gateways when the OpenShift user workload monitoring and observability stack is deployed.

    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#deployment-management-tooling","title":"Deployment management tooling","text":"

    While this document uses kubectl commands for simplicity, working with multiple clusters is complex, and it is best to use a tool such as Argo CD to manage the deployment of resources to multiple clusters.

    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#prerequisites","title":"Prerequisites","text":"

    This guide expects that you have successfully installed Kuadrant on at least one OpenShift cluster:

    • You have completed the steps in Install Kuadrant on an OpenShift cluster for one or more clusters.
    • For multicluster scenarios, you have installed Kuadrant on at least two different OpenShift clusters, and have a shared accessible Redis store.
    • You have the kubectl command line installed.
    • Optional: User workload monitoring is configured to remote write to a central storage system such as Thanos, as described in Install Kuadrant on an OpenShift cluster.
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#platform-engineer-workflow","title":"Platform engineer workflow","text":"

    NOTE: You must perform the following steps in each cluster individually, unless specifically excluded.

    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#step-1-set-your-environment-variables","title":"Step 1 - Set your environment variables","text":"

    Set the following environment variables used for convenience in this guide:

    export zid=change-this-to-your-zone-id\nexport rootDomain=example.com\nexport gatewayNS=api-gateway\nexport gatewayName=external\nexport devNS=toystore\nexport AWS_ACCESS_KEY_ID=xxxx\nexport AWS_SECRET_ACCESS_KEY=xxxx\nexport AWS_REGION=us-east-1\nexport clusterIssuerName=lets-encrypt\nexport EMAIL=foo@example.com\n

    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#step-2-set-up-a-dns-provider","title":"Step 2 - Set up a DNS Provider","text":"

    The DNS provider declares a credential to access the zone(s) that Kuadrant can use to set up DNS configuration. You should ensure that this credential only has access to the zones you want managed.

    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#create-the-dns-provider-secret-resource","title":"Create the DNS Provider Secret resource","text":"

    Apply the following Secret resource to each cluster. Alternatively, if you are adding an additional cluster, add it to the new cluster:

    kubectl create ns ${gatewayNS}\n

    Create the secret credentials as follows:

    kubectl -n ${gatewayNS} create secret generic aws-credentials \\\n  --type=kuadrant.io/aws \\\n  --from-literal=AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \\\n  --from-literal=AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#step-3-add-a-tls-issuer","title":"Step 3 - Add a TLS issuer","text":"

    To secure communication to the Gateways, you will define a TLS issuer for TLS certificates. This example uses Let's Encrypt, but you can use any issuer supported by cert-manager.

    The following example uses Let's Encrypt staging, which you must also apply to all clusters:

    kubectl apply -f - <<EOF\napiVersion: cert-manager.io/v1\nkind: ClusterIssuer\nmetadata:\n  name: ${clusterIssuerName}\nspec:\n  acme:\n    email: ${EMAIL} \n    privateKeySecretRef:\n      name: le-secret\n    server: https://acme-staging-v02.api.letsencrypt.org/directory\n    solvers:\n\n      - dns01:\n          route53:\n            hostedZoneID: ${zid}\n            region: ${AWS_REGION}\n            accessKeyIDSecretRef:\n              key: AWS_ACCESS_KEY_ID\n              name: aws-credentials\n            secretAccessKeySecretRef:\n              key: AWS_SECRET_ACCESS_KEY\n              name: aws-credentials\nEOF\n

    Then wait for the ClusterIssuer to become ready as follows:

    kubectl wait clusterissuer/${clusterIssuerName} --for=condition=ready=true\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#step-4-set-up-a-gateway","title":"Step 4 - Set up a Gateway","text":"

    For Kuadrant to balance traffic using DNS across two or more clusters, you must define a Gateway with a shared host. You will define this by using an HTTPS listener with a wildcard hostname based on the root domain. As mentioned earlier, you must apply these resources to all clusters.

    NOTE: For now, the Gateway is set to accept an HTTPRoute from the same namespace only. This allows you to restrict who can use the Gateway until it is ready for general use.

    kubectl apply -f - <<EOF\napiVersion: gateway.networking.k8s.io/v1\nkind: Gateway\nmetadata:\n  name: ${gatewayName}\n  namespace: ${gatewayNS}\n  labels:\n    kuadrant.io/gateway: \"true\"\nspec:\n    gatewayClassName: istio\n    listeners:\n\n    - allowedRoutes:\n        namespaces:\n          from: Same\n      hostname: \"*.${rootDomain}\"\n      name: api\n      port: 443\n      protocol: HTTPS\n      tls:\n        certificateRefs:\n        - group: \"\"\n          kind: Secret\n          name: api-${gatewayName}-tls\n        mode: Terminate\nEOF\n

    Check the status of your Gateway as follows:

    kubectl get gateway ${gatewayName} -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type==\"Accepted\")].message}'\nkubectl get gateway ${gatewayName} -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type==\"Programmed\")].message}'\n

    Your Gateway should be accepted and programmed (valid and assigned an external address). However, if you check your listener status as follows, you will see that it is not yet programmed or ready to accept traffic due to bad TLS configuration:

    kubectl get gateway ${gatewayName} -n ${gatewayNS} -o=jsonpath='{.status.listeners[0].conditions[?(@.type==\"Programmed\")].message}'\n

    Kuadrant can help with this by using a TLSPolicy.

    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#step-5-secure-and-protect-the-gateway-with-auth-tls-rate-limit-and-dns-policies","title":"Step 5 - Secure and protect the Gateway with auth, TLS, rate limit, and DNS policies","text":"

    While your Gateway is now deployed, it has no exposed endpoints and your listener is not programmed. Next, you can set up a TLSPolicy that leverages your CertificateIssuer to set up your listener certificates.

    You will also define an AuthPolicy that will set up a default 403 response for any unprotected endpoints, as well as a RateLimitPolicy that will set up a default artificially low global limit to further protect any endpoints exposed by this Gateway.

    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#set-the-auth-policy","title":"Set the Auth policy","text":"

    Set a default, deny-all AuthPolicy for your Gateway as follows:

    kubectl apply -f - <<EOF\napiVersion: kuadrant.io/v1beta2\nkind: AuthPolicy\nmetadata:\n  name: ${gatewayName}-auth\n  namespace: ${gatewayNS}\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: Gateway\n    name: ${gatewayName}\n  defaults:\n    rules:\n      authorization:\n        \"deny\":\n          opa:\n            rego: \"allow = false\"\nEOF\n

    Check that your auth policy was accepted by the controller as follows:

    kubectl get authpolicy ${gatewayName}-auth -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type==\"Accepted\")].message}'\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#set-the-tls-policy","title":"Set the TLS policy","text":"

    Set the TLSPolicy for your Gateway as follows:

    kubectl apply -f - <<EOF\napiVersion: kuadrant.io/v1alpha1\nkind: TLSPolicy\nmetadata:\n  name: ${gatewayName}-tls\n  namespace: ${gatewayNS}\nspec:\n  targetRef:\n    name: ${gatewayName}\n    group: gateway.networking.k8s.io\n    kind: Gateway\n  issuerRef:\n    group: cert-manager.io\n    kind: ClusterIssuer\n    name: ${clusterIssuerName}\nEOF\n

    Check that your TLS policy was accepted by the controller as follows:

    kubectl get tlspolicy ${gatewayName}-tls -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type==\"Accepted\")].message}'\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#set-the-rate-limit-policy","title":"Set the rate limit policy","text":"

    Set the default RateLimitPolicy for your Gateway as follows:

    kubectl apply -f  - <<EOF\napiVersion: kuadrant.io/v1beta2\nkind: RateLimitPolicy\nmetadata:\n  name: ${gatewayName}-rlp\n  namespace: ${gatewayNS}\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: Gateway\n    name: ${gatewayName}\n  defaults:\n    limits:\n      \"low-limit\":\n        rates:\n\n        - limit: 2\n          duration: 10\n          unit: second\nEOF\n

    To check your rate limits have been accepted, enter the following command:

    kubectl get ratelimitpolicy ${gatewayName}-rlp -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type==\"Accepted\")].message}'\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#set-the-dns-policy","title":"Set the DNS policy","text":"

    Set the DNSPolicy for your Gateway as follows:

    kubectl apply -f - <<EOF\napiVersion: kuadrant.io/v1alpha1\nkind: DNSPolicy\nmetadata:\n  name: ${gatewayName}-dnspolicy\n  namespace: ${gatewayNS}\nspec:\n  routingStrategy: loadbalanced\n  loadBalancing:\n    geo: \n      defaultGeo: US \n    weighted:\n      defaultWeight: 120 \n  targetRef:\n    name: ${gatewayName}\n    group: gateway.networking.k8s.io\n    kind: Gateway\n  providerRefs:\n\n  - name: aws-credentials\nEOF\n

    NOTE: The DNSPolicy will use the DNS Provider Secret that you defined earlier.

    Check that your DNSPolicy has been accepted as follows:

    kubectl get dnspolicy ${gatewayName}-dnspolicy -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type==\"Accepted\")].message}'\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#create-an-http-route","title":"Create an HTTP route","text":"

    Create an HTTPRoute for your Gateway as follows:

    kubectl apply -f - <<EOF\napiVersion: gateway.networking.k8s.io/v1\nkind: HTTPRoute\nmetadata:\n  name: test\n  namespace: ${gatewayNS}\nspec:\n  parentRefs:\n\n  - name: ${gatewayName}\n    namespace: ${gatewayNS}\n  hostnames:\n  - \"test.${rootDomain}\"\n  rules:\n  - backendRefs:\n    - name: toystore\n      port: 80\nEOF\n

    Check your Gateway policies are enforced as follows:

    kubectl get dnspolicy ${gatewayName}-dnspolicy -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type==\"Enforced\")].message}'\nkubectl get authpolicy ${gatewayName}-auth -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type==\"Enforced\")].message}'\nkubectl get ratelimitpolicy ${gatewayName}-rlp -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type==\"Enforced\")].message}'\n

    Check your listener is ready as follows:

    kubectl get gateway ${gatewayName} -n ${gatewayNS} -o=jsonpath='{.status.listeners[0].conditions[?(@.type==\"Programmed\")].message}'\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#step-6-test-connectivity-and-deny-all-auth","title":"Step 6 - Test connectivity and deny all auth","text":"

    You can use curl to hit your endpoint. You should see a 403. Because this example uses Let's Encrypt staging, you can pass the -k flag:

    curl -k -w \"%{http_code}\" https://$(kubectl get httproute test -n ${gatewayNS} -o=jsonpath='{.spec.hostnames[0]}')\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#step-7-opening-up-the-gateway-for-other-namespaces","title":"Step 7 - Opening up the Gateway for other namespaces","text":"

    Because you have configured the Gateway, secured it with Kuadrant policies, and tested it, you can now open it up for use by other teams in other namespaces:

    kubectl patch gateway ${gatewayName} -n ${gatewayNS} --type='json' -p='[{\"op\": \"replace\", \"path\": \"/spec/listeners/0/allowedRoutes/namespaces/from\", \"value\":\"All\"}]'\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#step-8-extending-this-gateway-to-multiple-clusters-and-configuring-geo-based-routing","title":"Step 8 - Extending this Gateway to multiple clusters and configuring geo-based routing","text":"

    To distribute this Gateway across multiple clusters, repeat this setup process for each cluster. By default, this will implement a round-robin DNS strategy to distribute traffic evenly across the different clusters. Setting up your Gateways to serve clients based on their geographic location is straightforward with your current configuration.

    Assuming that you have deployed Gateway instances across multiple clusters as per this guide, the next step involves updating the DNS controller with the geographic regions of the visible Gateways.

    For instance, if you have one cluster in North America and another in the EU, you can direct traffic to these Gateways based on their location by applying the appropriate labels:

    For your North American cluster, enter the following command:

    kubectl label --overwrite gateway ${gatewayName} kuadrant.io/lb-attribute-geo-code=US -n ${gatewayNS}\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#application-developer-workflow","title":"Application developer workflow","text":"

    This section of the walkthrough focuses on using an OpenAPI Specification (OAS) to define an API. You will use Kuadrant OAS extensions to specify the routing, authentication, and rate limiting requirements. Next, you will use the kuadrantctl tool to generate an AuthPolicy, an HTTPRoute, and a RateLimitPolicy, which you will then apply to your cluster to enforce the settings defined in your OAS.

    NOTE: While this section uses the kuadrantctl tool, this is not essential. You can also create and apply an AuthPolicy, RateLimitPolicy, and HTTPRoute by using the oc or kubectl commands.

    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#prerequisites_1","title":"Prerequisites","text":"
    • You have installed kuadrantctl. You can find a compatible binary and download it from the kuadrantctl releases page.
    • You have the ability to distribute resources generated by kuadrantctl to multiple clusters, as though you are a platform engineer.
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#step-1-deploy-the-toystore-app","title":"Step 1 - Deploy the toystore app","text":"

    To begin, deploy a new version of the toystore app to a developer namespace as follows:

    kubectl apply -f https://raw.githubusercontent.com/Kuadrant/Kuadrant-operator/main/examples/toystore/toystore.yaml -n ${devNS}\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#step-2-set-up-httproute-and-backend","title":"Step 2 - Set up HTTPRoute and backend","text":"

    Copy at least one of the following example OAS to a local location:

    • Sample OAS for rate limiting with API key

    • Sample OAS for rate limiting with OIDC

    Set up some new environment variables as follows:

    export oasPath=examples/oas-apikey.yaml\n# Ensure you still have these environment variables setup from the start of this guide:\nexport rootDomain=example.com\nexport gatewayNS=api-gateway\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#step-3-use-oas-to-define-your-httproute-rules","title":"Step 3 - Use OAS to define your HTTPRoute rules","text":"

    You can generate Kuadrant and Gateway API resources directly from OAS documents by using an x-kuadrant extension.

    NOTE: For a more in-depth look at the OAS extension, see the kuadrantctl documentation.

    You will use kuadrantctl to generate your HTTPRoute.

    NOTE: The sample OAS has some placeholders for namespaces and domains. You will inject valid values into these placeholders based on your previous environment variables.

    Generate the resource from your OAS as follows, (envsubst will replace the placeholders):

    cat $oasPath | envsubst | kuadrantctl generate gatewayapi httproute --oas - | kubectl apply -f -\n
    kubectl get httproute toystore -n ${devNS} -o=yaml\n

    You should see that this route is affected by the AuthPolicy and RateLimitPolicy defined as defaults on the Gateway in the Gateway namespace.

    - lastTransitionTime: \"2024-04-26T13:37:43Z\"\n        message: Object affected by AuthPolicy demo/external\n        observedGeneration: 2\n        reason: Accepted\n        status: \"True\"\n        type: kuadrant.io/AuthPolicyAffected\n- lastTransitionTime: \"2024-04-26T14:07:28Z\"\n        message: Object affected by RateLimitPolicy demo/external\n        observedGeneration: 1\n        reason: Accepted\n        status: \"True\"\n        type: kuadrant.io/RateLimitPolicyAffected        \n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#step-4-test-connectivity-and-deny-all-auth","title":"Step 4 - Test connectivity and deny-all auth","text":"

    You can use curl to hit an endpoint in the toystore app. Because you are using Let's Encrypt staging in this example, you can pass the -k flag as follows:

    curl -s -k -o /dev/null -w \"%{http_code}\" \"https://$(kubectl get httproute toystore -n ${devNS} -o=jsonpath='{.spec.hostnames[0]}')/v1/toys\"\n

    You are getting a 403 because of the existing default, deny-all AuthPolicy applied at the Gateway. You can override this for your HTTPRoute.

    Choose one of the following options:

    • API key auth flow
    • OpenID Connect auth flow
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#step-5-set-up-api-key-auth-flow","title":"Step 5 - Set up API key auth flow","text":"

    Set up an example API key in each cluster as follows:

    kubectl apply -f - <<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: toystore-api-key\n  namespace: ${devNS}\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    kuadrant.io/apikeys-by: api_key\nstringData:\n  api_key: secret\ntype: Opaque\nEOF\n

    Next, generate an AuthPolicy that uses secrets in your cluster as API keys as follows:

    cat $oasPath | envsubst | kuadrantctl generate kuadrant authpolicy --oas -\n

    From this, you can see an AuthPolicy generated based on your OAS that will look for API keys in secrets labeled api_key and look for that key in the header api_key. You can now apply this to the Gateway as follows:

    cat $oasPath | envsubst | kuadrantctl generate kuadrant authpolicy --oas -  | kubectl apply -f -\n

    You should get a 200 from the following GET because it has no auth requirement:

    curl -s -k -o /dev/null -w \"%{http_code}\" \"https://$(kubectl get httproute toystore -n ${devNS} -o=jsonpath='{.spec.hostnames[0]}')/v1/toys\"\n

    You should get a 401 for the following POST request because it does not have any auth requirements:

    curl -XPOST -s -k -o /dev/null -w \"%{http_code}\" \"https://$(kubectl get httproute toystore -n ${devNS} -o=jsonpath='{.spec.hostnames[0]}')/v1/toys\"\n

    Finally, if you add your API key header, with a valid key as follows, you should get a 200 response:

    curl -XPOST -H 'api_key: secret' -s -k -o /dev/null -w \"%{http_code}\" \"https://$(kubectl get httproute toystore -n ${devNS} -o=jsonpath='{.spec.hostnames[0]}')/v1/toys\"\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#optional-step-6-set-up-openid-connect-auth-flow-skip-if-using-api-key-only","title":"Optional: Step 6 - Set up OpenID Connect auth flow (skip if using API key only)","text":"

    This section of the walkthrough uses the kuadrantctl tool to create an AuthPolicy that integrates with an OpenID provider and a RateLimitPolicy that leverages JWT values for per-user rate limiting. It is important to note that OpenID requires an external provider. Therefore, you should adapt the following example to suit your specific needs and provider.

    The platform engineer workflow established default policies for authentication and rate limiting at your Gateway. The new developer-defined policies, which you will create, are intended to target your HTTPRoute and will supersede the existing policies for requests to your API endpoints, similar to your previous API key example.

    The example OAS uses Kuadrant-based extensions. These extensions enable you to define routing and service protection requirements. For more details, see OpenAPI Kuadrant extensions.

    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#prerequisites_2","title":"Prerequisites","text":"
    • You have installed and configured an OpenID Connect provider, such as https://www.keycloak.org/.
    • You have a realm, client, and users set up. This example assumes a realm in a Keycloak instance called toystore.
    • Copy the OAS from sample OAS for rate-limiting and OIDC to a local location.
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#set-up-an-openid-authpolicy","title":"Set up an OpenID AuthPolicy","text":"

    Set the following environment variables:

    export openIDHost=some.keycloak.com\nexport oasPath=examples/oas-oidc.yaml\n

    NOTE: The sample OAS has some placeholders for namespaces and domains. You will inject valid values into these placeholders based on your previous environment variables.

    You can use your OAS and kuadrantctl to generate an AuthPolicy to replace the default on the Gateway as follows:

    cat $oasPath | envsubst | kuadrantctl generate kuadrant authpolicy --oas -\n

    If you are happy with the generated resource, you can apply it to the cluster as follows:

    cat $oasPath | envsubst | kuadrantctl generate kuadrant authpolicy --oas - | kubectl apply -f -\n

    You should see in the status of the AuthPolicy that it has been accepted and enforced:

    kubectl get authpolicy -n ${devNS} toystore -o=jsonpath='{.status.conditions}'\n

    On your HTTPRoute, you should also see it now affected by this AuthPolicy in the toystore namespace:

    kubectl get httproute toystore -n ${devNS} -o=jsonpath='{.status.parents[0].conditions[?(@.type==\"kuadrant.io/AuthPolicyAffected\")].message}'\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#test-your-openid-authpolicy","title":"Test your OpenID AuthPolicy","text":"

    You can test your AuthPolicy as follows:

    export ACCESS_TOKEN=$(curl -k -H \"Content-Type: application/x-www-form-urlencoded\" \\\n        -d 'grant_type=password' \\\n        -d 'client_id=toystore' \\\n        -d 'scope=openid' \\\n        -d 'username=bob' \\\n        -d 'password=p' \"https://${openIDHost}/auth/realms/toystore/protocol/openid-connect/token\" | jq -r '.access_token')\n
    curl -k -XPOST --write-out '%{http_code}\\n' --silent --output /dev/null \"https://$(kubectl get httproute toystore -n ${devNS} -o=jsonpath='{.spec.hostnames[0]}')/v1/toys\"\n

    You should see a 401 response code. Make a request with a valid bearer token as follows:

    curl -k -XPOST --write-out '%{http_code}\\n' --silent --output /dev/null -H \"Authorization: Bearer $ACCESS_TOKEN\" \"https://$(kubectl get httproute toystore -n ${devNS} -o=jsonpath='{.spec.hostnames[0]}')/v1/toys\"\n

    You should see a 200 response code.

    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#step-7-set-up-rate-limiting","title":"Step 7 - Set up rate limiting","text":"

    Lastly, you can generate your RateLimitPolicy to add your rate limits, based on your OAS file. Rate limiting is simplified for this walkthrough and is based on either the bearer token or the API key value. There are more advanced examples in the How-to guides on the Kuadrant documentation site, for example: Authenticated rate limiting with JWTs and Kubernetes RBAC.

    You can continue to use this sample OAS document, which includes both authentication and a rate limit:

    export oasPath=examples/oas-oidc.yaml\n

    Again, you should see the rate limit policy accepted and enforced:

    kubectl get ratelimitpolicy -n ${devNS} toystore -o=jsonpath='{.status.conditions}'\n

    On your HTTRoute, you should now see it is affected by the RateLimitPolicy in the same namespace:

    kubectl get httproute toystore -n ${devNS} -o=jsonpath='{.status.parents[0].conditions[?(@.type==\"kuadrant.io/RateLimitPolicyAffected\")].message}'\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#test-your-ratelimitpolicy","title":"Test your RateLimitPolicy","text":"

    You can now test your rate limiting as follows:

    NOTE: You might need to wait a minute for the new rate limits to be applied. With the following requests, you should see a number of 429 responses.

    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#api-key-auth","title":"API Key auth","text":"
    for i in {1..3}\ndo\nprintf \"request $i \"\ncurl -XPOST -H 'api_key:secret' -s -k -o /dev/null -w \"%{http_code}\"  \"https://$(kubectl get httproute toystore -n ${devNS} -o=jsonpath='{.spec.hostnames[0]}')/v1/toys\"\nprintf \"\\n -- \\n\"\ndone \n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#openid-connect-auth","title":"OpenID Connect auth","text":"
    export ACCESS_TOKEN=$(curl -k -H \"Content-Type: application/x-www-form-urlencoded\" \\\n        -d 'grant_type=password' \\\n        -d 'client_id=toystore' \\\n        -d 'scope=openid' \\\n        -d 'username=bob' \\\n        -d 'password=p' \"https://${openIDHost}/auth/realms/toystore/protocol/openid-connect/token\" | jq -r '.access_token')\n
    for i in {1..3}\ndo\ncurl -k -XPOST --write-out '%{http_code}\\n' --silent --output /dev/null -H \"Authorization: Bearer $ACCESS_TOKEN\" https://$(kubectl get httproute toystore -n ${devNS}-o=jsonpath='{.spec.hostnames[0]}')/v1/toys\ndone\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/#conclusion","title":"Conclusion","text":"

    You have completed the secure, protect, and connect walkthrough. To learn more about Kuadrant, visit https://docs.kuadrant.io.

    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect/","title":"Secure, protect, and connect services with Kuadrant on Kubernetes","text":""},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect/#prerequisites","title":"Prerequisites","text":"
    • You have completed the Single-cluster Quick Start or Multi-cluster Quick Start.
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect/#overview","title":"Overview","text":"

    In this guide, we will cover the different policies from Kuadrant and how you can use them to secure, protect and connect an Istio-controlled gateway in a single cluster, and how you can set more refined protection on the HTTPRoutes exposed by that gateway.

    Here are the steps we will go through:

    1) Deploy a sample application

    2) Define a new Gateway

    3) Ensure TLS-based secure connectivity to the gateway with a TLSPolicy

    4) Define a default RateLimitPolicy to set some infrastructure limits on your gateway

    5) Define a default AuthPolicy to deny all access to the gateway

    6) Define a DNSPolicy to bring traffic to the gateway

    7) Override the Gateway's deny-all AuthPolicy with an endpoint-specific policy

    8) Override the Gateway rate limits with an endpoint-specific policy

    You will need to set the KUBECTL_CONTEXT environment variable for the kubectl context of the cluster you are targeting. If you have followed the single cluster setup, it should be something like below. Adjust the name of the cluster accordingly to match the kubernetes cluster you are targeting. You can get the current context with kubectl config current-context

    #\u00a0Typical single cluster context\nexport KUBECTL_CONTEXT=kind-kuadrant-local\n\n# Example context for additional 'multi cluster' clusters\n# export KUBECTL_CONTEXT=kind-kuadrant-local-1\n

    To help with this walk through, you should also set a KUADRANT_ZONE_ROOT_DOMAIN environment variable to a domain you want to use. If you want to try DNSPolicy, this should also be a domain you have access to the DNS for in AWS Route53 or GCP. E.g.:

    export KUADRANT_ZONE_ROOT_DOMAIN=my.domain.iown\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect/#deploy-the-example-app-we-will-serve-via-our-gateway","title":"\u2776 Deploy the example app we will serve via our gateway","text":"
    kubectl --context $KUBECTL_CONTEXT apply -f https://raw.githubusercontent.com/Kuadrant/kuadrant-operator/main/examples/toystore/toystore.yaml\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect/#define-a-new-istio-managed-gateway","title":"\u2777 Define a new Istio-managed gateway","text":"
    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF\napiVersion: gateway.networking.k8s.io/v1\nkind: Gateway\nmetadata:\n  name: api-gateway\n  namespace: kuadrant-system\nspec:\n  gatewayClassName: istio\n  listeners:\n\n  - allowedRoutes:\n      namespaces:\n        from: All\n    name: api\n    hostname: \"*.$KUADRANT_ZONE_ROOT_DOMAIN\"\n    port: 443\n    protocol: HTTPS\n    tls:\n      mode: Terminate\n      certificateRefs:\n        - name: apps-hcpapps-tls\n          kind: Secret\nEOF\n

    If you take a look at the gateway status, you will see a TLS status error similar to the following:

    message: invalid certificate reference /Secret/apps-hcpapps-tls. secret kuadrant-system/apps-hcpapps-tls not found\n

    This is because currently there is not a TLS secret in place. Let's fix that by creating a TLSPolicy.

    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect/#define-the-tlspolicy","title":"\u2778 Define the TLSPolicy","text":"
    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF\napiVersion: kuadrant.io/v1alpha1\nkind: TLSPolicy\nmetadata:\n  name: api-gateway-tls\n  namespace: kuadrant-system\nspec:\n  targetRef:\n    name: api-gateway\n    group: gateway.networking.k8s.io\n    kind: Gateway\n  issuerRef:\n    group: cert-manager.io\n    kind: ClusterIssuer\n    name: kuadrant-operator-glbc-ca\nEOF\n

    Note: You may have to create a cluster issuer in the Kubernetes cluster, depending on if one was created during your initial cluster setup or not. Here is an example of how to create a self-signed CA as a cluster issuer.

    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF\napiVersion: cert-manager.io/v1\nkind: ClusterIssuer\nmetadata:\n  name: kuadrant-operator-glbc-ca\nspec:\n  selfSigned: {}\nEOF\n

    The TLSPolicy should eventually have an Accepted condition.

    kubectl --context $KUBECTL_CONTEXT wait tlspolicy api-gateway-tls -n kuadrant-system --for=condition=accepted\n

    Now, if you look at the status of the gateway, you will see the error is gone, and the status of the policy will report the listener as now secured with a TLS certificate and the gateway as affected by the TLS policy.

    Our communication with our gateway is now secured via TLS. Note that any new listeners will also be handled by the TLSPolicy.

    Let's define a HTTPRoute and test our policy. We will re-use this later on with some of the other policies as well.

    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF\napiVersion: gateway.networking.k8s.io/v1beta1\nkind: HTTPRoute\nmetadata:\n  name: toystore\n  labels:\n    deployment: toystore\n    service: toystore\nspec:\n  parentRefs:\n\n  - name: api-gateway\n    namespace: kuadrant-system\n  hostnames:\n  - \"api.$KUADRANT_ZONE_ROOT_DOMAIN\"\n  rules:\n  - matches:\n    - method: GET\n      path:\n        type: PathPrefix\n        value: \"/cars\"\n    - method: GET\n      path:\n        type: PathPrefix\n        value: \"/dolls\"\n    backendRefs:\n    - name: toystore\n      port: 80\n  - matches:\n    - path:\n        type: PathPrefix\n        value: \"/admin\"\n    backendRefs:\n    - name: toystore\n      port: 80\nEOF\n

    With this HTTPRoute in place, the service we deployed is exposed via the gateway. We should be able to access our endpoint via HTTPS:

    export INGRESS_HOST=$(kubectl --context $KUBECTL_CONTEXT get gtw api-gateway -o jsonpath='{.status.addresses[0].value}' -n kuadrant-system)\n\ncurl -k --resolve api.${KUADRANT_ZONE_ROOT_DOMAIN}:443:${INGRESS_HOST} \"https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars\"\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect/#define-infrastructure-rate-limiting","title":"\u2779 Define Infrastructure Rate Limiting","text":"

    We have a secure communication in place. However, there is nothing limiting users from overloading our infrastructure and service components that will sit behind this gateway. Let's add a rate limiting layer to protect our services and infrastructure.

    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF\napiVersion: kuadrant.io/v1beta2\nkind: RateLimitPolicy\nmetadata:\n  name: infra-ratelimit\n  namespace: kuadrant-system\nspec:\n  targetRef:\n    name: api-gateway\n    group: gateway.networking.k8s.io\n    kind: Gateway\n  limits:\n    \"global\":\n      rates:\n\n      - limit: 5\n        duration: 10\n        unit: second\nEOF\n\nkubectl --context $KUBECTL_CONTEXT wait ratelimitpolicy infra-ratelimit -n kuadrant-system --for=condition=accepted\n

    Note: It may take a couple of minutes for the RateLimitPolicy to be applied depending on your cluster.

    The limit here is artificially low in order for us to show it working easily. Let's test it with our endpoint:

    for i in {1..10}; do curl -k --resolve api.${KUADRANT_ZONE_ROOT_DOMAIN}:443:${INGRESS_HOST} \"https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars\" && sleep 1; done\n

    We should see 409 Too Many Requestss start returning after the 5th request.

    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect/#define-the-gateway-authpolicy","title":"\u277a Define the Gateway AuthPolicy","text":"

    Communication is secured and we have some protection for our infrastructure, but we do not trust any client to access our endpoints. By default, we want to allow only authenticated access. To protect our gateway, we will add a deny-all AuthPolicy. Later, we will override this with a more specific AuthPolicy for the API.

    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF\napiVersion: kuadrant.io/v1beta2\nkind: AuthPolicy\nmetadata:\n  name: deny-all\n  namespace: kuadrant-system\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: Gateway\n    name: api-gateway\n  rules:\n    authorization:\n      deny-all:\n        opa:\n          rego: \"allow = false\"\n    response:\n      unauthorized:\n        headers:\n          \"content-type\":\n            value: application/json\n        body:\n          value: |\n            {\n              \"error\": \"Forbidden\",\n              \"message\": \"Access denied by default by the gateway operator. If you are the administrator of the service, create a specific auth policy for the route.\"\n            }\nEOF\n

    Let's test it again. This time we expect a 403 Forbidden.

    curl -k --resolve api.${KUADRANT_ZONE_ROOT_DOMAIN}:443:${INGRESS_HOST}  \"https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars\"\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect/#define-the-dnspolicy","title":"\u277b Define the DNSPolicy","text":"

    (Skip this step if you did not configure a DNS provider during the setup.)

    Now, we have our gateway protected and communications secured. We are ready to configure DNS, so it is easy for clients to connect and access the APIs we intend to expose via this gateway.

    Note: You may need to create a DNS Provider Secret resource depending on if one was created during your initial cluster setup or not. You should have an aws-credentials Secret already created in the kuadrant-system namespace. However, if it doesn't exist, you can follow these commands to create one:

    export AWS_ACCESS_KEY_ID=xxxxxxx # Key ID from AWS with Route 53 access\nexport AWS_SECRET_ACCESS_KEY=xxxxxxx # Access key from AWS with Route 53 access\n\nkubectl -n kuadrant-system create secret generic aws-credentials \\\n  --type=kuadrant.io/aws \\\n  --from-literal=AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \\\n  --from-literal=AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY\n

    Next, create the DNSPolicy:

    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF\napiVersion: kuadrant.io/v1alpha1\nkind: DNSPolicy\nmetadata:\n  name: simple-dnspolicy\n  namespace: kuadrant-system\nspec:\n  routingStrategy: simple\n  targetRef:\n    name: api-gateway\n    group: gateway.networking.k8s.io\n    kind: Gateway\n  providerRefs:\n\n  - name: aws-credentials\nEOF\n\nkubectl --context $KUBECTL_CONTEXT wait dnspolicy simple-dnspolicy -n kuadrant-system --for=condition=enforced\n

    If you want to see the DNSRecord created by the this policy, execute the following command:

    kubectl --context $KUBECTL_CONTEXT get dnsrecord.kuadrant.io api-gateway-api -n kuadrant-system -o=yaml\n

    So now we have a wildcard DNS record to bring traffic to our gateway.

    Let's test it again. This time we expect a 403 still as the deny-all policy is still in effect. Notice we no longer need to set the Host header directly.

    Note: If you have followed through this guide on more than 1 cluster, the DNS record for the HTTPRoute hostname will have multiple IP addresses. This means that requests will be made in a round robin pattern across clusters as your DNS provider sends different responses to lookups. You may need to send multiple requests before one hits the cluster you are currently configuring.

    curl -k \"https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars\" -i\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect/#override-the-gateways-deny-all-authpolicy","title":"\u277c Override the Gateway's deny-all AuthPolicy","text":"

    Next, we are going to allow authenticated access to our Toystore API. To do this, we will define an AuthPolicy that targets the HTTPRoute. Note that any new HTTPRoutes will still be affected by the gateway-level policy, but as we want users to now access this API, we need to override that policy. For simplicity, we will use API keys to authenticate the requests, though many other options are available.

    Let's define an API Key for users bob and alice.

    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: bob-key\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    app: toystore\n  annotations:\n    secret.kuadrant.io/user-id: bob\nstringData:\n  api_key: IAMBOB\ntype: Opaque\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: alice-key\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    app: toystore\n  annotations:\n    secret.kuadrant.io/user-id: alice\nstringData:\n  api_key: IAMALICE\ntype: Opaque\nEOF\n

    Now, we will override the AuthPolicy to start accepting the API keys:

    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF\napiVersion: kuadrant.io/v1beta2\nkind: AuthPolicy\nmetadata:\n  name: toystore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: toystore\n  rules:\n    authentication:\n      \"api-key-users\":\n        apiKey:\n          selector:\n            matchLabels:\n              app: toystore\n        credentials:\n          authorizationHeader:\n            prefix: APIKEY\n    response:\n      success:\n        dynamicMetadata:\n          \"identity\":\n            json:\n              properties:\n                \"userid\":\n                  selector: auth.identity.metadata.annotations.secret\\.kuadrant\\.io/user-id\nEOF\n
    "},{"location":"kuadrant-operator/doc/user-guides/secure-protect-connect/#override-the-gateways-ratelimitpolicy","title":"\u277d Override the Gateway's RateLimitPolicy","text":"

    The gateway limits are a good set of limits for the general case, but as the developers of this API we know that we only want to allow a certain number of requests to specific users, and a general limit for all other users.

    kubectl --context $KUBECTL_CONTEXT apply -f - <<EOF\napiVersion: kuadrant.io/v1beta2\nkind: RateLimitPolicy\nmetadata:\n  name: toystore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: toystore\n  limits:\n    \"general-user\":\n      rates:\n\n      - limit: 1\n        duration: 3\n        unit: second\n      counters:\n      - metadata.filter_metadata.envoy\\.filters\\.http\\.ext_authz.identity.userid\n      when:\n      - selector: metadata.filter_metadata.envoy\\.filters\\.http\\.ext_authz.identity.userid\n        operator: neq\n        value: bob\n    \"bob-limit\":\n      rates:\n      - limit: 2\n        duration: 3\n        unit: second\n      when:\n      - selector: metadata.filter_metadata.envoy\\.filters\\.http\\.ext_authz.identity.userid\n        operator: eq\n        value: bob\nEOF\n

    Note: It may take a couple of minutes for the RateLimitPolicy to be applied depending on your cluster.

    As just another example, we have given bob twice as many requests to use compared to everyone else.

    Let's test this new setup.

    By sending requests as alice:

    while :; do curl -k --resolve api.${KUADRANT_ZONE_ROOT_DOMAIN}:443:${INGRESS_HOST} --write-out '%{http_code}\\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMALICE' \"https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars\" | grep -E --color \"\\b(429)\\b|$\"; sleep 1; done\n

    By sending requests as bob:

    while :; do curl -k --resolve api.${KUADRANT_ZONE_ROOT_DOMAIN}:443:${INGRESS_HOST} --write-out '%{http_code}\\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMBOB' \"https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars\" | grep -E --color \"\\b(429)\\b|$\"; sleep 1; done\n

    Note: If you configured a DNS provider during the setup and defined the DNSPolicy as described in one of the previous chapters you can omit the --resolve api.${KUADRANT_ZONE_ROOT_DOMAIN}:443:${INGRESS_HOST} flag.

    Note: If you have followed through this guide on more than 1 cluster, the DNS record for the HTTPRoute hostname will have multiple IP addresses. This means that requests will be made in a round robin pattern across clusters as your DNS provider sends different responses to lookups.

    while :; do curl -k --write-out '%{http_code}\\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMALICE' \"https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars\" | grep -E --color \"\\b(429)\\b|$\"; sleep 1; done\n
    while :; do curl -k --write-out '%{http_code}\\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMBOB' \"https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars\" | grep -E --color \"\\b(429)\\b|$\"; sleep 1; done\n
    "},{"location":"kuadrant-operator/doc/user-guides/simple-rl-for-app-developers/","title":"Simple Rate Limiting for Application Developers","text":"

    This user guide walks you through an example of how to configure rate limiting for an endpoint of an application using Kuadrant.

    In this guide, we will rate limit a sample REST API called Toy Store. In reality, this API is just an echo service that echoes back to the user whatever attributes it gets in the request. The API listens to requests at the hostname api.toystore.com, where it exposes the endpoints GET /toys* and POST /toys, respectively, to mimic a operations of reading and writing toy records.

    We will rate limit the POST /toys endpoint to a maximum of 5rp10s (\"5 requests every 10 seconds\").

    "},{"location":"kuadrant-operator/doc/user-guides/simple-rl-for-app-developers/#run-the-steps-1-3","title":"Run the steps \u2460 \u2192 \u2462","text":""},{"location":"kuadrant-operator/doc/user-guides/simple-rl-for-app-developers/#1-setup","title":"\u2460 Setup","text":"

    This step uses tooling from the Kuadrant Operator component to create a containerized Kubernetes server locally using Kind, where it installs Istio, Kubernetes Gateway API and Kuadrant itself.

    Note: In production environment, these steps are usually performed by a cluster operator with administrator privileges over the Kubernetes cluster.

    Clone the project:

    git clone https://github.com/Kuadrant/kuadrant-operator && cd kuadrant-operator\n

    Setup the environment:

    make local-setup\n

    Request an instance of Kuadrant:

    kubectl -n kuadrant-system apply -f - <<EOF\napiVersion: kuadrant.io/v1beta1\nkind: Kuadrant\nmetadata:\n  name: kuadrant\nspec: {}\nEOF\n
    "},{"location":"kuadrant-operator/doc/user-guides/simple-rl-for-app-developers/#2-deploy-the-toy-store-api","title":"\u2461 Deploy the Toy Store API","text":"

    Create the deployment:

    kubectl apply -f examples/toystore/toystore.yaml\n

    Create a HTTPRoute to route traffic to the service via Istio Ingress Gateway:

    kubectl apply -f - <<EOF\napiVersion: gateway.networking.k8s.io/v1\nkind: HTTPRoute\nmetadata:\n  name: toystore\nspec:\n  parentRefs:\n\n  - name: istio-ingressgateway\n    namespace: istio-system\n  hostnames:\n  - api.toystore.com\n  rules:\n  - matches:\n    - method: GET\n      path:\n        type: PathPrefix\n        value: \"/toys\"\n    backendRefs:\n    - name: toystore\n      port: 80\n  - matches: # it has to be a separate HTTPRouteRule so we do not rate limit other endpoints\n    - method: POST\n      path:\n        type: Exact\n        value: \"/toys\"\n    backendRefs:\n    - name: toystore\n      port: 80\nEOF\n

    Export the gateway hostname and port:

    export INGRESS_HOST=$(kubectl get gtw istio-ingressgateway -n istio-system -o jsonpath='{.status.addresses[0].value}')\nexport INGRESS_PORT=$(kubectl get gtw istio-ingressgateway -n istio-system -o jsonpath='{.spec.listeners[?(@.name==\"http\")].port}')\nexport GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT\n

    Verify the route works:

    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/toys -i\n# HTTP/1.1 200 OK\n

    Note: If the command above fails to hit the Toy Store API on your environment, try forwarding requests to the service and accessing over localhost:

    kubectl port-forward -n istio-system service/istio-ingressgateway-istio 9080:80 >/dev/null 2>&1 &\nexport GATEWAY_URL=localhost:9080\n
    curl -H 'Host: api.toystore.com' http://$GATEWAY_URL/toys -i\n# HTTP/1.1 200 OK\n

    "},{"location":"kuadrant-operator/doc/user-guides/simple-rl-for-app-developers/#3-enforce-rate-limiting-on-requests-to-the-toy-store-api","title":"\u2462 Enforce rate limiting on requests to the Toy Store API","text":"

    Create a Kuadrant RateLimitPolicy to configure rate limiting:

    kubectl apply -f - <<EOF\napiVersion: kuadrant.io/v1beta2\nkind: RateLimitPolicy\nmetadata:\n  name: toystore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: toystore\n  limits:\n    \"create-toy\":\n      rates:\n\n      - limit: 5\n        duration: 10\n        unit: second\n      routeSelectors:\n      - matches: # selects the 2nd HTTPRouteRule of the targeted route\n        - method: POST\n          path:\n            type: Exact\n            value: \"/toys\"\nEOF\n

    Note: It may take a couple of minutes for the RateLimitPolicy to be applied depending on your cluster.

    Verify the rate limiting works by sending requests in a loop.

    Up to 5 successful (200 OK) requests every 10 seconds to POST /toys, then 429 Too Many Requests:

    while :; do curl --write-out '%{http_code}\\n' --silent --output /dev/null -H 'Host: api.toystore.com' http://$GATEWAY_URL/toys -X POST | grep -E --color \"\\b(429)\\b|$\"; sleep 1; done\n

    Unlimited successful (200 OK) to GET /toys:

    while :; do curl --write-out '%{http_code}\\n' --silent --output /dev/null -H 'Host: api.toystore.com' http://$GATEWAY_URL/toys | grep -E --color \"\\b(429)\\b|$\"; sleep 1; done\n
    "},{"location":"kuadrant-operator/doc/user-guides/simple-rl-for-app-developers/#cleanup","title":"Cleanup","text":"
    make local-cleanup\n
    "},{"location":"kuadrant-operator/examples/alerts/","title":"Index","text":""},{"location":"kuadrant-operator/examples/alerts/#slo-multi-burn-rate-multi-window-alerts","title":"SLO Multi burn rate multi window alerts","text":"

    Kuadrant have created two example SLO alerts to help give ideas on the types of SLO alerts that could be used with the operator. We have created one alert for latency and one for availability, both are Multiwindow, Multi-Burn-Rate Alerts. The alerts show a scenario where a 28d rolling window is used and a uptime of 99.95% i.e only 0.05% error budget margin is desired. This in real world time would be downtime of around:

    Time Frame Duration Daily: 43s Weekly: 5m 2.4s Monthly: 21m 44s Quarterly: 1h 5m 12s Yearly: 4h 20m 49s

    These values can be changed to suit different scenarios

    "},{"location":"kuadrant-operator/examples/alerts/#sloth","title":"Sloth","text":"

    Sloth is a tool to aid in the creation of multi burn rate and multi window SLO alerts and was used to create both the availability and latency alerts. It follows the common standard set out by Google's SRE book. Sloth generates alerts based on specific specs given. The specs for our example alerts can be found in the example/sloth folder.

    "},{"location":"kuadrant-operator/examples/alerts/#metrics-used-for-the-alerts","title":"Metrics used for the alerts","text":""},{"location":"kuadrant-operator/examples/alerts/#availability","title":"Availability","text":"

    For the availability SLO alerts the Istio metric istio_requests_total was used as its a counter type metric meaning the values can only increase as well as it gives information on all requests handled by the Istio proxy.

    "},{"location":"kuadrant-operator/examples/alerts/#latency","title":"Latency","text":"

    For the availability SLO alerts the Istio metric istio_request_duration_milliseconds was used as its a Histogram.

    "},{"location":"kuadrant-operator/examples/alerts/#sloth-generation","title":"Sloth generation","text":"

    You can modify the examples Sloth specs we have and regenerate the prometheus rules using the Sloth CLI and the generate command. For more information please the Sloth website

    sloth generate -i examples/alerts/sloth/latency.yaml --default-slo-period=28d\n
    You can also use the make target to generate the rules to.

    make sloth-generate\n
    "},{"location":"kuadrant-operator/examples/alerts/#prometheus-unit-tests","title":"Prometheus unit tests","text":"

    There are also two matching unit tests to verify and test the alerts that Sloth has generated. These can be run using the make target:

    make test-alerts\n

    Note: The prometheus unit tests will also run via Github actions when a change is made in the alerts file.

    "},{"location":"authorino/","title":"Authorino","text":"

    Kubernetes-native authorization service for tailor-made Zero Trust API security.

    A lightweight Envoy external authorization server fully manageable via Kubernetes Custom Resources. JWT authentication, API key, mTLS, pattern-matching authz, OPA, K8s SA tokens, K8s RBAC, external metadata fetching, and more, with minimum to no coding at all, no rebuilding of your applications.

    Authorino is not about inventing anything new. It's about making the best things about auth out there easy and simple to use. Authorino is multi-tenant, it's cloud-native and it's open source.

    "},{"location":"authorino/#getting-started","title":"Getting started","text":"
    1. Deploy with the Authorino Operator
    2. Setup Envoy proxy and the external authorization filter
    3. Apply an Authorino AuthConfig custom resource
    4. Obtain an authentication token and start sending requests

    The full Getting started page of the docs provides details for the steps above, as well as information about requirements and next steps.

    Or try out our Hello World example.

    For general information about protecting your service using Authorino, check out the docs.

    "},{"location":"authorino/#use-cases","title":"Use-cases","text":"

    The User guides section of the docs gathers several AuthN/AuthZ use-cases as well as the instructions to implement them using Authorino. A few examples are:

    • Authentication with JWTs and OpenID Connect Discovery
    • Authentication with API keys
    • Authentication with Kubernetes SA tokens (TokenReview API)
    • Authentication with X.509 certificates and mTLS
    • Authorization with JSON pattern-matching rules (e.g. JWT claims, request attributes, etc)
    • Authorization with Open Policy Agent (OPA) Rego policies
    • Authorization using the Kubernetes RBAC (rules stated in K8s Role and RoleBinding resources)
    • Authorization using auth metadata fetched from external sources
    • OIDC authentication and RBAC with Keycloak JWTs
    • Injecting auth data into the request (HTTP headers, Wristband tokens, rate-limit metadata, etc)
    • Authorino for the Kubernetes control plane (aka Authorino as ValidatingWebhook service)
    "},{"location":"authorino/#how-it-works","title":"How it works","text":"

    Authorino enables hybrid API security, with usually no code changes required to your application, tailor-made for your own combination of authentication standards and protocols and authorization policies of choice.

    Authorino implements Envoy Proxy's external authorization gRPC protocol, and is a part of Red Hat Kuadrant architecture.

    Under the hood, Authorino is based on Kubernetes Custom Resource Definitions and the Operator pattern.

    Bootstrap and configuration:

    1. Deploy the service/API to be protected (\"Upstream\"), Authorino and Envoy
    2. Write and apply an Authorino AuthConfig Custom Resource associated to the public host of the service

    Request-time:

    1. A user or service account (\"Consumer\") obtains an access token to consume resources of the Upstream service, and sends a request to the Envoy ingress endpoint
    2. The Envoy proxy establishes fast gRPC connection with Authorino carrying data of the HTTP request (context info), which causes Authorino to lookup for an AuthConfig Custom Resource to enforce (pre-cached)
    3. Identity verification (authentication) phase - Authorino verifies the identity of the consumer, where at least one authentication method/identity provider must go through
    4. External metadata phase - Authorino fetches additional metadata for the authorization from external sources (optional)
    5. Policy enforcement (authorization) phase - Authorino takes as input a JSON composed out of context data, resolved identity object and fetched additional metadata from previous phases, and triggers the evaluation of user-defined authorization policies
    6. Response (metadata-out) phase \u2013 Authorino builds user-defined custom responses (dynamic JSON objects and/or Festival Wristband OIDC tokens), to be supplied back to the client and/or upstream service within added HTTP headers or as Envoy Dynamic Metadata (optional)
    7. Callbacks phase \u2013 Authorino sends callbacks to specified HTTP endpoints (optional)
    8. Authorino and Envoy settle the authorization protocol with either OK/NOK response
    9. If authorized, Envoy triggers other HTTP filters in the chain (if any), pre-injecting eventual dynamic metadata returned by Authorino, and ultimately redirects the request to the Upstream
    10. The Upstream serves the requested resource to the consumer
    More

    The Architecture section of the docs covers details of protecting your APIs with Envoy and Authorino, including information about topology (centralized gateway, centralized authorization service or sidecars), deployment modes (cluster-wide reconciliation vs. namespaced instances), an specification of Authorino's AuthConfig Custom Resource Definition (CRD) and more.

    You will also find in that section information about what happens in request-time (aka Authorino's Auth Pipeline) and how to leverage the Authorization JSON for writing policies, dynamic responses and other features of Authorino.

    "},{"location":"authorino/#list-of-features","title":"List of features","text":"Feature Stage Identity verification & authentication JOSE/JWT validation (OpenID Connect) Ready OAuth 2.0 Token Introspection (opaque tokens) Ready Kubernetes TokenReview (SA tokens) Ready OpenShift User-echo endpoint In analysis API key authentication Ready mTLS authentication Ready HMAC authentication Planned (#9) Plain (resolved beforehand and injected in the payload) Ready Anonymous access Ready Ad hoc external metadata fetching OpenID Connect User Info Ready UMA-protected resource attributes Ready HTTP GET/GET-by-POST Ready Policy enforcement/authorization JSON pattern matching (e.g. JWT claims, request attributes checking) Ready OPA/Rego policies (inline and pull from registry) Ready Kubernetes SubjectAccessReview (resource and non-resource attributes) Ready Authzed/SpiceDB Ready Keycloak Authorization Services (UMA-compliant Authorization API) In analysis Custom responses Festival Wristbands tokens (token normalization, Edge Authentication Architecture) Ready JSON injection (header injection, Envoy Dynamic Metadata) Ready Plain text value (header injection) Ready Custom response status code/messages (e.g. redirect) Ready Callbacks HTTP endpoints Ready Caching OpenID Connect and User-Managed Access configs Ready JSON Web Keys (JWKs) and JSON Web Key Sets (JWKS) Ready Access tokens Ready External metadata Ready Precompiled Rego policies Ready Policy evaluation Ready Sharding (lookup performance, multitenancy) Ready

    For a detailed description of the features above, refer to the Features page.

    "},{"location":"authorino/#faq","title":"FAQ","text":"Do I need to deploy Envoy?

    Authorino is built from the ground up to work well with Envoy. It is strongly recommended that you leverage Envoy along side Authorino. That said, it is possible to use Authorino without Envoy.

    Authorino implements Envoy's external authorization gRPC protocol and therefore will accept any client request that complies.

    Authorino also provides a second interface for raw HTTP authorization, suitable for using with Kubernetes ValidatingWebhook and other integrations (e.g. other proxies).

    The only attribute of the authorization request that is strictly required is the host name. (See Host lookup for more information.) The other attributes, such as method, path, headers, etc, might as well be required, depending on each AuthConfig. In the case of the gRPC CheckRequest method, the host is supplied in Attributes.Request.Http.Host and alternatively in Attributes.ContextExtensions[\"host\"]. For raw HTTP authorization requests, the host must be supplied in Host HTTP header.

    Check out Kuadrant for easy-to-use Envoy and Authorino deployment & configuration for API management use-cases, using Kubernetes Custom Resources.

    Is Authorino an Identity Provider (IdP)?

    No, Authorino is not an Identity Provider (IdP). Neither it is an auth server of any kind, such as an OAuth2 server, an OpenID Connect (OIDC) server, a Single Sign On (SSO) server.

    Authorino is not an identity broker either. It can verify access tokens from multiple trusted sources of identity and protocols, but it will not negotiate authentication flows for non-authenticated access requests. Some tricks nonetheless can be done, for example, to redirect unauthenticated users to a login page.

    For an excellent auth server that checks all the boxes above, check out Keycloak.

    How does Authorino compare to Keycloak?

    Keycloak is a proper auth server and identity provider (IdP). It offers a huge set of features for managing identities, identity sources with multiple user federation options, and a platform for authentication and authorization services.

    Keycloak exposes authenticators that implement protocols such as OpenID Connect. The is a one-time flow that establishes the delegation of power to a client, for a short period of time. To be consistent with Zero Trust security, you want a validator to verify the short-lived tokens in every request that tries to reach your protected service/resource. This step that will repeat everytime could save heavy looking up into big tables of tokens and leverage cached authorization policies for fast in-memory evaluation. This is where Authorino comes in.

    Authorino verifies and validates Keycloak-issued ID tokens. OpenID Connect Discovery is used to request and cache JSON Web Key Sets (JWKS), used to verify the signature of the tokens without having to contact again with the Keycloak server, or looking in a table of credentials. Moreover, user long-lived credentials are safe, rather than spread in hops across the network.

    You can also use Keycloak for storing auth-relevant resource metadata. These can be fetched by Authorino in request-time, to be combined into your authorization policies. See Keycloak Authorization Services and User-Managed Access (UMA) support, as well as Authorino UMA external metadata counter-part.

    Why doesn't Authorino handle OAuth flows?

    It has to do with trust. OAuth grants are supposed to be negotiated directly between whoever owns the long-lived credentials in one hand (user, service accounts), and the trustworthy auth server that receives those credentials \u2013 ideally with minimum number of hops in the middle \u2013 and exchanges them for short-lived access tokens, on the other end.

    There are use-cases for Authorino running in the edge (e.g. Edge Authentication Architecture and token normalization), but in most cases Authorino should be seen as a last-mile component that provides decoupled identity verification and authorization policy enforcement to protected services in request-time. In this sense, the OAuth grant is a pre-flight exchange that happens once and as direct and safe as possible, whereas auth enforcement is kept lightweight and efficient.

    Where does Authorino store users and roles?

    Authorino does not store users, roles, role bindings, access control lists, or any raw authorization data. Authorino handles policies, where even these policies can be stored elsewhere (as opposed to stated inline inside of an Authorino AuthConfig CR).

    Authorino evaluates policies for stateless authorization requests. Any additional context is either resolved from the provided payload or static definitions inside the policies. That includes extracting user information from a JWT or client TLS certificate, requesting user metadata from opaque authentication tokens (e.g. API keys) to the trusted sources actually storing that content, obtaining synchronous HTTP metadata from services, etc.

    In the case of authentication with API keys, as well as its derivative to model HTTP Basic Auth, user data are stored in Kubernetes Secrets. The secret's keys, annotations and labels are usually the structures used to organize the data that later a policy evaluated in Authorino may require. Strictly, those are not Authorino data structures.

    Can't I just use Envoy JWT Authentication and RBAC filters?

    Envoy's JWT Authentication works pretty much similar to Authorino's JOSE/JWT verification and validation for OpenID Connect. In both cases, the JSON Web Key Sets (JWKS) to verify the JWTs are auto-loaded and cached to be used in request-time. Moreover, you can configure for details such as where to extract the JWT from the HTTP request (header, param or cookie) and do some cool tricks regarding how dynamic metadata based on JWT claims can be injected to consecutive filters in the chain.

    However, in terms of authorization, while Envoy's implementation essentially allows to check for the list of audiences (aud JWT claim), Authorino opens up for a lot more options such as pattern-matching rules with operators and conditionals, built-in OPA and other methods of evaluating authorization policies.

    Authorino also allows to combine JWT authentication with other types of authentication to support different sources of identity and groups of users such as API keys, Kubernetes tokens, OAuth opaque tokens , etc.

    In summary, Envoy's JWT Authentication and Envoy RBAC filter are excellent solutions for simple use-cases where JWTs from one single issuer is the only authentication method you are planning to support and limited to no authorization rules suffice. On the other hand, if you need to integrate more identity sources, different types of authentication, authorization policies, etc, you might to consider Authorino.

    Should I use Authorino if I already have Istio configured?

    Istio is a great solution for managing service meshes. It delivers an excellent platform with an interesting layer of abstraction on top of Envoy proxy's virtual omnipresence within the mesh.

    There are lots of similarities, but also complementarity between Authorino and Istio and Istio Authorization in special.

    Istio provides a simple way to enable features that are, in many cases, features of Envoy, such as authorization based on JWTs, authorization based on attributes of the request, and activation of external authorization services, without having to deal with complex Envoy config files. See Kuadrant for a similar approach, nonetheless leveraging features of Istio as well.

    Authorino is an Envoy-compatible external authorization service. One can use Authorino with or without Istio.

    In particular, Istio Authorization Policies can be seen, in terms of functionality and expressiveness, as a subset of one type of authorization policies supported by Authorino, the pattern-matching authorization policies. While Istio, however, is heavily focused on specific use cases of API Management, offering a relatively limited list of supported attribute conditions, Authorino is more generic, allowing to express authorization rules for a wider spectrum of use cases \u2013 ACLs, RBAC, ABAC, etc, pretty much counting on any attribute of the Envoy payload, identity object and external metadata available.

    Authorino also provides built-in OPA authorization, several other methods of authentication and identity verification (e.g. Kubernetes token validation, API key-based authentication, OAuth token introspection, OIDC-discoverable JWT verification, etc), and features like fetching of external metadata (HTTP services, OIDC userinfo, UMA resource data), token normalization, wristband tokens and dynamic responses. These all can be used independently or combined, in a simple and straightforward Kubernetes-native fashion.

    In summary, one might value Authorino when looking for a policy enforcer that offers:

    1. multiple supported methods and protocols for rather hybrid authentication, encompassing future and legacy auth needs;
    2. broader expressiveness and more functionalities for the authorization rules;
    3. authentication and authorization in one single declarative manifest;
    4. capability to fetch auth metadata from external sources on-the-fly;
    5. built-in OPA module;
    6. easy token normalization and/or aiming for Edge Authentication Architecture (EAA).

    The good news is that, if you have Istio configured, then you have Envoy and the whole platform for wiring Authorino up if you want to. \ud83d\ude09

    Do I have to learn OPA/Rego language to use Authorino?

    No, you do not. However, if you are comfortable with Rego from Open Policy Agent (OPA), there are some quite interesting things you can do in Authorino, just as you would in any OPA server or OPA plugin, but leveraging Authorino's built-in OPA module instead. Authorino's OPA module is compiled as part of Authorino's code directly from the Golang packages, and imposes no extra latency to the evaluation of your authorization policies. Even the policies themselves are pre-compiled in reconciliation-time, for fast evaluation afterwards, in request-time.

    On the other hand, if you do not want to learn Rego or in any case would like to combine it with declarative and Kubernetes-native authN/authZ spec for your services, Authorino does complement OPA with at least two other methods for expressing authorization policies \u2013 i.e. pattern-matching authorization and Kubernetes SubjectAccessReview, the latter allowing to rely completely on the Kubernetes RBAC.

    You break down, mix and combine these methods and technolgies in as many authorization policies as you want, potentially applying them according to specific conditions. Authorino will trigger the evaluation of concurrent policies in parallel, aborting the context if any of the processes denies access.

    Authorino also packages well-established industry standards and protocols for identity verification (JOSE/JWT validation, OAuth token introspection, Kubernetes TokenReview) and ad-hoc request-time metadata fetching (OIDC userinfo, User-Managed Access (UMA)), and corresponding layers of caching, without which such functionalities would have to be implemented by code.

    Can I use Authorino to protect non-REST APIs?

    Yes, you can. In principle, the API format (REST, gRPC, GraphQL, etc) should not matter for the authN/authZ enforcer. There are a couple points to consider though.

    While REST APIs are designed in a way that, in most cases, information usually needed for the evaluation of authorization policies are available in the metadata of the HTTP request (method, path, headers), other API formats quite often will require processing of the HTTP body. By default, Envoy's external authorization HTTP filter will not forward the body of the request to Authorino; to change that, enable the with_request_body option in the Envoy configuration for the external authorization filter. E.g.:

    with_request_body:\n  max_request_bytes: 1024\n  allow_partial_message: true\n  pack_as_bytes: true\n

    Additionally, when enabling the request body passed in the payload to Authorino, parsing of the content should be of concern as well. Authorino provides easy access to attributes of the HTTP request, parsed as part of the Authorization JSON, however the body of the request is passed as string and should be parsed by the user according to each case.

    Check out Authorino OPA authorization and the Rego Encoding functions for options to parse serialized JSON, YAML and URL-encoded params. For XML transformation, an external parsing service connected via Authorino's HTTP GET/GET-by-POST external metadata might be required.

    Can I run Authorino other than on Kubernetes?

    As of today, no, you cannot, or at least it wouldn't suit production requirements.

    Do I have to be admin of the cluster to install Authorino?

    To install the Authorino Custom Resource Definition (CRD) and to define cluster roles required by the Authorino service, admin privilege to the Kubernetes cluster is required. This step happens only once per cluster and is usually equivalent to installing the Authorino Operator.

    Thereafter, deploying instances of the Authorino service and applying AuthConfig custom resources to a namespace depend on the permissions set by the cluster administrator \u2013 either directly by editing the bindings in the cluster's RBAC, or via options of the operator. In most cases, developers will be granted permissions to create and manage AuthConfigs, and sometimes to deploy their own instances of Authorino.

    Is it OK to store AuthN/AuthZ configs as Kubernetes objects?

    Authorino's API checks all the bullets to be aggregated to the Kubernetes cluster APIs, and therefore using Custom Resource Definition (CRD) and the Operator pattern has always been an easy design decision.

    By merging the definitions of service authN/authZ to the control plane, Authorino AuthConfig resources can be thought as extensions of the specs of the desired state of services regarding the data flow security. The Authorino custom controllers, built-in into the authorization service, are the agents that read from that desired state and reconcile the processes operating in the data plane.

    Authorino is declarative and seamless for developers and cluster administrators managing the state of security of the applications running in the server, used to tools such as kubectl, the Kubernetes UI and its dashboards. Instead of learning about yet another configuration API format, Authorino users can jump straight to applying and editing YAML or JSON structures they already know, in a way that things such as spec, status, namespace and labels have the meaning they are expected to have, and docs are as close as kubectl explain. Moreover, Authorino does not pile up any other redundant layers of APIs, event-processing, RBAC, transformation and validation webhooks, etc. It is Kubernetes in its best.

    In terms of scale, Authorino AuthConfigs should grow proportionally to the number of protected services, virtually limited by nothing but the Kubernetes API data storage, while namespace division and label selectors help adjust horizontally and keep distributed.

    In other words, there are lots of benefits of using Kubernetes custom resources and custom controllers, and unless you are planning on bursting your server with more services than it can keep record, it is totally \ud83d\udc4d to store your AuthN/AuthZ configs as cluster API objects.

    Can I use Authorino for rate limiting?

    You can, but you shouldn't. Check out instead Limitador, for simple and efficient global rate limiting. Combine it with Authorino and Authorino's support for Envoy Dynamic Metadata for authenticated rate limiting.

    "},{"location":"authorino/#benchmarks","title":"Benchmarks","text":"

    Configuration of the tests (Authorino features):

    Performance test Identity Metadata Authorization Response ReconcileAuthConfig OIDC/JWT UserInfo, UMA OPA(inline Rego) - AuthPipeline OIDC/JWT - JSON pattern-matching(JWT claim check) - APIKeyAuthn API key N/A N/A N/A JSONPatternMatchingAuthz N/A N/A JSON pattern-matching N/A OPAAuthz N/A N/A OPA(inline Rego) N/A

    Platform: linux/amd64 CPU: Intel\u00ae Xeon\u00ae Platinum 8370C 2.80GHz Cores: 1, 4, 10

    Results:

    ReconcileAuthConfig:\n\n        \u2502   sec/op    \u2502     B/op     \u2502  allocs/op  \u2502\n\n*         1.533m \u00b1 2%   264.4Ki \u00b1 0%   6.470k \u00b1 0%\n*-4       1.381m \u00b1 6%   264.5Ki \u00b1 0%   6.471k \u00b1 0%\n*-10      1.563m \u00b1 5%   270.2Ki \u00b1 0%   6.426k \u00b1 0%\ngeomean   1.491m        266.4Ki        6.456k\n\nAuthPipeline:\n\n        \u2502   sec/op    \u2502     B/op     \u2502 allocs/op  \u2502\n\n*         388.0\u00b5 \u00b1 2%   80.70Ki \u00b1 0%   894.0 \u00b1 0%\n*-4       348.4\u00b5 \u00b1 5%   80.67Ki \u00b1 2%   894.0 \u00b1 3%\n*-10      356.4\u00b5 \u00b1 2%   78.97Ki \u00b1 0%   860.0 \u00b1 0%\ngeomean   363.9\u00b5        80.11Ki        882.5\n\nAPIKeyAuthn:\n\n        \u2502   sec/op    \u2502    B/op      \u2502 allocs/op  \u2502\n\n*         3.246\u00b5 \u00b1 1%   480.0 \u00b1 0%     6.000 \u00b1 0%\n*-4       3.111\u00b5 \u00b1 0%   480.0 \u00b1 0%     6.000 \u00b1 0%\n*-10      3.091\u00b5 \u00b1 1%   480.0 \u00b1 0%     6.000 \u00b1 0%\ngeomean   3.148\u00b5        480.0          6.000\n\nOPAAuthz vs JSONPatternMatchingAuthz:\n\n        \u2502   OPAAuthz   \u2502      JSONPatternMatchingAuthz       \u2502\n        \u2502    sec/op    \u2502   sec/op     vs base                \u2502\n\n*         87.469\u00b5 \u00b1 1%   1.797\u00b5 \u00b1 1%  -97.95% (p=0.000 n=10)\n*-4       95.954\u00b5 \u00b1 3%   1.766\u00b5 \u00b1 0%  -98.16% (p=0.000 n=10)\n*-10      96.789\u00b5 \u00b1 4%   1.763\u00b5 \u00b1 0%  -98.18% (p=0.000 n=10)\ngeomean    93.31\u00b5        1.775\u00b5       -98.10%\n\n        \u2502   OPAAuthz    \u2502      JSONPatternMatchingAuthz      \u2502\n        \u2502     B/op      \u2502    B/op     vs base                \u2502\n\n*         28826.00 \u00b1 0%   64.00 \u00b1 0%  -99.78% (p=0.000 n=10)\n*-4       28844.00 \u00b1 0%   64.00 \u00b1 0%  -99.78% (p=0.000 n=10)\n*-10      28862.00 \u00b1 0%   64.00 \u00b1 0%  -99.78% (p=0.000 n=10)\ngeomean    28.17Ki        64.00       -99.78%\n\n        \u2502   OPAAuthz   \u2502      JSONPatternMatchingAuthz      \u2502\n        \u2502  allocs/op   \u2502 allocs/op   vs base                \u2502\n\n*         569.000 \u00b1 0%   2.000 \u00b1 0%  -99.65% (p=0.000 n=10)\n*-4       569.000 \u00b1 0%   2.000 \u00b1 0%  -99.65% (p=0.000 n=10)\n*-10      569.000 \u00b1 0%   2.000 \u00b1 0%  -99.65% (p=0.000 n=10)\ngeomean     569.0        2.000       -99.65%\n

    "},{"location":"authorino/#contributing","title":"Contributing","text":"

    If you are interested in contributing to Authorino, please refer to the Developer's guide for info about the stack and requirements, workflow, policies and Code of Conduct.

    Join us on the #kuadrant channel in the Kubernetes Slack workspace, for live discussions about the roadmap and more.

    "},{"location":"authorino/#license","title":"License","text":""},{"location":"authorino/docs/","title":"Documentation","text":""},{"location":"authorino/docs/#getting-started","title":"Getting started","text":""},{"location":"authorino/docs/#terminology","title":"Terminology","text":""},{"location":"authorino/docs/#architecture","title":"Architecture","text":""},{"location":"authorino/docs/#feature-description","title":"Feature description","text":""},{"location":"authorino/docs/#user-guides","title":"User guides","text":""},{"location":"authorino/docs/#developers-guide","title":"Developer\u2019s guide","text":""},{"location":"authorino/docs/architecture/","title":"Architecture","text":""},{"location":"authorino/docs/architecture/#overview","title":"Overview","text":"

    There are a few concepts to understand Authorino's architecture. The main components are: Authorino, Envoy and the Upstream service to be protected. Envoy proxies requests to the configured virtual host upstream service, first contacting with Authorino to decide on authN/authZ.

    The topology can vary from centralized proxy and centralized authorization service, to dedicated sidecars, with the nuances in between. Read more about the topologies in the Topologies section below.

    Authorino is deployed using the Authorino Operator, from an Authorino Kubernetes custom resource. Then, from another kind of custom resource, the AuthConfig CRs, each Authorino instance reads and adds to the index the exact rules of authN/authZ to enforce for each protected host (\"index reconciliation\").

    Everything that the AuthConfig reconciler can fetch in reconciliation-time is stored in the index. This is the case of static parameters such as signing keys, authentication secrets and authorization policies from external policy registries.

    AuthConfigs can refer to identity providers (IdP) and trusted auth servers whose access tokens will be accepted to authenticate to the protected host. Consumers obtain an authentication token (short-lived access token or long-lived API key) and send those in the requests to the protected service.

    When Authorino is triggered by Envoy via the gRPC interface, it starts evaluating the Auth Pipeline, i.e. it applies to the request the parameters to verify the identity and to enforce authorization, as found in the index for the requested host (See host lookup for details).

    Apart from static rules, these parameters can include instructions to contact online with external identity verifiers, external sources of metadata and policy decision points (PDPs).

    On every request, Authorino's \"working memory\" is called Authorization JSON, a data structure that holds information about the context (the HTTP request) and objects from each phase of the auth pipeline: i.e., authentication verification (phase i), ad-hoc metadata fetching (phase ii), authorization policy enforcement (phase iii), dynamic response (phase iv), and callbacks (phase v). The evaluators in each of these phases can both read and write from the Authorization JSON for dynamic steps and decisions of authN/authZ.

    "},{"location":"authorino/docs/architecture/#topologies","title":"Topologies","text":"

    Typically, upstream APIs are deployed to the same Kubernetes cluster and namespace where the Envoy proxy and Authorino is running (although not necessarily). Whatever is the case, Envoy must be proxying to the upstream API (see Envoy's HTTP route components and virtual hosts) and pointing to Authorino in the external authorization filter.

    This can be achieved with different topologies:

    • Envoy can be a centralized gateway with one dedicated instance of Authorino, proxying to one or more upstream services
    • Envoy can be deployed as a sidecar of each protected service, but still contacting from a centralized Authorino authorization service
    • Both Envoy and Authorino deployed as sidecars of the protected service, restricting all communication between them to localhost

    Each topology above induces different measures for security.

    "},{"location":"authorino/docs/architecture/#centralized-gateway","title":"Centralized gateway","text":"

    Recommended in the protected services to validate the origin of the traffic. It must have been proxied by Envoy. See Authorino JSON injection for an extra validation option using a shared secret passed in HTTP header.

    "},{"location":"authorino/docs/architecture/#centralized-authorization-service","title":"Centralized authorization service","text":"

    Protected service should only listen on localhost and all traffic can be considered safe.

    "},{"location":"authorino/docs/architecture/#sidecars","title":"Sidecars","text":"

    Recommended namespaced instances of Authorino with fine-grained label selectors to avoid unnecessary caching of AuthConfigs.

    Apart from that, protected service should only listen on localhost and all traffic can be considered safe.

    "},{"location":"authorino/docs/architecture/#cluster-wide-vs-namespaced-instances","title":"Cluster-wide vs. Namespaced instances","text":"

    Authorino instances can run in either cluster-wide or namespaced mode.

    Namespace-scoped instances only watch resources (AuthConfigs and Secrets) created in a given namespace. This deployment mode does not require admin privileges over the Kubernetes cluster to deploy the instance of the service (given Authorino's CRDs have been installed beforehand, such as when Authorino is installed using the Authorino Operator).

    Cluster-wide deployment mode, in contraposition, deploys instances of Authorino that watch resources across the entire cluster, consolidating all resources into a multi-namespace index of auth configs. Admin privileges over the Kubernetes cluster is required to deploy Authorino in cluster-wide mode.

    Be careful to avoid superposition when combining multiple Authorino instances and instance modes in the same Kubernetes cluster. Apart from caching unnecessary auth config data in the instances depending on your routing settings, the leaders of each instance (set of replicas) may compete for updating the status of the custom resources that are reconciled. See Resource reconciliation and status update for more information.

    If necessary, use label selectors to narrow down the space of resources watched and reconciled by each Authorino instance. Check out the Sharding section below for details.

    "},{"location":"authorino/docs/architecture/#the-authorino-authconfig-custom-resource-definition-crd","title":"The Authorino AuthConfig Custom Resource Definition (CRD)","text":"

    The desired protection for a service is declaratively stated by applying an AuthConfig Custom Resource to the Kubernetes cluster running Authorino.

    An AuthConfig resource typically looks like the following:

    apiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: my-api-protection\nspec:\n    # The list of public host names of the services protected by this AuthConfig resource.\n    # Authorino uses the host name provided in the payload of external authorization request to lookup for the corresponding AuthConfig to enforce.\n  # Hostname collisions are prevented by rejecting to index a hostname already taken by another AuthConfig.\n  # Format: hostname[:port]\n  hosts:\n\n  - my-api.io:443 # north-south traffic\n  - my-api.ns.svc.cluster.local # east-west traffic\n\n  # Set of stored named patterns to be reused in conditions and pattern-matching authorization rules\n  patterns: {\"name\" \u2192 {selector, operator, value}, \u2026}\n\n  # Top-level conditions for the AuthConfig to be enforced.\n  # If omitted, the AuthConfig will be enforced at all requests.\n  # If present, all conditions must match for the AuthConfig to be enforced; otherwise, Authorino skips the AuthConfig and returns to the auth request with status OK.\n  when: [{selector, operator, value | named pattern ref}, \u2026]\n\n  # List of one or more trusted sources of identity:\n  # - Configurations to verify JSON Web Tokens (JWTs) issued by an OpenID Connect (OIDC) server\n  # - Endpoints for OAuth 2.0 token introspection\n  # - Attributes for the Kubernetes `TokenReview` API\n  # - Label selectors for API keys (stored in Kubernetes `Secret`s)\n  # - Label selectors trusted x509 issuer certificates (stored in Kubernetes `Secret`s)\n  # - Selectors for plain identity objects supplied in the payload of the authorization request\n  # - Anonymous access configs\n  authentication: {\"name\" \u2192 {\u2026}, \u2026}\n\n  # List of sources of external metadata for the authorization (optional):\n  # - Endpoints for HTTP GET or GET-by-POST requests\n  # - OIDC UserInfo endpoints (associated with an OIDC token issuer specified in the authentication configs)\n  # - User-Managed Access (UMA) resource registries\n  metadata: {\"name\" \u2192 {\u2026}, \u2026}\n\n  # List of authorization policies to be enforced (optional):\n  # - Pattern-matching rules (e.g. `context.request.http.path eq '/pets'`)\n  # - Open Policy Agent (OPA) inline or external Rego policies\n  # - Attributes for the Kubernetes `SubjectAccessReview` API\n  # \u2013 Attributes for authorization with an external SpiceDB server\n  authorization: {\"name\" \u2192 {\u2026}, \u2026}\n\n  # Customization to the response to the external authorization request (optional)\n  response:\n    # List of dynamic response elements into the request on success authoization (optional):\n    # - Plain text\n    # - JSON objects\n    # - Festival Wristbands (signed JWTs issued by Authorino)\n    success:\n      # List of HTTP headers to inject into the request post-authorization (optional):\n      headers: {\"name\" \u2192 {\u2026}, \u2026}\n\n      # List of Envoy Dynamic Metadata to inject into the request post-authorization (optional):\n      dynamicMetadata: {\"name\" \u2192 {\u2026}, \u2026}\n\n    # Custom HTTP status code, message and headers to replace the default `401 Unauthorized` response (optional)\n    unauthenticated:\n      code: 302\n      message: Redirecting to login\n      headers:\n        \"Location\":\n          value: https://my-app.io/login\n\n    # Custom HTTP status code, message and headers to replace the default `and `403 Forbidden` response (optional)\n    unauthorized: {code, message, headers, body}\n\n  # List of callback targets:\n  # - Endpoints for HTTP requests\n  callbacks: {\"name\" \u2192 {\u2026}, \u2026}\n

    Check out the OAS of the AuthConfig CRD for a formal specification of the options for authentication verification, external metadata fetching, authorization policies, and dynamic response, as well as any other host protection capability implemented by Authorino.

    You can also read the specification from the CLI using the kubectl explain command. The Authorino CRD is required to have been installed in Kubernetes cluster. E.g. kubectl explain authconfigs.spec.authentication.overrides.

    A complete description of supported features and corresponding configuration options within an AuthConfig CR can be found in the Features page.

    More concrete examples of AuthConfigs for specific use-cases can be found in the User guides.

    "},{"location":"authorino/docs/architecture/#resource-reconciliation-and-status-update","title":"Resource reconciliation and status update","text":"

    The instances of the Authorino authorization service workload, following the Operator pattern, watch events related to the AuthConfig custom resources, to build and reconcile an in-memory index of configs. Whenever a replica receives traffic for authorization request, it looks up in the index of AuthConfigs and then triggers the \"Auth Pipeline\", i.e. enforces the associated auth spec onto the request.

    An instance can be a single authorization service workload or a set of replicas. All replicas watch and reconcile the same set of resources that match the --auth-config-label-selector and --secret-label-selector configuration options. (See both Cluster-wide vs. Namespaced instances and Sharding, for details about defining the reconciliation space of Authorino instances.)

    The above means that all replicas of an Authorino instance should be able to receive traffic for authorization requests.

    Among the multiple replicas of an instance, Authorino elects one replica to be leader. The leader is responsible for updating the status of reconciled AuthConfigs. If the leader eventually becomes unavailable, the instance will automatically elect another replica take its place as the new leader.

    The status of an AuthConfig tells whether the resource is \"ready\" (i.e. indexed). It also includes summary information regarding the numbers of authentication configs, metadata configs, authorization configs and response configs within the spec, as well as whether Festival Wristband tokens are being issued by the Authorino instance as by spec.

    Apart from watching events related to AuthConfig custom resources, Authorino also watches events related to Kubernetes Secrets, as part of Authorino's API key authentication feature. Secret resources that store API keys are linked to their corresponding AuthConfigs in the index. Whenever the Authorino instance detects a change in the set of API key Secrets linked to an AuthConfigs, the instance reconciles the index.

    Authorino only watches events related to Secrets whose metadata.labels match the label selector --secret-label-selector of the Authorino instance. The default values of the label selector for Kubernetes Secrets representing Authorino API keys is authorino.kuadrant.io/managed-by=authorino.

    "},{"location":"authorino/docs/architecture/#the-auth-pipeline-aka-enforcing-protection-in-request-time","title":"The \"Auth Pipeline\" (aka: enforcing protection in request-time)","text":"

    In each request to the protected API, Authorino triggers the so-called \"Auth Pipeline\", a set of configured evaluators that are organized in a 5-phase pipeline:

    • (i) Authentication phase: at least one source of identity (i.e., one authentication config) must resolve the supplied credential in the request into a valid identity or Authorino will otherwise reject the request as unauthenticated (401 HTTP response status).
    • (ii) Metadata phase: optional fetching of additional data from external sources, to add up to context and identity information, and used in authorization policies, dynamic responses and callback requests (phases iii to v).
    • (iii) Authorization phase: all unskipped policies must evaluate to a positive result (\"authorized\"), or Authorino will otherwise reject the request as unauthorized (403 HTTP response code).
    • (iv) Response phase \u2013 Authorino builds all user-defined response items (dynamic JSON objects and/or Festival Wristband OIDC tokens), which are supplied back to the external authorization client within added HTTP headers or as Envoy Dynamic Metadata
    • (v) Callbacks phase \u2013 Authorino sends callbacks to specified HTTP endpoints.

    Each phase is sequential to the other, from (i) to (v), while the evaluators within each phase are triggered concurrently or as prioritized. The Authentication phase (i) is the only one required to list at least one evaluator (i.e. 1+ authentication configs); Metadata, Authorization and Response phases can have any number of evaluators (including zero, and even be omitted in this case).

    "},{"location":"authorino/docs/architecture/#host-lookup","title":"Host lookup","text":"

    Authorino reads the request host from Attributes.Http.Host of Envoy's CheckRequest type, and uses it as key to lookup in the index of AuthConfigs, matched against spec.hosts.

    Alternatively to Attributes.Http.Host, a host entry can be supplied in the Attributes.ContextExtensions map of the external authorino request. This will take precedence before the host attribute of the HTTP request.

    The host context extension is useful to support use cases such as of path prefix-based lookup and wildcard subdomains lookup with lookup strongly dictated by the external authorization client (e.g. Envoy), which often knows about routing and the expected AuthConfig to enforce beyond what Authorino can infer strictly based on the host name.

    Wildcards can also be used in the host names specified in the AuthConfig, resolved by Authorino. E.g. if *.pets.com is in spec.hosts, Authorino will match the concrete host names dogs.pets.com, cats.pets.com, etc. In case, of multiple possible matches, Authorino will try the longest match first (in terms of host name labels) and fall back to the closest wildcard upwards in the domain tree (if any).

    When more than one host name is specified in the AuthConfig, all of them can be used as key, i.e. all of them can be requested in the authorization request and will be mapped to the same config.

    Example. Host lookup with wildcards.

    The domain tree above induces the following relation:

    • foo.nip.io \u2192 authconfig-1 (matches *.io)
    • talker-api.nip.io \u2192 authconfig-2 (matches talker-api.nip.io)
    • dogs.pets.com \u2192 authconfig-2 (matches *.pets.com)
    • api.acme.com \u2192 authconfig-3 (matches api.acme.com)
    • www.acme.com \u2192 authconfig-4 (matches *.acme.com)
    • foo.org \u2192 404 Not found

    The host can include the port number (i.e. hostname:port) or it can be just the name of the host name. Authorino will first try finding in the index a config associated to hostname:port, as supplied in the authorization request; if the index misses an entry for hostname:port, Authorino will then remove the :port suffix and repeat the lookup using just hostname as key. This provides implicit support for multiple port numbers for a same host without having to list all combinations in the AuthConfig.

    "},{"location":"authorino/docs/architecture/#avoiding-host-name-collision","title":"Avoiding host name collision","text":"

    Authorino tries to prevent host name collision between AuthConfigs by rejecting to link in the index any AuthConfig and host name if the host name is already linked to a different AuthConfig in the index. This was intentionally designed to prevent users from superseding each other's AuthConfigs, partially or fully, by just picking the same host names or overlapping host names as others.

    When wildcards are involved, a host name that matches a host wildcard already linked in the index to another AuthConfig will be considered taken, and therefore the newest AuthConfig will be rejected to be linked to that host.

    This behavior can be disabled to allow AuthConfigs to partially supersede each others' host names (limited to strict host subsets), by supplying the --allow-superseding-host-subsets command-line flag when running the Authorino instance.

    "},{"location":"authorino/docs/architecture/#the-authorization-json","title":"The Authorization JSON","text":"

    On every Auth Pipeline, Authorino builds the Authorization JSON, a \"working-memory\" data structure composed of context (information about the request, as supplied by the Envoy proxy to Authorino) and auth (objects resolved in phases (i) to (v) of the pipeline). The evaluators of each phase can read from the Authorization JSON and implement dynamic properties and decisions based on its values.

    At phase (iii), the authorization evaluators count on an Authorization JSON payload that looks like the following:

    // The authorization JSON combined along Authorino's auth pipeline for each request\n{\n  \"context\": { // the input from the proxy\n    \"origin\": {\u2026},\n    \"request\": {\n      \"http\": {\n        \"method\": \"\u2026\",\n        \"headers\": {\u2026},\n        \"path\": \"/\u2026\",\n        \"host\": \"\u2026\",\n        \u2026\n      }\n    }\n  },\n  \"auth\": {\n    \"identity\": {\n      // the identity resolved, from the supplied credentials, by one of the evaluators of phase (i)\n    },\n    \"metadata\": {\n      // each metadata object/collection resolved by the evaluators of phase (ii), by name of the evaluator\n    }\n  }\n}\n

    The policies evaluated can use any data from the authorization JSON to define authorization rules.

    After phase (iii), Authorino appends to the authorization JSON the results of this phase as well, and the payload available for phase (iv) becomes:

    // The authorization JSON combined along Authorino's auth pipeline for each request\n{\n  \"context\": { // the input from the proxy\n    \"origin\": {\u2026},\n    \"request\": {\n      \"http\": {\n        \"method\": \"\u2026\",\n        \"headers\": {\u2026},\n        \"path\": \"/\u2026\",\n        \"host\": \"\u2026\",\n        \u2026\n      }\n    }\n  },\n  \"auth\": {\n    \"identity\": {\n      // the identity resolved, from the supplied credentials, by one of the evaluators of phase (i)\n    },\n    \"metadata\": {\n      // each metadata object/collection resolved by the evaluators of phase (ii), by name of the evaluator\n    },\n    \"authorization\": {\n      // each authorization policy result resolved by the evaluators of phase (iii), by name of the evaluator\n    }\n  }\n}\n

    Festival Wristbands and Dynamic JSON responses can include dynamic values (custom claims/properties) fetched from the authorization JSON. These can be returned to the external authorization client in added HTTP headers or as Envoy Well Known Dynamic Metadata. Check out Custom response features for details.

    For information about reading and fetching data from the Authorization JSON (syntax, functions, etc), check out JSON paths.

    "},{"location":"authorino/docs/architecture/#raw-http-authorization-interface","title":"Raw HTTP Authorization interface","text":"

    Besides providing the gRPC authorization interface \u2013 that implements the Envoy gRPC authorization server \u2013, Authorino also provides another interface for raw HTTP authorization. This second interface responds to GET and POST HTTP requests sent to :5001/check, and is suitable for other forms of integration, such as:

    • using Authorino as Kubernetes ValidatingWebhook service (example);
    • other HTTP proxies and API gateways;
    • old versions of Envoy incompatible with the latest version of gRPC external authorization protocol (Authorino is based on v3.19.1 of Envoy external authorization API)

    In the raw HTTP interface, the host used to lookup for an AuthConfig must be supplied in the Host HTTP header of the request. Other attributes of the HTTP request are also passed in the context to evaluate the AuthConfig, including the body of the request.

    "},{"location":"authorino/docs/architecture/#caching","title":"Caching","text":""},{"location":"authorino/docs/architecture/#openid-connect-and-user-managed-access-configs","title":"OpenID Connect and User-Managed Access configs","text":"

    OpenID Connect and User-Managed Access configurations, discovered usually at reconciliation-time from well-known discovery endpoints.

    Cached individual OpenID Connect configurations discovered by Authorino can be configured to be auto-refreshed, by setting the corresponding spec.authentication.jwt.ttl field in the AuthConfig (given in seconds, default: 0 \u2013 i.e. no cache update).

    "},{"location":"authorino/docs/architecture/#json-web-keys-jwks-and-json-web-key-sets-jwks","title":"JSON Web Keys (JWKs) and JSON Web Key Sets (JWKS)","text":"

    JSON signature verification certificates linked by discovered OpenID Connect configurations, fetched usually at reconciliation-time.

    "},{"location":"authorino/docs/architecture/#revoked-access-tokens","title":"Revoked access tokens","text":"Not implemented - In analysis (#19)

    Caching of access tokens identified and or notified as revoked prior to expiration.

    "},{"location":"authorino/docs/architecture/#external-metadata","title":"External metadata","text":"Not implemented - Planned (#21)

    Caching of resource data obtained in previous requests.

    "},{"location":"authorino/docs/architecture/#compiled-rego-policies","title":"Compiled Rego policies","text":"

    Performed automatically by Authorino at reconciliation-time for the authorization policies based on the built-in OPA module.

    Precompiled and cached individual Rego policies originally pulled by Authorino from external registries can be configured to be auto-refreshed, by setting the corresponding spec.authorization.opa.externalRegistry.ttl field in the AuthConfig (given in seconds, default: 0 \u2013 i.e. no cache update).

    "},{"location":"authorino/docs/architecture/#repeated-requests","title":"Repeated requests","text":"Not implemented - In analysis (#20)

    For consecutive requests performed, within a given period of time, by a same user that request for a same resource, such that the result of the auth pipeline can be proven that would not change.

    "},{"location":"authorino/docs/architecture/#sharding","title":"Sharding","text":"

    By default, Authorino instances will watch AuthConfig CRs in the entire space (namespace or entire cluster; see Cluster-wide vs. Namespaced instances for details). To support combining multiple Authorino instances and instance modes in the same Kubernetes cluster, and yet avoiding superposition between the instances (i.e. multiple instances reconciling the same AuthConfigs), Authorino offers support for data sharding, i.e. to horizontally narrow down the space of reconciliation of an Authorino instance to a subset of that space.

    The benefits of limiting the space of reconciliation of an Authorino instance include avoiding unnecessary caching and workload in instances that do not receive corresponding traffic (according to your routing settings) and preventing leaders of multiple instances (sets of replicas) to compete on resource status updates (see Resource reconciliation and status update for details).

    Use-cases for sharding of AuthConfigs:

    • Horizontal load balancing of traffic of authorization requests
    • Supporting for managed centralized instances of Authorino to API owners who create and maintain their own AuthConfigs within their own user namespaces.

    Authorino's custom controllers filter the AuthConfig-related events to be reconciled using Kubernetes label selectors, defined for the Authorino instance via --auth-config-label-selector command-line flag. By default, --auth-config-label-selector is empty, meaning all AuthConfigs in the space are watched; this variable can be set to any value parseable as a valid label selector, causing Authorino to then watch only events of AuthConfigs whose metadata.labels match the selector.

    The following are all valid examples of AuthConfig label selector filters:

    --auth-config-label-selector=\"authorino.kuadrant.io/managed-by=authorino\"\n--auth-config-label-selector=\"authorino.kuadrant.io/managed-by=authorino,other-label=other-value\"\n--auth-config-label-selector=\"authorino.kuadrant.io/managed-by in (authorino,kuadrant)\"\n--auth-config-label-selector=\"authorino.kuadrant.io/managed-by!=authorino-v0.4\"\n--auth-config-label-selector=\"!disabled\"\n
    "},{"location":"authorino/docs/architecture/#rbac","title":"RBAC","text":"

    The table below describes the roles and role bindings defined by the Authorino service:

    Role Kind Scope(*) Description Permissions authorino-manager-role ClusterRole C/N Role of the Authorino manager service Watch and reconcile AuthConfigs and Secrets authorino-manager-k8s-auth-role ClusterRole C/N Role for the Kubernetes auth features Create TokenReviews and SubjectAccessReviews (Kubernetes auth) authorino-leader-election-role Role N Leader election role Create/update the ConfigMap used to coordinate which replica of Authorino is the leader authorino-authconfig-editor-role ClusterRole - AuthConfig editor R/W AuthConfigs; Read AuthConfig/status authorino-authconfig-viewer-role ClusterRole - AuthConfig viewer Read AuthConfigs and AuthConfig/status authorino-proxy-role ClusterRole C/N Kube-rbac-proxy-role (sidecar)'s role Create TokenReviews and SubjectAccessReviews to check permissions to the /metrics endpoint authorino-metrics-reader ClusterRole - Metrics reader GET /metrics

    (*) C - Cluster-wide | N - Authorino namespace | C/N - Cluster-wide or Authorino namespace (depending on the deployment mode).

    "},{"location":"authorino/docs/architecture/#observability","title":"Observability","text":"

    Please refer to the Observability user guide for info on Prometheus metrics exported by Authorino, readiness probe, logging, tracing, etc.

    "},{"location":"authorino/docs/code_of_conduct/","title":"Code of conduct","text":""},{"location":"authorino/docs/code_of_conduct/#code-of-conduct","title":"Code of Conduct","text":"

    Autorino follows the Kuadrant Community Code of Conduct, which is based on the CNCF Code of Conduct.

    Please refer to this page for a description of the standards and values we stand for in our relationship with the community.

    "},{"location":"authorino/docs/contributing/","title":"Developer's Guide","text":""},{"location":"authorino/docs/contributing/#technology-stack-for-developers","title":"Technology stack for developers","text":"

    Minimum requirements to contribute to Authorino are:

    • Golang v1.21+
    • Docker

    Authorino's code was originally bundled using the Operator SDK (v1.9.0).

    The following tools can be installed as part of the development workflow:

    • Installed with go install to the $PROJECT_DIR/bin directory:

      • controller-gen: for building custom types and manifests
      • Kustomize: for assembling flavoured manifests and installing/deploying
      • setup-envtest: for running the tests \u2013 extra tools installed to ./testbin
      • benchstat: for human-friendly test benchmark reports
      • mockgen: to generate mocks for tests \u2013 e.g. ./bin/mockgen -source=pkg/auth/auth.go -destination=pkg/auth/mocks/mock_auth.go
      • Kind: for deploying a containerized Kubernetes cluster for integration testing purposes
    • Other recommended tools to have installed:

      • jq
      • yq
      • gnu-sed
    "},{"location":"authorino/docs/contributing/#workflow","title":"Workflow","text":""},{"location":"authorino/docs/contributing/#check-the-issues","title":"Check the issues","text":"

    Start by checking the list of issues in GitHub.

    In case you want to contribute with an idea for enhancement, a bug fix, or question, please make sure to describe the issue so we can start a conversation together and help you find the best way to get your contribution merged.

    "},{"location":"authorino/docs/contributing/#clone-the-repo-and-setup-the-local-environment","title":"Clone the repo and setup the local environment","text":"

    Fork/clone the repo:

    git clone git@github.com:kuadrant/authorino.git && cd authorino\n

    Download the Golang dependencies:

    make vendor\n

    For additional automation provided, check:

    make help\n
    "},{"location":"authorino/docs/contributing/#make-your-changes","title":"Make your changes","text":"

    Good changes...

    • follow the Golang conventions
    • have proper test coverage
    • address corresponding updates to the docs
    • help us fix wherever we failed to do the above \ud83d\ude1c
    "},{"location":"authorino/docs/contributing/#run-the-tests","title":"Run the tests","text":"

    To run the tests:

    make test\n
    "},{"location":"authorino/docs/contributing/#try-locally","title":"Try locally","text":""},{"location":"authorino/docs/contributing/#build-deploy-and-try-authorino-in-a-local-cluster","title":"Build, deploy and try Authorino in a local cluster","text":"

    The following command will:

    • Start a local Kubernetes cluster (using Kind)
    • Install cert-manager in the cluster
    • Install the Authorino Operator and Authorino CRDs
    • Build an image of Authorino based on the current branch
    • Push the freshly built image to the cluster's registry
    • Generate TLS certificates for the Authorino service
    • Deploy an instance of Authorino
    • Deploy the example application Talker API, a simple HTTP API that echoes back whatever it gets in the request
    • Setup Envoy for proxying to the Talker API and using Authorino for external authorization
    make local-setup\n

    You will be prompted to edit the Authorino custom resource.

    The main workload composed of Authorino instance and user apps (Envoy, Talker API) will be deployed to the default Kubernetes namespace.

    Once the deployment is ready, you can forward the requests on port 8000 to the Envoy service

    kubectl port-forward deployment/envoy 8000:8000 &\n
    Pro tips
    1. Change the default workload namespace by supplying the NAMESPACE argument to your make local-setup and other deployment, apps and local cluster related targets. If the namespace does not exist, it will be created.
    2. Switch to TLS disabled by default when deploying locally by supplying TLS_ENABLED=0 to your make local-setup and make deploy commands. E.g. make local-setup TLS_ENABLED=0.
    3. Skip being prompted to edit the Authorino CR and default to an Authorino deployment with TLS enabled, debug/development log level/mode, and standard name 'authorino', by supplying FF=1 to your make local-setup and make deploy commands. E.g. make local-setup FF=1
    4. Supply DEPLOY_IDPS=1 to make local-setup and make user-apps to deploy Keycloak and Dex to the cluster. DEPLOY_KEYCLOAK and DEPLOY_DEX are also available. Read more about additional tools for specific use cases in the section below.
    5. Saving the ID of the process (PID) of the port-forward command spawned in the background can be useful to later kill and restart the process. E.g. kubectl port-forward deployment/envoy 8000:8000 &;PID=$!; then kill $PID.
    "},{"location":"authorino/docs/contributing/#additional-tools-for-specific-use-cases","title":"Additional tools (for specific use-cases)","text":"Limitador

    To deploy Limitador \u2013 pre-configured in Envoy for rate-limiting the Talker API to 5 hits per minute per user_id when available in the cluster workload \u2013, run:

    kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/limitador/limitador-deploy.yaml\n
    Keycloak

    Authorino examples include a bundle of Keycloak preloaded with the following realm setup:

    • Admin console: http://localhost:8080/admin (admin/p)
    • Preloaded realm: kuadrant
    • Preloaded clients:
      • demo: to which API consumers delegate access and therefore the one which access tokens are issued to
      • authorino: used by Authorino to fetch additional user info with client_credentials grant type
      • talker-api: used by Authorino to fetch UMA-protected resource data associated with the Talker API
    • Preloaded resources:
      • /hello
      • /greetings/1 (owned by user john)
      • /greetings/2 (owned by user jane)
      • /goodbye
    • Realm roles:
      • member (default to all users)
      • admin
    • Preloaded users:
      • john/p (member)
      • jane/p (admin)
      • peter/p (member, email not verified)

    To deploy, run:

    kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/keycloak/keycloak-deploy.yaml\n

    Forward local requests to the instance of Keycloak running in the cluster:

    kubectl port-forward deployment/keycloak 8080:8080 &\n
    Dex

    Authorino examples include a bundle of Dex preloaded with the following setup:

    • Preloaded clients:
      • demo: to which API consumers delegate access and therefore the one which access tokens are issued to (Client secret: aaf88e0e-d41d-4325-a068-57c4b0d61d8e)
    • Preloaded users:
      • marta@localhost/password

    To deploy, run:

    kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/dex/dex-deploy.yaml\n

    Forward local requests to the instance of Dex running in the cluster:

    kubectl port-forward deployment/dex 5556:5556 &\n
    a12n-server

    Authorino examples include a bundle of a12n-server and corresponding MySQL database, preloaded with the following setup:

    • Admin console: http://a12n-server:8531 (admin/123456)
    • Preloaded clients:
      • service-account-1: to obtain access tokens via client_credentials OAuth2 grant type, to consume the Talker API (Client secret: DbgXROi3uhWYCxNUq_U1ZXjGfLHOIM8X3C2bJLpeEdE); includes metadata privilege: { \"talker-api\": [\"read\"] } that can be used to write authorization policies
      • talker-api: to authenticate to the token introspect endpoint (Client secret: V6g-2Eq2ALB1_WHAswzoeZofJ_e86RI4tdjClDDDb4g)

    To deploy, run:

    kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/a12n-server/a12n-server-deploy.yaml\n

    Forward local requests to the instance of a12n-server running in the cluster:

    kubectl port-forward deployment/a12n-server 8531:8531 &\n
    "},{"location":"authorino/docs/contributing/#re-build-and-rollout-latest","title":"Re-build and rollout latest","text":"

    Re-build and rollout latest Authorino image:

    make local-rollout\n

    If you made changes to the CRD between iterations, re-install by running:

    make install\n
    "},{"location":"authorino/docs/contributing/#clean-up","title":"Clean-up","text":"

    The following command deletes the entire Kubernetes cluster started with Kind:

    make local-cleanup\n
    "},{"location":"authorino/docs/contributing/#sign-your-commits","title":"Sign your commits","text":"

    All commits to be accepted to Authorino's code are required to be signed. Refer to this page about signing your commits.

    "},{"location":"authorino/docs/contributing/#logging-policy","title":"Logging policy","text":"

    A few guidelines for adding logging messages in your code:

    1. Make sure you understand Authorino's Logging architecture and policy regarding log levels, log modes, tracing IDs, etc.
    2. Respect controller-runtime's Logging Guidelines.
    3. Do not add sensitive data to your info log messages; instead, redact all sensitive data in your log messages or use debug log level by mutating the logger with V(1) before outputting the message.
    "},{"location":"authorino/docs/contributing/#additional-resources","title":"Additional resources","text":"

    Here in the repo:

    • Getting started
    • Terminology
    • Architecture
    • Feature description

    Other repos:

    • Authorino Operator
    • Authorino examples
    "},{"location":"authorino/docs/contributing/#reach-out","title":"Reach out","text":"

    #kuadrant channel on kubernetes.slack.com.

    "},{"location":"authorino/docs/features/","title":"Features","text":""},{"location":"authorino/docs/features/#overview","title":"Overview","text":"

    We call features of Authorino the different things one can do to enforce identity verification & authentication and authorization on requests to protected services. These can be a specific identity verification method based on a supported authentication protocol, or a method to fetch additional auth metadata in request-time, etc.

    Most features of Authorino relate to the different phases of the Auth Pipeline and therefore are configured in the Authorino AuthConfig. An identity verification/authentication feature usually refers to a functionality of Authorino such as the API key-based authentication, the validation of JWTs/OIDC ID tokens, and authentication based on Kubernetes TokenReviews. Analogously, OPA, pattern-matching and Kubernetes SubjectAccessReview are examples of authorization features of Authorino.

    At a deeper level, a feature can also be an additional functionality within a bigger feature, usually applicable to the whole class the bigger feature belongs to. For instance, the configuration of how auth credentials expected to be carried in the request, which is broadly available for any identity verification method. Other examples are: Identity extension and Priorities.

    A full specification of all features of Authorino that can be configured in an AuthConfig can be found in the official spec of the custom resource definition.

    You can also learn about Authorino features by using the kubectl explain command in a Kubernetes cluster where the Authorino CRD has been installed. E.g. kubectl explain authconfigs.spec.authentication.credentials.

    "},{"location":"authorino/docs/features/#common-feature-json-paths-selector","title":"Common feature: JSON paths (selector)","text":"

    The first feature of Authorino to learn about is a common functionality used in the specification of many other features. JSON paths are selectors of data from the Authorization JSON used in parts of an AuthConfig for referring to dynamic values of each authorization request.

    Usage examples of JSON paths are: dynamic URLs and request parameters when fetching metadata from external sources, dynamic authorization policy rules, and dynamic authorization response attributes (e.g. injected HTTP headers, Festival Wristband token claims, etc).

    "},{"location":"authorino/docs/features/#syntax","title":"Syntax","text":"

    The syntax to fetch data from the Authorization JSON with JSON paths is based on GJSON. Refer to GJSON Path Syntax page for more information.

    "},{"location":"authorino/docs/features/#string-modifiers","title":"String modifiers","text":"

    On top of GJSON, Authorino defines a few string modifiers.

    Examples below provided for the following Authorization JSON:

    {\n  \"context\": {\n    \"request\": {\n      \"http\": {\n        \"path\": \"/pets/123\",\n        \"headers\": {\n          \"authorization\": \"Basic amFuZTpzZWNyZXQK\" // jane:secret\n          \"baggage\": \"eyJrZXkxIjoidmFsdWUxIn0=\" // {\"key1\":\"value1\"}\n        }\n      }\n    }\n  },\n  \"auth\": {\n    \"identity\": {\n      \"username\": \"jane\",\n      \"fullname\": \"Jane Smith\",\n      \"email\": \"\\u0006jane\\u0012@petcorp.com\\n\"\n    },\n  },\n}\n

    @strip Strips out any non-printable characters such as carriage return. E.g. auth.identity.email.@strip \u2192 \"jane@petcorp.com\".

    @case:upper|lower Changes the case of a string. E.g. auth.identity.username.@case:upper \u2192 \"JANE\".

    @replace:{\"old\":string,\"new\":string} Replaces a substring within a string. E.g. auth.identity.username.@replace:{\"old\":\"Smith\",\"new\":\"Doe\"} \u2192 \"Jane Doe\".

    @extract:{\"sep\":string,\"pos\":int} Splits a string at occurrences of a separator (default: \" \") and selects the substring at the pos-th position (default: 0). E.g. context.request.path.@extract:{\"sep\":\"/\",\"pos\":2} \u2192 123.

    @base64:encode|decode base64-encodes or decodes a string value. E.g. auth.identity.username.decoded.@base64:encode \u2192 \"amFuZQo=\".

    In combination with @extract, @base64 can be used to extract the username in an HTTP Basic Authentication request. E.g. context.request.headers.authorization.@extract:{\"pos\":1}|@base64:decode|@extract:{\"sep\":\":\",\"pos\":1} \u2192 \"jane\".

    "},{"location":"authorino/docs/features/#interpolation","title":"Interpolation","text":"

    JSON paths can be interpolated into strings to build template-like dynamic values. E.g. \"Hello, {auth.identity.name}!\".

    "},{"location":"authorino/docs/features/#identity-verification-authentication-features-authentication","title":"Identity verification & authentication features (authentication)","text":""},{"location":"authorino/docs/features/#api-key-authenticationapikey","title":"API key (authentication.apiKey)","text":"

    Authorino relies on Kubernetes Secret resources to represent API keys.

    To define an API key, create a Secret in the cluster containing an api_key entry that holds the value of the API key.

    API key secrets must be created in the same namespace of the AuthConfig (default) or spec.authentication.apiKey.allNamespaces must be set to true (only works with cluster-wide Authorino instances).

    API key secrets must be labeled with the labels that match the selectors specified in spec.authentication.apiKey.selector in the AuthConfig.

    Whenever an AuthConfig is indexed, Authorino will also index all matching API key secrets. In order for Authorino to also watch events related to API key secrets individually (e.g. new Secret created, updates, deletion/revocation), Secrets must also include a label that matches Authorino's bootstrap configuration --secret-label-selector (default: authorino.kuadrant.io/managed-by=authorino). This label may or may not be present to spec.authentication.apiKey.selector in the AuthConfig without implications for the caching of the API keys when triggered by the reconciliation of the AuthConfig; however, if not present, individual changes related to the API key secret (i.e. without touching the AuthConfig) will be ignored by the reconciler.

    Example. For the following AuthConfig:

    apiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: my-api-protection\n  namespace: authorino-system\nspec:\n  hosts:\n\n  - my-api.io\n  authentication:\n    \"api-key-users\":\n      apiKey:\n        selector:\n          matchLabels: # the key-value set used to select the matching `Secret`s; resources including these labels will be accepted as valid API keys to authenticate to this service\n            group: friends # some custom label\n        allNamespaces: true # only works with cluster-wide Authorino instances; otherwise, create the API key secrets in the same namespace of the AuthConfig\n

    The following Kubernetes Secret represents a valid API key:

    apiVersion: v1\nkind: Secret\nmetadata:\n  name: user-1-api-key-1\n  namespace: default\n  labels:\n    authorino.kuadrant.io/managed-by: authorino # so the Authorino controller reconciles events related to this secret\n    group: friends\nstringData:\n  api_key: <some-randomly-generated-api-key-value>\ntype: Opaque\n

    The resolved identity object, added to the authorization JSON following an API key identity source evaluation, is the Kubernetes Secret resource (as JSON).

    "},{"location":"authorino/docs/features/#kubernetes-tokenreview-authenticationkubernetestokenreview","title":"Kubernetes TokenReview (authentication.kubernetesTokenReview)","text":"

    Authorino can verify Kubernetes-valid access tokens (using Kubernetes TokenReview API).

    These tokens can be either ServiceAccount tokens such as the ones issued by kubelet as part of Kubernetes Service Account Token Volume Projection, or any valid user access tokens issued to users of the Kubernetes server API.

    The list of audiences of the token must include the requested host and port of the protected API (default), or all audiences specified in the Authorino AuthConfig custom resource. For example:

    For the following AuthConfig CR, the Kubernetes token must include the audience my-api.io:

    apiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: my-api-protection\nspec:\n  hosts:\n\n  - my-api.io\n  authentication:\n    \"cluster-users\":\n      kubernetesTokenReview: {}\n

    Whereas for the following AuthConfig CR, the Kubernetes token audiences must include foo and bar:

    apiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: my-api-protection\nspec:\n  hosts:\n\n  - my-api.io\n  authentication:\n    \"cluster-users\":\n      kubernetesTokenReview:\n        audiences:\n        - foo\n        - bar\n

    The resolved identity object added to the authorization JSON following a successful Kubernetes authentication identity evaluation is the status field of TokenReview response (see TokenReviewStatus for reference).

    "},{"location":"authorino/docs/features/#jwt-verification-authenticationjwt","title":"JWT verification (authentication.jwt)","text":"

    In reconciliation-time, using OpenID Connect Discovery well-known endpoint, Authorino automatically discovers and caches OpenID Connect configurations and associated JSON Web Key Sets (JWKS) for all OpenID Connect issuers declared in an AuthConfig. Then, in request-time, Authorino verifies the JSON Web Signature (JWS) and check the time validity of signed JSON Web Tokens (JWT) supplied on each request.

    Important! Authorino does not implement OAuth2 grants nor OIDC authentication flows. As a common recommendation of good practice, obtaining and refreshing access tokens is for clients to negotiate directly with the auth servers and token issuers. Authorino will only validate those tokens using the parameters provided by the trusted issuer authorities.

    The kid claim stated in the JWT header must match one of the keys cached by Authorino during OpenID Connect Discovery, therefore supporting JWK rotation.

    The decoded payload of the validated JWT is appended to the authorization JSON as the resolved identity.

    OpenID Connect configurations and linked JSON Web Key Sets can be configured to be automatically refreshed (pull again from the OpenID Connect Discovery well-known endpoints), by setting the authentication.jwt.ttl field (given in seconds, default: 0 \u2013 i.e. auto-refresh disabled).

    For an excellent summary of the underlying concepts and standards that relate OpenID Connect and JSON Object Signing and Encryption (JOSE), see this article by Jan Rusnacko. For official specification and RFCs, see OpenID Connect Core, OpenID Connect Discovery, JSON Web Token (JWT) (RFC7519), and JSON Object Signing and Encryption (JOSE).

    "},{"location":"authorino/docs/features/#oauth-20-introspection-authenticationoauth2introspection","title":"OAuth 2.0 introspection (authentication.oauth2Introspection)","text":"

    For bare OAuth 2.0 implementations, Authorino can perform token introspection on the access tokens supplied in the requests to protected APIs.

    Authorino does not implement any of OAuth 2.0 grants for the applications to obtain the token. However, it can verify supplied tokens with the OAuth server, including opaque tokens, as long as the server exposes the token_introspect endpoint (RFC 7662).

    Developers must set the token introspection endpoint in the AuthConfig, as well as a reference to the Kubernetes secret storing the credentials of the OAuth client to be used by Authorino when requesting the introspect.

    The response returned by the OAuth2 server to the token introspection request is the resolved identity appended to the authorization JSON.

    "},{"location":"authorino/docs/features/#x509-client-certificate-authentication-authenticationx509","title":"X.509 client certificate authentication (authentication.x509)","text":"

    Authorino can verify X.509 certificates presented by clients for authentication on the request to the protected APIs, at application level.

    Trusted root Certificate Authorities (CA) are stored in Kubernetes Secrets labeled according to selectors specified in the AuthConfig, watched and indexed by Authorino. Make sure to create proper kubernetes.io/tls-typed Kubernetes Secrets, containing the public certificates of the CA stored in either a tls.crt or ca.crt entry inside the secret.

    Trusted root CA secrets must be created in the same namespace of the AuthConfig (default) or spec.authentication.x509.allNamespaces must be set to true (only works with cluster-wide Authorino instances).

    Client certificates must include x509 v3 extension specifying 'Client Authentication' extended key usage.

    The identity object resolved out of a client x509 certificate is equal to the subject field of the certificate, and it serializes as JSON within the Authorization JSON usually as follows:

    {\n    \"auth\": {\n        \"identity\": {\n            \"CommonName\": \"aisha\",\n            \"Country\": [\"PK\"],\n            \"ExtraNames\": null,\n            \"Locality\": [\"Islamabad\"],\n            \"Names\": [\n                { \"Type\": [2, 5, 4, 3], \"Value\": \"aisha\" },\n                { \"Type\": [2, 5, 4, 6], \"Value\": \"PK\" },\n                { \"Type\": [2, 5, 4, 7], \"Value\": \"Islamabad\" },\n                { \"Type\": [2, 5, 4,10], \"Value\": \"ACME Inc.\" },\n                { \"Type\": [2, 5, 4,11], \"Value\": \"Engineering\" }\n            ],\n            \"Organization\": [\"ACME Inc.\"],\n            \"OrganizationalUnit\": [\"Engineering\"],\n            \"PostalCode\": null,\n            \"Province\": null,\n            \"SerialNumber\": \"\",\n            \"StreetAddress\": null\n        }\n  }\n}\n
    "},{"location":"authorino/docs/features/#plain-authenticationplain","title":"Plain (authentication.plain)","text":"

    Authorino can read plain identity objects, based on authentication tokens provided and verified beforehand using other means (e.g. Envoy JWT Authentication filter, Kubernetes API server authentication), and injected into the payload to the external authorization service.

    The plain identity object is retrieved from the Authorization JSON based on a JSON path specified in the AuthConfig.

    This feature is particularly useful in cases where authentication/identity verification is handled before invoking the authorization service and its resolved value injected in the payload can be trusted. Examples of applications for this feature include:

    • Authentication handled in Envoy leveraging the Envoy JWT Authentication filter (decoded JWT injected as 'metadata_context')
    • Use of Authorino as Kubernetes ValidatingWebhook service (Kubernetes 'userInfo' injected in the body of the AdmissionReview request)

    Example of AuthConfig to retrieve plain identity object from the Authorization JSON.

    spec:\n  authentication:\n    \"pre-validated-jwt\":\n      plain:\n        selector: context.metadata_context.filter_metadata.envoy\\.filters\\.http\\.jwt_authn|verified_jwt\n

    If the specified JSON path does not exist in the Authorization JSON or the value is null, the identity verification will fail and, unless other identity config succeeds, Authorino will halt the Auth Pipeline with the usual 401 Unauthorized.

    "},{"location":"authorino/docs/features/#anonymous-access-authenticationanonymous","title":"Anonymous access (authentication.anonymous)","text":"

    Literally a no-op evaluator for the identity verification phase that returns a static identity object {\"anonymous\":true}.

    It allows to implement AuthConfigs that bypasses the identity verification phase of Authorino, to such as:

    • enable anonymous access to protected services (always or combined with Priorities)
    • postpone authentication in the Auth Pipeline to be resolved as part of an OPA policy

    Example of AuthConfig spec that falls back to anonymous access when OIDC authentication fails, enforcing read-only access to the protected service in such cases:

    spec:\n  authentication:\n    \"jwt\":\n      jwt:\n        issuerUrl: \"\u2026\"\n    \"anonymous\":\n      priority: 1 # expired oidc token, missing creds, etc. default to anonymous access\n      anonymous: {}\n  authorization:\n    \"read-only-access-if-authn-fails\":\n      when:\n\n        - selector: auth.identity.anonymous\n          operator: eq\n          value: \"true\"\n      patternMatching:\n        patterns:\n        - selector: context.request.http.method\n          operator: eq\n          value: GET\n
    "},{"location":"authorino/docs/features/#festival-wristband-authentication","title":"Festival Wristband authentication","text":"

    Authorino-issued Festival Wristband tokens can be validated as any other signed JWT using Authorino's JWT verification.

    The value of the issuer must be the same issuer specified in the custom resource for the protected API originally issuing wristband. Eventually, this can be the same custom resource where the wristband is configured as a valid source of identity, but not necessarily.

    "},{"location":"authorino/docs/features/#extra-auth-credentials-authenticationcredentials","title":"Extra: Auth credentials (authentication.credentials)","text":"

    All the identity verification methods supported by Authorino can be configured regarding the location where access tokens and credentials (i.e. authentication secrets) fly within the request.

    By default, authentication secrets are expected to be supplied in the Authorization HTTP header, with the default Bearer prefix and the plain authentication secret separated by space.

    The full list of supported options is exemplified below:

    spec:\n  authentication:\n    \"creds-in-the-authz-header\":\n      credentials:\n        authorizationHeader:\n          prefix: JWT\n\n    \"creds-in-a-custom-header\":\n      credentials:\n        customHeader:\n          name: X-MY-CUSTOM-HEADER\n          prefix: \"\"\n\n    \"creds-in-a-query-param\":\n      queryString:\n        name: my_param\n\n    \"creds-in-a-cookie-entry\":\n      cookie:\n        name: cookie-key\n
    "},{"location":"authorino/docs/features/#extra-identity-extension-authenticationdefaults-and-authenticationoverrides","title":"Extra: Identity extension (authentication.defaults and authentication.overrides)","text":"

    Resolved identity objects can be extended with user-defined JSON properties. Values can be static or fetched from the Authorization JSON.

    A typical use-case for this feature is token normalization. Say you have more than one identity source listed in your AuthConfig but each source issues an access token with a different JSON structure \u2013 e.g. two OIDC issuers that use different names for custom JWT claims of similar meaning; when two different identity verification/authentication methods are combined, such as API keys (whose identity objects are the corresponding Kubernetes Secrets) and Kubernetes tokens (whose identity objects are Kubernetes UserInfo data).

    In such cases, identity extension can be used to normalize the token to always include the same set of JSON properties of interest, regardless of the source of identity that issued the original token verified by Authorino. This simplifies the writing of authorization policies and configuration of dynamic responses.

    In case of extending an existing property of the identity object (replacing), the API allows to control whether to overwrite the value or not. This is particularly useful for normalizing tokens of a same identity source that nonetheless may occasionally differ in structure, such as in the case of JWT claims that sometimes may not be present but can be safely replaced with another (e.g. username or sub).

    "},{"location":"authorino/docs/features/#external-auth-metadata-features-metadata","title":"External auth metadata features (metadata)","text":""},{"location":"authorino/docs/features/#http-getget-by-post-metadatahttp","title":"HTTP GET/GET-by-POST (metadata.http)","text":"

    Generic HTTP adapter that sends a request to an external service. It can be used to fetch external metadata for the authorization policies (phase ii of the Authorino Auth Pipeline), or as a web hook.

    The adapter allows issuing requests either by GET or POST methods; in both cases with URL and parameters defined by the user in the spec. Dynamic values fetched from the Authorization JSON can be used.

    POST request parameters as well as the encoding of the content can be controlled using the bodyParameters and contentType fields of the config, respectively. The Content-Type of POST requests can be either application/x-www-form-urlencoded (default) or application/json.

    Authentication of Authorino with the external metadata server can be set either via long-lived shared secret stored in a Kubernetes Secret or via OAuth2 client credentials grant. For long-lived shared secret, set the sharedSecretRef field. For OAuth2 client credentials grant, use the oauth2 option.

    In both cases, the location where the secret (long-lived or OAuth2 access token) travels in the request performed to the external HTTP service can be specified in the credentials field. By default, the authentication secret is supplied in the Authorization header with the Bearer prefix.

    Custom headers can be set with the headers field. Nevertheless, headers such as Content-Type and Authorization (or eventual custom header used for carrying the authentication secret, set instead via the credentials option) will be superseded by the respective values defined for the fields contentType and sharedSecretRef.

    "},{"location":"authorino/docs/features/#oidc-userinfo-metadatauserinfo","title":"OIDC UserInfo (metadata.userInfo)","text":"

    Online fetching of OpenID Connect (OIDC) UserInfo data (phase ii of the Authorino Auth Pipeline), associated with an OIDC identity source configured and resolved in phase (i).

    Apart from possibly complementing information of the JWT, fetching OpenID Connect UserInfo in request-time can be particularly useful for remote checking the state of the session, as opposed to only verifying the JWT/JWS offline.

    Implementation requires a JWT verification authentication config (spec.authentication.jwt) in the same AuthConfig, so the well-known configuration of the OpenId Connect (OIDC) issuer can be reused.

    The response returned by the OIDC server to the UserInfo request is appended (as JSON) to auth.metadata in the authorization JSON.

    "},{"location":"authorino/docs/features/#user-managed-access-uma-resource-registry-metadatauma","title":"User-Managed Access (UMA) resource registry (metadata.uma)","text":"

    User-Managed Access (UMA) is an OAuth-based protocol for resource owners to allow other users to access their resources. Since the UMA-compliant server is expected to know about the resources, Authorino includes a client that fetches resource data from the server and adds that as metadata of the authorization payload.

    This enables the implementation of resource-level Attribute-Based Access Control (ABAC) policies. Attributes of the resource fetched in a UMA flow can be, e.g., the owner of the resource, or any business-level attributes stored in the UMA-compliant server.

    A UMA-compliant server is an external authorization server (e.g., Keycloak) where the protected resources are registered. It can be as well the upstream API itself, as long as it implements the UMA protocol, with initial authentication by client_credentials grant to exchange for a Protected API Token (PAT).

    It's important to notice that Authorino does NOT manage resources in the UMA-compliant server. As shown in the flow above, Authorino's UMA client is only to fetch data about the requested resources. Authorino exchanges client credentials for a Protected API Token (PAT), then queries for resources whose URI match the path of the HTTP request (as passed to Authorino by the Envoy proxy) and fetches data of each matching resource.

    The resources data is added as metadata of the authorization payload and passed as input for the configured authorization policies. All resources returned by the UMA-compliant server in the query by URI are passed along. They are available in the PDPs (authorization payload) as input.auth.metadata.custom-name => Array. (See The \"Auth Pipeline\" for details.)

    "},{"location":"authorino/docs/features/#authorization-features-authorization","title":"Authorization features (authorization)","text":""},{"location":"authorino/docs/features/#pattern-matching-authorization-authorizationpatternmatching","title":"Pattern-matching authorization (authorization.patternMatching)","text":"

    Grant/deny access based on simple pattern-matching expressions (\"patterns\") compared against values selected from the Authorization JSON.

    Each expression is a tuple composed of:

    • a selector, to fetch from the Authorization JSON \u2013 see Common feature: JSON paths for details about syntax;
    • an operator \u2013 eq (equals), neq (not equal); incl (includes) and excl (excludes), for arrays; and matches, for regular expressions;
    • a fixed comparable value

    Rules can mix and combine literal expressions and references to expression sets (\"named patterns\") defined at the upper level of the AuthConfig spec. (See Common feature: Conditions)

    spec:\n  authorization:\n    \"my-simple-json-pattern-matching-policy\":\n      patternMatching:\n        patterns: # All patterns must match for access to be granted\n\n        - selector: auth.identity.email_verified\n          operator: eq\n          value: \"true\"\n        - patternRef: admin\n\n  patterns:\n    admin: # a named pattern that can be reused in other sets of rules or conditions\n\n    - selector: auth.identity.roles\n      operator: incl\n      value: admin\n
    "},{"location":"authorino/docs/features/#open-policy-agent-opa-rego-policies-authorizationopa","title":"Open Policy Agent (OPA) Rego policies (authorization.opa)","text":"

    You can model authorization policies in Rego language and add them as part of the protection of your APIs.

    Policies can be either declared in-line in Rego language (rego) or as an HTTP endpoint where Authorino will fetch the source code of the policy in reconciliation-time (externalPolicy).

    Policies pulled from external registries can be configured to be automatically refreshed (pulled again from the external registry), by setting the authorization.opa.externalPolicy.ttl field (given in seconds, default: 0 \u2013 i.e. auto-refresh disabled).

    Authorino's built-in OPA module precompiles the policies during reconciliation of the AuthConfig and caches the precompiled policies for fast evaluation in runtime, where they receive the Authorization JSON as input.

    An optional field allValues: boolean makes the values of all rules declared in the Rego document to be returned in the OPA output after policy evaluation. When disabled (default), only the boolean value allow is returned. Values of internal rules of the Rego document can be referenced in subsequent policies/phases of the Auth Pipeline.

    "},{"location":"authorino/docs/features/#kubernetes-subjectaccessreview-authorizationkubernetessubjectaccessreview","title":"Kubernetes SubjectAccessReview (authorization.kubernetesSubjectAccessReview)","text":"

    Access control enforcement based on rules defined in the Kubernetes authorization system, i.e. Role, ClusterRole, RoleBinding and ClusterRoleBinding resources of Kubernetes RBAC.

    Authorino issues a SubjectAccessReview (SAR) inquiry that checks with the underlying Kubernetes server whether the user can access a particular resource, resource kind or generic URL.

    It supports resource attributes authorization check (parameters defined in the AuthConfig) and non-resource attributes authorization check (HTTP endpoint inferred from the original request).

    • Resource attributes: adequate for permissions set at namespace level, defined in terms of common attributes of operations on Kubernetes resources (namespace, API group, kind, name, subresource, verb)
    • Non-resource attributes: adequate for permissions set at cluster scope, defined for protected endpoints of a generic HTTP API (URL path + verb)

    Example of Kubernetes role for resource attributes authorization:

    apiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: pet-reader\nrules:\n\n- apiGroups: [\"pets.io\"]\n  resources: [\"pets\"]\n  verbs: [\"get\"]\n

    Example of Kubernetes cluster role for non-resource attributes authorization:

    apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: pet-editor\nrules:\n\n- nonResourceURLs: [\"/pets/*\"]\n  verbs: [\"put\", \"delete\"]\n

    Kubernetes' authorization policy configs look like the following in an Authorino AuthConfig:

    authorization:\n  \"kubernetes-rbac\":\n    kubernetesSubjectAccessReview:\n      user: # values of the parameter can be fixed (`value`) or fetched from the Authorization JSON (`selector`)\n        selector: auth.identity.metadata.annotations.userid\n\n      groups: [] # user groups to test for.\n\n      # for resource attributes permission checks; omit it to perform a non-resource attributes SubjectAccessReview with path and method/verb assumed from the original request\n      # if included, use the resource attributes, where the values for each parameter can be fixed (`value`) or fetched from the Authorization JSON (`selector`)\n      resourceAttributes:\n        namespace:\n          value: default\n        group:\n          value: pets.io # the api group of the protected resource to be checked for permissions for the user\n        resource:\n          value: pets # the resource kind\n        name:\n          selector: context.request.http.path.@extract:{\"sep\":\"/\",\"pos\":2} # resource name \u2013 e.g., the {id} in `/pets/{id}`\n        verb:\n          selector: context.request.http.method.@case:lower # api operation \u2013 e.g., copying from the context to use the same http method of the request\n

    user and properties of resourceAttributes can be defined from fixed values or patterns of the Authorization JSON.

    An array of groups (optional) can as well be set. When defined, it will be used in the SubjectAccessReview request.

    "},{"location":"authorino/docs/features/#spicedb-authorizationspicedb","title":"SpiceDB (authorization.spicedb)","text":"

    Check permission requests via gRPC with an external Google Zanzibar-inspired SpiceDB server, by Authzed.

    Subject, resource and permission parameters can be set to static values or read from the Authorization JSON.

    spec:\n  authorization:\n    \"spicedb\":\n      spicedb:\n        endpoint: spicedb:50051\n        insecure: true # disables TLS\n        sharedSecretRef:\n          name: spicedb\n          key: token\n        subject:\n          kind:\n            value: blog/user\n          name:\n            selector: auth.identity.sub\n        resource:\n          kind:\n            value: blog/post\n          name:\n            selector: context.request.http.path.@extract:{\"sep\":\"/\",\"pos\":2} # /posts/{id}\n        permission:\n          selector: context.request.http.method\n
    "},{"location":"authorino/docs/features/#custom-response-features-response","title":"Custom response features (response)","text":""},{"location":"authorino/docs/features/#custom-response-forms-successful-authorization-vs-custom-denial-status","title":"Custom response forms: successful authorization vs custom denial status","text":"

    The response to the external authorization request can be customized in the following fashion:

    • Successful authorization (response.success)
    • Added HTTP headers (response.success.headers)
    • Envoy Dynamic Metadata (response.success.dynamicMetadata)
    • Custom denial status
    • Unauthenticated (response.unauthenticated)
    • Unauthorized (response.unauthorized)

    Successful authorization custom responses can be set based on any of the supported custom authorization methods:

    • Plain text value
    • JSON injection
    • Festival Wristband Tokens
    "},{"location":"authorino/docs/features/#added-http-headers","title":"Added HTTP headers","text":"

    Set custom responses as HTTP headers injected in the request post-successful authorization by specifying one of the supported methods under response.success.headers.

    The name of the response config (default) or the value of the key option (if provided) will used as the name of the header.

    "},{"location":"authorino/docs/features/#envoy-dynamic-metadata","title":"Envoy Dynamic Metadata","text":"

    Authorino custom response methods can also be used to propagate Envoy Dynamic Metadata. To do so, set one of the supported methods under response.success.dynamicMetadata.

    The name of the response config (default) or the value of the key option (if provided) will used as the name of the root property of the dynamic metadata content.

    A custom response exported as Envoy Dynamic Metadata can be set in the Envoy route or virtual host configuration as input to a consecutive filter in the filter chain.

    E.g., to read metadata emitted by the authorization service with scheme { \"auth-data\": { \"api-key-ns\": string, \"api-key-name\": string } }, as input in a rate limit configuration placed in the filter chain after the external authorization, the Envoy config may look like the following:

    # Envoy config snippet to inject `user_namespace` and `username` rate limit descriptors from metadata emitted by Authorino\nrate_limits:\n\n- actions:\n  - metadata:\n      metadata_key:\n        key: \"envoy.filters.http.ext_authz\"\n        path:\n        - key: auth-data # root of the dynamic metadata object, as declared in a custom response config of the AuthConfig (name or key)\n        - key: api-key-ns\n      descriptor_key: user_namespace\n  - metadata:\n      metadata_key:\n        key: \"envoy.filters.http.ext_authz\"\n        path:\n        - key: auth-data # root of the dynamic metadata object, as declared in a custom response config of the AuthConfig (name or key)\n        - key: api-key-name\n      descriptor_key: username\n
    "},{"location":"authorino/docs/features/#custom-denial-status-responseunauthenticated-and-responseunauthorized","title":"Custom denial status (response.unauthenticated and response.unauthorized)","text":"

    By default, Authorino will inform Envoy to respond with 401 Unauthorized or 403 Forbidden respectively when the identity verification (phase i of the Auth Pipeline) or authorization (phase ii) fail. These can be customized respectively by specifying spec.response.unauthanticated and spec.response.unauthorized in the AuthConfig.

    "},{"location":"authorino/docs/features/#custom-response-methods","title":"Custom response methods","text":""},{"location":"authorino/docs/features/#plain-text-responsesuccessheadersdynamicmetadataplain","title":"Plain text (response.success.<headers|dynamicMetadata>.plain)","text":"

    Simpler, yet more generalized form, for extending the authorization response for header mutation and Envoy Dynamic Metadata, based on plain text values.

    The value can be static:

    response:\n  success:\n    headers:\n      \"x-auth-service\"\n        plain:\n          value: Authorino\n

    or fetched dynamically from the Authorization JSON (which includes support for interpolation):

    response:\n  success:\n    headers:\n      \"x-username\":\n        plain:\n          selector: auth.identity.username\n
    "},{"location":"authorino/docs/features/#json-injection-responsesuccessheadersdynamicmetadatajson","title":"JSON injection (response.success.<headers|dynamicMetadata>.json)","text":"

    User-defined dynamic JSON objects generated by Authorino in the response phase, from static or dynamic data of the auth pipeline, and passed back to the external authorization client within added HTTP headers or Dynamic Metadata.

    The following Authorino AuthConfig custom resource is an example that defines 3 dynamic JSON response items, where two items are returned to the client, stringified, in added HTTP headers, and the third as Envoy Dynamic Metadata. Envoy proxy can be configured to propagate the dynamic metadata emitted by Authorino into another filter \u2013 e.g. the rate limit filter.

    apiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  namespace: my-namespace\n  name: my-api-protection\nspec:\n  hosts:\n\n  - my-api.io\n  authentication:\n    \"edge\":\n      apiKey:\n        selector:\n          matchLabels:\n            authorino.kuadrant.io/managed-by: authorino\n      credentials:\n        authorizationHeader:\n          prefix: APIKEY\n  response:\n    success:\n      headers:\n        \"x-my-custom-header\":\n          json:\n            properties:\n              \"prop1\":\n                value: value1\n              \"prop2\":\n                selector: some.path.within.auth.json\n        \"x-ext-auth-other-json\":\n          json:\n            properties:\n              \"propX\":\n                value: valueX\n\n      dynamicMetadata:\n        \"auth-data\":\n          json:\n            properties:\n              \"api-key-ns\":\n                seletor: auth.identity.metadata.namespace\n              \"api-key-name\":\n                selector: auth.identity.metadata.name\n
    "},{"location":"authorino/docs/features/#festival-wristband-tokens-responsesuccessheadersdynamicmetadatawristband","title":"Festival Wristband tokens (response.success.<headers|dynamicMetadata>.wristband)","text":"

    Festival Wristbands are signed OpenID Connect JSON Web Tokens (JWTs) issued by Authorino at the end of the auth pipeline and passed back to the client, typically in added HTTP response header. It is an opt-in feature that can be used to implement Edge Authentication Architecture (EAA) and enable token normalization. Authorino wristbands include minimal standard JWT claims such as iss, iat, and exp, and optional user-defined custom claims, whose values can be static or dynamically fetched from the authorization JSON.

    The Authorino AuthConfig custom resource below sets an API protection that issues a wristband after a successful authentication via API key. Apart from standard JWT claims, the wristband contains 2 custom claims: a static value aud=internal and a dynamic value born that fetches from the authorization JSON the date/time of creation of the secret that represents the API key used to authenticate.

    apiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  namespace: my-namespace\n  name: my-api-protection\nspec:\n  hosts:\n\n  - my-api.io\n  authentication:\n    \"edge\":\n      apiKey:\n        selector:\n          matchLabels:\n            authorino.kuadrant.io/managed-by: authorino\n      credentials:\n        authorizationHeader:\n          prefix: APIKEY\n  response:\n    success:\n      headers:\n        \"x-wristband\":\n          wristband:\n            issuer: https://authorino-oidc.default.svc:8083/my-namespace/my-api-protection/x-wristband\n            customClaims:\n              \"aud\":\n                value: internal\n              \"born\":\n                selector: auth.identity.metadata.creationTimestamp\n            tokenDuration: 300\n            signingKeyRefs:\n            - name: my-signing-key\n              algorithm: ES256\n            - name: my-old-signing-key\n              algorithm: RS256\n

    The signing key names listed in signingKeyRefs must match the names of Kubernetes Secret resources created in the same namespace, where each secret contains a key.pem entry that holds the value of the private key that will be used to sign the wristbands issued, formatted as PEM. The first key in this list will be used to sign the wristbands, while the others are kept to support key rotation.

    For each protected API configured for the Festival Wristband issuing, Authorino exposes the following OpenID Connect Discovery well-known endpoints (available for requests within the cluster):

    • OpenID Connect configuration: https://authorino-oidc.default.svc:8083/{namespace}/{api-protection-name}/{response-config-name}/.well-known/openid-configuration
    • JSON Web Key Set (JWKS) well-known endpoint: https://authorino-oidc.default.svc:8083/{namespace}/{api-protection-name}/{response-config-name}/.well-known/openid-connect/certs
    "},{"location":"authorino/docs/features/#callbacks-callbacks","title":"Callbacks (callbacks)","text":""},{"location":"authorino/docs/features/#http-endpoints-callbackshttp","title":"HTTP endpoints (callbacks.http)","text":"

    Sends requests to specified HTTP endpoints at the end of the auth pipeline.

    The scheme of the http field is the same as of metadata.http.

    Example:

    spec:\n  authentication: [\u2026]\n  authorization: [\u2026]\n\n  callbacks:\n    \"log\":\n      http:\n        url: http://logsys\n        method: POST\n        body:\n          selector: |\n              \\{\"requestId\":context.request.http.id,\"username\":\"{auth.identity.username}\",\"authorizationResult\":{auth.authorization}\\}\n    \"important-forbidden\":\n      when:\n\n      - selector: auth.authorization.important-policy\n        operator: eq\n        value: \"false\"\n      http:\n        url: \"http://monitoring/important?forbidden-user={auth.identity.username}\"\n
    "},{"location":"authorino/docs/features/#common-feature-priorities","title":"Common feature: Priorities","text":"

    Priorities allow to set sequence of execution for blocks of concurrent evaluators within phases of the Auth Pipeline.

    Evaluators of same priority execute concurrently to each other \"in a block\". After syncing that block (i.e. after all evaluators of the block have returned), the next block of evaluator configs of consecutive priority is triggered.

    Use cases for priorities are:

    1. Saving expensive tasks to be triggered when there's a high chance of returning immediately after finishing executing a less expensive one \u2013 e.g.
      • an identity config that calls an external IdP to verify a token that is rarely used, compared to verifying JWTs preferred by most users of the service;
      • an authorization policy that performs some quick checks first, such as verifying allowed paths, and only if it passes, moves to the evaluation of a more expensive policy.
    2. Establishing dependencies between evaluators - e.g.
      • an external metadata request that needs to wait until a previous metadata responds first (in order to use data from the response)

    Priorities can be set using the priority property available in all evaluator configs of all phases of the Auth Pipeline (identity, metadata, authorization and response). The lower the number, the highest the priority. By default, all evaluators have priority 0 (i.e. highest priority).

    Consider the following example to understand how priorities work:

    apiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api\n  authentication:\n    \"tier-1\":\n      priority: 0\n      apiKey:\n        selector:\n          matchLabels:\n            tier: \"1\"\n    \"tier-2\":\n      priority: 1\n      apiKey:\n        selector:\n          matchLabels:\n            tier: \"2\"\n    \"tier-3\":\n      priority: 1\n      apiKey:\n        selector:\n          matchLabels:\n            tier: \"3\"\n  metadata:\n    \"first\":\n      http:\n        url: http://talker-api:3000\n    \"second\":\n      priority: 1\n      http:\n        url: http://talker-api:3000/first_uuid={auth.metadata.first.uuid}\n  authorization:\n    \"allowed-endpoints\":\n      when:\n      - selector: context.request.http.path\n        operator: neq\n        value: /hi\n      - selector: context.request.http.path\n        operator: neq\n        value: /hello\n      - selector: context.request.http.path\n        operator: neq\n        value: /aloha\n      - selector: context.request.http.path\n        operator: neq\n        value: /ciao\n      patternMatching:\n        patterns:\n        - selector: deny\n          operator: eq\n          value: \"true\"\n    \"more-expensive-policy\": # no point in evaluating this one if it's not an allowed endpoint\n      priority: 1\n      opa:\n        rego: |\n          allow { true }\n  response:\n    success:\n      headers:\n        \"x-auth-data\":\n          json:\n            properties:\n              \"tier\":\n                selector: auth.identity.metadata.labels.tier\n              \"first-uuid\":\n                selector: auth.metadata.first.uuid\n              \"second-uuid\":\n                selector: auth.metadata.second.uuid\n              \"second-path\":\n                selector: auth.metadata.second.path\n

    For the AuthConfig above,

    • Identity configs tier-2 and tier-3 (priority 1) will only trigger (concurrently) in case tier-1 (priority 0) fails to validate the authentication token first. (This behavior happens without prejudice of context canceling between concurrent evaluators \u2013 i.e. evaluators that are triggered concurrently to another, such as tier-2 and tier-3, continue to cancel the context of each other if any of them succeeds validating the token first.)

    • Metadata source second (priority 1) uses the response of the request issued by metadata source first (priority 0), so it will wait for first to finish by triggering only in the second block.

    • Authorization policy allowed-endpoints (priority 0) is considered to be a lot less expensive than more-expensive-policy (priority 1) and has a high chance of denying access to the protected service (if the path is not one of the allowed endpoints). By setting different priorities to these policies we ensure the more expensive policy if triggered in sequence of the less expensive one, instead of concurrently.

    "},{"location":"authorino/docs/features/#common-feature-conditions-when","title":"Common feature: Conditions (when)","text":"

    Conditions, named when in the AuthConfig API, are logical expressions, composed of patterns and logical operator AND and OR, that can be used to condition the evaluation of a particular auth rule within an AuthConfig, as well as of the AuthConfig altogether (\"top-level conditions\").

    The patterns are evaluated against the Authorization JSON, where each pattern is a tuple composed of:

    • selector: a JSON path to fetch a value from the Authorization JSON
    • operator: one of: eq (equals); neq (not equal); incl (includes) and excl (excludes), for when the value fetched from the Authorization JSON is expected to be an array; matches, for regular expressions
    • value: a static string value to compare the value selected from the Authorization JSON with.

    An expression contains one or more patterns and they must either all evaluate to true (\"AND\" operator, declared by grouping the patterns within an all block) or at least one of the patterns must be true (\"OR\" operator, when grouped within an any block.) Patterns not explicitly grouped are AND'ed by default.

    To avoid repetitions when listing patterns, any set of literal { pattern, operator, value } tuples can be stored at the top-level of the AuthConfig spec, indexed by name, and later referred within an expression by including a patternRef in the block of conditions.

    Examples of when conditions

    i) to skip an entire AuthConfig based on the context (AND operator assumed by default):

    spec:\n  when: # auth enforced only on requests to POST /resources/*\n\n  - selector: context.request.http.method\n    operator: eq\n    value: POST\n  - selector: context.request.http.path\n    operator: matches\n    value: ^/resources/.*\n

    ii) equivalent to the above with explicit AND operator (i.e., all block):

    spec:\n  when: # auth enforced only on requests to POST /resources/*\n\n  - all:\n    - selector: context.request.http.method\n      operator: eq\n      value: POST\n    - selector: context.request.http.path\n      operator: matches\n      value: ^/resources/.*\n

    iii) OR condition (i.e., any block):

    spec:\n  when: # auth enforced only on requests with HTTP method equals to POST or PUT\n\n  - any:\n    - selector: context.request.http.method\n      operator: eq\n      value: POST\n    - selector: context.request.http.method\n      operator: eq\n      value: PUT\n

    iv) complex expression with nested operations:

    spec:\n  when: # auth enforced only on requests to POST /resources/* or PUT /resources/*\n\n  - any:\n    - all:\n      - selector: context.request.http.method\n        operator: eq\n        value: POST\n      - selector: context.request.http.path\n        operator: matches\n        value: ^/resources/.*\n    - all:\n      - selector: context.request.http.method\n        operator: eq\n        value: PUT\n      - selector: context.request.http.path\n        operator: matches\n        value: ^/resources/.*\n

    v) more concise equivalent of the above (with implicit AND operator at the top level):

    spec:\n  when: # auth enforced only on requests to /resources/* path with method equals to POST or PUT\n\n  - selector: context.request.http.path\n    operator: matches\n    value: ^/resources/.*\n  - any:\n    - selector: context.request.http.method\n      operator: eq\n      value: POST\n    - selector: context.request.http.method\n      operator: eq\n      value: PUT\n

    vi) to skip part of an AuthConfig (i.e., a specific auth rule):

    spec:\n  metadata:\n    \"metadata-source\":\n      http:\n        url: https://my-metadata-source.io\n      when: # only fetch the external metadata if the context is HTTP method other than OPTIONS\n\n      - selector: context.request.http.method\n        operator: neq\n        value: OPTIONS\n

    vii) skipping part of an AuthConfig will not affect other auth rules:

    spec:\n  authentication:\n    \"authn-meth-1\":\n      apiKey: {\u2026} # this auth rule only triggers for POST requests to /foo[/*]\n      when:\n\n      - selector: context.request.http.method\n        operator: eq\n        value: POST\n      - selector: context.request.http.path\n        operator: matches\n        value: ^/foo(/.*)?$\n\n    \"authn-meth-2\": # this auth rule triggerred regardless\n      jwt: {\u2026}\n

    viii) concrete use-case: evaluating only the necessary identity checks based on the user's indication of the preferred authentication method (prefix of the value supplied in the HTTP Authorization request header):

    spec:\n  authentication:\n    \"jwt\":\n      when:\n\n      - selector: context.request.http.headers.authorization\n        operator: matches\n        value: JWT .+\n      jwt: {\u2026}\n\n    \"api-key\":\n      when:\n\n      - selector: context.request.http.headers.authorization\n        operator: matches\n        value: APIKEY .+\n      apiKey: {\u2026}\n

    ix) to avoid repetition while defining patterns for conditions:

    spec:\n  patterns:\n    a-pet: # a named pattern that can be reused in sets of conditions\n\n    - selector: context.request.http.path\n      operator: matches\n      value: ^/pets/\\d+(/.*)$\n\n  metadata:\n    \"pets-info\":\n      when:\n\n      - patternRef: a-pet\n      http:\n        url: https://pets-info.io?petId={context.request.http.path.@extract:{\"sep\":\"/\",\"pos\":2}}\n\n  authorization:\n    \"pets-owners-only\":\n      when:\n\n      - patternRef: a-pet\n      opa:\n        rego: |\n          allow { input.metadata[\"pets-info\"].ownerid == input.auth.identity.userid }\n

    x) combining literals and refs \u2013 concrete case: authentication required for selected operations:

    spec:\n  patterns:\n    api-base-path:\n\n    - selector: context.request.http.path\n      operator: matches\n      value: ^/api/.*\n\n    authenticated-user:\n\n    - selector: auth.identity.anonymous\n      operator: neq\n      value: \"true\"\n\n  authentication:\n    api-users: # tries to authenticate all requests to path /api/*\n      when:\n\n      - patternRef: api-base-path\n      jwt: {\u2026}\n\n    others: # defaults to anonymous access when authentication fails or not /api/* path\n      anonymous: {}\n      priority: 1\n\n  authorization:\n    api-write-access-requires-authentication: # POST/PUT/DELETE requests to /api/* path cannot be anonymous\n      when:\n\n      - all:\n        - patternRef: api-base-path\n        - any:\n          - selector: context.request.http.method\n            operator: eq\n            value: POST\n          - selector: context.request.http.method\n            operator: eq\n            value: PUT\n          - selector: context.request.http.method\n            operator: eq\n            value: DELETE\n      opa:\n        patternMatching:\n          rules:\n          - patternRef: authenticated-user\n\n  response: # bonus: export user data if available\n    success:\n      dynamicMetadata:\n        \"user-data\":\n          when:\n\n          - patternRef: authenticated-user\n          json:\n            properties:\n              jwt-claims:\n                selector: auth.identity\n
    "},{"location":"authorino/docs/features/#common-feature-caching-cache","title":"Common feature: Caching (cache)","text":"

    Objects resolved at runtime in an Auth Pipeline can be cached \"in-memory\", and avoided being evaluated again at a subsequent request, until it expires. A lookup cache key and a TTL can be set individually for any evaluator config in an AuthConfig.

    Each cache config induces a completely independent cache table (or \"cache namespace\"). Consequently, different evaluator configs can use the same cache key and there will be no collision between entries from different evaluators.

    E.g.:

    spec:\n  hosts:\n\n  - my-api.io\n\n  authentication: [\u2026]\n\n  metadata:\n    \"external-metadata\":\n      http:\n        url: http://my-external-source?search={context.request.http.path}\n      cache:\n        key:\n          selector: context.request.http.path\n        ttl: 300\n\n  authorization:\n    \"complex-policy\":\n      opa:\n        externalPolicy:\n          url: http://my-policy-registry\n      cache:\n        key:\n          selector: \"{auth.identity.group}-{context.request.http.method}-{context.request.http.path}\"\n        ttl: 60\n

    The example above sets caching for the 'external-metadata' metadata config and for the 'complex-policy' authorization policy. In the case of 'external-metadata', the cache key is the path of the original HTTP request being authorized by Authorino (fetched dynamically from the Authorization JSON); i.e., after obtaining a metadata object from the external source for a given contextual HTTP path one first time, whenever that same HTTP path repeats in a subsequent request, Authorino will use the cached object instead of sending a request again to the external source of metadata. After 5 minutes (300 seconds), the cache entry will expire and Authorino will fetch again from the source if requested.

    As for the 'complex-policy' authorization policy, the cache key is a string composed the 'group' the identity belongs to, the method of the HTTP request and the path of the HTTP request. Whenever these repeat, Authorino will use the result of the policy that was evaluated and cached priorly. Cache entries in this namespace expire after 60 seconds.

    Notes on evaluator caching

    Capacity - By default, each cache namespace is limited to 1 mb. Entries will be evicted following First-In-First-Out (FIFO) policy to release space. The individual capacity of cache namespaces is set at the level of the Authorino instance (via --evaluator-cache-size command-line flag or spec.evaluatorCacheSize field of the Authorino CR).

    Usage - Avoid caching objects whose evaluation is considered to be relatively cheap. Examples of operations associated to Authorino auth features that are usually NOT worth caching: validation of JSON Web Tokens (JWT), Kubernetes TokenReviews and SubjectAccessReviews, API key validation, simple JSON pattern-matching authorization rules, simple OPA policies. Examples of operations where caching may be desired: OAuth2 token introspection, fetching of metadata from external sources (via HTTP request), complex OPA policies.

    "},{"location":"authorino/docs/features/#common-feature-metrics-metrics","title":"Common feature: Metrics (metrics)","text":"

    By default, Authorino will only export metrics down to the level of the AuthConfig. Deeper metrics at the level of each evaluator within an AuthConfig can be activated by setting the common field metrics: true of the evaluator config.

    E.g.:

    apiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: my-authconfig\n  namespace: my-ns\nspec:\n  metadata:\n    \"my-external-metadata\":\n      http:\n        url: http://my-external-source?search={context.request.http.path}\n      metrics: true\n

    The above will enable the metrics auth_server_evaluator_duration_seconds (histogram) and auth_server_evaluator_total (counter) with labels namespace=\"my-ns\", authconfig=\"my-authconfig\", evaluator_type=\"METADATA_GENERIC_HTTP\" and evaluator_name=\"my-external-metadata\".

    The same pattern works for other types of evaluators. Find below the list of all types and corresponding label constant used in the metric:

    Evaluator type Metric's evaluator_type label authentication.apiKey IDENTITY_APIKEY authentication.kubernetesTokenReview IDENTITY_KUBERNETES authentication.jwt IDENTITY_OIDC authentication.oauth2Introspection IDENTITY_OAUTH2 authentication.x509 IDENTITY_MTLS authentication.plain IDENTITY_PLAIN authentication.anonymous IDENTITY_NOOP metadata.http METADATA_GENERIC_HTTP metadata.userInfo METADATA_USERINFO metadata.uma METADATA_UMA authorization.patternMatching AUTHORIZATION_JSON authorization.opa AUTHORIZATION_OPA authorization.kubernetesSubjectAccessReview AUTHORIZATION_KUBERNETES authorization.spicedb AUTHORIZATION_AUTHZED response.success..plain RESPONSE_PLAIN response.success..json RESPONSE_JSON response.success..wristband RESPONSE_WRISTBAND

    Metrics at the level of the evaluators can also be enforced to an entire Authorino instance, by setting the --deep-metrics-enabled command-line flag. In this case, regardless of the value of the field spec.(authentication|metadata|authorization|response).metrics in the AuthConfigs, individual metrics for all evaluators of all AuthConfigs will be exported.

    For more information about metrics exported by Authorino, see Observability.

    "},{"location":"authorino/docs/getting-started/","title":"Getting started","text":"

    This page covers requirements and instructions to deploy Authorino on a Kubernetes cluster, as well as the steps to declare, apply and try out a protection layer of authentication and authorization over your service, clean-up and complete uninstallation.

    If you prefer learning with an example, check out our Hello World.

    "},{"location":"authorino/docs/getting-started/#requirements","title":"Requirements","text":""},{"location":"authorino/docs/getting-started/#platform-requirements","title":"Platform requirements","text":"

    These are the platform requirements to use Authorino:

    • Kubernetes server (recommended v1.21 or later), with permission to create Kubernetes Custom Resource Definitions (CRDs) (for bootstrapping Authorino and Authorino Operator)

      Alternative: K8s distros and platforms

      Alternatively to upstream Kubernetes, you should be able to use any other Kubernetes distribution or Kubernetes Management Platform (KMP) with support for Kubernetes Custom Resources Definitions (CRD) and custom controllers, such as Red Hat OpenShift, IBM Cloud Kubernetes Service (IKS), Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS) and Azure Kubernetes Service (AKS).

    • Envoy proxy (recommended v1.19 or later), to wire up Upstream services (i.e. the services to be protected with Authorino) and external authorization filter (Authorino) for integrations based on the reverse-proxy architecture - example

      Alternative: Non-reverse-proxy integration

      Technically, any client that implements Envoy's external authorization gRPC protocol should be compatible with Authorino. For integrations based on the reverse-proxy architecture nevertheless, we strongly recommended that you leverage Envoy alongside Authorino.

      "},{"location":"authorino/docs/getting-started/#feature-specific-requirements","title":"Feature-specific requirements","text":"

      A few examples are:

      • For OpenID Connect, make sure you have access to an identity provider (IdP) and an authority that can issue ID tokens (JWTs). Check out Keycloak which can solve both and connect to external identity sources and user federation like LDAP.

      • For Kubernetes authentication tokens, platform support for the TokenReview and SubjectAccessReview APIs of Kubernetes shall be required. In case you want to be able to requests access tokens for clients running outside the custer, you may also want to check out the requisites for using Kubernetes TokenRequest API (GA in v1.20).

      • For User-Managed Access (UMA) resource data, you will need a UMA-compliant server running as well. This can be an implementation of the UMA protocol by each upstream API itself or (more typically) an external server that knows about the resources. Again, Keycloak can be a good fit here as well. Just keep in mind that, whatever resource server you choose, changing-state actions commanded in the upstream APIs or other parties will have to be reflected in the resource server. Authorino will not do that for you.

      Check out the Feature specification page for more feature-specific requirements.

      "},{"location":"authorino/docs/getting-started/#installation","title":"Installation","text":""},{"location":"authorino/docs/getting-started/#step-install-the-authorino-operator","title":"Step: Install the Authorino Operator","text":"

      The simplest way to install the Authorino Operator is by applying the manifest bundle:

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n

      The above will install the latest build of the Authorino Operator and latest version of the manifests (CRDs and RBAC), which by default points as well to the latest build of Authorino, both based on the main branches of each component. To install a stable released version of the Operator and therefore also defaults to its latest compatible stable release of Authorino, replace main with another tag of a proper release of the Operator, e.g. 'v0.2.0'.

      This step will also install cert-manager in the cluster (required).

      Alternatively, you can deploy the Authorino Operator using the Operator Lifecycle Manager bundles. For instructions, check out Installing via OLM.

      "},{"location":"authorino/docs/getting-started/#step-request-an-authorino-instance","title":"Step: Request an Authorino instance","text":"

      Choose either cluster-wide or namespaced deployment mode and whether you want TLS termination enabled for the Authorino endpoints (gRPC authorization, raw HTTP authorization, and OIDC Festival Wristband Discovery listeners), and follow the corresponding instructions below.

      The instructions here are for centralized gateway or centralized authorization service architecture. Check out the Topologies section of the docs for alternatively running Authorino in a sidecar container.

      Cluster-wide (with TLS)

      Create the namespace:

      kubectl create namespace authorino\n

      Create the TLS certificates (requires cert-manager; skip if you already have certificates and certificate keys created and stored in Kubernetes Secrets in the namespace):

      curl -sSL https://raw.githubusercontent.com/Kuadrant/authorino/main/deploy/certs.yaml | sed \"s/\\$(AUTHORINO_INSTANCE)/authorino/g;s/\\$(NAMESPACE)/authorino/g\" | kubectl -n authorino apply -f -\n

      Deploy Authorino:

      kubectl -n authorino apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  replicas: 1\n  clusterWide: true\n  listener:\n    tls:\n      enabled: true\n      certSecretRef:\n        name: authorino-server-cert\n  oidcServer:\n    tls:\n      enabled: true\n      certSecretRef:\n        name: authorino-oidc-server-cert\nEOF\n

      Cluster-wide (without TLS)
      kubectl create namespace authorino\nkubectl -n authorino apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  image: quay.io/kuadrant/authorino:latest\n  replicas: 1\n  clusterWide: true\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      Namespaced (with TLS)

      Create the namespace:

      kubectl create namespace myapp\n

      Create the TLS certificates (requires cert-manager; skip if you already have certificates and certificate keys created and stored in Kubernetes Secrets in the namespace):

      curl -sSL https://raw.githubusercontent.com/Kuadrant/authorino/main/deploy/certs.yaml | sed \"s/\\$(AUTHORINO_INSTANCE)/authorino/g;s/\\$(NAMESPACE)/myapp/g\" | kubectl -n myapp apply -f -\n

      Deploy Authorino:

      kubectl -n myapp apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  image: quay.io/kuadrant/authorino:latest\n  replicas: 1\n  clusterWide: false\n  listener:\n    tls:\n      enabled: true\n      certSecretRef:\n        name: authorino-server-cert\n  oidcServer:\n    tls:\n      enabled: true\n      certSecretRef:\n        name: authorino-oidc-server-cert\nEOF\n

      Namespaced (without TLS)
      kubectl create namespace myapp\nkubectl -n myapp apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  image: quay.io/kuadrant/authorino:latest\n  replicas: 1\n  clusterWide: false\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/getting-started/#protect-a-service","title":"Protect a service","text":"

      The most typical integration to protect services with Authorino is by putting the service (upstream) behind a reverse-proxy or API gateway, enabled with an authorization filter that ensures all requests to the service are first checked with the authorization server (Authorino).

      To do that, make sure you have your upstream service deployed and running, usually in the same Kubernetes server where you installed Authorino. Then, setup an Envoy proxy and create an Authorino AuthConfig for your service.

      Authorino exposes 2 interfaces to serve the authorization requests:

      • a gRPC interface that implements Envoy's External Authorization protocol;
      • a raw HTTP authorization interface, suitable for using Authorino with Kubernetes ValidatingWebhook, for Envoy external authorization via HTTP, and other integrations (e.g. other proxies).

      To use Authorino as a simple satellite (sidecar) Policy Decision Point (PDP), applications can integrate directly via any of these interfaces. By integrating via a proxy or API gateway, the combination makes Authorino to perform as an external Policy Enforcement Point (PEP) completely decoupled from the application.

      "},{"location":"authorino/docs/getting-started/#life-cycle","title":"Life cycle","text":""},{"location":"authorino/docs/getting-started/#step-setup-envoy","title":"Step: Setup Envoy","text":"

      To configure Envoy for proxying requests targeting the upstream service and authorizing with Authorino, setup an Envoy configuration that enables Envoy's external authorization HTTP filter. Store the configuration in a ConfigMap.

      These are the important bits in the Envoy configuration to activate Authorino:

      static_resources:\n  listeners:\n\n  - address: {\u2026} # TCP socket address and port of the proxy\n    filter_chains:\n    - filters:\n      - name: envoy.http_connection_manager\n        typed_config:\n          \"@type\": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager\n          route_config: {\u2026} # routing configs - virtual host domain and endpoint matching patterns and corresponding upstream services to redirect the traffic\n          http_filters:\n          - name: envoy.filters.http.ext_authz # the external authorization filter\n            typed_config:\n              \"@type\": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthz\n              transport_api_version: V3\n              failure_mode_allow: false # ensures only authenticated and authorized traffic goes through\n              grpc_service:\n                envoy_grpc:\n                  cluster_name: authorino\n                timeout: 1s\n  clusters:\n  - name: authorino\n    connect_timeout: 0.25s\n    type: strict_dns\n    lb_policy: round_robin\n    http2_protocol_options: {}\n    load_assignment:\n      cluster_name: authorino\n      endpoints:\n      - lb_endpoints:\n        - endpoint:\n            address:\n              socket_address:\n                address: authorino-authorino-authorization # name of the Authorino service deployed \u2013 it can be the fully qualified name with `.<namespace>.svc.cluster.local` suffix (e.g. `authorino-authorino-authorization.myapp.svc.cluster.local`)\n                port_value: 50051\n    transport_socket: # in case TLS termination is enabled in Authorino; omit it otherwise\n      name: envoy.transport_sockets.tls\n      typed_config:\n        \"@type\": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext\n        common_tls_context:\n          validation_context:\n            trusted_ca:\n              filename: /etc/ssl/certs/authorino-ca-cert.crt\n

      For a complete Envoy ConfigMap containing an upstream API protected with Authorino, with TLS enabled and option for rate limiting with Limitador, plus a webapp served with under the same domain of the protected API, check out this example.

      After creating the ConfigMap with the Envoy configuration, create an Envoy Deployment and Service. E.g.:

      kubectl -n myapp apply -f -<<EOF\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: envoy\n  labels:\n    app: envoy\nspec:\n  selector:\n    matchLabels:\n      app: envoy\n  template:\n    metadata:\n      labels:\n        app: envoy\n    spec:\n      containers:\n\n        - name: envoy\n          image: envoyproxy/envoy:v1.19-latest\n          command: [\"/usr/local/bin/envoy\"]\n          args:\n            - --config-path /usr/local/etc/envoy/envoy.yaml\n            - --service-cluster front-proxy\n            - --log-level info\n            - --component-log-level filter:trace,http:debug,router:debug\n          ports:\n            - name: web\n              containerPort: 8000 # matches the address of the listener in the envoy config\n          volumeMounts:\n            - name: config\n              mountPath: /usr/local/etc/envoy\n              readOnly: true\n            - name: authorino-ca-cert # in case TLS termination is enabled in Authorino; omit it otherwise\n              subPath: ca.crt\n              mountPath: /etc/ssl/certs/authorino-ca-cert.crt\n              readOnly: true\n      volumes:\n        - name: config\n          configMap:\n            name: envoy\n            items:\n              - key: envoy.yaml\n                path: envoy.yaml\n        - name: authorino-ca-cert # in case TLS termination is enabled in Authorino; omit it otherwise\n          secret:\n            defaultMode: 420\n            secretName: authorino-ca-cert\n  replicas: 1\nEOF\n
      kubectl -n myapp apply -f -<<EOF\napiVersion: v1\nkind: Service\nmetadata:\n  name: envoy\nspec:\n  selector:\n    app: envoy\n  ports:\n\n    - name: web\n      port: 8000\n      protocol: TCP\nEOF\n
      "},{"location":"authorino/docs/getting-started/#step-apply-an-authconfig","title":"Step: Apply an AuthConfig","text":"

      Check out the docs for a full description of Authorino's AuthConfig Custom Resource Definition (CRD) and its features.

      For examples based on specific use-cases, check out the User guides.

      For authentication based on OpenID Connect (OIDC) JSON Web Tokens (JWT), plus one simple JWT claim authorization check, a typical AuthConfig custom resource looks like the following:

      kubectl -n myapp apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: my-api-protection\nspec:\n  hosts: # any hosts that resolve to the envoy service and envoy routing config where the external authorization filter is enabled\n\n  - my-api.io # north-south traffic through a Kubernetes `Ingress` or OpenShift `Route`\n  - my-api.myapp.svc.cluster.local # east-west traffic (between applications within the cluster)\n  authentication:\n    \"idp-users\":\n      jwt:\n        issuerUrl: https://my-idp.com/auth/realm\n  authorization:\n    \"check-claim\":\n      patternMatching:\n        patterns:\n        - selector: auth.identity.group\n          operator: eq\n          value: allowed-users\nEOF\n

      After applying the AuthConfig, consumers of the protected service should be able to start sending requests.

      "},{"location":"authorino/docs/getting-started/#clean-up","title":"Clean-up","text":""},{"location":"authorino/docs/getting-started/#remove-protection","title":"Remove protection","text":"

      Delete the AuthConfig:

      kubectl -n myapp delete authconfig/my-api-protection\n

      Decommission the Authorino instance:

      kubectl -n myapp delete authorino/authorino\n
      "},{"location":"authorino/docs/getting-started/#uninstall","title":"Uninstall","text":"

      To completely remove Authorino CRDs, run from the Authorino Operator directory:

      make uninstall\n
      "},{"location":"authorino/docs/getting-started/#next-steps","title":"Next steps","text":"
      1. Read the docs. The Architecture page and the Features page are good starting points to learn more about how Authorino works and its functionalities.
      2. Check out the User guides for several examples of AuthConfigs based on specific use-cases
      "},{"location":"authorino/docs/terminology/","title":"Terminology","text":"

      Here we define some terms that are used in the project, with the goal of avoiding confusion and facilitating more accurate conversations related to Authorino.

      If you see terms used that are not here (or are used in place of terms here) please consider contributing a definition to this doc with a PR, or modifying the use elsewhere to align with these terms.

      "},{"location":"authorino/docs/terminology/#terms","title":"Terms","text":"

      Access token Type of temporary password (security token), tied to an authenticated identity, issued by an auth server as of request from either the identity subject itself or a registered auth client known by the auth server, and that delegates to a party powers to operate on behalf of that identity before a resource server; it can be formatted as an opaque data string or as an encoded JSON Web Token (JWT).

      Application Programming Interface (API) Interface that defines interactions between multiple software applications; (in HTTP communication) set of endpoints and specification to expose resources hosted by a resource server, to be consumed by client applications; the access facade of a resource server.

      Attribute-based Access Control (ABAC) Authorization model that grants/denies access to resources based on evaluation of authorization policies which combine attributes together (from claims, from the request, from the resource, etc).

      Auth Usually employed as a short for authentication and authorization together (AuthN/AuthZ).

      Auth client Application client (software) that uses an auth server, either in the process of authenticating and/or authorizing identity subjects (including self) who want to consume resources from a resources server or auth server.

      Auth server Server where auth clients, users, roles, scopes, resources, policies and permissions can be stored and managed.

      Authentication (AuthN) Process of verifying that a given credential belongs to a claimed-to-be identity; usually resulting in the issuing of an access token.

      Authorization (AuthZ) Process of granting (or denying) access over a resource to a party based on the set of authorization rules, policies and/or permissions enforced.

      Authorization header HTTP request header frequently used to carry credentials to authenticate a user in an HTTP communication, like in requests sent to an API; alternatives usually include credentials carried in another (custom) HTTP header, query string parameter or HTTP cookie.

      Capability Usually employed to refer to a management feature of a Kubernetes-native system, based on the definition and use of Kubernetes Custom Resources (CRDs and CRs), that enables that system to one of the following \u201ccapability levels\u201d: Basic Install, Seamless Upgrades, Full Lifecycle, Deep Insights, Auto Pilot.

      Claim Attribute packed in a security token which represents a claim that one who bears the token is making about an entity, usually an identity subject.

      Client ID Unique identifier of an auth client within an auth server domain (or auth server realm).

      Client secret Password presented by auth clients together with their Client IDs while authenticating with an auth server, either when requesting access tokens to be issued or when consuming services from the auth servers in general.

      Delegation Process of granting a party (usually an auth client) with powers to act, often with limited scope, on behalf of an identity, to access resources from a resource server. See also OAuth2.

      Hash-based Message Authentication Code (HMAC) Specific type of message authentication code (MAC) that involves a cryptographic hash function and a shared secret cryptographic key; it can be used to verify the authenticity of a message and therefore as an authentication method.

      Identity Set of properties that qualifies a subject as a strong identifiable entity (usually a user), who can be authenticated by an auth server. See also Claims.

      Identity and Access Management (IAM) system Auth system that implements and/or connects with sources of identity (IdP) and offers interfaces for managing access (authorization policies and permissions). See also Auth server.

      Identity Provider (IdP) Source of identity; it can be a feature of an auth server or external source connected to an auth server.

      ID token Special type of access token; an encoded JSON Web Token (JWT) that packs claims about an identity.

      JSON Web Token (JWT) JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.

      JSON Web Signature (JWS) Standard for signing arbitrary data, especially JSON Web Tokens (JWT).

      JSON Web Key Set (JWKS) Set of keys containing the public keys used to verify any JSON Web Token (JWT).

      Keycloak Open source auth server to allow single sign-on with identity and access management.

      Lightweight Directory Access Protocol (LDAP) Open standard for distributed directory information services for sharing of information about users, systems, networks, services and applications.

      Mutual Transport Layer Security (mTLS) Protocol for the mutual authentication of client-server communication, i.e., the client authenticates the server and the server authenticates the client, based on the acceptance of the X.509 certificates of each party.

      OAuth 2.0 (OAuth2) Industry-standard protocol for delegation.

      OpenID Connect (OIDC) Simple identity verification (authentication) layer built on top of the OAuth2 protocol.

      Open Policy Agent (OPA) Authorization policy agent that enables the usage of declarative authorization policies written in Rego language.

      Opaque token Security token devoid of explicit meaning (e.g. random string); it requires the usage of lookup mechanism to be translated into a meaningful set claims representing an identity.

      Permission Association between a protected resource the authorization policies that must be evaluated whether access should be granted; e.g. <user|group|role> CAN DO <action> ON RESOURCE <X>.

      Policy Rule or condition (authorization policy) that must be satisfied to grant access to a resource; strongly related to the different access control mechanisms (ACMs) and strategies one can use to protect resources, e.g. attribute-based access control (ABAC), role-based access control (RBAC), context-based access control, user-based access control (UBAC).

      Policy Administration Point (PAP) Set of UIs and APIs to manage resources servers, resources, scopes, policies and permissions; it is where the auth system is configured.

      Policy Decision Point (PDP) Where the authorization requests are sent, with permissions being requested, and authorization policies are evaluated accordingly.

      Policy Enforcement Point (PEP) Where the authorization is effectively enforced, usually at the resource server or at a proxy, based on a response provided by the Policy Decision Point (PDP).

      Policy storage Where policies are stored and from where they can be fetched, perhaps to be cached.

      Red Hat SSO Auth server; downstream product created from the Keycloak Open Source project.

      Refresh token Special type of security token, often provided together with an access token in an OAuth2 flow, used to renew the duration of an access token before it expires; it requires client authentication.

      Request Party Token (RPT) JSON Web Token (JWT) digitally signed using JSON Web Signature (JWS), issued by the Keycloak auth server.

      Resource One or more endpoints of a system, API or server, that can be protected.

      Resource-level Access Control (RLAC) Authorization model that takes into consideration attributes of each specific request resource to grant/deny access to those resources (e.g. the resource's owner).

      Resource server Server that hosts protected resources.

      Role Aspect of a user\u2019s identity assigned to the user to indicate the level of access they should have to the system; essentially, roles represent collections of permissions

      Role-based Access Control (RBAC) Authorization model that grants/denies access to resources based on the roles of authenticated users (rather than on complex attributes/policy rules).

      Scope Mechanism that defines the specific operations that applications can be allowed to do or information that they can request on an identity\u2019s behalf; often presented as a parameter when access is requested as a way to communicate what access is needed, and used by auth server to respond what actual access is granted.

      Single Page Application (SPA) Web application or website that interacts with the user by dynamically rewriting the current web page with new data from the web server.

      Single Sign-on (SSO) Authentication scheme that allows a user to log in with a single ID and password to any of several related, yet independent, software systems.

      Upstream (In the context of authentication/authorization) API whose endpoints must be protected by the auth system; the unprotected service in front of which a protection layer is added (by connecting with a Policy Decision Point).

      User-based Access Control (UBAC) Authorization model that grants/denies access to resources based on claims of the identity (attributes of the user).

      User-Managed Access (UMA) OAuth2-based access management protocol, used for users of an auth server to control the authorization process, i.e. directly granting/denying access to user-owned resources to other requesting parties.

      "},{"location":"authorino/docs/user-guides/","title":"User guides","text":"
      • Hello World The basics of protecting an API with Authorino.

      • Authentication with Kubernetes tokens (TokenReview API) Validate Kubernetes Service Account tokens to authenticate requests to your protected hosts.

      • Authentication with API keys Issue API keys stored in Kubernetes Secrets for clients to authenticate with your protected hosts.

      • Authentication with X.509 certificates and mTLS Verify client X.509 certificates against trusted root CAs.

      • OpenID Connect Discovery and authentication with JWTs Validate JSON Web Tokens (JWT) issued and signed by an OpenID Connect server; leverage OpenID Connect Discovery to automatically fetch JSON Web Key Sets (JWKS).

      • OAuth 2.0 token introspection (RFC 7662) Introspect OAuth 2.0 access tokens (e.g. opaque tokens) for online user data and token validation in request-time.

      • Passing credentials (Authorization header, cookie headers and others) Customize where credentials are supplied in the request by each trusted source of identity.

      • HTTP \"Basic\" Authentication (RFC 7235) Turn Authorino API key Secrets settings into HTTP basic auth.

      • Anonymous access Bypass identity verification or fall back to anonymous access when credentials fail to validate

      • Token normalization Normalize identity claims from trusted sources and reduce complexity in your policies.

      • Edge Authentication Architecture (EAA) Exchange satellite (outer-layer) authentication tokens for \"Festival Wristbands\" accepted ubiquitously at the inside of your network. Normalize from multiple and varied sources of identity and authentication methods in the edge of your architecture; filter privacy data, limit the scope of permissions, and simplify authorization rules to your internal microservices.

      • Fetching auth metadata from external sources Get online data from remote HTTP services to enhance authorization rules.

      • OpenID Connect UserInfo Fetch user info for OpenID Connect ID tokens in request-time for extra metadata for your policies and online verification of token validity.

      • Resource-level authorization with User-Managed Access (UMA) resource registry Fetch resource attributes relevant for authorization from a User-Managed Access (UMA) resource registry such as Keycloak resource server clients.

      • Simple pattern-matching authorization policies Write simple authorization rules based on JSON patterns matched against Authorino's Authorization JSON; check contextual information of the request, validate JWT claims, cross metadata fetched from external sources, etc.

      • OpenID Connect (OIDC) and Role-Based Access Control (RBAC) with Authorino and Keycloak Combine OpenID Connect (OIDC) authentication and Role-Based Access Control (RBAC) authorization rules leveraging Keycloak and Authorino working together.

      • Open Policy Agent (OPA) Rego policies Leverage the power of Open Policy Agent (OPA) policies, evaluated against Authorino's Authorization JSON in a built-in runtime compiled together with Authorino; pre-cache policies defined in Rego language inline or fetched from an external policy registry.

      • Kubernetes RBAC for service authorization (SubjectAccessReview API) Manage permissions in the Kubernetes RBAC and let Authorino to check them in request-time with the authorization system of the cluster.

      • Authorization with Keycloak Authorization Services Use Authorino as an adapter for Keycloak Authorization Services without importing any library or rebuilding your application code.

      • Integration with Authzed/SpiceDB Permission requests sent to a Google Zanzibar-based Authzed/SpiceDB instance, via gRPC.

      • Injecting data in the request Inject HTTP headers with serialized JSON content.

      • Authenticated rate limiting (with Envoy Dynamic Metadata) Provide Envoy with dynamic metadata from the external authorization process to be injected and used by consecutive filters, such as by a rate limiting service.

      • Redirecting to a login page Customize response status code and headers on failed requests. E.g. redirect users of a web application protected with Authorino to a login page instead of a 401 Unauthorized; mask resources on access denied behind a 404 Not Found response instead of 403 Forbidden.

      • Mixing Envoy built-in filter for auth and Authorino Have JWT validation handled by Envoy beforehand and the JWT payload injected into the request to Authorino, to be used in custom authorization policies defined in a AuthConfig.

      • Host override via context extension Induce the lookup of an AuthConfig by supplying extended host context, for use cases such as of path prefix-based lookup and wildcard subdomains lookup.

      • Using Authorino as ValidatingWebhook service Use Authorino as a generic Kubernetes ValidatingWebhook service where the rules to validate a request to the Kubernetes API are written in an AuthConfig.

      • Reducing the operational space: sharding, noise and multi-tenancy Have multiple instances of Authorino running in the same space (Kubernetes namespace or cluster-scoped), yet watching particular sets of resources.

      • Caching Cache auth objects resolved at runtime for any configuration bit of an AuthConfig, for easy access in subsequent requests whenever an arbitrary cache key repeats, until the cache entry expires.

      • Observability Prometheus metrics exported by Authorino, readiness probe, logging, tracing, etc.

      "},{"location":"authorino/docs/user-guides/anonymous-access/","title":"User guide: Anonymous access","text":"

      Bypass identity verification or fall back to anonymous access when credentials fail to validate

      Authorino capabilities featured in this guide:
      • Identity verification & authentication \u2192 Anonymous access

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/anonymous-access/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/anonymous-access/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/anonymous-access/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/anonymous-access/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/anonymous-access/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/anonymous-access/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced:

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"public\":\n      anonymous: {}\nEOF\n

      The example above enables anonymous access (i.e. removes authentication), without adding any extra layer of protection to the API. This is virtually equivalent to setting a top-level condition to the AuthConfig that always skips the configuration, or to switching authentication/authorization off completely in the route to the API.

      For more sophisticated use cases of anonymous access with Authorino, consider combining this feature with other identity sources in the AuthConfig while playing with the priorities of each source, as well as combination with when conditions, and/or adding authorization policies that either cover authentication or address anonymous access with proper rules (e.g. enforcing read-only access).

      Check out the docs for the Anonymous access feature for an example of an AuthConfig that falls back to anonymous access when a priority OIDC/JWT-based authentication fails, and enforces a read-only policy in such cases.

      "},{"location":"authorino/docs/user-guides/anonymous-access/#consume-the-api","title":"\u277b Consume the API","text":"
      curl http://talker-api.127.0.0.1.nip.io:8000/hello\n# HTTP/1.1 200 OK\n
      "},{"location":"authorino/docs/user-guides/anonymous-access/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete authconfig/talker-api-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/api-key-authentication/","title":"User guide: Authentication with API keys","text":"

      Issue API keys stored in Kubernetes Secrets for clients to authenticate with your protected hosts.

      Authorino capabilities featured in this guide:
      • Identity verification & authentication \u2192 API key

      In Authorino, API keys are stored as Kubernetes Secrets. Each resource must contain an api_key entry with the value of the API key, and labeled to match the selectors specified in spec.identity.apiKey.selector of the AuthConfig.

      API key Secrets must also include labels that match the secretLabelSelector field of the Authorino instance. See Resource reconciliation and status update for details.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/api-key-authentication/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/api-key-authentication/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/api-key-authentication/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/api-key-authentication/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/api-key-authentication/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/api-key-authentication/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced:

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"friends\":\n      apiKey:\n        selector:\n          matchLabels:\n            group: friends\n      credentials:\n        authorizationHeader:\n          prefix: APIKEY\nEOF\n
      "},{"location":"authorino/docs/user-guides/api-key-authentication/#create-an-api-key","title":"\u277b Create an API key","text":"
      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: api-key-1\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    group: friends\nstringData:\n  api_key: ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx\ntype: Opaque\nEOF\n
      "},{"location":"authorino/docs/user-guides/api-key-authentication/#consume-the-api","title":"\u277c Consume the API","text":"

      With a valid API key:

      curl -H 'Authorization: APIKEY ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx' http://talker-api.127.0.0.1.nip.io:8000/hello\n# HTTP/1.1 200 OK\n

      With missing or invalid API key:

      curl -H 'Authorization: APIKEY invalid' http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 401 Unauthorized\n# www-authenticate: APIKEY realm=\"friends\"\n# x-ext-auth-reason: the API Key provided is invalid\n
      "},{"location":"authorino/docs/user-guides/api-key-authentication/#delete-an-api-key-revoke-access-to-the-api","title":"\u277d Delete an API key (revoke access to the API)","text":"
      kubectl delete secret/api-key-1\n
      "},{"location":"authorino/docs/user-guides/api-key-authentication/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete authconfig/talker-api-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/authenticated-rate-limiting-envoy-dynamic-metadata/","title":"User guide: Authenticated rate limiting (with Envoy Dynamic Metadata)","text":"

      Provide Envoy with dynamic metadata about the external authorization process to be injected into the rate limiting filter.

      Authorino capabilities featured in this guide:
      • Dynamic response \u2192 Response wrappers \u2192 Envoy Dynamic Metadata
      • Dynamic response \u2192 JSON injection
      • Identity verification & authentication \u2192 API key

      Dynamic JSON objects built out of static values and values fetched from the Authorization JSON can be wrapped to be returned to the reverse-proxy as Envoy Well Known Dynamic Metadata content. Envoy can use those to inject data returned by the external authorization service into the other filters, such as the rate limiting filter.

      Check out as well the user guides about Injecting data in the request and Authentication with API keys.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/authenticated-rate-limiting-envoy-dynamic-metadata/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277b.

      At step \u277b, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/authenticated-rate-limiting-envoy-dynamic-metadata/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/authenticated-rate-limiting-envoy-dynamic-metadata/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/authenticated-rate-limiting-envoy-dynamic-metadata/#deploy-limitador","title":"\u2778 Deploy Limitador","text":"

      Limitador is a lightweight rate limiting service that can be used with Envoy.

      On this bundle, we will deploy Limitador pre-configured to limit requests to the talker-api domain up to 5 requests per interval of 60 seconds per user_id. Envoy will be configured to recognize the presence of Limitador and activate it on requests to the Talker API.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/limitador/limitador-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/authenticated-rate-limiting-envoy-dynamic-metadata/#deploy-the-talker-api","title":"\u2779 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/authenticated-rate-limiting-envoy-dynamic-metadata/#setup-envoy","title":"\u277a Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/authenticated-rate-limiting-envoy-dynamic-metadata/#create-an-authconfig","title":"\u277b Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced.

      An annotation auth-data/username will be read from the Kubernetes API Key secret and passed as dynamic metadata { \"ext_auth_data\": { \"username\": \u00abannotations.auth-data/username\u00bb } }.

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"friends\":\n      apiKey:\n        selector:\n          matchLabels:\n            group: friends\n      credentials:\n        authorizationHeader:\n          prefix: APIKEY\n  response:\n    success:\n      dynamicMetadata:\n        \"rate-limit\":\n          json:\n            properties:\n              \"username\":\n                selector: auth.identity.metadata.annotations.auth-data\\/username\n          key: ext_auth_data # how this bit of dynamic metadata from the ext authz service is named in the Envoy config\nEOF\n

      Check out the docs for information about the common feature JSON paths for reading from the Authorization JSON.

      "},{"location":"authorino/docs/user-guides/authenticated-rate-limiting-envoy-dynamic-metadata/#create-the-api-keys","title":"\u277c Create the API keys","text":"

      For user John:

      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: api-key-1\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    group: friends\n  annotations:\n    auth-data/username: john\nstringData:\n  api_key: ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx\ntype: Opaque\nEOF\n

      For user Jane:

      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: api-key-2\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    group: friends\n  annotations:\n    auth-data/username: jane\nstringData:\n  api_key: 7BNaTmYGItSzXiwQLNHu82+x52p1XHgY\ntype: Opaque\nEOF\n
      "},{"location":"authorino/docs/user-guides/authenticated-rate-limiting-envoy-dynamic-metadata/#consume-the-api","title":"\u277d Consume the API","text":"

      As John:

      curl -H 'Authorization: APIKEY ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx' http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 200 OK\n

      Repeat the request a few more times within the 60-second time window, until the response status is 429 Too Many Requests.

      While the API is still limited to John, send requests as Jane:

      curl -H 'Authorization: APIKEY 7BNaTmYGItSzXiwQLNHu82+x52p1XHgY' http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 200 OK\n
      "},{"location":"authorino/docs/user-guides/authenticated-rate-limiting-envoy-dynamic-metadata/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete secret/api-key-1\nkubectl delete secret/api-key-2\nkubectl delete authconfig/talker-api-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/limitador/limitador-deploy.yaml\nkubectl delete authorino/authorino\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/authzed/","title":"User guide: Integration with Authzed/SpiceDB","text":"

      Permission requests sent to a Google Zanzibar-based Authzed/SpiceDB instance, via gRPC.

      Authorino capabilities featured in this guide:
      • Authorization \u2192 SpiceDB
      • Identity verification & authentication \u2192 API key

      "},{"location":"authorino/docs/user-guides/authzed/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277b.

      At step \u277b, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/authzed/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/authzed/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/authzed/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/authzed/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/authzed/#create-the-permission-database","title":"\u277a Create the permission database","text":"

      Create the namespace:

      kubectl create namespace spicedb\n

      Create the SpiceDB instance:

      kubectl -n spicedb apply -f -<<EOF\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: spicedb\n  labels:\n    app: spicedb\nspec:\n  selector:\n    matchLabels:\n      app: spicedb\n  template:\n    metadata:\n      labels:\n        app: spicedb\n    spec:\n      containers:\n\n      - name: spicedb\n        image: authzed/spicedb\n        args:\n        - serve\n        - \"--grpc-preshared-key\"\n        - secret\n        - \"--http-enabled\"\n        ports:\n        - containerPort: 50051\n        - containerPort: 8443\n  replicas: 1\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: spicedb\nspec:\n  selector:\n    app: spicedb\n  ports:\n    - name: grpc\n      port: 50051\n      protocol: TCP\n    - name: http\n      port: 8443\n      protocol: TCP\nEOF\n

      Forward local request to the SpiceDB service inside the cluster:

      kubectl -n spicedb port-forward service/spicedb 8443:8443 2>&1 >/dev/null &\n

      Create the permission schema:

      curl -X POST http://localhost:8443/v1/schema/write \\\n  -H 'Authorization: Bearer secret' \\\n  -H 'Content-Type: application/json' \\\n  -d @- << EOF\n{\n  \"schema\": \"definition blog/user {}\\ndefinition blog/post {\\n\\trelation reader: blog/user\\n\\trelation writer: blog/user\\n\\n\\tpermission read = reader + writer\\n\\tpermission write = writer\\n}\"\n}\nEOF\n

      Create the relationships:

      • blog/user:emilia \u2192 writer of blog/post:1
      • blog/user:beatrice \u2192 reader of blog/post:1
      curl -X POST http://localhost:8443/v1/relationships/write \\\n  -H 'Authorization: Bearer secret' \\\n  -H 'Content-Type: application/json' \\\n  -d @- << EOF\n{\n  \"updates\": [\n    {\n      \"operation\": \"OPERATION_CREATE\",\n      \"relationship\": {\n        \"resource\": {\n          \"objectType\": \"blog/post\",\n          \"objectId\": \"1\"\n        },\n        \"relation\": \"writer\",\n        \"subject\": {\n          \"object\": {\n            \"objectType\": \"blog/user\",\n            \"objectId\": \"emilia\"\n          }\n        }\n      }\n    },\n    {\n      \"operation\": \"OPERATION_CREATE\",\n      \"relationship\": {\n        \"resource\": {\n          \"objectType\": \"blog/post\",\n          \"objectId\": \"1\"\n        },\n        \"relation\": \"reader\",\n        \"subject\": {\n          \"object\": {\n            \"objectType\": \"blog/user\",\n            \"objectId\": \"beatrice\"\n          }\n        }\n      }\n    }\n  ]\n}\nEOF\n
      "},{"location":"authorino/docs/user-guides/authzed/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced.

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.

      Store the shared token for Authorino to authenticate with the SpiceDB instance in a Service:

      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: spicedb\n  labels:\n    app: spicedb\nstringData:\n  grpc-preshared-key: secret\nEOF\n

      Create the AuthConfig:

      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"blog-users\":\n      apiKey:\n        selector:\n          matchLabels:\n            app: talker-api\n      credentials:\n        authorizationHeader:\n          prefix: APIKEY\n  authorization:\n    \"authzed-spicedb\":\n      spicedb:\n        endpoint: spicedb.spicedb.svc.cluster.local:50051\n        insecure: true\n        sharedSecretRef:\n          name: spicedb\n          key: grpc-preshared-key\n        subject:\n          kind:\n            value: blog/user\n          name:\n            selector: auth.identity.metadata.annotations.username\n        resource:\n          kind:\n            value: blog/post\n          name:\n            selector: context.request.http.path.@extract:{\"sep\":\"/\",\"pos\":2}\n        permission:\n          selector: context.request.http.method.@replace:{\"old\":\"GET\",\"new\":\"read\"}.@replace:{\"old\":\"POST\",\"new\":\"write\"}\nEOF\n
      "},{"location":"authorino/docs/user-guides/authzed/#create-the-api-keys","title":"\u277c Create the API keys","text":"

      For Emilia (writer):

      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: api-key-writer\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    app: talker-api\n  annotations:\n    username: emilia\nstringData:\n  api_key: IAMEMILIA\nEOF\n

      For Beatrice (reader):

      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: api-key-reader\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    app: talker-api\n  annotations:\n    username: beatrice\nstringData:\n  api_key: IAMBEATRICE\nEOF\n
      "},{"location":"authorino/docs/user-guides/authzed/#consume-the-api","title":"\u277d Consume the API","text":"

      As Emilia, send a GET request:

      curl -H 'Authorization: APIKEY IAMEMILIA' \\\n     -X GET \\\n     http://talker-api.127.0.0.1.nip.io:8000/posts/1 -i\n# HTTP/1.1 200 OK\n

      As Emilia, send a POST request:

      curl -H 'Authorization: APIKEY IAMEMILIA' \\\n     -X POST \\\n     http://talker-api.127.0.0.1.nip.io:8000/posts/1 -i\n# HTTP/1.1 200 OK\n

      As Beatrice, send a GET request:

      curl -H 'Authorization: APIKEY IAMBEATRICE' \\\n     -X GET \\\n     http://talker-api.127.0.0.1.nip.io:8000/posts/1 -i\n# HTTP/1.1 200 OK\n

      As Beatrice, send a POST request:

      curl -H 'Authorization: APIKEY IAMBEATRICE' \\\n     -X POST \\\n     http://talker-api.127.0.0.1.nip.io:8000/posts/1 -i\n# HTTP/1.1 403 Forbidden\n# x-ext-auth-reason: PERMISSIONSHIP_NO_PERMISSION;token=GhUKEzE2NzU3MDE3MjAwMDAwMDAwMDA=\n
      "},{"location":"authorino/docs/user-guides/authzed/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete secret/api-key-1\nkubectl delete authconfig/talker-api-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\nkubectl delete namespace spicedb\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/caching/","title":"User guide: Caching","text":"

      Cache auth objects resolved at runtime for any configuration bit of an AuthConfig (i.e. any evaluator), of any phase (identity, metadata, authorization and dynamic response), for easy access in subsequent requests, whenever an arbitrary (user-defined) cache key repeats, until the cache entry expires.

      This is particularly useful for configuration bits whose evaluation is significantly more expensive than accessing the cache. E.g.:

      • Caching of metadata fetched from external sources in general
      • Caching of previously validated identity access tokens (e.g. for OAuth2 opaque tokens that involve consuming the token introspection endpoint of an external auth server)
      • Caching of complex Rego policies that involve sending requests to external services

      Cases where one will NOT want to enable caching, due to relatively cheap compared to accessing and managing the cache:

      • Validation of OIDC/JWT access tokens
      • OPA/Rego policies that do not involve external requests
      • JSON pattern-matching authorization
      • Dynamic JSON responses
      • Anonymous access
      Authorino capabilities featured in this guide:
      • Common feature \u2192 Caching
      • Identity verification & authentication \u2192 Anonymous access
      • External auth metadata \u2192 HTTP GET/GET-by-POST
      • Authorization \u2192 Open Policy Agent (OPA) Rego policies
      • Dynamic response \u2192 JSON injection

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/caching/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/caching/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/caching/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/caching/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/caching/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/caching/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced.

      The example below enables caching for the external source of metadata, which in this case, for convenience, is the same upstream API protected by Authorino (i.e. the Talker API), though consumed directly by Authorino, without passing through the proxy. This API generates a uuid random hash that it injects in the JSON response. This value is different in every request processed by the API.

      The example also enables caching of returned OPA virtual documents. cached-authz is a trivial Rego policy that always grants access, but generates a timestamp, which Authorino will cache.

      In both cases, the path of the HTTP request is used as cache key. I.e., whenever the path repeats, Authorino reuse the values stored previously in each cache table (cached-metadata and cached-authz), respectively saving a request to the external source of metadata and the evaluation of the OPA policy. Cache entries will expire in both cases after 60 seconds they were stored in the cache.

      The cached values will be visible in the response returned by the Talker API in x-authz-data header injected by Authorino. This way, we can tell when an existing value in the cache was used and when a new one was generated and stored.

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"anonymous\":\n      anonymous: {}\n  metadata:\n    \"cached-metadata\":\n      http:\n        url: \"http://talker-api.default.svc.cluster.local:3000/metadata/{context.request.http.path}\"\n      cache:\n        key:\n          selector: context.request.http.path\n        ttl: 60\n  authorization:\n    \"cached-authz\":\n      opa:\n        rego: |\n          now = time.now_ns()\n          allow = true\n        allValues: true\n      cache:\n        key:\n          selector: context.request.http.path\n        ttl: 60\n  response:\n    success:\n      headers:\n        \"x-authz-data\":\n          json:\n            properties:\n              \"cached-metadata\":\n                selector: auth.metadata.cached-metadata.uuid\n              \"cached-authz\":\n                selector: auth.authorization.cached-authz.now\nEOF\n
      "},{"location":"authorino/docs/user-guides/caching/#consume-the-api","title":"\u277b Consume the API","text":"
      1. To /hello
      curl http://talker-api.127.0.0.1.nip.io:8000/hello\n# [\u2026]\n#  \"X-Authz-Data\": \"{\\\"cached-authz\\\":\\\"1649343067462380300\\\",\\\"cached-metadata\\\":\\\"92c111cd-a10f-4e86-8bf0-e0cd646c6f79\\\"}\",\n# [\u2026]\n
      1. To a different path
      curl http://talker-api.127.0.0.1.nip.io:8000/goodbye\n# [\u2026]\n#  \"X-Authz-Data\": \"{\\\"cached-authz\\\":\\\"1649343097860450300\\\",\\\"cached-metadata\\\":\\\"37fce386-1ee8-40a7-aed1-bf8a208f283c\\\"}\",\n# [\u2026]\n
      1. To /hello again before the cache entry expires (60 seconds from the first request sent to this path)
      curl http://talker-api.127.0.0.1.nip.io:8000/hello\n# [\u2026]\n#  \"X-Authz-Data\": \"{\\\"cached-authz\\\":\\\"1649343067462380300\\\",\\\"cached-metadata\\\":\\\"92c111cd-a10f-4e86-8bf0-e0cd646c6f79\\\"}\",  <=== same cache-id as before\n# [\u2026]\n
      1. To /hello again after the cache entry expires (60 seconds from the first request sent to this path)
      curl http://talker-api.127.0.0.1.nip.io:8000/hello\n# [\u2026]\n#  \"X-Authz-Data\": \"{\\\"cached-authz\\\":\\\"1649343135702743800\\\",\\\"cached-metadata\\\":\\\"e708a3a6-5caf-4028-ab5c-573ad9be7188\\\"}\",  <=== different cache-id\n# [\u2026]\n
      "},{"location":"authorino/docs/user-guides/caching/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete authconfig/talker-api-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/deny-with-redirect-to-login/","title":"User guide: Redirecting to a login page","text":"

      Customize response status code and headers on failed requests to redirect users of a web application protected with Authorino to a login page instead of a 401 Unauthorized.

      Authorino capabilities featured in this guide:
      • Dynamic response \u2192 Custom denial status
      • Identity verification & authentication \u2192 API key
      • Identity verification & authentication \u2192 JWT verification

      Authorino's default response status codes, messages and headers for unauthenticated (401) and unauthorized (403) requests can be customized with static values and values fetched from the Authorization JSON.

      Check out as well the user guides about HTTP \"Basic\" Authentication (RFC 7235) and OpenID Connect Discovery and authentication with JWTs.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/deny-with-redirect-to-login/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      The next steps walk you through installing Authorino, deploying and configuring a sample web application called Matrix Quotes to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/deny-with-redirect-to-login/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/deny-with-redirect-to-login/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/deny-with-redirect-to-login/#deploy-the-matrix-quotes-web-application","title":"\u2778 Deploy the Matrix Quotes web application","text":"

      The Matrix Quotes is a static web application that contains quotes from the film The Matrix.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/matrix-quotes/matrix-quotes-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/deny-with-redirect-to-login/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Matrix Quotes webapp behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/matrix-quotes/envoy-deploy.yaml\n

      The command above creates an Ingress with host name matrix-quotes.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/deny-with-redirect-to-login/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced:

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: matrix-quotes-protection\nspec:\n  hosts:\n\n  - matrix-quotes.127.0.0.1.nip.io\n  authentication:\n    \"browser-users\":\n      apiKey:\n        selector:\n          matchLabels:\n            group: users\n      credentials:\n        cookie:\n          name: TOKEN\n    \"http-basic-auth\":\n      apiKey:\n        selector:\n          matchLabels:\n            group: users\n      credentials:\n        authorizationHeader:\n          prefix: Basic\n  response:\n    unauthenticated:\n      code: 302\n      headers:\n        \"Location\":\n          selector: \"http://matrix-quotes.127.0.0.1.nip.io:8000/login.html?redirect_to={request.path}\"\nEOF\n

      Check out the docs for information about the common feature JSON paths for reading from the Authorization JSON.

      "},{"location":"authorino/docs/user-guides/deny-with-redirect-to-login/#create-an-api-key","title":"\u277b Create an API key","text":"
      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: user-credential-1\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    group: users\nstringData:\n  api_key: am9objpw # john:p\ntype: Opaque\nEOF\n
      "},{"location":"authorino/docs/user-guides/deny-with-redirect-to-login/#consume-the-application","title":"\u277c Consume the application","text":"

      On a web browser, navigate to http://matrix-quotes.127.0.0.1.nip.io:8000.

      Click on the cards to read quotes from characters of the movie. You should be redirected to login page.

      Log in using John's credentials:

      • Username: john
      • Password: p

      Click again on the cards and check that now you are able to access the inner pages.

      You can also consume a protected endpoint of the application using HTTP Basic Authentication:

      curl -u john:p http://matrix-quotes.127.0.0.1.nip.io:8000/neo.html\n# HTTP/1.1 200 OK\n
      "},{"location":"authorino/docs/user-guides/deny-with-redirect-to-login/#optional-modify-the-authconfig-to-authenticate-with-oidc","title":"\u277d (Optional) Modify the AuthConfig to authenticate with OIDC","text":""},{"location":"authorino/docs/user-guides/deny-with-redirect-to-login/#setup-a-keycloak-server","title":"Setup a Keycloak server","text":"

      Deploy a Keycloak server preloaded with a realm named kuadrant:

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/keycloak/keycloak-deploy.yaml\n

      Resolve local Keycloak domain so it can be accessed from the local host and inside the cluster with the name: (This will be needed to redirect to Keycloak's login page and at the same time validate issued tokens.)

      echo '127.0.0.1 keycloak' >> /etc/hosts\n

      Forward local requests to the instance of Keycloak running in the cluster:

      kubectl port-forward deployment/keycloak 8080:8080 2>&1 >/dev/null &\n

      Create a client:

      curl -H \"Authorization: Bearer $(curl http://keycloak:8080/realms/master/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=admin-cli' -d 'username=admin' -d 'password=p' | jq -r .access_token)\" \\\n     -H 'Content-type: application/json' \\\n     -d '{ \"name\": \"matrix-quotes\", \"clientId\": \"matrix-quotes\", \"publicClient\": true, \"redirectUris\": [\"http://matrix-quotes.127.0.0.1.nip.io:8000/auth*\"], \"enabled\": true }' \\\n     http://keycloak:8080/admin/realms/kuadrant/clients\n
      "},{"location":"authorino/docs/user-guides/deny-with-redirect-to-login/#reconfigure-the-matrix-quotes-app-to-use-keycloaks-login-page","title":"Reconfigure the Matrix Quotes app to use Keycloak's login page","text":"
      kubectl set env deployment/matrix-quotes KEYCLOAK_REALM=http://keycloak:8080/realms/kuadrant CLIENT_ID=matrix-quotes\n
      "},{"location":"authorino/docs/user-guides/deny-with-redirect-to-login/#apply-the-changes-to-the-authconfig","title":"Apply the changes to the AuthConfig","text":"
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: matrix-quotes-protection\nspec:\n  hosts:\n\n  - matrix-quotes.127.0.0.1.nip.io\n  authentication:\n    \"idp-users\":\n      jwt:\n        issuerUrl: http://keycloak:8080/realms/kuadrant\n      credentials:\n        cookie:\n          name: TOKEN\n  response:\n    unauthenticated:\n      code: 302\n      headers:\n        \"Location\":\n          selector: \"http://keycloak:8080/realms/kuadrant/protocol/openid-connect/auth?client_id=matrix-quotes&redirect_uri=http://matrix-quotes.127.0.0.1.nip.io:8000/auth?redirect_to={request.path}&scope=openid&response_type=code\"\nEOF\n
      "},{"location":"authorino/docs/user-guides/deny-with-redirect-to-login/#consume-the-application-again","title":"Consume the application again","text":"

      Refresh the browser window or navigate again to http://matrix-quotes.127.0.0.1.nip.io:8000.

      Click on the cards to read quotes from characters of the movie. You should be redirected to login page this time served by the Keycloak server.

      Log in as Jane (a user of the Keycloak realm):

      • Username: jane
      • Password: p

      Click again on the cards and check that now you are able to access the inner pages.

      "},{"location":"authorino/docs/user-guides/deny-with-redirect-to-login/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete secret/user-credential-1\nkubectl delete authconfig/matrix-quotes-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/matrix-quotes/matrix-quotes-deploy.yaml\nkubectl delete authorino/authorino\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/keycloak/keycloak-deploy.yaml\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/","title":"User guide: Edge Authentication Architecture (EAA)","text":"

      Edge Authentication Architecture (EAA) is a pattern where more than extracting authentication logics and specifics from the application codebase to a proper authN/authZ layer, this is pushed to the edge of your cloud network, without violating the Zero Trust principle nevertheless.

      The very definition of \"edge\" is subject to discussion, but the underlying idea is that clients (e.g. API clients, IoT devices, etc.) authenticate with a layer that, before moving traffic to inside the network:

      • understands the complexity of all the different methods of authentication supported;
      • sometimes some token normalization is involved;
      • eventually enforces some preliminary authorization policies; and
      • possibly filters data bits that are sensitive to privacy concerns (e.g. to comply with local legislation such as GRPD, CCPA, etc)

      As a minimum, EAA allows to simplify authentication between applications and microservices inside the network, as well as to reduce authorization to domain-specific rules and policies, rather than having to deal all the complexity to support all types of clients in every node.

      Authorino capabilities featured in this guide:
      • Dynamic response \u2192 Festival Wristband tokens
      • Identity verification & authentication \u2192 Identity extension
      • Identity verification & authentication \u2192 API key
      • Identity verification & authentication \u2192 JWT verification

      Festival Wristbands are OpenID Connect ID tokens (signed JWTs) issued by Authorino by the end of the Auth Pipeline, for authorized requests. It can be configured to include claims based on static values and values fetched from the Authorization JSON.

      Check out as well the user guides about Token normalization, Authentication with API keys and OpenID Connect Discovery and authentication with JWTs.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)
      • Identity Provider (IdP) that implements OpenID Connect authentication and OpenID Connect Discovery (e.g. Keycloak)
      • jq, to extract parts of JSON responses
      • jwt, to inspect JWTs (optional)

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      Deploy the identity provider and authentication server by executing the command below. For the examples in this guide, we are going to use a Keycloak server preloaded with all required realm settings.

      kubectl create namespace keycloak\nkubectl -n keycloak apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/keycloak/keycloak-deploy.yaml\n

      The next steps walk you through installing Authorino and configuring 2 environments of an architecture, edge and internal.

      The first environment is a facade for handling the first layer of authentication and exchanging any valid presented authentication token for a Festival Wristband token. In the second, we will deploy a sample service called Talker API that the authorization service will ensure to receive only authenticated traffic presented with a valid Festival Wristband.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u2779.

      At steps \u2779 and \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/#create-the-namespaces","title":"\u2777 Create the namespaces","text":"

      For simplicity, this examples will set up edge and internal nodes in different namespaces of the same Kubernetes cluster. Those will share a same single cluster-wide Authorino instance. In real-life scenarios, it does not have to be like that.

      kubectl create namespace authorino\nkubectl create namespace edge\nkubectl create namespace internal\n
      "},{"location":"authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/#deploy-authorino","title":"\u2778 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources cluster-wide2, with TLS disabled3.

      kubectl -n authorino apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  clusterWide: true\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/#setup-the-edge","title":"\u2779 Setup the Edge","text":""},{"location":"authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/#setup-envoy","title":"Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up external authorization with the Authorino instance.4

      kubectl -n edge apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/eaa/envoy-edge-deploy.yaml\n

      The command above creates an Ingress with host name edge.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 9000 to the Envoy service running inside the cluster:

      kubectl -n edge port-forward deployment/envoy 9000:9000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/#create-the-authconfig","title":"Create the AuthConfig","text":"

      Create a required secret that will be used by Authorino to sign the Festival Wristband tokens:

      kubectl -n edge apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: wristband-signing-key\nstringData:\n  key.pem: |\n    -----BEGIN EC PRIVATE KEY-----\n    MHcCAQEEIDHvuf81gVlWGo0hmXGTAnA/HVxGuH8vOc7/8jewcVvqoAoGCCqGSM49\n    AwEHoUQDQgAETJf5NLVKplSYp95TOfhVPqvxvEibRyjrUZwwtpDuQZxJKDysoGwn\n    cnUvHIu23SgW+Ee9lxSmZGhO4eTdQeKxMA==\n    -----END EC PRIVATE KEY-----\ntype: Opaque\nEOF\n

      Create the config:

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl -n edge apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: edge-auth\nspec:\n  hosts:\n\n  - edge.127.0.0.1.nip.io\n  authentication:\n    \"api-clients\":\n      apiKey:\n        selector:\n          matchLabels:\n            authorino.kuadrant.io/managed-by: authorino\n        allNamespaces: true\n      credentials:\n        authorizationHeader:\n          prefix: APIKEY\n      overrides:\n        \"username\":\n          selector: auth.identity.metadata.annotations.authorino\\.kuadrant\\.io/username\n    \"idp-users\":\n      jwt:\n        issuerUrl: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\n      defaults:\n        \"username\":\n          selector: auth.identity.preferred_username\n  response:\n    success:\n      dynamicMetadata:\n        \"wristband\":\n          wristband:\n            issuer: http://authorino-authorino-oidc.authorino.svc.cluster.local:8083/edge/edge-auth/wristband\n            customClaims:\n              \"username\":\n                selector: auth.identity.username\n            tokenDuration: 300\n            signingKeyRefs:\n            - name: wristband-signing-key\n              algorithm: ES256\nEOF\n
      "},{"location":"authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/#setup-the-internal-workload","title":"\u277a Setup the internal workload","text":""},{"location":"authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/#deploy-the-talker-api","title":"Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl -n internal apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/#setup-envoy_1","title":"Setup Envoy","text":"

      This other bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.

      kubectl -n internal apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/eaa/envoy-node-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl -n internal port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/#create-the-authconfig_1","title":"Create the AuthConfig","text":"Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl -n internal apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"edge-authenticated\":\n      jwt:\n        issuerUrl: http://authorino-authorino-oidc.authorino.svc.cluster.local:8083/edge/edge-auth/wristband\nEOF\n
      "},{"location":"authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/#create-an-api-key","title":"\u277b Create an API key","text":"
      kubectl -n edge apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: api-key-1\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n  annotations:\n    authorino.kuadrant.io/username: alice\n    authorino.kuadrant.io/email: alice@host\nstringData:\n  api_key: ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx\ntype: Opaque\nEOF\n
      "},{"location":"authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/#consume-the-api","title":"\u277c Consume the API","text":""},{"location":"authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/#using-the-api-key-to-authenticate","title":"Using the API key to authenticate","text":"

      Authenticate at the edge:

      WRISTBAND_TOKEN=$(curl -H 'Authorization: APIKEY ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx' http://edge.127.0.0.1.nip.io:9000/auth -is | tr -d '\\r' | sed -En 's/^x-wristband-token: (.*)/\\1/p')\n

      Consume the API:

      curl -H \"Authorization: Bearer $WRISTBAND_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 200 OK\n

      Try to consume the API with authentication token that is only accepted in the edge:

      curl -H \"Authorization: APIKEY ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx\" http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 401 Unauthorized\n# www-authenticate: Bearer realm=\"edge-authenticated\"\n# x-ext-auth-reason: credential not found\n

      (Optional) Inspect the wristband token and verify that it only contains restricted info to authenticate and authorize with internal apps.

      jwt decode $WRISTBAND_TOKEN\n# [...]\n#\n# Token claims\n# ------------\n# {\n#   \"exp\": 1638452051,\n#   \"iat\": 1638451751,\n#   \"iss\": \"http://authorino-authorino-oidc.authorino.svc.cluster.local:8083/edge/edge-auth/wristband\",\n#   \"sub\": \"02cb51ea0e1c9f3c0960197a2518c8eb4f47e1b9222a968ffc8d4c8e783e4d19\",\n#   \"username\": \"alice\"\n# }\n
      "},{"location":"authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/#authenticating-with-the-keycloak-server","title":"Authenticating with the Keycloak server","text":"

      Obtain an access token with the Keycloak server for Jane:

      The AuthConfig deployed in the previous step is suitable for validating access tokens requested inside the cluster. This is because Keycloak's iss claim added to the JWTs matches always the host used to request the token and Authorino will later try to match this host to the host that provides the OpenID Connect configuration.

      Obtain an access token from within the cluster for the user Jane, whose e-mail has been verified:

      ACCESS_TOKEN=$(kubectl -n edge run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=demo' -d 'username=jane' -d 'password=p' -d 'scope=openid' | jq -r .access_token)\n

      If your Keycloak server is reachable from outside the cluster, feel free to obtain the token directly. Make sure the host name set in the OIDC issuer endpoint in the AuthConfig matches the one used to obtain the token and is as well reachable from within the cluster.

      (Optional) Inspect the access token issue by Keycloak and verify and how it contains more details about the identity than required to authenticate and authorize with internal apps.

      jwt decode $ACCESS_TOKEN\n# [...]\n#\n# Token claims\n# ------------\n# { [...]\n#   \"email\": \"jane@kuadrant.io\",\n#   \"email_verified\": true,\n#   \"exp\": 1638452220,\n#   \"family_name\": \"Smith\",\n#   \"given_name\": \"Jane\",\n#   \"iat\": 1638451920,\n#   \"iss\": \"http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\",\n#   \"jti\": \"699f6e49-dea4-4f29-ae2a-929a3a18c94b\",\n#   \"name\": \"Jane Smith\",\n#   \"preferred_username\": \"jane\",\n#   \"realm_access\": {\n#     \"roles\": [\n#       \"offline_access\",\n#       \"member\",\n#       \"admin\",\n#       \"uma_authorization\"\n#     ]\n#   },\n# [...]\n

      As Jane, obtain a limited wristband token at the edge:

      WRISTBAND_TOKEN=$(curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://edge.127.0.0.1.nip.io:9000/auth -is | tr -d '\\r' | sed -En 's/^x-wristband-token: (.*)/\\1/p')\n

      Consume the API:

      curl -H \"Authorization: Bearer $WRISTBAND_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 200 OK\n
      "},{"location":"authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete namespace edge\nkubectl delete namespace internal\nkubectl delete namespace authorino\nkubectl delete namespace keycloak\n

      To uninstall the Authorino and Authorino Operator manifests, run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. cluster-wide reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/envoy-jwt-authn-and-authorino/","title":"User guide: Mixing Envoy built-in filter for auth and Authorino","text":"

      Have JWT validation handled by Envoy beforehand and the JWT payload injected into the request to Authorino, to be used in custom authorization policies defined in a AuthConfig.

      In this user guide, we will set up Envoy and Authorino to protect a service called the Talker API service, with JWT authentication handled in Envoy and a more complex authorization policy enforced in Authorino.

      The policy defines a geo-fence by which only requests originated in Great Britain (country code: GB) will be accepted, unless the user is bound to a role called 'admin' in the auth server, in which case no geofence is enforced.

      All requests to the Talker API will be authenticated in Envoy. However, requests to /global will not trigger the external authorization.

      Authorino capabilities featured in this guide:
      • Identity verification & authentication \u2192 Plain
      • External auth metadata \u2192 HTTP GET/GET-by-POST
      • Authorization \u2192 Pattern-matching authorization
      • Dynamic response \u2192 Custom denial status

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/envoy-jwt-authn-and-authorino/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)
      • Identity Provider (IdP) that implements OpenID Connect authentication and OpenID Connect Discovery (e.g. Keycloak)
      • jq, to extract parts of JSON responses

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      Deploy the identity provider and authentication server by executing the command below. For the examples in this guide, we are going to use a Keycloak server preloaded with all required realm settings.

      kubectl create namespace keycloak\nkubectl -n keycloak apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/keycloak/keycloak-deploy.yaml\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277b.

      At step \u277b, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/envoy-jwt-authn-and-authorino/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/envoy-jwt-authn-and-authorino/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/envoy-jwt-authn-and-authorino/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/envoy-jwt-authn-and-authorino/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following command deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f -<<EOF\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  labels:\n    app: authorino\n  name: envoy\ndata:\n  envoy.yaml: |\n    static_resources:\n      clusters:\n\n      - name: talker-api\n        connect_timeout: 0.25s\n        type: strict_dns\n        lb_policy: round_robin\n        load_assignment:\n          cluster_name: talker-api\n          endpoints:\n          - lb_endpoints:\n            - endpoint:\n                address:\n                  socket_address:\n                    address: talker-api\n                    port_value: 3000\n      - name: keycloak\n        connect_timeout: 0.25s\n        type: logical_dns\n        lb_policy: round_robin\n        load_assignment:\n          cluster_name: keycloak\n          endpoints:\n          - lb_endpoints:\n            - endpoint:\n                address:\n                  socket_address:\n                    address: keycloak.keycloak.svc.cluster.local\n                    port_value: 8080\n      - name: authorino\n        connect_timeout: 0.25s\n        type: strict_dns\n        lb_policy: round_robin\n        http2_protocol_options: {}\n        load_assignment:\n          cluster_name: authorino\n          endpoints:\n          - lb_endpoints:\n            - endpoint:\n                address:\n                  socket_address:\n                    address: authorino-authorino-authorization\n                    port_value: 50051\n      listeners:\n      - address:\n          socket_address:\n            address: 0.0.0.0\n            port_value: 8000\n        filter_chains:\n        - filters:\n          - name: envoy.http_connection_manager\n            typed_config:\n              \"@type\": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager\n              stat_prefix: local\n              route_config:\n                name: local_route\n                virtual_hosts:\n                - name: local_service\n                  domains: ['*']\n                  routes:\n                  - match: { path_separated_prefix: /global }\n                    route: { cluster: talker-api }\n                    typed_per_filter_config:\n                      envoy.filters.http.ext_authz:\n                        \"@type\": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute\n                        disabled: true\n                  - match: { prefix: / }\n                    route: { cluster: talker-api }\n              http_filters:\n              - name: envoy.filters.http.jwt_authn\n                typed_config:\n                  \"@type\": type.googleapis.com/envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication\n                  providers:\n                    keycloak:\n                      issuer: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\n                      remote_jwks:\n                        http_uri:\n                          uri: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/certs\n                          cluster: keycloak\n                          timeout: 5s\n                        cache_duration:\n                          seconds: 300\n                      payload_in_metadata: verified_jwt\n                  rules:\n                  - match: { prefix: / }\n                    requires: { provider_name: keycloak }\n              - name: envoy.filters.http.ext_authz\n                typed_config:\n                  \"@type\": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthz\n                  transport_api_version: V3\n                  failure_mode_allow: false\n                  metadata_context_namespaces:\n                  - envoy.filters.http.jwt_authn\n                  grpc_service:\n                    envoy_grpc:\n                      cluster_name: authorino\n                    timeout: 1s\n              - name: envoy.filters.http.router\n                typed_config:\n                  \"@type\": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router\n              use_remote_address: true\n    admin:\n      access_log_path: \"/tmp/admin_access.log\"\n      address:\n        socket_address:\n          address: 0.0.0.0\n          port_value: 8001\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app: authorino\n    svc: envoy\n  name: envoy\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: authorino\n      svc: envoy\n  template:\n    metadata:\n      labels:\n        app: authorino\n        svc: envoy\n    spec:\n      containers:\n      - args:\n        - --config-path /usr/local/etc/envoy/envoy.yaml\n        - --service-cluster front-proxy\n        - --log-level info\n        - --component-log-level filter:trace,http:debug,router:debug\n        command:\n        - /usr/local/bin/envoy\n        image: envoyproxy/envoy:v1.22-latest\n        name: envoy\n        ports:\n        - containerPort: 8000\n          name: web\n        - containerPort: 8001\n          name: admin\n        volumeMounts:\n        - mountPath: /usr/local/etc/envoy\n          name: config\n          readOnly: true\n      volumes:\n      - configMap:\n          items:\n          - key: envoy.yaml\n            path: envoy.yaml\n          name: envoy\n        name: config\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app: authorino\n  name: envoy\nspec:\n  ports:\n  - name: web\n    port: 8000\n    protocol: TCP\n  selector:\n    app: authorino\n    svc: envoy\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: ingress-wildcard-host\nspec:\n  rules:\n  - host: talker-api.127.0.0.1.nip.io\n    http:\n      paths:\n      - backend:\n          service:\n            name: envoy\n            port:\n              number: 8000\n        path: /\n        pathType: Prefix\nEOF\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/envoy-jwt-authn-and-authorino/#deploy-the-ip-location-service","title":"\u277a Deploy the IP Location service","text":"

      The IP Location service is a simple service that resolves an IPv4 address into geo location info.

      kubectl apply -f https://raw.githubusercontent.com/Kuadrant/authorino-examples/main/ip-location/ip-location-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/envoy-jwt-authn-and-authorino/#create-an-authconfig","title":"\u277b Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced:

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"jwt\":\n      plain:\n        selector: context.metadata_context.filter_metadata.envoy\\.filters\\.http\\.jwt_authn|verified_jwt\n  metadata:\n    \"geoinfo\":\n      http:\n        url: 'http://ip-location.default.svc.cluster.local:3000/{context.request.http.headers.x-forwarded-for.@extract:{\"sep\":\",\"}}'\n        headers:\n          \"Accept\":\n            value: application/json\n      cache:\n        key:\n          selector: \"context.request.http.headers.x-forwarded-for.@extract:{\\\"sep\\\":\\\",\\\"}\"\n  authorization:\n    \"geofence\":\n      when:\n      - selector: auth.identity.realm_access.roles\n        operator: excl\n        value: admin\n      patternMatching:\n        patterns:\n        - selector: auth.metadata.geoinfo.country_iso_code\n          operator: eq\n          value: \"GB\"\n  response:\n    unauthorized:\n      message:\n        selector: \"The requested resource is not available in {auth.metadata.geoinfo.country_name}\"\nEOF\n
      "},{"location":"authorino/docs/user-guides/envoy-jwt-authn-and-authorino/#obtain-a-token-and-consume-the-api","title":"\u277c Obtain a token and consume the API","text":""},{"location":"authorino/docs/user-guides/envoy-jwt-authn-and-authorino/#obtain-an-access-token-and-consume-the-api-as-john-member","title":"Obtain an access token and consume the API as John (member)","text":"

      Obtain an access token with the Keycloak server for John:

      The AuthConfig deployed in the previous step is suitable for validating access tokens requested inside the cluster. This is because Keycloak's iss claim added to the JWTs matches always the host used to request the token and Authorino will later try to match this host to the host that provides the OpenID Connect configuration.

      Obtain an access token from within the cluster for the user John, a non-admin (member) user:

      ACCESS_TOKEN=$(kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=demo' -d 'username=john' -d 'password=p' -d 'scope=openid' | jq -r .access_token)\n

      If your Keycloak server is reachable from outside the cluster, feel free to obtain the token directly. Make sure the host name set in the OIDC issuer endpoint in the AuthConfig matches the one used to obtain the token and is as well reachable from within the cluster.

      As John, consume the API inside the area where the policy applies:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n     -H 'X-Forwarded-For: 79.123.45.67' \\\n     http://talker-api.127.0.0.1.nip.io:8000 -i\n# HTTP/1.1 200 OK\n

      As John, consume the API outside the area where the policy applies:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n     -H 'X-Forwarded-For: 109.69.200.56' \\\n     http://talker-api.127.0.0.1.nip.io:8000 -i\n# HTTP/1.1 403 Forbidden\n# x-ext-auth-reason: The requested resource is not available in Italy\n

      As John, consume a path of the API that will cause Envoy to skip external authorization:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n     -H 'X-Forwarded-For: 109.69.200.56' \\\n     http://talker-api.127.0.0.1.nip.io:8000/global -i\n# HTTP/1.1 200 OK\n
      "},{"location":"authorino/docs/user-guides/envoy-jwt-authn-and-authorino/#obtain-an-access-token-and-consume-the-api-as-jane-admin","title":"Obtain an access token and consume the API as Jane (admin)","text":"

      Obtain an access token with the Keycloak server for Jane, an admin user:

      ACCESS_TOKEN=$(kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=demo' -d 'username=jane' -d 'password=p' -d 'scope=openid' | jq -r .access_token)\n

      As Jane, consume the API inside the area where the policy applies:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n     -H 'X-Forwarded-For: 79.123.45.67' \\\n     http://talker-api.127.0.0.1.nip.io:8000 -i\n# HTTP/1.1 200 OK\n

      As Jane, consume the API outside the area where the policy applies:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n     -H 'X-Forwarded-For: 109.69.200.56' \\\n     http://talker-api.127.0.0.1.nip.io:8000 -i\n# HTTP/1.1 200 OK\n

      As Jane, consume a path of the API that will cause Envoy to skip external authorization:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n     -H 'X-Forwarded-For: 109.69.200.56' \\\n     http://talker-api.127.0.0.1.nip.io:8000/global -i\n# HTTP/1.1 200 OK\n
      "},{"location":"authorino/docs/user-guides/envoy-jwt-authn-and-authorino/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete authconfig/talker-api-protection\nkubectl delete ingress/ingress-wildcard-host\nkubectl delete service/envoy\nkubectl delete deployment/envoy\nkubectl delete configmap/envoy\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\nkubectl delete namespace keycloak\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/external-metadata/","title":"User guide: Fetching auth metadata from external sources","text":"

      Get online data from remote HTTP services to enhance authorization rules.

      Authorino capabilities featured in this guide:
      • External auth metadata \u2192 HTTP GET/GET-by-POST
      • Identity verification & authentication \u2192 API key
      • Authorization \u2192 Open Policy Agent (OPA) Rego policies

      You can configure Authorino to fetch additional metadata from external sources in request-time, by sending either GET or POST request to an HTTP service. The service is expected to return a JSON content which is appended to the Authorization JSON, thus becoming available for usage in other configs of the Auth Pipeline, such as in authorization policies or custom responses.

      URL, parameters and headers of the request to the external source of metadata can be configured, including with dynamic values. Authentication between Authorino and the service can be set as part of these configuration options, or based on shared authentication token stored in a Kubernetes Secret.

      Check out as well the user guides about Authentication with API keys and Open Policy Agent (OPA) Rego policies.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/external-metadata/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/external-metadata/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/external-metadata/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/external-metadata/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/external-metadata/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/external-metadata/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced.

      In this example, we will implement a geofence policy for the API, using OPA and metadata fetching from an external service that returns geolocalization JSON data for a given IP address. The policy establishes that only GET requests are allowed and the path of the request should be in the form /{country-code}/*, where {country-code} is the 2-character code of the country where the client is identified as being physically present.

      The implementation relies on the X-Forwarded-For HTTP header to read the client's IP address.

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"friends\":\n      apiKey:\n        selector:\n          matchLabels:\n            group: friends\n      credentials:\n        authorizationHeader:\n          prefix: APIKEY\n  metadata:\n    \"geo\":\n      http:\n        url: 'http://ip-api.com/json/{context.request.http.headers.x-forwarded-for.@extract:{\"sep\":\",\"}}?fields=countryCode'\n        headers:\n          \"Accept\":\n            value: application/json\n  authorization:\n    \"geofence\":\n      opa:\n        rego: |\n          import input.context.request.http\n\n          allow {\n            http.method = \"GET\"\n            split(http.path, \"/\") = [_, requested_country, _]\n            lower(requested_country) == lower(object.get(input.auth.metadata.geo, \"countryCode\", \"\"))\n          }\nEOF\n

      Check out the docs for information about the common feature JSON paths for reading from the Authorization JSON, including the description of the @extract string modifier.

      "},{"location":"authorino/docs/user-guides/external-metadata/#create-an-api-key","title":"\u277b Create an API key","text":"
      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: api-key-1\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    group: friends\nstringData:\n  api_key: ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx\ntype: Opaque\nEOF\n
      "},{"location":"authorino/docs/user-guides/external-metadata/#consume-the-api","title":"\u277c Consume the API","text":"

      From an IP address assigned to the United Kingdom of Great Britain and Northern Ireland (country code GB):

      curl -H 'Authorization: APIKEY ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx' \\\n     -H 'X-Forwarded-For: 79.123.45.67' \\\n     http://talker-api.127.0.0.1.nip.io:8000/gb/hello -i\n# HTTP/1.1 200 OK\n
      curl -H 'Authorization: APIKEY ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx' \\\n     -H 'X-Forwarded-For: 79.123.45.67' \\\n     http://talker-api.127.0.0.1.nip.io:8000/it/hello -i\n# HTTP/1.1 403 Forbidden\n

      From an IP address assigned to Italy (country code IT):

      curl -H 'Authorization: APIKEY ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx' \\\n     -H 'X-Forwarded-For: 109.112.34.56' \\\n     http://talker-api.127.0.0.1.nip.io:8000/gb/hello -i\n# HTTP/1.1 403 Forbidden\n
      curl -H 'Authorization: APIKEY ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx' \\\n     -H 'X-Forwarded-For: 109.112.34.56' \\\n     http://talker-api.127.0.0.1.nip.io:8000/it/hello -i\n# HTTP/1.1 200 OK\n
      "},{"location":"authorino/docs/user-guides/external-metadata/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete secret/api-key-1\nkubectl delete authconfig/talker-api-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/hello-world/","title":"User guide: Hello World","text":""},{"location":"authorino/docs/user-guides/hello-world/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant, you can skip step \u2778. You may already have Authorino installed and running as well. In this case, skip also step \u277a. If you even have your workload cluster configured, with sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, go straight to step \u277c.

      At step \u277c, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/hello-world/#create-the-namespace","title":"\u2776 Create the namespace","text":"
      kubectl create namespace hello-world\n# namespace/hello-world created\n
      "},{"location":"authorino/docs/user-guides/hello-world/#deploy-the-talker-api","title":"\u2777 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl -n hello-world apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n# deployment.apps/talker-api created\n# service/talker-api created\n
      "},{"location":"authorino/docs/user-guides/hello-world/#setup-envoy","title":"\u2778 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.1

      kubectl -n hello-world apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/hello-world/envoy-deploy.yaml\n# configmap/envoy created\n# deployment.apps/envoy created\n# service/envoy created\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl -n hello-world port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/hello-world/#consume-the-api-unprotected","title":"\u2779 Consume the API (unprotected)","text":"
      curl http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 200 OK\n
      "},{"location":"authorino/docs/user-guides/hello-world/#protect-the-api","title":"\u277a Protect the API","text":""},{"location":"authorino/docs/user-guides/hello-world/#install-the-authorino-operator","title":"Install the Authorino Operator","text":"
      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/hello-world/#deploy-authorino","title":"Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service2 that watches for AuthConfig resources in the hello-world namespace3, with TLS disabled4.

      kubectl -n hello-world apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/hello-world/authorino.yaml\n# authorino.operator.authorino.kuadrant.io/authorino created\n
      "},{"location":"authorino/docs/user-guides/hello-world/#consume-the-api-behind-envoy-and-authorino","title":"\u277b Consume the API behind Envoy and Authorino","text":"
      curl http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 404 Not Found\n# x-ext-auth-reason: Service not found\n

      Authorino does not know about the talker-api.127.0.0.1.nip.io host, hence the 404 Not Found. Let's teach Authorino about this host by applying an AuthConfig.

      "},{"location":"authorino/docs/user-guides/hello-world/#apply-the-authconfig","title":"\u277c Apply the AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced:

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl -n hello-world apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/hello-world/authconfig.yaml\n# authconfig.authorino.kuadrant.io/talker-api-protection created\n
      "},{"location":"authorino/docs/user-guides/hello-world/#consume-the-api-without-credentials","title":"\u277d Consume the API without credentials","text":"
      curl http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 401 Unauthorized\n# www-authenticate: APIKEY realm=\"api-clients\"\n# x-ext-auth-reason: credential not found\n
      "},{"location":"authorino/docs/user-guides/hello-world/#grant-access-to-the-api-with-a-tailor-made-security-scheme","title":"Grant access to the API with a tailor-made security scheme","text":"

      Check out other user guides for several use-cases of authentication and authorization, and the instructions to implement them using Authorino.

      A few examples of available ser guides:

      • Authentication with API keys
      • Authentication with JWTs and OpenID Connect Discovery
      • Authentication with Kubernetes tokens (TokenReview API)
      • Authorization with Open Policy Agent (OPA) Rego policies
      • Authorization with simple JSON pattern-matching rules (e.g. JWT claims)
      • Authorization with Kubernetes RBAC (SubjectAccessReview API)
      • Fetching auth metadata from external sources
      • Token normalization
      "},{"location":"authorino/docs/user-guides/hello-world/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the namespaces created in step 1 and 5:

      kubectl delete namespace hello-world\nkubectl delete namespace authorino-operator\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      2. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      3. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      4. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/host-override/","title":"Host override via context extension","text":"

      By default, Authorino uses the host information of the HTTP request (Attributes.Http.Host) to lookup for an indexed AuthConfig to be enforced1. The host info be overridden by supplying a host entry as a (per-route) context extension (Attributes.ContextExtensions), which takes precedence whenever present.

      Overriding the host attribute of the HTTP request can be useful to support use cases such as of path prefix-based lookup and wildcard subdomains lookup.

      \u26a0\ufe0f Important: This feature may not be available to users of Authorino via Kuadrant.

      In this guide:

      • Example of host override for path prefix-based lookup
      • Example of host override for wildcard subdomain lookup
      "},{"location":"authorino/docs/user-guides/host-override/#example-of-host-override-for-path-prefix-based-lookup","title":"Example of host override for path prefix-based lookup","text":"

      In this use case, 2 different APIs (i.e. Dogs API and Cats API) are served under the same base domain, and differentiated by the path prefix:

      • pets.com/dogs \u2192 Dogs API
      • pets.com/cats \u2192 Cats API

      Edit the Envoy config to extend the external authorization settings at the level of the routes, with the host value that will be favored by Authorino before the actual host attribute of the HTTP request:

      virtual_hosts:\n\n- name: pets-api\n  domains: ['pets.com']\n  routes:\n  - match:\n      prefix: /dogs\n    route:\n      cluster: dogs-api\n    typed_per_filter_config:\n      envoy.filters.http.ext_authz:\n        \\\"@type\\\": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute\n        check_settings:\n          context_extensions:\n            host: dogs.pets.com\n  - match:\n      prefix: /cats\n    route:\n      cluster: cats-api\n    typed_per_filter_config:\n      envoy.filters.http.ext_authz:\n        \\\"@type\\\": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute\n        check_settings:\n          context_extensions:\n            host: cats.pets.com\n

      Create the AuthConfig for the Pets API:

      apiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: dogs-api-protection\nspec:\n  hosts:\n\n  - dogs.pets.com\n\n  authentication: [...]\n

      Create the AuthConfig for the Cats API:

      apiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: cats-api-protection\nspec:\n  hosts:\n\n  - cats.pets.com\n\n  authentication: [...]\n

      Notice that the host subdomains dogs.pets.com and cats.pets.com are not really requested by the API consumers. Rather, users send requests to pets.com/dogs and pets.com/cats. When routing those requests, Envoy makes sure to inject the corresponding context extensions that will induce the right lookup in Authorino.

      "},{"location":"authorino/docs/user-guides/host-override/#example-of-host-override-for-wildcard-subdomain-lookup","title":"Example of host override for wildcard subdomain lookup","text":"

      In this use case, a single Pets API serves requests for any subdomain that matches *.pets.com, e.g.:

      • dogs.pets.com \u2192 Pets API
      • cats.pets.com \u2192 Pets API

      Edit the Envoy config to extend the external authorization settings at the level of the virtual host, with the host value that will be favored by Authorino before the actual host attribute of the HTTP request:

      virtual_hosts:\n\n- name: pets-api\n  domains: ['*.pets.com']\n  typed_per_filter_config:\n    envoy.filters.http.ext_authz:\n      \\\"@type\\\": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute\n      check_settings:\n        context_extensions:\n          host: pets.com\n  routes:\n  - match:\n      prefix: /\n    route:\n      cluster: pets-api\n

      The host context extension used above is any key that matches one of the hosts listed in the targeted AuthConfig.

      Create the AuthConfig for the Pets API:

      apiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: pets-api-protection\nspec:\n  hosts:\n\n  - pets.com\n\n  authentication: [...]\n

      Notice that requests to dogs.pets.com and to cats.pets.com are all routed by Envoy to the same API, with same external authorization configuration. in all the cases, Authorino will lookup for the indexed AuthConfig associated with pets.com. The same is valid for a request sent, e.g., to birds.pets.com.

      1. For further details about Authorino lookup of AuthConfig, check out Host lookup.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/http-basic-authentication/","title":"User guide: HTTP \"Basic\" Authentication (RFC 7235)","text":"

      Turn Authorino API key Secrets settings into HTTP basic auth.

      Authorino capabilities featured in this guide:
      • Identity verification & authentication \u2192 API key
      • Authorization \u2192 Pattern-matching authorization

      HTTP \"Basic\" Authentication (RFC 7235) is not recommended if you can afford other more secure methods such as OpenID Connect. To support legacy nonetheless it is sometimes necessary to implement it.

      In Authorino, HTTP \"Basic\" Authentication can be modeled leveraging the API key authentication feature (stored as Kubernetes Secrets with an api_key entry and labeled to match selectors specified in spec.identity.apiKey.selector of the AuthConfig).

      Check out as well the user guide about Authentication with API keys.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/http-basic-authentication/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/http-basic-authentication/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/http-basic-authentication/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/http-basic-authentication/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/http-basic-authentication/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/http-basic-authentication/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced.

      The config uses API Key secrets to store base64-encoded username:password HTTP \"Basic\" authentication credentials. The config also specifies an Access Control List (ACL) by which only user john is authorized to consume the /bye endpoint of the API.

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"http-basic-auth\":\n      apiKey:\n        selector:\n          matchLabels:\n            group: users\n      credentials:\n        authorizationHeader:\n          prefix: Basic\n  authorization:\n    \"acl\":\n      when:\n      - selector: context.request.http.path\n        operator: eq\n        value: /bye\n      patternMatching:\n        patterns:\n        - selector: context.request.http.headers.authorization.@extract:{\"pos\":1}|@base64:decode|@extract:{\"sep\":\":\"}\n          operator: eq\n          value: john\nEOF\n

      Check out the docs for information about the common feature JSON paths for reading from the Authorization JSON, including the description of the string modifiers @extract and @case used above. Check out as well the common feature Conditions about skipping parts of an AuthConfig in the auth pipeline based on context.

      "},{"location":"authorino/docs/user-guides/http-basic-authentication/#create-user-credentials","title":"\u277b Create user credentials","text":"

      To create credentials for HTTP \"Basic\" Authentication, store each username:password, base64-encoded, in the api_key value of the Kubernetes Secret resources. E.g.:

      printf \"john:ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx\" | base64\n# am9objpuZHlCenJlVXpGNHpxRFFzcVNQTUhrUmhyaUVPdGNSeA==\n

      Create credentials for user John:

      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: basic-auth-1\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    group: users\nstringData:\n  api_key: am9objpuZHlCenJlVXpGNHpxRFFzcVNQTUhrUmhyaUVPdGNSeA== # john:ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx\ntype: Opaque\nEOF\n

      Create credentials for user Jane:

      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: basic-auth-2\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    group: users\nstringData:\n  api_key: amFuZTpkTnNScnNhcHkwbk5Dd210NTM3ZkhGcHl4MGNCc0xFcA== # jane:dNsRrsapy0nNCwmt537fHFpyx0cBsLEp\ntype: Opaque\nEOF\n
      "},{"location":"authorino/docs/user-guides/http-basic-authentication/#consume-the-api","title":"\u277c Consume the API","text":"

      As John (authorized in the ACL):

      curl -u john:ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx http://talker-api.127.0.0.1.nip.io:8000/hello\n# HTTP/1.1 200 OK\n
      curl -u john:ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx http://talker-api.127.0.0.1.nip.io:8000/bye\n# HTTP/1.1 200 OK\n

      As Jane (NOT authorized in the ACL):

      curl -u jane:dNsRrsapy0nNCwmt537fHFpyx0cBsLEp http://talker-api.127.0.0.1.nip.io:8000/hello\n# HTTP/1.1 200 OK\n
      curl -u jane:dNsRrsapy0nNCwmt537fHFpyx0cBsLEp http://talker-api.127.0.0.1.nip.io:8000/bye -i\n# HTTP/1.1 403 Forbidden\n

      With an invalid user/password:

      curl -u unknown:invalid http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 401 Unauthorized\n# www-authenticate: Basic realm=\"http-basic-auth\"\n
      "},{"location":"authorino/docs/user-guides/http-basic-authentication/#revoke-access-to-the-api","title":"\u277d Revoke access to the API","text":"
      kubectl delete secret/basic-auth-1\n
      "},{"location":"authorino/docs/user-guides/http-basic-authentication/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete secret/basic-auth-1\nkubectl delete secret/basic-auth-2\nkubectl delete authconfig/talker-api-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/injecting-data/","title":"User guide: Injecting data in the request","text":"

      Inject HTTP headers with serialized JSON content.

      Authorino capabilities featured in this guide:
      • Dynamic response \u2192 JSON injection
      • Identity verification & authentication \u2192 API key

      Inject serialized custom JSON objects as HTTP request headers. Values can be static or fetched from the Authorization JSON.

      Check out as well the user guide about Authentication with API keys.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/injecting-data/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/injecting-data/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/injecting-data/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/injecting-data/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/injecting-data/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/injecting-data/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced.

      The following defines a JSON object to be injected as an added HTTP header into the request, named after the response config x-ext-auth-data. The object includes 3 properties:

      1. a static value authorized: true;
      2. a dynamic value request-time, from Envoy-supplied contextual data present in the Authorization JSON; and
      3. a greeting message geeting-message that interpolates a dynamic value read from an annotation of the Kubernetes Secret resource that represents the API key used to authenticate into a static string.
      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"friends\":\n      apiKey:\n        selector:\n          matchLabels:\n            group: friends\n      credentials:\n        authorizationHeader:\n          prefix: APIKEY\n  response:\n    success:\n      headers:\n        \"x-ext-auth-data\":\n          json:\n            properties:\n              \"authorized\":\n                value: true\n              \"request-time\":\n                selector: context.request.time.seconds\n              \"greeting-message\":\n                selector: Hello, {auth.identity.metadata.annotations.auth-data\\/name}!\nEOF\n

      Check out the docs for information about the common feature JSON paths for reading from the Authorization JSON.

      "},{"location":"authorino/docs/user-guides/injecting-data/#create-an-api-key","title":"\u277b Create an API key","text":"
      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: api-key-1\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    group: friends\n  annotations:\n    auth-data/name: Rita\nstringData:\n  api_key: ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx\ntype: Opaque\nEOF\n
      "},{"location":"authorino/docs/user-guides/injecting-data/#consume-the-api","title":"\u277c Consume the API","text":"
      curl -H 'Authorization: APIKEY ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx' http://talker-api.127.0.0.1.nip.io:8000/hello\n# {\n#   \"method\": \"GET\",\n#   \"path\": \"/hello\",\n#   \"query_string\": null,\n#   \"body\": \"\",\n#   \"headers\": {\n#     \u2026\n#     \"X-Ext-Auth-Data\": \"{\\\"authorized\\\":true,\\\"greeting-message\\\":\\\"Hello, Rita!\\\",\\\"request-time\\\":1637954644}\",\n#   },\n#   \u2026\n# }\n
      "},{"location":"authorino/docs/user-guides/injecting-data/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete secret/api-key-1\nkubectl delete authconfig/talker-api-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/json-pattern-matching-authorization/","title":"User guide: Simple pattern-matching authorization policies","text":"

      Write simple authorization rules based on JSON patterns matched against Authorino's Authorization JSON; check contextual information of the request, validate JWT claims, cross metadata fetched from external sources, etc.

      Authorino capabilities featured in this guide:
      • Authorization \u2192 Pattern-matching authorization
      • Identity verification & authentication \u2192 JWT verification

      Authorino provides a built-in authorization module to check simple pattern-matching rules against the Authorization JSON. This is an alternative to OPA when all you want is to check for some simple rules, without complex logics, such as match the value of a JWT claim.

      Check out as well the user guide about OpenID Connect Discovery and authentication with JWTs.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/json-pattern-matching-authorization/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)
      • Identity Provider (IdP) that implements OpenID Connect authentication and OpenID Connect Discovery (e.g. Keycloak)
      • jq, to extract parts of JSON responses

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      Deploy the identity provider and authentication server by executing the command below. For the examples in this guide, we are going to use a Keycloak server preloaded with all required realm settings.

      kubectl create namespace keycloak\nkubectl -n keycloak apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/keycloak/keycloak-deploy.yaml\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/json-pattern-matching-authorization/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/json-pattern-matching-authorization/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/json-pattern-matching-authorization/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/json-pattern-matching-authorization/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/json-pattern-matching-authorization/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced.

      The email-verified-only authorization policy ensures that users consuming the API from a given network (IP range 192.168.1/24) must have their emails verified.

      The email_verified claim is a property of the identity added to the JWT by the OpenID Connect issuer.

      The implementation relies on the X-Forwarded-For HTTP header to read the client's IP address.

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"keycloak-kuadrant-realm\":\n      jwt:\n        issuerUrl: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\n  authorization:\n    \"email-verified-only\":\n      when:\n      - selector: \"context.request.http.headers.x-forwarded-for.@extract:{\\\"sep\\\": \\\",\\\"}\"\n        operator: matches\n        value: 192\\\\.168\\\\.1\\\\.\\\\d+\n      patternMatching:\n        patterns:\n        - selector: auth.identity.email_verified\n          operator: eq\n          value: \"true\"\nEOF\n

      Check out the docs for information about semantics and operators supported by the JSON pattern-matching authorization feature, as well the common feature JSON paths for reading from the Authorization JSON, including the description of the string modifier @extract used above. Check out as well the common feature Conditions about skipping parts of an AuthConfig in the auth pipeline based on context.

      "},{"location":"authorino/docs/user-guides/json-pattern-matching-authorization/#obtain-an-access-token-and-consume-the-api","title":"\u277b Obtain an access token and consume the API","text":""},{"location":"authorino/docs/user-guides/json-pattern-matching-authorization/#obtain-an-access-token-and-consume-the-api-as-jane-email-verified","title":"Obtain an access token and consume the API as Jane (email verified)","text":"

      Obtain an access token with the Keycloak server for Jane:

      The AuthConfig deployed in the previous step is suitable for validating access tokens requested inside the cluster. This is because Keycloak's iss claim added to the JWTs matches always the host used to request the token and Authorino will later try to match this host to the host that provides the OpenID Connect configuration.

      Obtain an access token from within the cluster for the user Jane, whose e-mail has been verified:

      ACCESS_TOKEN=$(kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=demo' -d 'username=jane' -d 'password=p' -d 'scope=openid' | jq -r .access_token)\n

      If your Keycloak server is reachable from outside the cluster, feel free to obtain the token directly. Make sure the host name set in the OIDC issuer endpoint in the AuthConfig matches the one used to obtain the token and is as well reachable from within the cluster.

      As Jane, consume the API outside the area where the policy applies:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n     -H 'X-Forwarded-For: 123.45.6.78' \\\n     http://talker-api.127.0.0.1.nip.io:8000/hello\n# HTTP/1.1 200 OK\n

      As Jane, consume the API inside the area where the policy applies:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n     -H 'X-Forwarded-For: 192.168.1.10' \\\n     http://talker-api.127.0.0.1.nip.io:8000/hello\n# HTTP/1.1 200 OK\n
      "},{"location":"authorino/docs/user-guides/json-pattern-matching-authorization/#obtain-an-access-token-and-consume-the-api-as-peter-email-not-verified","title":"Obtain an access token and consume the API as Peter (email NOT verified)","text":"

      Obtain an access token with the Keycloak server for Peter:

      ACCESS_TOKEN=$(kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=demo' -d 'username=peter' -d 'password=p' -d 'scope=openid' | jq -r .access_token)\n

      As Peter, consume the API outside the area where the policy applies:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n     -H 'X-Forwarded-For: 123.45.6.78' \\\n     http://talker-api.127.0.0.1.nip.io:8000/hello\n# HTTP/1.1 200 OK\n

      As Peter, consume the API inside the area where the policy applies:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n     -H 'X-Forwarded-For: 192.168.1.10' \\\n     http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 403 Forbidden\n# x-ext-auth-reason: Unauthorized\n
      "},{"location":"authorino/docs/user-guides/json-pattern-matching-authorization/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete authconfig/talker-api-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete namespace keycloak\nkubectl delete authorino/authorino\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/keycloak-authorization-services/","title":"User guide: Authorization with Keycloak Authorization Services","text":"

      Keycloak provides a powerful set of tools (REST endpoints and administrative UIs), also known as Keycloak Authorization Services, to manage and enforce authorization, workflows for multiple access control mechanisms, including discretionary user access control and user-managed permissions.

      This user guide is an example of how to use Authorino as an adapter to Keycloak Authorization Services while still relying on the reverse-proxy integration pattern, thus not involving importing an authorization library nor rebuilding the application's code.

      Authorino capabilities featured in this guide:
      • Identity verification & authentication \u2192 JWT verification
      • Authorization \u2192 Open Policy Agent (OPA) Rego policies

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/keycloak-authorization-services/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)
      • Keycloak server
      • jq, to extract parts of JSON responses

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      Deploy the identity provider and authentication server by executing the command below. For the examples in this guide, we are going to use a Keycloak server preloaded with all required realm settings.

      kubectl create namespace keycloak\nkubectl -n keycloak apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/keycloak/keycloak-deploy.yaml\n

      Forward local requests to Keycloak running inside the cluster (if using Kind):

      kubectl -n keycloak port-forward deployment/keycloak 8080:8080 2>&1 >/dev/null &\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/keycloak-authorization-services/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/keycloak-authorization-services/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/keycloak-authorization-services/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/keycloak-authorization-services/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/keycloak-authorization-services/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced.

      In this example, Authorino will accept access tokens (JWTs) issued by the Keycloak server. These JWTs can be either normal Keycloak ID tokens or Requesting Party Tokens (RPT).

      RPTs include claims about the permissions of the user regarding protected resources and scopes associated with a Keycloak authorization client that the user can access.

      When the supplied access token is an RPT, Authorino will just validate whether the user's granted permissions present in the token include the requested resource ID (translated from the path) and scope (inferred from the HTTP method). If the token does not contain a permissions claim (i.e. it is not an RPT), Authorino will negotiate a User-Managed Access (UMA) ticket on behalf of the user and try to obtain an RPT on that UMA ticket.

      In cases of asynchronous user-managed permission control, the first request to the API using a normal Keycloak ID token is denied by Authorino. The user that owns the resource acknowledges the access request in the Keycloak UI. If access is granted, the new permissions will be reflected in subsequent RPTs obtained by Authorino on behalf of the requesting party.

      Whenever an RPT with proper permissions is obtained by Authorino, the RPT is supplied back to the API consumer, so it can be used in subsequent requests thus skipping new negotiations of UMA tickets.

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"keycloak-kuadrant-realm\":\n      jwt:\n        issuerUrl: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\n  authorization:\n    \"uma\":\n      opa:\n        rego: |\n          pat := http.send({\"url\":\"http://talker-api:523b92b6-625d-4e1e-a313-77e7a8ae4e88@keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token\",\"method\": \"post\",\"headers\":{\"Content-Type\":\"application/x-www-form-urlencoded\"},\"raw_body\":\"grant_type=client_credentials\"}).body.access_token\n          resource_id := http.send({\"url\":concat(\"\",[\"http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/authz/protection/resource_set?uri=\",input.context.request.http.path]),\"method\":\"get\",\"headers\":{\"Authorization\":concat(\" \",[\"Bearer \",pat])}}).body[0]\n          scope := lower(input.context.request.http.method)\n          access_token := trim_prefix(input.context.request.http.headers.authorization, \"Bearer \")\n\n          default rpt = \"\"\n          rpt = access_token { object.get(input.auth.identity, \"authorization\", {}).permissions }\n          else = rpt_str {\n            ticket := http.send({\"url\":\"http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/authz/protection/permission\",\"method\":\"post\",\"headers\":{\"Authorization\":concat(\" \",[\"Bearer \",pat]),\"Content-Type\":\"application/json\"},\"raw_body\":concat(\"\",[\"[{\\\"resource_id\\\":\\\"\",resource_id,\"\\\",\\\"resource_scopes\\\":[\\\"\",scope,\"\\\"]}]\"])}).body.ticket\n            rpt_str := object.get(http.send({\"url\":\"http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token\",\"method\":\"post\",\"headers\":{\"Authorization\":concat(\" \",[\"Bearer \",access_token]),\"Content-Type\":\"application/x-www-form-urlencoded\"},\"raw_body\":concat(\"\",[\"grant_type=urn:ietf:params:oauth:grant-type:uma-ticket&ticket=\",ticket,\"&submit_request=true\"])}).body, \"access_token\", \"\")\n          }\n\n          allow {\n            permissions := object.get(io.jwt.decode(rpt)[1], \"authorization\", { \"permissions\": [] }).permissions\n            permissions[i]\n            permissions[i].rsid = resource_id\n            permissions[i].scopes[_] = scope\n          }\n        allValues: true\n  response:\n    success:\n      headers:\n        \"x-keycloak\":\n          when:\n\n          - selector: auth.identity.authorization.permissions\n            operator: eq\n            value: \"\"\n          json:\n            properties:\n              \"rpt\":\n                selector: auth.authorization.uma.rpt\nEOF\n
      "},{"location":"authorino/docs/user-guides/keycloak-authorization-services/#obtain-an-access-token-with-the-keycloak-server","title":"\u277b Obtain an access token with the Keycloak server","text":"

      The AuthConfig deployed in the previous step is suitable for validating access tokens requested inside the cluster. This is because Keycloak's iss claim added to the JWTs matches always the host used to request the token and Authorino will later try to match this host to the host that provides the OpenID Connect configuration.

      Obtain an access token from within the cluster for user Jane:

      ACCESS_TOKEN=$(kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=demo' -d 'username=jane' -d 'password=p' -d 'scope=openid' | jq -r .access_token)\n

      If your Keycloak server is reachable from outside the cluster, feel free to obtain the token directly. Make sure the host name set in the OIDC issuer endpoint in the AuthConfig matches the one used to obtain the token and is as well reachable from within the cluster.

      "},{"location":"authorino/docs/user-guides/keycloak-authorization-services/#consume-the-api","title":"\u277c Consume the API","text":"

      As Jane, try to send a GET request to the protected resource /greetings/1, owned by user John.

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/greetings/1 -i\n# HTTP/1.1 403 Forbidden\n

      As John, log in to http://localhost:8080/realms/kuadrant/account in the web browser (username: john / password: p), and grant access to the resource greeting-1 for Jane. A pending permission request by Jane shall exist in the list of John's Resources.

      As Jane, try to consume the protected resource /greetings/1 again:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/greetings/1 -i\n# HTTP/1.1 200 OK\n#\n# {\u2026\n#   \"headers\": {\u2026\n#     \"X-Keycloak\": \"{\\\"rpt\\\":\\\"<RPT>\", \u2026\n

      Copy the RPT from the response and repeat the request now using the RPT to authenticate:

      curl -H \"Authorization: Bearer <RPT>\" http://talker-api.127.0.0.1.nip.io:8000/greetings/1 -i\n# HTTP/1.1 200 OK\n
      "},{"location":"authorino/docs/user-guides/keycloak-authorization-services/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete authconfig/talker-api-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\nkubectl delete namespace keycloak\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/kubernetes-subjectaccessreview/","title":"User guide: Kubernetes RBAC for service authorization (SubjectAccessReview API)","text":"

      Manage permissions in the Kubernetes RBAC and let Authorino to check them in request-time with the authorization system of the cluster.

      Authorino capabilities featured in this guide:
      • Authorization \u2192 Kubernetes SubjectAccessReview
      • Identity verification & authentication \u2192 Kubernetes TokenReview

      Authorino can delegate authorization decision to the Kubernetes authorization system, allowing permissions to be stored and managed using the Kubernetes Role-Based Access Control (RBAC) for example. The feature is based on the SubjectAccessReview API and can be used for resourceAttributes (parameters defined in the AuthConfig) or nonResourceAttributes (inferring HTTP path and verb from the original request).

      Check out as well the user guide about Authentication with Kubernetes tokens (TokenReview API).

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/kubernetes-subjectaccessreview/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC) and to create TokenRequests (to consume the protected service from outside the cluster)
      • jq

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/kubernetes-subjectaccessreview/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/kubernetes-subjectaccessreview/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/kubernetes-subjectaccessreview/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/kubernetes-subjectaccessreview/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/kubernetes-subjectaccessreview/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced.

      The AuthConfig below sets all Kubernetes service accounts as trusted users of the API, and relies on the Kubernetes RBAC to enforce authorization using Kubernetes SubjectAccessReview API for non-resource endpoints:

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  - envoy.default.svc.cluster.local\n  authentication:\n    \"service-accounts\":\n      kubernetesTokenReview:\n        audiences: [\"https://kubernetes.default.svc.cluster.local\"]\n  authorization:\n    \"k8s-rbac\":\n      kubernetesSubjectAccessReview:\n        user:\n          selector: auth.identity.user.username\nEOF\n

      Check out the spec for the Authorino Kubernetes SubjectAccessReview authorization feature, for resource attributes permission checks where SubjectAccessReviews issued by Authorino are modeled in terms of common attributes of operations on Kubernetes resources (namespace, API group, kind, name, subresource, verb).

      "},{"location":"authorino/docs/user-guides/kubernetes-subjectaccessreview/#create-roles-associated-with-endpoints-of-the-api","title":"\u277b Create roles associated with endpoints of the API","text":"

      Because the k8s-rbac policy defined in the AuthConfig in the previous step is for non-resource access review requests, the corresponding roles and role bindings have to be defined at cluster scope.

      Create a talker-api-greeter role whose users and service accounts bound to this role can consume the non-resource endpoints POST /hello and POST /hi of the API:

      kubectl apply -f -<<EOF\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: talker-api-greeter\nrules:\n\n- nonResourceURLs: [\"/hello\"]\n  verbs: [\"post\"]\n- nonResourceURLs: [\"/hi\"]\n  verbs: [\"post\"]\nEOF\n

      Create a talker-api-speaker role whose users and service accounts bound to this role can consume the non-resource endpoints POST /say/* of the API:

      kubectl apply -f -<<EOF\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: talker-api-speaker\nrules:\n\n- nonResourceURLs: [\"/say/*\"]\n  verbs: [\"post\"]\nEOF\n
      "},{"location":"authorino/docs/user-guides/kubernetes-subjectaccessreview/#create-the-serviceaccounts-and-permissions-to-consume-the-api","title":"\u277c Create the ServiceAccounts and permissions to consume the API","text":"

      Create service accounts api-consumer-1 and api-consumer-2:

      kubectl apply -f -<<EOF\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: api-consumer-1\nEOF\n
      kubectl apply -f -<<EOF\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: api-consumer-2\nEOF\n

      Bind both service accounts to the talker-api-greeter role:

      kubectl apply -f -<<EOF\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: talker-api-greeter-rolebinding\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: talker-api-greeter\nsubjects:\n\n- kind: ServiceAccount\n  name: api-consumer-1\n  namespace: default\n- kind: ServiceAccount\n  name: api-consumer-2\n  namespace: default\nEOF\n

      Bind service account api-consumer-1 to the talker-api-speaker role:

      kubectl apply -f -<<EOF\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: talker-api-speaker-rolebinding\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: talker-api-speaker\nsubjects:\n\n- kind: ServiceAccount\n  name: api-consumer-1\n  namespace: default\nEOF\n
      "},{"location":"authorino/docs/user-guides/kubernetes-subjectaccessreview/#consume-the-api","title":"\u277d Consume the API","text":"

      Run a pod that consumes one of the greeting endpoints of the API from inside the cluster, as service account api-consumer-1, bound to the talker-api-greeter and talker-api-speaker cluster roles in the Kubernetes RBAC:

      kubectl run greeter --attach --rm --restart=Never -q --image=quay.io/kuadrant/authorino-examples:api-consumer --overrides='{\n  \"apiVersion\": \"v1\",\n  \"spec\": {\n    \"containers\": [{\n      \"name\": \"api-consumer\", \"image\": \"quay.io/kuadrant/authorino-examples:api-consumer\", \"command\": [\"./run\"],\n      \"args\":[\"--endpoint=http://envoy.default.svc.cluster.local:8000/hi\",\"--method=POST\",\"--interval=0\",\"--token-path=/var/run/secrets/tokens/api-token\"],\n      \"volumeMounts\": [{\"mountPath\": \"/var/run/secrets/tokens\",\"name\": \"access-token\"}]\n    }],\n    \"serviceAccountName\": \"api-consumer-1\",\n    \"volumes\": [{\"name\": \"access-token\",\"projected\": {\"sources\": [{\"serviceAccountToken\": {\"path\": \"api-token\",\"expirationSeconds\": 7200}}]}}]\n  }\n}' -- sh\n# Sending...\n# 200\n

      Run a pod that sends a POST request to /say/blah from within the cluster, as service account api-consumer-1:

      kubectl run speaker --attach --rm --restart=Never -q --image=quay.io/kuadrant/authorino-examples:api-consumer --overrides='{\n  \"apiVersion\": \"v1\",\n  \"spec\": {\n    \"containers\": [{\n      \"name\": \"api-consumer\", \"image\": \"quay.io/kuadrant/authorino-examples:api-consumer\", \"command\": [\"./run\"],\n      \"args\":[\"--endpoint=http://envoy.default.svc.cluster.local:8000/say/blah\",\"--method=POST\",\"--interval=0\",\"--token-path=/var/run/secrets/tokens/api-token\"],\n      \"volumeMounts\": [{\"mountPath\": \"/var/run/secrets/tokens\",\"name\": \"access-token\"}]\n    }],\n    \"serviceAccountName\": \"api-consumer-1\",\n    \"volumes\": [{\"name\": \"access-token\",\"projected\": {\"sources\": [{\"serviceAccountToken\": {\"path\": \"api-token\",\"expirationSeconds\": 7200}}]}}]\n  }\n}' -- sh\n# Sending...\n# 200\n

      Run a pod that sends a POST request to /say/blah from within the cluster, as service account api-consumer-2, bound only to the talker-api-greeter cluster role in the Kubernetes RBAC:

      kubectl run speaker --attach --rm --restart=Never -q --image=quay.io/kuadrant/authorino-examples:api-consumer --overrides='{\n  \"apiVersion\": \"v1\",\n  \"spec\": {\n    \"containers\": [{\n      \"name\": \"api-consumer\", \"image\": \"quay.io/kuadrant/authorino-examples:api-consumer\", \"command\": [\"./run\"],\n      \"args\":[\"--endpoint=http://envoy.default.svc.cluster.local:8000/say/blah\",\"--method=POST\",\"--interval=0\",\"--token-path=/var/run/secrets/tokens/api-token\"],\n      \"volumeMounts\": [{\"mountPath\": \"/var/run/secrets/tokens\",\"name\": \"access-token\"}]\n    }],\n    \"serviceAccountName\": \"api-consumer-2\",\n    \"volumes\": [{\"name\": \"access-token\",\"projected\": {\"sources\": [{\"serviceAccountToken\": {\"path\": \"api-token\",\"expirationSeconds\": 7200}}]}}]\n  }\n}' -- sh\n# Sending...\n# 403\n
      Extra: consume the API as service account api-consumer-2 from outside the cluster

      Obtain a short-lived access token for service account api-consumer-2, bound to the talker-api-greeter cluster role in the Kubernetes RBAC, using the Kubernetes TokenRequest API:

      export ACCESS_TOKEN=$(echo '{ \"apiVersion\": \"authentication.k8s.io/v1\", \"kind\": \"TokenRequest\", \"spec\": { \"expirationSeconds\": 600 } }' | kubectl create --raw /api/v1/namespaces/default/serviceaccounts/api-consumer-2/token -f - | jq -r .status.token)\n

      Consume the API as api-consumer-2 from outside the cluster:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" -X POST http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 200 OK\n
      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" -X POST http://talker-api.127.0.0.1.nip.io:8000/say/something -i\n# HTTP/1.1 403 Forbidden\n
      "},{"location":"authorino/docs/user-guides/kubernetes-subjectaccessreview/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete serviceaccount/api-consumer-1\nkubectl delete serviceaccount/api-consumer-2\nkubectl delete clusterrolebinding/talker-api-greeter-rolebinding\nkubectl delete clusterrolebinding/talker-api-speaker-rolebinding\nkubectl delete clusterrole/talker-api-greeter\nkubectl delete clusterrole/talker-api-speaker\nkubectl delete authconfig/talker-api-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/kubernetes-tokenreview/","title":"User guide: Authentication with Kubernetes tokens (TokenReview API)","text":"

      Validate Kubernetes Service Account tokens to authenticate requests to your protected hosts.

      Authorino capabilities featured in this guide:
      • Identity verification & authentication \u2192 Kubernetes TokenReview

      Authorino can verify Kubernetes-valid access tokens (using Kubernetes TokenReview API).

      These tokens can be either ServiceAccount tokens or any valid user access tokens issued to users of the Kubernetes server API.

      The audiences claim of the token must include the requested host and port of the protected API (default), or all audiences specified in spec.identity.kubernetes.audiences of the AuthConfig.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/kubernetes-tokenreview/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC) and to create TokenRequests (to consume the protected service from outside the cluster)
      • jq

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/kubernetes-tokenreview/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/kubernetes-tokenreview/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/kubernetes-tokenreview/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/kubernetes-tokenreview/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/kubernetes-tokenreview/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced:

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  - envoy.default.svc.cluster.local\n  authentication:\n    \"authorized-service-accounts\":\n      kubernetesTokenReview:\n        audiences:\n        - talker-api\nEOF\n
      "},{"location":"authorino/docs/user-guides/kubernetes-tokenreview/#consume-the-api-protected-by-authorino","title":"\u277b Consume the API protected by Authorino","text":""},{"location":"authorino/docs/user-guides/kubernetes-tokenreview/#create-a-serviceaccount","title":"Create a ServiceAccount","text":"

      Create a Kubernetes ServiceAccount to identify the consumer application that will send requests to the protected API:

      kubectl apply -f -<<EOF\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: api-consumer-1\nEOF\n
      "},{"location":"authorino/docs/user-guides/kubernetes-tokenreview/#consume-the-api-from-outside-the-cluster","title":"Consume the API from outside the cluster","text":"

      Obtain a short-lived access token for the api-consumer-1 service account:

      export ACCESS_TOKEN=$(echo '{ \"apiVersion\": \"authentication.k8s.io/v1\", \"kind\": \"TokenRequest\", \"spec\": { \"audiences\": [\"talker-api\"], \"expirationSeconds\": 600 } }' | kubectl create --raw /api/v1/namespaces/default/serviceaccounts/api-consumer-1/token -f - | jq -r .status.token)\n

      Consume the API with a valid Kubernetes token:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 200 OK\n

      Consume the API with the Kubernetes token expired (10 minutes):

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 401 Unauthorized\n# www-authenticate: Bearer realm=\"authorized-service-accounts\"\n# x-ext-auth-reason: Not authenticated\n
      "},{"location":"authorino/docs/user-guides/kubernetes-tokenreview/#consume-the-api-from-inside-the-cluster","title":"Consume the API from inside the cluster","text":"

      Deploy an application that consumes an endpoint of the Talker API, in a loop, every 10 seconds. The application uses a short-lived service account token mounted inside the container using Kubernetes Service Account Token Volume Projection to authenticate.

      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Pod\nmetadata:\n  name: api-consumer\nspec:\n  containers:\n\n  - name: api-consumer\n    image: quay.io/kuadrant/authorino-examples:api-consumer\n    command: [\"./run\"]\n    args:\n      - --endpoint=http://envoy.default.svc.cluster.local:8000/hello\n      - --token-path=/var/run/secrets/tokens/api-token\n      - --interval=10\n    volumeMounts:\n    - mountPath: /var/run/secrets/tokens\n      name: talker-api-access-token\n  serviceAccountName: api-consumer-1\n  volumes:\n  - name: talker-api-access-token\n    projected:\n      sources:\n      - serviceAccountToken:\n          path: api-token\n          expirationSeconds: 7200\n          audience: talker-api\nEOF\n

      Check the logs of api-consumer:

      kubectl logs -f api-consumer\n# Sending...\n# 200\n# 200\n# 200\n# 200\n# ...\n
      "},{"location":"authorino/docs/user-guides/kubernetes-tokenreview/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete pod/api-consumer\nkubectl delete serviceaccount/api-consumer-1\nkubectl delete authconfig/talker-api-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/mtls-authentication/","title":"User guide: Authentication with X.509 certificates and Mutual Transport Layer Security (mTLS)","text":"

      Verify client X.509 certificates against trusted root CAs stored in Kubernetes Secrets to authenticate access to APIs protected with Authorino.

      Authorino capabilities featured in this guide:
      • Identity verification & authentication \u2192 X.509 client certificate authentication
      • Authorization \u2192 Pattern-matching authorization

      Authorino can verify x509 certificates presented by clients for authentication on the request to the protected APIs, at application level.

      Trusted root Certificate Authorities (CA) are stored as Kubernetes kubernetes.io/tls Secrets labeled according to selectors specified in the AuthConfig, watched and cached by Authorino.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/mtls-authentication/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277b.

      At step \u277b, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/mtls-authentication/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/mtls-authentication/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following commands will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS enabled3.

      Create the TLS certificates for the Authorino service:

      curl -sSL https://raw.githubusercontent.com/Kuadrant/authorino/main/deploy/certs.yaml | sed \"s/\\$(AUTHORINO_INSTANCE)/authorino/g;s/\\$(NAMESPACE)/default/g\" | kubectl apply -f -\n

      Request the Authorino instance:

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      certSecretRef:\n        name: authorino-server-cert\n  oidcServer:\n    tls:\n      certSecretRef:\n        name: authorino-oidc-server-cert\nEOF\n
      "},{"location":"authorino/docs/user-guides/mtls-authentication/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/mtls-authentication/#create-a-ca","title":"\u2779 Create a CA","text":"

      Create a CA (Certificate Authority) certificate to issue the client certificates that will be used to authenticate clients that send requests to the Talker API:

      openssl req -x509 -sha512 -nodes \\\n  -days 365 \\\n  -newkey rsa:4096 \\\n  -subj \"/CN=talker-api-ca\" \\\n  -addext basicConstraints=CA:TRUE \\\n  -addext keyUsage=digitalSignature,keyCertSign \\\n  -keyout /tmp/ca.key \\\n  -out /tmp/ca.crt\n

      Store the CA cert in a Kubernetes Secret, labeled to be discovered by Authorino and to be mounted in the file system of the Envoy container:

      kubectl create secret tls talker-api-ca --cert=/tmp/ca.crt --key=/tmp/ca.key\nkubectl label secret talker-api-ca authorino.kuadrant.io/managed-by=authorino app=talker-api\n

      Prepare an extension file for the client certificate signing requests:

      cat > /tmp/x509v3.ext << EOF\nauthorityKeyIdentifier=keyid,issuer\nbasicConstraints=CA:FALSE\nkeyUsage=digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment\nextendedKeyUsage=clientAuth\nEOF\n
      "},{"location":"authorino/docs/user-guides/mtls-authentication/#setup-envoy","title":"\u277a Setup Envoy","text":"

      The following command deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f -<<EOF\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  labels:\n    app: envoy\n  name: envoy\ndata:\n  envoy.yaml: |\n    static_resources:\n      listeners:\n\n      - address:\n          socket_address:\n            address: 0.0.0.0\n            port_value: 8443\n        filter_chains:\n        - transport_socket:\n            name: envoy.transport_sockets.tls\n            typed_config:\n              \"@type\": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext\n              common_tls_context:\n                tls_certificates:\n                - certificate_chain: {filename: \"/etc/ssl/certs/talker-api/tls.crt\"}\n                  private_key: {filename: \"/etc/ssl/certs/talker-api/tls.key\"}\n                validation_context:\n                  trusted_ca:\n                    filename: /etc/ssl/certs/talker-api/tls.crt\n          filters:\n          - name: envoy.http_connection_manager\n            typed_config:\n              \"@type\": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager\n              stat_prefix: local\n              route_config:\n                name: local_route\n                virtual_hosts:\n                - name: local_service\n                  domains: ['*']\n                  routes:\n                  - match: { prefix: / }\n                    route: { cluster: talker-api }\n              http_filters:\n              - name: envoy.filters.http.ext_authz\n                typed_config:\n                  \"@type\": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthz\n                  transport_api_version: V3\n                  failure_mode_allow: false\n                  include_peer_certificate: true\n                  grpc_service:\n                    envoy_grpc: { cluster_name: authorino }\n                    timeout: 1s\n              - name: envoy.filters.http.router\n                typed_config: {}\n              use_remote_address: true\n      clusters:\n      - name: authorino\n        connect_timeout: 0.25s\n        type: strict_dns\n        lb_policy: round_robin\n        http2_protocol_options: {}\n        load_assignment:\n          cluster_name: authorino\n          endpoints:\n          - lb_endpoints:\n            - endpoint:\n                address:\n                  socket_address:\n                    address: authorino-authorino-authorization\n                    port_value: 50051\n        transport_socket:\n          name: envoy.transport_sockets.tls\n          typed_config:\n            \"@type\": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext\n            common_tls_context:\n              validation_context:\n                trusted_ca:\n                  filename: /etc/ssl/certs/authorino-ca-cert.crt\n      - name: talker-api\n        connect_timeout: 0.25s\n        type: strict_dns\n        lb_policy: round_robin\n        load_assignment:\n          cluster_name: talker-api\n          endpoints:\n          - lb_endpoints:\n            - endpoint:\n                address:\n                  socket_address:\n                    address: talker-api\n                    port_value: 3000\n    admin:\n      access_log_path: \"/tmp/admin_access.log\"\n      address:\n        socket_address:\n          address: 0.0.0.0\n          port_value: 8001\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app: envoy\n  name: envoy\nspec:\n  selector:\n    matchLabels:\n      app: envoy\n  template:\n    metadata:\n      labels:\n        app: envoy\n    spec:\n      containers:\n      - args:\n        - --config-path /usr/local/etc/envoy/envoy.yaml\n        - --service-cluster front-proxy\n        - --log-level info\n        - --component-log-level filter:trace,http:debug,router:debug\n        command:\n        - /usr/local/bin/envoy\n        image: envoyproxy/envoy:v1.19-latest\n        name: envoy\n        ports:\n        - containerPort: 8443\n          name: web\n        - containerPort: 8001\n          name: admin\n        volumeMounts:\n        - mountPath: /usr/local/etc/envoy\n          name: config\n          readOnly: true\n        - mountPath: /etc/ssl/certs/authorino-ca-cert.crt\n          name: authorino-ca-cert\n          readOnly: true\n          subPath: ca.crt\n        - mountPath: /etc/ssl/certs/talker-api\n          name: talker-api-ca\n          readOnly: true\n      volumes:\n      - configMap:\n          items:\n          - key: envoy.yaml\n            path: envoy.yaml\n          name: envoy\n        name: config\n      - name: authorino-ca-cert\n        secret:\n          defaultMode: 420\n          secretName: authorino-ca-cert\n      - name: talker-api-ca\n        secret:\n          defaultMode: 420\n          secretName: talker-api-ca\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: envoy\nspec:\n  selector:\n    app: envoy\n  ports:\n  - name: web\n    port: 8443\n    protocol: TCP\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: ingress-wildcard-host\nspec:\n  rules:\n  - host: talker-api.127.0.0.1.nip.io\n    http:\n      paths:\n      - backend:\n          service:\n            name: envoy\n            port: { number: 8443 }\n        path: /\n        pathType: Prefix\nEOF\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8443 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8443:8443 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/mtls-authentication/#create-the-authconfig","title":"\u277b Create the AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced:

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"mtls\":\n      x509:\n        selector:\n          matchLabels:\n            app: talker-api\n  authorization:\n    \"acme\":\n      patternMatching:\n        patterns:\n        - selector: auth.identity.Organization\n          operator: incl\n          value: ACME Inc.\nEOF\n
      "},{"location":"authorino/docs/user-guides/mtls-authentication/#consume-the-api","title":"\u277c Consume the API","text":"

      With a TLS certificate signed by the trusted CA:

      openssl genrsa -out /tmp/aisha.key 4096\nopenssl req -new -subj \"/CN=aisha/C=PK/L=Islamabad/O=ACME Inc./OU=Engineering\" -key /tmp/aisha.key -out /tmp/aisha.csr\nopenssl x509 -req -sha512 -days 1 -CA /tmp/ca.crt -CAkey /tmp/ca.key -CAcreateserial -extfile /tmp/x509v3.ext -in /tmp/aisha.csr -out /tmp/aisha.crt\n\ncurl -k --cert /tmp/aisha.crt --key /tmp/aisha.key https://talker-api.127.0.0.1.nip.io:8443 -i\n# HTTP/1.1 200 OK\n

      With a TLS certificate signed by the trusted CA, though missing an authorized Organization:

      openssl genrsa -out /tmp/john.key 4096\nopenssl req -new -subj \"/CN=john/C=UK/L=London\" -key /tmp/john.key -out /tmp/john.csr\nopenssl x509 -req -sha512 -days 1 -CA /tmp/ca.crt -CAkey /tmp/ca.key -CAcreateserial -extfile /tmp/x509v3.ext -in /tmp/john.csr -out /tmp/john.crt\n\ncurl -k --cert /tmp/john.crt --key /tmp/john.key https://talker-api.127.0.0.1.nip.io:8443 -i\n# HTTP/1.1 403 Forbidden\n# x-ext-auth-reason: Unauthorized\n
      "},{"location":"authorino/docs/user-guides/mtls-authentication/#try-the-authconfig-via-raw-http-authorization-interface","title":"\u277d Try the AuthConfig via raw HTTP authorization interface","text":"

      Expose Authorino's raw HTTP authorization to the local host:

      kubectl port-forward service/authorino-authorino-authorization 5001:5001 2>&1 >/dev/null &\n

      With a TLS certificate signed by the trusted CA:

      curl -k --cert /tmp/aisha.crt --key /tmp/aisha.key -H 'Content-Type: application/json' -d '{}' https://talker-api.127.0.0.1.nip.io:5001/check -i\n# HTTP/2 200\n

      With a TLS certificate signed by an unknown authority:

      openssl req -x509 -sha512 -nodes \\\n  -days 365 \\\n  -newkey rsa:4096 \\\n  -subj \"/CN=untrusted\" \\\n  -addext basicConstraints=CA:TRUE \\\n  -addext keyUsage=digitalSignature,keyCertSign \\\n  -keyout /tmp/untrusted-ca.key \\\n  -out /tmp/untrusted-ca.crt\n\nopenssl genrsa -out /tmp/niko.key 4096\nopenssl req -new -subj \"/CN=niko/C=JP/L=Osaka\" -key /tmp/niko.key -out /tmp/niko.csr\nopenssl x509 -req -sha512 -days 1 -CA /tmp/untrusted-ca.crt -CAkey /tmp/untrusted-ca.key -CAcreateserial -extfile /tmp/x509v3.ext -in /tmp/niko.csr -out /tmp/niko.crt\n\ncurl -k --cert /tmp/niko.crt --key /tmp/niko.key -H 'Content-Type: application/json' -d '{}' https://talker-api.127.0.0.1.nip.io:5001/check -i\n# HTTP/2 401\n# www-authenticate: Basic realm=\"mtls\"\n# x-ext-auth-reason: x509: certificate signed by unknown authority\n
      "},{"location":"authorino/docs/user-guides/mtls-authentication/#revoke-an-entire-chain-of-certificates","title":"\u277e Revoke an entire chain of certificates","text":"
      kubectl delete secret/talker-api-ca\n

      Even if the deleted root certificate is still cached and accepted at the gateway, Authorino will revoke access at application level immediately.

      Try with a previously accepted certificate:

      curl -k --cert /tmp/aisha.crt --key /tmp/aisha.key https://talker-api.127.0.0.1.nip.io:8443 -i\n# HTTP/1.1 401 Unauthorized\n# www-authenticate: Basic realm=\"mtls\"\n# x-ext-auth-reason: x509: certificate signed by unknown authority\n
      "},{"location":"authorino/docs/user-guides/mtls-authentication/#cleanup","title":"Cleanup","text":"
      kind delete cluster --name authorino-tutorial\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/oauth2-token-introspection/","title":"User guide: OAuth 2.0 token introspection (RFC 7662)","text":"

      Introspect OAuth 2.0 access tokens (e.g. opaque tokens) for online user data and token validation in request-time.

      Authorino capabilities featured in this guide:
      • Identity verification & authentication \u2192 OAuth 2.0 introspection
      • Authorization \u2192 Pattern-matching authorization

      Authorino can perform OAuth 2.0 token introspection (RFC 7662) on the access tokens supplied in the requests to protected APIs. This is particularly useful when using opaque tokens, for remote checking the token validity and resolving the identity object.

      Important! Authorino does not implement OAuth2 grants nor OIDC authentication flows. As a common recommendation of good practice, obtaining and refreshing access tokens is for clients to negotiate directly with the auth servers and token issuers. Authorino will only validate those tokens using the parameters provided by the trusted issuer authorities.

      Check out as well the user guides about OpenID Connect Discovery and authentication with JWTs and Simple pattern-matching authorization policies.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/oauth2-token-introspection/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)
      • OAuth 2.0 server that implements the token introspection endpoint (RFC 7662) (e.g. Keycloak or a12n-server)
      • jq, to extract parts of JSON responses

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      Deploy a Keycloak server preloaded with the realm settings required for this guide:

      kubectl create namespace keycloak\nkubectl -n keycloak apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/keycloak/keycloak-deploy.yaml\n

      Deploy an a12n-server server preloaded with all settings required for this guide:

      kubectl create namespace a12n-server\nkubectl -n a12n-server apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/a12n-server/a12n-server-deploy.yaml\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/oauth2-token-introspection/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/oauth2-token-introspection/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/oauth2-token-introspection/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/oauth2-token-introspection/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/oauth2-token-introspection/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create the required secrets that will be used by Authorino to authenticate with Keycloak and a12n-server during the introspection request:

      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: oauth2-token-introspection-credentials-keycloak\nstringData:\n  clientID: talker-api\n  clientSecret: 523b92b6-625d-4e1e-a313-77e7a8ae4e88\ntype: Opaque\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: oauth2-token-introspection-credentials-a12n-server\nstringData:\n  clientID: talker-api\n  clientSecret: V6g-2Eq2ALB1_WHAswzoeZofJ_e86RI4tdjClDDDb4g\ntype: Opaque\nEOF\n

      Create the Authorino AuthConfig custom resource declaring the auth rules to be enforced:

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"keycloak\":\n      oauth2Introspection:\n        endpoint: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token/introspect\n        tokenTypeHint: requesting_party_token\n        credentialsRef:\n          name: oauth2-token-introspection-credentials-keycloak\n    \"a12n-server\":\n      oauth2Introspection:\n        endpoint: http://a12n-server.a12n-server.svc.cluster.local:8531/introspect\n        credentialsRef:\n          name: oauth2-token-introspection-credentials-a12n-server\n  authorization:\n    \"can-read\":\n      when:\n      - selector: auth.identity.privileges\n        operator: neq\n        value: \"\"\n      patternMatching:\n        patterns:\n        - selector: auth.identity.privileges.talker-api\n          operator: incl\n          value: read\nEOF\n

      On every request, Authorino will try to verify the token remotely with the Keycloak server and the a12n-server server.

      For authorization, whenever the introspected token data includes a privileges property (returned by a12n-server), Authorino will enforce only consumers whose privileges.talker-api includes the \"read\" permission are granted access.

      Check out the docs for information about the common feature Conditions about skipping parts of an AuthConfig in the auth pipeline based on context.

      "},{"location":"authorino/docs/user-guides/oauth2-token-introspection/#obtain-an-access-token-and-consume-the-api","title":"\u277b Obtain an access token and consume the API","text":""},{"location":"authorino/docs/user-guides/oauth2-token-introspection/#obtain-an-access-token-with-keycloak-and-consume-the-api","title":"Obtain an access token with Keycloak and consume the API","text":"

      Obtain an access token with the Keycloak server for user Jane:

      The AuthConfig deployed in the previous step is suitable for validating access tokens requested inside the cluster. This is because Keycloak's iss claim added to the JWTs matches always the host used to request the token and Authorino will later try to match this host to the host that provides the OpenID Connect configuration.

      Obtain an access token from within the cluster for the user Jane, whose e-mail has been verified:

      export $(kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=demo' -d 'username=jane' -d 'password=p' -d 'scope=openid' | jq -r '\"ACCESS_TOKEN=\"+.access_token,\"REFRESH_TOKEN=\"+.refresh_token')\n

      If your Keycloak server is reachable from outside the cluster, feel free to obtain the token directly. Make sure the host name set in the OIDC issuer endpoint in the AuthConfig matches the one used to obtain the token and is as well reachable from within the cluster.

      As user Jane, consume the API:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/hello\n# HTTP/1.1 200 OK\n

      Revoke the access token and try to consume the API again:

      kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/logout -H \"Content-Type: application/x-www-form-urlencoded\" -d \"refresh_token=$REFRESH_TOKEN\" -d 'token_type_hint=requesting_party_token' -u demo:\n
      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 401 Unauthorized\n# www-authenticate: Bearer realm=\"keycloak\"\n# www-authenticate: Bearer realm=\"a12n-server\"\n# x-ext-auth-reason: {\"a12n-server\":\"token is not active\",\"keycloak\":\"token is not active\"}\n
      "},{"location":"authorino/docs/user-guides/oauth2-token-introspection/#obtain-an-access-token-with-a12n-server-and-consume-the-api","title":"Obtain an access token with a12n-server and consume the API","text":"

      Forward local requests to a12n-server instance running in the cluster:

      kubectl -n a12n-server port-forward deployment/a12n-server 8531:8531 2>&1 >/dev/null &\n

      Obtain an access token with the a12n-server server for service account service-account-1:

      ACCESS_TOKEN=$(curl -d 'grant_type=client_credentials' -u service-account-1:FO6LgoMKA8TBDDHgSXZ5-iq1wKNwqdDkyeEGIl6gp0s \"http://localhost:8531/token\" | jq -r .access_token)\n

      You can as well obtain an access token from within the cluster, in case your a12n-server is not reachable from the outside:

      ACCESS_TOKEN=$(kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://a12n-server.a12n-server.svc.cluster.local:8531/token -s -d 'grant_type=client_credentials' -u service-account-1:FO6LgoMKA8TBDDHgSXZ5-iq1wKNwqdDkyeEGIl6gp0s | jq -r .access_token)\n

      Verify the issued token is an opaque access token in this case:

      echo $ACCESS_TOKEN\n

      As service-account-1, consumer the API with a valid access token:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/hello\n# HTTP/1.1 200 OK\n

      Revoke the access token and try to consume the API again:

      curl -d \"token=$ACCESS_TOKEN\" -u service-account-1:FO6LgoMKA8TBDDHgSXZ5-iq1wKNwqdDkyeEGIl6gp0s \"http://localhost:8531/revoke\" -i\n
      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 401 Unauthorized\n# www-authenticate: Bearer realm=\"keycloak\"\n# www-authenticate: Bearer realm=\"a12n-server\"\n# x-ext-auth-reason: {\"a12n-server\":\"token is not active\",\"keycloak\":\"token is not active\"}\n
      "},{"location":"authorino/docs/user-guides/oauth2-token-introspection/#consume-the-api-with-a-missing-or-invalid-access-token","title":"Consume the API with a missing or invalid access token","text":"
      curl -H \"Authorization: Bearer invalid\" http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 401 Unauthorized\n# www-authenticate: Bearer realm=\"keycloak\"\n# www-authenticate: Bearer realm=\"a12n-server\"\n# x-ext-auth-reason: {\"a12n-server\":\"token is not active\",\"keycloak\":\"token is not active\"}\n
      "},{"location":"authorino/docs/user-guides/oauth2-token-introspection/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete authconfig/talker-api-protection\nkubectl delete secret/oauth2-token-introspection-credentials-keycloak\nkubectl delete secret/oauth2-token-introspection-credentials-a12n-server\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\nkubectl delete namespace keycloak\nkubectl delete namespace a12n-server\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/observability/","title":"Observability","text":""},{"location":"authorino/docs/user-guides/observability/#metrics","title":"Metrics","text":"

      Authorino exports metrics at 2 endpoints:

      /metrics Metrics of the controller-runtime about reconciliation (caching) of AuthConfigs and API key Secrets /server-metrics Metrics of the external authorization gRPC and OIDC/Festival Wristband validation built-in HTTP servers

      The Authorino Operator creates a Kubernetes Service named <authorino-cr-name>-controller-metrics that exposes the endpoints on port 8080. The Authorino instance allows to modify the port number of the metrics endpoints, by setting the --metrics-addr command-line flag (default: :8080).

      Main metrics exported by endpoint1:

      Endpoint: /metrics Metric name Description\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Labels Type controller_runtime_reconcile_total Total number of reconciliations per controller controller=authconfig|secret, result=success|error|requeue counter controller_runtime_reconcile_errors_total Total number of reconciliation errors per controller controller=authconfig|secret counter controller_runtime_reconcile_time_seconds Length of time per reconciliation per controller controller=authconfig|secret histogram controller_runtime_max_concurrent_reconciles Maximum number of concurrent reconciles per controller controller=authconfig|secret gauge workqueue_adds_total Total number of adds handled by workqueue name=authconfig|secret counter workqueue_depth Current depth of workqueue name=authconfig|secret gauge workqueue_queue_duration_seconds How long in seconds an item stays in workqueue before being requested name=authconfig|secret histogram workqueue_longest_running_processor_seconds How many seconds has the longest running processor for workqueue been running. name=authconfig|secret gauge workqueue_retries_total Total number of retries handled by workqueue name=authconfig|secret counter workqueue_unfinished_work_seconds How many seconds of work has been done that is in progress and hasn't been observed by work_duration. name=authconfig|secret gauge workqueue_work_duration_seconds How long in seconds processing an item from workqueue takes. name=authconfig|secret histogram rest_client_requests_total Number of HTTP requests, partitioned by status code, method, and host. code=200|404, method=GET|PUT|POST counter Endpoint: /server-metrics Metric name Description Labels Type auth_server_evaluator_total2 Total number of evaluations of individual authconfig rule performed by the auth server. namespace, authconfig, evaluator_type, evaluator_name counter auth_server_evaluator_cancelled2 Number of evaluations of individual authconfig rule cancelled by the auth server. namespace, authconfig, evaluator_type, evaluator_name counter auth_server_evaluator_ignored2 Number of evaluations of individual authconfig rule ignored by the auth server. namespace, authconfig, evaluator_type, evaluator_name counter auth_server_evaluator_denied2 Number of denials from individual authconfig rule evaluated by the auth server. namespace, authconfig, evaluator_type, evaluator_name counter auth_server_evaluator_duration_seconds2 Response latency of individual authconfig rule evaluated by the auth server (in seconds). namespace, authconfig, evaluator_type, evaluator_name histogram auth_server_authconfig_total Total number of authconfigs enforced by the auth server, partitioned by authconfig. namespace, authconfig counter auth_server_authconfig_response_status Response status of authconfigs sent by the auth server, partitioned by authconfig. namespace, authconfig, status=OK|UNAUTHENTICATED,PERMISSION_DENIED counter auth_server_authconfig_duration_seconds Response latency of authconfig enforced by the auth server (in seconds). namespace, authconfig histogram auth_server_response_status Response status of authconfigs sent by the auth server. status=OK|UNAUTHENTICATED,PERMISSION_DENIED|NOT_FOUND counter grpc_server_handled_total Total number of RPCs completed on the server, regardless of success or failure. grpc_code=OK|Aborted|Canceled|DeadlineExceeded|Internal|ResourceExhausted|Unknown, grpc_method=Check, grpc_service=envoy.service.auth.v3.Authorization counter grpc_server_handling_seconds Response latency (seconds) of gRPC that had been application-level handled by the server. grpc_method=Check, grpc_service=envoy.service.auth.v3.Authorization histogram grpc_server_msg_received_total Total number of RPC stream messages received on the server. grpc_method=Check, grpc_service=envoy.service.auth.v3.Authorization counter grpc_server_msg_sent_total Total number of gRPC stream messages sent by the server. grpc_method=Check, grpc_service=envoy.service.auth.v3.Authorization counter grpc_server_started_total Total number of RPCs started on the server. grpc_method=Check, grpc_service=envoy.service.auth.v3.Authorization counter http_server_handled_total Total number of calls completed on the raw HTTP authorization server, regardless of success or failure. http_code counter http_server_handling_seconds Response latency (seconds) of raw HTTP authorization request that had been application-level handled by the server. histogram oidc_server_requests_total Number of get requests received on the OIDC (Festival Wristband) server. namespace, authconfig, wristband, path=oidc-config|jwks counter oidc_server_response_status Status of HTTP response sent by the OIDC (Festival Wristband) server. status=200|404 counter

      1 Both endpoints export metrics about the Go runtime, such as number of goroutines (go_goroutines) and threads (go_threads), usage of CPU, memory and GC stats.

      2 Opt-in metrics: auth_server_evaluator_* metrics require authconfig.spec.(identity|metadata|authorization|response).metrics: true (default: false). This can be enforced for the entire instance (all AuthConfigs and evaluators), by setting the --deep-metrics-enabled command-line flag in the Authorino deployment.

      Example of metrics exported at the /metrics endpoint
      # HELP controller_runtime_active_workers Number of currently used workers per controller\n# TYPE controller_runtime_active_workers gauge\ncontroller_runtime_active_workers{controller=\"authconfig\"} 0\ncontroller_runtime_active_workers{controller=\"secret\"} 0\n# HELP controller_runtime_max_concurrent_reconciles Maximum number of concurrent reconciles per controller\n# TYPE controller_runtime_max_concurrent_reconciles gauge\ncontroller_runtime_max_concurrent_reconciles{controller=\"authconfig\"} 1\ncontroller_runtime_max_concurrent_reconciles{controller=\"secret\"} 1\n# HELP controller_runtime_reconcile_errors_total Total number of reconciliation errors per controller\n# TYPE controller_runtime_reconcile_errors_total counter\ncontroller_runtime_reconcile_errors_total{controller=\"authconfig\"} 12\ncontroller_runtime_reconcile_errors_total{controller=\"secret\"} 0\n# HELP controller_runtime_reconcile_time_seconds Length of time per reconciliation per controller\n# TYPE controller_runtime_reconcile_time_seconds histogram\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"0.005\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"0.01\"} 11\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"0.025\"} 17\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"0.05\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"0.1\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"0.15\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"0.2\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"0.25\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"0.3\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"0.35\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"0.4\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"0.45\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"0.5\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"0.6\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"0.7\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"0.8\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"0.9\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"1\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"1.25\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"1.5\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"1.75\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"2\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"2.5\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"3\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"3.5\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"4\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"4.5\"} 18\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"5\"} 19\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"6\"} 19\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"7\"} 19\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"8\"} 19\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"9\"} 19\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"10\"} 19\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"15\"} 19\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"20\"} 19\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"25\"} 19\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"30\"} 19\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"40\"} 19\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"50\"} 19\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"60\"} 19\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"authconfig\",le=\"+Inf\"} 19\ncontroller_runtime_reconcile_time_seconds_sum{controller=\"authconfig\"} 5.171108321999999\ncontroller_runtime_reconcile_time_seconds_count{controller=\"authconfig\"} 19\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"0.005\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"0.01\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"0.025\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"0.05\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"0.1\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"0.15\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"0.2\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"0.25\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"0.3\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"0.35\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"0.4\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"0.45\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"0.5\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"0.6\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"0.7\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"0.8\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"0.9\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"1\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"1.25\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"1.5\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"1.75\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"2\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"2.5\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"3\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"3.5\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"4\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"4.5\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"5\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"6\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"7\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"8\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"9\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"10\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"15\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"20\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"25\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"30\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"40\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"50\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"60\"} 1\ncontroller_runtime_reconcile_time_seconds_bucket{controller=\"secret\",le=\"+Inf\"} 1\ncontroller_runtime_reconcile_time_seconds_sum{controller=\"secret\"} 0.000138025\ncontroller_runtime_reconcile_time_seconds_count{controller=\"secret\"} 1\n# HELP controller_runtime_reconcile_total Total number of reconciliations per controller\n# TYPE controller_runtime_reconcile_total counter\ncontroller_runtime_reconcile_total{controller=\"authconfig\",result=\"error\"} 12\ncontroller_runtime_reconcile_total{controller=\"authconfig\",result=\"requeue\"} 0\ncontroller_runtime_reconcile_total{controller=\"authconfig\",result=\"requeue_after\"} 0\ncontroller_runtime_reconcile_total{controller=\"authconfig\",result=\"success\"} 7\ncontroller_runtime_reconcile_total{controller=\"secret\",result=\"error\"} 0\ncontroller_runtime_reconcile_total{controller=\"secret\",result=\"requeue\"} 0\ncontroller_runtime_reconcile_total{controller=\"secret\",result=\"requeue_after\"} 0\ncontroller_runtime_reconcile_total{controller=\"secret\",result=\"success\"} 1\n# HELP go_gc_cycles_automatic_gc_cycles_total Count of completed GC cycles generated by the Go runtime.\n# TYPE go_gc_cycles_automatic_gc_cycles_total counter\ngo_gc_cycles_automatic_gc_cycles_total 13\n# HELP go_gc_cycles_forced_gc_cycles_total Count of completed GC cycles forced by the application.\n# TYPE go_gc_cycles_forced_gc_cycles_total counter\ngo_gc_cycles_forced_gc_cycles_total 0\n# HELP go_gc_cycles_total_gc_cycles_total Count of all completed GC cycles.\n# TYPE go_gc_cycles_total_gc_cycles_total counter\ngo_gc_cycles_total_gc_cycles_total 13\n# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.\n# TYPE go_gc_duration_seconds summary\ngo_gc_duration_seconds{quantile=\"0\"} 4.5971e-05\ngo_gc_duration_seconds{quantile=\"0.25\"} 5.69e-05\ngo_gc_duration_seconds{quantile=\"0.5\"} 0.000140699\ngo_gc_duration_seconds{quantile=\"0.75\"} 0.000313162\ngo_gc_duration_seconds{quantile=\"1\"} 0.001692423\ngo_gc_duration_seconds_sum 0.003671076\ngo_gc_duration_seconds_count 13\n# HELP go_gc_heap_allocs_by_size_bytes_total Distribution of heap allocations by approximate size. Note that this does not include tiny objects as defined by /gc/heap/tiny/allocs:objects, only tiny blocks.\n# TYPE go_gc_heap_allocs_by_size_bytes_total histogram\ngo_gc_heap_allocs_by_size_bytes_total_bucket{le=\"8.999999999999998\"} 6357\ngo_gc_heap_allocs_by_size_bytes_total_bucket{le=\"16.999999999999996\"} 45065\n[...]\ngo_gc_heap_allocs_by_size_bytes_total_bucket{le=\"32768.99999999999\"} 128306\ngo_gc_heap_allocs_by_size_bytes_total_bucket{le=\"+Inf\"} 128327\ngo_gc_heap_allocs_by_size_bytes_total_sum 1.5021512e+07\ngo_gc_heap_allocs_by_size_bytes_total_count 128327\n# HELP go_gc_heap_allocs_bytes_total Cumulative sum of memory allocated to the heap by the application.\n# TYPE go_gc_heap_allocs_bytes_total counter\ngo_gc_heap_allocs_bytes_total 1.5021512e+07\n# HELP go_gc_heap_allocs_objects_total Cumulative count of heap allocations triggered by the application. Note that this does not include tiny objects as defined by /gc/heap/tiny/allocs:objects, only tiny blocks.\n# TYPE go_gc_heap_allocs_objects_total counter\ngo_gc_heap_allocs_objects_total 128327\n# HELP go_gc_heap_frees_by_size_bytes_total Distribution of freed heap allocations by approximate size. Note that this does not include tiny objects as defined by /gc/heap/tiny/allocs:objects, only tiny blocks.\n# TYPE go_gc_heap_frees_by_size_bytes_total histogram\ngo_gc_heap_frees_by_size_bytes_total_bucket{le=\"8.999999999999998\"} 3885\ngo_gc_heap_frees_by_size_bytes_total_bucket{le=\"16.999999999999996\"} 33418\n[...]\ngo_gc_heap_frees_by_size_bytes_total_bucket{le=\"32768.99999999999\"} 96417\ngo_gc_heap_frees_by_size_bytes_total_bucket{le=\"+Inf\"} 96425\ngo_gc_heap_frees_by_size_bytes_total_sum 9.880944e+06\ngo_gc_heap_frees_by_size_bytes_total_count 96425\n# HELP go_gc_heap_frees_bytes_total Cumulative sum of heap memory freed by the garbage collector.\n# TYPE go_gc_heap_frees_bytes_total counter\ngo_gc_heap_frees_bytes_total 9.880944e+06\n# HELP go_gc_heap_frees_objects_total Cumulative count of heap allocations whose storage was freed by the garbage collector. Note that this does not include tiny objects as defined by /gc/heap/tiny/allocs:objects, only tiny blocks.\n# TYPE go_gc_heap_frees_objects_total counter\ngo_gc_heap_frees_objects_total 96425\n# HELP go_gc_heap_goal_bytes Heap size target for the end of the GC cycle.\n# TYPE go_gc_heap_goal_bytes gauge\ngo_gc_heap_goal_bytes 9.356624e+06\n# HELP go_gc_heap_objects_objects Number of objects, live or unswept, occupying heap memory.\n# TYPE go_gc_heap_objects_objects gauge\ngo_gc_heap_objects_objects 31902\n# HELP go_gc_heap_tiny_allocs_objects_total Count of small allocations that are packed together into blocks. These allocations are counted separately from other allocations because each individual allocation is not tracked by the runtime, only their block. Each block is already accounted for in allocs-by-size and frees-by-size.\n# TYPE go_gc_heap_tiny_allocs_objects_total counter\ngo_gc_heap_tiny_allocs_objects_total 11750\n# HELP go_gc_pauses_seconds_total Distribution individual GC-related stop-the-world pause latencies.\n# TYPE go_gc_pauses_seconds_total histogram\ngo_gc_pauses_seconds_total_bucket{le=\"9.999999999999999e-10\"} 0\ngo_gc_pauses_seconds_total_bucket{le=\"1.9999999999999997e-09\"} 0\n[...]\ngo_gc_pauses_seconds_total_bucket{le=\"206708.18602188796\"} 26\ngo_gc_pauses_seconds_total_bucket{le=\"+Inf\"} 26\ngo_gc_pauses_seconds_total_sum 0.003151488\ngo_gc_pauses_seconds_total_count 26\n# HELP go_goroutines Number of goroutines that currently exist.\n# TYPE go_goroutines gauge\ngo_goroutines 80\n# HELP go_info Information about the Go environment.\n# TYPE go_info gauge\ngo_info{version=\"go1.18.7\"} 1\n# HELP go_memory_classes_heap_free_bytes Memory that is completely free and eligible to be returned to the underlying system, but has not been. This metric is the runtime's estimate of free address space that is backed by physical memory.\n# TYPE go_memory_classes_heap_free_bytes gauge\ngo_memory_classes_heap_free_bytes 589824\n# HELP go_memory_classes_heap_objects_bytes Memory occupied by live objects and dead objects that have not yet been marked free by the garbage collector.\n# TYPE go_memory_classes_heap_objects_bytes gauge\ngo_memory_classes_heap_objects_bytes 5.140568e+06\n# HELP go_memory_classes_heap_released_bytes Memory that is completely free and has been returned to the underlying system. This metric is the runtime's estimate of free address space that is still mapped into the process, but is not backed by physical memory.\n# TYPE go_memory_classes_heap_released_bytes gauge\ngo_memory_classes_heap_released_bytes 4.005888e+06\n# HELP go_memory_classes_heap_stacks_bytes Memory allocated from the heap that is reserved for stack space, whether or not it is currently in-use.\n# TYPE go_memory_classes_heap_stacks_bytes gauge\ngo_memory_classes_heap_stacks_bytes 786432\n# HELP go_memory_classes_heap_unused_bytes Memory that is reserved for heap objects but is not currently used to hold heap objects.\n# TYPE go_memory_classes_heap_unused_bytes gauge\ngo_memory_classes_heap_unused_bytes 2.0602e+06\n# HELP go_memory_classes_metadata_mcache_free_bytes Memory that is reserved for runtime mcache structures, but not in-use.\n# TYPE go_memory_classes_metadata_mcache_free_bytes gauge\ngo_memory_classes_metadata_mcache_free_bytes 13984\n# HELP go_memory_classes_metadata_mcache_inuse_bytes Memory that is occupied by runtime mcache structures that are currently being used.\n# TYPE go_memory_classes_metadata_mcache_inuse_bytes gauge\ngo_memory_classes_metadata_mcache_inuse_bytes 2400\n# HELP go_memory_classes_metadata_mspan_free_bytes Memory that is reserved for runtime mspan structures, but not in-use.\n# TYPE go_memory_classes_metadata_mspan_free_bytes gauge\ngo_memory_classes_metadata_mspan_free_bytes 17104\n# HELP go_memory_classes_metadata_mspan_inuse_bytes Memory that is occupied by runtime mspan structures that are currently being used.\n# TYPE go_memory_classes_metadata_mspan_inuse_bytes gauge\ngo_memory_classes_metadata_mspan_inuse_bytes 113968\n# HELP go_memory_classes_metadata_other_bytes Memory that is reserved for or used to hold runtime metadata.\n# TYPE go_memory_classes_metadata_other_bytes gauge\ngo_memory_classes_metadata_other_bytes 5.544408e+06\n# HELP go_memory_classes_os_stacks_bytes Stack memory allocated by the underlying operating system.\n# TYPE go_memory_classes_os_stacks_bytes gauge\ngo_memory_classes_os_stacks_bytes 0\n# HELP go_memory_classes_other_bytes Memory used by execution trace buffers, structures for debugging the runtime, finalizer and profiler specials, and more.\n# TYPE go_memory_classes_other_bytes gauge\ngo_memory_classes_other_bytes 537777\n# HELP go_memory_classes_profiling_buckets_bytes Memory that is used by the stack trace hash map used for profiling.\n# TYPE go_memory_classes_profiling_buckets_bytes gauge\ngo_memory_classes_profiling_buckets_bytes 1.455487e+06\n# HELP go_memory_classes_total_bytes All memory mapped by the Go runtime into the current process as read-write. Note that this does not include memory mapped by code called via cgo or via the syscall package. Sum of all metrics in /memory/classes.\n# TYPE go_memory_classes_total_bytes gauge\ngo_memory_classes_total_bytes 2.026804e+07\n# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.\n# TYPE go_memstats_alloc_bytes gauge\ngo_memstats_alloc_bytes 5.140568e+06\n# HELP go_memstats_alloc_bytes_total Total number of bytes allocated, even if freed.\n# TYPE go_memstats_alloc_bytes_total counter\ngo_memstats_alloc_bytes_total 1.5021512e+07\n# HELP go_memstats_buck_hash_sys_bytes Number of bytes used by the profiling bucket hash table.\n# TYPE go_memstats_buck_hash_sys_bytes gauge\ngo_memstats_buck_hash_sys_bytes 1.455487e+06\n# HELP go_memstats_frees_total Total number of frees.\n# TYPE go_memstats_frees_total counter\ngo_memstats_frees_total 108175\n# HELP go_memstats_gc_cpu_fraction The fraction of this program's available CPU time used by the GC since the program started.\n# TYPE go_memstats_gc_cpu_fraction gauge\ngo_memstats_gc_cpu_fraction 0\n# HELP go_memstats_gc_sys_bytes Number of bytes used for garbage collection system metadata.\n# TYPE go_memstats_gc_sys_bytes gauge\ngo_memstats_gc_sys_bytes 5.544408e+06\n# HELP go_memstats_heap_alloc_bytes Number of heap bytes allocated and still in use.\n# TYPE go_memstats_heap_alloc_bytes gauge\ngo_memstats_heap_alloc_bytes 5.140568e+06\n# HELP go_memstats_heap_idle_bytes Number of heap bytes waiting to be used.\n# TYPE go_memstats_heap_idle_bytes gauge\ngo_memstats_heap_idle_bytes 4.595712e+06\n# HELP go_memstats_heap_inuse_bytes Number of heap bytes that are in use.\n# TYPE go_memstats_heap_inuse_bytes gauge\ngo_memstats_heap_inuse_bytes 7.200768e+06\n# HELP go_memstats_heap_objects Number of allocated objects.\n# TYPE go_memstats_heap_objects gauge\ngo_memstats_heap_objects 31902\n# HELP go_memstats_heap_released_bytes Number of heap bytes released to OS.\n# TYPE go_memstats_heap_released_bytes gauge\ngo_memstats_heap_released_bytes 4.005888e+06\n# HELP go_memstats_heap_sys_bytes Number of heap bytes obtained from system.\n# TYPE go_memstats_heap_sys_bytes gauge\ngo_memstats_heap_sys_bytes 1.179648e+07\n# HELP go_memstats_last_gc_time_seconds Number of seconds since 1970 of last garbage collection.\n# TYPE go_memstats_last_gc_time_seconds gauge\ngo_memstats_last_gc_time_seconds 1.6461572121033354e+09\n# HELP go_memstats_lookups_total Total number of pointer lookups.\n# TYPE go_memstats_lookups_total counter\ngo_memstats_lookups_total 0\n# HELP go_memstats_mallocs_total Total number of mallocs.\n# TYPE go_memstats_mallocs_total counter\ngo_memstats_mallocs_total 140077\n# HELP go_memstats_mcache_inuse_bytes Number of bytes in use by mcache structures.\n# TYPE go_memstats_mcache_inuse_bytes gauge\ngo_memstats_mcache_inuse_bytes 2400\n# HELP go_memstats_mcache_sys_bytes Number of bytes used for mcache structures obtained from system.\n# TYPE go_memstats_mcache_sys_bytes gauge\ngo_memstats_mcache_sys_bytes 16384\n# HELP go_memstats_mspan_inuse_bytes Number of bytes in use by mspan structures.\n# TYPE go_memstats_mspan_inuse_bytes gauge\ngo_memstats_mspan_inuse_bytes 113968\n# HELP go_memstats_mspan_sys_bytes Number of bytes used for mspan structures obtained from system.\n# TYPE go_memstats_mspan_sys_bytes gauge\ngo_memstats_mspan_sys_bytes 131072\n# HELP go_memstats_next_gc_bytes Number of heap bytes when next garbage collection will take place.\n# TYPE go_memstats_next_gc_bytes gauge\ngo_memstats_next_gc_bytes 9.356624e+06\n# HELP go_memstats_other_sys_bytes Number of bytes used for other system allocations.\n# TYPE go_memstats_other_sys_bytes gauge\ngo_memstats_other_sys_bytes 537777\n# HELP go_memstats_stack_inuse_bytes Number of bytes in use by the stack allocator.\n# TYPE go_memstats_stack_inuse_bytes gauge\ngo_memstats_stack_inuse_bytes 786432\n# HELP go_memstats_stack_sys_bytes Number of bytes obtained from system for stack allocator.\n# TYPE go_memstats_stack_sys_bytes gauge\ngo_memstats_stack_sys_bytes 786432\n# HELP go_memstats_sys_bytes Number of bytes obtained from system.\n# TYPE go_memstats_sys_bytes gauge\ngo_memstats_sys_bytes 2.026804e+07\n# HELP go_sched_goroutines_goroutines Count of live goroutines.\n# TYPE go_sched_goroutines_goroutines gauge\ngo_sched_goroutines_goroutines 80\n# HELP go_sched_latencies_seconds Distribution of the time goroutines have spent in the scheduler in a runnable state before actually running.\n# TYPE go_sched_latencies_seconds histogram\ngo_sched_latencies_seconds_bucket{le=\"9.999999999999999e-10\"} 244\ngo_sched_latencies_seconds_bucket{le=\"1.9999999999999997e-09\"} 244\n[...]\ngo_sched_latencies_seconds_bucket{le=\"206708.18602188796\"} 2336\ngo_sched_latencies_seconds_bucket{le=\"+Inf\"} 2336\ngo_sched_latencies_seconds_sum 0.18509832400000004\ngo_sched_latencies_seconds_count 2336\n# HELP go_threads Number of OS threads created.\n# TYPE go_threads gauge\ngo_threads 8\n# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.\n# TYPE process_cpu_seconds_total counter\nprocess_cpu_seconds_total 1.84\n# HELP process_max_fds Maximum number of open file descriptors.\n# TYPE process_max_fds gauge\nprocess_max_fds 1.048576e+06\n# HELP process_open_fds Number of open file descriptors.\n# TYPE process_open_fds gauge\nprocess_open_fds 14\n# HELP process_resident_memory_bytes Resident memory size in bytes.\n# TYPE process_resident_memory_bytes gauge\nprocess_resident_memory_bytes 4.3728896e+07\n# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.\n# TYPE process_start_time_seconds gauge\nprocess_start_time_seconds 1.64615612779e+09\n# HELP process_virtual_memory_bytes Virtual memory size in bytes.\n# TYPE process_virtual_memory_bytes gauge\nprocess_virtual_memory_bytes 7.65362176e+08\n# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.\n# TYPE process_virtual_memory_max_bytes gauge\nprocess_virtual_memory_max_bytes 1.8446744073709552e+19\n# HELP rest_client_requests_total Number of HTTP requests, partitioned by status code, method, and host.\n# TYPE rest_client_requests_total counter\nrest_client_requests_total{code=\"200\",host=\"10.96.0.1:443\",method=\"GET\"} 114\nrest_client_requests_total{code=\"200\",host=\"10.96.0.1:443\",method=\"PUT\"} 4\n# HELP workqueue_adds_total Total number of adds handled by workqueue\n# TYPE workqueue_adds_total counter\nworkqueue_adds_total{name=\"authconfig\"} 19\nworkqueue_adds_total{name=\"secret\"} 1\n# HELP workqueue_depth Current depth of workqueue\n# TYPE workqueue_depth gauge\nworkqueue_depth{name=\"authconfig\"} 0\nworkqueue_depth{name=\"secret\"} 0\n# HELP workqueue_longest_running_processor_seconds How many seconds has the longest running processor for workqueue been running.\n# TYPE workqueue_longest_running_processor_seconds gauge\nworkqueue_longest_running_processor_seconds{name=\"authconfig\"} 0\nworkqueue_longest_running_processor_seconds{name=\"secret\"} 0\n# HELP workqueue_queue_duration_seconds How long in seconds an item stays in workqueue before being requested\n# TYPE workqueue_queue_duration_seconds histogram\nworkqueue_queue_duration_seconds_bucket{name=\"authconfig\",le=\"1e-08\"} 0\nworkqueue_queue_duration_seconds_bucket{name=\"authconfig\",le=\"1e-07\"} 0\nworkqueue_queue_duration_seconds_bucket{name=\"authconfig\",le=\"1e-06\"} 0\nworkqueue_queue_duration_seconds_bucket{name=\"authconfig\",le=\"9.999999999999999e-06\"} 8\nworkqueue_queue_duration_seconds_bucket{name=\"authconfig\",le=\"9.999999999999999e-05\"} 17\nworkqueue_queue_duration_seconds_bucket{name=\"authconfig\",le=\"0.001\"} 17\nworkqueue_queue_duration_seconds_bucket{name=\"authconfig\",le=\"0.01\"} 17\nworkqueue_queue_duration_seconds_bucket{name=\"authconfig\",le=\"0.1\"} 18\nworkqueue_queue_duration_seconds_bucket{name=\"authconfig\",le=\"1\"} 18\nworkqueue_queue_duration_seconds_bucket{name=\"authconfig\",le=\"10\"} 19\nworkqueue_queue_duration_seconds_bucket{name=\"authconfig\",le=\"+Inf\"} 19\nworkqueue_queue_duration_seconds_sum{name=\"authconfig\"} 4.969016371\nworkqueue_queue_duration_seconds_count{name=\"authconfig\"} 19\nworkqueue_queue_duration_seconds_bucket{name=\"secret\",le=\"1e-08\"} 0\nworkqueue_queue_duration_seconds_bucket{name=\"secret\",le=\"1e-07\"} 0\nworkqueue_queue_duration_seconds_bucket{name=\"secret\",le=\"1e-06\"} 0\nworkqueue_queue_duration_seconds_bucket{name=\"secret\",le=\"9.999999999999999e-06\"} 1\nworkqueue_queue_duration_seconds_bucket{name=\"secret\",le=\"9.999999999999999e-05\"} 1\nworkqueue_queue_duration_seconds_bucket{name=\"secret\",le=\"0.001\"} 1\nworkqueue_queue_duration_seconds_bucket{name=\"secret\",le=\"0.01\"} 1\nworkqueue_queue_duration_seconds_bucket{name=\"secret\",le=\"0.1\"} 1\nworkqueue_queue_duration_seconds_bucket{name=\"secret\",le=\"1\"} 1\nworkqueue_queue_duration_seconds_bucket{name=\"secret\",le=\"10\"} 1\nworkqueue_queue_duration_seconds_bucket{name=\"secret\",le=\"+Inf\"} 1\nworkqueue_queue_duration_seconds_sum{name=\"secret\"} 4.67e-06\nworkqueue_queue_duration_seconds_count{name=\"secret\"} 1\n# HELP workqueue_retries_total Total number of retries handled by workqueue\n# TYPE workqueue_retries_total counter\nworkqueue_retries_total{name=\"authconfig\"} 12\nworkqueue_retries_total{name=\"secret\"} 0\n# HELP workqueue_unfinished_work_seconds How many seconds of work has been done that is in progress and hasn't been observed by work_duration. Large values indicate stuck threads. One can deduce the number of stuck threads by observing the rate at which this increases.\n# TYPE workqueue_unfinished_work_seconds gauge\nworkqueue_unfinished_work_seconds{name=\"authconfig\"} 0\nworkqueue_unfinished_work_seconds{name=\"secret\"} 0\n# HELP workqueue_work_duration_seconds How long in seconds processing an item from workqueue takes.\n# TYPE workqueue_work_duration_seconds histogram\nworkqueue_work_duration_seconds_bucket{name=\"authconfig\",le=\"1e-08\"} 0\nworkqueue_work_duration_seconds_bucket{name=\"authconfig\",le=\"1e-07\"} 0\nworkqueue_work_duration_seconds_bucket{name=\"authconfig\",le=\"1e-06\"} 0\nworkqueue_work_duration_seconds_bucket{name=\"authconfig\",le=\"9.999999999999999e-06\"} 0\nworkqueue_work_duration_seconds_bucket{name=\"authconfig\",le=\"9.999999999999999e-05\"} 0\nworkqueue_work_duration_seconds_bucket{name=\"authconfig\",le=\"0.001\"} 0\nworkqueue_work_duration_seconds_bucket{name=\"authconfig\",le=\"0.01\"} 11\nworkqueue_work_duration_seconds_bucket{name=\"authconfig\",le=\"0.1\"} 18\nworkqueue_work_duration_seconds_bucket{name=\"authconfig\",le=\"1\"} 18\nworkqueue_work_duration_seconds_bucket{name=\"authconfig\",le=\"10\"} 19\nworkqueue_work_duration_seconds_bucket{name=\"authconfig\",le=\"+Inf\"} 19\nworkqueue_work_duration_seconds_sum{name=\"authconfig\"} 5.171738079000001\nworkqueue_work_duration_seconds_count{name=\"authconfig\"} 19\nworkqueue_work_duration_seconds_bucket{name=\"secret\",le=\"1e-08\"} 0\nworkqueue_work_duration_seconds_bucket{name=\"secret\",le=\"1e-07\"} 0\nworkqueue_work_duration_seconds_bucket{name=\"secret\",le=\"1e-06\"} 0\nworkqueue_work_duration_seconds_bucket{name=\"secret\",le=\"9.999999999999999e-06\"} 0\nworkqueue_work_duration_seconds_bucket{name=\"secret\",le=\"9.999999999999999e-05\"} 0\nworkqueue_work_duration_seconds_bucket{name=\"secret\",le=\"0.001\"} 1\nworkqueue_work_duration_seconds_bucket{name=\"secret\",le=\"0.01\"} 1\nworkqueue_work_duration_seconds_bucket{name=\"secret\",le=\"0.1\"} 1\nworkqueue_work_duration_seconds_bucket{name=\"secret\",le=\"1\"} 1\nworkqueue_work_duration_seconds_bucket{name=\"secret\",le=\"10\"} 1\nworkqueue_work_duration_seconds_bucket{name=\"secret\",le=\"+Inf\"} 1\nworkqueue_work_duration_seconds_sum{name=\"secret\"} 0.000150956\nworkqueue_work_duration_seconds_count{name=\"secret\"} 1\n
      Example of metrics exported at the /server-metrics endpoint
      # HELP auth_server_authconfig_duration_seconds Response latency of authconfig enforced by the auth server (in seconds).\n# TYPE auth_server_authconfig_duration_seconds histogram\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.001\"} 0\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.051000000000000004\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.101\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.15100000000000002\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.201\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.251\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.301\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.351\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.40099999999999997\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.45099999999999996\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.501\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.551\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.6010000000000001\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.6510000000000001\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.7010000000000002\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.7510000000000002\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.8010000000000003\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.8510000000000003\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.9010000000000004\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"0.9510000000000004\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"edge-auth\",namespace=\"authorino\",le=\"+Inf\"} 1\nauth_server_authconfig_duration_seconds_sum{authconfig=\"edge-auth\",namespace=\"authorino\"} 0.001701795\nauth_server_authconfig_duration_seconds_count{authconfig=\"edge-auth\",namespace=\"authorino\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.001\"} 1\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.051000000000000004\"} 4\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.101\"} 4\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.15100000000000002\"} 5\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.201\"} 5\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.251\"} 5\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.301\"} 5\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.351\"} 5\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.40099999999999997\"} 5\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.45099999999999996\"} 5\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.501\"} 5\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.551\"} 5\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.6010000000000001\"} 5\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.6510000000000001\"} 5\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.7010000000000002\"} 5\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.7510000000000002\"} 5\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.8010000000000003\"} 5\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.8510000000000003\"} 5\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.9010000000000004\"} 5\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"0.9510000000000004\"} 5\nauth_server_authconfig_duration_seconds_bucket{authconfig=\"talker-api-protection\",namespace=\"authorino\",le=\"+Inf\"} 5\nauth_server_authconfig_duration_seconds_sum{authconfig=\"talker-api-protection\",namespace=\"authorino\"} 0.26967658299999997\nauth_server_authconfig_duration_seconds_count{authconfig=\"talker-api-protection\",namespace=\"authorino\"} 5\n# HELP auth_server_authconfig_response_status Response status of authconfigs sent by the auth server, partitioned by authconfig.\n# TYPE auth_server_authconfig_response_status counter\nauth_server_authconfig_response_status{authconfig=\"edge-auth\",namespace=\"authorino\",status=\"OK\"} 1\nauth_server_authconfig_response_status{authconfig=\"talker-api-protection\",namespace=\"authorino\",status=\"OK\"} 2\nauth_server_authconfig_response_status{authconfig=\"talker-api-protection\",namespace=\"authorino\",status=\"PERMISSION_DENIED\"} 2\nauth_server_authconfig_response_status{authconfig=\"talker-api-protection\",namespace=\"authorino\",status=\"UNAUTHENTICATED\"} 1\n# HELP auth_server_authconfig_total Total number of authconfigs enforced by the auth server, partitioned by authconfig.\n# TYPE auth_server_authconfig_total counter\nauth_server_authconfig_total{authconfig=\"edge-auth\",namespace=\"authorino\"} 1\nauth_server_authconfig_total{authconfig=\"talker-api-protection\",namespace=\"authorino\"} 5\n# HELP auth_server_evaluator_duration_seconds Response latency of individual authconfig rule evaluated by the auth server (in seconds).\n# TYPE auth_server_evaluator_duration_seconds histogram\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.001\"} 0\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.051000000000000004\"} 3\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.101\"} 3\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.15100000000000002\"} 4\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.201\"} 4\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.251\"} 4\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.301\"} 4\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.351\"} 4\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.40099999999999997\"} 4\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.45099999999999996\"} 4\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.501\"} 4\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.551\"} 4\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.6010000000000001\"} 4\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.6510000000000001\"} 4\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.7010000000000002\"} 4\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.7510000000000002\"} 4\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.8010000000000003\"} 4\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.8510000000000003\"} 4\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.9010000000000004\"} 4\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"0.9510000000000004\"} 4\nauth_server_evaluator_duration_seconds_bucket{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\",le=\"+Inf\"} 4\nauth_server_evaluator_duration_seconds_sum{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\"} 0.25800055\nauth_server_evaluator_duration_seconds_count{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\"} 4\n# HELP auth_server_evaluator_total Total number of evaluations of individual authconfig rule performed by the auth server.\n# TYPE auth_server_evaluator_total counter\nauth_server_evaluator_total{authconfig=\"talker-api-protection\",evaluator_name=\"geo\",evaluator_type=\"METADATA_GENERIC_HTTP\",namespace=\"authorino\"} 4\n# HELP auth_server_response_status Response status of authconfigs sent by the auth server.\n# TYPE auth_server_response_status counter\nauth_server_response_status{status=\"NOT_FOUND\"} 1\nauth_server_response_status{status=\"OK\"} 3\nauth_server_response_status{status=\"PERMISSION_DENIED\"} 2\nauth_server_response_status{status=\"UNAUTHENTICATED\"} 1\n# HELP go_gc_cycles_automatic_gc_cycles_total Count of completed GC cycles generated by the Go runtime.\n# TYPE go_gc_cycles_automatic_gc_cycles_total counter\ngo_gc_cycles_automatic_gc_cycles_total 11\n# HELP go_gc_cycles_forced_gc_cycles_total Count of completed GC cycles forced by the application.\n# TYPE go_gc_cycles_forced_gc_cycles_total counter\ngo_gc_cycles_forced_gc_cycles_total 0\n# HELP go_gc_cycles_total_gc_cycles_total Count of all completed GC cycles.\n# TYPE go_gc_cycles_total_gc_cycles_total counter\ngo_gc_cycles_total_gc_cycles_total 11\n# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.\n# TYPE go_gc_duration_seconds summary\ngo_gc_duration_seconds{quantile=\"0\"} 4.5971e-05\ngo_gc_duration_seconds{quantile=\"0.25\"} 5.69e-05\ngo_gc_duration_seconds{quantile=\"0.5\"} 0.000158594\ngo_gc_duration_seconds{quantile=\"0.75\"} 0.000324091\ngo_gc_duration_seconds{quantile=\"1\"} 0.001692423\ngo_gc_duration_seconds_sum 0.003546711\ngo_gc_duration_seconds_count 11\n# HELP go_gc_heap_allocs_by_size_bytes_total Distribution of heap allocations by approximate size. Note that this does not include tiny objects as defined by /gc/heap/tiny/allocs:objects, only tiny blocks.\n# TYPE go_gc_heap_allocs_by_size_bytes_total histogram\ngo_gc_heap_allocs_by_size_bytes_total_bucket{le=\"8.999999999999998\"} 6261\ngo_gc_heap_allocs_by_size_bytes_total_bucket{le=\"16.999999999999996\"} 42477\n[...]\ngo_gc_heap_allocs_by_size_bytes_total_bucket{le=\"32768.99999999999\"} 122133\ngo_gc_heap_allocs_by_size_bytes_total_bucket{le=\"+Inf\"} 122154\ngo_gc_heap_allocs_by_size_bytes_total_sum 1.455944e+07\ngo_gc_heap_allocs_by_size_bytes_total_count 122154\n# HELP go_gc_heap_allocs_bytes_total Cumulative sum of memory allocated to the heap by the application.\n# TYPE go_gc_heap_allocs_bytes_total counter\ngo_gc_heap_allocs_bytes_total 1.455944e+07\n# HELP go_gc_heap_allocs_objects_total Cumulative count of heap allocations triggered by the application. Note that this does not include tiny objects as defined by /gc/heap/tiny/allocs:objects, only tiny blocks.\n# TYPE go_gc_heap_allocs_objects_total counter\ngo_gc_heap_allocs_objects_total 122154\n# HELP go_gc_heap_frees_by_size_bytes_total Distribution of freed heap allocations by approximate size. Note that this does not include tiny objects as defined by /gc/heap/tiny/allocs:objects, only tiny blocks.\n# TYPE go_gc_heap_frees_by_size_bytes_total histogram\ngo_gc_heap_frees_by_size_bytes_total_bucket{le=\"8.999999999999998\"} 3789\ngo_gc_heap_frees_by_size_bytes_total_bucket{le=\"16.999999999999996\"} 31067\n[...]\ngo_gc_heap_frees_by_size_bytes_total_bucket{le=\"32768.99999999999\"} 91013\ngo_gc_heap_frees_by_size_bytes_total_bucket{le=\"+Inf\"} 91021\ngo_gc_heap_frees_by_size_bytes_total_sum 9.399936e+06\ngo_gc_heap_frees_by_size_bytes_total_count 91021\n# HELP go_gc_heap_frees_bytes_total Cumulative sum of heap memory freed by the garbage collector.\n# TYPE go_gc_heap_frees_bytes_total counter\ngo_gc_heap_frees_bytes_total 9.399936e+06\n# HELP go_gc_heap_frees_objects_total Cumulative count of heap allocations whose storage was freed by the garbage collector. Note that this does not include tiny objects as defined by /gc/heap/tiny/allocs:objects, only tiny blocks.\n# TYPE go_gc_heap_frees_objects_total counter\ngo_gc_heap_frees_objects_total 91021\n# HELP go_gc_heap_goal_bytes Heap size target for the end of the GC cycle.\n# TYPE go_gc_heap_goal_bytes gauge\ngo_gc_heap_goal_bytes 9.601744e+06\n# HELP go_gc_heap_objects_objects Number of objects, live or unswept, occupying heap memory.\n# TYPE go_gc_heap_objects_objects gauge\ngo_gc_heap_objects_objects 31133\n# HELP go_gc_heap_tiny_allocs_objects_total Count of small allocations that are packed together into blocks. These allocations are counted separately from other allocations because each individual allocation is not tracked by the runtime, only their block. Each block is already accounted for in allocs-by-size and frees-by-size.\n# TYPE go_gc_heap_tiny_allocs_objects_total counter\ngo_gc_heap_tiny_allocs_objects_total 9866\n# HELP go_gc_pauses_seconds_total Distribution individual GC-related stop-the-world pause latencies.\n# TYPE go_gc_pauses_seconds_total histogram\ngo_gc_pauses_seconds_total_bucket{le=\"9.999999999999999e-10\"} 0\ngo_gc_pauses_seconds_total_bucket{le=\"1.9999999999999997e-09\"} 0\n[...]\ngo_gc_pauses_seconds_total_bucket{le=\"206708.18602188796\"} 22\ngo_gc_pauses_seconds_total_bucket{le=\"+Inf\"} 22\ngo_gc_pauses_seconds_total_sum 0.0030393599999999996\ngo_gc_pauses_seconds_total_count 22\n# HELP go_goroutines Number of goroutines that currently exist.\n# TYPE go_goroutines gauge\ngo_goroutines 79\n# HELP go_info Information about the Go environment.\n# TYPE go_info gauge\ngo_info{version=\"go1.18.7\"} 1\n# HELP go_memory_classes_heap_free_bytes Memory that is completely free and eligible to be returned to the underlying system, but has not been. This metric is the runtime's estimate of free address space that is backed by physical memory.\n# TYPE go_memory_classes_heap_free_bytes gauge\ngo_memory_classes_heap_free_bytes 630784\n# HELP go_memory_classes_heap_objects_bytes Memory occupied by live objects and dead objects that have not yet been marked free by the garbage collector.\n# TYPE go_memory_classes_heap_objects_bytes gauge\ngo_memory_classes_heap_objects_bytes 5.159504e+06\n# HELP go_memory_classes_heap_released_bytes Memory that is completely free and has been returned to the underlying system. This metric is the runtime's estimate of free address space that is still mapped into the process, but is not backed by physical memory.\n# TYPE go_memory_classes_heap_released_bytes gauge\ngo_memory_classes_heap_released_bytes 3.858432e+06\n# HELP go_memory_classes_heap_stacks_bytes Memory allocated from the heap that is reserved for stack space, whether or not it is currently in-use.\n# TYPE go_memory_classes_heap_stacks_bytes gauge\ngo_memory_classes_heap_stacks_bytes 786432\n# HELP go_memory_classes_heap_unused_bytes Memory that is reserved for heap objects but is not currently used to hold heap objects.\n# TYPE go_memory_classes_heap_unused_bytes gauge\ngo_memory_classes_heap_unused_bytes 2.14776e+06\n# HELP go_memory_classes_metadata_mcache_free_bytes Memory that is reserved for runtime mcache structures, but not in-use.\n# TYPE go_memory_classes_metadata_mcache_free_bytes gauge\ngo_memory_classes_metadata_mcache_free_bytes 13984\n# HELP go_memory_classes_metadata_mcache_inuse_bytes Memory that is occupied by runtime mcache structures that are currently being used.\n# TYPE go_memory_classes_metadata_mcache_inuse_bytes gauge\ngo_memory_classes_metadata_mcache_inuse_bytes 2400\n# HELP go_memory_classes_metadata_mspan_free_bytes Memory that is reserved for runtime mspan structures, but not in-use.\n# TYPE go_memory_classes_metadata_mspan_free_bytes gauge\ngo_memory_classes_metadata_mspan_free_bytes 16696\n# HELP go_memory_classes_metadata_mspan_inuse_bytes Memory that is occupied by runtime mspan structures that are currently being used.\n# TYPE go_memory_classes_metadata_mspan_inuse_bytes gauge\ngo_memory_classes_metadata_mspan_inuse_bytes 114376\n# HELP go_memory_classes_metadata_other_bytes Memory that is reserved for or used to hold runtime metadata.\n# TYPE go_memory_classes_metadata_other_bytes gauge\ngo_memory_classes_metadata_other_bytes 5.544408e+06\n# HELP go_memory_classes_os_stacks_bytes Stack memory allocated by the underlying operating system.\n# TYPE go_memory_classes_os_stacks_bytes gauge\ngo_memory_classes_os_stacks_bytes 0\n# HELP go_memory_classes_other_bytes Memory used by execution trace buffers, structures for debugging the runtime, finalizer and profiler specials, and more.\n# TYPE go_memory_classes_other_bytes gauge\ngo_memory_classes_other_bytes 537777\n# HELP go_memory_classes_profiling_buckets_bytes Memory that is used by the stack trace hash map used for profiling.\n# TYPE go_memory_classes_profiling_buckets_bytes gauge\ngo_memory_classes_profiling_buckets_bytes 1.455487e+06\n# HELP go_memory_classes_total_bytes All memory mapped by the Go runtime into the current process as read-write. Note that this does not include memory mapped by code called via cgo or via the syscall package. Sum of all metrics in /memory/classes.\n# TYPE go_memory_classes_total_bytes gauge\ngo_memory_classes_total_bytes 2.026804e+07\n# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.\n# TYPE go_memstats_alloc_bytes gauge\ngo_memstats_alloc_bytes 5.159504e+06\n# HELP go_memstats_alloc_bytes_total Total number of bytes allocated, even if freed.\n# TYPE go_memstats_alloc_bytes_total counter\ngo_memstats_alloc_bytes_total 1.455944e+07\n# HELP go_memstats_buck_hash_sys_bytes Number of bytes used by the profiling bucket hash table.\n# TYPE go_memstats_buck_hash_sys_bytes gauge\ngo_memstats_buck_hash_sys_bytes 1.455487e+06\n# HELP go_memstats_frees_total Total number of frees.\n# TYPE go_memstats_frees_total counter\ngo_memstats_frees_total 100887\n# HELP go_memstats_gc_cpu_fraction The fraction of this program's available CPU time used by the GC since the program started.\n# TYPE go_memstats_gc_cpu_fraction gauge\ngo_memstats_gc_cpu_fraction 0\n# HELP go_memstats_gc_sys_bytes Number of bytes used for garbage collection system metadata.\n# TYPE go_memstats_gc_sys_bytes gauge\ngo_memstats_gc_sys_bytes 5.544408e+06\n# HELP go_memstats_heap_alloc_bytes Number of heap bytes allocated and still in use.\n# TYPE go_memstats_heap_alloc_bytes gauge\ngo_memstats_heap_alloc_bytes 5.159504e+06\n# HELP go_memstats_heap_idle_bytes Number of heap bytes waiting to be used.\n# TYPE go_memstats_heap_idle_bytes gauge\ngo_memstats_heap_idle_bytes 4.489216e+06\n# HELP go_memstats_heap_inuse_bytes Number of heap bytes that are in use.\n# TYPE go_memstats_heap_inuse_bytes gauge\ngo_memstats_heap_inuse_bytes 7.307264e+06\n# HELP go_memstats_heap_objects Number of allocated objects.\n# TYPE go_memstats_heap_objects gauge\ngo_memstats_heap_objects 31133\n# HELP go_memstats_heap_released_bytes Number of heap bytes released to OS.\n# TYPE go_memstats_heap_released_bytes gauge\ngo_memstats_heap_released_bytes 3.858432e+06\n# HELP go_memstats_heap_sys_bytes Number of heap bytes obtained from system.\n# TYPE go_memstats_heap_sys_bytes gauge\ngo_memstats_heap_sys_bytes 1.179648e+07\n# HELP go_memstats_last_gc_time_seconds Number of seconds since 1970 of last garbage collection.\n# TYPE go_memstats_last_gc_time_seconds gauge\ngo_memstats_last_gc_time_seconds 1.6461569717723043e+09\n# HELP go_memstats_lookups_total Total number of pointer lookups.\n# TYPE go_memstats_lookups_total counter\ngo_memstats_lookups_total 0\n# HELP go_memstats_mallocs_total Total number of mallocs.\n# TYPE go_memstats_mallocs_total counter\ngo_memstats_mallocs_total 132020\n# HELP go_memstats_mcache_inuse_bytes Number of bytes in use by mcache structures.\n# TYPE go_memstats_mcache_inuse_bytes gauge\ngo_memstats_mcache_inuse_bytes 2400\n# HELP go_memstats_mcache_sys_bytes Number of bytes used for mcache structures obtained from system.\n# TYPE go_memstats_mcache_sys_bytes gauge\ngo_memstats_mcache_sys_bytes 16384\n# HELP go_memstats_mspan_inuse_bytes Number of bytes in use by mspan structures.\n# TYPE go_memstats_mspan_inuse_bytes gauge\ngo_memstats_mspan_inuse_bytes 114376\n# HELP go_memstats_mspan_sys_bytes Number of bytes used for mspan structures obtained from system.\n# TYPE go_memstats_mspan_sys_bytes gauge\ngo_memstats_mspan_sys_bytes 131072\n# HELP go_memstats_next_gc_bytes Number of heap bytes when next garbage collection will take place.\n# TYPE go_memstats_next_gc_bytes gauge\ngo_memstats_next_gc_bytes 9.601744e+06\n# HELP go_memstats_other_sys_bytes Number of bytes used for other system allocations.\n# TYPE go_memstats_other_sys_bytes gauge\ngo_memstats_other_sys_bytes 537777\n# HELP go_memstats_stack_inuse_bytes Number of bytes in use by the stack allocator.\n# TYPE go_memstats_stack_inuse_bytes gauge\ngo_memstats_stack_inuse_bytes 786432\n# HELP go_memstats_stack_sys_bytes Number of bytes obtained from system for stack allocator.\n# TYPE go_memstats_stack_sys_bytes gauge\ngo_memstats_stack_sys_bytes 786432\n# HELP go_memstats_sys_bytes Number of bytes obtained from system.\n# TYPE go_memstats_sys_bytes gauge\ngo_memstats_sys_bytes 2.026804e+07\n# HELP go_sched_goroutines_goroutines Count of live goroutines.\n# TYPE go_sched_goroutines_goroutines gauge\ngo_sched_goroutines_goroutines 79\n# HELP go_sched_latencies_seconds Distribution of the time goroutines have spent in the scheduler in a runnable state before actually running.\n# TYPE go_sched_latencies_seconds histogram\ngo_sched_latencies_seconds_bucket{le=\"9.999999999999999e-10\"} 225\ngo_sched_latencies_seconds_bucket{le=\"1.9999999999999997e-09\"} 225\n[...]\ngo_sched_latencies_seconds_bucket{le=\"206708.18602188796\"} 1916\ngo_sched_latencies_seconds_bucket{le=\"+Inf\"} 1916\ngo_sched_latencies_seconds_sum 0.18081453600000003\ngo_sched_latencies_seconds_count 1916\n# HELP go_threads Number of OS threads created.\n# TYPE go_threads gauge\ngo_threads 8\n# HELP grpc_server_handled_total Total number of RPCs completed on the server, regardless of success or failure.\n# TYPE grpc_server_handled_total counter\ngrpc_server_handled_total{grpc_code=\"Aborted\",grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"Aborted\",grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"Aborted\",grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\ngrpc_server_handled_total{grpc_code=\"AlreadyExists\",grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"AlreadyExists\",grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"AlreadyExists\",grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\ngrpc_server_handled_total{grpc_code=\"Canceled\",grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"Canceled\",grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"Canceled\",grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\ngrpc_server_handled_total{grpc_code=\"DataLoss\",grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"DataLoss\",grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"DataLoss\",grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\ngrpc_server_handled_total{grpc_code=\"DeadlineExceeded\",grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"DeadlineExceeded\",grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"DeadlineExceeded\",grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\ngrpc_server_handled_total{grpc_code=\"FailedPrecondition\",grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"FailedPrecondition\",grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"FailedPrecondition\",grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\ngrpc_server_handled_total{grpc_code=\"Internal\",grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"Internal\",grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"Internal\",grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\ngrpc_server_handled_total{grpc_code=\"InvalidArgument\",grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"InvalidArgument\",grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"InvalidArgument\",grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\ngrpc_server_handled_total{grpc_code=\"NotFound\",grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"NotFound\",grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"NotFound\",grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\ngrpc_server_handled_total{grpc_code=\"OK\",grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 7\ngrpc_server_handled_total{grpc_code=\"OK\",grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"OK\",grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\ngrpc_server_handled_total{grpc_code=\"OutOfRange\",grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"OutOfRange\",grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"OutOfRange\",grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\ngrpc_server_handled_total{grpc_code=\"PermissionDenied\",grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"PermissionDenied\",grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"PermissionDenied\",grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\ngrpc_server_handled_total{grpc_code=\"ResourceExhausted\",grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"ResourceExhausted\",grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"ResourceExhausted\",grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\ngrpc_server_handled_total{grpc_code=\"Unauthenticated\",grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"Unauthenticated\",grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"Unauthenticated\",grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\ngrpc_server_handled_total{grpc_code=\"Unavailable\",grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"Unavailable\",grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"Unavailable\",grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\ngrpc_server_handled_total{grpc_code=\"Unimplemented\",grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"Unimplemented\",grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"Unimplemented\",grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\ngrpc_server_handled_total{grpc_code=\"Unknown\",grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"Unknown\",grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_handled_total{grpc_code=\"Unknown\",grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\n# HELP grpc_server_handling_seconds Histogram of response latency (seconds) of gRPC that had been application-level handled by the server.\n# TYPE grpc_server_handling_seconds histogram\ngrpc_server_handling_seconds_bucket{grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\",le=\"0.005\"} 3\ngrpc_server_handling_seconds_bucket{grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\",le=\"0.01\"} 3\ngrpc_server_handling_seconds_bucket{grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\",le=\"0.025\"} 3\ngrpc_server_handling_seconds_bucket{grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\",le=\"0.05\"} 6\ngrpc_server_handling_seconds_bucket{grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\",le=\"0.1\"} 6\ngrpc_server_handling_seconds_bucket{grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\",le=\"0.25\"} 7\ngrpc_server_handling_seconds_bucket{grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\",le=\"0.5\"} 7\ngrpc_server_handling_seconds_bucket{grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\",le=\"1\"} 7\ngrpc_server_handling_seconds_bucket{grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\",le=\"2.5\"} 7\ngrpc_server_handling_seconds_bucket{grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\",le=\"5\"} 7\ngrpc_server_handling_seconds_bucket{grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\",le=\"10\"} 7\ngrpc_server_handling_seconds_bucket{grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\",le=\"+Inf\"} 7\ngrpc_server_handling_seconds_sum{grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 0.277605516\ngrpc_server_handling_seconds_count{grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 7\n# HELP grpc_server_msg_received_total Total number of RPC stream messages received on the server.\n# TYPE grpc_server_msg_received_total counter\ngrpc_server_msg_received_total{grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 7\ngrpc_server_msg_received_total{grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_msg_received_total{grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\n# HELP grpc_server_msg_sent_total Total number of gRPC stream messages sent by the server.\n# TYPE grpc_server_msg_sent_total counter\ngrpc_server_msg_sent_total{grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 7\ngrpc_server_msg_sent_total{grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_msg_sent_total{grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\n# HELP grpc_server_started_total Total number of RPCs started on the server.\n# TYPE grpc_server_started_total counter\ngrpc_server_started_total{grpc_method=\"Check\",grpc_service=\"envoy.service.auth.v3.Authorization\",grpc_type=\"unary\"} 7\ngrpc_server_started_total{grpc_method=\"Check\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"unary\"} 0\ngrpc_server_started_total{grpc_method=\"Watch\",grpc_service=\"grpc.health.v1.Health\",grpc_type=\"server_stream\"} 0\n# HELP oidc_server_requests_total Number of get requests received on the OIDC (Festival Wristband) server.\n# TYPE oidc_server_requests_total counter\noidc_server_requests_total{authconfig=\"edge-auth\",namespace=\"authorino\",path=\"/.well-known/openid-configuration\",wristband=\"wristband\"} 1\noidc_server_requests_total{authconfig=\"edge-auth\",namespace=\"authorino\",path=\"/.well-known/openid-connect/certs\",wristband=\"wristband\"} 1\n# HELP oidc_server_response_status Status of HTTP response sent by the OIDC (Festival Wristband) server.\n# TYPE oidc_server_response_status counter\noidc_server_response_status{status=\"200\"} 2\n# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.\n# TYPE process_cpu_seconds_total counter\nprocess_cpu_seconds_total 1.42\n# HELP process_max_fds Maximum number of open file descriptors.\n# TYPE process_max_fds gauge\nprocess_max_fds 1.048576e+06\n# HELP process_open_fds Number of open file descriptors.\n# TYPE process_open_fds gauge\nprocess_open_fds 14\n# HELP process_resident_memory_bytes Resident memory size in bytes.\n# TYPE process_resident_memory_bytes gauge\nprocess_resident_memory_bytes 4.370432e+07\n# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.\n# TYPE process_start_time_seconds gauge\nprocess_start_time_seconds 1.64615612779e+09\n# HELP process_virtual_memory_bytes Virtual memory size in bytes.\n# TYPE process_virtual_memory_bytes gauge\nprocess_virtual_memory_bytes 7.65362176e+08\n# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.\n# TYPE process_virtual_memory_max_bytes gauge\nprocess_virtual_memory_max_bytes 1.8446744073709552e+19\n# HELP promhttp_metric_handler_requests_in_flight Current number of scrapes being served.\n# TYPE promhttp_metric_handler_requests_in_flight gauge\npromhttp_metric_handler_requests_in_flight 1\n# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.\n# TYPE promhttp_metric_handler_requests_total counter\npromhttp_metric_handler_requests_total{code=\"200\"} 1\npromhttp_metric_handler_requests_total{code=\"500\"} 0\npromhttp_metric_handler_requests_total{code=\"503\"} 0\n
      "},{"location":"authorino/docs/user-guides/observability/#readiness-check","title":"Readiness check","text":"

      Authorino exposes two main endpoints for health and readiness check of the AuthConfig controller:

      • /healthz: Health probe (ping) \u2013 reports \"ok\" if the controller is healthy.
      • /readyz: Readiness probe \u2013 reports \"ok\" if the controller is ready to reconcile AuthConfig-related events.

      In general, the endpoints return either 200 (\"ok\", i.e. all checks have passed) or 500 (when one or more checks failed).

      The default binding network address is :8081, which can be changed by setting the command-line flag --health-probe-addr.

      The following additional subpath is available and its corresponding check can be aggregated into the response from the main readiness probe:

      • /readyz/authconfigs: Aggregated readiness status of the AuthConfigs \u2013 reports \"ok\" if all AuthConfigs watched by the reconciler have been marked as ready.
      Important!The AuthConfig readiness check within the scope of the aggregated readiness probe endpoint is deactivated by default \u2013 i.e. this check is an opt-in check. Sending a request to the /readyz endpoint without explicitly opting-in for the AuthConfigs check, by using the include parameter, will result in a response message that disregards the actual status of the watched AuthConfigs, possibly an \"ok\" message. To read the aggregated status of the watched AuthConfigs, either use the specific endpoint /readyz/authconfigs or opt-in for the check in the aggregated endpoint by sending a request to /readyz?include=authconfigs

      Apart from include to add the aggregated status of the AuthConfigs, the following additional query string parameters are available:

      • verbose=true|false - provides more verbose response messages;
      • exclude=(check name) \u2013 to exclude a particular readiness check (for future usage).
      "},{"location":"authorino/docs/user-guides/observability/#logging","title":"Logging","text":"

      Authorino provides structured log messages (\"production\") or more log messages output to stdout in a more user-friendly format (\"development\" mode) and different level of logging.

      "},{"location":"authorino/docs/user-guides/observability/#log-levels-and-log-modes","title":"Log levels and log modes","text":"

      Authorino outputs 3 levels of log messages: (from lowest to highest level)

      1. debug
      2. info (default)
      3. error

      info logging is restricted to high-level information of the gRPC and HTTP authorization services, limiting messages to incoming request and respective outgoing response logs, with reduced details about the corresponding objects (request payload and authorization result), and without any further detailed logs of the steps in between, except for errors.

      Only debug logging will include processing details of each Auth Pipeline, such as intermediary requests to validate identities with external auth servers, requests to external sources of auth metadata or authorization policies.

      To configure the desired log level, set the spec.logLevel field of the Authorino custom resource (or --log-level command-line flag in the Authorino deployment), to one of the supported values listed above. Default log level is info.

      Apart from log level, Authorino can output messages to the logs in 2 different formats:

      • production (default): each line is a parseable JSON object with properties {\"level\":string, \"ts\":int, \"msg\":string, \"logger\":string, extra values...}
      • development: more human-readable outputs, extra stack traces and logging info, plus extra values output as JSON, in the format: <timestamp-iso-8601>\\t<log-level>\\t<logger>\\t<message>\\t{extra-values-as-json}

      To configure the desired log mode, set the spec.logMode field of the Authorino custom resource (or --log-mode command-line flag in the Authorino deployment), to one of the supported values listed above. Default log level is production.

      Example of Authorino custom resource with log level debug and log mode production:

      apiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  logLevel: debug\n  logMode: production\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\n
      "},{"location":"authorino/docs/user-guides/observability/#sensitive-data-output-to-the-logs","title":"Sensitive data output to the logs","text":"

      Authorino will never output HTTP headers and query string parameters to info log messages, as such values usually include sensitive data (e.g. access tokens, API keys and Authorino Festival Wristbands). However, debug log messages may include such sensitive information and those are not redacted.

      Therefore, DO NOT USE debug LOG LEVEL IN PRODUCTION! Instead, use either info or error.

      "},{"location":"authorino/docs/user-guides/observability/#log-messages-printed-by-authorino","title":"Log messages printed by Authorino","text":"

      Some log messages printed by Authorino and corresponding extra values included:

      logger level message extra values authorino info \"setting instance base logger\" min level=info\\|debug, mode=production\\|development authorino info \"booting up authorino\" version authorino debug \"setting up with options\" auth-config-label-selector, deep-metrics-enabled, enable-leader-election, evaluator-cache-size, ext-auth-grpc-port, ext-auth-http-port, health-probe-addr, log-level, log-mode, max-http-request-body-size, metrics-addr, oidc-http-port, oidc-tls-cert, oidc-tls-cert-key, secret-label-selector, timeout, tls-cert, tls-cert-key, watch-namespace authorino info \"attempting to acquire leader lease <namespace>/cb88a58a.authorino.kuadrant.io...\\n\" authorino info \"successfully acquired lease <namespace>/cb88a58a.authorino.kuadrant.io\\n\" authorino info \"disabling grpc auth service\" authorino info \"starting grpc auth service\" port, tls authorino error \"failed to obtain port for the grpc auth service\" authorino error \"failed to load tls cert for the grpc auth\" authorino error \"failed to start grpc auth service\" authorino info \"disabling http auth service\" authorino info \"starting http auth service\" port, tls authorino error \"failed to obtain port for the http auth service\" authorino error \"failed to start http auth service\" authorino info \"disabling http oidc service\" authorino info \"starting http oidc service\" port, tls authorino error \"failed to obtain port for the http oidc service\" authorino error \"failed to start http oidc service\" authorino info \"starting manager\" authorino error \"unable to start manager\" authorino error \"unable to create controller\" controller=authconfig\\|secret\\|authconfigstatusupdate authorino error \"problem running manager\" authorino info \"starting status update manager\" authorino error \"unable to start status update manager\" authorino error \"problem running status update manager\" authorino.controller-runtime.metrics info \"metrics server is starting to listen\" addr authorino.controller-runtime.manager info \"starting metrics server\" path authorino.controller-runtime.manager.events debug \"Normal\" object={kind=ConfigMap, apiVersion=v1}, reauthorino.ason=LeaderElection, message=\"authorino-controller-manager-* became leader\" authorino.controller-runtime.manager.events debug \"Normal\" object={kind=Lease, apiVersion=coordination.k8s.io/v1}, reauthorino.ason=LeaderElection, message=\"authorino-controller-manager-* became leader\" authorino.controller-runtime.manager.controller.authconfig info \"resource reconciled\" authconfig authorino.controller-runtime.manager.controller.authconfig info \"host already taken\" authconfig, host authorino.controller-runtime.manager.controller.authconfig.statusupdater debug \"resource status did not change\" authconfig authorino.controller-runtime.manager.controller.authconfig.statusupdater debug \"resource status changed\" authconfig, authconfig/status authorino.controller-runtime.manager.controller.authconfig.statusupdater error \"failed to update the resource\" authconfig authorino.controller-runtime.manager.controller.authconfig.statusupdater info \"resource status updated\" authconfig authorino.controller-runtime.manager.controller.secret info \"resource reconciled\" authorino.controller-runtime.manager.controller.secret info \"could not reconcile authconfigs using api key authorino.authentication\" authorino.service.oidc info \"request received\" request id, url, realm, config, path authorino.service.oidc info \"response sent\" request id authorino.service.oidc error \"failed to serve oidc request\" authorino.service.auth info \"incoming authorization request\" request id, object authorino.service.auth debug \"incoming authorization request\" request id, object authorino.service.auth info \"outgoing authorization response\" request id, authorized, response, object authorino.service.auth debug \"outgoing authorization response\" request id, authorized, response, object authorino.service.auth error \"failed to create dynamic metadata\" request id, object authorino.service.auth.authpipeline debug \"skipping config\" request id, config, reason authorino.service.auth.authpipeline.identity debug \"identity validated\" request id, config, object authorino.service.auth.authpipeline.identity debug \"cannot validate identity\" request id, config, reason authorino.service.auth.authpipeline.identity error \"failed to extend identity object\" request id, config, object authorino.service.auth.authpipeline.identity.oidc error \"failed to discovery openid connect configuration\" endpoint authorino.service.auth.authpipeline.identity.oidc debug \"auto-refresh of openid connect configuration disabled\" endpoint, reason authorino.service.auth.authpipeline.identity.oidc debug \"openid connect configuration updated\" endpoint authorino.service.auth.authpipeline.identity.oauth2 debug \"sending token introspection request\" request id, url, data authorino.service.auth.authpipeline.identity.kubernetesauth debug \"calling kubernetes token review api\" request id, tokenreview authorino.service.auth.authpipeline.identity.apikey error \"Something went wrong fetching the authorized credentials\" authorino.service.auth.authpipeline.metadata debug \"fetched auth metadata\" request id, config, object authorino.service.auth.authpipeline.metadata debug \"cannot fetch metadata\" request id, config, reason authorino.service.auth.authpipeline.metadata.http debug \"sending request\" request id, method, url, headers authorino.service.auth.authpipeline.metadata.userinfo debug \"fetching user info\" request id, endpoint authorino.service.auth.authpipeline.metadata.uma debug \"requesting pat\" request id, url, data, headers authorino.service.auth.authpipeline.metadata.uma debug \"querying resources by uri\" request id, url authorino.service.auth.authpipeline.metadata.uma debug \"getting resource data\" request id, url authorino.service.auth.authpipeline.authorization debug \"evaluating for input\" request id, input authorino.service.auth.authpipeline.authorization debug \"access granted\" request id, config, object authorino.service.auth.authpipeline.authorization debug \"access denied\" request id, config, reason authorino.service.auth.authpipeline.authorization.opa error \"invalid response from policy evaluation\" policy authorino.service.auth.authpipeline.authorization.opa error \"failed to precompile policy\" policy authorino.service.auth.authpipeline.authorization.opa error \"failed to download policy from external registry\" policy, endpoint authorino.service.auth.authpipeline.authorization.opa error \"failed to refresh policy from external registry\" policy, endpoint authorino.service.auth.authpipeline.authorization.opa debug \"external policy unchanged\" policy, endpoint authorino.service.auth.authpipeline.authorization.opa debug \"auto-refresh of external policy disabled\" policy, endpoint, reason authorino.service.auth.authpipeline.authorization.opa info \"policy updated from external registry\" policy, endpoint authorino.service.auth.authpipeline.authorization.kubernetesauthz debug \"calling kubernetes subject access review api\" request id, subjectaccessreview authorino.service.auth.authpipeline.response debug \"dynamic response built\" request id, config, object authorino.service.auth.authpipeline.response debug \"cannot build dynamic response\" request id, config, reason authorino.service.auth.http debug \"bad request\" request id authorino.service.auth.http debug \"not found\" request id authorino.service.auth.http debug \"request body too large\" request id authorino.service.auth.http debug \"service unavailable\" request id"},{"location":"authorino/docs/user-guides/observability/#examples","title":"Examples","text":"

      The examples below are all with --log-level=debug and --log-mode=production.

      Booting up the service
      {\"level\":\"info\",\"ts\":1669220526.929678,\"logger\":\"authorino\",\"msg\":\"setting instance base logger\",\"min level\":\"debug\",\"mode\":\"production\"}\n{\"level\":\"info\",\"ts\":1669220526.929718,\"logger\":\"authorino\",\"msg\":\"booting up authorino\",\"version\":\"7688cfa32317a49f0461414e741c980e9c05dba3\"}\n{\"level\":\"debug\",\"ts\":1669220526.9297278,\"logger\":\"authorino\",\"msg\":\"setting up with options\",\"auth-config-label-selector\":\"\",\"deep-metrics-enabled\":\"false\",\"enable-leader-election\":\"false\",\"evaluator-cache-size\":\"1\",\"ext-auth-grpc-port\":\"50051\",\"ext-auth-http-port\":\"5001\",\"health-probe-addr\":\":8081\",\"log-level\":\"debug\",\"log-mode\":\"production\",\"max-http-request-body-size\":\"8192\",\"metrics-addr\":\":8080\",\"oidc-http-port\":\"8083\",\"oidc-tls-cert\":\"/etc/ssl/certs/oidc.crt\",\"oidc-tls-cert-key\":\"/etc/ssl/private/oidc.key\",\"secret-label-selector\":\"authorino.kuadrant.io/managed-by=authorino\",\"timeout\":\"0\",\"tls-cert\":\"/etc/ssl/certs/tls.crt\",\"tls-cert-key\":\"/etc/ssl/private/tls.key\",\"watch-namespace\":\"default\"}\n{\"level\":\"info\",\"ts\":1669220527.9816976,\"logger\":\"authorino.controller-runtime.metrics\",\"msg\":\"Metrics server is starting to listen\",\"addr\":\":8080\"}\n{\"level\":\"info\",\"ts\":1669220527.9823213,\"logger\":\"authorino\",\"msg\":\"starting grpc auth service\",\"port\":50051,\"tls\":true}\n{\"level\":\"info\",\"ts\":1669220527.9823658,\"logger\":\"authorino\",\"msg\":\"starting http auth service\",\"port\":5001,\"tls\":true}\n{\"level\":\"info\",\"ts\":1669220527.9824295,\"logger\":\"authorino\",\"msg\":\"starting http oidc service\",\"port\":8083,\"tls\":true}\n{\"level\":\"info\",\"ts\":1669220527.9825335,\"logger\":\"authorino\",\"msg\":\"starting manager\"}\n{\"level\":\"info\",\"ts\":1669220527.982721,\"logger\":\"authorino\",\"msg\":\"Starting server\",\"path\":\"/metrics\",\"kind\":\"metrics\",\"addr\":\"[::]:8080\"}\n{\"level\":\"info\",\"ts\":1669220527.982766,\"logger\":\"authorino\",\"msg\":\"Starting server\",\"kind\":\"health probe\",\"addr\":\"[::]:8081\"}\n{\"level\":\"info\",\"ts\":1669220527.9829438,\"logger\":\"authorino.controller.secret\",\"msg\":\"Starting EventSource\",\"reconciler group\":\"\",\"reconciler kind\":\"Secret\",\"source\":\"kind source: *v1.Secret\"}\n{\"level\":\"info\",\"ts\":1669220527.9829693,\"logger\":\"authorino.controller.secret\",\"msg\":\"Starting Controller\",\"reconciler group\":\"\",\"reconciler kind\":\"Secret\"}\n{\"level\":\"info\",\"ts\":1669220527.9829714,\"logger\":\"authorino.controller.authconfig\",\"msg\":\"Starting EventSource\",\"reconciler group\":\"authorino.kuadrant.io\",\"reconciler kind\":\"AuthConfig\",\"source\":\"kind source: *v1beta1.AuthConfig\"}\n{\"level\":\"info\",\"ts\":1669220527.9830208,\"logger\":\"authorino.controller.authconfig\",\"msg\":\"Starting Controller\",\"reconciler group\":\"authorino.kuadrant.io\",\"reconciler kind\":\"AuthConfig\"}\n{\"level\":\"info\",\"ts\":1669220528.0834699,\"logger\":\"authorino.controller.authconfig\",\"msg\":\"Starting workers\",\"reconciler group\":\"authorino.kuadrant.io\",\"reconciler kind\":\"AuthConfig\",\"worker count\":1}\n{\"level\":\"info\",\"ts\":1669220528.0836608,\"logger\":\"authorino.controller.secret\",\"msg\":\"Starting workers\",\"reconciler group\":\"\",\"reconciler kind\":\"Secret\",\"worker count\":1}\n{\"level\":\"info\",\"ts\":1669220529.041266,\"logger\":\"authorino\",\"msg\":\"starting status update manager\"}\n{\"level\":\"info\",\"ts\":1669220529.0418258,\"logger\":\"authorino.controller.authconfig\",\"msg\":\"Starting EventSource\",\"reconciler group\":\"authorino.kuadrant.io\",\"reconciler kind\":\"AuthConfig\",\"source\":\"kind source: *v1beta1.AuthConfig\"}\n{\"level\":\"info\",\"ts\":1669220529.0418813,\"logger\":\"authorino.controller.authconfig\",\"msg\":\"Starting Controller\",\"reconciler group\":\"authorino.kuadrant.io\",\"reconciler kind\":\"AuthConfig\"}\n{\"level\":\"info\",\"ts\":1669220529.1432905,\"logger\":\"authorino.controller.authconfig\",\"msg\":\"Starting workers\",\"reconciler group\":\"authorino.kuadrant.io\",\"reconciler kind\":\"AuthConfig\",\"worker count\":1}\n
      Reconciling an AuthConfig and 2 related API key secrets
      {\"level\":\"debug\",\"ts\":1669221208.7473805,\"logger\":\"authorino.controller-runtime.manager.controller.authconfig.statusupdater\",\"msg\":\"resource status changed\",\"authconfig\":\"default/talker-api-protection\",\"authconfig/status\":{\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastTransitionTime\":\"2022-11-23T16:33:28Z\",\"reason\":\"HostsNotLinked\",\"message\":\"No hosts linked to the resource\"},{\"type\":\"Ready\",\"status\":\"False\",\"lastTransitionTime\":\"2022-11-23T16:33:28Z\",\"reason\":\"Unknown\"}],\"summary\":{\"ready\":false,\"hostsReady\":[],\"numHostsReady\":\"0/1\",\"numIdentitySources\":1,\"numMetadataSources\":0,\"numAuthorizationPolicies\":0,\"numResponseItems\":0,\"festivalWristbandEnabled\":false}}}\n{\"level\":\"info\",\"ts\":1669221208.7496614,\"logger\":\"authorino.controller-runtime.manager.controller.authconfig\",\"msg\":\"resource reconciled\",\"authconfig\":\"default/talker-api-protection\"}\n{\"level\":\"info\",\"ts\":1669221208.7532616,\"logger\":\"authorino.controller-runtime.manager.controller.authconfig\",\"msg\":\"resource reconciled\",\"authconfig\":\"default/talker-api-protection\"}\n{\"level\":\"debug\",\"ts\":1669221208.7535005,\"logger\":\"authorino.controller.secret\",\"msg\":\"adding k8s secret to the index\",\"reconciler group\":\"\",\"reconciler kind\":\"Secret\",\"name\":\"api-key-1\",\"namespace\":\"default\",\"authconfig\":\"default/talker-api-protection\",\"config\":\"friends\"}\n{\"level\":\"debug\",\"ts\":1669221208.7535596,\"logger\":\"authorino.controller.secret.apikey\",\"msg\":\"api key added\",\"reconciler group\":\"\",\"reconciler kind\":\"Secret\",\"name\":\"api-key-1\",\"namespace\":\"default\"}\n{\"level\":\"info\",\"ts\":1669221208.7536132,\"logger\":\"authorino.controller-runtime.manager.controller.secret\",\"msg\":\"resource reconciled\",\"secret\":\"default/api-key-1\"}\n{\"level\":\"info\",\"ts\":1669221208.753772,\"logger\":\"authorino.controller-runtime.manager.controller.authconfig.statusupdater\",\"msg\":\"resource status updated\",\"authconfig\":\"default/talker-api-protection\"}\n{\"level\":\"debug\",\"ts\":1669221208.753835,\"logger\":\"authorino.controller-runtime.manager.controller.authconfig.statusupdater\",\"msg\":\"resource status changed\",\"authconfig\":\"default/talker-api-protection\",\"authconfig/status\":{\"conditions\":[{\"type\":\"Available\",\"status\":\"True\",\"lastTransitionTime\":\"2022-11-23T16:33:28Z\",\"reason\":\"HostsLinked\"},{\"type\":\"Ready\",\"status\":\"True\",\"lastTransitionTime\":\"2022-11-23T16:33:28Z\",\"reason\":\"Reconciled\"}],\"summary\":{\"ready\":true,\"hostsReady\":[\"talker-api.127.0.0.1.nip.io\"],\"numHostsReady\":\"1/1\",\"numIdentitySources\":1,\"numMetadataSources\":0,\"numAuthorizationPolicies\":0,\"numResponseItems\":0,\"festivalWristbandEnabled\":false}}}\n{\"level\":\"info\",\"ts\":1669221208.7571108,\"logger\":\"authorino.controller-runtime.manager.controller.authconfig\",\"msg\":\"resource reconciled\",\"authconfig\":\"default/talker-api-protection\"}\n{\"level\":\"info\",\"ts\":1669221208.7573664,\"logger\":\"authorino.controller-runtime.manager.controller.authconfig.statusupdater\",\"msg\":\"resource status updated\",\"authconfig\":\"default/talker-api-protection\"}\n{\"level\":\"debug\",\"ts\":1669221208.757429,\"logger\":\"authorino.controller-runtime.manager.controller.authconfig.statusupdater\",\"msg\":\"resource status did not change\",\"authconfig\":\"default/talker-api-protection\"}\n{\"level\":\"debug\",\"ts\":1669221208.7586699,\"logger\":\"authorino.controller.secret\",\"msg\":\"adding k8s secret to the index\",\"reconciler group\":\"\",\"reconciler kind\":\"Secret\",\"name\":\"api-key-2\",\"namespace\":\"default\",\"authconfig\":\"default/talker-api-protection\",\"config\":\"friends\"}\n{\"level\":\"debug\",\"ts\":1669221208.7586884,\"logger\":\"authorino.controller.secret.apikey\",\"msg\":\"api key added\",\"reconciler group\":\"\",\"reconciler kind\":\"Secret\",\"name\":\"api-key-2\",\"namespace\":\"default\"}\n{\"level\":\"info\",\"ts\":1669221208.7586913,\"logger\":\"authorino.controller-runtime.manager.controller.secret\",\"msg\":\"resource reconciled\",\"secret\":\"default/api-key-2\"}\n{\"level\":\"debug\",\"ts\":1669221208.7597604,\"logger\":\"authorino.controller-runtime.manager.controller.authconfig.statusupdater\",\"msg\":\"resource status did not change\",\"authconfig\":\"default/talker-api-protection\"}\n
      Enforcing an AuthConfig with authentication based on Kubernetes tokens:

      • identity: k8s-auth, oidc, oauth2, apikey
      • metadata: http, oidc userinfo
      • authorization: opa, k8s-authz
      • response: wristband
      {\"level\":\"info\",\"ts\":1634830460.1486168,\"logger\":\"authorino.service.auth\",\"msg\":\"incoming authorization request\",\"request id\":\"8157480586935853928\",\"object\":{\"source\":{\"address\":{\"Address\":{\"SocketAddress\":{\"address\":\"127.0.0.1\",\"PortSpecifier\":{\"PortValue\":53144}}}}},\"destination\":{\"address\":{\"Address\":{\"SocketAddress\":{\"address\":\"127.0.0.1\",\"PortSpecifier\":{\"PortValue\":8000}}}}},\"request\":{\"http\":{\"id\":\"8157480586935853928\",\"method\":\"GET\",\"path\":\"/hello\",\"host\":\"talker-api\",\"scheme\":\"http\"}}}}\n{\"level\":\"debug\",\"ts\":1634830460.1491194,\"logger\":\"authorino.service.auth\",\"msg\":\"incoming authorization request\",\"request id\":\"8157480586935853928\",\"object\":{\"source\":{\"address\":{\"Address\":{\"SocketAddress\":{\"address\":\"127.0.0.1\",\"PortSpecifier\":{\"PortValue\":53144}}}}},\"destination\":{\"address\":{\"Address\":{\"SocketAddress\":{\"address\":\"127.0.0.1\",\"PortSpecifier\":{\"PortValue\":8000}}}}},\"request\":{\"time\":{\"seconds\":1634830460,\"nanos\":147259000},\"http\":{\"id\":\"8157480586935853928\",\"method\":\"GET\",\"headers\":{\":authority\":\"talker-api\",\":method\":\"GET\",\":path\":\"/hello\",\":scheme\":\"http\",\"accept\":\"*/*\",\"authorization\":\"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkRsVWJZMENyVy1sZ0tFMVRMd19pcTFUWGtTYUl6T0hyWks0VHhKYnpEZUUifQ.eyJhdWQiOlsidGFsa2VyLWFwaSJdLCJleHAiOjE2MzQ4MzEwNTEsImlhdCI6MTYzNDgzMDQ1MSwiaXNzIjoiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiLCJrdWJlcm5ldGVzLmlvIjp7Im5hbWVzcGFjZSI6ImF1dGhvcmlubyIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhcGktY29uc3VtZXItMSIsInVpZCI6ImI0MGY1MzFjLWVjYWItNGYzMS1hNDk2LTJlYmM3MmFkZDEyMSJ9fSwibmJmIjoxNjM0ODMwNDUxLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6YXV0aG9yaW5vOmFwaS1jb25zdW1lci0xIn0.PaP0vqdl5DPfErr84KfVhPdlsGAPgsw0NkDaA9rne1zXjzcO7KPPbXhFwZC-oIjSGG1HfRMSoQeCXbQz24PSATmX8l1T52a9IFeXgP7sQmXZIDbiPfTm3X09kIIlfPKHhK_f-jQwRIpMRqNgLntlZ-xXX3P1fOBBUYR8obTPAQ6NDDaLHxw2SAmHFTQWjM_DInPDemXX0mEm7nCPKifsNxHaQH4wx4CD3LCLGbCI9FHNf2Crid8mmGJXf4wzcH1VuKkpUlsmnlUgTG2bfT2lbhSF2lBmrrhTJyYk6_aA09DwL4Bf4kvG-JtCq0Bkd_XynViIsOtOnAhgmdSPkfr-oA\",\"user-agent\":\"curl/7.65.3\",\"x-envoy-internal\":\"true\",\"x-forwarded-for\":\"10.244.0.11\",\"x-forwarded-proto\":\"http\",\"x-request-id\":\"4c5d5c97-e15b-46a3-877a-d8188e09e08f\"},\"path\":\"/hello\",\"host\":\"talker-api\",\"scheme\":\"http\",\"protocol\":\"HTTP/1.1\"}},\"context_extensions\":{\"virtual_host\":\"local_service\"},\"metadata_context\":{}}}\n{\"level\":\"debug\",\"ts\":1634830460.150506,\"logger\":\"authorino.service.auth.authpipeline.identity.kubernetesauth\",\"msg\":\"calling kubernetes token review api\",\"request id\":\"8157480586935853928\",\"tokenreview\":{\"metadata\":{\"creationTimestamp\":null},\"spec\":{\"token\":\"eyJhbGciOiJSUzI1NiIsImtpZCI6IkRsVWJZMENyVy1sZ0tFMVRMd19pcTFUWGtTYUl6T0hyWks0VHhKYnpEZUUifQ.eyJhdWQiOlsidGFsa2VyLWFwaSJdLCJleHAiOjE2MzQ4MzEwNTEsImlhdCI6MTYzNDgzMDQ1MSwiaXNzIjoiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiLCJrdWJlcm5ldGVzLmlvIjp7Im5hbWVzcGFjZSI6ImF1dGhvcmlubyIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhcGktY29uc3VtZXItMSIsInVpZCI6ImI0MGY1MzFjLWVjYWItNGYzMS1hNDk2LTJlYmM3MmFkZDEyMSJ9fSwibmJmIjoxNjM0ODMwNDUxLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6YXV0aG9yaW5vOmFwaS1jb25zdW1lci0xIn0.PaP0vqdl5DPfErr84KfVhPdlsGAPgsw0NkDaA9rne1zXjzcO7KPPbXhFwZC-oIjSGG1HfRMSoQeCXbQz24PSATmX8l1T52a9IFeXgP7sQmXZIDbiPfTm3X09kIIlfPKHhK_f-jQwRIpMRqNgLntlZ-xXX3P1fOBBUYR8obTPAQ6NDDaLHxw2SAmHFTQWjM_DInPDemXX0mEm7nCPKifsNxHaQH4wx4CD3LCLGbCI9FHNf2Crid8mmGJXf4wzcH1VuKkpUlsmnlUgTG2bfT2lbhSF2lBmrrhTJyYk6_aA09DwL4Bf4kvG-JtCq0Bkd_XynViIsOtOnAhgmdSPkfr-oA\",\"audiences\":[\"talker-api\"]},\"status\":{\"user\":{}}}}\n{\"level\":\"debug\",\"ts\":1634830460.1509938,\"logger\":\"authorino.service.auth.authpipeline.identity\",\"msg\":\"cannot validate identity\",\"request id\":\"8157480586935853928\",\"config\":{\"Name\":\"api-keys\",\"ExtendedProperties\":[{\"Name\":\"sub\",\"Value\":{\"Static\":null,\"Pattern\":\"auth.identity.metadata.annotations.userid\"}}],\"OAuth2\":null,\"OIDC\":null,\"MTLS\":null,\"HMAC\":null,\"APIKey\":{\"AuthCredentials\":{\"KeySelector\":\"APIKEY\",\"In\":\"authorization_header\"},\"Name\":\"api-keys\",\"LabelSelectors\":{\"audience\":\"talker-api\",\"authorino.kuadrant.io/managed-by\":\"authorino\"}},\"KubernetesAuth\":null},\"reason\":\"credential not found\"}\n{\"level\":\"debug\",\"ts\":1634830460.1517606,\"logger\":\"authorino.service.auth.authpipeline.identity.oauth2\",\"msg\":\"sending token introspection request\",\"request id\":\"8157480586935853928\",\"url\":\"http://talker-api:523b92b6-625d-4e1e-a313-77e7a8ae4e88@keycloak:8080/realms/kuadrant/protocol/openid-connect/token/introspect\",\"data\":\"token=eyJhbGciOiJSUzI1NiIsImtpZCI6IkRsVWJZMENyVy1sZ0tFMVRMd19pcTFUWGtTYUl6T0hyWks0VHhKYnpEZUUifQ.eyJhdWQiOlsidGFsa2VyLWFwaSJdLCJleHAiOjE2MzQ4MzEwNTEsImlhdCI6MTYzNDgzMDQ1MSwiaXNzIjoiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiLCJrdWJlcm5ldGVzLmlvIjp7Im5hbWVzcGFjZSI6ImF1dGhvcmlubyIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhcGktY29uc3VtZXItMSIsInVpZCI6ImI0MGY1MzFjLWVjYWItNGYzMS1hNDk2LTJlYmM3MmFkZDEyMSJ9fSwibmJmIjoxNjM0ODMwNDUxLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6YXV0aG9yaW5vOmFwaS1jb25zdW1lci0xIn0.PaP0vqdl5DPfErr84KfVhPdlsGAPgsw0NkDaA9rne1zXjzcO7KPPbXhFwZC-oIjSGG1HfRMSoQeCXbQz24PSATmX8l1T52a9IFeXgP7sQmXZIDbiPfTm3X09kIIlfPKHhK_f-jQwRIpMRqNgLntlZ-xXX3P1fOBBUYR8obTPAQ6NDDaLHxw2SAmHFTQWjM_DInPDemXX0mEm7nCPKifsNxHaQH4wx4CD3LCLGbCI9FHNf2Crid8mmGJXf4wzcH1VuKkpUlsmnlUgTG2bfT2lbhSF2lBmrrhTJyYk6_aA09DwL4Bf4kvG-JtCq0Bkd_XynViIsOtOnAhgmdSPkfr-oA&token_type_hint=requesting_party_token\"}\n{\"level\":\"debug\",\"ts\":1634830460.1620777,\"logger\":\"authorino.service.auth.authpipeline.identity\",\"msg\":\"identity validated\",\"request id\":\"8157480586935853928\",\"config\":{\"Name\":\"k8s-service-accounts\",\"ExtendedProperties\":[],\"OAuth2\":null,\"OIDC\":null,\"MTLS\":null,\"HMAC\":null,\"APIKey\":null,\"KubernetesAuth\":{\"AuthCredentials\":{\"KeySelector\":\"Bearer\",\"In\":\"authorization_header\"}}},\"object\":{\"aud\":[\"talker-api\"],\"exp\":1634831051,\"iat\":1634830451,\"iss\":\"https://kubernetes.default.svc.cluster.local\",\"kubernetes.io\":{\"namespace\":\"authorino\",\"serviceaccount\":{\"name\":\"api-consumer-1\",\"uid\":\"b40f531c-ecab-4f31-a496-2ebc72add121\"}},\"nbf\":1634830451,\"sub\":\"system:serviceaccount:authorino:api-consumer-1\"}}\n{\"level\":\"debug\",\"ts\":1634830460.1622565,\"logger\":\"authorino.service.auth.authpipeline.metadata.uma\",\"msg\":\"requesting pat\",\"request id\":\"8157480586935853928\",\"url\":\"http://talker-api:523b92b6-625d-4e1e-a313-77e7a8ae4e88@keycloak:8080/realms/kuadrant/protocol/openid-connect/token\",\"data\":\"grant_type=client_credentials\",\"headers\":{\"Content-Type\":[\"application/x-www-form-urlencoded\"]}}\n{\"level\":\"debug\",\"ts\":1634830460.1670353,\"logger\":\"authorino.service.auth.authpipeline.metadata.http\",\"msg\":\"sending request\",\"request id\":\"8157480586935853928\",\"method\":\"GET\",\"url\":\"http://talker-api.default.svc.cluster.local:3000/metadata?encoding=text/plain&original_path=/hello\",\"headers\":{\"Content-Type\":[\"text/plain\"]}}\n{\"level\":\"debug\",\"ts\":1634830460.169326,\"logger\":\"authorino.service.auth.authpipeline.metadata\",\"msg\":\"cannot fetch metadata\",\"request id\":\"8157480586935853928\",\"config\":{\"Name\":\"oidc-userinfo\",\"UserInfo\":{\"OIDC\":{\"AuthCredentials\":{\"KeySelector\":\"Bearer\",\"In\":\"authorization_header\"},\"Endpoint\":\"http://keycloak:8080/realms/kuadrant\"}},\"UMA\":null,\"GenericHTTP\":null},\"reason\":\"Missing identity for OIDC issuer http://keycloak:8080/realms/kuadrant. Skipping related UserInfo metadata.\"}\n{\"level\":\"debug\",\"ts\":1634830460.1753876,\"logger\":\"authorino.service.auth.authpipeline.metadata\",\"msg\":\"fetched auth metadata\",\"request id\":\"8157480586935853928\",\"config\":{\"Name\":\"http-metadata\",\"UserInfo\":null,\"UMA\":null,\"GenericHTTP\":{\"Endpoint\":\"http://talker-api.default.svc.cluster.local:3000/metadata?encoding=text/plain&original_path={context.request.http.path}\",\"Method\":\"GET\",\"Parameters\":[],\"ContentType\":\"application/x-www-form-urlencoded\",\"SharedSecret\":\"\",\"AuthCredentials\":{\"KeySelector\":\"Bearer\",\"In\":\"authorization_header\"}}},\"object\":{\"body\":\"\",\"headers\":{\"Accept-Encoding\":\"gzip\",\"Content-Type\":\"text/plain\",\"Host\":\"talker-api.default.svc.cluster.local:3000\",\"User-Agent\":\"Go-http-client/1.1\",\"Version\":\"HTTP/1.1\"},\"method\":\"GET\",\"path\":\"/metadata\",\"query_string\":\"encoding=text/plain&original_path=/hello\",\"uuid\":\"1aa6ac66-3179-4351-b1a7-7f6a761d5b61\"}}\n{\"level\":\"debug\",\"ts\":1634830460.2331996,\"logger\":\"authorino.service.auth.authpipeline.metadata.uma\",\"msg\":\"querying resources by uri\",\"request id\":\"8157480586935853928\",\"url\":\"http://keycloak:8080/realms/kuadrant/authz/protection/resource_set?uri=/hello\"}\n{\"level\":\"debug\",\"ts\":1634830460.2495668,\"logger\":\"authorino.service.auth.authpipeline.metadata.uma\",\"msg\":\"getting resource data\",\"request id\":\"8157480586935853928\",\"url\":\"http://keycloak:8080/realms/kuadrant/authz/protection/resource_set/e20d194c-274c-4845-8c02-0ca413c9bf18\"}\n{\"level\":\"debug\",\"ts\":1634830460.2927864,\"logger\":\"authorino.service.auth.authpipeline.metadata\",\"msg\":\"fetched auth metadata\",\"request id\":\"8157480586935853928\",\"config\":{\"Name\":\"uma-resource-registry\",\"UserInfo\":null,\"UMA\":{\"Endpoint\":\"http://keycloak:8080/realms/kuadrant\",\"ClientID\":\"talker-api\",\"ClientSecret\":\"523b92b6-625d-4e1e-a313-77e7a8ae4e88\"},\"GenericHTTP\":null},\"object\":[{\"_id\":\"e20d194c-274c-4845-8c02-0ca413c9bf18\",\"attributes\":{},\"displayName\":\"hello\",\"name\":\"hello\",\"owner\":{\"id\":\"57a645a5-fb67-438b-8be5-dfb971666dbc\"},\"ownerManagedAccess\":false,\"resource_scopes\":[],\"uris\":[\"/hi\",\"/hello\"]}]}\n{\"level\":\"debug\",\"ts\":1634830460.2930083,\"logger\":\"authorino.service.auth.authpipeline.authorization\",\"msg\":\"evaluating for input\",\"request id\":\"8157480586935853928\",\"input\":{\"context\":{\"source\":{\"address\":{\"Address\":{\"SocketAddress\":{\"address\":\"127.0.0.1\",\"PortSpecifier\":{\"PortValue\":53144}}}}},\"destination\":{\"address\":{\"Address\":{\"SocketAddress\":{\"address\":\"127.0.0.1\",\"PortSpecifier\":{\"PortValue\":8000}}}}},\"request\":{\"time\":{\"seconds\":1634830460,\"nanos\":147259000},\"http\":{\"id\":\"8157480586935853928\",\"method\":\"GET\",\"headers\":{\":authority\":\"talker-api\",\":method\":\"GET\",\":path\":\"/hello\",\":scheme\":\"http\",\"accept\":\"*/*\",\"authorization\":\"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkRsVWJZMENyVy1sZ0tFMVRMd19pcTFUWGtTYUl6T0hyWks0VHhKYnpEZUUifQ.eyJhdWQiOlsidGFsa2VyLWFwaSJdLCJleHAiOjE2MzQ4MzEwNTEsImlhdCI6MTYzNDgzMDQ1MSwiaXNzIjoiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiLCJrdWJlcm5ldGVzLmlvIjp7Im5hbWVzcGFjZSI6ImF1dGhvcmlubyIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhcGktY29uc3VtZXItMSIsInVpZCI6ImI0MGY1MzFjLWVjYWItNGYzMS1hNDk2LTJlYmM3MmFkZDEyMSJ9fSwibmJmIjoxNjM0ODMwNDUxLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6YXV0aG9yaW5vOmFwaS1jb25zdW1lci0xIn0.PaP0vqdl5DPfErr84KfVhPdlsGAPgsw0NkDaA9rne1zXjzcO7KPPbXhFwZC-oIjSGG1HfRMSoQeCXbQz24PSATmX8l1T52a9IFeXgP7sQmXZIDbiPfTm3X09kIIlfPKHhK_f-jQwRIpMRqNgLntlZ-xXX3P1fOBBUYR8obTPAQ6NDDaLHxw2SAmHFTQWjM_DInPDemXX0mEm7nCPKifsNxHaQH4wx4CD3LCLGbCI9FHNf2Crid8mmGJXf4wzcH1VuKkpUlsmnlUgTG2bfT2lbhSF2lBmrrhTJyYk6_aA09DwL4Bf4kvG-JtCq0Bkd_XynViIsOtOnAhgmdSPkfr-oA\",\"user-agent\":\"curl/7.65.3\",\"x-envoy-internal\":\"true\",\"x-forwarded-for\":\"10.244.0.11\",\"x-forwarded-proto\":\"http\",\"x-request-id\":\"4c5d5c97-e15b-46a3-877a-d8188e09e08f\"},\"path\":\"/hello\",\"host\":\"talker-api\",\"scheme\":\"http\",\"protocol\":\"HTTP/1.1\"}},\"context_extensions\":{\"virtual_host\":\"local_service\"},\"metadata_context\":{}},\"auth\":{\"identity\":{\"aud\":[\"talker-api\"],\"exp\":1634831051,\"iat\":1634830451,\"iss\":\"https://kubernetes.default.svc.cluster.local\",\"kubernetes.io\":{\"namespace\":\"authorino\",\"serviceaccount\":{\"name\":\"api-consumer-1\",\"uid\":\"b40f531c-ecab-4f31-a496-2ebc72add121\"}},\"nbf\":1634830451,\"sub\":\"system:serviceaccount:authorino:api-consumer-1\"},\"metadata\":{\"http-metadata\":{\"body\":\"\",\"headers\":{\"Accept-Encoding\":\"gzip\",\"Content-Type\":\"text/plain\",\"Host\":\"talker-api.default.svc.cluster.local:3000\",\"User-Agent\":\"Go-http-client/1.1\",\"Version\":\"HTTP/1.1\"},\"method\":\"GET\",\"path\":\"/metadata\",\"query_string\":\"encoding=text/plain&original_path=/hello\",\"uuid\":\"1aa6ac66-3179-4351-b1a7-7f6a761d5b61\"},\"uma-resource-registry\":[{\"_id\":\"e20d194c-274c-4845-8c02-0ca413c9bf18\",\"attributes\":{},\"displayName\":\"hello\",\"name\":\"hello\",\"owner\":{\"id\":\"57a645a5-fb67-438b-8be5-dfb971666dbc\"},\"ownerManagedAccess\":false,\"resource_scopes\":[],\"uris\":[\"/hi\",\"/hello\"]}]}}}}\n{\"level\":\"debug\",\"ts\":1634830460.2955465,\"logger\":\"authorino.service.auth.authpipeline.authorization.kubernetesauthz\",\"msg\":\"calling kubernetes subject access review api\",\"request id\":\"8157480586935853928\",\"subjectaccessreview\":{\"metadata\":{\"creationTimestamp\":null},\"spec\":{\"nonResourceAttributes\":{\"path\":\"/hello\",\"verb\":\"get\"},\"user\":\"system:serviceaccount:authorino:api-consumer-1\"},\"status\":{\"allowed\":false}}}\n{\"level\":\"debug\",\"ts\":1634830460.2986183,\"logger\":\"authorino.service.auth.authpipeline.authorization\",\"msg\":\"access granted\",\"request id\":\"8157480586935853928\",\"config\":{\"Name\":\"my-policy\",\"OPA\":{\"Rego\":\"fail := input.context.request.http.headers[\\\"x-ext-auth-mock\\\"] == \\\"FAIL\\\"\\nallow { not fail }\\n\",\"OPAExternalSource\":{\"Endpoint\":\"\",\"SharedSecret\":\"\",\"AuthCredentials\":{\"KeySelector\":\"Bearer\",\"In\":\"authorization_header\"}}},\"JSON\":null,\"KubernetesAuthz\":null},\"object\":true}\n{\"level\":\"debug\",\"ts\":1634830460.3044975,\"logger\":\"authorino.service.auth.authpipeline.authorization\",\"msg\":\"access granted\",\"request id\":\"8157480586935853928\",\"config\":{\"Name\":\"kubernetes-rbac\",\"OPA\":null,\"JSON\":null,\"KubernetesAuthz\":{\"Conditions\":[],\"User\":{\"Static\":\"\",\"Pattern\":\"auth.identity.user.username\"},\"Groups\":null,\"ResourceAttributes\":null}},\"object\":true}\n{\"level\":\"debug\",\"ts\":1634830460.3052874,\"logger\":\"authorino.service.auth.authpipeline.response\",\"msg\":\"dynamic response built\",\"request id\":\"8157480586935853928\",\"config\":{\"Name\":\"wristband\",\"Wrapper\":\"httpHeader\",\"WrapperKey\":\"x-ext-auth-wristband\",\"Wristband\":{\"Issuer\":\"https://authorino-oidc.default.svc:8083/default/talker-api-protection/wristband\",\"CustomClaims\":[],\"TokenDuration\":300,\"SigningKeys\":[{\"use\":\"sig\",\"kty\":\"EC\",\"kid\":\"wristband-signing-key\",\"crv\":\"P-256\",\"alg\":\"ES256\",\"x\":\"TJf5NLVKplSYp95TOfhVPqvxvEibRyjrUZwwtpDuQZw\",\"y\":\"SSg8rKBsJ3J1LxyLtt0oFvhHvZcUpmRoTuHk3UHisTA\",\"d\":\"Me-5_zWBWVYajSGZcZMCcD8dXEa4fy85zv_yN7BxW-o\"}]},\"DynamicJSON\":null},\"object\":\"eyJhbGciOiJFUzI1NiIsImtpZCI6IndyaXN0YmFuZC1zaWduaW5nLWtleSIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MzQ4MzA3NjAsImlhdCI6MTYzNDgzMDQ2MCwiaXNzIjoiaHR0cHM6Ly9hdXRob3Jpbm8tb2lkYy5hdXRob3Jpbm8uc3ZjOjgwODMvYXV0aG9yaW5vL3RhbGtlci1hcGktcHJvdGVjdGlvbi93cmlzdGJhbmQiLCJzdWIiOiI4NDliMDk0ZDA4MzU0ZjM0MjA4ZGI3MjBmYWZmODlmNmM3NmYyOGY3MTcxOWI4NTQ3ZDk5NWNlNzAwMjU2ZGY4In0.Jn-VB5Q_0EX1ed1ji4KvhO4DlMqZeIl5H0qlukbTyYkp-Pgb4SnPGSbYWp5_uvG8xllsFAA5nuyBIXeba-dbkw\"}\n{\"level\":\"info\",\"ts\":1634830460.3054585,\"logger\":\"authorino.service.auth\",\"msg\":\"outgoing authorization response\",\"request id\":\"8157480586935853928\",\"authorized\":true,\"response\":\"OK\"}\n{\"level\":\"debug\",\"ts\":1634830460.305476,\"logger\":\"authorino.service.auth\",\"msg\":\"outgoing authorization response\",\"request id\":\"8157480586935853928\",\"authorized\":true,\"response\":\"OK\"}\n
      Enforcing an AuthConfig with authentication based on API keys

      • identity: k8s-auth, oidc, oauth2, apikey
      • metadata: http, oidc userinfo
      • authorization: opa, k8s-authz
      • response: wristband
      {\"level\":\"info\",\"ts\":1634830413.2425854,\"logger\":\"authorino.service.auth\",\"msg\":\"incoming authorization request\",\"request id\":\"7199257136822741594\",\"object\":{\"source\":{\"address\":{\"Address\":{\"SocketAddress\":{\"address\":\"127.0.0.1\",\"PortSpecifier\":{\"PortValue\":52702}}}}},\"destination\":{\"address\":{\"Address\":{\"SocketAddress\":{\"address\":\"127.0.0.1\",\"PortSpecifier\":{\"PortValue\":8000}}}}},\"request\":{\"http\":{\"id\":\"7199257136822741594\",\"method\":\"GET\",\"path\":\"/hello\",\"host\":\"talker-api\",\"scheme\":\"http\"}}}}\n{\"level\":\"debug\",\"ts\":1634830413.2426975,\"logger\":\"authorino.service.auth\",\"msg\":\"incoming authorization request\",\"request id\":\"7199257136822741594\",\"object\":{\"source\":{\"address\":{\"Address\":{\"SocketAddress\":{\"address\":\"127.0.0.1\",\"PortSpecifier\":{\"PortValue\":52702}}}}},\"destination\":{\"address\":{\"Address\":{\"SocketAddress\":{\"address\":\"127.0.0.1\",\"PortSpecifier\":{\"PortValue\":8000}}}}},\"request\":{\"time\":{\"seconds\":1634830413,\"nanos\":240094000},\"http\":{\"id\":\"7199257136822741594\",\"method\":\"GET\",\"headers\":{\":authority\":\"talker-api\",\":method\":\"GET\",\":path\":\"/hello\",\":scheme\":\"http\",\"accept\":\"*/*\",\"authorization\":\"APIKEY ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx\",\"user-agent\":\"curl/7.65.3\",\"x-envoy-internal\":\"true\",\"x-forwarded-for\":\"10.244.0.11\",\"x-forwarded-proto\":\"http\",\"x-request-id\":\"d38f5e66-bd72-4733-95d1-3179315cdd60\"},\"path\":\"/hello\",\"host\":\"talker-api\",\"scheme\":\"http\",\"protocol\":\"HTTP/1.1\"}},\"context_extensions\":{\"virtual_host\":\"local_service\"},\"metadata_context\":{}}}\n{\"level\":\"debug\",\"ts\":1634830413.2428744,\"logger\":\"authorino.service.auth.authpipeline.identity\",\"msg\":\"cannot validate identity\",\"request id\":\"7199257136822741594\",\"config\":{\"Name\":\"k8s-service-accounts\",\"ExtendedProperties\":[],\"OAuth2\":null,\"OIDC\":null,\"MTLS\":null,\"HMAC\":null,\"APIKey\":null,\"KubernetesAuth\":{\"AuthCredentials\":{\"KeySelector\":\"Bearer\",\"In\":\"authorization_header\"}}},\"reason\":\"credential not found\"}\n{\"level\":\"debug\",\"ts\":1634830413.2434332,\"logger\":\"authorino.service.auth.authpipeline\",\"msg\":\"skipping config\",\"request id\":\"7199257136822741594\",\"config\":{\"Name\":\"keycloak-jwts\",\"ExtendedProperties\":[],\"OAuth2\":null,\"OIDC\":{\"AuthCredentials\":{\"KeySelector\":\"Bearer\",\"In\":\"authorization_header\"},\"Endpoint\":\"http://keycloak:8080/realms/kuadrant\"},\"MTLS\":null,\"HMAC\":null,\"APIKey\":null,\"KubernetesAuth\":null},\"reason\":\"context canceled\"}\n{\"level\":\"debug\",\"ts\":1634830413.2479305,\"logger\":\"authorino.service.auth.authpipeline.identity\",\"msg\":\"identity validated\",\"request id\":\"7199257136822741594\",\"config\":{\"Name\":\"api-keys\",\"ExtendedProperties\":[{\"Name\":\"sub\",\"Value\":{\"Static\":null,\"Pattern\":\"auth.identity.metadata.annotations.userid\"}}],\"OAuth2\":null,\"OIDC\":null,\"MTLS\":null,\"HMAC\":null,\"APIKey\":{\"AuthCredentials\":{\"KeySelector\":\"APIKEY\",\"In\":\"authorization_header\"},\"Name\":\"api-keys\",\"LabelSelectors\":{\"audience\":\"talker-api\",\"authorino.kuadrant.io/managed-by\":\"authorino\"}},\"KubernetesAuth\":null},\"object\":{\"apiVersion\":\"v1\",\"data\":{\"api_key\":\"bmR5QnpyZVV6RjR6cURRc3FTUE1Ia1JocmlFT3RjUng=\"},\"kind\":\"Secret\",\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"v1\\\",\\\"kind\\\":\\\"Secret\\\",\\\"metadata\\\":{\\\"annotations\\\":{\\\"userid\\\":\\\"john\\\"},\\\"labels\\\":{\\\"audience\\\":\\\"talker-api\\\",\\\"authorino.kuadrant.io/managed-by\\\":\\\"authorino\\\"},\\\"name\\\":\\\"api-key-1\\\",\\\"namespace\\\":\\\"authorino\\\"},\\\"stringData\\\":{\\\"api_key\\\":\\\"ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx\\\"},\\\"type\\\":\\\"Opaque\\\"}\\n\",\"userid\":\"john\"},\"creationTimestamp\":\"2021-10-21T14:45:54Z\",\"labels\":{\"audience\":\"talker-api\",\"authorino.kuadrant.io/managed-by\":\"authorino\"},\"managedFields\":[{\"apiVersion\":\"v1\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:data\":{\".\":{},\"f:api_key\":{}},\"f:metadata\":{\"f:annotations\":{\".\":{},\"f:kubectl.kubernetes.io/last-applied-configuration\":{},\"f:userid\":{}},\"f:labels\":{\".\":{},\"f:audience\":{},\"f:authorino.kuadrant.io/managed-by\":{}}},\"f:type\":{}},\"manager\":\"kubectl-client-side-apply\",\"operation\":\"Update\",\"time\":\"2021-10-21T14:45:54Z\"}],\"name\":\"api-key-1\",\"namespace\":\"authorino\",\"resourceVersion\":\"8979\",\"uid\":\"c369852a-7e1a-43bd-94ca-e2b3f617052e\"},\"sub\":\"john\",\"type\":\"Opaque\"}}\n{\"level\":\"debug\",\"ts\":1634830413.248768,\"logger\":\"authorino.service.auth.authpipeline.metadata.http\",\"msg\":\"sending request\",\"request id\":\"7199257136822741594\",\"method\":\"GET\",\"url\":\"http://talker-api.default.svc.cluster.local:3000/metadata?encoding=text/plain&original_path=/hello\",\"headers\":{\"Content-Type\":[\"text/plain\"]}}\n{\"level\":\"debug\",\"ts\":1634830413.2496722,\"logger\":\"authorino.service.auth.authpipeline.metadata\",\"msg\":\"cannot fetch metadata\",\"request id\":\"7199257136822741594\",\"config\":{\"Name\":\"oidc-userinfo\",\"UserInfo\":{\"OIDC\":{\"AuthCredentials\":{\"KeySelector\":\"Bearer\",\"In\":\"authorization_header\"},\"Endpoint\":\"http://keycloak:8080/realms/kuadrant\"}},\"UMA\":null,\"GenericHTTP\":null},\"reason\":\"Missing identity for OIDC issuer http://keycloak:8080/realms/kuadrant. Skipping related UserInfo metadata.\"}\n{\"level\":\"debug\",\"ts\":1634830413.2497928,\"logger\":\"authorino.service.auth.authpipeline.metadata.uma\",\"msg\":\"requesting pat\",\"request id\":\"7199257136822741594\",\"url\":\"http://talker-api:523b92b6-625d-4e1e-a313-77e7a8ae4e88@keycloak:8080/realms/kuadrant/protocol/openid-connect/token\",\"data\":\"grant_type=client_credentials\",\"headers\":{\"Content-Type\":[\"application/x-www-form-urlencoded\"]}}\n{\"level\":\"debug\",\"ts\":1634830413.258932,\"logger\":\"authorino.service.auth.authpipeline.metadata\",\"msg\":\"fetched auth metadata\",\"request id\":\"7199257136822741594\",\"config\":{\"Name\":\"http-metadata\",\"UserInfo\":null,\"UMA\":null,\"GenericHTTP\":{\"Endpoint\":\"http://talker-api.default.svc.cluster.local:3000/metadata?encoding=text/plain&original_path={context.request.http.path}\",\"Method\":\"GET\",\"Parameters\":[],\"ContentType\":\"application/x-www-form-urlencoded\",\"SharedSecret\":\"\",\"AuthCredentials\":{\"KeySelector\":\"Bearer\",\"In\":\"authorization_header\"}}},\"object\":{\"body\":\"\",\"headers\":{\"Accept-Encoding\":\"gzip\",\"Content-Type\":\"text/plain\",\"Host\":\"talker-api.default.svc.cluster.local:3000\",\"User-Agent\":\"Go-http-client/1.1\",\"Version\":\"HTTP/1.1\"},\"method\":\"GET\",\"path\":\"/metadata\",\"query_string\":\"encoding=text/plain&original_path=/hello\",\"uuid\":\"97529f8c-587b-4121-a4db-cd90c63871fd\"}}\n{\"level\":\"debug\",\"ts\":1634830413.2945344,\"logger\":\"authorino.service.auth.authpipeline.metadata.uma\",\"msg\":\"querying resources by uri\",\"request id\":\"7199257136822741594\",\"url\":\"http://keycloak:8080/realms/kuadrant/authz/protection/resource_set?uri=/hello\"}\n{\"level\":\"debug\",\"ts\":1634830413.3123596,\"logger\":\"authorino.service.auth.authpipeline.metadata.uma\",\"msg\":\"getting resource data\",\"request id\":\"7199257136822741594\",\"url\":\"http://keycloak:8080/realms/kuadrant/authz/protection/resource_set/e20d194c-274c-4845-8c02-0ca413c9bf18\"}\n{\"level\":\"debug\",\"ts\":1634830413.3340268,\"logger\":\"authorino.service.auth.authpipeline.metadata\",\"msg\":\"fetched auth metadata\",\"request id\":\"7199257136822741594\",\"config\":{\"Name\":\"uma-resource-registry\",\"UserInfo\":null,\"UMA\":{\"Endpoint\":\"http://keycloak:8080/realms/kuadrant\",\"ClientID\":\"talker-api\",\"ClientSecret\":\"523b92b6-625d-4e1e-a313-77e7a8ae4e88\"},\"GenericHTTP\":null},\"object\":[{\"_id\":\"e20d194c-274c-4845-8c02-0ca413c9bf18\",\"attributes\":{},\"displayName\":\"hello\",\"name\":\"hello\",\"owner\":{\"id\":\"57a645a5-fb67-438b-8be5-dfb971666dbc\"},\"ownerManagedAccess\":false,\"resource_scopes\":[],\"uris\":[\"/hi\",\"/hello\"]}]}\n{\"level\":\"debug\",\"ts\":1634830413.3367748,\"logger\":\"authorino.service.auth.authpipeline.authorization\",\"msg\":\"evaluating for input\",\"request id\":\"7199257136822741594\",\"input\":{\"context\":{\"source\":{\"address\":{\"Address\":{\"SocketAddress\":{\"address\":\"127.0.0.1\",\"PortSpecifier\":{\"PortValue\":52702}}}}},\"destination\":{\"address\":{\"Address\":{\"SocketAddress\":{\"address\":\"127.0.0.1\",\"PortSpecifier\":{\"PortValue\":8000}}}}},\"request\":{\"time\":{\"seconds\":1634830413,\"nanos\":240094000},\"http\":{\"id\":\"7199257136822741594\",\"method\":\"GET\",\"headers\":{\":authority\":\"talker-api\",\":method\":\"GET\",\":path\":\"/hello\",\":scheme\":\"http\",\"accept\":\"*/*\",\"authorization\":\"APIKEY ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx\",\"user-agent\":\"curl/7.65.3\",\"x-envoy-internal\":\"true\",\"x-forwarded-for\":\"10.244.0.11\",\"x-forwarded-proto\":\"http\",\"x-request-id\":\"d38f5e66-bd72-4733-95d1-3179315cdd60\"},\"path\":\"/hello\",\"host\":\"talker-api\",\"scheme\":\"http\",\"protocol\":\"HTTP/1.1\"}},\"context_extensions\":{\"virtual_host\":\"local_service\"},\"metadata_context\":{}},\"auth\":{\"identity\":{\"apiVersion\":\"v1\",\"data\":{\"api_key\":\"bmR5QnpyZVV6RjR6cURRc3FTUE1Ia1JocmlFT3RjUng=\"},\"kind\":\"Secret\",\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"v1\\\",\\\"kind\\\":\\\"Secret\\\",\\\"metadata\\\":{\\\"annotations\\\":{\\\"userid\\\":\\\"john\\\"},\\\"labels\\\":{\\\"audience\\\":\\\"talker-api\\\",\\\"authorino.kuadrant.io/managed-by\\\":\\\"authorino\\\"},\\\"name\\\":\\\"api-key-1\\\",\\\"namespace\\\":\\\"authorino\\\"},\\\"stringData\\\":{\\\"api_key\\\":\\\"ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx\\\"},\\\"type\\\":\\\"Opaque\\\"}\\n\",\"userid\":\"john\"},\"creationTimestamp\":\"2021-10-21T14:45:54Z\",\"labels\":{\"audience\":\"talker-api\",\"authorino.kuadrant.io/managed-by\":\"authorino\"},\"managedFields\":[{\"apiVersion\":\"v1\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:data\":{\".\":{},\"f:api_key\":{}},\"f:metadata\":{\"f:annotations\":{\".\":{},\"f:kubectl.kubernetes.io/last-applied-configuration\":{},\"f:userid\":{}},\"f:labels\":{\".\":{},\"f:audience\":{},\"f:authorino.kuadrant.io/managed-by\":{}}},\"f:type\":{}},\"manager\":\"kubectl-client-side-apply\",\"operation\":\"Update\",\"time\":\"2021-10-21T14:45:54Z\"}],\"name\":\"api-key-1\",\"namespace\":\"authorino\",\"resourceVersion\":\"8979\",\"uid\":\"c369852a-7e1a-43bd-94ca-e2b3f617052e\"},\"sub\":\"john\",\"type\":\"Opaque\"},\"metadata\":{\"http-metadata\":{\"body\":\"\",\"headers\":{\"Accept-Encoding\":\"gzip\",\"Content-Type\":\"text/plain\",\"Host\":\"talker-api.default.svc.cluster.local:3000\",\"User-Agent\":\"Go-http-client/1.1\",\"Version\":\"HTTP/1.1\"},\"method\":\"GET\",\"path\":\"/metadata\",\"query_string\":\"encoding=text/plain&original_path=/hello\",\"uuid\":\"97529f8c-587b-4121-a4db-cd90c63871fd\"},\"uma-resource-registry\":[{\"_id\":\"e20d194c-274c-4845-8c02-0ca413c9bf18\",\"attributes\":{},\"displayName\":\"hello\",\"name\":\"hello\",\"owner\":{\"id\":\"57a645a5-fb67-438b-8be5-dfb971666dbc\"},\"ownerManagedAccess\":false,\"resource_scopes\":[],\"uris\":[\"/hi\",\"/hello\"]}]}}}}\n{\"level\":\"debug\",\"ts\":1634830413.339894,\"logger\":\"authorino.service.auth.authpipeline.authorization\",\"msg\":\"access granted\",\"request id\":\"7199257136822741594\",\"config\":{\"Name\":\"my-policy\",\"OPA\":{\"Rego\":\"fail := input.context.request.http.headers[\\\"x-ext-auth-mock\\\"] == \\\"FAIL\\\"\\nallow { not fail }\\n\",\"OPAExternalSource\":{\"Endpoint\":\"\",\"SharedSecret\":\"\",\"AuthCredentials\":{\"KeySelector\":\"Bearer\",\"In\":\"authorization_header\"}}},\"JSON\":null,\"KubernetesAuthz\":null},\"object\":true}\n{\"level\":\"debug\",\"ts\":1634830413.3444238,\"logger\":\"authorino.service.auth.authpipeline.authorization.kubernetesauthz\",\"msg\":\"calling kubernetes subject access review api\",\"request id\":\"7199257136822741594\",\"subjectaccessreview\":{\"metadata\":{\"creationTimestamp\":null},\"spec\":{\"nonResourceAttributes\":{\"path\":\"/hello\",\"verb\":\"get\"},\"user\":\"john\"},\"status\":{\"allowed\":false}}}\n{\"level\":\"debug\",\"ts\":1634830413.3547812,\"logger\":\"authorino.service.auth.authpipeline.authorization\",\"msg\":\"access granted\",\"request id\":\"7199257136822741594\",\"config\":{\"Name\":\"kubernetes-rbac\",\"OPA\":null,\"JSON\":null,\"KubernetesAuthz\":{\"Conditions\":[],\"User\":{\"Static\":\"\",\"Pattern\":\"auth.identity.user.username\"},\"Groups\":null,\"ResourceAttributes\":null}},\"object\":true}\n{\"level\":\"debug\",\"ts\":1634830413.3558292,\"logger\":\"authorino.service.auth.authpipeline.response\",\"msg\":\"dynamic response built\",\"request id\":\"7199257136822741594\",\"config\":{\"Name\":\"wristband\",\"Wrapper\":\"httpHeader\",\"WrapperKey\":\"x-ext-auth-wristband\",\"Wristband\":{\"Issuer\":\"https://authorino-oidc.default.svc:8083/default/talker-api-protection/wristband\",\"CustomClaims\":[],\"TokenDuration\":300,\"SigningKeys\":[{\"use\":\"sig\",\"kty\":\"EC\",\"kid\":\"wristband-signing-key\",\"crv\":\"P-256\",\"alg\":\"ES256\",\"x\":\"TJf5NLVKplSYp95TOfhVPqvxvEibRyjrUZwwtpDuQZw\",\"y\":\"SSg8rKBsJ3J1LxyLtt0oFvhHvZcUpmRoTuHk3UHisTA\",\"d\":\"Me-5_zWBWVYajSGZcZMCcD8dXEa4fy85zv_yN7BxW-o\"}]},\"DynamicJSON\":null},\"object\":\"eyJhbGciOiJFUzI1NiIsImtpZCI6IndyaXN0YmFuZC1zaWduaW5nLWtleSIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MzQ4MzA3MTMsImlhdCI6MTYzNDgzMDQxMywiaXNzIjoiaHR0cHM6Ly9hdXRob3Jpbm8tb2lkYy5hdXRob3Jpbm8uc3ZjOjgwODMvYXV0aG9yaW5vL3RhbGtlci1hcGktcHJvdGVjdGlvbi93cmlzdGJhbmQiLCJzdWIiOiI5NjhiZjViZjk3MDM3NWRiNjE0ZDFhMDgzZTg2NTBhYTVhMGVhMzAyOTdiYmJjMTBlNWVlMWZmYTkxYTYwZmY4In0.7G440sWgi2TIaxrGJf5KWR9UOFpNTjwVYeaJXFLzsLhVNICoMLbYzBAEo4M3ym1jipxxTVeE7anm4qDDc7cnVQ\"}\n{\"level\":\"info\",\"ts\":1634830413.3569078,\"logger\":\"authorino.service.auth\",\"msg\":\"outgoing authorization response\",\"request id\":\"7199257136822741594\",\"authorized\":true,\"response\":\"OK\"}\n{\"level\":\"debug\",\"ts\":1634830413.3569596,\"logger\":\"authorino.service.auth\",\"msg\":\"outgoing authorization response\",\"request id\":\"7199257136822741594\",\"authorized\":true,\"response\":\"OK\"}\n
      Enforcing an AuthConfig with authentication based on API keys (invalid API key)

      • identity: k8s-auth, oidc, oauth2, apikey
      • metadata: http, oidc userinfo
      • authorization: opa, k8s-authz
      • response: wristband
      {\"level\":\"info\",\"ts\":1634830373.2066543,\"logger\":\"authorino.service.auth\",\"msg\":\"incoming authorization request\",\"request id\":\"12947265773116138711\",\"object\":{\"source\":{\"address\":{\"Address\":{\"SocketAddress\":{\"address\":\"127.0.0.1\",\"PortSpecifier\":{\"PortValue\":52288}}}}},\"destination\":{\"address\":{\"Address\":{\"SocketAddress\":{\"address\":\"127.0.0.1\",\"PortSpecifier\":{\"PortValue\":8000}}}}},\"request\":{\"http\":{\"id\":\"12947265773116138711\",\"method\":\"GET\",\"path\":\"/hello\",\"host\":\"talker-api\",\"scheme\":\"http\"}}}}\n{\"level\":\"debug\",\"ts\":1634830373.2068064,\"logger\":\"authorino.service.auth\",\"msg\":\"incoming authorization request\",\"request id\":\"12947265773116138711\",\"object\":{\"source\":{\"address\":{\"Address\":{\"SocketAddress\":{\"address\":\"127.0.0.1\",\"PortSpecifier\":{\"PortValue\":52288}}}}},\"destination\":{\"address\":{\"Address\":{\"SocketAddress\":{\"address\":\"127.0.0.1\",\"PortSpecifier\":{\"PortValue\":8000}}}}},\"request\":{\"time\":{\"seconds\":1634830373,\"nanos\":198329000},\"http\":{\"id\":\"12947265773116138711\",\"method\":\"GET\",\"headers\":{\":authority\":\"talker-api\",\":method\":\"GET\",\":path\":\"/hello\",\":scheme\":\"http\",\"accept\":\"*/*\",\"authorization\":\"APIKEY invalid\",\"user-agent\":\"curl/7.65.3\",\"x-envoy-internal\":\"true\",\"x-forwarded-for\":\"10.244.0.11\",\"x-forwarded-proto\":\"http\",\"x-request-id\":\"9e391846-afe4-489a-8716-23a2e1c1aa77\"},\"path\":\"/hello\",\"host\":\"talker-api\",\"scheme\":\"http\",\"protocol\":\"HTTP/1.1\"}},\"context_extensions\":{\"virtual_host\":\"local_service\"},\"metadata_context\":{}}}\n{\"level\":\"debug\",\"ts\":1634830373.2070816,\"logger\":\"authorino.service.auth.authpipeline.identity\",\"msg\":\"cannot validate identity\",\"request id\":\"12947265773116138711\",\"config\":{\"Name\":\"keycloak-opaque\",\"ExtendedProperties\":[],\"OAuth2\":{\"AuthCredentials\":{\"KeySelector\":\"Bearer\",\"In\":\"authorization_header\"},\"TokenIntrospectionUrl\":\"http://keycloak:8080/realms/kuadrant/protocol/openid-connect/token/introspect\",\"TokenTypeHint\":\"requesting_party_token\",\"ClientID\":\"talker-api\",\"ClientSecret\":\"523b92b6-625d-4e1e-a313-77e7a8ae4e88\"},\"OIDC\":null,\"MTLS\":null,\"HMAC\":null,\"APIKey\":null,\"KubernetesAuth\":null},\"reason\":\"credential not found\"}\n{\"level\":\"debug\",\"ts\":1634830373.207225,\"logger\":\"authorino.service.auth.authpipeline.identity\",\"msg\":\"cannot validate identity\",\"request id\":\"12947265773116138711\",\"config\":{\"Name\":\"api-keys\",\"ExtendedProperties\":[{\"Name\":\"sub\",\"Value\":{\"Static\":null,\"Pattern\":\"auth.identity.metadata.annotations.userid\"}}],\"OAuth2\":null,\"OIDC\":null,\"MTLS\":null,\"HMAC\":null,\"APIKey\":{\"AuthCredentials\":{\"KeySelector\":\"APIKEY\",\"In\":\"authorization_header\"},\"Name\":\"api-keys\",\"LabelSelectors\":{\"audience\":\"talker-api\",\"authorino.kuadrant.io/managed-by\":\"authorino\"}},\"KubernetesAuth\":null},\"reason\":\"the API Key provided is invalid\"}\n{\"level\":\"debug\",\"ts\":1634830373.2072473,\"logger\":\"authorino.service.auth.authpipeline.identity\",\"msg\":\"cannot validate identity\",\"request id\":\"12947265773116138711\",\"config\":{\"Name\":\"k8s-service-accounts\",\"ExtendedProperties\":[],\"OAuth2\":null,\"OIDC\":null,\"MTLS\":null,\"HMAC\":null,\"APIKey\":null,\"KubernetesAuth\":{\"AuthCredentials\":{\"KeySelector\":\"Bearer\",\"In\":\"authorization_header\"}}},\"reason\":\"credential not found\"}\n{\"level\":\"debug\",\"ts\":1634830373.2072592,\"logger\":\"authorino.service.auth.authpipeline.identity\",\"msg\":\"cannot validate identity\",\"request id\":\"12947265773116138711\",\"config\":{\"Name\":\"keycloak-jwts\",\"ExtendedProperties\":[],\"OAuth2\":null,\"OIDC\":{\"AuthCredentials\":{\"KeySelector\":\"Bearer\",\"In\":\"authorization_header\"},\"Endpoint\":\"http://keycloak:8080/realms/kuadrant\"},\"MTLS\":null,\"HMAC\":null,\"APIKey\":null,\"KubernetesAuth\":null},\"reason\":\"credential not found\"}\n{\"level\":\"info\",\"ts\":1634830373.2073083,\"logger\":\"authorino.service.auth\",\"msg\":\"outgoing authorization response\",\"request id\":\"12947265773116138711\",\"authorized\":false,\"response\":\"UNAUTHENTICATED\",\"object\":{\"code\":16,\"status\":302,\"message\":\"Redirecting to login\"}}\n{\"level\":\"debug\",\"ts\":1634830373.2073889,\"logger\":\"authorino.service.auth\",\"msg\":\"outgoing authorization response\",\"request id\":\"12947265773116138711\",\"authorized\":false,\"response\":\"UNAUTHENTICATED\",\"object\":{\"code\":16,\"status\":302,\"message\":\"Redirecting to login\",\"headers\":[{\"Location\":\"https://my-app.io/login\"}]}}\n
      Deleting an AuthConfig and 2 related API key secrets
      {\"level\":\"info\",\"ts\":1669221361.5032296,\"logger\":\"authorino.controller-runtime.manager.controller.secret\",\"msg\":\"resource reconciled\",\"secret\":\"default/api-key-1\"}\n{\"level\":\"info\",\"ts\":1669221361.5057878,\"logger\":\"authorino.controller-runtime.manager.controller.secret\",\"msg\":\"resource reconciled\",\"secret\":\"default/api-key-2\"}\n
      Shutting down the service
      {\"level\":\"info\",\"ts\":1669221635.0135982,\"logger\":\"authorino\",\"msg\":\"Stopping and waiting for non leader election runnables\"}\n{\"level\":\"info\",\"ts\":1669221635.0136683,\"logger\":\"authorino\",\"msg\":\"Stopping and waiting for leader election runnables\"}\n{\"level\":\"info\",\"ts\":1669221635.0135982,\"logger\":\"authorino\",\"msg\":\"Stopping and waiting for non leader election runnables\"}\n{\"level\":\"info\",\"ts\":1669221635.0136883,\"logger\":\"authorino\",\"msg\":\"Stopping and waiting for leader election runnables\"}\n{\"level\":\"info\",\"ts\":1669221635.0137057,\"logger\":\"authorino.controller.secret\",\"msg\":\"Shutdown signal received, waiting for all workers to finish\",\"reconciler group\":\"\",\"reconciler kind\":\"Secret\"}\n{\"level\":\"info\",\"ts\":1669221635.013724,\"logger\":\"authorino.controller.authconfig\",\"msg\":\"Shutdown signal received, waiting for all workers to finish\",\"reconciler group\":\"authorino.kuadrant.io\",\"reconciler kind\":\"AuthConfig\"}\n{\"level\":\"info\",\"ts\":1669221635.01375,\"logger\":\"authorino.controller.authconfig\",\"msg\":\"All workers finished\",\"reconciler group\":\"authorino.kuadrant.io\",\"reconciler kind\":\"AuthConfig\"}\n{\"level\":\"info\",\"ts\":1669221635.013752,\"logger\":\"authorino.controller.secret\",\"msg\":\"All workers finished\",\"reconciler group\":\"\",\"reconciler kind\":\"Secret\"}\n{\"level\":\"info\",\"ts\":1669221635.0137632,\"logger\":\"authorino\",\"msg\":\"Stopping and waiting for caches\"}\n{\"level\":\"info\",\"ts\":1669221635.013751,\"logger\":\"authorino.controller.authconfig\",\"msg\":\"Shutdown signal received, waiting for all workers to finish\",\"reconciler group\":\"authorino.kuadrant.io\",\"reconciler kind\":\"AuthConfig\"}\n{\"level\":\"info\",\"ts\":1669221635.0137684,\"logger\":\"authorino.controller.authconfig\",\"msg\":\"All workers finished\",\"reconciler group\":\"authorino.kuadrant.io\",\"reconciler kind\":\"AuthConfig\"}\n{\"level\":\"info\",\"ts\":1669221635.0137722,\"logger\":\"authorino\",\"msg\":\"Stopping and waiting for caches\"}\n{\"level\":\"info\",\"ts\":1669221635.0138857,\"logger\":\"authorino\",\"msg\":\"Stopping and waiting for webhooks\"}\n{\"level\":\"info\",\"ts\":1669221635.0138955,\"logger\":\"authorino\",\"msg\":\"Wait completed, proceeding to shutdown the manager\"}\n{\"level\":\"info\",\"ts\":1669221635.0138893,\"logger\":\"authorino\",\"msg\":\"Stopping and waiting for webhooks\"}\n{\"level\":\"info\",\"ts\":1669221635.0139785,\"logger\":\"authorino\",\"msg\":\"Wait completed, proceeding to shutdown the manager\"}\n
      "},{"location":"authorino/docs/user-guides/observability/#tracing","title":"Tracing","text":""},{"location":"authorino/docs/user-guides/observability/#request-id","title":"Request ID","text":"

      Processes related to the authorization request are identified and linked together by a request ID. The request ID can be:

      • generated outside Authorino and passed in the authorization request \u2013 this is essentially the case of requests via GRPC authorization interface initiated by the Envoy;
      • generated by Authorino \u2013 requests via Raw HTTP Authorization interface.
      "},{"location":"authorino/docs/user-guides/observability/#propagation","title":"Propagation","text":"

      Authorino propagates trace identifiers compatible with the W3C Trace Context format https://www.w3.org/TR/trace-context/ and user-defined baggage data in the W3C Baggage format https://www.w3.org/TR/baggage.

      "},{"location":"authorino/docs/user-guides/observability/#log-tracing","title":"Log tracing","text":"

      Most log messages associated with an authorization request include the request id value. This value can be used to match incoming request and corresponding outgoing response log messages, including at deep level when more fine-grained log details are enabled (debug level level).

      "},{"location":"authorino/docs/user-guides/observability/#opentelemetry-integration","title":"OpenTelemetry integration","text":"

      Integration with an OpenTelemetry collector can be enabled by supplying the --tracing-service-endpoint command-line flag (e.g. authorino server --tracing-service-endpoint=http://jaeger:14268/api/traces).

      The additional --tracing-service-tags command-line flag allow to specify fixed agent-level key-value tags for the trace signals emitted by Authorino (e.g. authorino server --tracing-service-endpoint=... --tracing-service-tag=key1=value1 --tracing-service-tag=key2=value2).

      Traces related to authorization requests are additionally tagged with the authorino.request_id attribute.

      "},{"location":"authorino/docs/user-guides/oidc-jwt-authentication/","title":"User guide: OpenID Connect Discovery and authentication with JWTs","text":"

      Validate JSON Web Tokens (JWT) issued and signed by an OpenID Connect server; leverage OpenID Connect Discovery to automatically fetch JSON Web Key Sets (JWKS).

      Authorino capabilities featured in this guide:
      • Identity verification & authentication \u2192 JWT verification

      Authorino validates JSON Web Tokens (JWT) issued by an OpenID Connect server that implements OpenID Connect Discovery. Authorino fetches the OpenID Connect configuration and JSON Web Key Set (JWKS) from the issuer endpoint, and verifies the JSON Web Signature (JWS) and time validity of the token.

      Important! Authorino does not implement OAuth2 grants nor OIDC authentication flows. As a common recommendation of good practice, obtaining and refreshing access tokens is for clients to negotiate directly with the auth servers and token issuers. Authorino will only validate those tokens using the parameters provided by the trusted issuer authorities.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/oidc-jwt-authentication/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)
      • Identity Provider (IdP) that implements OpenID Connect authentication and OpenID Connect Discovery (e.g. Keycloak)
      • jq, to extract parts of JSON responses

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      Deploy the identity provider and authentication server by executing the command below. For the examples in this guide, we are going to use a Keycloak server preloaded with all required realm settings.

      kubectl create namespace keycloak\nkubectl -n keycloak apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/keycloak/keycloak-deploy.yaml\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/oidc-jwt-authentication/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/oidc-jwt-authentication/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/oidc-jwt-authentication/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/oidc-jwt-authentication/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/oidc-jwt-authentication/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced:

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"keycloak-kuadrant-realm\":\n      jwt:\n        issuerUrl: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\nEOF\n
      "},{"location":"authorino/docs/user-guides/oidc-jwt-authentication/#obtain-an-access-token-with-the-keycloak-server","title":"\u277b Obtain an access token with the Keycloak server","text":"

      The AuthConfig deployed in the previous step is suitable for validating access tokens requested inside the cluster. This is because Keycloak's iss claim added to the JWTs matches always the host used to request the token and Authorino will later try to match this host to the host that provides the OpenID Connect configuration.

      Obtain an access token from within the cluster:

      ACCESS_TOKEN=$(kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=demo' -d 'username=john' -d 'password=p' -d 'scope=openid' | jq -r .access_token)\n

      If your Keycloak server is reachable from outside the cluster, feel free to obtain the token directly. Make sure the host name set in the OIDC issuer endpoint in the AuthConfig matches the one used to obtain the token and is as well reachable from within the cluster.

      "},{"location":"authorino/docs/user-guides/oidc-jwt-authentication/#consume-the-api","title":"\u277c Consume the API","text":"

      With a valid access token:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/hello\n# HTTP/1.1 200 OK\n

      With missing or invalid access token:

      curl http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 401 Unauthorized\n# www-authenticate: Bearer realm=\"keycloak-kuadrant-realm\"\n# x-ext-auth-reason: credential not found\n
      "},{"location":"authorino/docs/user-guides/oidc-jwt-authentication/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete authconfig/talker-api-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\nkubectl delete namespace keycloak\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/oidc-rbac/","title":"User guide: OpenID Connect (OIDC) and Role-Based Access Control (RBAC) with Authorino and Keycloak","text":"

      Combine OpenID Connect (OIDC) authentication and Role-Based Access Control (RBAC) authorization rules leveraging Keycloak and Authorino working together.

      In this user guide, you will learn via example how to implement a simple Role-Based Access Control (RBAC) system to protect endpoints of an API, with roles assigned to users of an Identity Provider (Keycloak) and carried within the access tokens as JSON Web Token (JWT) claims. Users authenticate with the IdP via OAuth2/OIDC flow and get their access tokens verified and validated by Authorino on every request. Moreover, Authorino reads the role bindings of the user and enforces the proper RBAC rules based upon the context.

      Authorino capabilities featured in this guide:
      • Identity verification & authentication \u2192 JWT verification
      • Authorization \u2192 Pattern-matching authorization

      Check out as well the user guides about OpenID Connect Discovery and authentication with JWTs and Simple pattern-matching authorization policies.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/oidc-rbac/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)
      • Identity Provider (IdP) that implements OpenID Connect authentication and OpenID Connect Discovery (e.g. Keycloak)
      • jq, to extract parts of JSON responses

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      Deploy the identity provider and authentication server by executing the command below. For the examples in this guide, we are going to use a Keycloak server preloaded with all required realm settings.

      kubectl create namespace keycloak\nkubectl -n keycloak apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/keycloak/keycloak-deploy.yaml\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/oidc-rbac/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/oidc-rbac/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/oidc-rbac/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/oidc-rbac/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/oidc-rbac/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced.

      In this example, the Keycloak realm defines a few users and 2 realm roles: 'member' and 'admin'. When users authenticate to the Keycloak server by any of the supported OAuth2/OIDC flows, Keycloak adds to the access token JWT a claim \"realm_access\": { \"roles\": array } that holds the list of roles assigned to the user. Authorino will verify the JWT on requests to the API and read from that claim to enforce the following RBAC rules:

      Path Method Role /resources[/*] GET / POST / PUT member /resources/{id} DELETE admin /admin[/*] * admin Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.

      Apply the AuthConfig:

      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n\n  authentication:\n    \"keycloak-kuadrant-realm\":\n      jwt:\n        issuerUrl: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\n\n  patterns:\n    \"member-role\":\n\n    - selector: auth.identity.realm_access.roles\n      operator: incl\n      value: member\n    \"admin-role\":\n    - selector: auth.identity.realm_access.roles\n      operator: incl\n      value: admin\n\n  authorization:\n    # RBAC rule: 'member' role required for requests to /resources[/*]\n    \"rbac-resources-api\":\n      when:\n\n      - selector: context.request.http.path\n        operator: matches\n        value: ^/resources(/.*)?$\n      patternMatching:\n        patterns:\n        - patternRef: member-role\n\n    # RBAC rule: 'admin' role required for DELETE requests to /resources/{id}\n    \"rbac-delete-resource\":\n      when:\n\n      - selector: context.request.http.path\n        operator: matches\n        value: ^/resources/\\d+$\n      - selector: context.request.http.method\n        operator: eq\n        value: DELETE\n      patternMatching:\n        patterns:\n        - patternRef: admin-role\n\n    # RBAC rule: 'admin' role required for requests to /admin[/*]\n    \"rbac-admin-api\":\n      when:\n\n      - selector: context.request.http.path\n        operator: matches\n        value: ^/admin(/.*)?$\n      patternMatching:\n        patterns:\n        - patternRef: admin-role\nEOF\n
      "},{"location":"authorino/docs/user-guides/oidc-rbac/#obtain-an-access-token-and-consume-the-api","title":"\u277b Obtain an access token and consume the API","text":""},{"location":"authorino/docs/user-guides/oidc-rbac/#obtain-an-access-token-and-consume-the-api-as-john-member","title":"Obtain an access token and consume the API as John (member)","text":"

      Obtain an access token with the Keycloak server for John:

      The AuthConfig deployed in the previous step is suitable for validating access tokens requested inside the cluster. This is because Keycloak's iss claim added to the JWTs matches always the host used to request the token and Authorino will later try to match this host to the host that provides the OpenID Connect configuration.

      Obtain an access token from within the cluster for the user John, who is assigned to the 'member' role:

      ACCESS_TOKEN=$(kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=demo' -d 'username=john' -d 'password=p' -d 'scope=openid' | jq -r .access_token)\n

      If your Keycloak server is reachable from outside the cluster, feel free to obtain the token directly. Make sure the host name set in the OIDC issuer endpoint in the AuthConfig matches the one used to obtain the token and is as well reachable from within the cluster.

      As John, send a GET request to /resources:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/resources -i\n# HTTP/1.1 200 OK\n

      As John, send a DELETE request to /resources/123:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" -X DELETE http://talker-api.127.0.0.1.nip.io:8000/resources/123 -i\n# HTTP/1.1 403 Forbidden\n

      As John, send a GET request to /admin/settings:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/admin/settings -i\n# HTTP/1.1 403 Forbidden\n
      "},{"location":"authorino/docs/user-guides/oidc-rbac/#obtain-an-access-token-and-consume-the-api-as-jane-memberadmin","title":"Obtain an access token and consume the API as Jane (member/admin)","text":"

      Obtain an access token from within the cluster for the user Jane, who is assigned to the 'member' and 'admin' roles:

      ACCESS_TOKEN=$(kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=demo' -d 'username=jane' -d 'password=p' -d 'scope=openid' | jq -r .access_token)\n

      As Jane, send a GET request to /resources:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/resources -i\n# HTTP/1.1 200 OK\n

      As Jane, send a DELETE request to /resources/123:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" -X DELETE http://talker-api.127.0.0.1.nip.io:8000/resources/123 -i\n# HTTP/1.1 200 OK\n

      As Jane, send a GET request to /admin/settings:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/admin/settings -i\n# HTTP/1.1 200 OK\n
      "},{"location":"authorino/docs/user-guides/oidc-rbac/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete authconfig/talker-api-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\nkubectl delete namespace keycloak\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/oidc-user-info/","title":"User guide: OpenID Connect UserInfo","text":"

      Fetch user info for OpenID Connect ID tokens in request-time for extra metadata for your policies and online verification of token validity.

      Authorino capabilities featured in this guide:
      • External auth metadata \u2192 OIDC UserInfo
      • Identity verification & authentication \u2192 JWT verification
      • Authorization \u2192 Pattern-matching authorization

      Apart from possibly complementing information of the JWT, fetching OpenID Connect UserInfo in request-time can be particularly useful for remote checking the state of the session, as opposed to only verifying the JWT/JWS offline. Implementation requires an OpenID Connect issuer (spec.identity.oidc) configured in the same AuthConfig.

      Check out as well the user guide about OpenID Connect Discovery and authentication with JWTs.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/oidc-user-info/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)
      • Identity Provider (IdP) that implements OpenID Connect authentication and OpenID Connect Discovery (e.g. Keycloak)
      • jq, to extract parts of JSON responses

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      Deploy the identity provider and authentication server by executing the command below. For the examples in this guide, we are going to use a Keycloak server preloaded with all required realm settings.

      kubectl create namespace keycloak\nkubectl -n keycloak apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/keycloak/keycloak-deploy.yaml\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/oidc-user-info/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/oidc-user-info/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/oidc-user-info/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/oidc-user-info/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/oidc-user-info/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced:

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"keycloak-kuadrant-realm\":\n      jwt:\n        issuerUrl: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\n  metadata:\n    \"userinfo\":\n      userInfo:\n        identitySource: keycloak-kuadrant-realm\n  authorization:\n    \"active-tokens-only\":\n      patternMatching:\n        patterns:\n        - selector: \"auth.metadata.userinfo.email\" # user email expected from the userinfo instead of the jwt\n          operator: neq\n          value: \"\"\nEOF\n
      "},{"location":"authorino/docs/user-guides/oidc-user-info/#obtain-an-access-token-with-the-keycloak-server","title":"\u277b Obtain an access token with the Keycloak server","text":"

      The AuthConfig deployed in the previous step is suitable for validating access tokens requested inside the cluster. This is because Keycloak's iss claim added to the JWTs matches always the host used to request the token and Authorino will later try to match this host to the host that provides the OpenID Connect configuration.

      Obtain an access token from within the cluster:

      export $(kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=demo' -d 'username=jane' -d 'password=p' -d 'scope=openid' | jq -r '\"ACCESS_TOKEN=\"+.access_token,\"REFRESH_TOKEN=\"+.refresh_token')\n

      If your Keycloak server is reachable from outside the cluster, feel free to obtain the token directly. Make sure the host name set in the OIDC issuer endpoint in the AuthConfig matches the one used to obtain the token and is as well reachable from within the cluster.

      "},{"location":"authorino/docs/user-guides/oidc-user-info/#consume-the-api","title":"\u277c Consume the API","text":"

      With a valid access token:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/hello\n# HTTP/1.1 200 OK\n

      Revoke the access token and try to consume the API again:

      kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/logout -H \"Content-Type: application/x-www-form-urlencoded\" -d \"refresh_token=$REFRESH_TOKEN\" -d 'token_type_hint=requesting_party_token' -u demo:\n
      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 403 Forbidden\n
      "},{"location":"authorino/docs/user-guides/oidc-user-info/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete authconfig/talker-api-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\nkubectl delete namespace keycloak\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/opa-authorization/","title":"User guide: Open Policy Agent (OPA) Rego policies","text":"

      Leverage the power of Open Policy Agent (OPA) policies, evaluated against Authorino's Authorization JSON in a built-in runtime compiled together with Authorino; pre-cache policies defined in Rego language inline or fetched from an external policy registry.

      Authorino capabilities featured in this guide:
      • Authorization \u2192 Open Policy Agent (OPA) Rego policies
      • Identity verification & authentication \u2192 API key

      Authorino supports Open Policy Agent policies, either inline defined in Rego language as part of the AuthConfig or fetched from an external endpoint, such as an OPA Policy Registry.

      Authorino's built-in OPA module precompiles the policies in reconciliation-time and cache them for fast evaluation in request-time, where they receive the Authorization JSON as input.

      Check out as well the user guide about Authentication with API keys.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/opa-authorization/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/opa-authorization/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/opa-authorization/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/opa-authorization/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/opa-authorization/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/opa-authorization/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced.

      In this example, we will use OPA to implement a read-only policy for requests coming from outside a trusted network (IP range 192.168.1/24).

      The implementation relies on the X-Forwarded-For HTTP header to read the client's IP address.5

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"friends\":\n      apiKey:\n        selector:\n          matchLabels:\n            group: friends\n      credentials:\n        authorizationHeader:\n          prefix: APIKEY\n  authorization:\n    \"read-only-outside\":\n      opa:\n        rego: |\n          ips := split(input.context.request.http.headers[\"x-forwarded-for\"], \",\")\n          trusted_network { net.cidr_contains(\"192.168.1.1/24\", ips[0]) }\n\n          allow { trusted_network }\n          allow { not trusted_network; input.context.request.http.method == \"GET\" }\nEOF\n
      "},{"location":"authorino/docs/user-guides/opa-authorization/#create-the-api-key","title":"\u277b Create the API key","text":"
      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: api-key-1\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    group: friends\nstringData:\n  api_key: ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx\ntype: Opaque\nEOF\n
      "},{"location":"authorino/docs/user-guides/opa-authorization/#consume-the-api","title":"\u277c Consume the API","text":"

      Inside the trusted network:

      curl -H 'Authorization: APIKEY ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx' \\\n     -H 'X-Forwarded-For: 192.168.1.10' \\\n     http://talker-api.127.0.0.1.nip.io:8000/hello\n# HTTP/1.1 200 OK\n
      curl -H 'Authorization: APIKEY ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx' \\\n     -H 'X-Forwarded-For: 192.168.1.10' \\\n     -X POST \\\n     http://talker-api.127.0.0.1.nip.io:8000/hello\n# HTTP/1.1 200 OK\n

      Outside the trusted network:

      curl -H 'Authorization: APIKEY ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx' \\\n     -H 'X-Forwarded-For: 123.45.6.78' \\\n     http://talker-api.127.0.0.1.nip.io:8000/hello\n# HTTP/1.1 200 OK\n
      curl -H 'Authorization: APIKEY ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx' \\\n     -H 'X-Forwarded-For: 123.45.6.78' \\\n     -X POST \\\n     http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 403 Forbidden\n# x-ext-auth-reason: Unauthorized\n
      "},{"location":"authorino/docs/user-guides/opa-authorization/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete secret/api-key-1\nkubectl delete authconfig/talker-api-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      5. You can also set use_remote_address: true in the Envoy route configuration, so the proxy will append its IP address instead of run in transparent mode. This setting will also ensure real remote address of the client connection passed in the x-envoy-external-address HTTP header, which can be used to simplify the read-only policy in remote environment.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/passing-credentials/","title":"User guide: Passing credentials (Authorization header, cookie headers and others)","text":"

      Customize where credentials are supplied in the request by each trusted source of identity.

      Authorino capabilities featured in this guide:
      • Identity verification & authentication \u2192 Auth credentials
      • Identity verification & authentication \u2192 API key

      Authentication tokens can be supplied in the Authorization header, in a custom header, cookie or query string parameter.

      Check out as well the user guide about Authentication with API keys.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/passing-credentials/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/passing-credentials/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/passing-credentials/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/passing-credentials/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/passing-credentials/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/passing-credentials/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced.

      In this example, member users can authenticate supplying the API key in any of 4 different ways:

      • HTTP header Authorization: APIKEY <api-key>
      • HTTP header X-API-Key: <api-key>
      • Query string parameter api_key=<api-key>
      • Cookie Cookie: APIKEY=<api-key>;

      admin API keys are only accepted in the (default) HTTP header Authorization: Bearer <api-key>.

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"members-authorization-header\":\n      apiKey:\n        selector:\n          matchLabels:\n            group: members\n      credentials:\n        authorizationHeader:\n          prefix: APIKEY # instead of the default prefix 'Bearer'\n    \"members-custom-header\":\n      apiKey:\n        selector:\n          matchLabels:\n            group: members\n      credentials:\n        customHeader:\n          name: X-API-Key\n    \"members-query-string-param\":\n      apiKey:\n        selector:\n          matchLabels:\n            group: members\n      credentials:\n        queryString:\n          name: api_key\n    \"members-cookie\":\n      apiKey:\n        selector:\n          matchLabels:\n            group: members\n      credentials:\n        cookie:\n          name: APIKEY\n    \"admins\":\n      apiKey:\n        selector:\n          matchLabels:\n            group: admins\nEOF\n
      "},{"location":"authorino/docs/user-guides/passing-credentials/#create-the-api-keys","title":"\u277b Create the API keys","text":"

      For a member user:

      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: api-key-1\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    group: members\nstringData:\n  api_key: ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx\ntype: Opaque\nEOF\n

      For an admin user:

      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: api-key-2\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    group: admins\nstringData:\n  api_key: 7BNaTmYGItSzXiwQLNHu82+x52p1XHgY\ntype: Opaque\nEOF\n
      "},{"location":"authorino/docs/user-guides/passing-credentials/#consume-the-api","title":"\u277c Consume the API","text":"

      As member user, passing the API key in the Authorization header:

      curl -H 'Authorization: APIKEY ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx' http://talker-api.127.0.0.1.nip.io:8000/hello\n# HTTP/1.1 200 OK\n

      As member user, passing the API key in the custom X-API-Key header:

      curl -H 'X-API-Key: ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx' http://talker-api.127.0.0.1.nip.io:8000/hello\n# HTTP/1.1 200 OK\n

      As member user, passing the API key in the query string parameter api_key:

      curl \"http://talker-api.127.0.0.1.nip.io:8000/hello?api_key=ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx\"\n# HTTP/1.1 200 OK\n

      As member user, passing the API key in the APIKEY cookie header:

      curl -H 'Cookie: APIKEY=ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx;foo=bar' http://talker-api.127.0.0.1.nip.io:8000/hello\n# HTTP/1.1 200 OK\n

      As admin user:

      curl -H 'Authorization: Bearer 7BNaTmYGItSzXiwQLNHu82+x52p1XHgY' http://talker-api.127.0.0.1.nip.io:8000/hello\n# HTTP/1.1 200 OK\n

      Missing the API key:

      curl http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 401 Unauthorized\n# www-authenticate: APIKEY realm=\"members-authorization-header\"\n# www-authenticate: X-API-Key realm=\"members-custom-header\"\n# www-authenticate: api_key realm=\"members-query-string-param\"\n# www-authenticate: APIKEY realm=\"members-cookie\"\n# www-authenticate: Bearer realm=\"admins\"\n# x-ext-auth-reason: {\"admins\":\"credential not found\",\"members-authorization-header\":\"credential not found\",\"members-cookie\":\"credential not found\",\"members-custom-header\":\"credential not found\",\"members-query-string-param\":\"credential not found\"}\n
      "},{"location":"authorino/docs/user-guides/passing-credentials/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete secret/api-key-1\nkubectl delete secret/api-key-2\nkubectl delete authconfig/talker-api-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/resource-level-authorization-uma/","title":"User guide: Resource-level authorization with User-Managed Access (UMA) resource registry","text":"

      Fetch resource metadata relevant for your authorization policies from Keycloak authorization clients, using User-Managed Access (UMA) protocol.

      Authorino capabilities featured in this guide:
      • External auth metadata \u2192 User-Managed Access (UMA) resource registry
      • Identity verification & authentication \u2192 JWT verification
      • Authorization \u2192 Open Policy Agent (OPA) Rego policies

      Check out as well the user guides about OpenID Connect Discovery and authentication with JWTs and Open Policy Agent (OPA) Rego policies.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/resource-level-authorization-uma/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)
      • Identity Provider (IdP) that implements OpenID Connect authentication and OpenID Connect Discovery (e.g. Keycloak)
      • jq, to extract parts of JSON responses

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      Deploy the identity provider and authentication server by executing the command below. For the examples in this guide, we are going to use a Keycloak server preloaded with all required realm settings.

      kubectl create namespace keycloak\nkubectl -n keycloak apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/keycloak/keycloak-deploy.yaml\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/resource-level-authorization-uma/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/resource-level-authorization-uma/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/resource-level-authorization-uma/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/resource-level-authorization-uma/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/resource-level-authorization-uma/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced:

      This example of resource-level authorization leverages part of Keycloak's User-Managed Access (UMA) support. Authorino will fetch resource attributes stored in a Keycloak resource server client.

      The Keycloak server also provides the identities. The sub claim of the Keycloak-issued ID tokens must match the owner of the requested resource, identified by the URI of the request.

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.

      Create a required secret that will be used by Authorino to initiate the authentication with the UMA registry.

      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: talker-api-uma-credentials\nstringData:\n  clientID: talker-api\n  clientSecret: 523b92b6-625d-4e1e-a313-77e7a8ae4e88\ntype: Opaque\nEOF\n

      Create the config:

      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"keycloak-kuadrant-realm\":\n      jwt:\n        issuerUrl: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\n  metadata:\n    \"resource-data\":\n      uma:\n        endpoint: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\n        credentialsRef:\n          name: talker-api-uma-credentials\n  authorization:\n    \"owned-resources\":\n      opa:\n        rego: |\n          COLLECTIONS = [\"greetings\"]\n\n          http_request = input.context.request.http\n          http_method = http_request.method\n          requested_path_sections = split(trim_left(trim_right(http_request.path, \"/\"), \"/\"), \"/\")\n\n          get { http_method == \"GET\" }\n          post { http_method == \"POST\" }\n          put { http_method == \"PUT\" }\n          delete { http_method == \"DELETE\" }\n\n          valid_collection { COLLECTIONS[_] == requested_path_sections[0] }\n\n          collection_endpoint {\n            valid_collection\n            count(requested_path_sections) == 1\n          }\n\n          resource_endpoint {\n            valid_collection\n            some resource_id\n            requested_path_sections[1] = resource_id\n          }\n\n          identity_owns_the_resource {\n            identity := input.auth.identity\n            resource_attrs := object.get(input.auth.metadata, \"resource-data\", [])[0]\n            resource_owner := object.get(object.get(resource_attrs, \"owner\", {}), \"id\", \"\")\n            resource_owner == identity.sub\n          }\n\n          allow { get;    collection_endpoint }\n          allow { post;   collection_endpoint }\n          allow { get;    resource_endpoint; identity_owns_the_resource }\n          allow { put;    resource_endpoint; identity_owns_the_resource }\n          allow { delete; resource_endpoint; identity_owns_the_resource }\nEOF\n

      The OPA policy owned-resource above enforces that all users can send GET and POST requests to /greetings, while only resource owners can send GET, PUT and DELETE requests to /greetings/{resource-id}.

      "},{"location":"authorino/docs/user-guides/resource-level-authorization-uma/#obtain-access-tokens-with-the-keycloak-server-and-consume-the-api","title":"\u277b Obtain access tokens with the Keycloak server and consume the API","text":""},{"location":"authorino/docs/user-guides/resource-level-authorization-uma/#obtain-an-access-token-as-john-and-consume-the-api","title":"Obtain an access token as John and consume the API","text":"

      Obtain an access token for user John (owner of the resource /greetings/1 in the UMA registry):

      The AuthConfig deployed in the previous step is suitable for validating access tokens requested inside the cluster. This is because Keycloak's iss claim added to the JWTs matches always the host used to request the token and Authorino will later try to match this host to the host that provides the OpenID Connect configuration.

      Obtain an access token from within the cluster:

      ACCESS_TOKEN=$(kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=demo' -d 'username=john' -d 'password=p' -d 'scope=openid' | jq -r .access_token)\n

      If your Keycloak server is reachable from outside the cluster, feel free to obtain the token directly. Make sure the host name set in the OIDC issuer endpoint in the AuthConfig matches the one used to obtain the token and is as well reachable from within the cluster.

      As John, send requests to the API:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/greetings\n# HTTP/1.1 200 OK\n\ncurl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/greetings/1\n# HTTP/1.1 200 OK\n\ncurl -H \"Authorization: Bearer $ACCESS_TOKEN\" -X DELETE http://talker-api.127.0.0.1.nip.io:8000/greetings/1\n# HTTP/1.1 200 OK\n\ncurl -H \"Authorization: Bearer $ACCESS_TOKEN\" -X DELETE http://talker-api.127.0.0.1.nip.io:8000/greetings/2 -i\n# HTTP/1.1 403 Forbidden\n
      "},{"location":"authorino/docs/user-guides/resource-level-authorization-uma/#obtain-an-access-token-as-jane-and-consume-the-api","title":"Obtain an access token as Jane and consume the API","text":"

      Obtain an access token for user Jane (owner of the resource /greetings/2 in the UMA registry):

      ACCESS_TOKEN=$(kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=demo' -d 'username=jane' -d 'password=p' -d 'scope=openid' | jq -r .access_token)\n

      As Jane, send requests to the API:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/greetings\n# HTTP/1.1 200 OK\n\ncurl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/greetings/1 -i\n# HTTP/1.1 403 Forbidden\n\ncurl -H \"Authorization: Bearer $ACCESS_TOKEN\" -X DELETE http://talker-api.127.0.0.1.nip.io:8000/greetings/1 -i\n# HTTP/1.1 403 Forbidden\n\ncurl -H \"Authorization: Bearer $ACCESS_TOKEN\" -X DELETE http://talker-api.127.0.0.1.nip.io:8000/greetings/2\n# HTTP/1.1 200 OK\n
      "},{"location":"authorino/docs/user-guides/resource-level-authorization-uma/#obtain-an-access-token-as-peter-and-consume-the-api","title":"Obtain an access token as Peter and consume the API","text":"

      Obtain an access token for user Peter (does not own any resource in the UMA registry):

      ACCESS_TOKEN=$(kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=demo' -d 'username=peter' -d 'password=p' -d 'scope=openid' | jq -r .access_token)\n

      As Jane, send requests to the API:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/greetings\n# HTTP/1.1 200 OK\n\ncurl -H \"Authorization: Bearer $ACCESS_TOKEN\" http://talker-api.127.0.0.1.nip.io:8000/greetings/1 -i\n# HTTP/1.1 403 Forbidden\n\ncurl -H \"Authorization: Bearer $ACCESS_TOKEN\" -X DELETE http://talker-api.127.0.0.1.nip.io:8000/greetings/1 -i\n# HTTP/1.1 403 Forbidden\n\ncurl -H \"Authorization: Bearer $ACCESS_TOKEN\" -X DELETE http://talker-api.127.0.0.1.nip.io:8000/greetings/2 -i\n# HTTP/1.1 403 Forbidden\n
      "},{"location":"authorino/docs/user-guides/resource-level-authorization-uma/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete authconfig/talker-api-protection\nkubectl delete secret/talker-api-uma-credentials\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\nkubectl delete namespace keycloak\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/sharding/","title":"User guide: Reducing the operational space","text":"

      By default, Authorino will watch events related to all AuthConfig custom resources in the reconciliation space (namespace or entire cluster). Instances can be configured though to only watch a subset of the resources, thus allowing such as:

      • to reduce noise and lower memory usage inside instances meant for restricted scope (e.g. Authorino deployed as a dedicated sidecar to protect only one host);
      • sharding auth config data across multiple instances;
      • multiple environments (e.g. staging, production) inside of a same cluster/namespace;
      • providing managed instances of Authorino that all watch CRs cluster-wide, yet dedicated to organizations allowed to create and operate their own AuthConfigs across multiple namespaces.
      \u26a0\ufe0f Important: This feature may not be available to users of Authorino via Kuadrant. Authorino capabilities featured in this guide:
      • Sharding
      • Identity verification & authentication \u2192 API key

      Check out as well the user guide about Authentication with API keys.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/sharding/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      "},{"location":"authorino/docs/user-guides/sharding/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/sharding/#deploy-instances-of-authorino","title":"\u2777 Deploy instances of Authorino","text":"

      Deploy an instance of Authorino dedicated to AuthConfigs and API key Secrets labeled with authorino/environment=staging:

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino-staging\nspec:\n  clusterWide: true\n  authConfigLabelSelectors: authorino/environment=staging\n  secretLabelSelectors: authorino/environment=staging\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n

      Deploy an instance of Authorino dedicated to AuthConfigs and API key Secrets labeled with authorino/environment=production, ans NOT labeled disabled:

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino-production\nspec:\n  clusterWide: true\n  authConfigLabelSelectors: authorino/environment=production,!disabled\n  secretLabelSelectors: authorino/environment=production,!disabled\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n

      The commands above will both request instances of Authorino that watch for AuthConfig resources cluster-wide1, with TLS disabled2.

      "},{"location":"authorino/docs/user-guides/sharding/#create-a-namespace-for-user-resources","title":"\u2778 Create a namespace for user resources","text":"
      kubectl create namespace myapp\n
      "},{"location":"authorino/docs/user-guides/sharding/#create-authconfigs-and-api-key-secrets-for-both-instances","title":"\u2779 Create AuthConfigs and API key Secrets for both instances","text":""},{"location":"authorino/docs/user-guides/sharding/#create-resources-for-authorino-staging","title":"Create resources for authorino-staging","text":"

      Create an AuthConfig:

      kubectl -n myapp apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: auth-config-1\n  labels:\n    authorino/environment: staging\nspec:\n  hosts:\n\n  - my-host.staging.io\n  authentication:\n    \"api-key\":\n      apiKey:\n        selector:\n          matchLabels:\n            authorino/api-key: \"true\"\n            authorino/environment: staging\nEOF\n

      Create an API key Secret:

      kubectl -n myapp apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: api-key-1\n  labels:\n    authorino/api-key: \"true\"\n    authorino/environment: staging\nstringData:\n  api_key: ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx\ntype: Opaque\nEOF\n

      Verify in the logs that only the authorino-staging instance adds the resources to the index:

      kubectl logs $(kubectl get pods -l authorino-resource=authorino-staging -o name)\n# {\"level\":\"info\",\"ts\":1638382989.8327162,\"logger\":\"authorino.controller-runtime.manager.controller.authconfig\",\"msg\":\"resource reconciled\",\"authconfig\":\"myapp/auth-config-1\"}\n# {\"level\":\"info\",\"ts\":1638382989.837424,\"logger\":\"authorino.controller-runtime.manager.controller.authconfig.statusupdater\",\"msg\":\"resource status updated\",\"authconfig/status\":\"myapp/auth-config-1\"}\n# {\"level\":\"info\",\"ts\":1638383144.9486837,\"logger\":\"authorino.controller-runtime.manager.controller.secret\",\"msg\":\"resource reconciled\",\"secret\":\"myapp/api-key-1\"}\n
      "},{"location":"authorino/docs/user-guides/sharding/#create-resources-for-authorino-production","title":"Create resources for authorino-production","text":"

      Create an AuthConfig:

      kubectl -n myapp apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: auth-config-2\n  labels:\n    authorino/environment: production\nspec:\n  hosts:\n\n  - my-host.io\n  authentication:\n    \"api-key\":\n      apiKey:\n        selector:\n          matchLabels:\n            authorino/api-key: \"true\"\n            authorino/environment: production\nEOF\n

      Create an API key Secret:

      kubectl -n myapp apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: api-key-2\n  labels:\n    authorino/api-key: \"true\"\n    authorino/environment: production\nstringData:\n  api_key: MUWdeBte7AbSWxl6CcvYNJ+3yEIm5CaL\ntype: Opaque\nEOF\n

      Verify in the logs that only the authorino-production instance adds the resources to the index:

      kubectl logs $(kubectl get pods -l authorino-resource=authorino-production -o name)\n# {\"level\":\"info\",\"ts\":1638383423.86086,\"logger\":\"authorino.controller-runtime.manager.controller.authconfig.statusupdater\",\"msg\":\"resource status updated\",\"authconfig/status\":\"myapp/auth-config-2\"}\n# {\"level\":\"info\",\"ts\":1638383423.8608105,\"logger\":\"authorino.controller-runtime.manager.controller.authconfig\",\"msg\":\"resource reconciled\",\"authconfig\":\"myapp/auth-config-2\"}\n# {\"level\":\"info\",\"ts\":1638383460.3515081,\"logger\":\"authorino.controller-runtime.manager.controller.secret\",\"msg\":\"resource reconciled\",\"secret\":\"myapp/api-key-2\"}\n
      "},{"location":"authorino/docs/user-guides/sharding/#remove-a-resource-from-scope","title":"\u277a Remove a resource from scope","text":"
      kubectl -n myapp label authconfig/auth-config-2 disabled=true\n# authconfig.authorino.kuadrant.io/auth-config-2 labeled\n

      Verify in the logs that the authorino-production instance removes the authconfig from the index:

      kubectl logs $(kubectl get pods -l authorino-resource=authorino-production -o name)\n# {\"level\":\"info\",\"ts\":1638383515.6428752,\"logger\":\"authorino.controller-runtime.manager.controller.authconfig\",\"msg\":\"resource de-indexed\",\"authconfig\":\"myapp/auth-config-2\"}\n
      "},{"location":"authorino/docs/user-guides/sharding/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete authorino/authorino-staging\nkubectl delete authorino/authorino-production\nkubectl delete namespace myapp\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. cluster-wide reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      2. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/token-normalization/","title":"User guide: Token normalization","text":"

      Broadly, the term token normalization in authentication systems usually implies the exchange of an authentication token, as provided by the user in a given format, and/or its associated identity claims, for another freshly issued token/set of claims, of a given (normalized) structure or format.

      The most typical use-case for token normalization involves accepting tokens issued by multiple trusted sources and of often varied authentication protocols, while ensuring that the eventual different data structures adopted by each of those sources are normalized, thus allowing to simplify policies and authorization checks that depend on those values. In general, however, any modification to the identity claims can be for the purpose of normalization.

      This user guide focuses on the aspect of mutation of the identity claims resolved from an authentication token, to a certain data format and/or by extending them, so that required attributes can thereafter be trusted to be present among the claims, in a desired form. For such, Authorino allows to extend resolved identity objects with custom attributes (custom claims) of either static values or with values fetched from the Authorization JSON.

      For not only normalizing the identity claims for purpose of writing simpler authorization checks and policies, but also getting Authorino to issue a new token in a normalized format, check the Festival Wristband tokens feature.

      Authorino capabilities featured in this guide:
      • Identity verification & authentication \u2192 Identity extension
      • Identity verification & authentication \u2192 API key
      • Identity verification & authentication \u2192 JWT verification
      • Authorization \u2192 Pattern-matching authorization

      Check out as well the user guides about Authentication with API keys, OpenID Connect Discovery and authentication with JWTs and Simple pattern-matching authorization policies.

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/token-normalization/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)
      • Identity Provider (IdP) that implements OpenID Connect authentication and OpenID Connect Discovery (e.g. Keycloak)
      • jq, to extract parts of JSON responses

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      Deploy the identity provider and authentication server by executing the command below. For the examples in this guide, we are going to use a Keycloak server preloaded with all required realm settings.

      kubectl create namespace keycloak\nkubectl -n keycloak apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/keycloak/keycloak-deploy.yaml\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant and already have your workload cluster configured and sample service application deployed, as well as your Gateway API network resources applied to route traffic to your service, skip straight to step \u277a.

      At step \u277a, instead of creating an AuthConfig custom resource, create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/token-normalization/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/token-normalization/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources in the default namespace2, with TLS disabled3.

      kubectl apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino/docs/user-guides/token-normalization/#deploy-the-talker-api","title":"\u2778 Deploy the Talker API","text":"

      The Talker API is a simple HTTP service that echoes back in the response whatever it gets in the request. We will use it in this guide as the sample service to be protected by Authorino.

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\n
      "},{"location":"authorino/docs/user-guides/token-normalization/#setup-envoy","title":"\u2779 Setup Envoy","text":"

      The following bundle from the Authorino examples deploys the Envoy proxy and configuration to wire up the Talker API behind the reverse-proxy, with external authorization enabled with the Authorino instance.4

      kubectl apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\n

      The command above creates an Ingress with host name talker-api.127.0.0.1.nip.io. If you are using a local Kubernetes cluster created with Kind, forward requests from your local port 8000 to the Envoy service running inside the cluster:

      kubectl port-forward deployment/envoy 8000:8000 2>&1 >/dev/null &\n
      "},{"location":"authorino/docs/user-guides/token-normalization/#create-an-authconfig","title":"\u277a Create an AuthConfig","text":"

      Create an Authorino AuthConfig custom resource declaring the auth rules to be enforced.

      This example implements a policy that only users bound to the admin role can send DELETE requests.

      The config trusts access tokens issued by a Keycloak realm as well as API keys labeled specifically to a selected group (friends). The roles of the identities handled by Keycloak are managed in Keycloak, as realm roles. Particularly, users john and peter are bound to the member role, while user jane is bound to roles member and admin. As for the users authenticating with API key, they are all bound to the admin role.

      Without normalizing identity claims from these two different sources, the policy would have to handle the differences of data formats with additional ifs-and-elses. Instead, the config here uses the identity.extendedProperties option to ensure a custom roles (Array) claim is always present in the identity object. In the case of Keycloak ID tokens, the value is extracted from the realm_access.roles claim; for API key-resolved objects, the custom claim is set to the static value [\"admin\"].

      Kuadrant users \u2013 Remember to create an AuthPolicy instead of an AuthConfig. For more, see Kuadrant auth.
      kubectl apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: talker-api-protection\nspec:\n  hosts:\n\n  - talker-api.127.0.0.1.nip.io\n  authentication:\n    \"keycloak-kuadrant-realm\":\n      jwt:\n        issuerUrl: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\n      overrides:\n        \"roles\":\n          selector: auth.identity.realm_access.roles\n    \"api-key-friends\":\n      apiKey:\n        selector:\n          matchLabels:\n            group: friends\n      credentials:\n        authorizationHeader:\n          prefix: APIKEY\n      defaults:\n        \"roles\":\n          value: [\"admin\"]\n  authorization:\n    \"only-admins-can-delete\":\n      when:\n      - selector: context.request.http.method\n        operator: eq\n        value: DELETE\n      patternMatching:\n        patterns:\n        - selector: auth.identity.roles\n          operator: incl\n          value: admin\nEOF\n
      "},{"location":"authorino/docs/user-guides/token-normalization/#create-an-api-key","title":"\u277b Create an API key","text":"
      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: api-key-1\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    group: friends\nstringData:\n  api_key: ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx\ntype: Opaque\nEOF\n
      "},{"location":"authorino/docs/user-guides/token-normalization/#consume-the-api","title":"\u277c Consume the API","text":""},{"location":"authorino/docs/user-guides/token-normalization/#obtain-an-access-token-and-consume-the-api-as-jane-admin","title":"Obtain an access token and consume the API as Jane (admin)","text":"

      Obtain an access token with the Keycloak server for Jane:

      The AuthConfig deployed in the previous step is suitable for validating access tokens requested inside the cluster. This is because Keycloak's iss claim added to the JWTs matches always the host used to request the token and Authorino will later try to match this host to the host that provides the OpenID Connect configuration.

      Obtain an access token from within the cluster for the user Jane, whose e-mail has been verified:

      ACCESS_TOKEN=$(kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=demo' -d 'username=jane' -d 'password=p' -d 'scope=openid' | jq -r .access_token)\n

      If your Keycloak server is reachable from outside the cluster, feel free to obtain the token directly. Make sure the host name set in the OIDC issuer endpoint in the AuthConfig matches the one used to obtain the token and is as well reachable from within the cluster.

      Consume the API as Jane:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" -X DELETE http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 200 OK\n
      "},{"location":"authorino/docs/user-guides/token-normalization/#obtain-an-access-token-and-consume-the-api-as-john-member","title":"Obtain an access token and consume the API as John (member)","text":"

      Obtain an access token with the Keycloak server for John:

      ACCESS_TOKEN=$(kubectl run token --attach --rm --restart=Never -q --image=curlimages/curl -- http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant/protocol/openid-connect/token -s -d 'grant_type=password' -d 'client_id=demo' -d 'username=john' -d 'password=p' -d 'scope=openid' | jq -r .access_token)\n

      Consume the API as John:

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" -X DELETE http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 403 Forbidden\n
      "},{"location":"authorino/docs/user-guides/token-normalization/#consume-the-api-using-the-api-key-to-authenticate-admin","title":"Consume the API using the API key to authenticate (admin)","text":"
      curl -H \"Authorization: APIKEY ndyBzreUzF4zqDQsqSPMHkRhriEOtcRx\" -X DELETE http://talker-api.127.0.0.1.nip.io:8000/hello -i\n# HTTP/1.1 200 OK\n
      "},{"location":"authorino/docs/user-guides/token-normalization/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete secret/api-key-1\nkubectl delete authconfig/talker-api-protection\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/envoy/envoy-notls-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/talker-api/talker-api-deploy.yaml\nkubectl delete authorino/authorino\nkubectl delete namespace keycloak\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. namespaced reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      4. For details and instructions to setup Envoy manually, see Protect a service > Setup Envoy in the Getting Started page. If you are running your ingress gateway in Kubernetes and wants to avoid setting up and configuring your proxy manually, check out Kuadrant.\u00a0\u21a9

      "},{"location":"authorino/docs/user-guides/validating-webhook/","title":"User guide: Using Authorino as ValidatingWebhook service","text":"

      Authorino provides an interface for raw HTTP external authorization requests. This interface can be used for integrations other than the typical Envoy gRPC protocol, such as (though not limited to) using Authorino as a generic Kubernetes ValidatingWebhook service.

      The rules to validate a request to the Kubernetes API \u2013 typically a POST, PUT or DELETE request targeting a particular Kubernetes resource or collection \u2013, according to which either the change will be deemed accepted or not, are written in an Authorino AuthConfig custom resource. Authentication and authorization are performed by the Kubernetes API server as usual, with auth features of Authorino implementing the additional validation within the scope of an AdmissionReview request.

      This user guide provides an example of using Authorino as a Kubernetes ValidatingWebhook service that validates requests to CREATE and UPDATE Authorino AuthConfig resources. In other words, we will use Authorino as a validator inside the cluster that decides what is a valid AuthConfig for any application which wants to rely on Authorino to protect itself.

      Authorino capabilities featured in this guide:
      • Identity verification & authentication \u2192 Plain
      • Identity verification & authentication \u2192 Kubernetes TokenReview
      • Identity verification & authentication \u2192 API key
      • External auth metadata \u2192 HTTP GET/GET-by-POST
      • Authorization \u2192 Kubernetes SubjectAccessReview
      • Authorization \u2192 Open Policy Agent (OPA) Rego policies
      • Dynamic response \u2192 Festival Wristband tokens
      • Common feature \u2192 Conditions
      • Common feature \u2192 Priorities

      For further details about Authorino features in general, check the docs.

      "},{"location":"authorino/docs/user-guides/validating-webhook/#requirements","title":"Requirements","text":"
      • Kubernetes server with permissions to install cluster-scoped resources (operator, CRDs and RBAC)
      • Identity Provider (IdP) that implements OpenID Connect authentication and OpenID Connect Discovery (e.g. Keycloak)

      If you do not own a Kubernetes server already and just want to try out the steps in this guide, you can create a local containerized cluster by executing the command below. In this case, the main requirement is having Kind installed, with either Docker or Podman.

      kind create cluster --name authorino-tutorial\n

      Deploy the identity provider and authentication server. For the examples in this guide, we are going to use a Keycloak server preloaded with all required realm settings.

      The Keycloak server is only needed for trying out validating AuthConfig resources that use the authentication server.

      kubectl create namespace keycloak\nkubectl -n keycloak apply -f https://raw.githubusercontent.com/kuadrant/authorino-examples/main/keycloak/keycloak-deploy.yaml\n

      The next steps walk you through installing Authorino, deploying and configuring a sample service called Talker API to be protected by the authorization service.

      Using Kuadrant

      If you are a user of Kuadrant you may already have Authorino installed and running. In this case, skip straight to step \u2778.

      At step \u277a, alternatively to creating an AuthConfig custom resource, you may create a Kuadrant AuthPolicy one. The schema of the AuthConfig's spec matches the one of the AuthPolicy's, except spec.host, which is not available in the Kuadrant AuthPolicy. Host names in a Kuadrant AuthPolicy are inferred automatically from the Kubernetes network object referred in spec.targetRef and route selectors declared in the policy.

      For more about using Kuadrant to enforce authorization, check out Kuadrant auth.

      "},{"location":"authorino/docs/user-guides/validating-webhook/#install-the-authorino-operator-cluster-admin-required","title":"\u2776 Install the Authorino Operator (cluster admin required)","text":"

      The following command will install the Authorino Operator in the Kubernetes cluster. The operator manages instances of the Authorino authorization service.

      curl -sL https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/utils/install.sh | bash -s\n
      "},{"location":"authorino/docs/user-guides/validating-webhook/#deploy-authorino","title":"\u2777 Deploy Authorino","text":"

      Create the namespace:

      kubectl create namespace authorino\n

      Create the TLS certificates:

      curl -sSL https://raw.githubusercontent.com/Kuadrant/authorino/main/deploy/certs.yaml | sed \"s/\\$(AUTHORINO_INSTANCE)/authorino/g;s/\\$(NAMESPACE)/authorino/g\" | kubectl -n authorino apply -f -\n

      Create the Authorino instance:

      The following command will request an instance of Authorino as a separate service1 that watches for AuthConfig resources cluster-wide2, with TLS enabled3.

      kubectl -n authorino apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  clusterWide: true\n  listener:\n    ports:\n      grpc: 50051\n      http: 5001 # for admissionreview requests sent by the kubernetes api server\n    tls:\n      certSecretRef:\n        name: authorino-server-cert\n  oidcServer:\n    tls:\n      certSecretRef:\n        name: authorino-oidc-server-cert\nEOF\n

      For convenience, the same instance of Authorino pointed as the validating webhook will also be targeted for the sample AuthConfigs created to test the validation. For using different instances of Authorino for the validating webhook and for protecting applications behind a proxy, check out the section about sharding in the docs. There is also a user guide on the topic, with concrete examples.

      "},{"location":"authorino/docs/user-guides/validating-webhook/#create-the-authconfig-and-related-clusterrole","title":"\u2778 Create the AuthConfig and related ClusterRole","text":"

      Create the AuthConfig with the auth rules to validate other AuthConfig resources applied to the cluster.

      The AuthConfig to validate other AuthConfigs will enforce the following rules:

      • Authorino features that cannot be used by any application in their security schemes:
      • Anonymous Access
      • Plain identity object extracted from context
      • Kubernetes authentication (TokenReview)
      • Kubernetes authorization (SubjectAccessReview)
      • Festival Wristband tokens
      • Authorino features that require a RoleBinding to a specific ClusterRole in the 'authorino' namespace, to be used in a AuthConfig:
      • Authorino API key authentication
      • All metadata pulled from external sources must be cached for precisely 5 minutes (300 seconds)
      kubectl -n authorino apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: authconfig-validator\nspec:\n  # admissionreview requests will be sent to this host name\n  hosts:\n\n  - authorino-authorino-authorization.authorino.svc\n\n  # because we're using a single authorino instance for the validating webhook and to protect the user applications,\n  # skip operations related to this one authconfig in the 'authorino' namespace\n  when:\n\n  - selector: context.request.http.body.@fromstr|request.object.metadata.namespace\n    operator: neq\n    value: authorino\n\n  # kubernetes admissionreviews carry info about the authenticated user\n  authentication:\n    \"k8s-userinfo\":\n      plain:\n        selector: context.request.http.body.@fromstr|request.userInfo\n\n  authorization:\n    \"features\":\n      opa:\n        rego: |\n          authconfig = json.unmarshal(input.context.request.http.body).request.object\n\n          forbidden { count(object.get(authconfig.spec, \"authentication\", [])) == 0 }\n          forbidden { authconfig.spec.authentication[_].anonymous }\n          forbidden { authconfig.spec.authentication[_].kubernetesTokenReview }\n          forbidden { authconfig.spec.authentication[_].plain }\n          forbidden { authconfig.spec.authorization[_].kubernetesSubjectAccessReview }\n          forbidden { authconfig.spec.response.success.headers[_].wristband }\n\n          apiKey { authconfig.spec.authentication[_].apiKey }\n\n          allow { count(authconfig.spec.authentication) > 0; not forbidden }\n        allValues: true\n\n    \"apikey-authn-requires-k8s-role-binding\":\n      priority: 1\n      when:\n\n      - selector: auth.authorization.features.apiKey\n        operator: eq\n        value: \"true\"\n      kubernetesSubjectAccessReview:\n        user:\n          selector: auth.identity.username\n        resourceAttributes:\n          namespace: { value: authorino }\n          group: { value: authorino.kuadrant.io }\n          resource: { value: authconfigs-with-apikeys }\n          verb: { value: create }\n\n    \"metadata-cache-ttl\":\n      priority: 1\n      opa:\n        rego: |\n          invalid_ttl = input.auth.authorization.features.authconfig.spec.metadata[_].cache.ttl != 300\n          allow { not invalid_ttl }\nEOF\n

      Define a ClusterRole to control the usage of protected features of Authorino:

      kubectl apply -f -<<EOF\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: authorino-apikey\nrules:\n\n- apiGroups: [\"authorino.kuadrant.io\"]\n  resources: [\"authconfigs-with-apikeys\"] # not a real k8s resource\n  verbs: [\"create\"]\nEOF\n
      "},{"location":"authorino/docs/user-guides/validating-webhook/#create-the-validatingwebhookconfiguration","title":"\u2779 Create the ValidatingWebhookConfiguration","text":"
      kubectl -n authorino apply -f -<<EOF\napiVersion: admissionregistration.k8s.io/v1\nkind: ValidatingWebhookConfiguration\nmetadata:\n  name: authconfig-authz\n  annotations:\n    cert-manager.io/inject-ca-from: authorino/authorino-ca-cert\nwebhooks:\n\n- name: check-authconfig.authorino.kuadrant.io\n  clientConfig:\n    service:\n      namespace: authorino\n      name: authorino-authorino-authorization\n      port: 5001\n      path: /check\n  rules:\n  - apiGroups: [\"authorino.kuadrant.io\"]\n    apiVersions: [\"v1beta2\"]\n    resources: [\"authconfigs\"]\n    operations: [\"CREATE\", \"UPDATE\"]\n    scope: Namespaced\n  sideEffects: None\n  admissionReviewVersions: [\"v1\"]\nEOF\n
      "},{"location":"authorino/docs/user-guides/validating-webhook/#try-it-out","title":"\u277a Try it out","text":"

      Create a namespace:

      kubectl create namespace myapp\n
      "},{"location":"authorino/docs/user-guides/validating-webhook/#with-a-valid-authconfig","title":"With a valid AuthConfig","text":"Kuadrant users \u2013 For this and other example AuthConfigs below, if you create a Kuadrant AuthPolicy instead, the output of the commands shall differ. The requested AuthPolicy may be initially accepted, but its state will turn ready or not ready depending on whether the corresponding AuthConfig requested by Kuadrant is accepted or rejected, according to the validating webhook rules. Check the state of the resources to confirm. For more, see Kuadrant auth.
      kubectl -n myapp apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: myapp-protection\nspec:\n  hosts:\n\n  - myapp.io\n  authentication:\n    \"keycloak\":\n      jwt:\n        issuerUrl: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\nEOF\n# authconfig.authorino.kuadrant.io/myapp-protection created\n
      "},{"location":"authorino/docs/user-guides/validating-webhook/#with-forbidden-features","title":"With forbidden features","text":"

      Anonymous access:

      kubectl -n myapp apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: myapp-protection\nspec:\n  hosts:\n\n  - myapp.io\nEOF\n# Error from server: error when applying patch:\n# {\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"authorino.kuadrant.io/v1beta2\\\",\\\"kind\\\":\\\"AuthConfig\\\",\\\"metadata\\\":{\\\"annotations\\\":{},\\\"name\\\":\\\"myapp-protection\\\",\\\"namespace\\\":\\\"myapp\\\"},\\\"spec\\\":{\\\"hosts\\\":[\\\"myapp.io\\\"]}}\\n\"}},\"spec\":{\"authentication\":null}}\n# to:\n# Resource: \"authorino.kuadrant.io/v1beta2, Resource=authconfigs\", GroupVersionKind: \"authorino.kuadrant.io/v1beta2, Kind=AuthConfig\"\n# Name: \"myapp-protection\", Namespace: \"myapp\"\n# for: \"STDIN\": error when patching \"STDIN\": admission webhook \"check-authconfig.authorino.kuadrant.io\" denied the request: Unauthorized\n
      kubectl -n myapp apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: myapp-protection\nspec:\n  hosts:\n\n  - myapp.io\n  authentication:\n    \"anonymous-access\":\n      anonymous: {}\nEOF\n# Error from server: error when applying patch:\n# {\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"authorino.kuadrant.io/v1beta2\\\",\\\"kind\\\":\\\"AuthConfig\\\",\\\"metadata\\\":{\\\"annotations\\\":{},\\\"name\\\":\\\"myapp-protection\\\",\\\"namespace\\\":\\\"myapp\\\"},\\\"spec\\\":{\\\"authentication\\\":{\\\"anonymous-access\\\":{\\\"anonymous\\\":{}}},\\\"hosts\\\":[\\\"myapp.io\\\"]}}\\n\"}},\"spec\":{\"authentication\":{\"anonymous-access\":{\"anonymous\":{}},\"keycloak\":null}}}\n# to:\n# Resource: \"authorino.kuadrant.io/v1beta2, Resource=authconfigs\", GroupVersionKind: \"authorino.kuadrant.io/v1beta2, Kind=AuthConfig\"\n# Name: \"myapp-protection\", Namespace: \"myapp\"\n# for: \"STDIN\": error when patching \"STDIN\": admission webhook \"check-authconfig.authorino.kuadrant.io\" denied the request: Unauthorized\n

      Kubernetes TokenReview:

      kubectl -n myapp apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: myapp-protection\nspec:\n  hosts:\n\n  - myapp.io\n  authentication:\n    \"k8s-tokenreview\":\n      kubernetesTokenReview:\n        audiences: [\"myapp\"]\nEOF\n# Error from server: error when applying patch:\n# {\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"authorino.kuadrant.io/v1beta2\\\",\\\"kind\\\":\\\"AuthConfig\\\",\\\"metadata\\\":{\\\"annotations\\\":{},\\\"name\\\":\\\"myapp-protection\\\",\\\"namespace\\\":\\\"myapp\\\"},\\\"spec\\\":{\\\"authentication\\\":{\\\"k8s-tokenreview\\\":{\\\"kubernetesTokenReview\\\":{\\\"audiences\\\":[\\\"myapp\\\"]}}},\\\"hosts\\\":[\\\"myapp.io\\\"]}}\\n\"}},\"spec\":{\"authentication\":{\"k8s-tokenreview\":{\"kubernetesTokenReview\":{\"audiences\":[\"myapp\"]}},\"keycloak\":null}}}\n# to:\n# Resource: \"authorino.kuadrant.io/v1beta2, Resource=authconfigs\", GroupVersionKind: \"authorino.kuadrant.io/v1beta2, Kind=AuthConfig\"\n# Name: \"myapp-protection\", Namespace: \"myapp\"\n# for: \"STDIN\": error when patching \"STDIN\": admission webhook \"check-authconfig.authorino.kuadrant.io\" denied the request: Unauthorized\n

      Plain identity extracted from context:

      kubectl -n myapp apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: myapp-protection\nspec:\n  hosts:\n\n  - myapp.io\n  authentication:\n    \"envoy-jwt-authn\":\n      plain:\n        selector: context.metadata_context.filter_metadata.envoy\\.filters\\.http\\.jwt_authn|verified_jwt\nEOF\n# Error from server: error when applying patch:\n# {\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"authorino.kuadrant.io/v1beta2\\\",\\\"kind\\\":\\\"AuthConfig\\\",\\\"metadata\\\":{\\\"annotations\\\":{},\\\"name\\\":\\\"myapp-protection\\\",\\\"namespace\\\":\\\"myapp\\\"},\\\"spec\\\":{\\\"authentication\\\":{\\\"envoy-jwt-authn\\\":{\\\"plain\\\":{\\\"selector\\\":\\\"context.metadata_context.filter_metadata.envoy\\\\\\\\.filters\\\\\\\\.http\\\\\\\\.jwt_authn|verified_jwt\\\"}}},\\\"hosts\\\":[\\\"myapp.io\\\"]}}\\n\"}},\"spec\":{\"authentication\":{\"envoy-jwt-authn\":{\"plain\":{\"selector\":\"context.metadata_context.filter_metadata.envoy\\\\.filters\\\\.http\\\\.jwt_authn|verified_jwt\"}},\"keycloak\":null}}}\n# to:\n# Resource: \"authorino.kuadrant.io/v1beta2, Resource=authconfigs\", GroupVersionKind: \"authorino.kuadrant.io/v1beta2, Kind=AuthConfig\"\n# Name: \"myapp-protection\", Namespace: \"myapp\"\n# for: \"STDIN\": error when patching \"STDIN\": admission webhook \"check-authconfig.authorino.kuadrant.io\" denied the request: Unauthorized\n

      Kubernetes SubjectAccessReview:

      kubectl -n myapp apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: myapp-protection\nspec:\n  hosts:\n\n  - myapp.io\n  authentication:\n    \"keycloak\":\n      jwt:\n        issuerUrl: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\n  authorization:\n    \"k8s-subjectaccessreview\":\n      kubernetesSubjectAccessReview:\n        user:\n          selector: auth.identity.sub\nEOF\n# Error from server: error when applying patch:\n# {\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"authorino.kuadrant.io/v1beta2\\\",\\\"kind\\\":\\\"AuthConfig\\\",\\\"metadata\\\":{\\\"annotations\\\":{},\\\"name\\\":\\\"myapp-protection\\\",\\\"namespace\\\":\\\"myapp\\\"},\\\"spec\\\":{\\\"authentication\\\":{\\\"keycloak\\\":{\\\"jwt\\\":{\\\"issuerUrl\\\":\\\"http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\\\"}}},\\\"authorization\\\":{\\\"k8s-subjectaccessreview\\\":{\\\"kubernetesSubjectAccessReview\\\":{\\\"user\\\":{\\\"selector\\\":\\\"auth.identity.sub\\\"}}}},\\\"hosts\\\":[\\\"myapp.io\\\"]}}\\n\"}},\"spec\":{\"authorization\":{\"k8s-subjectaccessreview\":{\"kubernetesSubjectAccessReview\":{\"user\":{\"selector\":\"auth.identity.sub\"}}}}}}\n# to:\n# Resource: \"authorino.kuadrant.io/v1beta2, Resource=authconfigs\", GroupVersionKind: \"authorino.kuadrant.io/v1beta2, Kind=AuthConfig\"\n# Name: \"myapp-protection\", Namespace: \"myapp\"\n# for: \"STDIN\": error when patching \"STDIN\": admission webhook \"check-authconfig.authorino.kuadrant.io\" denied the request: Unauthorized\n

      Festival Wristband tokens:

      kubectl -n myapp apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: wristband-signing-key\nstringData:\n  key.pem: |\n    -----BEGIN EC PRIVATE KEY-----\n    MHcCAQEEIDHvuf81gVlWGo0hmXGTAnA/HVxGuH8vOc7/8jewcVvqoAoGCCqGSM49\n    AwEHoUQDQgAETJf5NLVKplSYp95TOfhVPqvxvEibRyjrUZwwtpDuQZxJKDysoGwn\n    cnUvHIu23SgW+Ee9lxSmZGhO4eTdQeKxMA==\n    -----END EC PRIVATE KEY-----\ntype: Opaque\n---\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: myapp-protection\nspec:\n  hosts:\n\n  - myapp.io\n  authentication:\n    \"keycloak\":\n      jwt:\n        issuerUrl: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\n  response:\n    success:\n      headers:\n        \"wristband\":\n          wristband:\n            issuer: http://authorino-authorino-oidc.authorino.svc.cluster.local:8083/myapp/myapp-protection/wristband\n            signingKeyRefs:\n            - algorithm: ES256\n              name: wristband-signing-key\nEOF\n# secret/wristband-signing-key created\n# Error from server: error when applying patch:\n# {\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"authorino.kuadrant.io/v1beta2\\\",\\\"kind\\\":\\\"AuthConfig\\\",\\\"metadata\\\":{\\\"annotations\\\":{},\\\"name\\\":\\\"myapp-protection\\\",\\\"namespace\\\":\\\"myapp\\\"},\\\"spec\\\":{\\\"authentication\\\":{\\\"keycloak\\\":{\\\"jwt\\\":{\\\"issuerUrl\\\":\\\"http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\\\"}}},\\\"hosts\\\":[\\\"myapp.io\\\"],\\\"response\\\":{\\\"success\\\":{\\\"headers\\\":{\\\"wristband\\\":{\\\"wristband\\\":{\\\"issuer\\\":\\\"http://authorino-authorino-oidc.authorino.svc.cluster.local:8083/myapp/myapp-protection/wristband\\\",\\\"signingKeyRefs\\\":[{\\\"algorithm\\\":\\\"ES256\\\",\\\"name\\\":\\\"wristband-signing-key\\\"}]}}}}}}}\\n\"}},\"spec\":{\"response\":{\"success\":{\"headers\":{\"wristband\":{\"wristband\":{\"issuer\":\"http://authorino-authorino-oidc.authorino.svc.cluster.local:8083/myapp/myapp-protection/wristband\",\"signingKeyRefs\":[{\"algorithm\":\"ES256\",\"name\":\"wristband-signing-key\"}]}}}}}}}\n# to:\n# Resource: \"authorino.kuadrant.io/v1beta2, Resource=authconfigs\", GroupVersionKind: \"authorino.kuadrant.io/v1beta2, Kind=AuthConfig\"\n# Name: \"myapp-protection\", Namespace: \"myapp\"\n# for: \"STDIN\": error when patching \"STDIN\": admission webhook \"check-authconfig.authorino.kuadrant.io\" denied the request: Unauthorized\n
      "},{"location":"authorino/docs/user-guides/validating-webhook/#with-features-that-require-additional-permissions","title":"With features that require additional permissions","text":"

      Before adding the required permissions:

      kubectl -n myapp apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: myapp-protection\nspec:\n  hosts:\n\n  - myapp.io\n  authentication:\n    \"api-key\":\n      apiKey:\n        selector:\n          matchLabels: { app: myapp }\nEOF\n# Error from server: error when applying patch:\n# {\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"authorino.kuadrant.io/v1beta2\\\",\\\"kind\\\":\\\"AuthConfig\\\",\\\"metadata\\\":{\\\"annotations\\\":{},\\\"name\\\":\\\"myapp-protection\\\",\\\"namespace\\\":\\\"myapp\\\"},\\\"spec\\\":{\\\"authentication\\\":{\\\"api-key\\\":{\\\"apiKey\\\":{\\\"selector\\\":{\\\"matchLabels\\\":{\\\"app\\\":\\\"myapp\\\"}}}}},\\\"hosts\\\":[\\\"myapp.io\\\"]}}\\n\"}},\"spec\":{\"authentication\":{\"api-key\":{\"apiKey\":{\"selector\":{\"matchLabels\":{\"app\":\"myapp\"}}}},\"keycloak\":null}}}\n# to:\n# Resource: \"authorino.kuadrant.io/v1beta2, Resource=authconfigs\", GroupVersionKind: \"authorino.kuadrant.io/v1beta2, Kind=AuthConfig\"\n# Name: \"myapp-protection\", Namespace: \"myapp\"\n# for: \"STDIN\": error when patching \"STDIN\": admission webhook \"check-authconfig.authorino.kuadrant.io\" denied the request: Not authorized: unknown reason\n

      Add the required permissions:

      kubectl -n authorino apply -f -<<EOF\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: authorino-apikey\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: authorino-apikey\nsubjects:\n\n- kind: User\n  name: kubernetes-admin\nEOF\n# rolebinding.rbac.authorization.k8s.io/authorino-apikey created\n

      After adding the required permissions:

      kubectl -n myapp apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: myapp-protection\nspec:\n  hosts:\n\n  - myapp.io\n  authentication:\n    \"api-key\":\n      apiKey:\n        selector:\n          matchLabels: { app: myapp }\nEOF\n# authconfig.authorino.kuadrant.io/myapp-protection configured\n
      "},{"location":"authorino/docs/user-guides/validating-webhook/#with-features-that-require-specific-property-validation","title":"With features that require specific property validation","text":"

      Invalid:

      kubectl -n myapp apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: myapp-protection\nspec:\n  hosts:\n\n  - myapp.io\n  authentication:\n    \"keycloak\":\n      jwt:\n        issuerUrl: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\n  metadata:\n    \"external-source\":\n      http:\n        url: http://metadata.io\n      cache:\n        key: { value: global }\n        ttl: 60\nEOF\n# Error from server: error when applying patch:\n# {\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"authorino.kuadrant.io/v1beta2\\\",\\\"kind\\\":\\\"AuthConfig\\\",\\\"metadata\\\":{\\\"annotations\\\":{},\\\"name\\\":\\\"myapp-protection\\\",\\\"namespace\\\":\\\"myapp\\\"},\\\"spec\\\":{\\\"authentication\\\":{\\\"keycloak\\\":{\\\"jwt\\\":{\\\"issuerUrl\\\":\\\"http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\\\"}}},\\\"hosts\\\":[\\\"myapp.io\\\"],\\\"metadata\\\":{\\\"external-source\\\":{\\\"cache\\\":{\\\"key\\\":{\\\"value\\\":\\\"global\\\"},\\\"ttl\\\":60},\\\"http\\\":{\\\"url\\\":\\\"http://metadata.io\\\"}}}}}\\n\"}},\"spec\":{\"authentication\":{\"api-key\":null,\"keycloak\":{\"jwt\":{\"issuerUrl\":\"http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\"}}},\"metadata\":{\"external-source\":{\"cache\":{\"key\":{\"value\":\"global\"},\"ttl\":60},\"http\":{\"url\":\"http://metadata.io\"}}}}}\n# to:\n# Resource: \"authorino.kuadrant.io/v1beta2, Resource=authconfigs\", GroupVersionKind: \"authorino.kuadrant.io/v1beta2, Kind=AuthConfig\"\n# Name: \"myapp-protection\", Namespace: \"myapp\"\n# for: \"STDIN\": error when patching \"STDIN\": admission webhook \"check-authconfig.authorino.kuadrant.io\" denied the request: Unauthorized\n

      Valid:

      kubectl -n myapp apply -f -<<EOF\napiVersion: authorino.kuadrant.io/v1beta2\nkind: AuthConfig\nmetadata:\n  name: myapp-protection\nspec:\n  hosts:\n\n  - myapp.io\n  authentication:\n    \"keycloak\":\n      jwt:\n        issuerUrl: http://keycloak.keycloak.svc.cluster.local:8080/realms/kuadrant\n  metadata:\n    \"external-source\":\n      http:\n        url: http://metadata.io\n      cache:\n        key: { value: global }\n        ttl: 300\nEOF\n# authconfig.authorino.kuadrant.io/myapp-protection configured\n
      "},{"location":"authorino/docs/user-guides/validating-webhook/#cleanup","title":"Cleanup","text":"

      If you have started a Kubernetes cluster locally with Kind to try this user guide, delete it by running:

      kind delete cluster --name authorino-tutorial\n

      Otherwise, delete the resources created in each step:

      kubectl delete namespace myapp\nkubectl delete namespace authorino\nkubectl delete clusterrole authorino-apikey\nkubectl delete namespace keycloak\n

      To uninstall the Authorino Operator and manifests (CRDs, RBAC, etc), run:

      kubectl delete -f https://raw.githubusercontent.com/Kuadrant/authorino-operator/main/config/deploy/manifests.yaml\n
      1. In contrast to a dedicated sidecar of the protected service and other architectures. Check out Architecture > Topologies for all options.\u00a0\u21a9

      2. cluster-wide reconciliation mode. See Cluster-wide vs. Namespaced instances.\u00a0\u21a9

      3. For other variants and deployment options, check out Getting Started, as well as the Authorino CRD specification.\u00a0\u21a9

      "},{"location":"authorino-operator/","title":"Authorino Operator","text":"

      A Kubernetes Operator to manage Authorino instances.

      "},{"location":"authorino-operator/#installation","title":"Installation","text":"

      The Operator can be installed by applying the manifests to the Kubernetes cluster or using Operator Lifecycle Manager (OLM)

      "},{"location":"authorino-operator/#applying-the-manifests-to-the-cluster","title":"Applying the manifests to the cluster","text":"
      1. Install the Operator manifests
      make install\n
      1. Deploy the Operator
      make deploy\n
      Tip: Deploy a custom image of the Operator To deploy an image of the Operator other than the default quay.io/kuadrant/authorino-operator:latest, specify by setting the OPERATOR_IMAGE parameter. E.g.:
      make deploy OPERATOR_IMAGE=authorino-operator:local\n
      "},{"location":"authorino-operator/#installing-via-olm","title":"Installing via OLM","text":"

      To install the Operator using the Operator Lifecycle Manager, you need to make the Operator CSVs available in the cluster by creating a CatalogSource resource.

      The bundle and catalog images of the Operator are available in Quay.io:

      Bundle quay.io/kuadrant/authorino-operator-bundle Catalog quay.io/kuadrant/authorino-operator-catalog
      1. Create the namespace for the Operator
      kubectl create namespace authorino-operator\n
      1. Create the CatalogSource resource pointing to one of the images from in the Operator's catalog repo:
      kubectl -n authorino-operator apply -f -<<EOF\napiVersion: operators.coreos.com/v1alpha1\nkind: CatalogSource\nmetadata:\n  name: operatorhubio-catalog\n  namespace: authorino-operator\nspec:\n  sourceType: grpc\n  image: quay.io/kuadrant/authorino-operator-catalog:latest\n  displayName: Authorino Operator\nEOF\n
      "},{"location":"authorino-operator/#deploy-authorino-operator-using-operator-sdk","title":"Deploy authorino operator using operator-sdk","text":"
      1. Install operator-sdk bin
        make operator-sdk\n
      2. Run operator-sdk bundle command
        ./bin/operator-sdk run bundle quay.io/kuadrant/authorino-operator-bundle:latest\n
        Note: For s390x & ppc64le , use operator-sdk to install authorino-operator
      "},{"location":"authorino-operator/#requesting-an-authorino-instance","title":"Requesting an Authorino instance","text":"

      Once the Operator is up and running, you can request instances of Authorino by creating Authorino CRs. E.g.:

      kubectl -n default apply -f -<<EOF\napiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  listener:\n    tls:\n      enabled: false\n  oidcServer:\n    tls:\n      enabled: false\nEOF\n
      "},{"location":"authorino-operator/#the-authorino-custom-resource-definition-crd","title":"The Authorino Custom Resource Definition (CRD)","text":"

      API to install, manage and configure Authorino authorization services .

      Each Authorino Custom Resource (CR) represents an instance of Authorino deployed to the cluster. The Authorino Operator will reconcile the state of the Kubernetes Deployment and associated resources, based on the state of the CR.

      "},{"location":"authorino-operator/#api-specification","title":"API Specification","text":"Field Type Description Required/Default spec AuthorinoSpec Specification of the Authorino deployment. Required"},{"location":"authorino-operator/#authorinospec","title":"AuthorinoSpec","text":"Field Type Description Required/Default clusterWide Boolean Sets the Authorino instance's watching scope \u2013 cluster-wide or namespaced. Default: true (cluster-wide) authConfigLabelSelectors String Label selectors used by the Authorino instance to filter AuthConfig-related reconciliation events. Default: empty (all AuthConfigs are watched) secretLabelSelectors String Label selectors used by the Authorino instance to filter Secret-related reconciliation events (API key and mTLS authentication methods). Default: authorino.kuadrant.io/managed-by=authorino supersedingHostSubsets Boolean Enable/disable allowing AuthConfigs to supersede strict subsets of hosts already taken. Default: false replicas Integer Number of replicas desired for the Authorino instance. Values greater than 1 enable leader election in the Authorino service, where the leader updates the statuses of the AuthConfig CRs). Default: 1 evaluatorCacheSize Integer Cache size (in megabytes) of each Authorino evaluator (when enabled in an AuthConfig). Default: 1 image String Authorino image to be deployed (for dev/testing purpose only). Default: quay.io/kuadrant/authorino:latest imagePullPolicy String Sets the imagePullPolicy of the Authorino Deployment (for dev/testing purpose only). Default: k8s default logLevel String Defines the level of log you want to enable in Authorino (debug, info and error). Default: info logMode String Defines the log mode in Authorino (development or production). Default: production listener Listener Specification of the authorization service (gRPC interface). Required oidcServer OIDCServer Specification of the OIDC service. Required tracing Tracing Configuration of the OpenTelemetry tracing exporter. Optional metrics Metrics Configuration of the metrics server (port, level). Optional healthz Healthz Configuration of the health/readiness probe (port). Optional volumes VolumesSpec Additional volumes to be mounted in the Authorino pods. Optional"},{"location":"authorino-operator/#listener","title":"Listener","text":"

      Configuration of the authorization server \u2013 gRPC and raw HTTP interfaces

      Field Type Description Required/Default port Integer Port number of authorization server (gRPC interface). DEPRECATEDUse ports instead ports Ports Port numbers of the authorization server (gRPC and raw HTTPinterfaces). Optional tls TLS TLS configuration of the authorization server (GRPC and HTTP interfaces). Required timeout Integer Timeout of external authorization request (in milliseconds), controlled internally by the authorization server. Default: 0 (disabled)"},{"location":"authorino-operator/#oidcserver","title":"OIDCServer","text":"

      Configuration of the OIDC Discovery server for Festival Wristband tokens.

      Field Type Description Required/Default port Integer Port number of OIDC Discovery server for Festival Wristband tokens. Default: 8083 tls TLS TLS configuration of the OIDC Discovery server for Festival Wristband tokens Required"},{"location":"authorino-operator/#tls","title":"TLS","text":"

      TLS configuration of server. Appears in listener and oidcServer.

      Field Type Description Required/Default enabled Boolean Whether TLS is enabled or disabled for the server. Default: true certSecretRef LocalObjectReference The reference to the secret that contains the TLS certificates tls.crt and tls.key. Required when enabled: true"},{"location":"authorino-operator/#ports","title":"Ports","text":"

      Port numbers of the authorization server.

      Field Type Description Required/Default grpc Integer Port number of the gRPC interface of the authorization server. Set to 0 to disable this interface. Default: 50001 http Integer Port number of the raw HTTP interface of the authorization server. Set to 0 to disable this interface. Default: 5001"},{"location":"authorino-operator/#tracing","title":"Tracing","text":"

      Configuration of the OpenTelemetry tracing exporter.

      Field Type Description Required/Default endpoint String Full endpoint of the OpenTelemetry tracing collector service (e.g. http://jaeger:14268/api/traces). Required tags Map Key-value map of fixed tags to add to all OpenTelemetry traces emitted by Authorino. Optional insecure Boolean Enable/disable insecure connection to the tracing endpoint Default: false"},{"location":"authorino-operator/#metrics","title":"Metrics","text":"

      Configuration of the metrics server.

      Field Type Description Required/Default port Integer Port number of the metrics server. Default: 8080 deep Boolean Enable/disable metrics at the level of each evaluator config (if requested in the AuthConfig) exported by the metrics server. Default: false"},{"location":"authorino-operator/#healthz","title":"Healthz","text":"

      Configuration of the health/readiness probe (port).

      Field Type Description Required/Default port Integer Port number of the health/readiness probe. Default: 8081"},{"location":"authorino-operator/#volumesspec","title":"VolumesSpec","text":"

      Additional volumes to project in the Authorino pods. Useful for validation of TLS self-signed certificates of external services known to have to be contacted by Authorino at runtime.

      Field Type Description Required/Default items []VolumeSpec List of additional volume items to project. Optional defaultMode Integer Mode bits used to set permissions on the files. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. Optional"},{"location":"authorino-operator/#volumespec","title":"VolumeSpec","text":"Field Type Description Required/Default name String Name of the volume and volume mount within the Deployment. It must be unique in the CR. Optional mountPath String Absolute path where to mount all the items. Required configMaps []String List of of Kubernetes ConfigMap names to mount. Required exactly one of: confiMaps, secrets. secrets []String List of of Kubernetes Secret names to mount. Required exactly one of: confiMaps, secrets. items []KeyToPath Mount details for selecting specific ConfigMap or Secret entries. Optional"},{"location":"authorino-operator/#full-example","title":"Full example","text":"
      apiVersion: operator.authorino.kuadrant.io/v1beta1\nkind: Authorino\nmetadata:\n  name: authorino\nspec:\n  clusterWide: true\n  authConfigLabelSelectors: environment=production\n  secretLabelSelectors: authorino.kuadrant.io/component=authorino,environment=production\n\n  replicas: 2\n\n  evaluatorCacheSize: 2 # mb\n\n  image: quay.io/kuadrant/authorino:latest\n  imagePullPolicy: Always\n\n  logLevel: debug\n  logMode: production\n\n  listener:\n    ports:\n      grpc: 50001\n      http: 5001\n    tls:\n      enabled: true\n      certSecretRef:\n        name: authorino-server-cert # secret must contain `tls.crt` and `tls.key` entries\n\n  oidcServer:\n    port: 8083\n    tls:\n      enabled: true\n      certSecretRef:\n        name: authorino-oidc-server-cert # secret must contain `tls.crt` and `tls.key` entries\n\n  metrics:\n    port: 8080\n    deep: true\n\n  volumes:\n    items:\n\n      - name: keycloak-tls-cert\n        mountPath: /etc/ssl/certs\n        configMaps:\n          - keycloak-tls-cert\n        items: # details to mount the k8s configmap in the authorino pods\n          - key: keycloak.crt\n            path: keycloak.crt\n    defaultMode: 420\n
      "},{"location":"authorino-operator/#removal","title":"Removal","text":""},{"location":"authorino-operator/#removing-the-operator-installed-via-manifests","title":"Removing the operator installed via manifests","text":"
      1. Undeploy the Operator
      make undeploy\n
      1. Remove the Operator manifests
      make uninstall\n
      "},{"location":"authorino-operator/#remove-dependencies-optional","title":"Remove dependencies (Optional)","text":"
      1. Remove operator namespace

        make delete-namespace\n

      2. Uninstall cert manager

        make uninstall-cert-manager\n

      "},{"location":"authorino-operator/#license","title":"License","text":""},{"location":"limitador/","title":"Limitador","text":"

      Limitador is a generic rate-limiter written in Rust. It can be used as a library, or as a service. The service exposes HTTP endpoints to apply and observe limits. Limitador can be used with Envoy because it also exposes a grpc service, on a different port, that implements the Envoy Rate Limit protocol (v3).

      • Getting started
      • How it works
      • Configuration
      • Development
      • Testing Environment
      • Kubernetes
      • Contributing
      • License

      Limitador is under active development, and its API has not been stabilized yet.

      "},{"location":"limitador/#getting-started","title":"Getting started","text":"
      • Rust library
      • Server
      "},{"location":"limitador/#rust-library","title":"Rust library","text":"

      Add this to your Cargo.toml:

      [dependencies]\nlimitador = { version = \"0.3.0\" }\n

      For more information, see the README of the crate

      "},{"location":"limitador/#server","title":"Server","text":"

      Run with Docker (replace latest with the version you want):

      docker run --rm --net=host -it quay.io/kuadrant/limitador:v1.0.0\n

      Run locally:

      cargo run --release --bin limitador-server -- --help\n

      Refer to the help message on how to start up the server. More information are available in the server's README.md

      "},{"location":"limitador/#development","title":"Development","text":""},{"location":"limitador/#build","title":"Build","text":"
      cargo build\n
      "},{"location":"limitador/#run-the-tests","title":"Run the tests","text":"

      Some tests need a redis deployed in localhost:6379. You can run it in Docker with:

      docker run --rm -p 6379:6379 -it redis\n

      Then, run the tests:

      cargo test --all-features\n

      or you can run tests disabling the \"redis storage\" feature:

      cd limitador; cargo test --no-default-features\n

      "},{"location":"limitador/#contributing","title":"Contributing","text":"

      Join us on the #kuadrant channel in the Kubernetes Slack workspace, for live discussions about the roadmap and more.

      "},{"location":"limitador/#license","title":"License","text":"

      Apache 2.0 License

      "},{"location":"limitador/doc/how-it-works/","title":"How it works","text":""},{"location":"limitador/doc/how-it-works/#how-it-works","title":"How it works","text":"

      Limitador ensures that the most restrictive limit configuration will apply.

      Limitador will try to match each incoming descriptor with the same namespaced counter's conditions and variables. The namespace for the descriptors is defined by the domain field whereas for the rate limit configuration the namespace field is being used. For each matching counter, the counter is increased and the limits checked.

      One example to illustrate:

      Let's say we have 1 rate limit configuration (one counter per config):

      conditions: [\"KEY_A == 'VALUE_A'\"]\nmax_value: 1\nseconds: 60\nvariables: []\nnamespace: example.org\n

      Limitador receives one descriptor with two entries:

      domain: example.org\ndescriptors:\n\n  - entries:\n    - KEY_A: VALUE_A\n    - OTHER_KEY: OTHER_VALUE\n

      The counter's condition will match. Then, the counter will be increased and the limit checked. If the limit is exceeded, the request will be rejected with 429 Too Many Requests, otherwise accepted.

      Note that the counter is being activated even though it does not match all the entries of the descriptor. The same rule applies for the variables field.

      Currently, the implementation of condition only allow for equal (==) and not equal (!=) operators. More operators will be implemented based off the use cases for them.

      The variables field is a list of keys. The matching rule is defined just as the existence of the list of descriptor entries with the same key values. If variables is variables: [A, B, C], one descriptor matches if it has at least three entries with the same A, B, C keys.

      Few examples to illustrate.

      Having the following descriptors:

      domain: example.org\ndescriptors:\n\n  - entries:\n    - KEY_A: VALUE_A\n    - OTHER_KEY: OTHER_VALUE\n

      the following counters would not be activated.

      conditions: [\"KEY_B == 'VALUE_B'\"]\nmax_value: 1\nseconds: 60\nvariables: []\nnamespace: example.org\n
      Reason: conditions key does not exist

      conditions:\n\n  - \"KEY_A == 'VALUE_A'\"\n  - \"OTHER_KEY == 'WRONG_VALUE'\"\nmax_value: 1\nseconds: 60\nvariables: []\nnamespace: example.org\n
      Reason: not all the conditions match

      conditions: []\nmax_value: 1\nseconds: 60\nvariables: [\"MY_VAR\"]\nnamespace: example.org\n
      Reason: the variable name does not exist

      conditions: [\"KEY_B == 'VALUE_B'\"]\nmax_value: 1\nseconds: 60\nvariables: [\"MY_VAR\"]\nnamespace: example.org\n
      Reason: Both variables and conditions must match. In this particular case, only conditions match

      "},{"location":"limitador/doc/topologies/","title":"Deployment topologies","text":""},{"location":"limitador/doc/topologies/#in-memory","title":"In-memory","text":""},{"location":"limitador/doc/topologies/#redis","title":"Redis","text":""},{"location":"limitador/doc/topologies/#redis-active-active-storage","title":"Redis active-active storage","text":"

      The RedisLabs version of Redis supports active-active replication. Limitador is compatible with that deployment mode, but there are a few things to take into account regarding limit accuracy.

      "},{"location":"limitador/doc/topologies/#considerations","title":"Considerations","text":"

      With an active-active deployment, the data needs to be replicated between instances. An update in an instance takes a short time to be reflected in the other. That time lag depends mainly on the network speed between the Redis instances, and it affects the accuracy of the rate-limiting performed by Limitador because it can go over limits while the updates of the counters are being replicated.

      The impact of that greatly depends on the use case. With limits of a few seconds, and a low number of hits, we could easily go over limits. On the other hand, if we have defined limits with a high number of hits and a long period, the effect will be basically negligible. For example, if we define a limit of one hour, and we know that the data takes around one second to be replicated, the accuracy loss is going to be negligible.

      "},{"location":"limitador/doc/topologies/#set-up","title":"Set up","text":"

      In order to try active-active replication, you can follow this tutorial from RedisLabs.

      "},{"location":"limitador/doc/topologies/#disk","title":"Disk","text":"

      Disk storage using RocksDB. Counters are held on disk (persistent).

      "},{"location":"limitador/doc/migrations/conditions/","title":"New condition syntax","text":"

      With limitador-server version 1.0.0 (and the limitador crate version 0.3.0), the syntax for conditions within limit definitions has changed.

      "},{"location":"limitador/doc/migrations/conditions/#changes","title":"Changes","text":""},{"location":"limitador/doc/migrations/conditions/#the-new-syntax","title":"The new syntax","text":"

      The new syntax formalizes what part of an expression is the identifier and which is the value to test against. Identifiers are simple string value, while string literals are to be demarcated by single quotes (') or double quotes (\") so that foo == \" bar\" now makes it explicit that the value is to be prefixed with a space character.

      A few remarks:

      • Only string values are supported, as that's what they really are
      • There is no escape character sequence supported in string literals
      • A new operator has been added, !=
      "},{"location":"limitador/doc/migrations/conditions/#the-issue-with-the-deprecated-syntax","title":"The issue with the deprecated syntax","text":"

      The previous syntax wouldn't differentiate between values and the identifier, so that foo == bar was valid. In this case foo was the identifier of the variable, while bar was the value to evaluate it against. Whitespaces before and after the operator == would be equally important. SO that foo == bar would test for a foo variable being equal to bar where the trailing whitespace after the identifier, and the one prefixing the value, would have been evaluated.

      "},{"location":"limitador/doc/migrations/conditions/#server-binary-users","title":"Server binary users","text":"

      The server still allows for the deprecated syntax, but warns about its usage. You can easily migrate your limits file, using the following command:

      limitador-server --validate old_limits.yaml > updated_limits.yaml\n

      Which should output Deprecated syntax for conditions corrected! to stderr while stdout would be the limits using the new syntax. It is recommended you manually verify the resulting LIMITS_FILE.

      "},{"location":"limitador/doc/migrations/conditions/#crate-users","title":"Crate users","text":"

      A feature lenient_conditions has been added, which lets you use the syntax used in previous version of the crate. The function limitador::limit::check_deprecated_syntax_usages_and_reset() lets you verify if the deprecated syntax has been used as limit::Limits are created with their condition strings using the deprecated syntax.

      "},{"location":"limitador/doc/server/configuration/","title":"Limitador configuration","text":""},{"location":"limitador/doc/server/configuration/#command-line-configuration","title":"Command line configuration","text":"

      The preferred way of starting and configuring the Limitador server is using the command line:

      Rate Limiting Server\n\nUsage: limitador-server [OPTIONS] <LIMITS_FILE> [STORAGE]\n\nSTORAGES:\n  memory        Counters are held in Limitador (ephemeral)\n  disk          Counters are held on disk (persistent)\n  redis         Uses Redis to store counters\n  redis_cached  Uses Redis to store counters, with an in-memory cache\n\nArguments:\n  <LIMITS_FILE>  The limit file to use\n\nOptions:\n  -b, --rls-ip <ip>\n          The IP to listen on for RLS [default: 0.0.0.0]\n  -p, --rls-port <port>\n          The port to listen on for RLS [default: 8081]\n  -B, --http-ip <http_ip>\n          The IP to listen on for HTTP [default: 0.0.0.0]\n  -P, --http-port <http_port>\n          The port to listen on for HTTP [default: 8080]\n  -l, --limit-name-in-labels\n          Include the Limit Name in prometheus label\n  -v...\n          Sets the level of verbosity\n      --tracing-endpoint <tracing_endpoint>\n          The endpoint for the tracing service\n      --validate\n          Validates the LIMITS_FILE and exits\n  -H, --rate-limit-headers <rate_limit_headers>\n          Enables rate limit response headers [default: NONE] [possible values: NONE, DRAFT_VERSION_03]\n      --grpc-reflection-service\n          Enables gRPC server reflection service\n  -h, --help\n          Print help\n  -V, --version\n          Print version\n

      The values used are authoritative over any environment variables independently set.

      "},{"location":"limitador/doc/server/configuration/#limit-definitions","title":"Limit definitions","text":"

      The LIMITS_FILE provided is the source of truth for all the limits that will be enforced. The file location will be monitored by the server for any changes and be hot reloaded. If the changes are invalid, they will be ignored on hot reload, or the server will fail to start.

      "},{"location":"limitador/doc/server/configuration/#the-limits_files-format","title":"The LIMITS_FILE's format","text":"

      When starting the server, you point it to a LIMITS_FILE, which is expected to be a yaml file with an array of limit definitions, with the following format:

      ---\n\"$schema\": http://json-schema.org/draft-04/schema#\ntype: object\nproperties:\n  name:\n    type: string\n  namespace:\n    type: string\n  seconds:\n    type: integer\n  max_value:\n    type: integer\n  conditions:\n    type: array\n    items:\n\n      - type: string\n  variables:\n    type: array\n    items:\n      - type: string\nrequired:\n  - namespace\n  - seconds\n  - max_value\n  - conditions\n  - variables\n

      Here is an example of such a limit definition:

      namespace: example.org\nmax_value: 10\nseconds: 60\nconditions:\n\n  - \"req.method == 'GET'\"\nvariables:\n  - user_id\n
      • namespace namespaces the limit, will generally be the domain, see here
      • seconds is the duration for which the limit applies, in seconds: e.g. 60 is a span of time of one minute
      • max_value is the actual limit, e.g. 100 would limit to 100 requests
      • name lets the user optionally name the limit
      • variables is an array of variables, which once resolved, will be used to qualify counters for the limit, e.g. api_key to limit per api keys
      • conditions is an array of conditions, which once evaluated will decide whether to apply the limit or not
      "},{"location":"limitador/doc/server/configuration/#condition-syntax","title":"condition syntax","text":"

      Each condition is an expression producing a boolean value (true or false). All conditions must evaluate to true for the limit to be applied on a request.

      Expressions follow the following syntax: $IDENTIFIER $OP $STRING_LITERAL, where:

      • $IDENTIFIER will be used to resolve the value at evaluation time, e.g. role
      • $OP is an operator, either == or !=
      • $STRING_LITERAL is a literal string value, \" or ' demarcated, e.g. \"admin\"

      So that role != \"admin\" would apply the limit on request from all users, but admin's.

      "},{"location":"limitador/doc/server/configuration/#counter-storages","title":"Counter storages","text":"

      Limitador will load all the limit definitions from the LIMITS_FILE and keep these in memory. To enforce these limits, Limitador needs to track requests in the form of counters. There would be at least one counter per limit, but that number grows when variables are used to qualify counters per some arbitrary values.

      "},{"location":"limitador/doc/server/configuration/#memory","title":"memory","text":"

      As the name implies, Limitador will keep all counters in memory. This yields the best results in terms of latency as well as accuracy. By default, only up to 1000 \"concurrent\" counters will be kept around, evicting the oldest entries. \"Concurrent\" in this context means counters that need to exist at the \"same time\", based of the period of the limit, as \"expired\" counters are discarded.

      This storage is ephemeral, as if the process is restarted, all the counters are lost and effectively \"reset\" all the limits as if no traffic had been rate limited, which can be fine for short-lived limits, less for longer-lived ones.

      "},{"location":"limitador/doc/server/configuration/#redis","title":"redis","text":"

      When you want persistence of your counters, such as for disaster recovery or across restarts, using redis will store the counters in a redis instance using the provided URL. Increments to individual counters is made within redis itself, providing accuracy over these, races tho can occur when multiple Limitador servers are used against a single redis and using \"stacked\" limits (i.e. over different periods). Latency is also impacted, as it results in one additional hop to talk to redis and maintain the counters.

      TLS Support

      Connect to a redis instance using the rediss:// URL scheme.

      To enable insecure mode, append #insecure at the end of the URL. For example:

      limitador-server <LIMITS_FILE> redis rediss://127.0.0.1/#insecure\"\n

      Authentication

      To enable authentication, use the username and password properties of the URL scheme. For example:

      limitador-server <LIMITS_FILE> redis redis://my-username:my-password@127.0.0.1\"\n

      when the username is omitted, redis assumes default user. For example:

      limitador-server <LIMITS_FILE> redis redis://:my-password@127.0.0.1\"\n

      Usage

      Uses Redis to store counters\n\nUsage: limitador-server <LIMITS_FILE> redis <URL>\n\nArguments:\n  <URL>  Redis URL to use\n\nOptions:\n  -h, --help  Print help\n
      "},{"location":"limitador/doc/server/configuration/#redis_cached","title":"redis_cached","text":"

      In order to avoid some communication overhead to redis, redis_cached adds an in memory caching layer within the Limitador servers. This lowers the latency, but sacrifices some accuracy as it will not only cache counters, but also coalesce counters updates to redis over time. See this configuration option for more information.

      TLS Support

      Connect to a redis instance using the rediss:// URL scheme.

      To enable insecure mode, append #insecure at the end of the URL. For example:

      limitador-server <LIMITS_FILE> redis rediss://127.0.0.1/#insecure\"\n

      Authentication

      To enable authentication, use the username and password properties of the URL scheme. For example:

      limitador-server <LIMITS_FILE> redis redis://my-username:my-password@127.0.0.1\"\n

      when the username is omitted, redis assumes default user. For example:

      limitador-server <LIMITS_FILE> redis redis://:my-password@127.0.0.1\"\n

      Usage

      Uses Redis to store counters, with an in-memory cache\n\nUsage: limitador-server <LIMITS_FILE> redis_cached [OPTIONS] <URL>\n\nArguments:\n  <URL>  Redis URL to use\n\nOptions:\n      --batch-size <batch>          Size of entries to flush in as single flush [default: 100]\n      --flush-period <flush>        Flushing period for counters in milliseconds [default: 1000]\n      --max-cached <max>            Maximum amount of counters cached [default: 10000]\n      --response-timeout <timeout>  Timeout for Redis commands in milliseconds [default: 350]\n  -h, --help                        Print help\n
      "},{"location":"limitador/doc/server/configuration/#disk","title":"disk","text":"

      Disk storage using RocksDB. Counters are held on disk (persistent).

      Counters are held on disk (persistent)\n\nUsage: limitador-server <LIMITS_FILE> disk [OPTIONS] <PATH>\n\nArguments:\n  <PATH>  Path to counter DB\n\nOptions:\n      --optimize <OPTIMIZE>  Optimizes either to save disk space or higher throughput [default: throughput] [possible values: throughput, disk]\n  -h, --help                 Print help\n

      For an in-depth coverage of the different topologies supported and how they affect the behavior, see the topologies' document.

      "},{"location":"limitador/doc/server/configuration/#configuration-using-environment-variables","title":"Configuration using environment variables","text":"

      The Limitador server has some options that can be configured with environment variables. These will override the default values the server uses. Any argument used when starting the server will prevail over the environment variables.

      "},{"location":"limitador/doc/server/configuration/#envoy_rls_host","title":"ENVOY_RLS_HOST","text":"
      • Host where the Envoy RLS server listens.
      • Optional. Defaults to \"0.0.0.0\".
      • Format: string.
      "},{"location":"limitador/doc/server/configuration/#envoy_rls_port","title":"ENVOY_RLS_PORT","text":"
      • Port where the Envoy RLS server listens.
      • Optional. Defaults to 8081.
      • Format: integer.
      "},{"location":"limitador/doc/server/configuration/#http_api_host","title":"HTTP_API_HOST","text":"
      • Host where the HTTP server listens.
      • Optional. Defaults to \"0.0.0.0\".
      • Format: string.
      "},{"location":"limitador/doc/server/configuration/#http_api_port","title":"HTTP_API_PORT","text":"
      • Port where the HTTP API listens.
      • Optional. Defaults to 8080.
      • Format: integer.
      "},{"location":"limitador/doc/server/configuration/#limits_file","title":"LIMITS_FILE","text":"
      • YAML file that contains the limits to create when Limitador boots. If the limits specified already have counters associated, Limitador will not delete them. Changes to the file will be picked up by the running server.
      • Required. No default
      • Format: string, file path.
      "},{"location":"limitador/doc/server/configuration/#limit_name_in_prometheus_labels","title":"LIMIT_NAME_IN_PROMETHEUS_LABELS","text":"
      • Enables using limit names as labels in Prometheus metrics. This is disabled by default because for a few limits it should be fine, but it could become a problem when defining lots of limits. See the caution note in the Prometheus docs
      • Optional. Disabled by default.
      • Format: bool, set to \"1\" to enable.
      "},{"location":"limitador/doc/server/configuration/#tracing_endpoint","title":"TRACING_ENDPOINT","text":"
      • The endpoint of the OTLP tracing collector (scheme://host:port).
      • Optional. Default to \"\" (tracing disabled)
      • Format: string
      "},{"location":"limitador/doc/server/configuration/#redis_local_cache_enabled","title":"REDIS_LOCAL_CACHE_ENABLED","text":"
      • Enables a storage implementation that uses Redis, but also caches some data in memory. The idea is to improve throughput and latencies by caching the counters in memory to reduce the number of accesses to Redis. To achieve that, this mode sacrifices some rate-limit accuracy. This mode does two things:
        • Batches counter updates. Instead of updating the counters on every request, it updates them in memory and commits them to Redis in batches. The flushing interval can be configured with the REDIS_LOCAL_CACHE_FLUSHING_PERIOD_MS env. The trade-off is that when running several instances of Limitador, other instances will not become aware of the counter updates until they're committed to Redis.
        • Caches counters. Instead of fetching the value of a counter every time it's needed, the value is cached for a configurable period. The trade-off is that when running several instances of Limitador, an instance will not become aware of the counter updates other instances do while the value is cached. When a counter is already at 0 (limit exceeded), it's cached until it expires in Redis. In this case, no matter what other instances do, we know that the quota will not be reestablished until the key expires in Redis, so in this case, rate-limit accuracy is not affected. When a counter has still some quota remaining the situation is different, that's why we can tune for how long it will be cached. The formula is as follows: MIN(ttl_in_redis/REDIS_LOCAL_CACHE_TTL_RATIO_CACHED_COUNTERS, REDIS_LOCAL_CACHE_MAX_TTL_CACHED_COUNTERS_MS). For example, let's image that the current TTL (time remaining until the limit resets) in Redis for a counter is 10 seconds, and we set the ratio to 2, and the max time for 30s. In this case, the counter will be cached for 5s (min(10/2, 30)). During those 5s, Limitador will not fetch the value of that counter from Redis, so it will answer faster, but it will also miss the updates done by other instances, so it can go over the limits in that 5s interval.
      • Optional. Disabled by default.
      • Format: set to \"1\" to enable.
      • Note: \"REDIS_URL\" needs to be set.
      "},{"location":"limitador/doc/server/configuration/#redis_local_cache_flushing_period_ms","title":"REDIS_LOCAL_CACHE_FLUSHING_PERIOD_MS","text":"
      • Used to configure the maximum flushing period. See REDIS_LOCAL_CACHE_ENABLED. This env only applies when \"REDIS_LOCAL_CACHE_ENABLED\" == 1.
      • Optional. Defaults to 1000.
      • Format: integer. Duration in milliseconds.
      "},{"location":"limitador/doc/server/configuration/#redis_local_cache_batch_size","title":"REDIS_LOCAL_CACHE_BATCH_SIZE","text":"
      • Used to configure the maximum number of counters to update in a flush. See REDIS_LOCAL_CACHE_ENABLED. This env only applies when \"REDIS_LOCAL_CACHE_ENABLED\" == 1.
      • Optional. Defaults to 100.
      • Format: integer.
      "},{"location":"limitador/doc/server/configuration/#redis_url","title":"REDIS_URL","text":"
      • Redis URL. Required only when you want to use Redis to store the limits.
      • Optional. By default, Limitador stores the limits in memory and does not require Redis.
      • Format: string, URL in the format of \"redis://127.0.0.1:6379\".
      "},{"location":"limitador/doc/server/configuration/#rust_log","title":"RUST_LOG","text":"
      • Defines the log level.
      • Optional. Defaults to \"error\".
      • Format: enum: \"debug\", \"error\", \"info\", \"warn\", or \"trace\".
      "},{"location":"limitador/doc/server/configuration/#rate_limit_headers","title":"RATE_LIMIT_HEADERS","text":"
      • Enables rate limit response headers. Only supported by the RLS server.
      • Optional. Defaults to \"NONE\".
      • Must be one of:
      • \"NONE\" - Does not add any additional headers to the http response.
      • \"DRAFT_VERSION_03\". Adds response headers per https://datatracker.ietf.org/doc/id/draft-polli-ratelimit-headers-03.html
      "},{"location":"limitador/limitador/","title":"Limitador (library)","text":"

      An embeddable rate-limiter library supporting in-memory, Redis and disk data stores.

      For the complete documentation of the crate's API, please refer to docs.rs

      "},{"location":"limitador/limitador/#features","title":"Features","text":"
      • redis_storage: support for using Redis as the data storage backend.
      • disk_storage: support for using RocksDB as a local disk storage backend.
      • lenient_conditions: support for the deprecated syntax of Conditions
      • default: redis_storage.
      "},{"location":"limitador/limitador-server/","title":"Limitador (server)","text":"

      By default, Limitador starts the HTTP server in localhost:8080, and the grpc service that implements the Envoy Rate Limit protocol in localhost:8081. That can be configured with these ENVs: ENVOY_RLS_HOST, ENVOY_RLS_PORT, HTTP_API_HOST, and HTTP_API_PORT.

      Or using the command line arguments:

      Rate Limiting Server\n\nUsage: limitador-server [OPTIONS] <LIMITS_FILE> [STORAGE]\n\nSTORAGES:\n  memory        Counters are held in Limitador (ephemeral)\n  disk          Counters are held on disk (persistent)\n  redis         Uses Redis to store counters\n  redis_cached  Uses Redis to store counters, with an in-memory cache\n\nArguments:\n  <LIMITS_FILE>  The limit file to use\n\nOptions:\n  -b, --rls-ip <ip>\n          The IP to listen on for RLS [default: 0.0.0.0]\n  -p, --rls-port <port>\n          The port to listen on for RLS [default: 8081]\n  -B, --http-ip <http_ip>\n          The IP to listen on for HTTP [default: 0.0.0.0]\n  -P, --http-port <http_port>\n          The port to listen on for HTTP [default: 8080]\n  -l, --limit-name-in-labels\n          Include the Limit Name in prometheus label\n  -v...\n          Sets the level of verbosity\n      --tracing-endpoint <tracing_endpoint>\n          The endpoint for the tracing service\n      --validate\n          Validates the LIMITS_FILE and exits\n  -H, --rate-limit-headers <rate_limit_headers>\n          Enables rate limit response headers [default: NONE] [possible values: NONE, DRAFT_VERSION_03]\n  -h, --help\n          Print help\n  -V, --version\n          Print version\n

      When using environment variables, these will override the defaults. While environment variable are themselves overridden by the command line arguments provided. See the individual STORAGES help for more options relative to each of the storages.

      The OpenAPI spec of the HTTP service is here.

      Limitador has to be started with a YAML file that has some limits defined. There's an example file that allows 10 requests per minute and per user_id when the HTTP method is \"GET\" and 5 when it is a \"POST\". You can run it with Docker (replace latest with the version you want):

      docker run --rm --net=host -it -v $(pwd)/examples/limits.yaml:/home/limitador/my_limits.yaml:ro quay.io/kuadrant/limitador:latest limitador-server /home/limitador/my_limits.yaml\n

      You can also use the YAML file when running locally:

      cargo run --release --bin limitador-server ./examples/limits.yaml\n

      If you want to use Limitador with Envoy, there's a minimal Envoy config for testing purposes here. The config forwards the \"userid\" header and the request method to Limitador. It assumes that there's an upstream API deployed on port 1323. You can use echo, for example.

      Limitador has several options that can be configured via ENV. This doc specifies them.

      "},{"location":"limitador/limitador-server/#limits-storage","title":"Limits storage","text":"

      Limitador can store its limits and counters in-memory, disk or in Redis. In-memory is faster, but the limits are applied per instance. When using Redis, multiple instances of Limitador can share the same limits, but it's slower.

      "},{"location":"limitador/limitador-server/kubernetes/","title":"Kubernetes","text":"

      The purpose of this documentation is to deploy a sample application published via AWS ELB, that will be ratelimited at infrastructure level, thanks to the use the envoyproxy sidecar container, that will be in charge of contacting to a ratelimit service (limitador), that will allow the request (or not) if it is within the permitted limits.

      There are mainly two recommended way of using limitador in kubernetes:

      1. There is an ingress based on envoyproxy that contacts with limitador ratelimit service before forwarding (or not) the request to the application
      2. There is an envoyproxy sidecar container living in the application pod that contacts with limitador ratelimit service before forwarding (or not) the request to the main application container in the same pod

      In this example it will be described the second scenario (where there is an application with an envoyproxy sidecar container contacting to limitador service).

      NOTE If you don't want to manually manage the sidecar container definitions on your deployments (harcoding the container spec, loading the envoy configuration from a configmap that requires a pod restart to reload possibles configuration changes...), you can use marin3r, a light weight envoy control plane that allows you to inject envoyproxy sidecar containers and dynamically consume configs from Kubernetes custom resources.

      This is the network diagram of the deployed example:

      "},{"location":"limitador/limitador-server/kubernetes/#components","title":"Components","text":"

      In order to that that ratelimit test, you need to deploy a few components. Some of them are mandatory, and a few are optional:

      "},{"location":"limitador/limitador-server/kubernetes/#mandatory","title":"Mandatory","text":"
      • Application (a sample application deployment called kuard):
      • App has an envoyproxy sidecar container with its configuration file in a configmap, composed by:
        • Cluster kuard points to main application container (127.0.0.1:8080)
        • Cluster kuard_ratelimit points to limitador headless service (limitador:8081)
        • Listener HTTP points to envoyproxy sidecar (0.0.0.0:38080)
        • When envoy contacts with the ratelimit service, you can define a timeout, and if there is no response within that timeout (because ratelimit is overloaded taking more time to process the request, or because rateliit service is down), you can choose from envoy to deny the request or pass it to the application. In this case, there is set a 1s timeout, and if there is no answer in this 1 second, request is passed to the application (failure_mode_deny: false), so we guarantee that the maximum overhead added by a non working ratelimit service is 1 extra second to the final response time.
      • App service published with type: LoadBalancer, which creates a AWS ELB. This service has an annotation to enable proxy protocol on the AWS Load balancer in order to be able to keep the real client IP at envoy level (instead of the k8s node private IP), so it can be used to ratelimit per each real client IP if desired.

      • Ratelimit application (a deployment called limitador):

      • Limitador Configmap with limits definition (1000 rps per hostname).
      • Limitador headless service published on limitador:8081. It is important to use a headless service in order to balance correctly the traffic between limitador pods, otherwise GRPC connections are not well balanced.

      • Redis database to persist ratelimit configuration:

      • Redis service
      • Redis statefulset with a persistent volume
      "},{"location":"limitador/limitador-server/kubernetes/#optional","title":"Optional","text":"
      • Centos pod:
      • Used to executed hey tool benchmarks from the cluster, so we ensure network latency does not affect the results. Actually, to achieve better results, this pod should be on another cluster (to not share the network between client and network) and be placed on the same Region (to reduce latency). The client could be a bottle neck for the performance test.
      • This centos is going to public AWS ELB to access the app, so simulating it is a normal client from the same Region
      • Prometheus monitoring and grafana dashboard resources
      "},{"location":"limitador/limitador-server/kubernetes/#k8s-deployment","title":"K8s deployment","text":"
      • Deploy the redis instance that will keep the limits for different limitador pods:

        kubectl apply -f redis-service.yaml\nkubectl apply -f redis-statefulset.yaml\n

      • Deploy limitador application. It is important to create the configmap with limitador limits before the deployment, in order to load it from limitador pods. At the moment, if you update the limits configmap you need to restart the pods. Additionally, limitador has an API in order to load limits dynamically, but for simplicity for this test a configmap has been used:

        kubectl apply -f limitador-config-configmap.yaml\nkubectl apply -f limitador-service.yaml\nkubectl apply -f limitador-deployment.yaml\n

      • Deploy sample kuard application with the envoyproxy sidecar container (if you do any change on the envoy configmap, remember you need to restart app pods in order to reload the config):

        kubectl apply -f kuard-envoy-config-configmap.yaml\nkubectl apply -f kuard-service.yaml\nkubectl apply -f kuard-deployment.yaml\n

      • At this point you shoud see all pods running, and kuard pods should have 2 containers (the main kuard container, and the envoyproxy sidecar container):

        \u25b6 kubectl get pods\nNAME                         READY   STATUS    RESTARTS   AGE\nkuard-f859bb896-gmzxn        2/2     Running   0          7m\nkuard-f859bb896-z95w8        2/2     Running   0          7m\nlimitador-68d494f54c-qv996   1/1     Running   0          8m\nlimitador-68d494f54c-zzmhn   1/1     Running   0          8m\nredis-0                      1/1     Running   0          9m\n

      • Now you should be able to access to kuard application using the load balancer DNS name:

        \u25b6 kubectl get service kuard\nNAME    TYPE           CLUSTER-IP       EXTERNAL-IP                                                              PORT(S)        AGE\nkuard   LoadBalancer   172.30.117.198   a96d5449fbc3f4cd892e15e5b36cde48-457963259.us-east-1.elb.amazonaws.com   80:31450/TCP   4m\n

      • If you go to the browser and paste the EXTERNAL-IP, your request will follow the next workflow:

      • The requests will go from your local machine through internet to the public AWS ELB where the app is published
      • Then it will go to the NodePort of your k8s cluster nodes
      • Once on a k8s node, it will go to kuard Service Virtual IP, and will arrive to an envoyproxy sidecar container inside kuard pod
      • Envoyproxy sidecar container will contact with limitador headless Service, to authorize the requests or not:
        • If the request is authorized (within the configured limits), it will send the request to the app container (0.0.0.0:8080) in the same pod, and request will end up with a HTTP 200 response
        • If the request is limited (beyond the limits), request will end up with HTTP 429 response
      "},{"location":"limitador/limitador-server/kubernetes/#monitoring","title":"Monitoring","text":"

      Both envoyproxy sidecar and limitador applications include built-in prometheus metrics.

      "},{"location":"limitador/limitador-server/kubernetes/#prometheus","title":"Prometheus","text":"

      In order to scrape that metrics within a prometheus-operator deployed in the cluster, you need to create a PodMonitor resource for every application:

      kubectl apply -f kuard-podmonitor.yaml\nkubectl apply -f limitador-podmonitor.yaml\n

      "},{"location":"limitador/limitador-server/kubernetes/#grafana-dashboard","title":"Grafana dashboard","text":"

      Then, if you have grafana deployed in the cluster, you can import a Kuadrant Limitador grafana dashboard that we have prepared, which includes:

      • Kuard envoyproxy sidecar metrics (globally and per pod)
      • Limitador metrics (globally and per pod)
      • And for every deployed component (limitador, kuard, redis):
      • Number of pods (total, available, unavaible, pod restarts...)
      • CPU usage per pod
      • Memory usage per pod
      • Network usage per pod
      "},{"location":"limitador/limitador-server/kubernetes/#benchmarking","title":"Benchmarking","text":"
      • In order to check that the ratelimit is working as expected, you can use any benchmarking tool, like hey
      • You can use if you want a centos pod (better to create it on a different custer within the same Region):
        kubectl apply -f centos-pod.yaml\n
      • Connect to centos pod:
        kubectl exec --stdin --tty centos -- /bin/bash\n
      • And install hey with:
        [root@centos /]# curl -sf https://gobinaries.com/rakyll/hey | sh\n
      • Now you can execute the benchmark using the following escenario:
      Item Value Target AWS ELB DNS Name App pods 2 Limitador pods 2 Limits 1.000 rps per hostname Hey duration 1 minute Hey Traffic -c 60 -q 20 (around 1.200 rps)
      • Theoretically:
      • It should let pass 1.000 requests, and limit 200 requests per second
      • It should let pass 60 * 1.000 = 60.0000 requests, and limit 60 * 200 = 12.000 requests per minute
      • Each limitador pod should handle half of the traffic (500 rps OK, and 200 rps limited)
      [root@centos /]# hey -z 60s -c 60 -q 20 \"http://a96d5449fbc3f4cd892e15e5b36cde48-457963259.us-east-1.elb.amazonaws.com\"\n\nSummary:\n  Total:    60.0131 secs\n  Slowest:  0.1028 secs\n  Fastest:  0.0023 secs\n  Average:  0.0075 secs\n  Requests/sec: 1199.3721\n\n  Total data:   106581650 bytes\n  Size/request: 1480 bytes\n\nResponse time histogram:\n  0.002 [1] |\n  0.012 [70626] |\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\u25a0\n  0.022 [1291]  |\u25a0\n  0.032 [0] |\n  0.043 [0] |\n  0.053 [0] |\n  0.063 [0] |\n  0.073 [0] |\n  0.083 [0] |\n  0.093 [23]    |\n  0.103 [37]    |\n\n\nLatency distribution:\n  10% in 0.0053 secs\n  25% in 0.0063 secs\n  50% in 0.0073 secs\n  75% in 0.0085 secs\n  90% in 0.0096 secs\n  95% in 0.0102 secs\n  99% in 0.0139 secs\n\nDetails (average, fastest, slowest):\n  DNS+dialup:   0.0001 secs, 0.0023 secs, 0.1028 secs\n  DNS-lookup:   0.0001 secs, 0.0000 secs, 0.0711 secs\n  req write:    0.0000 secs, 0.0000 secs, 0.0014 secs\n  resp wait:    0.0074 secs, 0.0023 secs, 0.0303 secs\n  resp read:    0.0000 secs, 0.0000 secs, 0.0049 secs\n\nStatus code distribution:\n  [200] 60046 responses\n  [429] 11932 responses\n
      • We can see that:

        • Client could send 1192.2171rps (about 1200rps)
        • 60046 requests (about 60000) were OK (HTTP 200)
        • 11932 requests (about 12000) were limited (HTTP 429)
        • Average latency (since the request goes out from the client to AWS ELB, k8s node, envoyproxy container, limitador+redis, kuar app container) is 10ms
      • In addition, if we do a longer test with 5 minutes traffic for example, you can check with the grafana dashboard how these requests are processed by envoyproxy sidecar container of kuard pods and limitador pods:

        • Kuard Envoyproxy Sidecar Metrics:
          • Globally it handles around 1200rps: it permits around 1krps and limits around 200rps
          • Each envoyproxy sidecar of each kuard pod handles around half of the traffic: it permits around 500rps and limits around 100rps. The balance between pods is not 100% perfect, caused by random iptables forwarding when using a k8s service
        • Limitador Metrics:
          • Globally it handles around 1200rps: it permits around 1krps and limits around 200rps
          • Each limitador pod handles around half of the traffic: it permits around 500rps and limits around 100rps. The balance between pods is perfect thanks to using a headless service with GRPC connections
      "},{"location":"limitador/limitador-server/sandbox/","title":"Sandbox","text":""},{"location":"limitador/limitador-server/sandbox/#testing-environment","title":"Testing Environment","text":""},{"location":"limitador/limitador-server/sandbox/#requirements","title":"Requirements","text":"
      • docker v24+
      "},{"location":"limitador/limitador-server/sandbox/#setup","title":"Setup","text":"

      Clone the project

      git clone https://github.com/Kuadrant/limitador.git\ncd limitador/limitador-server/sandbox\n

      Check out make help for all the targets.

      "},{"location":"limitador/limitador-server/sandbox/#deployment-options","title":"Deployment options","text":"Limitador's configuration Command Info In-memory configuration make deploy-in-memory Counters are held in Limitador (ephemeral) Redis make deploy-redis Uses Redis to store counters Redis Secured make deploy-redis-tls Uses Redis with TLS and password protected to store counters Redis Cached make deploy-redis-cached Uses Redis to store counters, with an in-memory cache Redis Otel Instrumented make deploy-redis-otel Uses redis to store counters, instrumented with opentelemetry Disk make deploy-disk Uses disk to store counters Distributed make deploy-distributed Counters are held in Limitador (ephemeral) but replicated to other Limitador servers.

      | Distributed 3 Node | make deploy-distributed-3-node | Counters are held in Limitador (ephemeral) but replicated to 3 other Limitador servers. |

      "},{"location":"limitador/limitador-server/sandbox/#running-multi-node-distributed-deployments","title":"Running Multi Node Distributed Deployments","text":"

      The make deploy-distributed target can be connected to other Limitador servers but requires you to set the PEER_ID and PEER_URLS environment variables when you run the target.

      If you have 3 servers you want to replicate between, you would run the following commands:

      # on server where: hostname=server1\nPEER_ID=`hostname` PEER_URLS=\"http://server2:15001 http://server3:15001\" make deploy-distributed\n
      # on server where: hostname=server2\nPEER_ID=`hostname` PEER_URLS=\"http://server1:15001 http://server3:15001\" make deploy-distributed\n
      # on server where: hostname=server3\nPEER_ID=`hostname` PEER_URLS=\"http://server1:15001 http://server2:15001\" make deploy-distributed\n

      The PEER_ID just need to be unique between the servers, and the PEER_URLS should be a space-separated list of the other servers' URLs.

      "},{"location":"limitador/limitador-server/sandbox/#limitadors-admin-http-endpoint","title":"Limitador's admin HTTP endpoint","text":"

      Limits

      curl -i http://127.0.0.1:18080/limits/test_namespace\n

      Counters

      curl -i http://127.0.0.1:18080/counters/test_namespace\n

      Metrics

      curl -i http://127.0.0.1:18080/metrics\n
      "},{"location":"limitador/limitador-server/sandbox/#limitadors-grpc-ratelimitservice-endpoint","title":"Limitador's GRPC RateLimitService endpoint","text":"

      Get grpcurl. You need Go SDK installed.

      Golang version >= 1.18 (from fullstorydev/grpcurl)

      make grpcurl\n

      Inspect RateLimitService GRPC service

      bin/grpcurl -plaintext 127.0.0.1:18081 describe envoy.service.ratelimit.v3.RateLimitService\n

      Make a custom request

      bin/grpcurl -plaintext -d @ 127.0.0.1:18081 envoy.service.ratelimit.v3.RateLimitService.ShouldRateLimit <<EOM\n{\n    \"domain\": \"test_namespace\",\n    \"hits_addend\": 1,\n    \"descriptors\": [\n        {\n            \"entries\": [\n                {\n                    \"key\": \"req.method\",\n                    \"value\": \"POST\"\n                },\n                {\n                    \"key\": \"req.path\",\n                    \"value\": \"/\"\n                }\n            ]\n        }\n    ]\n}\nEOM\n

      Do repeated requests. As the limit is set to max 5 request for 60 seconds, you should see OVER_LIMIT response after 5 requests.

      while :; do bin/grpcurl -plaintext -d @ 127.0.0.1:18081 envoy.service.ratelimit.v3.RateLimitService.ShouldRateLimit <<EOM; sleep 1; done\n{\n    \"domain\": \"test_namespace\",\n    \"hits_addend\": 1,\n    \"descriptors\": [\n        {\n            \"entries\": [\n                {\n                    \"key\": \"req.method\",\n                    \"value\": \"POST\"\n                },\n                {\n                    \"key\": \"req.path\",\n                    \"value\": \"/\"\n                }\n            ]\n        }\n    ]\n}\nEOM\n
      "},{"location":"limitador/limitador-server/sandbox/#downstream-traffic","title":"Downstream traffic","text":"

      Upstream service implemented by httpbin.org

      curl -i -H \"Host: example.com\" http://127.0.0.1:18000/get\n
      "},{"location":"limitador/limitador-server/sandbox/#load-testing-the-grpc-ratelimitservice-directly","title":"Load Testing the GRPC RateLimitService directly","text":"

      This load test will use grpcurl. You need Go SDK installed.

      Run a load test a 5000 requests per second (RPS) for 10 seconds:

      RPS=5000 make load-test\n
      "},{"location":"limitador/limitador-server/sandbox/#load-testing-via-envoy-proxy","title":"Load Testing via Envoy Proxy","text":"
      cargo run --manifest-path loadtest/Cargo.toml  --package loadtest --release -- --report-file=report.htm\n

      The report will be saved in report.htm file.

      "},{"location":"limitador/limitador-server/sandbox/#limitador-image","title":"Limitador Image","text":"

      By default, the sandbox will run Limitador's limitador-testing:latest image.

      Building limitador-testing:latest image

      You can easily build the limitador's image from the current workspace code base with:

      make build\n

      The image will be tagged with limitador-testing:latest

      Using custom Limitador's image

      The LIMITADOR_IMAGE environment variable overrides the default image. For example:

      make deploy-in-memory LIMITADOR_IMAGE=quay.io/kuadrant/limitador:latest\n
      "},{"location":"limitador/limitador-server/sandbox/#clean-env","title":"Clean env","text":"
      make clean\n
      "},{"location":"limitador/limitador-server/sandbox/redis-otel/","title":"Limitador instrumentation sandbox","text":"

      Limitador is configured to push traces to an opentelemetry collector.

      "},{"location":"limitador/limitador-server/sandbox/redis-otel/#run-sandbox","title":"Run sandbox","text":"
      make build\nmake deploy-redis-otel\n
      "},{"location":"limitador/limitador-server/sandbox/redis-otel/#run-some-traffic","title":"Run some traffic","text":"
      make grpcurl\n
      bin/grpcurl -plaintext -d @ 127.0.0.1:18081 envoy.service.ratelimit.v3.RateLimitService.ShouldRateLimit <<EOM\n{\n    \"domain\": \"test_namespace\",\n    \"hits_addend\": 1,\n    \"descriptors\": [\n        {\n            \"entries\": [\n                {\n                    \"key\": \"req.method\",\n                    \"value\": \"POST\"\n                }\n            ]\n        }\n    ]\n}\nEOM\n
      "},{"location":"limitador/limitador-server/sandbox/redis-otel/#see-the-trace-in-ui","title":"See the trace in UI","text":"
      firefox -private-window \"localhost:16686\"\n

      Recommended to start looking at check_and_update operation.

      "},{"location":"limitador/limitador-server/sandbox/redis-otel/#tear-down-sandbox","title":"Tear down sandbox","text":"
      make clean\n
      "},{"location":"limitador/limitador-server/sandbox/redis-tls/","title":"Index","text":""},{"location":"limitador/limitador-server/sandbox/redis-tls/#testing-redis-security","title":"Testing redis security","text":"

      Execute bash shell in redis pod

      docker compose -p sandbox exec redis /bin/bash\n

      Connect to this Redis server with redis-cli:

      root@e024a29b74ba:/data# redis-cli --tls --cacert /usr/local/etc/redis/certs/ca.crt -a foobared\n
      "},{"location":"limitador-operator/","title":"Limitador Operator","text":""},{"location":"limitador-operator/#overview","title":"Overview","text":"

      The Operator to manage Limitador deployments.

      "},{"location":"limitador-operator/#customresourcedefinitions","title":"CustomResourceDefinitions","text":"
      • Limitador, which defines a desired Limitador deployment.
      "},{"location":"limitador-operator/#limitador-crd","title":"Limitador CRD","text":"

      Limitador v1alpha1 API reference

      Example:

      ---\napiVersion: limitador.kuadrant.io/v1alpha1\nkind: Limitador\nmetadata:\n  name: limitador-sample\nspec:\n  listener:\n    http:\n      port: 8080\n    grpc:\n      port: 8081\n  limits:\n\n    - conditions: [\"get_toy == 'yes'\"]\n      max_value: 2\n      namespace: toystore-app\n      seconds: 30\n      variables: []\n
      "},{"location":"limitador-operator/#features","title":"Features","text":"
      • Storage Options
      • Rate Limit Headers
      • Logging
      • Tracing
      "},{"location":"limitador-operator/#contributing","title":"Contributing","text":"

      The Development guide describes how to build the operator and how to test your changes before submitting a patch or opening a PR.

      Join us on the #kuadrant channel in the Kubernetes Slack workspace, for live discussions about the roadmap and more.

      "},{"location":"limitador-operator/#licensing","title":"Licensing","text":"

      This software is licensed under the Apache 2.0 license.

      See the LICENSE and NOTICE files that should have been provided along with this software for details.

      "},{"location":"limitador-operator/doc/development/","title":"Development Guide","text":""},{"location":"limitador-operator/doc/development/#technology-stack-required-for-development","title":"Technology stack required for development","text":"
      • operator-sdk version 1.32.0
      • kind version v0.22.0
      • git
      • go version 1.21+
      • kubernetes version v1.25+
      • kubectl version v1.25+
      "},{"location":"limitador-operator/doc/development/#build","title":"Build","text":"
      make\n
      "},{"location":"limitador-operator/doc/development/#run-locally","title":"Run locally","text":"

      You need an active session open to a kubernetes cluster.

      Optionally, run kind with local-env-setup.

      make local-env-setup\n

      Then, run the operator locally

      make run\n
      "},{"location":"limitador-operator/doc/development/#deploy-the-operator-in-a-deployment-object","title":"Deploy the operator in a deployment object","text":"
      make local-setup\n
      "},{"location":"limitador-operator/doc/development/#deploy-the-operator-using-olm","title":"Deploy the operator using OLM","text":"

      You can deploy the operator using OLM just running a few commands. No need to build any image. Kuadrant engineering team provides latest and released version tagged images. They are available in the Quay.io/Kuadrant image repository.

      Create kind cluster

      make kind-create-cluster\n

      Deploy OLM system

      make install-olm\n

      Deploy the operator using OLM. The make deploy-catalog target accepts the following variables:

      Makefile Variable Description Default value CATALOG_IMG Catalog image URL quay.io/kuadrant/limitador-operator-catalog:latest
      make deploy-catalog [CATALOG_IMG=quay.io/kuadrant/limitador-operator-catalog:latest]\n
      "},{"location":"limitador-operator/doc/development/#build-custom-olm-catalog","title":"Build custom OLM catalog","text":"

      If you want to deploy (using OLM) a custom limitador operator, you need to build your own catalog.

      "},{"location":"limitador-operator/doc/development/#build-operator-bundle-image","title":"Build operator bundle image","text":"

      The make bundle target accepts the following variables:

      Makefile Variable Description Default value Notes IMG Operator image URL quay.io/kuadrant/limitador-operator:latest VERSION Bundle version 0.0.0 RELATED_IMAGE_LIMITADOR Limitador bundle URL quay.io/kuadrant/limitador:latest LIMITADOR_VERSION var could be use to build this URL providing the tag
      • Build the bundle manifests
      make bundle [IMG=quay.io/kuadrant/limitador-operator:latest] \\\n            [VERSION=0.0.0] \\\n            [RELATED_IMAGE_LIMITADOR=quay.io/kuadrant/limitador:latest]\n
      • Build the bundle image from the manifests
      Makefile Variable Description Default value BUNDLE_IMG Operator bundle image URL quay.io/kuadrant/limitador-operator-bundle:latest
      make bundle-build [BUNDLE_IMG=quay.io/kuadrant/limitador-operator-bundle:latest]\n
      • Push the bundle image to a registry
      Makefile Variable Description Default value BUNDLE_IMG Operator bundle image URL quay.io/kuadrant/limitador-operator-bundle:latest
      make bundle-push [BUNDLE_IMG=quay.io/kuadrant/limitador-operator-bundle:latest]\n
      "},{"location":"limitador-operator/doc/development/#build-custom-catalog","title":"Build custom catalog","text":"

      The catalog format will be File-based Catalog.

      Make sure all the required bundles are pushed to the registry. It is required by the opm tool.

      The make catalog target accepts the following variables:

      Makefile Variable Description Default value BUNDLE_IMG Operator bundle image URL quay.io/kuadrant/limitador-operator-bundle:latest REPLACES_VERSION Previous operator version 0.0.0-alpha CHANNELS Catalog channels preview
      make catalog [BUNDLE_IMG=quay.io/kuadrant/limitador-operator-bundle:latest] \\\n             [REPLACES_VERSION=0.0.0-alpha] \\\n             [CHANNELS=preview]\n
      • Build the catalog image from the manifests
      Makefile Variable Description Default value CATALOG_IMG Operator catalog image URL quay.io/kuadrant/limitador-operator-catalog:latest
      make catalog-build [CATALOG_IMG=quay.io/kuadrant/limitador-operator-catalog:latest]\n
      • Push the catalog image to a registry
      make catalog-push [CATALOG_IMG=quay.io/kuadrant/limitador-operator-bundle:latest]\n

      You can try out your custom catalog image following the steps of the Deploy the operator using OLM section.

      "},{"location":"limitador-operator/doc/development/#cleaning-up","title":"Cleaning up","text":"
      make local-cleanup\n
      "},{"location":"limitador-operator/doc/development/#run-tests","title":"Run tests","text":""},{"location":"limitador-operator/doc/development/#unittests","title":"Unittests","text":"
      make test-unit\n

      Optionally, add TEST_NAME makefile variable to run specific test

      make test-unit TEST_NAME=TestConstants\n

      or even subtest

      make test-unit TEST_NAME=TestLimitIndexEquals/empty_indexes_are_equal\n
      "},{"location":"limitador-operator/doc/development/#integration-tests","title":"Integration tests","text":"

      You need an active session open to a kubernetes cluster.

      Optionally, run local cluster with kind

      make local-env-setup\n

      Run integration tests

      make test-integration\n
      "},{"location":"limitador-operator/doc/development/#all-tests","title":"All tests","text":"

      You need an active session open to a kubernetes cluster.

      Optionally, run local cluster with kind

      make local-env-setup\n

      Run all tests

      make test\n
      "},{"location":"limitador-operator/doc/development/#lint-tests","title":"Lint tests","text":"
      make run-lint\n
      "},{"location":"limitador-operator/doc/development/#uninstall-limitador-crd","title":"(Un)Install Limitador CRD","text":"

      You need an active session open to a kubernetes cluster.

      Remove CRDs

      make uninstall\n
      "},{"location":"limitador-operator/doc/logging/","title":"Logging","text":"

      The limitador operator outputs 3 levels of log messages: (from lowest to highest level)

      1. debug
      2. info (default)
      3. error

      info logging is restricted to high-level information. Actions like creating, deleting or updating kubernetes resources will be logged with reduced details about the corresponding objects, and without any further detailed logs of the steps in between, except for errors.

      Only debug logging will include processing details.

      To configure the desired log level, set the environment variable LOG_LEVEL to one of the supported values listed above. Default log level is info.

      Apart from log level, the controller can output messages to the logs in 2 different formats:

      • production (default): each line is a parseable JSON object with properties {\"level\":string, \"ts\":int, \"msg\":string, \"logger\":string, extra values...}
      • development: more human-readable outputs, extra stack traces and logging info, plus extra values output as JSON, in the format: <timestamp-iso-8601>\\t<log-level>\\t<logger>\\t<message>\\t{extra-values-as-json}

      To configure the desired log mode, set the environment variable LOG_MODE to one of the supported values listed above. Default log mode is production.

      "},{"location":"limitador-operator/doc/rate-limit-headers/","title":"Rate Limit Headers","text":"

      It enables RateLimit Header Fields for HTTP as specified in Rate Limit Headers Draft

      apiVersion: limitador.kuadrant.io/v1alpha1\nkind: Limitador\nmetadata:\n  name: limitador-sample\nspec:\n  rateLimitHeaders: DRAFT_VERSION_03\n

      Current valid values are:

      • DRAFT_VERSION_03 (ref: Rate Limit Headers Draft)
      • NONE

      By default, when spec.rateLimitHeaders is null, --rate-limit-headers command line arg is not included in the limitador's deployment.

      "},{"location":"limitador-operator/doc/resource-requirements/","title":"Resource Requirements","text":"

      The default resource requirement for Limitador deployments is specified in Limitador v1alpha1 API reference and will be applied if the resource requirement is not set in the spec.

      apiVersion: limitador.kuadrant.io/v1alpha1\nkind: Limitador\nmetadata:\n  name: limitador-sample\nspec:\n  listener:\n    http:\n      port: 8080\n    grpc:\n      port: 8081\n  limits:\n\n    - conditions: [\"get_toy == 'yes'\"]\n      max_value: 2\n      namespace: toystore-app\n      seconds: 30\n      variables: []  \n
      Field json/yaml field Type Required Default value Description ResourceRequirements resourceRequirements *corev1.ResourceRequirements No {\"limits\": {\"cpu\": \"500m\",\"memory\": \"64Mi\"},\"requests\": {\"cpu\": \"250m\",\"memory\": \"32Mi\"}} Limitador deployment resource requirements"},{"location":"limitador-operator/doc/resource-requirements/#example-with-resource-limits","title":"Example with resource limits","text":"

      The resource requests and limits for the deployment can be set like the following:

      apiVersion: limitador.kuadrant.io/v1alpha1\nkind: Limitador\nmetadata:\n  name: limitador-sample\nspec:\n  listener:\n    http:\n      port: 8080\n    grpc:\n      port: 8081\n  limits:\n\n    - conditions: [\"get_toy == 'yes'\"]\n      max_value: 2\n      namespace: toystore-app\n      seconds: 30\n      variables: []\n  resourceRequirements:\n    limits:\n      cpu: 200m\n      memory: 400Mi\n    requests:\n      cpu: 101m  \n      memory: 201Mi    \n

      To specify the deployment without resource requests or limits, set an empty struct {} to the field:

      apiVersion: limitador.kuadrant.io/v1alpha1\nkind: Limitador\nmetadata:\n  name: limitador-sample\nspec:\n  listener:\n    http:\n      port: 8080\n    grpc:\n      port: 8081\n  limits:\n\n    - conditions: [ \"get_toy == 'yes'\" ]\n      max_value: 2\n      namespace: toystore-app\n      seconds: 30\n      variables: []\n  resourceRequirements: {}\n

      "},{"location":"limitador-operator/doc/storage/","title":"Storage","text":"

      Limitador limits counters are stored in a backend storage. This is In contrast to the storage of the limits themselves, which are always stored in ephemeral memory. Limitador's operator supports several storage configurations:

      • In-Memory: ephemeral and cannot be shared
      • Redis: Persistent (depending on the redis storage configuration) and can be shared
      • Redis Cached: Persistent (depending on the redis storage configuration) and can be shared
      • Disk: Persistent (depending on the underlying disk persistence capabilities) and cannot be shared
      "},{"location":"limitador-operator/doc/storage/#in-memory","title":"In-Memory","text":"

      Counters are held in Limitador (ephemeral)

      In-Memory is the default option defined by the Limitador's Operator.

      apiVersion: limitador.kuadrant.io/v1alpha1\nkind: Limitador\nmetadata:\n  name: limitador-sample\nspec:\n  storage: null\n

      For any of those, one should store the URL of the Redis service, inside a K8s opaque Secret.

      apiVersion: v1\nkind: Secret\nmetadata:\n  name: redisconfig\nstringData:\n  URL: redis://127.0.0.1/a # Redis URL of its running instance\ntype: Opaque\n
      "},{"location":"limitador-operator/doc/storage/#redis","title":"Redis","text":"

      Uses Redis to store counters.

      Selected when spec.storage.redis is not null.

      apiVersion: limitador.kuadrant.io/v1alpha1\nkind: Limitador\nmetadata:\n  name: limitador-sample\nspec:\n  storage:\n    redis:\n      configSecretRef: # The secret reference storing the URL for Redis\n        name: redisconfig\n

      The URL of the Redis service is provided inside a K8s opaque Secret. The secret is required to be in the same namespace as the Limitador CR.

      apiVersion: v1\nkind: Secret\nmetadata:\n  name: redisconfig\nstringData:\n  URL: redis://127.0.0.1/a # Redis URL of its running instance\ntype: Opaque\n

      Note: Limitador's Operator will only read the URL field of the secret.

      "},{"location":"limitador-operator/doc/storage/#redis-cached","title":"Redis Cached","text":"

      Uses Redis to store counters, with an in-memory cache.

      Selected when spec.storage.redis-cached is not null.

      apiVersion: limitador.kuadrant.io/v1alpha1\nkind: Limitador\nmetadata:\n  name: limitador-sample\nspec:\n  storage:\n    redis-cached:\n      configSecretRef: # The secret reference storing the URL for Redis\n        name: redisconfig\n

      The URL of the Redis service is provided inside a K8s opaque Secret. The secret is required to be in the same namespace as the Limitador CR.

      apiVersion: v1\nkind: Secret\nmetadata:\n  name: redisconfig\nstringData:\n  URL: redis://127.0.0.1/a # Redis URL of its running instance\ntype: Opaque\n

      Note: Limitador's Operator will only read the URL field of the secret.

      Additionally, caching options can be specified in the spec.storage.redis-cached.options field.

      "},{"location":"limitador-operator/doc/storage/#options","title":"Options","text":"Option Description batch-size Size of entries to flush in as single flush [default: 100] flush-period Flushing period for counters in milliseconds [default: 1000] max-cached Maximum amount of counters cached [default: 10000] response-timeout Timeout for Redis commands in milliseconds [default: 350]

      For example:

      apiVersion: limitador.kuadrant.io/v1alpha1\nkind: Limitador\nmetadata:\n  name: limitador-sample\nspec:\n  storage:\n    redis-cached:\n      configSecretRef: # The secret reference storing the URL for Redis\n        name: redisconfig\n      options: # Every option is optional\n        batch-size: 50\n        max-cached: 5000\n
      "},{"location":"limitador-operator/doc/storage/#disk","title":"Disk","text":"

      Counters are held on disk (persistent). Kubernetes Persistent Volumes will be used to store counters.

      Selected when spec.storage.disk is not null.

      apiVersion: limitador.kuadrant.io/v1alpha1\nkind: Limitador\nmetadata:\n  name: limitador-sample\nspec:\n  storage:\n    disk: {}\n

      Additionally, disk options can be specified in the spec.storage.disk.persistentVolumeClaim and spec.storage.disk.optimize fields.

      "},{"location":"limitador-operator/doc/storage/#persistent-volume-claim-options","title":"Persistent Volume Claim Options","text":"

      spec.storage.disk.persistentVolumeClaim field is an object with the following fields.

      Field Description storageClassName StorageClass of the storage offered by cluster administrators [default: default storage class of the cluster] resources The minimum resources the volume should have. Resources will not take any effect when VolumeName is provided. This parameter is not updateable when the underlying PV is not resizable. [default: 1Gi] volumeName The binding reference to the existing PersistentVolume backing this claim [default: null]

      Example:

      apiVersion: limitador.kuadrant.io/v1alpha1\nkind: Limitador\nmetadata:\n  name: limitador-sample\nspec:\n  storage:\n    disk:\n      persistentVolumeClaim:\n        storageClassName: \"customClass\"\n        resources:\n          requests: 2Gi\n
      "},{"location":"limitador-operator/doc/storage/#optimize","title":"Optimize","text":"

      Defines the valid optimization option of the disk persistence type.

      spec.storage.disk.optimize field is a string type with the following valid values:

      Option Description throughput Optimizes for higher throughput. Default disk Optimizes for disk usage

      Example:

      apiVersion: limitador.kuadrant.io/v1alpha1\nkind: Limitador\nmetadata:\n  name: limitador-sample\nspec:\n  storage:\n    disk:\n      optimize: disk\n
      "},{"location":"limitador-operator/doc/tracing/","title":"Tracing","text":"

      Limitador offers distributed tracing enablement using the .spec.tracing CR configuration:

      ---\napiVersion: limitador.kuadrant.io/v1alpha1\nkind: Limitador\nmetadata:\n  name: limitador-sample\nspec:\n  listener:\n    http:\n      port: 8080\n    grpc:\n      port: 8081\n  limits:\n\n    - conditions: [\"get_toy == 'yes'\"]\n      max_value: 2\n      namespace: toystore-app\n      seconds: 30\n      variables: []\n  verbosity: 3\n  tracing:\n    endpoint: rpc://my-otlp-collector:4317\n

      Currently limitador only supports collectors using the OpenTelemetry Protocol with TLS disabled. The endpoint configuration option should contain the scheme, host and port of the service. The quantity and level of the information provided by the spans is configured via the verbosity argument.

      "},{"location":"architecture/docs/design/architectural-overview-v1/","title":"Kuadrant Architectural Overview","text":""},{"location":"architecture/docs/design/architectural-overview-v1/#overview","title":"Overview","text":"

      Kuadrant provides connectivity, security and service protection capabilities in both a single and multi-cluster environment. It exposes these capabilities in the form of Kubernetes CRDs that implement the Gateway API concept of policy attachment. These policy APIs can target specific Gateway API resources such as Gateways and HTTPRoutes to extend their capabilities and configuration. They enable platform engineers to secure, protect and connect their infrastructure and allow application developers to self service and refine policies to their specific needs in order to protect exposed endpoints.

      "},{"location":"architecture/docs/design/architectural-overview-v1/#key-architectural-areas","title":"Key Architectural Areas","text":"
      • Kuadrant architecture is defined and implemented with both control plane and data plane components.
      • The control plane is where policies are exposed and expressed as Kubernetes APIs and reconciled by a policy controller.
      • The data plane is where Kuadrant's \"policy enforcement\" components exist. These components are configured by the control plane and integrate either directly with the Gateway provider or via external integrations.
      "},{"location":"architecture/docs/design/architectural-overview-v1/#10000m-architecture","title":"10000m Architecture","text":""},{"location":"architecture/docs/design/architectural-overview-v1/#control-plane-components-and-responsibilities","title":"Control Plane Components and Responsibilities","text":"

      The control plane is a set of controllers and operators that are responsible for for installation and configuration of other components such as the data plane enforcement components and configuration of the Gateway to enable the data plane components to interact with incoming requests. The control plane also owns and reconciles the policy CRD APIs into more complex and specific configuration objects that the policy enforcement components consume in order to know the rules to apply to incoming requests or the configuration to apply to external integrations such as DNS and ACME providers.

      "},{"location":"architecture/docs/design/architectural-overview-v1/#kuadrant-operator","title":"Kuadrant Operator","text":"
      • Installation and configuration of other control plane components
      • Installation of data plane policy enforcement components via their respective control plane operators
      • Configures the Gateway via WASM plugin and other APIs to leverage the data plane components for auth and rate limiting on incoming requests.
      • Exposes RateLimitPolicy , AuthPolicy, DNSPolicy and TLSPolicy and reconciles these into enforceable configuration for the data plane.
      • Exposes Kuadrant and reconciles this to configure and trigger installation of the required data plane components and other control plane components.
      "},{"location":"architecture/docs/design/architectural-overview-v1/#limitador-operator","title":"Limitador Operator:","text":"
      • Installs and configures the Limitador data plane component based on the Limitador CR. Limits specified in the limitador CR are mountd via configmap into the limitador component.
      "},{"location":"architecture/docs/design/architectural-overview-v1/#authorino-operator","title":"Authorino Operator:","text":"
      • Installs and configures the Authorino data plane component based on the Authorino CR.
      "},{"location":"architecture/docs/design/architectural-overview-v1/#cert-manager","title":"Cert-Manager:","text":"
      • Manages TLS certificates for our components and for the Gateways. Consumes Certificate resources created by Kuadrant operator in response to the TLSPolicy.
      "},{"location":"architecture/docs/design/architectural-overview-v1/#dns-operator","title":"DNS Operator","text":"
      • DNS operator consumes DNSRecord resources that are configured via the DNSPolicy api and applies them into the targeted cloud DNS provider AWS, Azure and Google DNS are our main targets
      "},{"location":"architecture/docs/design/architectural-overview-v1/#data-plane-components-and-responsibilities","title":"Data Plane Components and Responsibilities","text":"

      The data plane components sit in the request flow and are responsible for enforcing configuration defined by policy and providing service protection capabilities based on configuration managed and created by the control plane.

      "},{"location":"architecture/docs/design/architectural-overview-v1/#limitador","title":"Limitador","text":"
      • Complies with the with Envoy rate limiting API to provide rate limiting to the gateway. Consumes limits from a configmap created based on the RateLimitPolicy API.
      "},{"location":"architecture/docs/design/architectural-overview-v1/#authorino","title":"Authorino","text":"
      • Complies with the Envoy external auth API to provide auth integration to the gateway. It provides both Authn and Authz. Consumes AuthConfigs created by the kuadrant operator based on the defined AuthPolicy API.
      "},{"location":"architecture/docs/design/architectural-overview-v1/#wasm-shim","title":"WASM Shim","text":"
      • Uses the Proxy WASM ABI Spec to integrate with Envoy and provide filtering and connectivity to Limitador for request time enforcement of and rate limiting.
      "},{"location":"architecture/docs/design/architectural-overview-v1/#single-cluster-layout","title":"Single Cluster Layout","text":"

      In a single cluster, you have the Kuadrant control plane and data plane sitting together. It is configured to integrate with Gateways on the same cluster and configure a DNS zone via a DNS provider secret (configured alongside a DNSPolicy). Storage of rate limit counters is possible but not required as they are not being shared.

      "},{"location":"architecture/docs/design/architectural-overview-v1/#multi-cluster","title":"Multi-Cluster","text":"

      In the default multi-cluster setup. Each individual cluster has Kuadrant installed. Each of these clusters are unaware of the other. They are effectively operating as single clusters. The multi-cluster aspect is created by sharing access with the DNS zone, using a shared host across the clusters and leveraging shared counter storage. The zone is operated on independently by each of DNS operator on both clusters to form a single cohesive record set. More details on this can be found in the following RFC document: TODO add link. The rate limit counters can also be shared and used by different clusters in order to provide global rate limiting. This is achieved by connecting each instance of Limitador to a shared data store that uses the Redis protocol. There is another option available for achieving multi-cluster connectivity (see intgrations below) that requires the use of a \"hub\" cluster and integration with OCM (open cluster management).

      Shown above is a multi-cluster multi ingress gateway topology. This might be used to support a geographically distributed system for example. However, it is also possible to leverage overlay networking tools such as Skupper that integrate at the Kubernetes service level to have a single gateway cluster that then integrates with multiple backends (on different clusters or in custom infrastructure).

      "},{"location":"architecture/docs/design/architectural-overview-v1/#observability","title":"Observability","text":"

      The Kuadrant architecture is intended to work with some popular monitoring tools for tracing, metrics and log aggregation. Those tools are:

      • Prometheus for scraping metrics - and optionally Thanos for high availability & federation
      • Loki for log aggregation - via log collectors like vector
      • Tempo for trace collecting
      • Grafana for visualing the above

      Depending on the number of clusters in your configuration, you may decide to have a monitoring system on the same cluster as workloads, or in a separate cluster completely. Below are 2 example architectures based on the single cluster and multi cluster layouts. In the single cluster architecture, the collector components (Prometheus, Vector and Tempo) are in the same cluster as the log aggregation (Loki) and visualisation component (Grafana).

      In the multi cluster architecture, the collectors that scrape metrics or logs (Prometheus & Vector) are deployed alongside the workloads in each cluster. However, as traces are sent to a collector (Tempo) from each component, it can be centralised in a separate cluster. Thanos is used in this architecutre so that each prometheus can federate metrics back to a central location. The log collector (vector) can forward logs to a central loki instance. Finally, the visualisation component (Grafana) is centralised as well, with data sources configured for each of the 3 components on the same cluster.

      "},{"location":"architecture/docs/design/architectural-overview-v1/#dependencies","title":"Dependencies","text":""},{"location":"architecture/docs/design/architectural-overview-v1/#istio-required","title":"Istio: Required","text":"
      • Gateway API provider that Kuadrant integrates with via WASM and Istio APIS to provide service protection capabilities. Kuadrant configures Envoy via the Istio control plane in order to enforce the applied policies and register components such as Authorino and Limitador.
      • Used by RateLimitPolicy and AuthPolicy
      "},{"location":"architecture/docs/design/architectural-overview-v1/#gateway-api-required","title":"Gateway API: Required","text":"
      • New standard for Ingress from the Kubernetes community
      • Gateway API is the core API that Kuadrant integrates with.
      "},{"location":"architecture/docs/design/architectural-overview-v1/#integrations","title":"Integrations","text":""},{"location":"architecture/docs/design/architectural-overview-v1/#open-cluster-manager-optional","title":"Open Cluster Manager: Optional","text":"
      • Provides a multi-cluster control plane to enable the defining and distributing of Gateways across multiple clusters.

      While the default setup is to leverage a distributed configuration for DNS and rate limiting. There is also a component that offers experimental integration with Open Cluster Management.

      In this setup, the OCM integration controller is installed into the HUB alongside the DNS Operator and the cert-manager. This integration allows you to define gateways in the Hub and distribute them to \"spoke\" clusters. The addresses of these gateways are gathered from the spokes and aggregated back to the hub. The Kuadrant operator and DNS operator then act on this information as though it were a single cluster gateway with multiple addresses. The DNS zone in the configured DNS provider is managed centrally by one DNS operator instance.

      "},{"location":"architecture/docs/design/architectural-overview/","title":"Kuadrant Architectural Overview [Draft]","text":""},{"location":"architecture/docs/design/architectural-overview/#overview","title":"Overview","text":"

      It is important to note that Kuadrant is not in itself a gateway provider. Kuadrant provides a set of valuable policy APIs that enhance Gateway API via its defined policy attachment extension point. The policy APIs are reconciled by a set of policy controllers and enforced via integration at different points to configure, enhance and secure the application connectivity provided via Gateway API and the underlying gateway provider. These policy extensions are focused around areas such as DNS management supporting global load balancing and health checks, alongside service protection specific APIs such as rate limiting and auth. Kuadrant also integrates with Open Cluster Management as a multi-cluster control plane to enable defining and distributing Gateways across multiple clusters, providing load balancing and tls management for these distributed gateways. These integrations and features can be managed centrally in a declarative way from the Open Cluster Management Hub using Kubernetes resources.

      "},{"location":"architecture/docs/design/architectural-overview/#key-architectural-areas","title":"Key Architectural Areas","text":"
      • The Kuadrant architecture is spread across a control plane and also a data plane. Kuadrant can work in both a single and multi-cluster context. Currently in order for all APIs to work in a single or multi-cluster context you need to have Open Cluster Management installed. While this may change in the future, this approach allows us to start with a single cluster and seamlessly scale as more clusters are added.
      • The control plane is where policies are exposed and expressed as kubernetes APIs and reconciled by the Kuadrant policy controllers.
      • The data plane is where Kuadrant's service protection components, configured by the control plane policies, are enforced within the gateway instance as part of the request flow.
      "},{"location":"architecture/docs/design/architectural-overview/#1000m-architecture","title":"1000m Architecture","text":""},{"location":"architecture/docs/design/architectural-overview/#control-plane-components-and-responsibilities","title":"Control Plane Components and Responsibilities","text":"

      A control plane component is something responsible for accepting instruction via a CRD based API and ensuring that configuration is manifested into state that can be acted on.

      "},{"location":"architecture/docs/design/architectural-overview/#kuadrant-operator","title":"Kuadrant Operator","text":"
      • Installation of data plane service protection components via their respective operators
      • Exposes RateLimitPolicy and AuthPolicy and is currently the policy controller for these APIs
      • Configures the Gateway to be able to leverage the data plane service protection components
      "},{"location":"architecture/docs/design/architectural-overview/#multi-cluster-gateway-controller","title":"Multi-Cluster Gateway Controller","text":"
      • Exposes DNSPolicy and TLSPolicy
      • Configures DNS providers (e.g AWS Route 53) and TLS providers
      • Focused around use cases involving distributed gateways (for example across clouds or geographic regions)
      • Integrates with Open Cluster Management as the multi-cluster management hub to distribute and observe gateway status based on the clusters they are deployed to. Works directly with Open Cluster Management APIs such PlacementDecision and ManifestWork.
      "},{"location":"architecture/docs/design/architectural-overview/#kuadrant-add-on-manager","title":"Kuadrant-add-on-manager","text":"
      • Sub component in the gateway controller repository
      • Follows the add-on pattern from Open Cluster Management
      • Responsible for configuring and installing Kuadrant into a target spoke cluster
      "},{"location":"architecture/docs/design/architectural-overview/#limitador-operator","title":"Limitador Operator:","text":"
      • Installs and configures Limitador
      "},{"location":"architecture/docs/design/architectural-overview/#authorino-operator","title":"Authorino Operator:","text":"
      • Installs and configures Authorino
      "},{"location":"architecture/docs/design/architectural-overview/#data-plane-components-and-responsibilities","title":"Data Plane Components and Responsibilities","text":"

      A data plane component sits in the request flow and is responsible for enforcing policy and providing service protection capabilities based on configuration managed and created by the control plane.

      "},{"location":"architecture/docs/design/architectural-overview/#limitador","title":"Limitador","text":"
      • Complies with the with Envoy rate limiting API to provide rate limiting to the gateway
      "},{"location":"architecture/docs/design/architectural-overview/#authorino","title":"Authorino","text":"
      • Complies with the Envoy external auth API to provide auth integration to the gateway
      "},{"location":"architecture/docs/design/architectural-overview/#wasm-shim","title":"WASM Shim","text":"
      • Uses the Proxy WASM ABI Spec to integrate with Envoy and provide filtering and connectivity to Limitador for request time enforcement of and rate limiting
      "},{"location":"architecture/docs/design/architectural-overview/#dependencies-and-integrations","title":"Dependencies and integrations","text":"

      In order to provide its full suite of functionality, Kuadrant has several dependencies. Some of these are optional depending on the functionality needed.

      "},{"location":"architecture/docs/design/architectural-overview/#cert-manager-required","title":"Cert-Manager: Required","text":"
      • Provides TLS integration
      • Used by TLSPolicy and Authorino.
      "},{"location":"architecture/docs/design/architectural-overview/#open-cluster-manager-required","title":"Open Cluster Manager: Required","text":"
      • Provides a multi-cluster control plane to enable the defining and distributing of Gateways across multiple clusters.
      "},{"location":"architecture/docs/design/architectural-overview/#istio-required","title":"Istio: Required","text":"
      • Gateway API provider that Kuadrant integrates with via WASM and Istio APIS to provide service protection capabilities.
      • Used by RateLimitPolicy and AuthPolicy
      "},{"location":"architecture/docs/design/architectural-overview/#gateway-api-required","title":"Gateway API: Required","text":"
      • New standard for Ingress from the Kubernetes community
      • Gateway API is the core API that Kuadrant integrates with.
      "},{"location":"architecture/docs/design/architectural-overview/#thanosprometheusgrafana-optional","title":"Thanos/Prometheus/Grafana: Optional","text":"
      • Provides observability integration
      • Rather than providing any Kuadrant specific observability tooling, we instead look to leverage existing tools and technologies to provide observability capabilities for ingress.
      "},{"location":"architecture/docs/design/architectural-overview/#high-level-multi-cluster-architecture","title":"High Level Multi-Cluster Architecture","text":"

      Kuadrant has a multi-cluster gateway controller that is intended to run in a Open Cluster Management provided \"Hub\" cluster. This cluster is effectively a central management cluster where policy and gateways along with all that Open Cluster Management offers can be defined and distributed to the managed \"spoke\" clusters.

      "},{"location":"architecture/docs/design/architectural-overview/#single-cluster","title":"Single cluster","text":"

      In a single cluster context, the overall architecture remains the same as above, the key difference is that the Hub and Spoke cluster are now a single cluster rather than multiple clusters. This is how we are initially supporting single cluster.

      "},{"location":"architecture/docs/design/architectural-overview/#how-does-kuadrant-leverage-open-cluster-management","title":"How does Kuadrant leverage Open Cluster Management?","text":"

      Kuadrant deploys a multi-cluster gateway controller into the Open Cluster Management hub (a control plane that manages a set of \"spoke\" clusters where workloads are executed). This controller offers its own APIs but also integrates with hub CRD based APIs (such as the placement API) along with the Gateway API CRD based APIs in order to provide multi-cluster Gateway capabilities to the hub and distribute actual gateway instances to the spokes. See the Open Cluster Management docs for further details on the hub spoke architecture.

      As part of installing Kuadrant, the Gateway API CRDs are also installed into the hub cluster and Kuadrant defines a standard Gateway API GatewayClass resource that the multi-cluster gateway controller is the chosen controller for.

      Once installed, an Open Cluster Management user can then (with the correct RBAC in place) define in the standard way a Gateway resource that inherits from the Kuadrant configured GatewayClass in the hub. There is nothing unique about this Gateway definition, the difference is what it represents and how it is used. This Gateway is used to represent a \"multi-cluster\" distributed gateway. As such there are no pods running behind this Gateway instance in the hub cluster, instead it serves as a template that the Kuadrant multi-cluster gateway controller reconciles and distributes to targeted spoke clusters. It leverages the Open Cluster Management APIs to distribute these gateways (more info below) and aggregates the status information from each spoke cluster instance of this gateway back to this central definition, in doing this it can represent the status of the gateway across multiple clusters but also use that information to integrate with DNS providers etc.

      "},{"location":"architecture/docs/design/architectural-overview/#gateway-deployment-and-distribution","title":"Gateway Deployment and Distribution","text":"

      In order for a multi-cluster gateway to be truly useful, it needs to be distributed or \"placed\" on a specific set of hub managed spoke clusters. Open Cluster Management is responsible for a set of placement and replication APIs. Kuadrant is aware of these APIs, and so when a given gateway is chosen to be placed on a set of managed clusters, Kuadrant multi-cluster gateway controller will ensure the right resources (ManifestWork) are created in the correct namespaces in the hub. Open Cluster Management then is responsible for syncing these to the actual spoke cluster and reporting back the status of these resources to the Hub. A user would indicate which clusters they want a gateway placed on by using a Placement and then labeling the gateway using the cluster.open-cluster-management.io/placement label.

      In order for the Gateway to be instantiated, we need to know what underlying gateway provider is being used on the spoke clusters. Admins can then set this provider in the hub via the GatewayClass params. In the hub, Kuadrant will then apply a transformation to the gateway to ensure when synced it references this spoke gateway provider (Istio for example).

      It is the Open Cluster Management workagent that is responsible for syncing down and applying the resources into the managed spoke cluster. It is also responsible for syncing status information back to the hub. It is the multi-cluster gateway controller that is responsible for aggregating this status.

      The status information reported back to the Hub is used by the multi-cluster gateway controller to know what LB hosts / IPAddresses to use for DNSRecords that it creates and manages.

      More info on the Open Cluster Management hub and spoke architecture can be found here

      "},{"location":"architecture/docs/design/architectural-overview/#how-does-kuadrant-integrate-with-gateway-providers","title":"How does Kuadrant integrate with Gateway Providers?","text":"

      Currently the Kuadrant data plane only integrates with an Istio based gateway provider:

      • It registers Authorino with the IstioOperator as an auth provider so that Authorino can be used as an external auth provider.
      • It leverages an EnvoyFilter to register the rate limiting service as an upstream service.
      • Based on the Kuadrant AuthPolicy, it leverages Istio's AuthorizationPolicy resource to configure when a request should trigger Authorino to be called for a given host, path and method etc.
      • It provides a WebAssembly (WASM) Plugin that conforms to the Proxy WASM ABI (application binary interface). This WASM Plugin is loaded into the underlying Envoy based gateway provider and configured via the Kuadrant Operator based on defined RateLimitPolicy resources. This binary is executed in response to a HTTP request being accepted by the gateway via the underlying Envoy instance that provides the proxy layer for the Gateway (IE Envoy). This plugin is configured with the correct upstream rate limit service name and when it sees a request, based on the provided configuration, it will trigger a call to the installed Limitador that is providing the rate limit capabilities and either allow the request to continue or trigger a response to the client with a 429 (too many requests) HTTP code.
      "},{"location":"architecture/docs/design/architectural-overview/#data-flows","title":"Data Flows","text":"

      There are several different data flows when using Kuadrant.

      "},{"location":"architecture/docs/design/architectural-overview/#control-plane-configuration-and-status-reporting","title":"Control plane configuration and status reporting","text":"

      The initial creation of these APIs (gateways, policies etc) is done by the relevant persona in the control plane just as they would any other k8s resource. We use the term cluster admin or gateway admin as the operations type persona configuring, and placing gateways. As shown above, in a multi-cluster configuration. API definitions are pulled from the Hub and \"manifested\" into the spokes. The Status of those synced resources are reported back to the Hub. The same happens for a single cluster, the only difference being the work agent hub controllers are all installed on one cluster.

      "},{"location":"architecture/docs/design/architectural-overview/#third-party-enforcement-and-integration","title":"Third party enforcement and Integration","text":"

      In order to enforce the policy configuration, components in the control plane and data plane can reach out to configured 3rd parties such as cloud based DNS provider, TLS providers and Auth providers.

      "},{"location":"architecture/docs/design/architectural-overview/#request-flow","title":"Request Flow","text":"

      Requests coming through the gateway instance can be sent to Limitador based on configuration of the WASM plugin installed into the Envoy based gateway provider or to Authorino based configuration provided by the Istio AuthorizationPolicy. Each of these components have the capability to see the request and need to in order to make the required decision. Each of these components can also prevent the request from reaching its intended backend destination based on user configuration.

      "},{"location":"architecture/docs/design/architectural-overview/#auth","title":"Auth","text":"

      As all of the APIs are CRDs, auth around creating these resources is handled in the standard way IE by the kubernetes cluster and RBAC. There is no relationship by default between the Auth features provided by Authorino to application developers and the auth requirements of the cluster API server.

      For Auth between Spoke and Hub see Open Cluster Management docs

      "},{"location":"architecture/docs/design/architectural-overview/#observability","title":"Observability","text":"

      Kuadrant doesn't provide any specific observability components, but rather provides a reference setup using well known and established components along with some useful dashboards to help observe key things around the Gateways. The focus of this setup, is in the context of a multi-cluster setup where Open Cluster Management is installed and gateways are being defined and distributed from that hub.

      "},{"location":"architecture/docs/design/architectural-overview/#some-notes-on-future-direction","title":"Some notes on future direction","text":"

      This section is here to provide some insight into architectural changes that may be seen in the near future:

      What is in this doc represents the architecture at point our MVP release. Below are some areas that we have identified that are likely to change in the coming releases. As these happen, this doc will also evolve.

      • We want to separate out the ocm integration into its own controller so that policies can evolve without a coupling to any one multi-cluster management solution
      • We want to separate the policies into their own controller that is capable of supporting both single (without Open Cluster Management) and multi-cluster (with Open Cluster Management enabled) contexts, so that the barrier to entry is reduced for those starting with a single cluster
      • We want to allow for an on cluster DNS Provider such as CoreDNS so that we can provide an implementation that is disconnected from any cloud provider and provides more flexible DNS setups.
      • We will look to reduce our integration with Istio and want to provide integration with additional gateway providers such as EnvoyGateway
      "},{"location":"architecture/docs/design/modular_installation/","title":"Kuadrant Proposal - Modular Installation","text":"

      Kuadrant is developing a set of loosely coupled functionalities built directly on top of Kubernetes. Kuadrant aims to allow customers to just install, use and understand those functionalities they need.

      "},{"location":"architecture/docs/design/modular_installation/#problem-statement","title":"Problem Statement","text":"

      Currently, the installation tool of kuadrant, the kuadrantctl CLI, installs all or nothing. Installing more than the customer needs adds unneeded complexity and operational effort. For example, if a customer is looking for rate limiting and not interested in authentication functionality, then the customer should be able to just install and run that part of Kuadrant.

      "},{"location":"architecture/docs/design/modular_installation/#high-level-goals","title":"High Level Goals","text":"
      • Install only required components. Operate only required components.

      Reduce system complexity and operational effort to the minimum required. Components in this context make reference to deployments and running instances.

      • Expose only the activated functionalities

      A user of a partial Kuadrant install should not be confronted with data in custom resources that has no meaning or is not accessible in their partial Kuadrant install. The design of the kuadrant API should have this goal into account.

      "},{"location":"architecture/docs/design/modular_installation/#proposed-solution","title":"Proposed Solution","text":"

      The kuadrant installation mechanism should offer modular installation to enable/disable loosely coupled pieces of kuadrant. Modular installation options should be feature oriented rather than deployment component oriented. Then, it is up to the installation tool to decide what components need to be deployed and how to configure it.

      Each feature, or part of it, is eligible to be included or excluded when installing kuadrant.

      Some profiles can be defined to group set of commonly required features. Naming the profiles allows the customer to easily express wanted installation configuration. Furthermore, profiles not only can be used to group a set of features, profiles can be used to define deployment options.

      Name Description Minimal Minimal installation required to run an API without any protection, analytics or API management. Default deployment option AuthZ Authentication and authorization mechanisms activated RateLimit Basic rate limit (only pre-auth rate limit) features Full Full featured kuadrant installation

      A kuadrant operator, together with a design of a kuadrant CRD is desired. Not only for kuadrant installation, but also for lifecycle management. Additionally, the kuadrantctl CLI tool can also be useful to either deploy kuadrant components and manifests or just deploy the kuadrant operator.

      The kuadrant control plane should be aware of the installed profile via env vars or command line params in the control plane running components. With that information, the control plane can decide to enable or disable CRD watching, label and annotation monitoring and ultimately reject any configuration object that relies on disabled functionality. The least a customer can expect from kuadrant is to be consistent and reject any functionality request that cannot provide.

      "},{"location":"architecture/rfcs/0001-rlp-v2/","title":"RateLimitPolicy API v2","text":"
      • Feature Name: rlp-v2
      • Start Date: 2023-02-02
      • RFC PR: Kuadrant/architecture#12
      • Issue tracking: Kuadrant/architecture#13
      "},{"location":"architecture/rfcs/0001-rlp-v2/#summary","title":"Summary","text":"

      Proposal of new API for the Kuadrant's RateLimitPolicy (RLP) CRD, for improved UX.

      "},{"location":"architecture/rfcs/0001-rlp-v2/#motivation","title":"Motivation","text":"

      The RateLimitPolicy API (v1beta1), particularly its RateLimit type used in ratelimitpolicy.spec.rateLimits, designed in part to fit the underlying implementation based on the Envoy Rate limit filter, has been proven to be complex, as well as somewhat limiting for the extension of the API for other platforms and/or for supporting use cases of not contemplated in the original design.

      Users of the RateLimitPolicy will immediately recognize elements of Envoy's Rate limit API in the definitions of the RateLimit type, with almost 1:1 correspondence between the Configuration type and its counterpart in the Envoy configuration. Although compatibility between those continue to be desired, leaking such implementation details to the level of the API can be avoided to provide a better abstraction for activators (\"matchers\") and payload (\"descriptors\"), stated by users in a seamless way.

      Furthermore, the Limit type \u2013 used as well in the RLP's RateLimit type \u2013 implies presently a logical relationship between its inner concepts \u2013 i.e. conditions and variables on one side, and limits themselves on the other \u2013 that otherwise could be shaped in a different manner, to provide clearer understanding of the meaning of these concepts by the user and avoid repetition. I.e., one limit definition contains multiple rate limits, and not the other way around.

      "},{"location":"architecture/rfcs/0001-rlp-v2/#goals","title":"Goals","text":"
      1. Decouple the API from the underlying implementation - i.e. provide a more generic and more user-friendly abstraction
      2. Prepare the API for upcoming changes in the Gateway API Policy Attachment specification
      3. Improve consistency of the API with respect to Kuadrant's AuthPolicy CRD - i.e. same language, similar UX
      "},{"location":"architecture/rfcs/0001-rlp-v2/#current-wip-to-consider","title":"Current WIP to consider","text":"
      1. Policy attachment update (kubernetes-sigs/gateway-api#1565)
      2. No merging of policies (kuadrant/architecture#10)
      3. A single Policy scoped to HTTPRoutes and HTTPRouteRule (kuadrant/architecture#4) - future
      4. Implement skip_if_absent for the RequestHeaders action (kuadrant/wasm-shim#29)
      "},{"location":"architecture/rfcs/0001-rlp-v2/#highlights","title":"Highlights","text":"
      • spec.rateLimits[] replaced with spec.limits{<limit-name>: <limit-definition>}
      • spec.rateLimits.limits replaced with spec.limits.<limit-name>.rates
      • spec.rateLimits.limits.maxValue replaced with spec.limits.<limit-name>.rates.limit
      • spec.rateLimits.limits.seconds replaced with spec.limits.<limit-name>.rates.duration + spec.limits.<limit-name>.rates.unit
      • spec.rateLimits.limits.conditions replaced with spec.limits.<limit-name>.when, structured field based on well-known selectors, mainly for expressing conditions not related to the HTTP route (although not exclusively)
      • spec.rateLimits.limits.variables replaced with spec.limits.<limit-name>.counters, based on well-known selectors
      • spec.rateLimits.rules replaced with spec.limits.<limit-name>.routeSelectors, for selecting (or \"sub-targeting\") HTTPRouteRules that trigger the limit
      • new matcher spec.limits.<limit-name>.routeSelectors.hostnames[]
      • spec.rateLimits.configurations removed \u2013 descriptor actions configuration (previously spec.rateLimits.configurations.actions) generated from spec.limits.<limit-name>.when.selector \u222a spec.limits.<limit-name>.counters and unique identifier of the limit (associated with spec.limits.<limit-name>.routeSelectors)
      • Limitador conditions composed of \"soft\" spec.limits.<limit-name>.when conditions + a \"hard\" condition that binds the limit to its trigger HTTPRouteRules

      For detailed differences between current and new RLP API, see Comparison to current RateLimitPolicy.

      "},{"location":"architecture/rfcs/0001-rlp-v2/#guide-level-explanation","title":"Guide-level explanation","text":""},{"location":"architecture/rfcs/0001-rlp-v2/#examples-of-rlps-based-on-the-new-api","title":"Examples of RLPs based on the new API","text":"

      Given the following network resources:

      apiVersion: gateway.networking.k8s.io/v1alpha2\nkind: Gateway\nmetadata:\n  name: istio-ingressgateway\n  namespace: istio-system\nspec:\n  gatewayClassName: istio\n  listeners:\n\n  - hostname:\n    - \"*.acme.com\"\n---\napiVersion: gateway.networking.k8s.io/v1alpha2\nkind: HTTPRoute\nmetadata:\n  name: toystore\n  namespace: toystore\nspec:\n  parentRefs:\n  - name: istio-ingressgateway\n    namespace: istio-system\n  hostnames:\n  - \"*.toystore.acme.com\"\n  rules:\n  - matches:\n    - path:\n        type: PathPrefix\n        value: \"/toys\"\n      method: GET\n    - path:\n        type: PathPrefix\n        value: \"/toys\"\n      method: POST\n    backendRefs:\n    - name: toystore\n      port: 80\n  - matches:\n    - path:\n        type: PathPrefix\n        value: \"/assets/\"\n    backendRefs:\n    - name: toystore\n      port: 80\n    filters:\n    - type: ResponseHeaderModifier\n      responseHeaderModifier:\n        set:\n        - name: Cache-Control\n          value: \"max-age=31536000, immutable\"\n

      The following are examples of RLPs targeting the route and the gateway. Each example is independent from the other.

      "},{"location":"architecture/rfcs/0001-rlp-v2/#example-1-minimal-example-network-resource-targeted-entirely-without-filtering-unconditional-and-unqualified-rate-limiting","title":"Example 1. Minimal example - network resource targeted entirely without filtering, unconditional and unqualified rate limiting","text":"

      In this example, all traffic to *.toystore.acme.com will be limited to 5rps, regardless of any other attribute of the HTTP request (method, path, headers, etc), without any extra \"soft\" conditions (conditions non-related to the HTTP route), across all consumers of the API (unqualified rate limiting).

      apiVersion: kuadrant.io/v2beta1\nkind: RateLimitPolicy\nmetadata:\n  name: toystore-infra-rl\n  namespace: toystore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: toystore\n  limits:\n    base: # user-defined name of the limit definition - future use for handling hierarchical policy attachment\n\n    - rates: # at least one rate limit required\n      - limit: 5\n        unit: second\n
      How is this RLP implemented under the hood?
      gateway_actions:\n\n- rules:\n  - paths: [\"/toys*\"]\n    methods: [\"GET\"]\n    hosts: [\"*.toystore.acme.com\"]\n  - paths: [\"/toys*\"]\n    methods: [\"POST\"]\n    hosts: [\"*.toystore.acme.com\"]\n  - paths: [\"/assets/*\"]\n    hosts: [\"*.toystore.acme.com\"]\n  configurations:\n  - generic_key:\n      descriptor_key: \"toystore/toystore-infra-rl/base\"\n      descriptor_value: \"1\"\n
      limits:\n\n- conditions:\n  - toystore/toystore-infra-rl/base == \"1\"\n  max_value: 5\n  seconds: 1\n  namespace: TDB\n
      "},{"location":"architecture/rfcs/0001-rlp-v2/#example-2-targeting-specific-route-rules-with-counter-qualifiers-multiple-rates-per-limit-definition-and-soft-conditions","title":"Example 2. Targeting specific route rules, with counter qualifiers, multiple rates per limit definition and \"soft\" conditions","text":"

      In this example, a distinct limit will be associated (\"bound\") to each individual HTTPRouteRule of the targeted HTTPRoute, by using the routeSelectors field for selecting (or \"sub-targeting\") the HTTPRouteRule.

      The following limit definitions will be bound to each HTTPRouteRule:

      • /toys* \u2192 50rpm, enforced per username (counter qualifier) and only in case the user is not an admin (\"soft\" condition).
      • /assets/* \u2192 5rpm / 100rp12h

      Each set of trigger matches in the RLP will be matched to all HTTPRouteRules whose HTTPRouteMatches is a superset of the set of trigger matches in the RLP. For every HTTPRouteRule matched, the HTTPRouteRule will be bound to the corresponding limit definition that specifies that trigger. In case no HTTPRouteRule is found containing at least one HTTPRouteMatch that is identical to some set of matching rules of a particular limit definition, the limit definition is considered invalid and reported as such in the status of RLP.

      apiVersion: kuadrant.io/v2beta1\nkind: RateLimitPolicy\nmetadata:\n  name: toystore-per-endpoint\n  namespace: toystore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: toystore\n  limits:\n    toys:\n      rates:\n\n      - limit: 50\n        duration: 1\n        unit: minute\n      counters:\n      - auth.identity.username\n      routeSelectors:\n      - matches: # matches the 1st HTTPRouteRule (i.e. GET or POST to /toys*)\n        - path:\n            type: PathPrefix\n            value: \"/toys\"\n      when:\n      - selector: auth.identity.group\n        operator: neq\n        value: admin\n\n    assets:\n      rates:\n\n      - limit: 5\n        duration: 1\n        unit: minute\n      - limit: 100\n        duration: 12\n        unit: hour\n      routeSelectors:\n      - matches: # matches the 2nd HTTPRouteRule (i.e. /assets/*)\n        - path:\n            type: PathPrefix\n            value: \"/assets/\"\n
      How is this RLP implemented under the hood?
      gateway_actions:\n\n- rules:\n  - paths: [\"/toys*\"]\n    methods: [\"GET\"]\n    hosts: [\"*.toystore.acme.com\"]\n  - paths: [\"/toys*\"]\n    methods: [\"POST\"]\n    hosts: [\"*.toystore.acme.com\"]\n  configurations:\n  - generic_key:\n      descriptor_key: \"toystore/toystore-per-endpoint/toys\"\n      descriptor_value: \"1\"\n  - metadata:\n      descriptor_key: \"auth.identity.group\"\n      metadata_key:\n        key: \"envoy.filters.http.ext_authz\"\n        path:\n        - segment:\n            key: \"identity\"\n        - segment:\n            key: \"group\"\n  - metadata:\n      descriptor_key: \"auth.identity.username\"\n      metadata_key:\n        key: \"envoy.filters.http.ext_authz\"\n        path:\n        - segment:\n            key: \"identity\"\n        - segment:\n            key: \"username\"\n- rules:\n  - paths: [\"/assets/*\"]\n    hosts: [\"*.toystore.acme.com\"]\n  configurations:\n  - generic_key:\n      descriptor_key: \"toystore/toystore-per-endpoint/assets\"\n      descriptor_value: \"1\"\n
      limits:\n\n- conditions:\n  - toystore/toystore-per-endpoint/toys == \"1\"\n  - auth.identity.group != \"admin\"\n  variables:\n  - auth.identity.username\n  max_value: 50\n  seconds: 60\n  namespace: kuadrant\n- conditions:\n  - toystore/toystore-per-endpoint/assets == \"1\"\n  max_value: 5\n  seconds: 60\n  namespace: kuadrant\n- conditions:\n  - toystore/toystore-per-endpoint/assets == \"1\"\n  max_value: 100\n  seconds: 43200 # 12 hours\n  namespace: kuadrant\n
      "},{"location":"architecture/rfcs/0001-rlp-v2/#example-3-targeting-a-subset-of-an-httprouterule-httproutematch-missing","title":"Example 3. Targeting a subset of an HTTPRouteRule - HTTPRouteMatch missing","text":"

      Consider a 150rps rate limit set on requests to GET /toys/special. Such specific application endpoint is covered by the first HTTPRouteRule in the HTTPRoute (as a subset of GET or POST to any path that starts with /toys). However, to avoid binding limits to HTTPRouteRules that are more permissive than the actual intended scope of the limit, the RateLimitPolicy controller requires trigger matches to find identical matching rules explicitly defined amongst the sets of HTTPRouteMatches of the HTTPRouteRules potentially targeted.

      As a consequence, by simply defining a trigger match for GET /toys/special in the RLP, the GET|POST /toys* HTTPRouteRule will NOT be bound to the limit definition. In order to ensure the limit definition is properly bound to a routing rule that strictly covers the GET /toys/special application endpoint, first the user has to modify the spec of the HTTPRoute by adding an explicit HTTPRouteRule for this case:

      apiVersion: gateway.networking.k8s.io/v1alpha2\nkind: HTTPRoute\nmetadata:\n  name: toystore\n  namespace: toystore\nspec:\n  parentRefs:\n\n  - name: istio-ingressgateway\n    namespace: istio-system\n  hostnames:\n  - \"*.toystore.acme.com\"\n  rules:\n  - matches:\n    - path:\n        type: PathPrefix\n        value: \"/toys\"\n      method: GET\n    - path:\n        type: PathPrefix\n        value: \"/toys\"\n      method: POST\n    backendRefs:\n    - name: toystore\n      port: 80\n  - matches:\n    - path:\n        type: PathPrefix\n        value: \"/assets/\"\n    backendRefs:\n    - name: toystore\n      port: 80\n    filters:\n    - type: ResponseHeaderModifier\n      responseHeaderModifier:\n        set:\n        - name: Cache-Control\n          value: \"max-age=31536000, immutable\"\n  - matches: # new (more specific) HTTPRouteRule added\n    - path:\n        type: Exact\n        value: \"/toys/special\"\n      method: GET\n    backendRefs:\n    - name: toystore\n      port: 80\n

      After that, the RLP can target the new HTTPRouteRule strictly:

      apiVersion: kuadrant.io/v2beta1\nkind: RateLimitPolicy\nmetadata:\n  name: toystore-special-toys\n  namespace: toystore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: toystore\n  limits:\n    specialToys:\n      rates:\n\n      - limit: 150\n        unit: second\n      routeSelectors:\n      - matches: # matches the new HTTPRouteRule (i.e. GET /toys/special)\n        - path:\n            type: Exact\n            value: \"/toys/special\"\n          method: GET\n
      How is this RLP implemented under the hood?
      gateway_actions:\n\n- rules:\n  - paths: [\"/toys/special\"]\n    methods: [\"GET\"]\n    hosts: [\"*.toystore.acme.com\"]\n  configurations:\n  - generic_key:\n      descriptor_key: \"toystore/toystore-special-toys/specialToys\"\n      descriptor_value: \"1\"\n
      limits:\n\n- conditions:\n  - toystore/toystore-special-toys/specialToys == \"1\"\n  max_value: 150\n  seconds: 1\n  namespace: kuadrant\n
      "},{"location":"architecture/rfcs/0001-rlp-v2/#example-4-targeting-a-subset-of-an-httprouterule-httproutematch-found","title":"Example 4. Targeting a subset of an HTTPRouteRule - HTTPRouteMatch found","text":"

      This example is similar to Example 3. Consider the use case of setting a 150rpm rate limit on requests to GET /toys*.

      The targeted application endpoint is covered by the first HTTPRouteRule in the HTTPRoute (as a subset of GET or POST to any path that starts with /toys). However, unlike in the previous example where, at first, no HTTPRouteRule included an explicit HTTPRouteMatch for GET /toys/special, in this example the HTTPRouteMatch for the targeted application endpoint GET /toys* does exist explicitly in one of the HTTPRouteRules, thus the RateLimitPolicy controller would find no problem to bind the limit definition to the HTTPRouteRule. That would nonetheless cause a unexpected behavior of the limit triggered not strictly for GET /toys*, but also for POST /toys*.

      To avoid extending the scope of the limit beyond desired, with no extra \"soft\" conditions, again the user must modify the spec of the HTTPRoute, so an exclusive HTTPRouteRule exists for the GET /toys* application endpoint:

      apiVersion: gateway.networking.k8s.io/v1alpha2\nkind: HTTPRoute\nmetadata:\n  name: toystore\n  namespace: toystore\nspec:\n  parentRefs:\n\n  - name: istio-ingressgateway\n    namespace: istio-system\n  hostnames:\n  - \"*.toystore.acme.com\"\n  rules:\n  - matches: # first HTTPRouteRule split into two \u2013 one for GET /toys*, other for POST /toys*\n    - path:\n        type: PathPrefix\n        value: \"/toys\"\n      method: GET\n    backendRefs:\n    - name: toystore\n      port: 80\n  - matches:\n    - path:\n        type: PathPrefix\n        value: \"/toys\"\n      method: POST\n    backendRefs:\n    - name: toystore\n      port: 80\n  - matches:\n    - path:\n        type: PathPrefix\n        value: \"/assets/\"\n    backendRefs:\n    - name: toystore\n      port: 80\n    filters:\n    - type: ResponseHeaderModifier\n      responseHeaderModifier:\n        set:\n        - name: Cache-Control\n          value: \"max-age=31536000, immutable\"\n

      The RLP can then target the new HTTPRouteRule strictly:

      apiVersion: kuadrant.io/v2beta1\nkind: RateLimitPolicy\nmetadata:\n  name: toy-readers\n  namespace: toystore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: toystore\n  limits:\n    toyReaders:\n      rates:\n\n      - limit: 150\n        unit: second\n      routeSelectors:\n      - matches: # matches the new more specific HTTPRouteRule (i.e. GET /toys*)\n        - path:\n            type: PathPrefix\n            value: \"/toys\"\n          method: GET\n
      How is this RLP implemented under the hood?
      gateway_actions:\n\n- rules:\n  - paths: [\"/toys*\"]\n    methods: [\"GET\"]\n    hosts: [\"*.toystore.acme.com\"]\n  configurations:\n  - generic_key:\n      descriptor_key: \"toystore/toy-readers/toyReaders\"\n      descriptor_value: \"1\"\n
      limits:\n\n- conditions:\n  - toystore/toy-readers/toyReaders == \"1\"\n  max_value: 150\n  seconds: 1\n  namespace: kuadrant\n
      "},{"location":"architecture/rfcs/0001-rlp-v2/#example-5-one-limit-triggered-by-multiple-httprouterules","title":"Example 5. One limit triggered by multiple HTTPRouteRules","text":"

      In this example, both HTTPRouteRules, i.e. GET|POST /toys* and /assets/*, are targeted by the same limit of 50rpm per username.

      Because the HTTPRoute has no other rule, this is technically equivalent to targeting the entire HTTPRoute and therefore similar to Example 1. However, if the HTTPRoute had other rules or got other rules added afterwards, this would ensure the limit applies only to the two original route rules.

      apiVersion: kuadrant.io/v2beta1\nkind: RateLimitPolicy\nmetadata:\n  name: toystore-per-user\n  namespace: toystore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: toystore\n  limits:\n    toysOrAssetsPerUsername:\n      rates:\n\n      - limit: 50\n        duration: 1\n        unit: minute\n      counters:\n      - auth.identity.username\n      routeSelectors:\n      - matches:\n        - path:\n            type: PathPrefix\n            value: \"/toys\"\n          method: GET\n        - path:\n            type: PathPrefix\n            value: \"/toys\"\n          method: POST\n      - matches:\n        - path:\n            type: PathPrefix\n            value: \"/assets/\"\n
      How is this RLP implemented under the hood?
      gateway_actions:\n\n- rules:\n  - paths: [\"/toys*\"]\n    methods: [\"GET\"]\n    hosts: [\"*.toystore.acme.com\"]\n  - paths: [\"/toys*\"]\n    methods: [\"POST\"]\n    hosts: [\"*.toystore.acme.com\"]\n  - paths: [\"/assets/*\"]\n    hosts: [\"*.toystore.acme.com\"]\n  configurations:\n  - generic_key:\n      descriptor_key: \"toystore/toystore-per-user/toysOrAssetsPerUsername\"\n      descriptor_value: \"1\"\n  - metadata:\n      descriptor_key: \"auth.identity.username\"\n      metadata_key:\n        key: \"envoy.filters.http.ext_authz\"\n        path:\n        - segment:\n            key: \"identity\"\n        - segment:\n            key: \"username\"\n
      limits:\n\n- conditions:\n  - toystore/toystore-per-user/toysOrAssetsPerUsername == \"1\"\n  variables:\n  - auth.identity.username\n  max_value: 50\n  seconds: 60\n  namespace: kuadrant\n
      "},{"location":"architecture/rfcs/0001-rlp-v2/#example-6-multiple-limit-definitions-targeting-the-same-httprouterule","title":"Example 6. Multiple limit definitions targeting the same HTTPRouteRule","text":"

      In case multiple limit definitions target a same HTTPRouteRule, all those limit definitions will be bound to the HTTPRouteRule. No limit \"shadowing\" will be be enforced by the RLP controller. Due to how things work as of today in Limitador nonetheless (i.e. the rule of the most restrictive limit wins), in some cases, across multiple limits triggered, one limit ends up \"shadowing\" others, depending on further qualification of the counters and the actual RL values.

      E.g., the following RLP intends to set 50rps per username on GET /toys*, and 100rps on POST /toys* or /assets/*:

      apiVersion: kuadrant.io/v2beta1\nkind: RateLimitPolicy\nmetadata:\n  name: toystore-per-endpoint\n  namespace: toystore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: toystore\n  limits:\n    readToys:\n      rates:\n\n      - limit: 50\n        unit: second\n      counters:\n      - auth.identity.username\n      routeSelectors:\n      - matches: # matches the 1st HTTPRouteRule (i.e. GET or POST to /toys*)\n        - path:\n            type: PathPrefix\n            value: \"/toys\"\n          method: GET\n\n    postToysOrAssets:\n      rates:\n\n      - limit: 100\n        unit: second\n      routeSelectors:\n      - matches: # matches the 1st HTTPRouteRule (i.e. GET or POST to /toys*)\n        - path:\n            type: PathPrefix\n            value: \"/toys\"\n          method: POST\n      - matches: # matches the 2nd HTTPRouteRule (i.e. /assets/*)\n        - path:\n            type: PathPrefix\n            value: \"/assets/\"\n
      How is this RLP implemented under the hood?
      gateway_actions:\n\n- rules:\n  - paths: [\"/toys*\"]\n    methods: [\"GET\"]\n    hosts: [\"*.toystore.acme.com\"]\n  - paths: [\"/toys*\"]\n    methods: [\"POST\"]\n    hosts: [\"*.toystore.acme.com\"]\n  configurations:\n  - generic_key:\n      descriptor_key: \"toystore/toystore-per-endpoint/readToys\"\n      descriptor_value: \"1\"\n  - metadata:\n      descriptor_key: \"auth.identity.username\"\n      metadata_key:\n        key: \"envoy.filters.http.ext_authz\"\n        path:\n        - segment:\n            key: \"identity\"\n        - segment:\n            key: \"username\"\n- rules:\n  - paths: [\"/toys*\"]\n    methods: [\"GET\"]\n    hosts: [\"*.toystore.acme.com\"]\n  - paths: [\"/toys*\"]\n    methods: [\"POST\"]\n    hosts: [\"*.toystore.acme.com\"]\n  - paths: [\"/assets/*\"]\n    hosts: [\"*.toystore.acme.com\"]\n  configurations:\n  - generic_key:\n      descriptor_key: \"toystore/toystore-per-endpoint/readToys\"\n      descriptor_value: \"1\"\n  - generic_key:\n      descriptor_key: \"toystore/toystore-per-endpoint/postToysOrAssets\"\n      descriptor_value: \"1\"\n
      limits:\n\n- conditions: # actually applies to GET|POST /toys*\n  - toystore/toystore-per-endpoint/readToys == \"1\"\n  variables:\n  - auth.identity.username\n  max_value: 50\n  seconds: 1\n  namespace: kuadrant\n- conditions: # actually applies to GET|POST /toys* and /assets/*\n  - toystore/toystore-per-endpoint/postToysOrAssets == \"1\"\n  max_value: 100\n  seconds: 1\n  namespace: kuadrant\n

      This example was only written in this way to highlight that it is possible that multiple limit definitions select a same HTTPRouteRule. To avoid over-limiting between GET|POST /toys* and thus ensure the originally intended limit definitions for each of these routes apply, the HTTPRouteRule should be split into two, like done in Example 4.

      "},{"location":"architecture/rfcs/0001-rlp-v2/#example-7-limits-triggered-for-specific-hostnames","title":"Example 7. Limits triggered for specific hostnames","text":"

      In the previous examples, the limit definitions and therefore the counters were set indistinctly for all hostnames \u2013 i.e. no matter if the request is sent to games.toystore.acme.com or dolls.toystore.acme.com, the same counters are expected to be affected. In this example on the other hand, a 1000rpd rate limit is set for requests to /assets/* only when the hostname matches games.toystore.acme.com.

      First, the user needs to edit the HTTPRoute to make the targeted hostname games.toystore.acme.com explicit:

      apiVersion: gateway.networking.k8s.io/v1alpha2\nkind: HTTPRoute\nmetadata:\n  name: toystore\n  namespace: toystore\nspec:\n  parentRefs:\n\n  - name: istio-ingressgateway\n    namespace: istio-system\n  hostnames:\n  - \"*.toystore.acme.com\"\n  - games.toystore.acme.com # new (more specific) hostname added\n  rules:\n  - matches:\n    - path:\n        type: PathPrefix\n        value: \"/toys\"\n      method: GET\n    - path:\n        type: PathPrefix\n        value: \"/toys\"\n      method: POST\n    backendRefs:\n    - name: toystore\n      port: 80\n  - matches:\n    - path:\n        type: PathPrefix\n        value: \"/assets/\"\n    backendRefs:\n    - name: toystore\n      port: 80\n    filters:\n    - type: ResponseHeaderModifier\n      responseHeaderModifier:\n        set:\n        - name: Cache-Control\n          value: \"max-age=31536000, immutable\"\n

      After that, the RLP can target specifically the newly added hostname:

      apiVersion: kuadrant.io/v2beta1\nkind: RateLimitPolicy\nmetadata:\n  name: toystore-per-hostname\n  namespace: toystore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: toystore\n  limits:\n    games:\n      rates:\n\n      - limit: 1000\n        unit: day\n      routeSelectors:\n      - matches:\n        - path:\n            type: PathPrefix\n            value: \"/assets/\"\n        hostnames:\n        - games.toystore.acme.com\n
      How is this RLP implemented under the hood?
      gateway_actions:\n\n- rules:\n  - paths: [\"/assets/*\"]\n    hosts: [\"games.toystore.acme.com\"]\n  configurations:\n  - generic_key:\n      descriptor_key: \"toystore/toystore-per-hostname/games\"\n      descriptor_value: \"1\"\n
      limits:\n\n- conditions:\n  - toystore/toystore-per-hostname/games == \"1\"\n  max_value: 1000\n  seconds: 86400 # 1 day\n  namespace: kuadrant\n
      "},{"location":"architecture/rfcs/0001-rlp-v2/#example-8-targeting-the-gateway","title":"Example 8. Targeting the Gateway","text":"

      Note: Additional meaning and context may be given to this use case in the future, when discussing defaults and overrides.

      Targeting a Gateway is a shortcut to targeting all individual HTTPRoutes referencing the gateway as parent. This differs from Example 1 nonetheless because, by targeting the gateway rather than an individual HTTPRoute, the RLP applies automatically to all HTTPRoutes pointing to the gateway, including routes created before and after the creation of the RLP. Moreover, all those routes will share the same limit counters specified in the RLP.

      apiVersion: kuadrant.io/v2beta1\nkind: RateLimitPolicy\nmetadata:\n  name: gw-rl\n  namespace: istio-ingressgateway\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: Gateway\n    name: istio-ingressgateway\n  limits:\n    base:\n\n    - rates:\n      - limit: 5\n        unit: second\n
      How is this RLP implemented under the hood?
      gateway_actions:\n\n- rules:\n  - paths: [\"/toys*\"]\n    methods: [\"GET\"]\n    hosts: [\"*.toystore.acme.com\"]\n  - paths: [\"/toys*\"]\n    methods: [\"POST\"]\n    hosts: [\"*.toystore.acme.com\"]\n  - paths: [\"/assets/*\"]\n    hosts: [\"*.toystore.acme.com\"]\n  configurations:\n  - generic_key:\n      descriptor_key: \"istio-system/gw-rl/base\"\n      descriptor_value: \"1\"\n
      limits:\n\n- conditions:\n  - istio-system/gw-rl/base == \"1\"\n  max_value: 5\n  seconds: 1\n  namespace: TDB\n
      "},{"location":"architecture/rfcs/0001-rlp-v2/#comparison-to-current-ratelimitpolicy","title":"Comparison to current RateLimitPolicy","text":"Current New Reason 1:1 relation between Limit (the object) and the actual Rate limit (the value) (spec.rateLimits.limits) Rate limit becomes a detail of Limit where each limit may define one or more rates (1:N) (spec.limits.<limit-name>.rates)
      • It allows to reuse when conditions and counters for groups of rate limits
      Parsed spec.rateLimits.limits.conditions field, directly exposing the Limitador's API Structured spec.limits.<limit-name>.when condition field composed of 3 well-defined properties: selector, operator and value
      • Feels more K8s-native
      • Consistent with github.com/kuadrant/authorino/api/v1beta1#JSONPatternExpression
      • No need for a parser (only if implemented by Limitador)
      spec.rateLimits.configurations as a list of \"variables assignments\" and direct exposure of Envoy's RL descriptor actions API Descriptor actions composed from selectors used in the limit definitions (spec.limits.<limit-name>.when.selector and spec.limits.<limit-name>.counters) plus a fixed identifier of the route rules (spec.limits.<limit-name>.routeSelectors)
      • Abstract the Envoy-specific concepts of \"actions\" and \"descriptors\"
      • No risk of mismatching descriptors keys between \"actions\" and actual usage in the limits
      • No user-defined generic descriptors (e.g. \"limited = 1\")
      • Source value of the selectors defined from an implicit \"context\" data structure
      Key-value descriptors Structured descriptors referring to a contextual well-known data structure
      • Consistent with Authorino's Authorization JSON (#context)
      Limitador conditions independent from the route rules Artificial Limitador condition injected to bind routes and corresponding limits
      • Ensure the limit is enforced only for corresponding selected HTTPRouteRules
      translate(spec.rateLimits.rules) \u2282 httproute.spec.rules spec.limits.<limit-name>.routeSelectors.matches \u2286 httproute.spec.rules.matches
      • HTTPRouteRule selector (via HTTPRouteMatch subset)
      • Gateway API language
      • Preparation for inherited policies and defaults & overrides
      spec.rateLimits.limits.seconds spec.limits.<limit-name>.rates.duration and spec.limits.<limit-name>.rates.unit
      • Support for more units beyond seconds
      • duration: 1 by default
      spec.rateLimits.limits.variables spec.limits.<limit-name>.counters
      • Improved (more specific) naming
      spec.rateLimits.limits.maxValue spec.limits.<limit-name>.rates.limit
      • Improved (more generic) naming
      "},{"location":"architecture/rfcs/0001-rlp-v2/#reference-level-explanation","title":"Reference-level explanation","text":"

      By completely dropping out the configurations field from the RLP, composing the RL descriptor actions is now done based essentially on the selectors listed in the when conditions and the counters, plus an artificial condition used to bind the HTTPRouteRules to the corresponding limits to trigger in Limitador.

      The descriptor actions composed from the selectors in the \"soft\" when conditions and counter qualifiers originate from the direct references these selectors make to paths within a well-known data structure that stores information about the context (HTTP request and ext-authz filter). These selectors in \"soft\" when conditions and counter qualifiers are thereby called well-known selectors.

      Other descriptor actions might be composed by the RLP controller to define additional RL conditions to bind HTTPRouteRules and corresponding limits.

      "},{"location":"architecture/rfcs/0001-rlp-v2/#well-known-selectors","title":"Well-known selectors","text":"

      Each selector used in a when condition or counter qualifier is a direct reference to a path within a well-known data structure that stores information about the context (L4 and L7 data of the original request handled by the proxy), as well as auth data (dynamic metadata occasionally exported by the external authorization filter and injected by the proxy into the rate-limit filter).

      The well-known data structure for building RL descriptor actions resembles Authorino's \"Authorization JSON\", whose context component consists of Envoy's AttributeContext type of the external authorization API (marshalled as JSON). Compared to the more generic RateLimitRequest struct, the AttributeContext provides a more structured and arguibly more intuitive relation between the data sources for the RL descriptors actions and their corresponding key names through which the values are referred within the RLP, in a context of predominantly serving for HTTP applications.

      To keep compatibility with the Envoy Rate Limit API, the well-known data structure can optionally be extended with the RateLimitRequest, thus resulting in the following final structure.

      context: # Envoy's Ext-Authz `CheckRequest.AttributeContext` type\n  source:\n    address: \u2026\n    service: \u2026\n    \u2026\n  destination:\n    address: \u2026\n    service: \u2026\n    \u2026\n  request:\n    http:\n      host: \u2026\n      path: \u2026\n      method: \u2026\n      headers: {\u2026}\n\nauth: # Dynamic metadata exported by the external authorization service\n\nratelimit: # Envoy's Rate Limit `RateLimitRequest` type\n  domain: \u2026 # generated by the Kuadrant controller\n  descriptors: {\u2026} # descriptors configured by the user directly in the proxy (not generated by the Kuadrant controller, if allowed)\n  hitsAddend: \u2026 # only in case we want to allow users to refer to this value in a policy\n
      "},{"location":"architecture/rfcs/0001-rlp-v2/#mechanics-of-generating-rl-descriptor-actions","title":"Mechanics of generating RL descriptor actions","text":"

      From the perspective of a user who writes a RLP, the selectors used in then when and counters fields are paths to the well-known data structure (see Well-known selectors). While desiging a policy, the user intuitively pictures the well-known data structure and states each limit definition having in mind the possible values assumed by each of those paths in the data plane. For example,

      The user story:

      Each distinct user (auth.identity.username) can send no more than 1rps to the same HTTP path (context.request.http.path).

      ...materializes as the following RLP:

      apiVersion: kuadrant.io/v2beta1\nkind: RateLimitPolicy\nmetadata:\n  name: toystore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: toystore\n  limits:\n    dolls:\n      rates:\n\n      - limit: 1\n        unit: second\n      counters:\n      - auth.identity.username\n      - context.request.http.path\n

      The following selectors are to be interpreted by the RLP controller:

      • auth.identity.username
      • context.request.http.path

      The RLP controller uses a map to translate each selector into its corresponding descriptor action. (Roughly described:)

      context.source.address    \u2192 source_cluster(...) # TBC\ncontext.source.service    \u2192 source_cluster(...) # TBC\ncontext.destination...    \u2192 destination_cluster(...)\ncontext.destination...    \u2192 destination_cluster(...)\ncontext.request.http.<X>  \u2192 request_headers(header_name: \":<X>\")\ncontext.request...        \u2192 ...\nauth.<X>                  \u2192 metadata(key: \"envoy.filters.http.ext_authz\", path: <X>)\nratelimit.domain          \u2192 <hostname>\n

      ...to yield effectively:

      rate_limits:\n\n- actions:\n  - metadata:\n      descriptor_key: \"auth.identity.username\"\n      metadata_key:\n        key: \"envoy.filters.http.ext_authz\"\n        path:\n        - segment:\n            key: \"identity\"\n        - segment:\n            key: \"username\"\n  - request_headers:\n      descriptor_key: \"context.request.http.path\"\n      header_name: \":path\"\n
      "},{"location":"architecture/rfcs/0001-rlp-v2/#artificial-limitador-condition-for-routeselectors","title":"Artificial Limitador condition for routeSelectors","text":"

      For each limit definition that explicitly or implicitly defines a routeSelectors field, the RLP controller will generate an artificial Limitador condition that ensures that the limit applies only when the filterred rules are honoured when serving the request. This can be implemented with a 2-step procedure:

      1. generate an unique identifier of the limit - i.e. <policy-namespace>/<policy-name>/<limit-name>
      2. associate a generic_key type descriptor action with each HTTPRouteRule targeted by the limit \u2013 i.e. { descriptor_key: <unique identifier of the limit>, descriptor_value: \"1\" }.

      For example, given the following RLP:

      apiVersion: kuadrant.io/v2beta1\nkind: RateLimitPolicy\nmetadata:\n  name: toystore-non-admin-users\n  namespace: toystore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: toystore\n  limits:\n    toys:\n      routeSelectors:\n\n      - matches:\n        - path:\n            type: PathPrefix\n            value: \"/toys\"\n          method: GET\n        - path:\n            type: PathPrefix\n            value: \"/toys\"\n          method: POST\n      rates:\n      - limit: 50\n        duration: 1\n        unit: minute\n      when:\n      - selector: auth.identity.group\n        operator: neq\n        value: admin\n\n    assets:\n      routeSelectors:\n\n      - matches:\n        - path:\n            type: PathPrefix\n            value: \"/assets/\"\n      rates:\n      - limit: 5\n        duration: 1\n        unit: minute\n      when:\n      - selector: auth.identity.group\n        operator: neq\n        value: admin\n

      Apart from the following descriptor action associated with both routes:

      - metadata:\n    descriptor_key: \"auth.identity.group\"\n    metadata_key:\n      key: \"envoy.filters.http.ext_authz\"\n      path:\n      - segment:\n          key: \"identity\"\n      - segment:\n          key: \"group\"\n

      ...and its corresponding Limitador condition:

      auth.identity.group != \"admin\"\n

      The following additional artificial descriptor actions will be generated:

      # associated with route rule GET|POST /toys*\n\n- generic_key:\n    descriptor_key: \"toystore/toystore-non-admin-users/toys\"\n    descriptor_value: \"1\"\n\n# associated with route rule /assets/*\n\n- generic_key:\n    descriptor_key: \"toystore/toystore-non-admin-users/assets\"\n    descriptor_value: \"1\"\n

      ...and their corresponding Limitador conditions.

      In the end, the following Limitador configuration is yielded:

      - conditions:\n  - toystore/toystore-non-admin-users/toys == \"1\"\n  - auth.identity.group != \"admin\"\n  max_value: 50\n  seconds: 60\n  namespace: kuadrant\n\n\n- conditions:\n  - toystore/toystore-non-admin-users/assets == \"1\"\n  - auth.identity.group != \"admin\"\n  max_value: 5\n  seconds: 60\n  namespace: kuadrant\n
      "},{"location":"architecture/rfcs/0001-rlp-v2/#support-in-wasm-shim-and-envoy-rl-api","title":"Support in wasm shim and Envoy RL API","text":"

      This proposal tries to keep compatibility with the Envoy API for rate limit and does not introduce any new requirement that otherwise would require the use of wasm shim to be implemented.

      In the case of implementation of this proposal in the wasm shim, all types of matchers supported by the HTTPRouteMatch type of Gateway API must be also supported in the rate_limit_policies.gateway_actions.rules field of the wasm plugin configuration. These include matchers based on path (prefix, exact), headers, query string parameters and method.

      "},{"location":"architecture/rfcs/0001-rlp-v2/#drawbacks","title":"Drawbacks","text":"

      HTTPRoute editing occasionally required Need to duplicate rules that don't explicitly include a matcher wanted for the policy, so that matcher can be added as a special case for each of those rules.

      Risk of over-targeting Some HTTPRouteRules might need to be split into more specific ones so a limit definition is not bound to beyond intended (e.g. target method: GET when the route matches method: POST|GET).

      Prone to consistency issues Typos and updates to the HTTPRoute can easily cause a mismatch and invalidate a RLP.

      Two types of conditions \u2013 routeSelectors and when conditions Although with different meanings (evaluates in the gateway vs. evaluated in Limitador) and meant for expressing different types of rules (HTTPRouteRule selectors vs. \"soft\" conditions based on attributes not related to the HTTP request), users might still perceive these as two ways of expressing conditions and find difficult to understand at first that \"soft\" conditions do not accept expressions related to attributes of the HTTP request.

      "},{"location":"architecture/rfcs/0001-rlp-v2/#rationale-and-alternatives","title":"Rationale and alternatives","text":""},{"location":"architecture/rfcs/0001-rlp-v2/#targeting-full-httprouterules","title":"Targeting full HTTPRouteRules","text":"

      Requiring users to specify full HTTPRouteRule matches in the RLP (as opposed to any subset of HTTPRoureMatches of targeted HTTPRouteRules \u2013 current proposal) contains some of the same drawbacks of this proposal, such as HTTPRoute editing occasionally required and prone to consistency issues. If, on one hand, it eliminates the risk of over-targeting, on the other hand, it does it at the cost of requiring excessively verbose policies written by the users, to the point of sometimes expecting user to have to specify trigger matching rules that are significantly more than what's originally and strictly intended.

      E.g.:

      On a HTTPRoute that contains the following HTTPRouteRules (simplified representation):

      { header: x-canary=true } \u2192 backend-canary\n{ * } \u2192 backend-rest\n

      Where the user wants to define a RLP that targets { method: POST }. First, the user needs to edit the HTTPRoute and duplicate the HTTPRouteRules:

      { header: x-canary=true, method: POST } \u2192 backend-canary\n{ header: x-canary=true } \u2192 backend-canary\n{ method: POST } \u2192 backend-rest\n{ * } \u2192 backend-rest\n

      Then, user needs to include the following trigger in the RLP so only full HTTPRouteRules are specified:

      { header: x-canary=true, method: POST }\n{ method: POST }\n

      The first matching rule of the trigger (i.e. { header: x-canary=true, method: POST }) is beoynd the original user intent of targeting simply { method: POST }.

      This issue can be even more concerning in the case of targeting gateways with multiple child HTTPRoutes. All the HTTPRoutes would have to be fixed and the HTTPRouteRules that cover for all the cases in all HTTPRoutes listed in the policy targeting the gateway.

      "},{"location":"architecture/rfcs/0001-rlp-v2/#all-limit-definitions-apply-vs-limit-shadowing","title":"All limit definitions apply vs. Limit \"shadowing\"","text":"

      The proposed binding between limit definition and HTTPRouteRules that trigger the limits was thought so multiple limit definitions can be bound to a same HTTPRouteRule that triggers those limits in Limitador. That means that no limit definition will \"shadow\" another at the level of the RLP controller, i.e. the RLP controller will honour the intended binding according to the selectors specified in the policy.

      Due to how things work as of today in Limitador nonetheless, i.e., the rule of the most restrictive limit wins, and because all limit definitions triggered by a given shared HTTPRouteRule, it might be the case that, across multiple limits triggered, one limit ends up \"shadowing\" other limits. However, that is by implementation of Limitador and therefore beyond the scope of the API.

      An alternative to the approach of allowing all limit definitions to be bound to a same selected HTTPRouteRules would be enforcing that, amongst multiple limit definitions targeting a same HTTPRouteRule, only the first of those limits definitions is bound to the HTTPRouteRule. This alternative approach effectively would cause the first limit to \"shadow\" any other on that particular HTTPRouteRule, as by implementation of the RLP controller (i.e., at API level).

      While the first approach causes an artificial Limitador condition of the form <policy-ns>/<policy-name>/<limit-name> == \"1\", the alternative approach (\"limit shadowing\") could be implemented by generating a descriptor of the following form instead: ratelimit.binding == \"<policy-ns>/<policy-name>/<limit-name>\".

      The downside of allowing multiple bindings to the same HTTPRouteRule is that all limits apply in Limitador, thus making status report frequently harder. The most restritive rate limit strategy implemented by Limitador might not be obvious to users who set multiple limit definitions and will require additional information reported back to the user about the actual status of the limit definitions stated in a RLP. On the other hand, it allows enables use cases of different limit definitions that vary on the counter qualifiers, additional \"soft\" conditions, or actual rate limit values to be triggered by a same HTTPRouteRule.

      "},{"location":"architecture/rfcs/0001-rlp-v2/#writing-soft-when-conditions-based-on-attributes-of-the-http-request","title":"Writing \"soft\" when conditions based on attributes of the HTTP request","text":"

      As a first step, users will not be able to write \"soft\" when conditions to selective apply rate limit definitions based on attributes of the HTTP request that otherwise could be specified using the routeSelectors field of the RLP instead.

      On one hand, using when conditions for route filtering would make it easy to define limits when the HTTPRoute cannot be modified to include the special rule. On the other hand, users would miss information in the status. An HTTPRouteRule for GET|POST /toys*, for example, that is targeted with an additional \"soft\" when condition that specifies that the method must be equal to GET and the path exactly equal to /toys/special (see Example 3) would be reported as rate limited with extra details that this is in fact only for GET /toys/special. For small deployments, this might be considered acceptable; however it would easily explode to unmanageable number of cases for deployments with only a few limit definitions and HTTPRouteRules.

      Moreover, by not specifying a more strict HTTPRouteRule for GET /toys/special, the RLP controller would bind the limit definition to other rules that would cause the rate limit filter to invoke the rate limit service (Limitador) for cases other than strictly GET /toys/special. Even if the rate limits would still be ensured to apply in Limitador only for GET /toys/special (due to the presence of a hypothetical \"soft\" when condition), an extra no-op hop to the rate limit service would happen. This is avoided with the current imposed limitation.

      Example of \"soft\" when conditions for rate limit based on attributes of the HTTP request (NOT SUPPORTED):

      apiVersion: kuadrant.io/v2beta1\nkind: RateLimitPolicy\nmetadata:\n  name: toystore-special-toys\n  namespace: toystore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: toystore\n  limits:\n    specialToys:\n      rates:\n\n      - limit: 150\n        unit: second\n      routeSelectors:\n      - matches: # matches the original HTTPRouteRule GET|POST /toys*\n        - path:\n            type: PathPrefix\n            value: \"/toys\"\n          method: GET\n      when:\n      - selector: context.request.http.method # cannot omit this selector or POST /toys/special would also be rate limited\n        operator: eq\n        value: GET\n      - selector: context.request.http.path\n        operator: eq\n        value: /toys/special\n
      How is this RLP would be implemented under the hood if supported?
      gateway_actions:\n\n- rules:\n  - paths: [\"/toys*\"]\n    methods: [\"GET\"]\n    hosts: [\"*.toystore.acme.com\"]\n  - paths: [\"/toys*\"]\n    methods: [\"POST\"]\n    hosts: [\"*.toystore.acme.com\"]\n  configurations:\n  - generic_key:\n      descriptor_key: \"toystore/toystore-special-toys/specialToys\"\n      descriptor_value: \"1\"\n  - request_headers:\n      descriptor_key: \"context.request.http.method\"\n      header_name: \":method\"\n  - request_headers:\n      descriptor_key: \"context.request.http.path\"\n      header_name: \":path\"\n
      limits:\n\n- conditions:\n  - toystore/toystore-special-toys/specialToys == \"1\"\n  - context.request.http.method == \"GET\"\n  - context.request.http.path == \"/toys/special\"\n  max_value: 150\n  seconds: 1\n  namespace: kuadrant\n
      "},{"location":"architecture/rfcs/0001-rlp-v2/#possible-variations-for-the-selectors-conditions-and-counter-qualifiers","title":"Possible variations for the selectors (conditions and counter qualifiers)","text":"

      The main drivers behind the proposed design for the selectors (conditions and counter qualifiers), based on (i) structured condition expressions composed of fields selector, operator, and value, and (ii) when conditions and counters separated in two distinct fields (variation \"C\" below), are:

      1. consistency with the Authorino AuthConfig API, which also specifies when conditions expressed in selector, operator, and value fields;
      2. explicit user intent, without subtle distinction of meaning based on presence of optional fields.

      Nonetheless here are a few alternative variations to consider:

      Structured condition expressions Parsed condition expressions Single field A
      \nselectors:\n\n  - selector: context.request.http.method\n    operator: eq\n    value: GET\n  - selector: auth.identity.username
      B
      \nselectors:\n  - context.request.http.method == \"GET\"\n  - auth.identity.username
      Distinct fields C \u2b50\ufe0f
      \nwhen:\n  - selector: context.request.http.method\n    operator: eq\n    value: GET\ncounters:\n  - auth.identity.username
      D
      \nwhen:\n  - context.request.http.method == \"GET\"\ncounters:\n  - auth.identity.username

      \u2b50\ufe0f Variation adopted for the examples and (so far) final design proposal.

      "},{"location":"architecture/rfcs/0001-rlp-v2/#prior-art","title":"Prior art","text":"

      Most implementations currently orbiting around Gateway API (e.g. Istio, Envoy Gateway, etc) for added RL functionality seem to have been leaning more to the direct route extension pattern instead of Policy Attachment. That might be an option particularly suitable for gateway implementations (gateway providers) and for those aiming to avoid dealing with defaults and overrides.

      "},{"location":"architecture/rfcs/0001-rlp-v2/#unresolved-questions","title":"Unresolved questions","text":"
      1. In case a limit definition lists route selectors such that some can be bound to HTTPRouteRules and some cannot (see Example 6), do we bind the valid route selectors and ignore the invalid ones or the limit definition is invalid altogether and bound to no HTTPRouteRule at all? A: By allowing multiple limit definitions to target a same HTTPRouteRule, the issue here stated will become less often. For the other cases where a limit definition still fails to select an HTTPRouteRule (e.g. due to mismatching trigger matches), the limit definition is not considered invalid. Possibly the limit definitions is considered \"stale\" (or \"orphan\"), i.e., not bound to any HTTPRouteRule.
      2. What should we fill domain/namespace with, if no longer with the hostname? This can be useful for multi-tenancy. A: For now, the domain/namespace field of the RL configuration (Envoy and Limitador ends) will be filled with a fixed (configurable) string (e.g. \"kuadrant\"). This can change in future to better support multi-tenancy and/or other use cases where a total sharding of the limit definitions within a same instance of Kuadrant is desired.
      3. How do we support lists of hostnames in Limitador conditions (single counter)? Should we open an issue for a new in operator? A: Not needed. The hostnames must exist in the targeted object explicitly, just like any other routing rules intended to be targeted by a limit definition. By setting the explicit hostname in the targeted network object (Gateway or HTTPRoute), the also becomes a route rules available for \"hard\" trigger configuration.
      4. What \"soft\" condition operators do we need to support (e.g. eq, neq, exists, nexists, matches)?
      5. Do we need special field to define shared counters across clusters/Limitador instances or that's to be solved at another layer (Limitador, Kuadrant CRDs, MCTC)?
      "},{"location":"architecture/rfcs/0001-rlp-v2/#future-possibilities","title":"Future possibilities","text":"
      • Port routeSelectors and the semantics around it to the AuthPolicy API (aka \"KAP v2\").
      • Defaults and overrides, either along the lines of architecture#4 or architecture#10.
      "},{"location":"architecture/rfcs/0002-well-known-attributes/","title":"Well-known Attributes","text":"
      • Feature Name: well-known-attributes
      • Start Date: 2023-06-13
      • RFC PR: Kuadrant/architecture#17
      • Issue tracking: Kuadrant/architecture#53
      "},{"location":"architecture/rfcs/0002-well-known-attributes/#summary","title":"Summary","text":"

      Define a well-known structure for users to declare request data selectors in their RateLimitPolicies and AuthPolicies. This structure is referred to as the Kuadrant Well-known Attributes.

      "},{"location":"architecture/rfcs/0002-well-known-attributes/#motivation","title":"Motivation","text":"

      The well-known attributes let users write policy rules \u2013 conditions and, in general, dynamic values that refer to attributes in the data plane - in a concise and seamless way.

      Decoupled from the policy CRDs, the well-known attributes:

      1. define a common language for referring to values of the data plane in the Kuadrant policies;
      2. allow dynamically evolving the policy APIs regarding how they admit references to data plane attributes;
      3. encompass all common and component-specific selectors for data plane attributes;
      4. have a single and unified specification, although this specification may occasionally link to additional, component-specific, external docs.
      "},{"location":"architecture/rfcs/0002-well-known-attributes/#guide-level-explanation","title":"Guide-level explanation","text":"

      One who writes a Kuadrant policy and wants to build policy constructs such as conditions, qualifiers, variables, etc, based on dynamic values of the data plane, must refer the attributes that carry those values, using the declarative language of Kuadrant's Well-known Attributes.

      A dynamic data plane value is typically a value of an attribute of the request or an Envoy Dynamic Metadata entry. It can be a value of the outer request being handled by the API gateway or proxy that is managed by Kuadrant (\"context request\") or an attribute of the direct request to the Kuadrant component that delivers the functionality in the data plane (rate-limiting or external auth).

      A Well-known Selector is a construct of a policy API whose value contains a direct reference to a well-known attribute. The language of the well-known attributes and therefore what one would declare within a well-known selector resembles a JSON path for navigating a possibly complex JSON object.

      Example 1. Well-known selector used in a condition

      apiGroup: examples.kuadrant.io\nkind: PaintPolicy\nspec:\n  rules:\n\n  - when:\n    - selector: auth.identity.group\n      operator: eq\n      value: admin\n    color: red\n

      In the example, auth.identity.group is a well-known selector of an attribute group, known to be injected by the external authorization service (auth) to describe the group the user (identity) belongs to. In the data plane, whenever this value is equal to admin, the abstract PaintPolicy policy states that the traffic must be painted red.

      Example 2. Well-known selector used in a variable

      apiGroup: examples.kuadrant.io\nkind: PaintPolicy\nspec:\n  rules:\n\n  - color: red\n    alpha:\n      dynamic: request.headers.x-color-alpha\n

      In the example, request.headers.x-color-alpha is a selector of a well-known attribute request.headers that gives access to the headers of the context HTTP request. The selector retrieves the value of the x-color-alpha request header to dynamically fill the alpha property of the abstract PaintPolicy policy at each request.

      "},{"location":"architecture/rfcs/0002-well-known-attributes/#reference-level-explanation","title":"Reference-level explanation","text":"

      The Well-known Attributes are a compilation inspired by some of the Envoy attributes and Authorino's Authorization JSON and its related JSON paths.

      From the Envoy attributes, only attributes that are available before establishing connection with the upstream server qualify as a Kuadrant well-known attribute. This excludes attributes such as the response attributes and the upstream attributes.

      As for the attributes inherited from Authorino, these are either based on Envoy's AttributeContext type of the external auth request API or from internal types defined by Authorino to fulfill the Auth Pipeline.

      These two subsets of attributes are unified into a single set of well-known attributes. For each attribute that exists in both subsets, the name of the attribute as specified in the Envoy attributes subset prevails. Example of such is request.id (to refer to the ID of the request) superseding context.request.http.id (as the same attribute is referred in an Authorino AuthConfig).

      The next sections specify the well-known attributes organized in the following groups:

      • Request attributes
      • Connection attributes
      • Metadata and filter state attributes
      • Auth attributes
      • Rate-limit attributes
      "},{"location":"architecture/rfcs/0002-well-known-attributes/#request-attributes","title":"Request attributes","text":"

      The following attributes are related to the context HTTP request that is handled by the API gateway or proxy managed by Kuadrant.

      Attribute

      Type

      Description

      Auth

      RL

      request.id

      String

      Request ID corresponding to x-request-id header value

      \u2713

      \u2713

      request.time

      Timestamp

      Time of the first byte received

      \u2713

      \u2713

      request.protocol

      String

      Request protocol (\u201cHTTP/1.0\u201d, \u201cHTTP/1.1\u201d, \u201cHTTP/2\u201d, or \u201cHTTP/3\u201d)

      \u2713

      \u2713

      request.scheme

      String

      The scheme portion of the URL e.g. \u201chttp\u201d

      \u2713

      \u2713

      request.host

      String

      The host portion of the URL

      \u2713

      \u2713

      request.method

      String

      Request method e.g. \u201cGET\u201d

      \u2713

      \u2713

      request.path

      String

      The path portion of the URL

      \u2713

      \u2713

      request.url_path

      String

      The path portion of the URL without the query string

      \u2713

      request.query

      String

      The query portion of the URL in the format of \u201cname1=value1&name2=value2\u201d

      \u2713

      \u2713

      request.headers

      Map<String, String>

      All request headers indexed by the lower-cased header name

      \u2713

      \u2713

      request.referer

      String

      Referer request header

      \u2713

      request.useragent

      String

      User agent request header

      \u2713

      request.size

      Number

      The HTTP request size in bytes. If unknown, it must be -1

      \u2713

      request.body

      String

      The HTTP request body. (Disabled by default. Requires additional proxy configuration to enabled it.)

      \u2713

      request.raw_body

      Array<Number>

      The HTTP request body in bytes. This is sometimes used instead of body depending on the proxy configuration.

      \u2713

      request.context_extensions

      Map<String, String>

      This is analogous to request.headers, however these contents are not sent to the upstream server. It provides an extension mechanism for sending additional information to the auth service without modifying the proto definition. It maps to the internal opaque context in the proxy filter chain. (Requires additional configuration in the proxy.)

      \u2713

      "},{"location":"architecture/rfcs/0002-well-known-attributes/#connection-attributes","title":"Connection attributes","text":"

      The following attributes are available once the downstream connection with the API gateway or proxy managed by Kuadrant is established. They apply to HTTP requests (L7) as well, but also to proxied connections limited at L3/L4.

      Attribute

      Type

      Description

      Auth

      RL

      source.address

      String

      Downstream connection remote address

      \u2713

      \u2713

      source.port

      Number

      Downstream connection remote port

      \u2713

      \u2713

      source.service

      String

      The canonical service name of the peer

      \u2713

      source.labels

      Map<String, String>

      The labels associated with the peer. These could be pod labels for Kubernetes or tags for VMs. The source of the labels could be an X.509 certificate or other configuration.

      \u2713

      source.principal

      String

      The authenticated identity of this peer. If an X.509 certificate is used to assert the identity in the proxy, this field is sourced from \u201cURI Subject Alternative Names\u201c, \u201cDNS Subject Alternate Names\u201c or \u201cSubject\u201c in that order. The format is issuer specific \u2013 e.g. SPIFFE format is spiffe://trust-domain/path, Google account format is https://accounts.google.com/{userid}.

      \u2713

      source.certificate

      String

      The X.509 certificate used to authenticate the identify of this peer. When present, the certificate contents are encoded in URL and PEM format.

      \u2713

      destination.address

      String

      Downstream connection local address

      \u2713

      \u2713

      destination.port

      Number

      Downstream connection local port

      \u2713

      \u2713

      destination.service

      String

      The canonical service name of the peer

      \u2713

      destination.labels

      Map<String, String>

      The labels associated with the peer. These could be pod labels for Kubernetes or tags for VMs. The source of the labels could be an X.509 certificate or other configuration.

      \u2713

      destination.principal

      String

      The authenticated identity of this peer. If an X.509 certificate is used to assert the identity in the proxy, this field is sourced from \u201cURI Subject Alternative Names\u201c, \u201cDNS Subject Alternate Names\u201c or \u201cSubject\u201c in that order. The format is issuer specific \u2013 e.g. SPIFFE format is spiffe://trust-domain/path, Google account format is https://accounts.google.com/{userid}.

      \u2713

      destination.certificate

      String

      The X.509 certificate used to authenticate the identify of this peer. When present, the certificate contents are encoded in URL and PEM format.

      \u2713

      connection.id

      Number

      Downstream connection ID

      \u2713

      connection.mtls

      Boolean

      Indicates whether TLS is applied to the downstream connection and the peer ceritificate is presented

      \u2713

      connection.requested_server_name

      String

      Requested server name in the downstream TLS connection

      \u2713

      connection.tls_session.sni

      String

      SNI used for TLS session

      \u2713

      connection.tls_version

      String

      TLS version of the downstream TLS connection

      \u2713

      connection.subject_local_certificate

      String

      The subject field of the local certificate in the downstream TLS connection

      \u2713

      connection.subject_peer_certificate

      String

      The subject field of the peer certificate in the downstream TLS connection

      \u2713

      connection.dns_san_local_certificate

      String

      The first DNS entry in the SAN field of the local certificate in the downstream TLS connection

      \u2713

      connection.dns_san_peer_certificate

      String

      The first DNS entry in the SAN field of the peer certificate in the downstream TLS connection

      \u2713

      connection.uri_san_local_certificate

      String

      The first URI entry in the SAN field of the local certificate in the downstream TLS connection

      \u2713

      connection.uri_san_peer_certificate

      String

      The first URI entry in the SAN field of the peer certificate in the downstream TLS connection

      \u2713

      connection.sha256_peer_certificate_digest

      String

      SHA256 digest of the peer certificate in the downstream TLS connection if present

      \u2713

      "},{"location":"architecture/rfcs/0002-well-known-attributes/#metadata-and-filter-state-attributes","title":"Metadata and filter state attributes","text":"

      The following attributes are related to the Envoy proxy filter chain. They include metadata exported by the proxy throughout the filters and information about the states of the filters themselves.

      Attribute

      Type

      Description

      Auth

      RL

      metadata

      Metadata

      Dynamic request metadata

      \u2713

      \u2713

      filter_state

      Map<String, String>

      Mapping from a filter state name to its serialized string value

      \u2713

      "},{"location":"architecture/rfcs/0002-well-known-attributes/#auth-attributes","title":"Auth attributes","text":"

      The following attributes are exclusive of the external auth service (Authorino).

      Attribute

      Type

      Description

      Auth

      RL

      auth.identity

      Any

      Single resolved identity object, post-identity verification

      \u2713

      auth.metadata

      Map<String, Any>

      External metadata fetched

      \u2713

      auth.authorization

      Map<String, Any>

      Authorization results resolved by each authorization rule, access granted only

      \u2713

      auth.response

      Map<String, Any>

      Response objects exported by the auth service post-access granted

      \u2713

      auth.callbacks

      Map<String, Any>

      Response objects returned by the callback requests issued by the auth service

      \u2713

      The auth service also supports modifying selected values by chaining modifiers in the path.

      "},{"location":"architecture/rfcs/0002-well-known-attributes/#rate-limit-attributes","title":"Rate-limit attributes","text":"

      The following attributes are exclusive of the rate-limiting service (Limitador).

      Attribute

      Type

      Description

      Auth

      RL

      ratelimit.domain

      String

      The rate limit domain. This enables the configuration to be namespaced per application (multi-tenancy).

      \u2713

      ratelimit.hits_addend

      Number

      Specifies the number of hits a request adds to the matched limit. Fixed value: `1`. Reserved for future usage.

      \u2713

      "},{"location":"architecture/rfcs/0002-well-known-attributes/#drawbacks","title":"Drawbacks","text":"

      The decoupling of the well-known attributes and the language of well-known attributes and selectors from the individual policy CRDs is what makes it somewhat flexible and common across the components (rate-limiting and auth). However, it's less structured and it introduces another syntax for users to get familiar with.

      This additional language competes with the language of the route selectors (RFC 0001), based on Gateway API's HTTPRouteMatch type.

      Being \"soft-coded\" in the policy specs (as opposed to a hard-coded sub-structure inside of each policy type) does not mean it's completely decoupled from implementation in the control plane and/or intermediary data plane components. Although many attributes can be supported almost as a pass-through, from being used in a selector in a policy, to a corresponding value requested by the wasm-shim to its host, that is not always the case. Some translation may be required for components not integrated via wasm-shim (e.g. Authorino), as well as for components integrated via wasm-shim (e.g. Limitador) in special cases of composite or abstraction well-known attributes (i.e. attributes not available as-is via ABI, e.g. auth.identity in a RLP). Either way, some validation of the values introduced by users in the selectors may be needed at some point in the control plane, thus requiring arguably a level of awaresness and coupling between the well-known selectors specification and the control plane (policy controllers) or intermediary data plane (wasm-shim) components.

      "},{"location":"architecture/rfcs/0002-well-known-attributes/#rationale-and-alternatives","title":"Rationale and alternatives","text":"

      As an alternative to JSON path-like selectors based on a well-known structure that induces the proposed language of well-known attributes, these same attributes could be defined as sub-types of each policy CRD. The Golang packages defining the common attributes across CRDs could be shared by the policy type definitions to reduce repetition. However, that approach would possibly involve a staggering number of new type definitions to cover all the cases for all the groups of attributes to be supported. These are constructs that not only need to be understood by the policy controllers, but also known by the user who writes a policy.

      Additionally, all attributes, including new attributes occasionally introduced by Envoy and made available to the wasm-shim via ABI, would always require translation from the user-level abstraction how it's represented in a policy, to the actual form how it's used in the wasm-shim configuration and Authorino AuthConfigs.

      Not implementing this proposal and keeping the current state of things mean little consistency between these common constructs for rules and conditions on how they are represented in each type of policy. This lack of consistency has a direct impact on the overhead faced by users to learn how to interact with Kuadrant and write different kinds of policies, as well as for the maintainers on tasks of coding for policy validation and reconciliation of data plane configurations.

      "},{"location":"architecture/rfcs/0002-well-known-attributes/#prior-art","title":"Prior art","text":"

      Authorino's dynamic JSON paths, related to Authorino's Authorization JSON and used in when conditions and inside of multiple other constructs of the AuthConfig, are an example of feature of very similar approach to the one proposed here.

      Arguably, Authorino's perceived flexibility would not have been possible with the Authorization JSON selectors. Users can write quite sophisticated policy rules (conditions, variable references, etc) by leveraging the those dynamic selectors. Because they are backed by JSON-based machinery in the code, Authorino's selectors have very little to, in some cases, none at all variation compared Open Policy Agent's Rego policy language, which is often used side by side in the same AuthConfigs.

      Authorino's Authorization JSON selectors are, in one hand, more restrict to the structure of the CheckRequest payload (context.* attributes). At the same time, they are very open in the part associated with the internal attributes built along the Auth Pipeline (i.e. auth.* attributes). That makes Authorino's Authorization JSON selectors more limited, compared to the Envoy attributes made available to the wasm-shim via ABI, but also harder to validate. In some cases, such as of deep references to inside objects fetched from external sources of metadata, resolved OPA objects, JWT claims, etc, it is impossible to validate for correct references.

      Another experience learned from Authorino's Authorization JSON selectors is that they depend substantially on the so-called \"modifiers\". Many use cases involving parsing and breaking down attributes that are originally available in a more complex form would not be possible without the modifiers. Examples of such cases are: extracting portions of the path and/or query string parameters (e.g. collection and resource identifiers), applying translations on HTTP verbs into corresponding operations, base64-decoding values from the context HTTP request, amongst several others.

      "},{"location":"architecture/rfcs/0002-well-known-attributes/#unresolved-questions","title":"Unresolved questions","text":"
      1. How to deal with the differences regarding the availability and data types of the attributes across clients/hosts?

      2. Can we make more attributes that are currently available to only one of the components common to both?

      3. Will we need some kind of global support for modifiers (functions) in the well-known selectors or those can continue to be an Authorino-only feature?

      4. Does Authorino, which is more strict regarding the data structure that induces the selectors, need to implement this specification or could/should it keep its current selectors and a translation be performed by the AuthPolicy controller?

      "},{"location":"architecture/rfcs/0002-well-known-attributes/#future-possibilities","title":"Future possibilities","text":"
      1. Extend with more well-known attributes that abstract common patterns and/or for rather opinioned use cases. Examples:
      2. auth.* attributes supported in the rate limit service
      3. request.authenticated
      4. request.operation.(read|write)
      5. request.param.my-param
      6. connection.secure

      7. Other Envoy attributes

      Wasm attributes

      Attribute

      Type

      Description

      Auth

      RL

      wasm.plugin_name

      String

      Plugin name

      \u2713

      wasm.plugin_root_id

      String

      Plugin root ID

      \u2713

      wasm.plugin_vm_id

      String

      Plugin VM ID

      \u2713

      wasm.node

      Node

      Local node description

      \u2713

      wasm.cluster_name

      String

      Upstream cluster name

      \u2713

      wasm.cluster_metadata

      Metadata

      Upstream cluster metadata

      \u2713

      wasm.listener_direction

      Number

      Enumeration value of the listener traffic direction

      \u2713

      wasm.listener_metadata

      Metadata

      Listener metadata

      \u2713

      wasm.route_name

      String

      Route name

      \u2713

      wasm.route_metadata

      Metadata

      Route metadata

      \u2713

      wasm.upstream_host_metadata

      Metadata

      Upstream host metadata

      \u2713

      Proxy configuration attributes

      Attribute

      Type

      Description

      Auth

      RL

      xds.cluster_name

      String

      Upstream cluster name

      \u2713

      xds.cluster_metadata

      Metadata

      Upstream cluster metadata

      \u2713

      xds.route_name

      String

      Route name

      \u2713

      xds.route_metadata

      Metadata

      Route metadata

      \u2713

      xds.upstream_host_metadata

      Metadata

      Upstream host metadata

      \u2713

      xds.filter_chain_name

      String

      Listener filter chain name

      \u2713

      1. Add some support for value modifiers (functions), along the lines of Authorino's JSON path modifiers and/or Envoy attributes' path expressions.
      "},{"location":"architecture/rfcs/0003-dns-policy/","title":"RFC Template","text":"
      • Feature Name: DNSPolicy
      • Start Date: 2023-07-01
      • RFC PR: Kuadrant/architecture#20
      • Issue tracking: Kuadrant/multicluster-gateway-controller#219
      • Labels: DNS, Load Balancing, Multi-Cluster
      "},{"location":"architecture/rfcs/0003-dns-policy/#summary","title":"Summary","text":"

      Provide a policy for configuring how DNS should be handed for a given gateway. Provide a mechanism for enabling DNS based load balancing.

      "},{"location":"architecture/rfcs/0003-dns-policy/#motivation","title":"Motivation","text":"

      Gateway admins, need a way to define the DNS policy for a multi-cluster gateway in order to control how much and which traffic reaches these gateways. Ideally we would allow them to express a strategy that they want to use without needing to get into the details of each provider and needing to create and maintain dns record structure and individual records for all the different gateways that may be within their infrastructure.

      "},{"location":"architecture/rfcs/0003-dns-policy/#guide-level-explanation","title":"Guide-level explanation","text":"

      Allow definition of a DNSPolicy that configures load balancing to decide how traffic should be distributed across multiple gateway instances from the central control plane.

      "},{"location":"architecture/rfcs/0003-dns-policy/#terms","title":"Terms","text":"
      • managed listener: This is a listener with a host backed by a DNS zone managed by the multi-cluster gateway controller
      • hub cluster: control plane cluster that managed 1 or more spokes
      • spoke cluster: a cluster managed by the hub control plane cluster. This is where gateway are instantiated

      Provide a control plane DNSPolicy API that uses the idea of direct policy attachment from gateway API that allows a load balancing strategy to be applied to the DNS records structure for any managed listeners being served by the data plane instances of this gateway. The DNSPolicy also covers health checks that inform the DNS response but that is not covered in this document.

      Below is a draft API for what we anticipate the DNSPolicy to look like

      apiVersion: kuadrant.io/v1alpha1\nkind: DNSPolicy\nspec:\n  targetRef: # defaults to gateway gvk and current namespace\n    name: gateway-name\n  health:\n   ...\n  loadBalancing:\n    weighted:\n     defaultWeight: 10\n     custom: #optional\n\n     - value: AWS  #optional with both GEO and weighted. With GEO the custom weight is applied to gateways within a Geographic region\n       weight: 10\n     - value: GCP\n       weight: 20\n    GEO: #optional\n      defaultGeo: IE # required with GEO. Chooses a default DNS response when no particular response is defined for a request from an unknown GEO.\n
      "},{"location":"architecture/rfcs/0003-dns-policy/#available-load-balancing-strategies","title":"Available Load Balancing Strategies","text":"

      GEO and Weighted load balancing are well understood strategies and this API effectively allow a complex requirement to be expressed relatively simply and executed by the gateway controller in the chosen DNS provider. Our default policy will execute a \"Round Robin\" weighted strategy which reflects the current default behaviour.

      With the above API we can provide weighted and GEO and weighted within a GEO. A weighted strategy with a minimum of a default weight is always required and the simplest type of policy. The multi-cluster gateway controller will set up a default policy when a gateway is discovered (shown below). This policy can be replaced or modified by the user. A weighted strategy can be complimented with a GEO strategy IE they can be used together in order to provide a GEO and weighted (within a GEO) load balancing. By defining a GEO section, you are indicating that you want to use a GEO based strategy (how this works is covered below).

      apiVersion: kuadrant.io/v1alpha1\nkind: DNSPolicy\nname: default-policy\nspec:\n  targetRef: # defaults to gateway gvk and current namespace\n    name: gateway-name\n  loadBalancing:\n    weighted: # required\n     defaultWeight: 10  #required, all records created get this weight\n  health:\n   ...   \n

      In order to provide GEO based DNS and allow customisation of the weighting, we need some additional information to be provided by the gateway / cluster admin about where this gateway has been placed. For example if they want to use GEO based DNS as a strategy, we need to know what GEO identifier(s) to use for each record we create and a default GEO to use as a catch-all. Also, if the desired load balancing approach is to provide custom weighting and no longer simply use Round Robin, we will need a way to identify which records to apply that custom weighting to based on the clusters the gateway is placed on.

      To solve this we will allow two new attributes to be added to the ManagedCluster resource as labels:

         kuadrant.io/lb-attribute-geo-code: \"IE\"\n   kuadrant.io/lb-attribute-custom-weight: \"GCP\"\n

      These two labels allow setting values in the DNSPolicy that will be reflected into DNS records for gateways placed on that cluster depending on the strategies used. (see the first DNSPolicy definition above to see how these values are used) or take a look at the examples at the bottom.

      example :

      apiVersion: cluster.open-cluster-management.io/v1\nkind: ManagedCluster\nmetadata:\n labels:\n   kuadrant.io/lb-attribute-geo-code: \"IE\"\n   kuadrant.io/lb-attribute-custom-weight: \"GCP\"\nspec:    \n

      The attributes provide the key and value we need in order to understand how to define records for a given LB address based on the DNSPolicy targeting the gateway.

      The kuadrant.io/lb-attribute-geo-code attribute value is provider specific, using an invalid code will result in an error status condition in the DNSrecord resource.

      "},{"location":"architecture/rfcs/0003-dns-policy/#dns-record-structure","title":"DNS Record Structure","text":"

      This is an advanced topic and so is broken out into its own proposal doc DNS Record Structure

      "},{"location":"architecture/rfcs/0003-dns-policy/#custom-weighting","title":"Custom Weighting","text":"

      Custom weighting will use the associated custom-weight attribute set on the ManagedCluster to decide which records should get a specific weight. The value of this attribute is up to the end user.

      example:

      apiVersion: cluster.open-cluster-management.io/v1\nkind: ManagedCluster\nmetadata:\n labels:\n   kuadrant.io/lb-attribute-custom-weight: \"GCP\"\n

      The above is then used in the DNSPolicy to set custom weights for the records associated with the target gateway.

          - value: GCP\n      weight: 20\n

      So any gateway targeted by a DNSPolicy with the above definition that is placed on a ManagedCluster with the kuadrant.io/lb-attribute-custom-weight set with a value of GCP will get an A record with a weight of 20

      "},{"location":"architecture/rfcs/0003-dns-policy/#status","title":"Status","text":"

      DNSPolicy should have a ready condition that reflect that the DNSRecords have been created and configured as expected. In the case that there is an invalid policy, the status message should reflect this and indicate to the user that the old DNS has been preserved.

      We will also want to add a status condition to the gateway status indicating it is effected by this policy. Gateway API recommends the following status condition

      - type: gateway.networking.k8s.io/PolicyAffected\n  status: True \n  message: \"DNSPolicy has been applied\"\n  reason: PolicyApplied\n  ...\n

      https://github.com/kubernetes-sigs/gateway-api/pull/2128/files#diff-afe84021d0647e83f420f99f5d18b392abe5ec82d68f03156c7534de9f19a30aR888

      "},{"location":"architecture/rfcs/0003-dns-policy/#example-policies","title":"Example Policies","text":""},{"location":"architecture/rfcs/0003-dns-policy/#round-robin-the-default-policy","title":"Round Robin (the default policy)","text":"
      apiVersion: kuadrant.io/v1alpha1\nkind: DNSPolicy\nname: RoundRobinPolicy\nspec:\n  targetRef: # defaults to gateway gvk and current namespace\n    name: gateway-name\n  loadBalancing:\n    weighted:\n     defaultWeight: 10\n
      "},{"location":"architecture/rfcs/0003-dns-policy/#geo-round-robin","title":"GEO (Round Robin)","text":"
      apiVersion: kuadrant.io/v1alpha1\nkind: DNSPolicy\nname: GEODNS\nspec:\n  targetRef: # defaults to gateway gvk and current namespace\n    name: gateway-name\n  loadBalancing:\n    weighted:\n     defaultWeight: 10\n    GEO:\n     defaultGeo: IE\n
      "},{"location":"architecture/rfcs/0003-dns-policy/#custom","title":"Custom","text":"
      apiVersion: kuadrant.io/v1alpha1\nkind: DNSPolicy\nname: SendMoreToAzure\nspec:\n  targetRef: # defaults to gateway gvk and current namespace\n    name: gateway-name\n  loadBalancing:\n    weighted:\n     defaultWeight: 10\n     custom:\n\n     - attribute: cloud\n       value: Azure #any record associated with a gateway on a cluster without this value gets the default\n       weight: 30\n
      "},{"location":"architecture/rfcs/0003-dns-policy/#geo-with-custom-weights","title":"GEO with Custom Weights","text":"
      apiVersion: kuadrant.io/v1alpha1\nkind: DNSPolicy\nname: GEODNSAndSendMoreToAzure\nspec:\n  targetRef: # defaults to gateway gvk and current namespace\n    name: gateway-name\n  loadBalancing:\n    weighted:\n     defaultWeight: 10\n     custom:\n\n     - attribute: cloud\n       value: Azure\n       weight: 30\n    GEO:\n      defaultGeo: IE\n
      "},{"location":"architecture/rfcs/0003-dns-policy/#reference-level-explanation","title":"Reference-level explanation","text":"
      • Add a DNSPolicy CRD that conforms to policy attachment spec
      • Add a new DNSPolicy controller to MCG
      • DNS logic and record management should all migrate out of the gateway controller into this new DNSPolicy controller as it is the responsibility and domain of the DNSPolicy controller to manage DNS
      • remove the Hosts interface as we want do not want other controllers using this to bring DNS Logic into other areas of the code.
      "},{"location":"architecture/rfcs/0003-dns-policy/#drawbacks","title":"Drawbacks","text":"

      You cannot have a different load balancing strategy for each listener within a gateway. So in the following gateway definition

      spec:\n    gatewayClassName: kuadrant-multi-cluster-gateway-instance-per-cluster\n    listeners:\n\n    - allowedRoutes:\n        namespaces:\n          from: All\n      hostname: myapp.hcpapps.net\n      name: api\n      port: 443\n      protocol: HTTPS\n    - allowedRoutes:\n        namespaces:\n          from: All\n      hostname: other.hcpapps.net\n      name: api\n      port: 443\n      protocol: HTTPS      \n

      The DNS policy targeting this gateway will apply to both myapp.hcpapps.net and other.hcpapps.net

      However, there is still significant value even with this limitation. This limitation is something we will likely revisit in the future

      "},{"location":"architecture/rfcs/0003-dns-policy/#background-docs","title":"Background Docs","text":"

      DNS Provider Support

      Direct Policy Attachment

      "},{"location":"architecture/rfcs/0003-dns-policy/#rationale-and-alternatives","title":"Rationale and alternatives","text":"

      An alternative is to configure all of this yourself manually in a dns provider. This can be a highly complex dns configuration that it would be easy to get wrong.

      "},{"location":"architecture/rfcs/0004-policy-status/","title":"Policy Status","text":"
      • Feature Name: policy_status_states
      • Start Date: 2023-02-03
      • RFC PR: Kuadrant/architecture#0009
      • Issue tracking: Kuadrant/architecture#0038
      "},{"location":"architecture/rfcs/0004-policy-status/#summary","title":"Summary","text":"

      This RFC proposes a new design for any Kuadrant Policy (RateLimitPolicy, AuthPolicy, etc..) status definition and transitions.

      "},{"location":"architecture/rfcs/0004-policy-status/#motivation","title":"Motivation","text":"

      At the time being, the RateLimitPolicy and AuthPolicy status doesn't clearly and truthfully communicate the actual state of reconciliation and healthiness with its operator managed services, i.e., the Rate Limit service (\"Limitador\") and the Auth service (\"Authorino\"), referred to as \"Kuadrant services\".

      As a consequence, misleading information is shared causing unexpected errors and flawed assumptions.

      The following are some issues reported in relation to the aforementioned problems:

      • https://github.com/Kuadrant/kuadrant-operator/issues/87
      • https://github.com/Kuadrant/kuadrant-operator/issues/96
      • https://github.com/Kuadrant/kuadrant-operator/issues/140
      "},{"location":"architecture/rfcs/0004-policy-status/#guide-level-explanation","title":"Guide-level explanation","text":"

      This design for setting the status of the Kuadrant policy CRs is divided in 2 stages, where each stage could be applied/developed in order and would reflect valuable and accurate information with different degrees of acuity.

      The Policy CRD Status in the following diagrams are simplified as states, which in the Reference-level explanation will be translated to the actual Status Conditions.

      "},{"location":"architecture/rfcs/0004-policy-status/#stage-1","title":"Stage 1","text":"

      State of the policy CR defined by: application, validation, and reconciliation of it

      The main signalization at Stage 1 is about whether a policy CR has been Accepted or not.

      States rationale:

      • Accepted: This state is reached after the Validation and Reconciliation event has being successfully passed.
      • Invalid: When the Validation process encounters an error, this state will be set.
      • TargetNotFound: This state will be set when the Reconciliation process encounters an error.
      • Conflicted: This state will be set when the Reconciliation process encounters an error.

      Notes:

      • States from the Stage 2 could be implemented as well, but only relying on Validation and Reconciliation events.
      "},{"location":"architecture/rfcs/0004-policy-status/#stage-2","title":"Stage 2","text":"

      Final state of the policy CR defined by: health check with the Kuadrant services (post-reconciliation)

      The Enforced type is introduced to capture the difference between a policy been reconciled and it's been enforced at the service.

      States rationale:

      • Enforced: After a successful response of the Service Probe, this states communicates the policy is finally enforced.
      • PartiallyEnforced: This state will be set when the Reconciliation event encounters an overlap with other policies.
      • Overridden: This state will be set when the Reconciliation event invalidates the policy because another one takes precedence.

      "},{"location":"architecture/rfcs/0004-policy-status/#reference-level-explanation","title":"Reference-level explanation","text":"

      In general, the new states and conditions align with GEP-713.

      Besides the proposed Accepted PolicyType, the Enforced PolicyType would be added to reflect the final state of the policy, which means that the policy is showing the synced actual state of the Kuadrant services.

      The missing Failed PolicyType would be implicitly represented by the TargetNotFound and Invalid PolicyTypeReason.

      "},{"location":"architecture/rfcs/0004-policy-status/#conditions","title":"Conditions","text":"

      All conditions are top-level.

      Type Status Reason Message Accepted True \"Accepted\" \"KuadrantPolicy has been accepted\" False \"Conflicted\" \"KuadrantPolicy is conflicted by [policy-ns/policy-name], ...\" False \"Invalid\" \"KuadrantPolicy is invalid\" False \"TargetNotFound\" \"KuadrantPolicy target [resource-name] was not found\" Enforced True \"Enforced\" \"KuadrantPolicy has been successfully enforced\" False \"Unknown\" \"KuadrantPolicy has encountered some issues\" False \"Overridden\" \"KuadrantPolicy is overridden by [policy-ns/policy-name], ...\"

      Messages corresponding falsey statuses are required and should reflect the error that encountered.

      It's possible to have the Failed state as a top level condition too. In this case, it might be useful to consider a third \"Unknown\" status.

      "},{"location":"architecture/rfcs/0004-policy-status/#policy-ancestor-status","title":"Policy ancestor status","text":"

      The Status stanza of the policy CRs must implement Gateway API's PolicyAncestorStatus struct. This will provide broader consistency and improved discoverability of effective policies.

      "},{"location":"architecture/rfcs/0004-policy-status/#implementation-detailsrequisites","title":"Implementation details/requisites","text":"

      Full implementation of Stage 2 states assumes reporting mechanisms in place, provided by the Kuadrant services, that allow tracing the state of the configurations applied on the services, back to the original policies, to infer the final state of the policy CRs (i.e. whether truly Enforced or not.)

      Without such, Stage 2 could be only partially achieved, by relying only on Reconciliation events.

      "},{"location":"architecture/rfcs/0004-policy-status/#drawbacks","title":"Drawbacks","text":"
      • This proposal will require to change the code controllers assert the status
      • Since the Status is part of the \"API\", won't be backwards compatible
      • Documentation updating
      • The implementation of the affected policies will create a fan-out problem, that might lead to updating many policy objects and apiserver load.
      "},{"location":"architecture/rfcs/0004-policy-status/#rationale-and-alternatives","title":"Rationale and alternatives","text":"

      Another option was considered (previously referred to as \"Option 1\"). While valid, this alternative would not align with GEP-713, neither it would be as flexible as the final design proposed.

      Details of the discarded alternative This alternative design would come in 3 stages: **Stage 1 : State of the policy CR defined by: application and validation of it** This first stage is a simple version where the operator only relies on itself, not checking the healthiness with the Kuadrant services, but just validating the Spec. ![](0004-policy-status-assets/policy_status_1.png) States rationale: * `Created`: The initial state. It announces that the policy has successfully being created, the operator acknowledges it. * `Applied`: This state is reached after the `Validation` event has being successfully passed. * `Failed`: This one would be set when the `Validation` process encounters an error. This could be either condition's failed/error state or a top-level condition. * `Updated`: From `Failed` or `Applied`, it could be triggered a `Spec Change` event that would move it to this state. **Stage 2: Further reconciliation check provides a new state** This following one, besides checking what the former stage does, it also adds the states reflecting the reconciliation process of any needed Kubernets object, Kuadrant Services custom resources and any other 3rd party CR required. An example would be in the case of the RLP, it would create/update the `ConfigMap` holding the `Limitador` config file. ![](0004-policy-status-assets/policy_status_2.png) States rationale: * `Applied`: The __Applied__ state would not be final, and would be preceding a `Reconciliation` event. * `Reconciled`: It communicates that the policy has successfully being reconciled, and any K8s object or required CR has been updated. * `Failed`: This one would be reached when either of `Validation` and `Reconcilation` processes have encounter any errors. **Stage 3: Final state of the policy CR defined by: health check with the Kuadrant services (post-reconciliation)** The final stage would bring a greater degree of accuracy, thanks for a final process that would check the healthiness and configuration version the Kuadrant services currently enforces. ![](0004-policy-status-assets/policy_status_3.png) States rationale: * `Reconciled`: This state would precede the \"Health check\" process graphed as `Service Probe` event. * `Enforced`: After a successful response of the `Service Probe`, this states communicates the policy is finally enforced. This is the final top-level condition. * `Failed`: Now this state could also be set after encountering errors in the `Service Probe` check. The stages before mentioned would follow the [Kubernetes guidelines](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#typical-status-properties) regarding the Status object definition. **Conditions** All conditions are top-level. | Type | Status | Reason | Message | |-------------|--------|-----------------------------|-----------------------------------------------------------------------------| | Progressing | True | \"PolicyCreated\" | \"KuadrantPolicy created\" | | | True | \"PolicyUpdated\" | \"KuadrantPolicy has been updated\" | | | True | \"PolicyApplied\" | \"KuadrantPolicy has been successfully applied | | | True | \"PolicyReconciled\" | \"KuadrantPolicy has been successfully reconciled\" | | | False | \"PolicyEnforced\" | \"KuadrantPolicy has been successfully enforced\" | | | False | \"PolicyError\" | \"KuadrantPolicy has encountered an error\" | | Enforced | True | \"PolicyEnforced\" | \"KuadrantPolicy has been successfully enforced\" | | | False | \"PolicyPartiallyEnforced\" | \"KuadrantPolicy has encountered some issues and has been partially applied\" | | | False | \"PolicyOverridden\" | \"KuadrantPolicy is overridden by [policy-ns/policy-name]\" | | Failed | True | \"PolicyValidationError\" | \"KuadrantPolicy has failed to validate\" | | | True | \"PolicyServiceError\" | \"KuadrantPolicy has encountered has failed to enforce\" | | | False | \"PolicyEnforced\" | \"KuadrantPolicy has been successfully enforced\" |"},{"location":"architecture/rfcs/0004-policy-status/#prior-art","title":"Prior art","text":"
      • Kubernetes API Conventions
      • Current KuadrantPolicy Status work
      "},{"location":"architecture/rfcs/0004-policy-status/#unresolved-questions","title":"Unresolved questions","text":"
      • Is it worthy to implement a state machine or state machine design pattern to achieve this set of conditions?
      "},{"location":"architecture/rfcs/0004-policy-status/#future-possibilities","title":"Future possibilities","text":"

      The implementation of this proposal could be part of kuadrant/gateway-api-machinery.

      "},{"location":"architecture/rfcs/0005-single-cluster-dnspolicy/","title":"Single Cluster DNSPolicy","text":"
      • Feature Name: single-cluster-dnspolicy
      • Start Date: 2023-10-09
      • RFC PR: Kuadrant/architecture#30
      • Issue tracking:
      • Kuadrant/architecture#31
      • Kuadrant/architecture#67
      "},{"location":"architecture/rfcs/0005-single-cluster-dnspolicy/#summary","title":"Summary","text":"

      Proposal for changes to the DNSPolicy API to allow it to provide a simple routing strategy as an option in a single cluster context. This will remove, but not negate, the complex DNS structure we use in a multi-cluster environment and in doing so allow use of popular dns integrators such as external-dns .

      "},{"location":"architecture/rfcs/0005-single-cluster-dnspolicy/#motivation","title":"Motivation","text":"

      The DNSPolicy API (v1alpha1), was implemented as part of our multi cluster gateway offering using OCM and as such the design and implementation were influenced heavily by how we want multi cluster dns to work.

      • Decouple the API entirely from OCM and multi cluster specific concepts.
      • Simplify the DNS record structure created for a gateway listeners host for single cluster use.
      • Improve the likelihood of adoption by creating an integration path for other kubernetes dns controllers such as external-dns.
      "},{"location":"architecture/rfcs/0005-single-cluster-dnspolicy/#guide-level-explanation","title":"Guide-level explanation","text":"

      The DNSPolicy can be used to target a Gateway in a single cluster context and will create dns records for each listener host in an appropriately configured external dns provider. In this context the advanced loadbalancing configuration is unnecessary, and the resulting DNSRecord can be created mapping individual listener hosts to a single DNS A or CNAME record by using the simple routing strategy in the DNSPolicy.

      Example 1. DNSPolicy using simple routing strategy

      apiVersion: kuadrant.io/v1alpha2\nkind: DNSPolicy\nmetadata:\n  name: prod-web\n  namespace: my-gateways\nspec:\n  providerRef:\n    name: my-route53-credentials\n  targetRef:\n    name: prod-web\n    group: gateway.networking.k8s.io\n    kind: Gateway\n  routingStrategy: simple\n
      apiVersion: gateway.networking.k8s.io/v1beta1\nkind: Gateway\nmetadata:\n  name: prod-web\n  namespace: my-gateways\nspec:\n  gatewayClassName: istio\n  listeners:\n\n    - allowedRoutes:\n        namespaces:\n          from: All\n      name: api\n      hostname: \"myapp.mn.hcpapps.net\"\n      port: 80\n      protocol: HTTP\nstatus:\n  addresses:\n    - type: IPAddress\n      value: 172.31.200.0\n

      In the example the api listener has a hostname myapp.mn.hcpapps.net that matches a hosted zone being managed by the provider referenced my-route53-credentials in the DNSPolicy. As the simple routing strategy is set in the DNSPolicy a DNSRecord resource with the following contents will be created:

      apiVersion: kuadrant.io/v1alpha2\nkind: DNSRecord\nmetadata:\n  name: prod-web-api\n  namespace: my-gateways\nspec:\n  providerRef:\n    name: my-route53-credentials\n  endpoints:\n\n    - dnsName: myapp.mn.hcpapps.net\n      recordTTL: 60\n      recordType: A\n      targets:\n        - 172.31.200.0\n

      The providerRef is included in the DNSRecord to allow the dns record controller to load the appropriate provider configuration during reconciliation and create the DNS records in the dns provider service e.g. route 53.

      Example 2. DNSPolicy using simple routing strategy on multi cluster gateway

      apiVersion: kuadrant.io/v1alpha2\nkind: DNSPolicy\nmetadata:\n  name: prod-web\n  namespace: my-gateways\nspec:\n  providerRef:\n    name: my-route53-credentials\n  targetRef:\n    name: prod-web\n    group: gateway.networking.k8s.io\n    kind: Gateway\n  routingStrategy: simple\n
      apiVersion: gateway.networking.k8s.io/v1beta1\nkind: Gateway\nmetadata:\n  name: prod-web\n  namespace: my-gateways\nspec:\n  gatewayClassName: kuadrant-multi-cluster-gateway-instance-per-cluster\n  listeners:\n\n    - allowedRoutes:\n        namespaces:\n          from: All\n      name: api\n      hostname: \"myapp.mn.hcpapps.net\"\n      port: 80\n      protocol: HTTP\nstatus:\n  addresses:\n    - type: kuadrant.io/MultiClusterIPAddress\n      value: 172.31.200.0\n    - type: kuadrant.io/MultiClusterIPAddress\n      value: 172.31.201.0\n

      Similar to example 1, except here the Gateway is a multi cluster gateway that has had its status updated by the Gateway controller to include kuadrant.io/MultiClusterIPAddress type addresses. As the simple routing strategy is set in the DNSPolicy a DNSRecord resource with the following contents will be created:

      apiVersion: kuadrant.io/v1alpha2\nkind: DNSRecord\nmetadata:\n  name: prod-web-api\n  namespace: my-gateways\nspec:\n  providerRef:\n    name: my-route53-credentials\n  endpoints:\n\n    - dnsName: myapp.mn.hcpapps.net\n      recordTTL: 60\n      recordType: A\n      targets:\n        - 172.31.200.0\n        - 172.31.201.0\n
      "},{"location":"architecture/rfcs/0005-single-cluster-dnspolicy/#reference-level-explanation","title":"Reference-level explanation","text":""},{"location":"architecture/rfcs/0005-single-cluster-dnspolicy/#api-updates","title":"API Updates","text":"

      DNSPolicy:

      • new providerRef field spec.providerRef
      • new routingStrategy field spec.routingStrategy
      • new api version v1alpha2

      DNSRecord:

      • spec.managedZone replaced with spec.providerRef
      • new zoneID field spec.zoneID
      • new api version v1alpha2

      ManagedZone:

      • ManagedZone API wil be removed and no longer supported as part of MGC/Kuadrant.
      "},{"location":"architecture/rfcs/0005-single-cluster-dnspolicy/#dnspolicyspecproviderref","title":"DNSPolicy.spec.providerRef","text":"

      The providerRef field is mandatory and contains a reference to a secret containing provider credentials.

      - `spec.providerRef.name` - name of the provider resource.\n

      A DNSPolicy referencing a providerRef secret will expect that secret to exist in the same namespace. The expected contents of the secrets data is comparable to the dnsProviderSecretRef used by ManageZones.

      apiVersion: v1\nkind: Secret\nmetadata:\n  name: aws-credentials\ntype: kuadrant.io/aws\ndata:\n  AWS_ACCESS_KEY_ID: \"foo\"\n  AWS_SECRET_ACCESS_KEY: \"bar\"\n  CONFIG:\n    zoneIDFilter:\n\n      - Z04114632NOABXYWH93QUl\n

      The CONFIG section of the secrets data will be added to allow provider specific configuration to be stored alongside the providers credentials and can be used during the instantiation of the provider client, and during any provider operations. The above for example would use the zoneIDFilter value to limit what hosted zones this provider is allowed to update.

      "},{"location":"architecture/rfcs/0005-single-cluster-dnspolicy/#dnspolicyspecroutingstrategysimpleweightedgeo","title":"DNSPolicy.spec.routingStrategy[simple|weightedGeo]","text":"

      The routingStrategy field is mandatory and dictates what kind of dns record structure the policy will create. Two routing strategy options are allowed simple or weightedGeo.

      A reconciliation of DNSPolicy processes the target gateway and creates a DNSRecord per listener that is supported by the currently configured provider(hostname matches the hosted zones accessible with the credentials and config). The routing strategy used will determine the contents of the DNSRecord resources Endpoints array.

      "},{"location":"architecture/rfcs/0005-single-cluster-dnspolicy/#simple","title":"simple","text":"
      apiVersion: kuadrant.io/v1alpha2\nkind: DNSRecord\nspec:\n  providerRef:\n    name: my-route53-credentials\n  endpoints:\n\n    - dnsName: myapp.mn.hcpapps.net\n      recordTTL: 60\n      recordType: A\n      targets:\n        - 172.31.200.0\n

      Simple creates a single endpoint for an A record with multiple targets. Although intended for use in a single cluster context a simple routing strategy can still be used in a multi-cluster environment (OCM hub). In this scenario each clusters address will be added to the targets array to create a multi answer section in the dns response.

      "},{"location":"architecture/rfcs/0005-single-cluster-dnspolicy/#weightedgeo","title":"weightedGeo","text":"
      apiVersion: kuadrant.io/v1alpha2\nkind: DNSRecord\nspec:\n  providerRef:\n    name: my-route53-credentials\n  endpoints:\n\n    - dnsName: myapp.mn.hcpapps.net\n      recordTTL: 300\n      recordType: CNAME\n      targets:\n        - lb-4ej5le.myapp.mn.hcpapps.net\n    - dnsName: lb-4ej5le.myapp.mn.hcpapps.net\n      providerSpecific:\n        - name: geo-code\n          value: '*'\n      recordTTL: 300\n      recordType: CNAME\n      setIdentifier: default\n      targets:\n        - default.lb-4ej5le.myapp.mn.hcpapps.net\n    - dnsName: default.lb-4ej5le.myapp.mn.hcpapps.net\n      providerSpecific:\n        - name: weight\n          value: \"120\"\n      recordTTL: 60\n      recordType: CNAME\n      setIdentifier: lrnse3.lb-4ej5le.myapp.mn.hcpapps.net\n      targets:\n        - lrnse3.lb-4ej5le.myapp.mn.hcpapps.net\n    - dnsName: lrnse3.lb-4ej5le.myapp.mn.hcpapps.net\n      recordTTL: 60\n      recordType: A\n      targets:\n        - 172.31.200.0\n

      WeightedGeo creates a more complex set of endpoints which use a combination of weighted and geo routing strategies. Although intended for use in a multi-cluster environment (OCM hub) it will still be possible to use it in a single cluster context. In this scenario the record structure described above would be created for the single cluster.

      This is the current default for DNSPolicy in a multi-cluster environment (OCM hub) and more details about it can be found in the original DNSPolicy rfc.

      "},{"location":"architecture/rfcs/0005-single-cluster-dnspolicy/#dnsrecordspecproviderref","title":"DNSRecord.spec.providerRef","text":"

      More details of providerRef found in DNSPolicy.spec.providerRef

      The DNSRecord API is updated to remove the managedZone reference in favour of directly referencing the providerRef credentials instead. The DNSRecord reconciliation will be unchanged except for loading the provider client from providerRef credentials.

      The DNSPolicy reconciliation will be updated to remove the requirement for a ManagedZone resource to be created before a DNSPolicy can create dns records for it, instead it will be replaced in favour of just listing available zones directly in the currently configured dns provider. If no matching zone is found, no DNSRecord will be created.

      There is a potential for a DNSRecord to be created successfully, but then a provider updated to remove access. In this case it is the responsibility of the DNSPolicy controller to report appropriate status back to the policy and target resource about the failure to process the record. More details on how status will be reported can be found in rfc-0004

      "},{"location":"architecture/rfcs/0005-single-cluster-dnspolicy/#dnsrecordspeczoneid","title":"DNSRecord.spec.zoneID","text":"

      The zoneID field is mandatory and contains the provider specific id of the hosted zone that this record should be published into.

      The DNSRecord reconciliation will use this zone when creating/updating or deleting endpoints for this record set.

      The zoneID should not change after being selected during initial creation and as such will be marked as immutable.

      "},{"location":"architecture/rfcs/0005-single-cluster-dnspolicy/#prior-art","title":"Prior art","text":"

      ExternalDNS

      • Uses annotations on the target Gateway as opposed to a proper API.
      • Requires access to the HTTP route resources.
      • Supports only a single provider per external dns instance.
      "},{"location":"architecture/rfcs/0005-single-cluster-dnspolicy/#unresolved-questions","title":"Unresolved questions","text":"

      When a provider is configured using a kind not supported by the DNSPolicy controller e.g. ExternalDNS we will be relying on an external controller to correctly update the status of any DNSRecord resources created by our policy. This may have a negative impact on our ability to correctly report status back to the target resource.

      When using a weightedGeo routing strategy in a single cluster context it is not expected that this will offer multi cluster capabilities without the use of OCM. Currently, it is expected that if you want to create a recordset that contains the addresses of multiple clusters you must use an OCM hub.

      "},{"location":"architecture/rfcs/0005-single-cluster-dnspolicy/#future-possibilities","title":"Future possibilities","text":"

      The ability to support other kubernetes dns controllers such as ExternalDNS would potentially allow us to contribute to some of these projects in the area of polices for dns management of Gateway resources in kubernetes.

      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/","title":"Configuration of Kuadrant Sub Components","text":"
      • Feature Name: sub-components-config
      • Start Date: 2023-09-11
      • RFC PR: Kuadrant/architecture#25
      • Issue tracking: Kuadrant/kuadrant-operator#163
      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#summary","title":"Summary","text":"

      Enable configuration of sub components of Kuadrant from a centralized location, namely the Kuadrant CR.

      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#motivation","title":"Motivation","text":"

      The initial request comes from MGC to configure Redis for Limitador by the following issue #163. MGC's current work around is to update the Limitador CR after the deployment with the configuration setting for Redis Instance. This change would allow for the configuration of sub components before the Kuadrant is deployed.

      This reduces the number of CRs that users of Kuadrant are required to modify to get the installation they require. The sub components CRs (Authorino, Limitador) never have to be modified by a Kuadrant user (and should never be modified by a Kuadrant User).

      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#guide-level-explanation","title":"Guide-level explanation","text":"

      As the Kuadrant operator would be responsible for reconciling these configurations into the requested components, restrictions and limitations can be placed on the components which maybe allowed in a standalone installation. An example in this space is the disk storage for Limitador which is a new feature and the Kuadrant installation may not want to support it till there is a proven track record for the feature.

      For existing Kuadrant Users this may be a possible breaking changes if those users manually configure the Kuadrant sub components via their CRs. A guide can be created to help migrate the users configurations to the Kuadrant CR. This guide can be part of the release notes and/or possibly released before the release of Kuadrant.

      The deployment configuration for each component can be placed in the Kuadrant CR. These configurations are then reconciled into the CRs for each component. Only the options below are exposed in the Kuadrant CR. All fields in the spec are optional.

      apiVersion: kuadrant.io/v1beta1\nkind: Kuadrant\nmetadata:\n    name: kuadrant-sample\nspec:\n    limitador:\n        afffinity: ...\n        listener: ...\n        pdb: ...\n        replicas: ...\n        resourceRequirements: ...\n        storage: ...\n    authorino:\n        evaluatorCacheSize: ...\n        healthz: ...\n        listener: ...\n        logLevel: ...\n        metrics: ...\n        oidcServer: ...\n        replicas: ...\n        tracing: ...\n        volumes: ...\nstatus:\n    ...\n

      The Kuadrant operator will watch for changes in the Authorino and Limitador CRs, reconciling back any changes that a user may do to these configurations. How ever Kuadrant operator will not reconcile fields that are given above. An example of this is the image field on the Authorino CR. This field allows a user to set the image that Authorino is deployed with. The feature is meant for dev and testing purposes. If a user wishes to use a different image, they can. Kuadrant assumes they know what they are doing but requires the user to set the change on the component directly.

      Only the sub component operator will be responsible for actioning the configurations pasted from the Kuadrant CR to the sub components CR. This ensure no extra changes will be required in the sub operators to meet the needs of Kuadrant.

      Status errors related to the configuration of the sub components should be reported back to the Kuadrant CR. The errors messages in Kuadrant state what components are currently having issue and which resource to review for more details.

      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#reference-level-explanation","title":"Reference-level explanation","text":"

      All the fields in the Authorino and Limitador CRs that are configurable in the Kuadrant CR are optional and have sound defaults. Kuadrant needs to remain installable with out having to set any spec in the Kuadrant CR.

      The Kuadrant operator should only reconcile the spec that is given. This would mean if the user states the number of replicas to be used in one of the components only the replica field for that component should be reconciled. As the other fields would be blank at this stage, blank fields would not be reconciled to the component CR. By this behaviour a few things are being achieved. Component controllers define the defaults to be used in the components. Optional fields in the component CRs never get set with blank values. Blank values in the component CR could override the defaults of the components causing unexpected behaviour. Existing Kuadrant users may already have custom fields set in the component CRs. By only reconciling the fields set in the kuadrant CR this allows time for a user to migrate their custom configuration from the component CR to the Kuadrant CR.

      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#fields-to-reconcile","title":"Fields to reconcile","text":"

      Fields being reconcile can be classified into different groups. These classifications are based around the tasks a user is achieve.

      • Kubernetes native, setting that affect how Kubernetes handles the resource.
      • Observability, configuration settings that allow insights into how the applications are operation. This can be Kubernetes native or external tooling.
      • Application Settings, setting targeting the application and how it connects to external services.
      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#authorino-spec","title":"Authorino Spec","text":""},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#kubernetes-native","title":"Kubernetes native","text":"
      • replicas
      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#observability","title":"Observability","text":"
      • healthz
      • logLevel
      • metrics
      • tracing
      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#application-settings","title":"Application Settings","text":"
      • evaluatorCacheSize
      • listener
      • oidcServer
      • volumes
      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#limitador-spec","title":"Limitador Spec","text":""},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#kubernetes-native_1","title":"Kubernetes native","text":"
      • afffinity
      • pdb
      • replicas
      • resourceRequirements
      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#application-settings_1","title":"Application Settings","text":"
      • listener
      • storage
      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#fields-not-reconciled","title":"Fields not reconciled","text":"

      There are a number of fields in both Authorino and Limitador that are not reconciled. Reasons for doing this are:

      It is better to start with a sub set of features and expand to include more at a later date. Removing feature support is far harder than adding it.

      There are four classifications the unreconciled fields fail into.

      • Deprecated, fields that are deprecated and/or have plans to be removed from the spec in the future.
      • Unsupported, the features would have hard coded or expected defaults in the Kuadrant operator. Work would be required to all the custom configurations options.
      • Dev/Testing focused, features that should only be used during development & testing and not recommended for production. The defaults would for the fields are the production recommendations.
      • Reconciled by others, this mostly affects Limitador as the deployment configuration and runtime configuration are in the same CR. In the case of Kuadrant the runtime configuration for Limitador is added via the RateLimitingPolicy CR.
      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#authorino-spec_1","title":"Authorino Spec","text":""},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#unsupported","title":"Unsupported","text":"
      • clusterWide
      • authConfigLabelSelectors
      • secretLabelSelectors
      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#devtesting-focused","title":"Dev/Testing focused","text":"
      • image
      • imagePullPolicy
      • logMode
      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#limitador-spec_1","title":"Limitador Spec","text":""},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#unsupported_1","title":"Unsupported","text":"
      • RateLimitHeaders
      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#reconciled-by-others","title":"Reconciled by others","text":"
      • Limits
      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#deprecated","title":"Deprecated","text":"
      • version
      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#drawbacks","title":"Drawbacks","text":"

      As the Kuadrant CR spec will be a sub set of the features that can be configured in the sub components spec, extra maintenances will be required to ensure specs are in sync.

      New features of a component will not be accessible in Kuadrant initially. This is both a pro and a con.

      Documentation becomes harder, as the sub component should be documenting their own features but in Kuadrant the user does not configure the feature in sub component. This has the risk of confusing new users.

      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#rationale-and-alternatives","title":"Rationale and alternatives","text":"
      • Why is this design the best in the space of possible designs?
      • What other designs have been considered and what is the rationale for not choosing them?
      • What is the impact of not doing this?

      One alternative that was being looked at was allowing the user to bring their own Limitador instances by stating which Limitador CR Kuadrant should use. A major point of issue with this approach was knowing what limits the user had configured and what limits Kuadrant configured. Sharing global counters is a valid reason to want to share Limitador instances. How ever it this case Limitador would not be using one replica and therefore would have a back-end storage configured. It is the back-end storage that needs to be shared across instances. This can be done with adding the configuration in the Kuadrant CR.

      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#prior-art","title":"Prior art","text":"

      Discuss prior art, both the good and the bad, in relation to this proposal. A few examples of what this can include are:

      • Does another project have a similar feature?
      • What can be learned from it? What's good? What's less optimal?
      • Papers: Are there any published papers or great posts that discuss this? If you have some relevant papers to refer to, this can serve as a more detailed theoretical background.

      This section is intended to encourage you as an author to think about the lessons from other tentatives - successful or not, provide readers of your RFC with a fuller picture.

      Note that while precedent set by other projects is some motivation, it does not on its own motivate an RFC.

      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#unresolved-questions","title":"Unresolved questions","text":"
      • What parts of the design do you expect to resolve through the RFC process before this gets merged?
      • What parts of the design do you expect to resolve through the implementation of this feature before stabilization?
      • What related issues do you consider out of scope for this RFC that could be addressed in the future independently of the solution that comes out of this RFC?
      • Is there a need to add validation on the configuration?
      • If a valid configuration is add to the Kuadrant CR and this configuration is pass to the sub components CR but there is a error trying to setting up the configuration. How is this error reported back to the user? An example of this is configuring Redis as the back-end in Limitador, this requires stating the name and namespace of a configmap. The Limitador CR will have an error if the configmap does not exist and as the user only configures the Kuadrant CR this error may go unnoticed. This is only one example but there is a need for good error reporting back to the user, where they would expect to see the error.
      "},{"location":"architecture/rfcs/0006-kuadrant_sub_components_configurations/#future-possibilities","title":"Future possibilities","text":"

      Think about what the natural extension and evolution of your proposal would be and how it would affect the platform and project as a whole. Try to use this section as a tool to further consider all possible interactions with the project and its components in your proposal. Also consider how this all fits into the roadmap for the project and of the relevant sub-team.

      This is also a good place to \"dump ideas\", if they are out of scope for the RFC you are writing but otherwise related.

      Note that having something written down in the future-possibilities section is not a reason to accept the current or a future RFC; such notes should be in the section on motivation or rationale in this or subsequent RFCs. The section merely provides additional information.

      The implementation stated here allows the user to state spec fields in the component CRs or the Kuadrant CR (Kuadrant CR overrides the component CRs). A future possibility would be to warn the user if they add configuration to the components CRs that would get overridden if the same spec fields are configured in the Kuadrant CR.

      "},{"location":"architecture/rfcs/0007-policy-sync-v1/","title":"RFC - Policy Sync","text":"
      • Feature Name: policy_sync_v1
      • Start Date: 2023-10-10
      • RFC PR: Kuadrant/architecture#0000
      • Issue tracking: https://github.com/Kuadrant/architecture/issues/26
      "},{"location":"architecture/rfcs/0007-policy-sync-v1/#summary","title":"Summary","text":"

      The ability for the Multicluster Gateway Controller to sync policies defined in the hub cluster downstream to the spoke clusters, therefore allowing all policies to be defined in the same place. These policies will be reconciled by the downstream policy controller(s).

      "},{"location":"architecture/rfcs/0007-policy-sync-v1/#nomenclature","title":"Nomenclature","text":"
      • Policy: When refering to a Policy, this document is refering to a Gateway API policy as defined in the Policy Attachment Model. The Multicluster Gateway Controller relies on OCM as a Multicluster solution, which defines its own unrelated set of Policies and Policy Framework. Unless explicitely mentioned, this document refers to Policies as Gateway API Policies.

      • Policy overriding: The concept of policy overriding is mentioned in this document. It refers to the proposed ability of the downstream Gateway implementation to prioritise downstream Policies against synced Policies in case of conflicts.

      "},{"location":"architecture/rfcs/0007-policy-sync-v1/#motivation","title":"Motivation","text":"

      Currently, Kuadrant's support for the Policy Attachment Model can be divided in two categories:

      • Policies targeting the Multicluster Gateway, defined in the hub cluster and reconciled by the Multicluster Gateway Controller
      • Policies targeting the downstream Gateway, defined in the spoke clusters and reconciled by the downstream Gateway controllers.

      In a realistic multicluster scenario where multiple spoke clusters are present, the management of these policies can become tedious and error-prone, as policies have to be defined in the hub cluster, as well as replicated in the multiple spoke clusters.

      As Kuadrant users:

      • Gateway-admin has a set of homogeneous clusters and needs to apply per cluster rate limits across the entire set.
      • Platform-admin with a set of clusters with rate limits applied needs to change rate limit for one particular cluster.
      "},{"location":"architecture/rfcs/0007-policy-sync-v1/#guide-level-explanation","title":"Guide-level explanation","text":"

      The policy sync feature will allow a gateway-admin to configure, via GatewayClass parameters, a set of Policy GVRs to be synced by the Multicluster Gateway Controller.

      The policiesToSync field in the parameters defines those GVRs. For example, in order to configure the controller to sync AuthPolicies:

      \"policiesToSync\": [\n  {\n    \"group\": \"kuadrant.io\",\n    \"version\": \"v1beta1\",\n    \"resource\": \"authpolicies\" \n  }\n]\n

      The support for resources that the controller can sync is limited by the following:

      • The controller ServiceAccount must have permission to watch, list, and get the resource to be synced
      • The resource must implement the Policy schema:
        • Have a .spec.targetRef field

      When a Policy is configured to be synced in a GatewayClass, the Multicluster Gateway Controller starts watching events on the resources, and propagates changes by placing the policy in the spoke clusters, with the following mutations:

      • The TargetRef of the policy is changed to reference the downstream Gateway
      • The kuadrant.io/policy-synced annotation is set

      The upstream policy is annotated with a reference to the name and namespace of the downstream policies:

      annotations:\n  \"kuadrant.io/policies-synced\": \"[{\\\"cluster\\\": \\\"...\\\", \\\"name\\\": \\\"...\\\", \\\"namespace\\\": \\\"...\\\"}]\"\n

      "},{"location":"architecture/rfcs/0007-policy-sync-v1/#reference-level-explanation","title":"Reference-level explanation","text":""},{"location":"architecture/rfcs/0007-policy-sync-v1/#process-overview","title":"Process overview","text":""},{"location":"architecture/rfcs/0007-policy-sync-v1/#dynamic-policy-watches","title":"Dynamic Policy watches","text":"

      The Multicluster Gateway Controller reconciles parameters referenced by the GatewayClass of a Gateway. A new field is added to the parameters that allows the configuration of a set of GVRs of Policies to be synced.

      The GatewayClass reconciler validates that:

      • The GVRs reference existing resource definitions
      • The GVRs reference resources that implement the Policy schema.

      Validation failures are reported as part of the status of the GatewayClass

      The Gateway reconciler sets up dynamic watches to react to events on the configured Policies, calling the PolicySyncer component with the updated Policy as well as the associated Gateway.

      "},{"location":"architecture/rfcs/0007-policy-sync-v1/#policysyncer-component","title":"PolicySyncer component","text":"

      The PolicySyncer component is in charge of reconciling Policy watch events to apply the necessary changes and place the Policies in the spoke clusters.

      This component is injected in the event source and called when a change is made to a hub Policy that has been configured to be synced.

      The PolicySyncer implementation uses OCM ManifestWorks to place the policies in the spoke clusters. Through the ManifestWorks, OCM allows to:

      • Place the Policy in each spoke cluster
      • Report the desired status back to the hub using JSON feedback rules
      "},{"location":"architecture/rfcs/0007-policy-sync-v1/#policy-hierarchy","title":"Policy Hierarchy","text":"

      In order to avoid conflict with Policies created directly in the spoke clusters, a hierarchy must be defined to prioritise those Policies.

      The controller will set the kuadrant.io/policy-synced annotation on the policy when placing it in the spoke cluster.

      The Kuadrant operator will be aware of the presence of this annotation, and, in case of conflicts, override Policies that contain this annotation. When a policy is overriden due to conflicts, the Enforced status will be set to False, with the reason being Overriden and a human readable message explaining the reason why the policy was overriden. See Policy Status RFC

      "},{"location":"architecture/rfcs/0007-policy-sync-v1/#drawbacks","title":"Drawbacks","text":""},{"location":"architecture/rfcs/0007-policy-sync-v1/#third-party-policy-support","title":"Third party Policy support","text":"

      In order for a Policy to be supported for syncing, the MGC must have permissions to watch/list/get the resource, and the implementation of the downstream Gateway controller must be aware of the policy-synced annotation.

      "},{"location":"architecture/rfcs/0007-policy-sync-v1/#rationale-and-alternatives","title":"Rationale and alternatives","text":""},{"location":"architecture/rfcs/0007-policy-sync-v1/#alternatives","title":"Alternatives","text":"

      Different technology stacks are available to sync resources across clusters. However, adoption of these technologies for the purpose of the goal this RFC intends to achieve, implies adding another dependency to the current stack, with the cost of added complexity and maintainance effort.

      The MGC currently uses OCM to place Gateways across clusters. Relying on OCM for the purpose of placing Policies is the most straightforward alternative from a design and implementation point of view.

      "},{"location":"architecture/rfcs/0007-policy-sync-v1/#consequences-of-not-implementing","title":"Consequences of not implementing","text":"

      Gateway-admins will have no centralized system for handling spoke-level policies targeting a gateway created there from the hub.

      "},{"location":"architecture/rfcs/0007-policy-sync-v1/#ocms-policy-framework-will-not-be-used-to-complete-this-objective","title":"OCMs Policy Framework will not be used to complete this objective:","text":"

      OCMs Policy Framework is a system designed to make assertions about the state of a spoke, and potentially take actions based on that state, as such it is not a suitable replacement for manifestworks in the case of syncing resources to a spoke.

      "},{"location":"architecture/rfcs/0007-policy-sync-v1/#potential-migration-from-manifestworks-to-manifestworkreplicasets","title":"Potential migration from ManifestWorks to ManifestWorkReplicaSets","text":"

      ManifestWorkPeplicaSets may be a future improvement that the MGC could support to simplify the placement of related resources, but beyond the scope of this RFC.

      "},{"location":"architecture/rfcs/0007-policy-sync-v1/#prior-art","title":"Prior art","text":"

      No applicable prior art.

      "},{"location":"architecture/rfcs/0007-policy-sync-v1/#unresolved-questions","title":"Unresolved questions","text":""},{"location":"architecture/rfcs/0007-policy-sync-v1/#status-reporting","title":"Status reporting","text":"

      While the controller can assume common status fields among the Policies that it syncs, there might be a scenario where certain policies use custom status fields that are not handled by the controller. In order to support this, two alternatives are identified:

      1. Configurable rules.

        An extra field is added in the GatewayClass params that configures the policies to sync, to specify custom fields that the controller must propagate back from the spokes to the hub.

      2. Hard-coded support.

        The PolicySync component can identify the Policy type and select which extra status fields are propagated

      "},{"location":"architecture/rfcs/0007-policy-sync-v1/#future-possibilities","title":"Future possibilities","text":"

      If OCMs Policy Framework is updated to enable syncing of resources status back to the hub, it could be an opportunity to refactor the MGC to use this framework in place of the current approach of creating ManifestWorks directly.

      This system could mutate over time to dynamically sync more CRDs than policies to spoke clusters.

      "},{"location":"architecture/rfcs/0008-kuadrant-release-process/","title":"Kuadrant Release Process","text":"
      • Feature Name: kuadrant-release-process
      • Start Date: 2024-01-11
      • RFC PR: Kuadrant/architecture#46
      • Issue tracking: Kuadrant/architecture#59
      "},{"location":"architecture/rfcs/0008-kuadrant-release-process/#summary","title":"Summary","text":"

      Kuadrant is a set of components whose artifacts are built and delivered independently. This RFC aims to define every aspect of the event of releasing a new version of the whole, in terms of versioning, cadence, communication, channels, handover to other teams, etc.

      "},{"location":"architecture/rfcs/0008-kuadrant-release-process/#motivation","title":"Motivation","text":"

      At the time being, there's no clear process nor guidelines to follow when releasing a new version of Kuadrant, which leads to confusion and lack of transparency. We are currently relying on internal communication and certain people in charge of the release process, which is not ideal.

      "},{"location":"architecture/rfcs/0008-kuadrant-release-process/#guide-level-explanation","title":"Guide-level explanation","text":"

      First, we need to define what releasing Kuadrant means, in a clear and transparent way that communicates to the community what's happening and what to expect. The Kuadrant suite is composed of several components, each of them with its own set of artifacts and versioning scheme. Defining the release process of the whole suite is a complex task, and it's not only about the technical details of releasing the components, but also about the communication and transparency with the community, the definition of the frequency of the releases, and when it's ready to be handover to other teams like QA. This section aims to provide guidelines for the different aspects of the release process.

      "},{"location":"architecture/rfcs/0008-kuadrant-release-process/#components-and-versioning","title":"Components and versioning","text":"

      The set of components that are part of the Kuadrant suite are the following:

      • Authorino: Kubernetes-native authorization service for tailor-made Zero Trust API security.
      • Authorino Operator: A Kubernetes Operator to manage Authorino instances.
      • Limitador: A generic rate-limiter written in Rust.
      • Limitador Operator: A Kubernetes Operator to manage Limitador deployments.
      • Wasm Shim: A Proxy-Wasm module written in Rust, acting as a shim between Envoy and Limitador. connectivity and global load balancing.
      • DNS Operator: A Kubernetes Operator to manage DNS in single and multi-cluster environments.
      • Kuadrant Operator: The Operator to install and manage the lifecycle of the Kuadrant components deployments. Example alerts and dashboards are also included as optional.
      • kuadrantctl: A CLI tool for managing Kuadrant configurations and resources.

      Each of them needs to be versioned independently, and the versioning scheme should follow Semantic Versioning. At the time of cutting a release for any of them, it's important to keep in mind what section of the version to bump, given a version number MAJOR.MINOR.PATCH, increment the:

      • MAJOR version when you make incompatible API changes
      • MINOR version when you add functionality in a backward compatible manner
      • PATCH version when you make backward compatible bug fixes

      Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.

      A more detailed explanation of the versioning scheme can be found in the Semantic Versioning website.

      By releasing a new version of Kuadrant, we mean releasing the set of components with their corresponding semantic versioning, some of them maybe freshly released, or others still using versioning from the previous one, and being the version of the Kuadrant Operator the one that defines the version of the whole suite.

      Kuadrant Suite vx.y.z = Kuadrant Operator vx.y.z +  Authorino Operator va.b.c + Limitador Operator vd.e.f + DNS Operator vg.h.i + MGC Controller vj.k.l + Wasm Shim vm.n.o\n

      The technical details of how to release each component are out of the scope of this RFC and could be found in the Kuadrant components CI/CD RFC.

      "},{"location":"architecture/rfcs/0008-kuadrant-release-process/#qa-sanity-check","title":"QA Sanity Check","text":"

      Probably the most important and currently missing step in the release process is the green flagging from the Quality Assurance (QA) team. The QA team is responsible for testing the different components of the Kuadrant suite, and they need to be aware of the new version of the suite that is going to be released, what are the changes that are included, bug fixes and new features in order they can plan their testing processes accordingly. This check is not meant to be a fully fledged assessment from the QA team when it's handover to them, it's aimed to not take more than 1-2 days, and ideally expected to be fully automated. This step will happen once the release candidate has no PRs pending to be merged, and it has been tested by the Engineering team. The QA team should work closely to the engineering throughout the process, both teams aiming for zero handover time and continuous delivery mindset, so immediate testing can be triggered on release candidates once handed over. This process should happen without the need of formal communication between the teams or any overhead in general, but by keeping constant synergy between quality and product engineering instead.

      There is an ideal time to hand over to the QA team for testing, especially since we are using GitHub for orchestration, we could briefly define it in the following steps:

      1. Complete Development Work: The engineering team completes their work included in the milestone.
      2. Create Release Candidate: The engineering team creates Release Candidate builds and manifests for all components required for the release
      3. Flagging/Testing: The QA team do the actual assertion/testing of the release candidate, checking for any obvious bugs or issues. Then QA reports all the bugs as GitHub issues and communicates testing status back publicly on Slack and/or email.
      4. Iterate: Based on the feedback from the QA team, the Engineering team makes any necessary adjustments and repeats the process until the release candidate is deemed ready for production.
      5. Publish Release: Once QA communicates that the testing has been successfully finished, the engineering team will publish the release both on Github and in the corresponding registries, updates documentation for the new release, and communicates it to all channels specified in Communication section.
      "},{"location":"architecture/rfcs/0008-kuadrant-release-process/#cadence","title":"Cadence","text":"

      Once the project is stable enough, and its adoption increases, the community will be expecting a certain degree of commitment from the maintainers, and that includes a regular release cadence. The frequency of the releases of the different components could vary depending on the particular component needs. However, the Kuadrant Operator it's been discussed in the past that it should be released every 3-4 weeks initially, including the latest released version of every component in the suite. There's another RFC that focuses on the actual frequency of each component, one could refer to the Kuadrant Release Cadence RFC.

      There are a few reasons for this:

      • Delivering Unparalleled Value to Users: Regular releases can provide users with regular updates and improvements. These updates can include new features and essential bug fixes, thus enhancing the overall value delivered to the users.
      • Resource Optimization: By releasing software at regular intervals, teams can align their activities with available resources and environments, ensuring optimal utilization. This leads to increased efficiency in the deployment process and reduces the risk of resource wastage.
      • Risk Management: Regular releases can help identify and fix issues early, reducing the risk of major failures that could affect users.
      • Feedback Cycle: Regular releases allow for quicker feedback cycles. This means that any issues or improvements identified by users can be addressed promptly, leading to a more refined product over time.
      • Synchronization: Regular releases can help synchronize work across different teams or departments, creating a more reliable, dependable solution development and delivery process.
      • Reduced Complexity: Managing a smaller number of releases can reduce complexity. For example, having many different releases out in the field can lead to confusion and management overhead.

      By committing to a release cadence, software projects can benefit from improved efficiency, risk management, faster feedback cycles, synchronization, and reduced complexity.

      "},{"location":"architecture/rfcs/0008-kuadrant-release-process/#repositories-and-hubs","title":"Repositories and Hubs","text":"

      Every component in Kuadrant has its own repository, and the source code is hosted in GitHub, mentioned in the previous section. However, the images built and manifests generated are hosted in different registries, depending on the component. The following table shows the different registries used by each component:

      Component Artifacts Registry / Hub Authorino authorino images Quay.io Authorino Operator authorino-operator images Quay.io authorino-operator-bundle images Quay.io authorino-operator-catalog images Quay.io authorino-operator manifests OperatorHub.io Limitador limitador server images Quay.io limitador crate Crates.io Limitador Operator limitador-operator images Quay.io limitador-operator-bundle images Quay.io limitador-operator-catalog images Quay.io limitador-operator manifests OperatorHub.io Wasm Shim wasm-shim images Quay.io DNS Operator dns-operator images Quay.io dns-operator-bundle images Quay.io dns-operator-catalog images Quay.io Kuadrant Operator kuadrant-operator images Quay.io kuadrant-operator-bundle images Quay.io kuadrant-operator-catalog images Quay.io kuadrant-operator manifests OperatorHub.io kuadrant-operator source (includes example dashboards and alerts) Github Releases kuadrantctl kuadrantctl CLI Github Releases"},{"location":"architecture/rfcs/0008-kuadrant-release-process/#documentation","title":"Documentation","text":"

      It's important to note that keeping the documentation up to date is a responsibility of the component maintainers, and it needs to be done before releasing a new version of the component. The importance of keeping a clear and up-to-date documentation is crucial for the success of the project.

      The documentation for the Kuadrant suite is compiled and available on the Kuadrant website. One can find the source of the documentation within each component repository, in the docs directory. However, making this information available on the website is a manual process, and should be done by the maintainers of the project. The process of updating the documentation is simple and consists of the following steps:

      1. Update the documentation in the corresponding component repository.
      2. Follow the instruction in https://github.com/Kuadrant/docs.kuadrant.io/ to update the Docs pointers to the tag or branch of the component repository that contains the updated documentation.
      3. Once the changes are merged to main, the workflow that updates the website will be triggered, and the documentation will be updated.
      4. If for some reason it's needed to trigger the workflow manually, one can do it from the GitHub Actions tab in the docs.kuadrant.io (Actions > ci > Run Workflow).
      "},{"location":"architecture/rfcs/0008-kuadrant-release-process/#communication","title":"Communication","text":"

      Another important aspect of releasing a new version of the Kuadrant suite is the communication with the community and other teams within the organization. A few examples of the communication channels that need to be updated are:

      • Changelog generation
      • Release notes
      • Github Release publication
      • Slack channel in Kubernetes workspace
      • Blog post, if applicable
      • Social media, if applicable
      "},{"location":"architecture/rfcs/0008-kuadrant-release-process/#rationale-and-alternatives","title":"Rationale and alternatives","text":"

      The alternative to the proposal is to keep the current process, which is not ideal and leads to confusion and lack of transparency.

      "},{"location":"architecture/rfcs/0008-kuadrant-release-process/#prior-art","title":"Prior art","text":"

      There's been an organically grown process for releasing new versions of the Kuadrant suite, which is not documented and it's been changing over time. However, there are some documentation for some of the components, worth mentioning:

      • Authorino release process
      • Authorino Operator release process
      • Limitador release process
      • DNS Operator release process
      "},{"location":"architecture/rfcs/0008-kuadrant-release-process/#unresolved-questions","title":"Unresolved questions","text":"
      • What would be Kuadrant support policy?
      • How many version are we going to back-port security and bug fixes to?
      • What other teams need to be involved in the release process?
      "},{"location":"architecture/rfcs/0008-kuadrant-release-process/#future-possibilities","title":"Future possibilities","text":"

      Once the release process is accepted and battle-tested, we could aim to automate the process as much as possible.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/","title":"Defaults & Overrides","text":"
      • Feature Name: defaults-and-overrides
      • Start Date: 2024-02-15
      • RFC PR: Kuadrant/architecture#58
      • Issue tracking: Kuadrant/kuadrant-operator#431
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#summary","title":"Summary","text":"

      This is a proposal for extending the Kuadrant Policy APIs to fully support use cases of Defaults & Overrides (D/O) for Inherited Policies, including the base use cases of full default and full override, and more specific nuances that involve merging individual policy rules (as defaults or overrides), declaring constraints and unsetting defaults.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#motivation","title":"Motivation","text":"

      As of Kuadrant Operator v0.6.0, Kuadrant policy resources that have hierarchical effect across the tree of network objects (Gateway, HTTPRoute), or what is known as Inherited Policies, provide only limited support for setting defaults and no support for overrides at all.

      The above is notably the case of the AuthPolicy and the RateLimitPolicy v1beta2 APIs, shipped with the aforementioned version of Kuadrant. These kinds of policies can be attached to Gateways or to HTTPRoutes, with cascading effects through the hierarchy that result in one effective policy per gateway-route combination. This effective policy is either the policy attached to the Gateway or, if present, the one attached to the HTTRoute, thus conforming with a strict case of implicit defaults set at the level of the gateway.

      Enhancing the Kuadrant Inherited Policy CRDs, so the corresponding policy instances can declare defaults and overrides stanzas, is imperative:

      1. to provide full support for D/O along the lines proposed by GEP-713 (to be superseded by GEP-26491) of the Kubernetes Gateway API special group (base use cases);
      2. to extend D/O support to other derivative cases, learnt to be just as important for platform engineers and app developers who require more granular policy interaction on top of the base cases;
      3. to support more sophisticated hierarchies with other kinds of network objects and/or multiples policies targetting at the same level of the hierarchy (possibly, in the future.)
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#guide-level-explanation","title":"Guide-level explanation","text":""},{"location":"architecture/rfcs/0009-defaults-and-overrides/#conceptualization-and-user-story","title":"Conceptualization and User story","text":"

      The base use cases for Defaults & Overrides (D/O) are:

      • Defaults (D): policies declared lower in the hierarchy supersede ones set (as \"defaults\") at a higher level, or \"more specific beats less specific\"
      • Overrides (O): policies declared higher in the hierarchy (as \"overrides\") supersede ones set at the lower levels, or \"less specific beats more specific\"

      The base cases are expanded with the following additional derivative cases and concepts:

      • Merged defaults (DR): \"higher\" default policy rules that are merged into more specific \"lower\" policies (as opposed to an atomic less specific set of rules that is activated only when another more specific one is absent)
      • Merged overrides (OR): \"higher\" override policy rules that are merged into more specific \"lower\" policies (as opposed to an atomic less specific set of rules that is activated fully replacing another more specific one that is present)
      • Constraints (C): specialization of an override that, rather than declaring concrete values, specify higher level constraints (e.g., min value, max value, enums) for lower level values, with the semantics of \"clipping\" lower level values so they are enforced, in an override fashion, to be the boundaries dictated by the constraints; typically employed for constraining numeric values and regular patterns (e.g. limited sets)
      • Unsetting (U): specialization that completes a merge default use case by allowing lower level policies to disable (\"unset\") individual defaults set a higher level (as opposed to superseding those defaults with actual, more specific, policy rules with proper meaning)

      Together, these concepts relate to solve the following user stories:

      User story Group Unique ID As a Platform Engineer, when configuring a Gateway, I want to set a default policy for all routes linked to my Gateway, that can be fully replaced with more specific ones(*). D gateway-default-policy As a Platform Engineer, when configuring a Gateway, I want to set default policy rules (parts of a policy) for all routes linked to my Gateway, that can be individually replaced and/or expanded by more specific rules(*). DR gateway-default-policy-rule As a Platform Engineer, when defining a policy that configures a Gateway, I want to set constraints (e.g. minimum/maximum value, enumerated options, etc) for more specific policy rules that are declared(*) with the purpose of replacing the defaults I set for the routes linked to my Gateway. C policy-constraints As a Platform Engineer, when configuring a Gateway, I want to set a policy for all routes linked to my Gateway, that cannot be replaced nor expanded by more specific ones(*). O gateway-override-policy As a Platform Engineer, when configuring a Gateway, I want to set policy rules (parts of a policy) for all routes linked to my Gateway, that cannot be individually replaced by more specific ones(*), but only expanded with additional more specific rules(*). OR gateway-override-policy-rule As an Application Developer, when managing an application, I want to set a policy for my application, that fully replaces any default policy that may exist for the application at the level of the Gateway, without having to know about the existence of the default policy. D route-replace-policy As an Application Developer, when managing an application, I want to expand a default set of policy rules set for my application at the level of the gateway, without having to refer to those existing rules by name. D/O route-add-policy-rule As an Application Developer, when managing an application, I want to unset an individual default rule set for my application at the level of the gateway. U route-unset-policy-rule

      (*) declared in the past or in the future, by myself or any other authorized user.

      The interactive nature of setting policies at levels in the hierarchy and by different personas, make that the following additional user stories arise. These are stories here grouped under the Observability (Ob) aspect of D/O, but referred to as well in relation to the \"Discoverability Problem\" described by Gateway API.

      User story Group Unique ID As one who has read access to Kuadrant policies, I want to view the effective policy enforced at the traffic routed to an application, considering all active defaults and overrides at different policies(*). Ob view-effective-policy As a Platform Engineer, I want to view all default policy rules that may have been replaced by more specific ones(*). Ob view-policy-rule-status As a Policy Manager, I want to view all gateways and/or routes whose traffic is subject to enforcement of a particular policy rule referred by name. Ob view-policy-rule-reach

      (*) declared in the past or in the future, by myself or any other authorized user.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#writing-do-enabled-kuadrant-policies","title":"Writing D/O-enabled Kuadrant Policies","text":"

      Writing a Kuadrant policy enabled for Defaults & Overrides (D/O), to be attached to a network object, involves declaring the following fields at the first level of the spec:

      • targetRef (required): the reference to a hierarchical network object targeted by the policy, typed as a Gateway API PolicyTargetReference or PolicyTargetReferenceWithSectionName type
      • defaults: a block of default policy rules with further specification of a strategy (atomic set of rules or individual rules to be merged into lower policies), and optional conditions for applying the defaults down through the hierarchy
      • overrides: a block of override policy rules with further specification of a strategy (atomic set of rules or individual rules to be merged into lower policies), and optional conditions for applying the overrides down through the hierarchy
      • the bare policy rules block without further qualification as a default or override set of rules \u2013 e.g. the rules field in a Kuadrant AuthPolicy, the limits field in a RateLimitPolicy.

      Between the following mutually exclusive options, either one or the other shall be used in a policy:

      1. defaults and/or overrides blocks; or
      2. the bare set of policy rules (without further qualification as neither defaults nor overrides.)

      In case the bare set of policy rules is used, it is treated implicitly as a block of defaults.

      Supporting specifying the bare set of policy rules at the first level of the spec, alternatively to the defaults and overrides blocks, is a strategy that aims to provide:

      1. more natural usability, especially for those who write policies attached to the lowest level of the hierarchy supported; as well as
      2. backward compatibility for policies that did not support explicit D/O and later on have moved to doing so.
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#inherited-policies-that-declare-an-intent","title":"Inherited Policies that declare an intent","text":"

      A policy that does not specify D/O fields (defaults, overrides) is a policy that declares an intent.

      One who writes a policy without specifying defaults or overrides, but only the bare set of policy rules, may feel like declaring a Direct Policy. Depending on the state of other policies indirectly affecting the same object or not, the final outcome can be the same as writing a direct policy. This is especially true when the policy that declares the intent targets an object whose kind is the lowest kind accepted by Kuadrant in the hierarchy of network resources, and there are no other policies with lower precedence.

      Nevertheless, because other policies can affect the final behavior of the target (e.g. by injecting defaults, by overriding rules, by adding more definitions beneath), policies that simply declare an intent, conceptually, are still Inherited Policies.

      Compared to the inherited policy that misses D/O blocks, these other policies affecting the behavior may be declared:

      • at higher levels in the hierarchy,
      • at lower levels in hierarchy, or even
      • at the same level in the hierarchy but happening to have lower precedence (if such case is allowed by the kind of policy.)

      At any time, any one of these policies can be created and therefore the final behavior of a target should never be assumed to be equivalent to the intent declared by any individual policy in particular, but always collectively determined by the combination of all intents, defaults and overrides from all inherited policies affecting the target.

      From GEP-2649:

      If a Policy can be used as an Inherited Policy, it MUST be treated as an Inherited Policy, regardless of whether a specific instance of the Policy is only affecting a single object.

      An inherited policy that simply declares an intent (i.e. without specifying D/O) will be treated as a policy that implicitly declares an atomic set of defaults, whether the policy targets higher levels in the hierarchy or lower ones. In the absence of any other conflicting policy affecting the same target, the behavior equals the defaults which equal the intent.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#inherited-policies-that-modify-an-intent","title":"Inherited Policies that modify an intent","text":"

      A policy that specifies D/O fields (defaults, overrides) is a policy explicitly declared to modify an intent.

      Without any other policy with lower precedence, there is no special meaning in choosing whether defaults or overrides in a inherited policy that targets an object whose kind is the lowest kind accepted by Kuadrant in the hierarchy of network resources. The sets of rules specified in these policies affect indistinctively the targeted objects, regardless of how they are qualified.

      However, because other policies may ocasionally be declared with lower precedence (i.e. targeting lower levels in the hierarchy or due to ordering, see Conflict Resolution), one who declares a policy to modify an intent must carefuly choose between defaults and/or overrides blocks to organize the policy rules, regardless if the targeted object is of a kind that is the lowest kind in the hierarchy of network resources accepted by Kuadrant.

      Even in the cases where no more than one policy of a kind is allowed to target a same object (1:1 relationship) and thus there should never exist two policies affecting a target from a same level of the hierarchy simultaneaously (or equivalently a policy with lower precedence than another, both at the lowest level of the hierarchy), users must assume that this constraint may change (i.e. N:1 relationship between policies of a kind and target become allowed.)

      In all cases, defaults and overrides must be used with the semantics of declaring rules that modify an intent.

      • When an intent does not specify a rule for which there is a higher default declared, the default modifies the intent by setting the value specified by the default.
      • For an intent that whether specifies or omits a rule for which there is a higher override declared, the override modifies the intent by setting the value specified by the override.
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#identifying-inherited-policy-kinds","title":"Identifying inherited policy kinds","text":"

      All Custom Resource Definitions (CRDs) that define a Kuadrant inherited policy must be labeled gateway.networking.k8s.io/policy: inherited.

      Users can rely on the presence of that label to identify policy kinds whose instances are treated as inhertied policies.

      In some exceptional cases, there may be kinds of Kuadrant policies that do not specify defaults and overrides blocks, but that are still labeled as inherited policy kinds. Instances of these kinds of policies implicitly declare an atomic sets of defaults, similarly to described in Inherited Policies that declare an intent.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#examples-of-do-enabled-kuadrant-policy","title":"Examples of D/O-enabled Kuadrant policy","text":"

      Example 1. Atomic defaults

      kind: AuthPolicy\nmetadata:\n  name: gw-policy\nspec:\n  targetRef:\n    kind: Gateway\n  defaults:\n    rules:\n      authentication:\n        \"a\": {\u2026}\n      authorization:\n        \"b\": {\u2026}\n    strategy: atomic\n

      The above is a proper Inherited Policy that sets a default atomic set of auth rules that will be set at lower objects in case those lower object do not have policies attached of their own at all.

      The following is a sligthly different example that defines auth rules that will be individually merged into lower objects, evaluated one by one if already defined at the \"lower\" (more specific) level and therefore should take precedence, or if otherwise is missing at the lower level and therefore the default should be activated.

      Example 2. Merged defaults

      kind: AuthPolicy\nmetadata:\n  name: gw-policy\nspec:\n  targetRef:\n    kind: Gateway\n  defaults:\n    rules:\n      authentication:\n        \"a\": {\u2026}\n      authorization:\n        \"b\": {\u2026}\n    strategy: merge\n

      Similarly, a set of overrides policy rules could be specified, instead or alongside with the defaults set of policy rules.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#atomic-vs-individually-merged-policy-rules","title":"Atomic vs. individually merged policy rules","text":"

      There are 2 supported strategies for applying proper Inherited Policies down to the lower levels of the herarchy:

      • Atomic policy rules: the bare set of policy rules in a defaults or overrides block is applied as an atomic piece; i.e., a lower object than the target of the policy, that is evaluated to be potentially affected by the policy, also has an atomic set of rules if another policy is attached to this object, therefore either the entire set of rules declared by the higher (less specific) policy is taken or the entire set of rules declared by the lower (more specific) policy is taken (depending if it's defaults or overrides), but the two sets are never merged into one.
      • Merged policy rules: each individual policy rule within a defaults or overrides block is compared one to one against lower level policy rules and, when they conflict (i.e. have the same key with different values), either one or the other (more specific or less specific) is taken (depending if it's defaults or overrides), in a way that the final effective policy is a merge between the two policies.

      Each block of defaults and overrides must specify a strategy field whose value is set to either atomic or merge. If omitted, atomic is assumed.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#level-of-granularity-of-compared-policy-rules","title":"Level of granularity of compared policy rules","text":"

      Atomic versus merge strategies, as a specification of the defaults and overrides blocks, imply that there are only two levels of granularity for comparing policies vis-a-vis.

      • atomic means that the level of granularity is the entire set of policy rules within the defaults or overrides block. I.e., the policy is atomic, or, equivalently, the final effective policy will be either one indivisible (\"atomic\") set of rules (\"policy\") or the other.

      • For the merge strategy, on the other hand, the granularity is of each named policy rule, where the name of the policy rule is the key and the value is an atomic object that specifies that policy rule. The final effective policy will be a merge of two policies.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#matrix-of-do-strategies-and-effective-policy","title":"Matrix of D/O strategies and Effective Policy","text":"

      When two policies are compared to compute a so-called Effective Policy out of their sets of policy rules and given default or override semantics, plus specified atomic or merge strategies, the following matrix applies:

      Atomic (entire sets of rules) Merge (individual policy rules at a given granularity) Defaults More specific entire set of rules beats less specific entire set of rules \u2192 takes all the rules from the lower policy More specific individual policy rules beat less specific individual set of rules \u2192 compare one by one each pair of policy rules and take the lower one if they conflict Overrides Less specific entire set of rules beats more specific entire set of rules \u2192 takes all the rules from the higher policy Less specific individual policy rules beat more specific individual set of rules \u2192 compare one by one each pair of policy rules and take the higher one if they conflict

      The order of the policies, from less specific (or \"higher\") to more specific (or \"lower), is determined according to the Gateway API hierarchy of network resources, based on the kind of the object targeted by the policy. The policy that sets higher in the hierarchy dictates the strategy to be applied.

      For a more detailed reference, including how to resolve conflicts in case of policies targeting objects at the same level, see GEP-713's section Hierarchy and Conflict Resolution.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#unsetting-inherited-defaults","title":"Unsetting inherited defaults","text":"

      In some cases, it may be desirable to be able to unset, at a lower policy, a merged default that is inherited from a higher one. In fact, some inherited defaults could be harmful to an application, at the same time as they are unfeasible to remove from scope for all applications altogether, and therefore require an exception.

      Unsetting defaults via specification at lower level policies provides users who own policy rules at different levels of the hirarchy the option of not having to coordinate those exceptions \"offline\", nor having to accept the addition of special cases (conditions) at the higher level to exempt only specific lower policies from being affected by a particular default, which otherwise would configure a violation of the inheritance pattern, as well as an imposition of additional cognitive complexity for one who reads a higher policy with too many conditions.

      Instead, users should continue to be able to declare their intents through policies, and redeem an entitlement to unset unapplicable defaults, without any leakage of lower level details upwards at the higher policies.

      The option of unsetting inherited defaults is presented as part of the volition implied by the inheritance of policy rules, which are tipically specified for the more general case (e.g. at the level of a gateway, for all routes), though not necessarily applicable for all special cases beneath. If enabled, this feature helps disambiguate the concept of \"default\", which should not be understood strictly as the option to set values that protect the system in case of lack of specialisation. Rather, by its property of volition and changeability. I.e., by definition, every default policy rule is opt-out and specifies a value that is modifiable.

      In constrast, a policy rule that is neither opt-out nor modifiable better fits the definition of an override. While a policy rule that is not opt-out, nor it sets a concrete default value to be enforced in the lack of specialisation, defines a requirement.

      Finally, for the use case where users want to set defaults that cannot be unset (though still modifable), the very feature of unsetting defaults itself should be configurable, at least at the level of the system. This can be achieved with feature switches and policy validation, including backed by the cluster's RBAC if needed.

      The capability of unsetting inherited defaults from an effective policy can be identified by the presence of the spec.unset field in a policy. The value is a list of default named policy rules to be unset.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#conditionally-applying-do","title":"Conditionally applying D/O","text":"

      Users should be able to specify conditions for applying their blocks of defaults and overrides. These conditions aim to support exceptional cases where the blocks cannot be simply applied downwards, but rather depend on specifics found in the lower policies, while still defined in generic terms \u2013 as opposed to conditions that leak details of individual lower policies upwards.

      Between a higher and a lower set of policy rules, the higher level dictates the conditions for its rules to be applied (either as defaults or as overrides) over the lower level, and never the other way around.

      D/O conditions are identfied by the presence of the spec.defaults.when or spec.overrides.when fields in a policy. Those should be defined using Common Expression Language (CEL), evaluated in the control plane against the lower level specification that the higher level is being applied to. I.e. self in the CEL expression is the lower policy.

      A concrete useful application for conditionally enforcing a block of D/O is for specifying constraints for lower values. E.g. if a lower policy tries to set a value on a numeric field that is greater (or lower) than a given threshold, apply an override that sets that field value to equal to the threshold; otherwise, use the value declared by the lower policy.

      In contrast, an example of trivially redundant application of D/O conditions would be specifying a default block of rules that is only applied when the lower level does not declare a more specific replacement. Since this is natural semantics of a default, one does not have to use conditions for that.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#examples-of-do-cases","title":"Examples of D/O cases","text":"

      The following sets of examples generalize D/O applications for the presented user stories, regardless of details about specific personas and kinds of targeted resources. They illustrate the expected behavior for different cases involving defaults, overrides, constraints and unsetting.

      Examples Highlighted user stories A. Default policy entirely replaced by another at lower level gateway-default-policy, route-replace-policy B. Default policy rules merged into policies at lower level gateway-default-policy-rule, route-add-policy-rule C. Override policy entirely replacing other at lower level gateway-override-policy D. Override policy rules merged into other at lower level gateway-override-policy-rule E. Override policy rules setting constraints to other at lower level policy-constraints F. Policy rule that unsets a default from higher level route-unset-policy-rule

      In all the examples, a Gateway and a HTTPRoute objects are targeted by two policies, and an effective policy is presented highlighting the expected outcome. This poses no harm to generalizations involving same or different kinds of targeted resources, multiples policies targeting a same object, etc.

      The leftmost YAML is always the \"higher\" (less specific) policy; the one in the middle, separated from the leftmost one by a \"+\" sign, is the \"lower\" (more specific) policy; and the rightmost YAML is the expected Effective Policy.

      For a complete reference of the order of hierarchy, from least specific to most specific kinds of resources, as well as how to resolve conflicts of hierarchy in case of policies targeting objects at the same level, see Gateway API's Hierarchy definition for Policy Attachment and Conflict Resolution.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#examples-a-default-policy-entirely-replaced-by-another-at-lower-level","title":"Examples A - Default policy entirely replaced by another at lower level","text":"

      Example A1. A default policy that is replaced entirely if another one is set at a lower level

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#examples-b-default-policy-rules-merged-into-policies-at-lower-level","title":"Examples B - Default policy rules merged into policies at lower level","text":"

      Example B1. A default policy whose rules are merged into other policies at a lower level, where individual default policy rules can be overridden or unset - without conflict

      Example B2. A default policy whose rules are merged into other policies at a lower level, where individual default policy rules can be overridden or unset - with conflict

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#examples-c-override-policy-entirely-replacing-other-at-lower-level","title":"Examples C - Override policy entirely replacing other at lower level","text":"

      Example C1. An override policy that replaces any other that is set at a lower level entirely

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#examples-d-override-policy-rules-merged-into-other-at-lower-level","title":"Examples D - Override policy rules merged into other at lower level","text":"

      Example D1. An override policy whose rules are merged into other policies at a lower level, overriding individual policy rules with same identification - without conflict

      Example D2. An override policy whose rules are merged into other policies at a lower level, overriding individual policy rules with same identification - with conflict

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#examples-e-override-policy-rules-setting-constraints-to-other-at-lower-level","title":"Examples E - Override policy rules setting constraints to other at lower level","text":"

      The examples in this section introduce the proposal for a new when field for the defaults and overrides blocks. This field dictates the conditions to be found in a lower policy that would make a higher policy or policy rule to apply, according to the corresponding defaults or overrides semantics and atomic or merge strategy.

      Combined with a simple case of override policy (see Examples C), the when condition field allows modeling for use cases of setting constraints for lower-level policies.

      As here proposed, the value of the when condition field must be a valid Common Expression Language (CEL) expression.

      Example E1. An override policy whose rules set constraints to field values of other policies at a lower level, overriding individual policy values of rules with same identification if those values violate the constraints - lower policy is compliant with the constraint

      Example E2. An override policy whose rules set constraints to field values of other policies at a lower level, overriding individual policy values of rules with same identification if those values violate the constraints - lower level violates the constraint

      Example E3. An override policy whose rules set constraints to field values of other policies at a lower level, overriding individual policy values of rules with same identification if those values violate the constraints - merge granularity problem

      The following example illustrates the possibly unintended consequences of enforcing D/O at strict levels of granularity, and the flip side of the strategy field offering a closed set of options (atomic, merge).

      On one hand, the API is simple and straightforward, and there are no deeper side effects to be concerned about, other than at the two levels provided (atomic sets or merged individual policy rules.) On the other hand, this design may require more offline interaction between the actors who manage conflicting policies.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#examples-f-policy-rule-that-unsets-a-default-from-higher-level","title":"Examples F - Policy rule that unsets a default from higher level","text":"

      The examples in this section introduce a new field unset: []string at the same level as the bare set of policy rules. The value of this field, provided as a list, dictates the default policy rules declared at a higher level to be removed (\"unset\") from the effective policy, specified by name of the policy rules.

      Example F1. A policy that unsets a default policy rule set at a higher level

      Example F2. A policy that tries to unset an override policy rule set a higher level

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#status-reporting-and-policy-discoverability","title":"Status reporting and Policy discoverability","text":""},{"location":"architecture/rfcs/0009-defaults-and-overrides/#possible-statuses-of-an-inherited-policy","title":"Possible statuses of an inherited policy","text":"

      An inherited policy can be at any of the following conditions (RFC 0004):

      Type Status Reason Message Accepted True \"Accepted\" \"Policy has been accepted\" False \"Conflicted\" \"Policy is conflicted by <policy-ns/policy-name>\" False \"Invalid\" \"Policy is invalid\" False \"TargetNotFound\" \"Policy target <resource-name> was not found\" Enforced True \"Enforced\" \"Policy has been successfuly enforced[. The following defaults have been added by : x, y]\" True \"PartiallyEnforced\" \"Policy has been successfuly enforced. The following rules have been overridden by : a, b[; the following defaults have been added by : x, y]\" False \"Overridden\" \"Policy has been overridden by <policy-ns/policy-name>\" False \"Unknown\" \"Policy has encountered some issues\""},{"location":"architecture/rfcs/0009-defaults-and-overrides/#policy-discoverability-and-effective-policy","title":"Policy discoverability and Effective policy","text":"

      A special condition must be added to every object that is targeted by a Kuadrant inherited policy if the policy's Enforced status condition is True.

      This special condition to be added to the target object is kuadrant.io/xPolicyAffected, where \"xPolicy\" is the kind of the inherited policy (e.g. AuthPolicy, RateLimitPolicy.)

      The possible statuses of an object regarding its sensitivity to one or more inherited policies are:

      Type Status Reason Message xPolicyAffected False \"Unaffected\" \"The object is not affected by any xPolicy\" True \"Affected\" \"The object is affected by xPolicy <policy-ns/policy-name>\" True \"PartiallyAffected\" \"The following sections of the object are affected by xPolicy <policy-ns/policy-name>: rules.0, rules.2\"

      The presence of the PolicyAffected status condition helps identify that an object is sensitive to one of more policies of a kind, and gives some specifics about the scope of that effect (entire object or selected sections.) In many cases, this should be enough for inferring the actual policy rules being enforced for that object.

      For other cases where any of the following situations hold, a more detailed view of the final Effective Policy must be provided to the user:

      • If the rules of the policy cannot be inferred by the name of the policy and/or the user lacks permission to read the policy object;
      • If the object is affected by more than one policy.

      To help visualize the effective policy for a given target object in that situation, at least one of the following options must be provided to the user:

      1. A read-only EffectivePolicy custom resource, defined for each kind of inherited policy, and with an instance created for each affected object, that is reconciled and updated by the policy controller.
      2. A HTTP endpoint of the policy controller that users can consume to read the effective policy.
      3. A CLI tool that offers a command that queries the cluster and returns the effective policy \u2013 either by leveraging any of the methods above or computing the effective policy \"on-the-fly\" in the same fashion as the policy controller does.
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#reference-level-explanation","title":"Reference-level explanation","text":""},{"location":"architecture/rfcs/0009-defaults-and-overrides/#applying-policies","title":"Applying policies","text":"

      The following diagrams are a high level model to guide the process of applying a set of policies of a kind for a given Gateway object, where the Gateway object is considered the root of a hierarchy, and for all objects beneath, being the xRoute objects the leaves of the hierarchical tree.

      As presented, policies can target either Gateways of route objects (HTTPRoutes, GRPCRoutes), with no restriction regarding the number of policies of a kind that target a same particular object. I.e. N:1 relationship allowed. Without any loss of generality, 1:1 relationship between policies of a kind and targeted objects can be imposed if preferred as a measure to initially reduce the blast of information for the user and corresponding cognitive load.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#apply-policies-to-a-gateway-root-object-and-all-objects-beneath","title":"Apply policies to a Gateway (root object) and all objects beneath","text":"
      %%{ init: { \"theme\": \"neutral\" } }%%\nflowchart LR\n    start([For a Gateway <i>g</i><br>and policy kind <i>pk</i>]) -->\n    list-routes[List all routes<br>accepted by <i>g</i> as <i>R</i>] -->\n    apply-policies-for-r\n    subgraph for-each-route[For each <i>r in R</i>]\n        apply-policies-for-r[[Apply policies<br>of kind <i>pk</i><br>scoped for <i>r</i>]] -->\n        apply-policies-for-r\n    end\n    for-each-route -->\n    build-virtual-route[Build a virtual route <i>vr</i><br>with all route rules not<br>target by any policy] -->\n    apply-policies-for-vr[[Apply policies<br>of kind <i>pk</i><br>scoped for <i>vr</i>]] -->\n    finish(((END)))
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#apply-policies-of-a-kind-for-an-object","title":"Apply policies of a kind for an object","text":"
      %%{ init: { \"theme\": \"neutral\" } }%%\nflowchart LR\n    apply-policies-for-o-start([Apply policies of kind <i>pk</i><br>scoped for an object <i>o</i>]) -->\n    list-policies[Make <i>P</i> \u2190 all policies <br>of kind <i>pk</i> that<br>affect <i>o</i>] -->\n    sort-policies[Sort <i>P</i> from<br>lowest to highest] -->\n    build-effective-policy[Build an effective<br>policy <i>ep</i> without<br>any policy rules] -->\n    merge-p-into-ep\n    subgraph for-each-policy[For each policy <i>p in P</i>]\n        merge-p-into-ep[[Merge <i>p into <i>ep</i>]] -->\n        merge-p-into-ep\n    end\n    for-each-policy -->\n    reconcile-ep[Reconcile resources<br>for <i>ep</i>] -->\n    apply-policies-for-o-finish(((END)))
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#merging-two-policies-together","title":"Merging two policies together","text":"
      %%{ init: { \"theme\": \"neutral\" } }%%\nflowchart LR\n    merge-p1-into-p2-start([Merge policy <i>p1</i><br>into policy <i>p2</i>]) -->\n    p1-format{Explicit<br><i>defaults</i> or <i>overrides</i><br>declared in <i>p1</i>?}\n    p1-format -- Yes --> merge-defaults-for-r[[\"Merge <b>defaults</b> block<br>of policy rules<br>of <i>p1</i> into <i>p2</i>\"]] --> merge-overrides-for-r[[\"Merge <b>overrides</b> block<br>of policy rules<br>of <i>p1</i> into <i>p2</i>\"]] --> merge-p1-into-p2-finish(((Return <i>p2</i>)))\n    p1-format -- No --> merge-bare-rules-for-r[[\"Merge ungrouped<br>block of policy rules<br>of <i>p1</i> into <i>p2</i><br>(as <b>defaults</b>)\"]] --> merge-p1-into-p2-finish
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#merging-a-generic-block-of-policy-rules-defaults-or-overrides-into-a-policy-with-conditions","title":"Merging a generic block of policy rules (defaults or overrides) into a policy with conditions","text":"
      %%{ init: { \"theme\": \"neutral\" } }%%\nflowchart LR\n    merge-block-of-rules-into-p-start([Merge block of<br>policy rules <i>B</i><br>into policy <i>p</i>]) -->\n    r-conditions-match{\"<i>B.when(p)</i>\"}\n    r-conditions-match -- \"Conditions do not match\" --> merge-block-of-rules-into-p-finish(((Return <i>p</i>)))\n    r-conditions-match -- \"Conditions match\" --> block-semantics{Merge <i>B</i> as}\n    block-semantics -- \"Defaults\" --> merge-default-block-into-p[[Merge default block<br>of policy rules <i>B</i><br>into policy <i>p</i>]] --> merge-block-of-rules-into-p-finish\n    block-semantics -- \"Overrides\" --> merge-override-block-into-p[[Merge override block<br>of policy rules <i>B</i><br>into policy <i>p</i>]] --> merge-block-of-rules-into-p-finish
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#merge-a-defaults-block-of-policy-rules-into-a-policy","title":"Merge a defaults block of policy rules into a policy","text":"
      %%{ init: { \"theme\": \"neutral\" } }%%\nflowchart LR\n    merge-default-block-into-p-start([Merge default block<br>of policy rules <i>B</i><br>into policy <i>p</i>]) -->\n    unset-unwanted-policy-rules[Remove from <i>B</i><br>all policy rules<br>listed in <i>p.unset</i>] -->\n    p-empty{<i>p.empty?</i>}\n    p-empty -- \"Yes\" --> full-replace-p-with-defaut-block[<i>p.rules \u2190 B</i>] --> merge-default-block-into-p-finish(((Return <i>p</i>)))\n    p-empty -- \"No\" --> default-block-strategy{<i>B.strategy</i>}\n    default-block-strategy -- \"Atomic\" --> merge-default-block-into-p-finish\n    default-block-strategy -- \"Merge\" --> default-p-r-exists\n    subgraph for-each-default-policy-rule[\"For each <i>r in B<i>\"]\n        default-p-r-exists{\"<i>p[r.id].exists?</i>\"}\n        default-p-r-exists -- \"Yes\" --> default-p-r-exists\n        default-p-r-exists -- \"No\" --> default-replace-pr[\"<i>p[r.id] \u2190 r</i>\"] --> default-p-r-exists\n    end\n    for-each-default-policy-rule -->\n    merge-default-block-into-p-finish
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#merge-an-overrides-block-of-policy-rules-into-a-policy","title":"Merge an overrides block of policy rules into a policy","text":"
      %%{ init: { \"theme\": \"neutral\" } }%%\nflowchart LR\n    merge-override-block-into-p-start([Merge override block<br>of policy rules <i>B</i><br>into policy <i>p</i>]) -->\n    override-block-strategy{<i>B.strategy</i>}\n    override-block-strategy -- \"Atomic\" --> full-replace-p-with-override-block[<i>p.rules \u2190 B</i>] --> merge-override-block-into-p-finish(((Return <i>p</i>)))\n    override-block-strategy -- \"Merge\" --> override-replace-pr\n    subgraph for-each-override-policy-rule[\"For each <i>r in B<i>\"]\n        override-replace-pr[\"<i>p[r.id] \u2190 r</i>\"] --> override-replace-pr\n    end\n    for-each-override-policy-rule -->\n    merge-override-block-into-p-finish
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#implementation-tiers","title":"Implementation tiers","text":"

      This section proposes a possible path for the implementation of this RFC for Kuadrant's existing kinds of policies that are affected by D/O \u2013 notably AuthPolicy and RateLimitPolicy.

      The path is divided in 3 tiers that could be delivered in steps, additionaly to a series of enhancements & refactoring.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#tier-1","title":"Tier 1","text":"
      • Atomic defaults (currently supported; missing addition of the defaults field to the APIs)
      • Atomic overrides
      • Policy status and Policy discoverability (i.e. PolicyAffected status on target objects)
      • CRD labels gateway.networking.k8s.io/policy: inherited | direct
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#tier-2","title":"Tier 2","text":"
      • D/O when conditions (and support for \"constraints\")
      • Merge strategy
      • Reporting of effective policy
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#tier-3","title":"Tier 3","text":"
      • Unsetting (unset)
      • Metrics for D/O policies (control plane)
      • Docs: possible approaches for \"requirements\"
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#enhancements-and-refactoring","title":"Enhancements and refactoring","text":"
      • Extract generic part of D/O implementation to Kuadrant/gateway-api-machinery.
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#drawbacks","title":"Drawbacks","text":"

      See Mutually exclusive API designs > Design option: strategy field.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#rationale-and-alternatives","title":"Rationale and alternatives","text":""},{"location":"architecture/rfcs/0009-defaults-and-overrides/#mutually-exclusive-api-designs","title":"Mutually exclusive API designs","text":"

      The following alternatives were considered for the design of the API spec to support D/O:

      1. strategy field - RECOMMENDED
      2. granularity field
      3. when conditions (at any level of the spec)
      4. CEL functions (at any level of the spec)
      5. \u201cpath-keys\u201d
      6. JSON patch-like

      All the examples in the RFC are based on API design strategy field.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#design-option-strategy-field","title":"Design option: strategy field","text":"

      Each block of defaults and overrides specify a field strategy: atomic | merge, with atomic assumed if the field is omitted.

      All the examples in the RFC are based on this design for the API spec.

      Some of the implications of the design are explained in the section Atomic vs. individually merged policy rules, with highlights to the support for specifying the level of atomicity of the rules in the policy based on only 2 granularities \u2013 entire set of policy rules (atomic) or to the level of each named policy rule (merge.)

      \u2705 Pros \u274c Cons
      • Same schema as a normal policy without D/O
      • Declarative
      • Safe against \"unmergeable objects\" (e.g. two rules declaring different one-of options)
      • Strong types
      • Extensible (by adding more fields, e.g.: to support unsetting defaults)
      • Easy to learn
      • 2 levels of granularity only \u2013 either all (\u2018atomic\u2019) or policy rule (\u2018merge\u2019)
      • 1 granularity declaration per D/O block \u2192 declaring both \u2018atomic\u2019 and \u2018merge\u2019 simultaneously requires 2 separate policies targeting the same object

      The design option based on the strategy field is the RECOMMENDED design for the implementation of Kuadrant Policies enabled for D/O. This is due to the pros above, plus the fact that this design can evolve to other, more versatile forms, such as granularity field, when conditions or CEL functions, in the future, while the opposite would be harder to achieve.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#design-option-granularity-field","title":"Design option: granularity field","text":"

      Each block of defaults and overrides would specify a granularity field, set to a numeric integer value that describes which level of the policy spec, from the root of the set of policy rules until that number of levels down, to treat as the key, and the rest as the atomic value.

      Example:

      kind: AuthPolicy\nmetadata:\n  name: gw-policy\nspec:\n  targetRef:\n    kind: Gateway\n  defaults:\n    rules:\n      authentication:\n        \"a\": {\u2026}\n      authorization:\n        \"b\": {\u2026}\n    granularity: 0 # the entire spec (\"rules\") is an atomic value\n  overrides:\n    rules:\n      metadata:\n        \"c\": {\u2026}\n      response:\n        \"d\": {\u2026}\n    granularity: 2 # each policy rule (\"c\", \"d\") is an atomic value\n
      \u2705 Pros \u274c Cons
      • Same as design option strategy field
      • Unlimited levels of granularity (values can be pointed as atomic at any level)
      • 1 granularity declaration per D/O block \u2192 N levels simultaneously require N policies
      • Granularity specified as a number - user needs to count the levels
      • Setting a deep level of granularity can cause merging \"unmergeable objects\"
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#design-option-when-conditions-at-any-level-of-the-spec","title":"Design option: when conditions (at any level of the spec)","text":"

      Inspired by the extension of the API for D/O with an additional when field (see Examples E), this design alternative would use the presence of this field to signal the granularity of the atomic operation of default or override.

      Example:

      kind: AuthPolicy\nmetadata:\n  name: gw-policy\nspec:\n  targetRef:\n    kind: Gateway\n  defaults:\n    rules:\n      authentication:\n        \"a\": {\u2026}\n        when: CEL # level 1 - entire \"authentication\" block\n      authorization:\n        \"b\":\n          \"prop-1\": {\u2026}\n          when: CEL # level 2 - \"b\" authorization policy rule\n
      \u2705 Pros \u274c Cons
      • Same as granularity field
      • As many granularity declarations per D/O block as complex objects in the policy
      • Granularity specified \u201cin-place\u201d
      • Setting a deep level of granularity can cause merging \"unmergeable objects\"
      • Implementation nightmare - hard to define the API from existing types
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#design-option-cel-functions-at-any-level-of-the-spec","title":"Design option: CEL functions (at any level of the spec)","text":"

      This design option leans on the power of Common Expression Language (CEL), extrapolating the design alternative with when conditions beyond declaring a CEL expression just to determine if a statically declared value should apply. Rather, it proposes the use of CEL functions that outputs the value to default to or to ovrride with, taking the conflicting \"lower\" value as input, with or without a condition as part of the CEL expression. The value of a key set to a CEL function indicates the level of granularity of the D/O operation.

      Example:

      kind: AuthPolicy\nmetadata:\n  name: gw-policy\nspec:\n  targetRef:\n    kind: Gateway\n  defaults:\n    rules:\n      authentication:\n        \"a\": {\u2026} # static value\n        \"b\": \"cel:self.value > 3 ? AuthenticationRule{value: 3} : self\"\n      authorization: |\n        cel:Authorization{\n          c: AuthorizationRule{prop1: \"x\"}\n        }\n
      \u2705 Pros \u274c Cons
      • Unlimited levels of granularity
      • Granularity specified \u201cin-place\u201d
      • Extremely powerful
      • Elegant and simple implementation-wise
      • Weakly typed
      • Implementation completely new \u2013 cannot reuse current API types
      • Requires all types to be defined as protobufs
      • Without strong guardrails, users can easily shoot themselves in the foot
      • Validation likely requires complex functions for parsing the CEL expressions
      • Non-declarative
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#design-option-path-keys","title":"Design option: \u201cpath-keys\u201d","text":"

      A more radical alternative considered consisted of defining defaults and overrides blocks whose schemas would not match the ones of a normal policy without D/O. Instead, these blocks would consist of simple key-value pairs, where the keys specify the paths in an affected policy where to apply the value atomically.

      Example:

      kind: AuthPolicy\nmetadata:\n  name: gw-policy\nspec:\n  targetRef:\n    kind: Gateway\n  defaults:\n    \"rules.authentication\":\n      \"a\": {G}\n    \"rules.authorization.b\": {G}\n
      \u2705 Pros \u274c Cons
      • D/O as simple key-value sets (keys: where to apply, values: what to apply)
      • Declarative
      • Unlimited levels of granularity (values can be pointed as atomic at any level)
      • Unlimited merge declarations per D/O block
      • Intuitive, easy-to-learn
      • Not same schema as the normal policy (without D/O) - not very GWAPI-like
      • Weakly typed (i.e. map[string]any)
      • Not extensible (e.g., cannot add other fields to the API)
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#design-option-json-patch-like","title":"Design option: JSON patch-like","text":"

      Similar to the path-keys design option, inspired by JSON patch operations, to provide more kinds of operations and extensibility.

      Example:

      kind: AuthPolicy\nmetadata:\n  name: gw-policy\nspec:\n  targetRef:\n    kind: Gateway\n  defaults:\n\n  - path: rules.authentication\n    operation: add\n    value: { \"a\": {G} }\n  - path: rules.authorization.b\n    operation: remove\n  - path: |\n      rules.authentication.a.\n      value\n    operation: le\n    value: 50\n
      \u2705 Pros \u274c Cons
      • Same as \"path-keys\" field
      • Extensible, all kinds of operations supported (add, remove, constraint)
      • Not same schema as the normal policy (without D/O) - not very GWAPI-like
      • Less declarative
      • Weakly typed (i.e. value: any)
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#prior-art","title":"Prior art","text":"

      Other than the primitive support only for implicit atomic defaults provided by Kuadrant for the AuthPolicy and RateLimitPolicy, other real-life implementations of D/O along the lines proposed by Gateway API are currently unknown.

      Some orientative examples provided in:

      • GEP-2649 - search for \"CDNCachingPolicy\" as well as \"Merging into existing spec fields\";
      • gwctl effective policy calculation for inherited policies - see policy manager's merge test cases.
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#out-of-scope","title":"Out of scope","text":""},{"location":"architecture/rfcs/0009-defaults-and-overrides/#policy-requirements","title":"Policy requirements","text":"

      A use case often described in association with D/O is the one for declaring policy requirements. These are high level policies that declare requirements to be fulfilled by more specific (lower level) policies without specifying concrete default or override values nor constraints. E.g.: \"an authentication policy must be enforced, but none is provided by default.\"

      A typical generic policy requirement user story is:

      As a Platform Engineer, when configuring a Gateway, I want to set policy requirements to be fulfilled by one who manages an application/route linked to my Gateway, so all interested parties, including myself, can be aware of applications deployed to the cluster that lack a particular policy protection being enforced.

      Policy requirements as here described are out of scope of this RFC.

      We believe policy requirement use cases can be stated and solved as an observability problem, by defining metrics and alerts that cover for missing policies or policy rules, without necessarily having to write a policy of the same kind to express such requirement to be fulfilled.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#unresolved-questions","title":"Unresolved questions","text":""},{"location":"architecture/rfcs/0009-defaults-and-overrides/#merging-policies-with-references-to-external-objects","title":"Merging policies with references to external objects","text":"

      How to handle merges of policies from different namespaces that contain references to other objects (e.g. Secrets)?

      Often policies rules include references to other Kubernetes objects, such as Secrets, typically defined in the same namespace as the policy object. When merging policies from different namespaces, these references need to be taken into account.

      If not carried along with the derivative resources (e.g. Authorino AuthConfig objects) that are created from a merge of policies (or from the computed effective policy), composed out of definitions from different namespaces, and that depend on those references, these references to external objects can be broken.

      This is not much of a problem for atomic D/O only, as the derivative objects that depend on the references could be forced to be created in the same namespace as the policy that wins against all the others \u2013 and therefore in the same namespace of the winning referents as well. However, when merging policies, we can run into a situation where final effective policies (thus also other derivative resources) contain references to objects inherited from definitions from other namespaces.

      Possible solutions to this problem include:

      1. Copying the referenced objects into the namespace where the derivative resources will be created.
      2. Involves maintaining (watching and reconciling) those referenced objects
      3. May raise security concerns
      4. Allowing derivative resources (e.g. Authorino AuthConfigs) to reference objects across namespaces, as well as giving permissions to the components that process those references (e.g. Authorino) to read across namespaces
      5. May raise security concerns
      6. Should probably be restricted to derivative resources created by Kuadrant and not allowed to users who create the derivative resources themselves
      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#policy-spec-resembling-more-the-target-spec","title":"Policy spec resembling more the target spec","text":"

      Should Kuadrant's inherited policy specs resemble more the specs of the objects they target?

      The UX for one who writes a Kuadrant policy of the inherited class of policies is arguably not very different from writing any custom resource that happens to specify a targetRef field. Other than name and kind of target object, there is nothing much in a Kuadrant policy custom resource that provides the user with an experience almost close to be \"adding fields\" in the target object.

      With the exception of a few types reused for the route selectors, the spec of a Kuadrant policy is very different from the spec of the object that ultimately the policy augments, i.e. the spec of the route object. This remains basically unchanged after this RFC. However, another way to think on the design of those APIs is one where, in contrast, the specs of the policies partially mirror the spec of the route, so users can write policies in a more intuitive fashion, as if the definitions of the policy would look like extensions of the routes they target (directly or by targeting gateways the routes are attached to.)

      E.g.:

      kind: HTTPRoute\nmetadata:\n  name: my-route\nspec:\n  rules:\n\n  - name: rule-1\n    matches:\n    - method: GET\n    backendRef: {\u2026}\n  - name: rule-2\n    backendRef: {\u2026}\n

      An inherited policy that targets the HTTPRoute above could otherwise look like the following:

      kind: Policy\nmetadata:\n  name: my-policy\nspec:\n  targetRef:\n    kind: HTTPRoute\n    name: my-route\n  defaults: # mirrors the spec of the httproute object\n    policySpecificDef: {\u2026} # augments the entire httproute object\n  overrides: # mirrors the spec of the httproute object\n    rules:\n\n    - name: rule-2\n      policySpecificDef: {\u2026} # augments only httprouterule rule-2 of the httproute object\n

      The above already is somewhat closer to being true for the AuthPolicy API, than it is for the RateLimitPolicy one. However, that is strictly coincidental, because the AuthPolicy's spec happens to specify a rules field, where the equivalent at the same level in RateLimitPolicy is called limits.

      This alternative design could make writing policies more like defining filters in an HTTPRoute, with the difference that policies are external to the target they extend (while filters are internal.) At the same time, it could be a replacement for Kuadrant route selectors, where the context of applicability of a policy rule is given by the very structure within the spec how the policy rule is declared (resembling the one of the target), thus also would shaping context for D/O.

      One caveat of this design though is that each policy specific definition (i.e. the rule specification that extends the object at a given point defined by the very structure of the spec) is exclusive of that given point in the structure of the object. I.e., one cannot specify a single policy rule that augments N > 1 specific rules of a target HTTPRoute.

      Due to its relevance to the design of the API that enables D/O, this was left as an unresolved question. To be nonetheless noticed that, as a pattern, this alternative API design extends beyond inherited policies, impacting as well the direct policy kinds DNSPolicy and TLSPolicy.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#future-possibilities","title":"Future possibilities","text":""},{"location":"architecture/rfcs/0009-defaults-and-overrides/#n1-policy-target-relationship","title":"N:1 policy-target relationship","text":"

      Although this proposal was thought to keep options open for multiple policies of a kind targeting a same network resource, this is currently not the state of things for Kuadrant. Instead, Kuadrant enforces 1:1 relationship between policies of a kind and target resources.

      Supporting N:1 relationships could enable use cases such as of App Developers defining D/O for each other at the same level of a shared xRoute, as well as Platform Engineers setting different policy rules on the same Gateway.

      This could provide an alternative to achieving separation of concerns for complex policy kinds such as the AuthPolicy, where different users could be responsible for authentication and authorization, without necessarily depending on defining new kinds of policies.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#route-rule-name-and-targetrefsectionname","title":"Route rule name and targetRef.sectionName","text":"

      If Gateway API's GEP-995 is accepted (i.e. kubernetes-sigs/gateway-api#2593 gets merged) and the name field for route rules implemented in the APIs (HTTPRoute and GRPCRoute), this could impact how Kuadrant delivers D/O. Although the semantics could remain the same, the users specify the scope for a given set of policy rules could simplify significantly.

      As of today, Kuadrant's AuthPolicy and RateLimitPolicy APIs allow users to target sections of a HTTPRoute based on route selectors, and thus all the conflict resolution involved in handling D/O must take that logics into account.

      With named route rules supported by Gateway API, either route selectors could be redefined in a simpler form where each selector consists of a list of names of rules and/or entire policies could be scoped for a section of a resource, by defining the targetRef field based on the PolicyTargetReferenceWithSectionName type.

      To be noted GEP-2649's recommendation of not defining inherited policies that allow for sectionName in the targetRef. Nonetheless, this is a general rule from the spec said to be acceptable to be broken in the spirit of offering better functionality to users, provided it can deal with the associated discoverability and complexity problems of this feature.

      "},{"location":"architecture/rfcs/0009-defaults-and-overrides/#use-listmaptype-instead-of-maps-of-policy-rules","title":"Use listMapType instead of maps of policy rules","text":"

      Despite having recently modified the AuthPolicy and RateLimitPolicy APIs to use maps for declaring policy rules instead of lists (RFC 0001), reverting this design in future versions of these APIs, plus treating those lists as listMapType, could let us leverage the API server's strategic merge type to handle merges between policy objects.

      In the Policy CRDs, the policy rule types must specify a name field (required). The list of rules type (i.e. []Rule) must then speficy the following Kubebuilder CRD processing annotations:

      // +listType=map\n// +listMapKey=name\n
      1. As the time of writing, GEP-713 (Kubernetes Gateway API, SIG-NETWORK) is under revision, expected to be split into two separate GEPs, one for Direct Policies (GEP-2648) and one for Inherited Policies (GEP-2649.) Once these new GEPs supersede GEP-713, all references to the previous GEP in this document must be updated to GEP-2649.\u00a0\u21a9

      "},{"location":"architecture/rfcs/0010-gateway-api-metrics-exporter/","title":"Gateway API Metrics Exporter","text":"
      • Feature Name: gateway-api-metrics-exporter
      • Start Date: 2024-07-26
      • RFC PR: Kuadrant/architecture#101
      • Issue tracking: kuadrant-operator/issues/675
      "},{"location":"architecture/rfcs/0010-gateway-api-metrics-exporter/#summary","title":"Summary","text":"

      A new sub-project for a prometheus exporter that exports metrics about the state of Gateway API resources in a Kubernetes cluster.

      "},{"location":"architecture/rfcs/0010-gateway-api-metrics-exporter/#motivation","title":"Motivation","text":"

      Allow additional stateful information about Gateway API resources to be made available via metrics. Currently a set of metrics are made available via the gateway-api-state-metrics project. However, there are limitations with what resource information can be exposed using the underlying kube-state-metrics project. Additional stateful information would include:

      • Individual listener status within a Gateway
      • HTTPRoute status

      For example, the individual status listener information from a Gateway:

        status:\n    listeners:\n\n    - attachedRoutes: 1\n      conditions:\n      - lastTransitionTime: \"2023-08-15T13:22:06Z\"\n        message: No errors found\n        observedGeneration: 1\n        reason: Ready\n        status: \"True\"\n        type: Ready\n      - lastTransitionTime: \"2023-08-15T13:22:06Z\"\n        message: No errors found\n        observedGeneration: 1\n        reason: ResolvedRefs\n        status: \"True\"\n        type: ResolvedRefs\n      name: api\n

      and HTTPRoute parents status conditions:

        status:\n    parents:\n\n    - conditions:\n      - lastTransitionTime: \"2024-05-16T16:17:38Z\"\n        message: Object affected by AuthPolicy default/toystore\n        observedGeneration: 1\n        reason: Accepted\n        status: \"True\"\n        type: kuadrant.io/AuthPolicyAffected\n      - lastTransitionTime: \"2024-05-16T16:18:51Z\"\n        message: Object affected by RateLimitPolicy default/toystore\n        observedGeneration: 1\n        reason: Accepted\n        status: \"True\"\n        type: kuadrant.io/RateLimitPolicyAffected\n      controllerName: kuadrant.io/policy-controller\n      parentRef:\n        group: gateway.networking.k8s.io\n        kind: Gateway\n        name: api-gateway\n        namespace: kuadrant-system\n    - conditions:\n      - lastTransitionTime: \"2024-05-16T16:17:38Z\"\n        message: Object affected by AuthPolicy default/toystore\n        observedGeneration: 1\n        reason: Accepted\n        status: \"True\"\n        type: kuadrant.io/AuthPolicyAffected\n      - lastTransitionTime: \"2024-05-16T16:18:51Z\"\n        message: Object affected by RateLimitPolicy default/toystore\n        observedGeneration: 1\n        reason: Accepted\n        status: \"True\"\n        type: kuadrant.io/RateLimitPolicyAffected\n      - lastTransitionTime: \"2024-05-20T11:45:33Z\"\n        message: Route was valid\n        observedGeneration: 1\n        reason: Accepted\n        status: \"True\"\n        type: Accepted\n      - lastTransitionTime: \"2024-05-20T11:45:33Z\"\n        message: All references resolved\n        observedGeneration: 1\n        reason: ResolvedRefs\n        status: \"True\"\n        type: ResolvedRefs\n      controllerName: istio.io/gateway-controller\n      parentRef:\n        group: gateway.networking.k8s.io\n        kind: Gateway\n        name: api-gateway\n        namespace: kuadrant-system\n
      "},{"location":"architecture/rfcs/0010-gateway-api-metrics-exporter/#guide-level-explanation","title":"Guide-level explanation","text":"

      First, implement the existing Gateway API metrics that are part of the gateway-api-state-metrics project. This will allow the new prometheus exporter to replace that project as a whole. The metrics will be backwards compatible with the gateway-api-state-metrics project, with the addition of new metrics.

      Second, implement new metrics, as per the examples below, to capture the additional status information:

      gatewayapi_gateway_status_listeners_conditions{namespace=\"<NAMESPACE>\",name=\"<GATEWAY>\",listener_name=\"<LISTENER_NAME>\",type=\"<ResolvedRefs|Ready|Other>} 1\n
      This metric captures the status condition types of individual listeners in a Gateway. It will allow the status of individual named listeners to be queried, graphed and alerted on via metrics. The health status of listeners can then be visualised in a stat panel in Grafana, showing healthy and unhealthy listeners. This expands the debugging path beyond just the overall health of a Gateway.

      gatewayapi_httproute_status_parents_conditions{namespace=\"<NAMESPACE>\",name=\"<GATEWAY>\",controller_name=\"<CONTROLLER_NAME>\",\"parent_group=\"<PARENT_GROUP>\",parent_kind=\"<PARENT_KIND>\",parent_name=\"<PARENT_NAME>\",parent_namespace=\"<PARENT_NAMESPACE>\",type=\"<ResolvedRefs|Accepted|Other>} 1\n
      This metric captures the condition types for each parent of a HTTPRoute. The type field would also record any custom types set by a controller. For example, kuadrant.io/AuthPolicyAffected and kuadrant.io/RateLimitPolicyAffected. This will allow the health of HTTPRoutes to be reported via metrics. A HTTPRoute that has an type of Accepted and value of 1 means the HTTPRoute is accepted by the Gateway and can be considered healthy. It will also allow policy specific information about a HTTPRoute to be represented in metrics. For example, alerting on any HTTPRoutes that don't have the kuadrant.io/AuthPolicyAffected type with a value of 1 i.e. HTTPRoutes without an AuthPolicy.

      Tests will be added directly to the project in a similar manner to the redis-exporter. The test environment will bring up a kind cluster, create the Gateway API CRDs, example Gateway & HTTPRoute resources, then test the scrape endpoint. This will be the same as how metrics are tested for the gateway-api-state-metrics project. There is a separate test function for each resource.

      Existing example dashboards in the gateway-api-state-metrics project will be copied over to the exporter project and continue to work as before. However, initially it will just be the Gateway, GatewayClass and HTTPRoute dashboards as those will be the metrics that are implemented first.

      "},{"location":"architecture/rfcs/0010-gateway-api-metrics-exporter/#reference-level-explanation","title":"Reference-level explanation","text":"

      The exporter will be written in golang and follow the guidelines from https://prometheus.io/docs/instrumenting/writing_exporters/. Other exporters like the https://github.com/prometheus/node_exporter/tree/master and https://github.com/oliver006/redis_exporter will be referenced for patterns and library usage. Metrics will only be pulled from the kubernetes API when Prometheus scrapes them. That is, the exporter will not perform scrapes based on its own timers. All scrapes will be synchronous.

      The client-go library will be used for all kubernetes API calls. As the number of Gateways and HTTPRoutes could vary greatly, there is a performance consideration with these API calls if there are a lot of resources. To allow for this, a single list of all resources of a kind will used rather than 1 by 1. If in future there are issues with performance, there is an option to cache responses to expensive queries.

      A 'gateway_metrics_up` metric will be included, as per https://prometheus.io/docs/instrumenting/writing_exporters/#failed-scrapes such that the exporter can continue to respond in a standard way if there are issues with some aspects of scraping. The scrape response should include all metrics that have information available at that time of scraping.

      "},{"location":"architecture/rfcs/0010-gateway-api-metrics-exporter/#drawbacks","title":"Drawbacks","text":"

      This is an additional library to maintain. However, it will supersede the gateway-api-state-metrics project and dependency on kube-state-metrics.

      "},{"location":"architecture/rfcs/0010-gateway-api-metrics-exporter/#rationale-and-alternatives","title":"Rationale and alternatives","text":"

      In theory it should be possible to get the desired functionality from the kube-state-metrics project if the proposed change in https://github.com/kubernetes/kube-state-metrics/pull/2059 is accepted and subsequently implemented. However, that proposal has been open since May 2023. I have ruled out the possibility of helping with the implementation of this change in that project due to:

      • lack of detailed knowledge of the current implementation of selectors in kube-state-metrics
      • potential complexity of implementing generic CEL support in that project
      • it not being core to the Kuadrant project goals, combined with the ongoing maintenance commitment after implementation. It wouldn't be fair to land the change we need without following up on maintenance after

      The proposed design is a more focused solution on the needs of the Kuadrant project from Gateway API resources in the form of metrics. There are plenty of examples of exporters out there that we can reference and follow established patterns.

      If we don't make this change, we are limited to having just the overall Gateway status available via metrics, and no HTTPRoute status information on which we can visualise and alert.

      "},{"location":"architecture/rfcs/0010-gateway-api-metrics-exporter/#prior-art","title":"Prior art","text":"

      The primary prior art are the kube-state-metrics project, and the gateway-api-state-metrics projects. The gateway-api-state-metrics project uses the CustomResourceStateMetrics configuration feature of kube-state-metrics to configure what fields in which resources should be made available via metrics.

      "},{"location":"architecture/rfcs/0010-gateway-api-metrics-exporter/#unresolved-questions","title":"Unresolved questions","text":"

      n/a

      "},{"location":"architecture/rfcs/0010-gateway-api-metrics-exporter/#future-possibilities","title":"Future possibilities","text":"

      Although this exporter is intended to replace the gateway-api-state-metrics project, it will likely take a phased approach to get to that point. The initial goal is to get 'like for like' functionality from a Kuadrant project point of view (Gateways, GatewayClasses and HTTPRoutes), followed by the new status functionality as detailed in this RFC. Other resources, such as TLSRoute, UDPRoute etc.. can be added later.

      "},{"location":"architecture/rfcs/0011-policy-machinery/","title":"Policy Machinery for reconciliation","text":"
      • Feature Name: policy_machinery
      • Start Date: 2024-07-03
      • RFC PR: Kuadrant/architecture#95
      • Issue tracking: Kuadrant/architecture#29
      "},{"location":"architecture/rfcs/0011-policy-machinery/#summary","title":"Summary","text":"

      Explain how Kuadrant's Policy Machinery can be used for reconciliation.

      "},{"location":"architecture/rfcs/0011-policy-machinery/#motivation","title":"Motivation","text":"

      The Policy Machinery project (repo, pkg.go) offers a set of types and functions for implementing Gateway API policies \u2013 i.e.

      • highly flexible representation of topologies of targetable resources;
      • calculating effective policies based on custom or default merge strategies;
      • tooling to watch and reconcile resources based on cluster events.

      These can be used for tailoring implemention of Kuadrant policies and Kuadrant instances. See example provided.

      Leveraging the Policy Machinery can be key to:

      1. Improve flow control of concurrent reconciliation events
      2. Simplification of the calculation of effective policies respectively to the topological routing path of the requests
      3. Correct implementation of Defaults & Overrides' merge strategy (RFC 0009)
      4. Supporting multiple policies targeting a same resource
      5. Supporting targeting sections of a resource (e.g. Gateway listeners, HTTPRouteRules)
      6. Supporting multiple targetRefs in a policy
      7. Extending policies to target other kinds of resources (e.g. GatewayClass, Service, Namespace) -\u2013 future
      "},{"location":"architecture/rfcs/0011-policy-machinery/#guide-level-explanation","title":"Guide-level explanation","text":"

      Although essentially an implementation detail of the Kuadrant Operator, levering the Policy Machinery may introduce the following user-perceived features:

      • Acknowledgement of the topological routing path of the request respectively to applicable effective policies
      • New form of targeting sections of a resource with a policy
      • Elevated meaning of uniquely identifiable concepts across policy resources (e.g. named policy rules)
      • Possibility of multiple policies of a kind targeting a same resource
      • (Window of opportunity for) introducing plural targetRefs
      "},{"location":"architecture/rfcs/0011-policy-machinery/#user-acknowledgeable-reference-of-the-topological-routing-path-of-the-request","title":"User-acknowledgeable reference of the topological routing path of the request","text":"

      One who specifies Kuadrant policies targeting resources at any levels of the hierarchy Gateway \u2192 Listener \u2192 HTTPRoute \u2192 HTTPRouteRule1 shall expect the effect of such policies to be reported always respectively to the lowest level of the hierarchy that the kind of policy allows targeting. E.g.:

      • A DNSPolicy that allows targeting a Gateway hypothetically with or without specifying a sectionName actually targets gateway listeners; the user wants to reason about the state of DNSPolicies regarding their effect on each listeners specified in the Gateway. In a context with 2+ DNSPolicies, simultaneously targeting both a Gateway and specific listeners, DNS records for some listener hostnames may have been reconciled according to the specification from one policy or another, occasionally no policy at all.
      • A RateLimitPolicy that allows targeting a Gateway, a HTTPRoute or specific HTTPRouteRule actually targets (directly or indirectly) HTTPRouteRule objects; the user wants to reason about the state of all RateLimitPolicies with respect to each HTTPRouteRule, where some HTTPRouteRules may be protected by one RateLimitPolicy, a combination of multiple RateLimitPolicies, or occasionally no RateLimitPolicy at all.

      In the specific case of policy kinds that allow targeting HTTPRouteRules, due to complex network topologies supported by Gateway API, including in particular HTTPRoutes with multiple Gateway parents, a same HTTPRouteRule may or may not be affected by a policy, depending on which routing path in the network topology a request flows. Therefore, ultimately users will reason about policies and effective policies in terms of the paths between at least gateways and the lowest levels targeted by the policies that a request can flow. Possibly, in terms of all possible paths between Gateways and Services.

      Kuadrant shall provide users with such visibility. Leveraging Policy Machinery is an implementation detail that nonetheless makes achieving this goal easier.

      "},{"location":"architecture/rfcs/0011-policy-machinery/#user-facing-changes-to-the-policy-apis","title":"User-facing changes to the policy APIs","text":""},{"location":"architecture/rfcs/0011-policy-machinery/#targeting-sections-of-network-resource","title":"Targeting sections of network resource","text":"

      Leveraging Policy Machinery may also motivate some user-facing changes. In particular, replacing AuthPolicy's and RateLimitPolicy's routeSelectors for a targetRef with optional sectionName (made possible since kubernetes-sigs/gateway-api#2895.)

      This change would cause a policy of AuthPolicy or RateLimitPolicy kind to always be attached to its targets entirely, i.e. without having rules that attach to some sections and other rules to other sections or no section at all. This differs from current situation where a policy of those kinds can be attached to a HTTPRoute and some of the policy's rules more specifically attached to individual HTTPRouteRules only, including with multiple policy rules attached to different HTTPRouteRules of the same targeted HTTPRoute. Instead, attaching a policy must be a cohesive, unambiguous operation, that occasionally requires users to specify more fine-grained policy objects to be attached only to sections of a resource.

      "},{"location":"architecture/rfcs/0011-policy-machinery/#identity-of-concepts-across-multiple-policy-objects","title":"Identity of concepts across multiple policy objects","text":"

      In some cases, splitting policy objects for the purpose of targeting sections of a network resource, without breaking the semantics of having a single set of policy objects cohesively defined, also implies that definitions about a same entity or concept within a policy (e.g. a limit definition), repeated at multiple policy objects, may have a way to represent to refer to the same thing (e.g. same set of counters).

      This is the case, for example, of limit definitions in a RateLimitPolicy as well as cache configs in an AuthPolicy. To avoid creating multiple rate-limit counter namespaces (analogously, multiple authorization rule cache entries) for definitions that are effectively about the same entity, despite specified at multiple policy objects, the APIs must provide a way for users to convey one of the other intent: definitions refer to the same thing versus definitions refer to different things.2

      "},{"location":"architecture/rfcs/0011-policy-machinery/#other-user-facing-changes","title":"Other user-facing changes","text":"

      The following possible (non-required) other user-facing changes can be enabled leveraging Policy Machinery, without marginal implementation cost:

      1. Plural targetRefs.
      2. Multiple policies of a kind targeting a same network resource/resource section (\"horizontal Defaults & Overrides.\")
      3. Aesthetical difference between Direct versus Inherited policies, implied by the merge strategies implemented by each kind of policy, rather than a necessary distinction.
      "},{"location":"architecture/rfcs/0011-policy-machinery/#reference-level-explanation","title":"Reference-level explanation","text":"

      Usage of the Policy Machinery consists of importing two packages:

      • machinery: provides the types and abstractions to build Gateway API topologies of targetable network resources, policies and adjacent objects;
      • controller: offers tools for implementing topology-based custom controllers of reconciliation logic.

      From that on, the following steps drive leveraging the Policy Machinery in the Kuadrant Operator:

      1. Implement the machinery.Policy interface for all kinds of policies.

        Example provided for the DNSPolicy, TLSPolicy, AuthPolicy and RateLimitPolicy kinds.

      2. Define wrappers that implement the machinery.Object interface for any kind of adjacent object whose unique identifier as a node in the topology graph cannot be based on the default controller.RuntimeObject type provided (if any.)

      3. Implement the linking functions for all kinds of adjacent objects and corresponding parents and children in the topology graph, including types such as Kuadrant, Istio's WasmPlugin, ConfigMap, etc.

        The Kuadrant custom resources shall be the roots of a directed acyclic graph (DAG) from which an entired topology of targetable network resources, adjacent objects and policies are connected.

      4. Start a controller.Controller that:

        1. Watches for all kinds of objects to be represented in the topology.
        2. Triggers a controller.Workflow on events related to any of the watched resources.
      5. At every reconciliation event3:

        1. Reconcile the internal objects for setting up the environment for a Kuadrant instance (deployments, gateway controller configs, etc).

        2. For each kind of policy and applicable path in the topology graph relevant for the policy kind:

        3. Compute an effective policy and give it a unique identifier.

        4. Perform (or delegate) the policy-specific configuration (DNS, TLS, Auth, RL) of the effective policy with the policy decision/enforcement point4.
        5. For policy kinds enforced at request time (data-plane policies), configure the gateway to call the policy decision point (PDP) on requests that match the attributes of the path5, passing in the payload to the PDP the identifier of the effective policy.
        6. Update the status stanzas of all targetables in the topology whose paths were configured for an effective policy (or lack of such), with a map that allows users to inspect, for a given path, what effective policy (if any) will be enforced. > Note: If unsuitable for the status stanza of the object, the details of the effective policies may require additional tooling to be inspected by the users and the mapping must be to the unique identifier of the effective policy.

        7. Store a DOT representation of the topology graph in a ConfigMap.

      "},{"location":"architecture/rfcs/0011-policy-machinery/#drawbacks","title":"Drawbacks","text":"

      Part of the work consists on refactoring, without value perceived by the user.

      "},{"location":"architecture/rfcs/0011-policy-machinery/#rationale-and-alternatives","title":"Rationale and alternatives","text":""},{"location":"architecture/rfcs/0011-policy-machinery/#annotations","title":"Annotations","text":"

      Use of annnotations to track back references from targeted objects to policies. This approach has been slowly deprecated to favour the use of an in-memory directed acyclic graph (DAG) representing the relationship between network objects and policies6.

      "},{"location":"architecture/rfcs/0011-policy-machinery/#bottom-up-reconciliation","title":"Bottom-up reconciliation","text":"

      Bottom-up reconciliation by default, focusing on the policy resources first. This approach has been slowly refactored to using mappers (event handlers) that often multiply a lower-level event into multiple top-down ones, occasionally with the occurrence of repetitive events.

      "},{"location":"architecture/rfcs/0011-policy-machinery/#dag-10","title":"DAG 1.0","text":"

      Preliminary version of the topology DAG6 that:

      1. is bootstrapped at every reconciliation event (though leveraging k8s.io/apimachinery's and sigs.k8s.io/controller-runtime's caches);
      2. does not include all kinds of targetables \u2013 missing object sections in particular;
      3. does not include internal configuration objects;
      4. was designed for one single kind of policy in each instance of the topology.
      "},{"location":"architecture/rfcs/0011-policy-machinery/#effective-policy-less-reconciliation","title":"Effective policy-less reconciliation","text":"

      Configuration of internal resources for implementing effective policy behavior:

      1. tailored for each specific kind of policy, without leveraging generic and resusable merge strategy functions;
      2. not organically integrated with the topology DAG;
      3. decoupled from the rather user-acknowledgeable reference of the topological routing path of the request.
      "},{"location":"architecture/rfcs/0011-policy-machinery/#prior-art","title":"Prior art","text":""},{"location":"architecture/rfcs/0011-policy-machinery/#envoy-gateway-state-of-the-world-reconciliation","title":"Envoy Gateway state-of-the-world reconciliation","text":"

      Envoy Gateway has implemented a custom controller for Gateway API and provider-specific resources with the following characteristics similar to the Policy Machinery controller package's approach:

      1. Based on controller-runtime
      2. Single Reconcile function that:
        1. lists all watched resources from the cluster at every reconciliation event;
        2. rebuilds and updates a long-living watchable map of all the resources;
        3. trigger reconciliation logic subscribed to changes to the map \u2013 goroutines decoupled from controller-runtime.
      "},{"location":"architecture/rfcs/0011-policy-machinery/#unresolved-questions","title":"Unresolved questions","text":"
      • The fanout problem, especially of status reconciliation.
      • ~~How to avoid changes performed by the reconciliation function to loop back in the form of multiple other (no-op) reconciliation events.~~ \u21e8 issue state-modifying actions against the API server directly and safe-guard against create/update/delete events for states already reflected in the topology
      • ~~How to compact multiple equifinal reconciliation events waiting in the queue into a single one, thus avoiding unnecessary loops.~~ \u21e8 rely on controller-runtime event coalescing
      • ~~What to do in case of reconciliation failures without retry~~ \u21e8 always move the system to a final state, with proper status updating, and wait until state-of-the-world reconciliation kicks in again on the next event
      "},{"location":"architecture/rfcs/0011-policy-machinery/#future-possibilities","title":"Future possibilities","text":"
      • Extending policies to target other kinds of resources (e.g. GatewayClass, Service, Namespace.)
      1. Gateway listeners and HTTPRouteRules can be targeted by specifying in a policy their main Gateway and HTTPRoute objects as targets, in combination with either a sectionName (supported in the targetRef field of the policy) or via routeSelectors (in the policy spec proper), respectively. Not all kinds of policies support targeting all 4 kinds of targetables of the Gateway \u2192 Listener \u2192 HTTPRoute \u2192 HTTPRouteRule hierarchy; some kinds of policies may support targeting only a few of those.\u00a0\u21a9

      2. In the context of rate-limit, this problem is also referred to as the problem of the identity of a limit.\u00a0\u21a9

      3. Specific steps can be filtered by type of event.\u00a0\u21a9

      4. While the DNS operator as well as the configuration performed by the Kuadrant Operator for a TLSPolicy are closer to the enforcement of the specifications in the DNS and TLS policy objects, Authorino and Limitador are policy decision points (PDP) rather. Indistinctively, control-plane operations that configure a service based on the specification of a policy, as well as the data-plane protection services that perform at request-time along with the gateways are all part of the policy enforcement.\u00a0\u21a9

      5. The attributes of a path in the topology from a Gateway to a HTTPRouteRule object typically include a hostname and the set of HTTPRouteMatches specified in the HTTPRouteRule.\u00a0\u21a9

      6. See kuadrant-operator#530.\u00a0\u21a9\u21a9

      "},{"location":"architecture/rfcs/dns-policy-api-changes/","title":"RFC DNSPolicy v1 changes and improvements","text":"
      • Feature Name: (dns_policy_api_changes)
      • Start Date: (2024-09-11)
      • RFC PR: Kuadrant/architecture#0000
      • Issue tracking: https://github.com/Kuadrant/architecture/issues/104
      "},{"location":"architecture/rfcs/dns-policy-api-changes/#summary","title":"Summary","text":"

      DNSPolicy is soon to go GA. There are several improvement we have identified over time that will enhance the GA of this API

      • Remove the need for labels on Gateways for GEO and custom weighting values

      • Reduce the verbosity of GEO and Weighting definitions

      • Remove the need for a strategy to be chosen as part of the policy definition.

      "},{"location":"architecture/rfcs/dns-policy-api-changes/#motivation","title":"Motivation","text":"

      We want to simplify and improve the DNSPolicy API and remove some of the legacy structures that have hung on since its original inception, as this involves some breaking changes we want these before we create a v1 API.

      Weighting and GEO attributes:

      The loadbalancing options we provide were first designed as part of an API that was intended to work with OCM (open cluster management). This provided multiple views of gateways across multiple clusters. So in order to understand the GEO context or individual weighing needed for a given cluster, we needed that context applying separately from the DNSPolicy spec that for legacy reasons targeted a \"template\" Gateway in the hub cluster.

      Now DNSPolicy is created on the same cluster as the actual Gateway and we do not use OCM or hub clusters, the need to label individual objects and Gateways with specific annotations and labels is now redundant and makes for a more complex and awkward API interaction.

      routingStrategy:

      We have also identified that the routingStrategy option in the DNSPolicy spec is redundant. When added we expected there to be more than two strategies. This has not emerged and so it is another awkward piece of the API that is not needed.

      "},{"location":"architecture/rfcs/dns-policy-api-changes/#guide-level-explanation","title":"Guide-level explanation","text":"

      You will no longer need to apply labels to Gateways in order to specify the GEO or Weighting for that Gateway. The policy targets a given Gateway and you will now just specify those values in the policy spec directly.

      You will no longer need to specify what routingStrategy you want to use. Instead you will either specify a loadbalancing section (meaning it is a loadbalanced strategy) or you will leave it empty (meaning it has no loadbalancing).

      "},{"location":"architecture/rfcs/dns-policy-api-changes/#reference-level-explanation","title":"Reference-level explanation","text":"

      Below is an example of what is currently needed to setup GEO and Custom Weighting with the existing API

      apiVersion: kuadrant.io/v1alpha1\nkind: DNSPolicy\nmetadata:\n  name: prod-web\n  namespace: ingress-gateway\nspec:\n  targetRef:\n    name: prod-web\n    group: gateway.networking.k8s.io\n    kind: Gateway\n  routingStrategy: loabalanced  \n  loadBalancing:\n    weighted:\n      defaultWeight: 120\n      custom: # <--- New Custom Weights being added\n\n        - weight: 255\n          selector:\n            matchLabels:\n              kuadrant.io/lb-attribute-custom-weight: AWS # slects gateways to apply it to (when there can only be one)\n    geo: \n      defaultGeo: US #catch all geo              \n
      So here to apply a custom weighting, you have to specify the weighting under the custom section and then apply the kuadrant.io/lb-attribute-custom-weight: AWS label to the gateway that is already being targeted by the policy.

      To change the GEO for the targeted cluster, you need to apply a different label to the gateway: kuadrant.io/lb-attribute-geo-code: EU for example.

      On top of this you also have to specify that it is a load balanced DNSPolicy even though you have specified a load balancing section.

      This is an awkward and disconnected API that evolved from the legacy requirements called out above.

      Instead the new API to achieve the same goal will be:

      apiVersion: kuadrant.io/v1alpha1\nkind: DNSPolicy\nmetadata:\n  name: prod-web\n  namespace: ingress-gateway\nspec:\n  targetRef:\n    name: prod-web\n    group: gateway.networking.k8s.io\n    kind: Gateway\n  loadBalancing:\n    weight: 100 #weight for listeners targeted \n    geo: US # geo for listeners targeted \n    defaultGEO: true # should this be consisdered the default GEO for the listener hosts\n  providerRefs:\n\n    - name: aws-credential-secret    \n

      So no longer do you need to specify whether the policy is a load balanced one or not via the redundant routingStrategy field

      Now you simplify specify the weight you want to use for the listeners in the gateway, the geo you want to use and whether it should be used as a default GEO or not (this is used by some cloud providers as a catch-all option if a user from a none specified GEO does a DNS lookup.). Each of the fields under \"loadbalancing\" will now be required.

      From an implementation perspective, all changes will happen in the Kuadarant Operator, where it will no longer look for the attribute labels on the gateways but instead will simply use the spec of the DNSPolicy. The resulting DNSRecord will not change in structure.

      To setup a simple DNS structure (single A or CNAME record), the API would now look like:

      apiVersion: kuadrant.io/v1alpha1\nkind: DNSPolicy\nmetadata:\n  name: prod-web\n  namespace: ingress-gateway\nspec:\n  targetRef:\n    name: prod-web\n    group: gateway.networking.k8s.io\n    kind: Gateway\n  providerRefs:\n\n    - name: aws-credential-secret    \n

      Again no need for the redundant strategy field.

      "},{"location":"architecture/rfcs/dns-policy-api-changes/#drawbacks","title":"Drawbacks","text":"

      Introduces a breaking change to the API.

      "},{"location":"architecture/rfcs/dns-policy-api-changes/#rationale-and-alternatives","title":"Rationale and alternatives","text":"

      These are breaking changes and we are about to move to v1. Changes like these should land pre v1. These changes provide a much simpler and better user experience.

      "},{"location":"architecture/rfcs/dns-policy-api-changes/#prior-art","title":"Prior art","text":"

      NA

      "},{"location":"architecture/rfcs/dns-policy-api-changes/#unresolved-questions","title":"Unresolved questions","text":"

      NA

      "},{"location":"architecture/rfcs/dns-policy-api-changes/#future-possibilities","title":"Future possibilities","text":"

      NA

      "},{"location":"architecture/rfcs/0003-dns-policy-assets/DNSRecordStructure/","title":"DNSRecordStructure","text":"

      DNSRecord is our API for expressing DNS endpoints via a kube CRD based API. It is managed by the multi-cluster gateway controller based on the desired state expressed in higher level APIs such as the Gateway or a DNSPolicy. In order to provide our feature set, we need to carefully consider how we structure our records and the types of records we need. This document proposes a particular structure based on the requirements and feature set we have.

      "},{"location":"architecture/rfcs/0003-dns-policy-assets/DNSRecordStructure/#requirements","title":"Requirements","text":"

      We want to be able to support Gateway definitions that use the following listener definitions:

      • wildcard: *.example.com and fully qualified listener host www.example.com definitions with the notable exception of fully wildcarded ie * as we cannot provide any DNS or TLS for something with no defined hostname.
      • listeners that have HTTPRoute defined on less than all the clusters where the listener is available. IE we don't want to send traffic to clusters where there is no HTTPRoute attached to the listener.
      • Gateway instances that provide IPs that are deployed alongside instances on different infra that provide host names causing the addresses types on each of gateway instance to be different (IPAddress or HostAddress).
      • We want to provide GEO based DNS as a feature of DNSPolicy and so our DNSRecord structure must support this.
      • We want to offer default weighted and custom weighted DNS as part of DNSPolicy
      • We want to allow root or apex domain to be used as listener hosts
      "},{"location":"architecture/rfcs/0003-dns-policy-assets/DNSRecordStructure/#diagram","title":"Diagram","text":"

      https://lucid.app/lucidchart/2f95c9c9-8ddf-4609-af37-48145c02ef7f/edit?viewport_loc=-188%2C-61%2C2400%2C1183%2C0_0&invitationId=inv_d5f35eb7-16a9-40ec-b568-38556de9b568

      "},{"location":"architecture/rfcs/0003-dns-policy-assets/DNSRecordStructure/#proposal","title":"Proposal","text":"

      For each listener defined in a gateway, we will create a set of records with the following rules.

      none apex domain:

      We will have a generated lb (load balancer) dns name that we will use as a CNAME for the listener hostname. This DNS name is not intended for use within a HTTPRoute but is instead just a DNS construct. This will allow us to set up additional CNAME records for that DNS name in the future that are returned based a GEO location. These DNS records will also be CNAMES pointing to specific gateway dns names, this will allow us to setup a weighted response. So the first layer CNAME handles balancing based on geo, the second layer handles balancing based on weighting.

                                              shop.example.com\n                                        |             |\n                                      (IE)          (AUS)\n                                CNAME lb.shop..      lb.shop..\n                                    |     |         |      |\n                                 (w 100) (w 200)   (w 100) (w100)\n                                CNAME g1.lb.. g2.lb..   g3.lb..  g4.lb..\n                                A 192..   A 81..  CNAME  aws.lb   A 82..\n

      When there is no geo strategy defined within the DNSPolicy, we will put everything into a default geo (IE a catch-all record) default.lb-{guid}.{listenerHost} but set the routing policy to GEO allowing us to add more geo based records in the future if the gateway admin decides to move to a geo strategy as their needs grow.

      To ensure this lb dns name is unique and does not clash we will use a short guid as part of the subdomain so lb-{guid}.{listenerHost}. this guid will be based on the gateway name and gateway namespace in the control plane.

      For a geo strategy we will add a geo record with a prefix to the lb subdomain based on the geo code. When there is no geo we will use default as the prefix. {geo-code}.lb-{guid}.{listenerHost}. Finally, for each gateway instance on a target cluster we will add a {spokeClusterName}.lb-{guid}.{listenerHost}

      To allow for a mix of hostname and IP address types, we will always use a CNAME . So we will create a dns name for IPAddress with the following structure: {guid}.lb-{guid}.{listenerHost} where the first guid will be based on the cluster name where the gateway is placed.

      "},{"location":"architecture/rfcs/0003-dns-policy-assets/DNSRecordStructure/#apex-domains","title":"Apex Domains","text":"

      An apex domain is the domain at the apex or root of a zone. These are handled differently by DNS as they often have NS and SOA records. Generally it is not possible to set up a CNAME for apex domain (although some providers allow it).

      If a listener is added to a gateway that is an apex domain, we can only add A records for that domain to keep ourselves compliant with as many providers as possible. If a listener is the apex domain, we will setup A records for that domain (favouring gateways with an IP address or resolving the IP behind a host) but there will be no special balancing/weighting done. Instead, we will expect that the owner of that will setup a HTTPRoute with a 301 permanent redirect sending users from the apex domain e.g. example.com to something like: www.example.com where the www subdomain based listener would use the rules of the none apex domains and be where advanced geo and weighted strategies are applied.

      • gateway listener host name : example.com
        • example.com A 81.17.241.20
      "},{"location":"architecture/rfcs/0003-dns-policy-assets/DNSRecordStructure/#geo-agnostic-everything-is-in-a-default-geo-catch-all","title":"Geo Agnostic (everything is in a default * geo catch all)","text":"

      This is the type of DNS Record structure that would back our default DNSPolicy.

      • gateway listener host name : www.example.com

        DNSRecords:

        • www.example.com CNAME lb-1ab1.www.example.com
        • lb-1ab1.www.example.com CNAME geolocation * default.lb-1ab1.www.example.com
        • default.lb-1ab1.www.example.com CNAME weighted 100 1bc1.lb-1ab1.www.example.com
        • default.lb-1ab1.www.example.com CNAME weighted 100 aws.lb.com
        • 1bc1.lb-1ab1.www.example.com A 192.22.2.1

      So in the above example working up from the bottom, we have a mix of hostname and IP based addresses for the gateway instance. We have 2 evenly weighted records that balance between the two available gateways, then next we have the geo based record that is set to a default catch all as no geo has been specified then finally we have the actual listener hostname that points at our DNS based load balancer name.

      DNSRecord Yaml

      apiVersion: kuadrant.io/v1alpha1\nkind: DNSRecord\nmetadata:\n  name: {gateway-name}-{listenerName}\n  namespace: multi-cluster-gateways\nspec:\n  dnsName: www.example.com\n  managedZone:\n    name: mgc-dev-mz\n  endpoints:\n\n    - dnsName: www.example.com\n      recordTTL: 300\n      recordType: CNAME\n      targets:\n        - lb-1ab1.www.example.com\n    - dnsName: lb-1ab1.www.example.com\n      recordTTL: 300\n      recordType: CNAME\n      setIdentifier: mygateway-multicluster-gateways\n      providerSpecific:\n        - name: \"geolocation-country-code\"\n          value: \"*\"\n      targets:\n        - default.lb-1ab1.www.example.com\n    - dnsName: default.lb-1ab1.www.example.com\n      recordTTL: 300\n      recordType: CNAME\n      setIdentifier: cluster1\n      providerSpecific:\n        - name: \"weight\"\n          value: \"100\"\n      targets:\n        - 1bc1.lb-1ab1.www.example.com\n    - dnsName: default.lb-a1b2.shop.example.com\n      recordTTL: 300\n      recordType: CNAME\n      setIdentifier: cluster2\n      providerSpecific:\n        - name: \"weight\"\n          value: \"100\"\n      targets:\n        - aws.lb.com\n    - dnsName: 1bc1.lb-1ab1.www.example.com\n      recordTTL: 60\n      recordType: A\n      targets:\n        - 192.22.2.1\n
      "},{"location":"architecture/rfcs/0003-dns-policy-assets/DNSRecordStructure/#geo-specific","title":"geo specific","text":"

      Once the end user selects to use a geo strategy via the DNSPolicy, we then need to restructure our DNS to add in our geo specific records. Here the default record

      lb short code is {gw name + gw namespace} gw short code is {cluster name}

      • gateway listener host : shop.example.com

        DNSRecords:

        • shop.example.com CNAME lb-a1b2.shop.example.com
        • lb-a1b2.shop.example.com CNAME geolocation ireland ie.lb-a1b2.shop.example.com
        • lb-a1b2.shop.example.com geolocation australia aus.lb-a1b2.shop.example.com
        • lb-a1b2.shop.example.com geolocation default ie.lb-a1b2.shop.example.com (set by the default geo option)
        • ie.lb-a1b2.shop.example.com CNAME weighted 100 ab1.lb-a1b2.shop.example.com
        • ie.lb-a1b2.shop.example.com CNAME weighted 100 aws.lb.com
        • aus.lb-a1b2.shop.example.com CNAME weighted 100 ab2.lb-a1b2.shop.example.com
        • aus.lb-a1b2.shop.example.com CNAME weighted 100 ab3.lb-a1b2.shop.example.com
        • ab1.lb-a1b2.shop.example.com A 192.22.2.1 192.22.2.5
        • ab2.lb-a1b2.shop.example.com A 192.22.2.3
        • ab3.lb-a1b2.shop.example.com A 192.22.2.4

      In the above example we move from a default catch all to geo specific setup. Based on a DNSPolicy that specifies IE as the default geo location. We leave the default subdomain in place to allow for clients that may still be using that and set up geo specific subdomains that allow us to route traffic based on its origin. In this example we are load balancing across 2 geos and 4 clusters

      "},{"location":"architecture/rfcs/0003-dns-policy-assets/DNSRecordStructure/#wildcards","title":"WildCards","text":"

      In the examples we have used fully qualified domain names, however sometimes it may be required to use a wildcard subdomain. example:

      • gateway listener host : *.example.com

      To support these we need to change the name of the DNSRecord away from the name of the listener as the k8s resource does not allow * in the name.

      To do this we will set the dns record resource name to be a combination of {gateway-name}-{listenerName}

      to keep a record of the host this is for we will set a top level property named dnsName. You can see an example in the DNSRecord above.

      "},{"location":"architecture/rfcs/0003-dns-policy-assets/DNSRecordStructure/#pros","title":"Pros","text":"

      This setup allows us a powerful set of features and flexibility

      "},{"location":"architecture/rfcs/0003-dns-policy-assets/DNSRecordStructure/#cons","title":"Cons","text":"

      With this CNAME based approach we are increasing the number of DNS lookups required to get to an IP which will increase the cost and add a small amount of latency. To counteract this, we will set a reasonably high TTL (at least 5 mins) for our CNAMES and (2 mins) for A records

      "},{"location":"api-quickstart/","title":"API Quickstart","text":""},{"location":"api-quickstart/#introduction","title":"Introduction","text":"

      This document details how to setup a local reference architecture, and design and deploy an API. This will show the following API management features in a kube native environment using Kuadrant and other open source tools:

      • API design
      • API security and access control
      • API monitoring
      • Traffic management and scalability

      The sections in this document are grouped by the persona that is typically associated with the steps in that section. The 3 personas are:

      • The platform engineer, who provides and maintains a platform for application developers,
      • the application developer, who designs, builds and maintains applications and APIs,
      • and the api consumer, who makes API calls to the API
      "},{"location":"api-quickstart/#pre-requisities","title":"Pre-requisities","text":"
      • docker: https://www.docker.com/products/docker-desktop/
      • kind: https://kind.sigs.k8s.io/
      • kubectl: https://kubernetes.io/docs/reference/kubectl/
      • kustomize: https://kustomize.io/
      • helm: https://helm.sh/docs/intro/install/
      • operator-sdk: https://sdk.operatorframework.io/docs/installation/
      • An AWS account with a Secret Access Key and Access Key ID. You will also need to a Route 53 zone.
      "},{"location":"api-quickstart/#platform-engineer-platform-setup","title":"(Platform engineer) Platform Setup","text":"

      Export the following env vars:

      export KUADRANT_AWS_ACCESS_KEY_ID=<key_id>\nexport KUADRANT_AWS_SECRET_ACCESS_KEY=<secret>\nexport KUADRANT_AWS_REGION=<region>\nexport KUADRANT_AWS_DNS_PUBLIC_ZONE_ID=<zone>\nexport KUADRANT_ZONE_ROOT_DOMAIN=<domain>\n

      Clone the api-quickstart repo and run the quickstart script:

      git clone git@github.com:Kuadrant/api-quickstart.git && cd api-quickstart\n./quickstart.sh\n

      This will take several minutes as 3 local kind clusters are started and configured in a hub and spoke architecture. The following components will be installed on the clusters:

      • Hub
      • Open Cluster Management, as a 'hub' cluster
      • Kuadrant Multi Cluster Gateway Controller, for managing a Gateway in multiple clusters centrally
      • Gatekeeper, for constraints on Gateway Policy requirements
      • Thanos, for receiving metrics centrally
      • Grafana, for visualising API & Gateway metrics
      • Spoke x2
      • Open Cluster Management, as a 'spoke' cluster
      • Kuadrant Operator, for auth and rate limiting policies attached to a HTTPRoute
      • Istio, with the Gateway API CRDs as the Gateway for ingress trafic
      • MetalLB, for exposing the Gateway service on the local network
      • Prometheus, for scraping and federating metrics to the hub
      "},{"location":"api-quickstart/#verify-the-gateway-and-configuration","title":"Verify the Gateway and configuration","text":"

      View the ManagedZone, Gateway and TLSPolicy. The ManagedZone and TLSPolicy should have a Ready status of true. The Gateway should have a Programmed status of True.

      kubectl --context kind-api-control-plane get managedzone,tlspolicy,gateway -n multi-cluster-gateways\n
      "},{"location":"api-quickstart/#guard-rails-constraint-warnings-about-missing-policies-dns-tls","title":"Guard Rails: Constraint warnings about missing policies ( DNS, TLS)","text":"

      Running the quick start script above will bring up Gatekeeper and the following constraints:

      • Gateways must have a TLSPolicy targeting them
      • Gateways must have a DNSPolicy targeting them

      To view the above constraints in kubernetes, run this command:

      kubectl --context kind-api-control-plane get constraints\n

      Info

      Since a gateway has been created automatically, along with a TLSPolicy, the violation for a missing DNSPolicy will be active until one is created.

      "},{"location":"api-quickstart/#grafana-dashboard-view","title":"Grafana dashboard view","text":"

      To get a top level view of the constraints in violation, the Stitch: Platform Engineer Dashboard can be used. This can be accessed by at https://grafana.172.31.0.2.nip.io

      Grafana has a default username and password of admin. You can find the Stitch: Platform Engineer Dashboard dashboard in the Default folder.

      "},{"location":"api-quickstart/#create-the-missing-dnspolicy","title":"Create the missing DNSPolicy","text":"

      Create a DNSPolicy that targets the Gateway with the following command:

      kubectl --context kind-api-control-plane apply -f - <<EOF\napiVersion: kuadrant.io/v1alpha1\nkind: DNSPolicy\nmetadata:\n  name: prod-web\n  namespace: multi-cluster-gateways\nspec:\n  targetRef:\n    name: prod-web\n    group: gateway.networking.k8s.io\n    kind: Gateway\n  loadBalancing:\n    geo:\n      defaultGeo: EU\nEOF\n
      "},{"location":"api-quickstart/#platform-overview","title":"Platform Overview","text":"

      Since we have created all the policies that Gatekeeper had the guardrails around, you should no longer see any constraints in violation. This can be seen back in the Stitch: Platform Engineer Dashboard in Grafana at https://grafana.172.31.0.2.nip.io

      "},{"location":"api-quickstart/#application-developer-app-setup","title":"(Application developer) App setup","text":""},{"location":"api-quickstart/#api-design","title":"API Design","text":"

      Fork and/or clone the Petstore App at https://github.com/Kuadrant/api-petstore

      git clone git@github.com:kuadrant/api-petstore && cd api-petstore\n# Or if you forked the repository:\n# git clone git@github.com:<your_github_username>/api-petstore && cd api-petstore\n

      Then deploy it to the first workload cluster:

      kustomize build ./resources/ | envsubst | kubectl --context kind-api-workload-1 apply -f-\n

      This will deploy:

      • A petstore Namespace
      • A Secret, containing a static API key that we'll use later for auth
      • A Service and Deployment for our petstore app
      • A Gateway API HTTPRoute for our petstore app
      "},{"location":"api-quickstart/#route-53-dns-zone","title":"Route 53 DNS Zone","text":"

      When the DNS Policy has been created, and the previously created HTTPRoute has been attached, a DNS record custom resource will also be created in the cluster resulting in records being created in your AWS Route53. Navigate to Route53 and you should see some new records in the zone.

      "},{"location":"api-quickstart/#configuring-the-region-label","title":"Configuring the region label","text":"

      Configure the app REGION to be eu:

      kubectl --context kind-api-workload-1 apply -k ./resources/eu-cluster/\n
      "},{"location":"api-quickstart/#exploring-the-open-api-specification","title":"Exploring the Open API Specification","text":"

      The raw Open API spec can be found in the root of the repo:

      cat openapi.yaml\n# ---\n# openapi: 3.0.2\n# info:\n#   title: Stitch API Petstore\n#   version: 1.0.18\n
      "},{"location":"api-quickstart/#application-developer-api-security","title":"(Application developer) API security","text":"

      We've included a number of sample x-kuadrant extensions in the OAS spec already:

      • At the top-level of our spec, we've defined an x-kuadrant extension to detail the Gateway API Gateway associated with our app:
        x-kuadrant:\n    route:\n      name: petstore\n      namespace: petstore\n      labels:\n        deployment: petstore\n        owner: cferreir\n      hostnames:\n\n      - petstore.$KUADRANT_ZONE_ROOT_DOMAIN\n      parentRefs:\n      - name: prod-web\n        namespace: kuadrant-multi-cluster-gateways\n        kind: Gateway\n
      • In /user/login, we have a Gateway API backendRef set and a rate_limit set. The rate limit policy for this endpoint restricts usage of this endpoint to 2 requests in a 10 second window:
        x-kuadrant:\n  backendRefs:\n  - name: petstore\n    namespace: petstore\n    port: 8080\n  rate_limit:\n  rates:\n  - limit: 2\n    duration: 10\n    unit: second\n
      • In /store/inventory, we have also have a Gateway API backendRefset and a rate_limit set. The rate limit policy for the endpoint restricts usage of this endpoint to 10 requests in a 10 second window:
        x-kuadrant:\n  backendRefs:\n  - name: petstore\n    namespace: petstore\n    port: 8080\n  rate_limit:\n    rates:\n    - limit: 10\n      duration: 10\n      unit: second\n
      • Finally, we have a securityScheme setup for apiKey auth, powered by Authorino. We'll show this in more detail a little later:
        securitySchemes:\n  api_key:\n    type: apiKey\n    name: api_key\n    in: header\n

      These extensions allow us to automatically generate Kuadrant Kubernetes resources, including AuthPolicies, RateLimitPolicies and Gateway API resources such as HTTPRoutes.

      "},{"location":"api-quickstart/#kuadrantctl","title":"kuadrantctl","text":"

      kuadrantctl is a cli that supports the generation of various Kubernetes resources via OAS specs. Let's run some commands to generate some of these resources. If you forked the api-pestore repo, you can check them in also. Let's apply these to our running workload to implement rate limiting and auth.

      "},{"location":"api-quickstart/#installing-kuadrantctl","title":"Installing kuadrantctl","text":"

      Download kuadrantctl from the v0.2.0 release artifacts:

      https://github.com/Kuadrant/kuadrantctl/releases/tag/v0.2.0

      Drop the kuadrantctl binary somewhere into your $PATH (e.g. /usr/local/bin/).

      For this next part of the tutorial, we recommend installing yq to pretty-print YAML resources.

      "},{"location":"api-quickstart/#generating-kuadrant-resources-with-kuadrantctl","title":"Generating Kuadrant resources with kuadrantctl","text":"

      We'll generate an AuthPolicy to implement API key auth, per the securityScheme in our OAS spec:

      # Generate this resource and save:\nkuadrantctl generate kuadrant authpolicy --oas openapi.yaml | yq -P | tee resources/authpolicy.yaml\n\n# Apply this resource to our cluster:\nkubectl --context kind-api-workload-1 apply -f ./resources/authpolicy.yaml\n

      Next we'll generate a RateLimitPolicy, to protect our APIs with the limits we have setup in our OAS spec:

      # Generate this resource and save:\nkuadrantctl generate kuadrant ratelimitpolicy --oas openapi.yaml | yq -P | tee resources/ratelimitpolicy.yaml\n\n# Apply this resource to our cluster:\nkubectl --context kind-api-workload-1 apply -f ./resources/ratelimitpolicy.yaml\n

      Lastly, we'll generate a Gateway API HTTPRoute to service our APIs:

      # Generate this resource and save:\nkuadrantctl generate gatewayapi httproute --oas openapi.yaml | yq -P | tee resources/httproute.yaml\n\n# Apply this resource to our cluster, setting the hostname in via the KUADRANT_ZONE_ROOT_DOMAIN env var:\nkustomize build ./resources/ | envsubst | kubectl --context kind-api-workload-1 apply -f-\n
      "},{"location":"api-quickstart/#check-our-applied-policies","title":"Check our applied policies","text":"

      Navigate to your app's Swagger UI:

      echo https://petstore.$KUADRANT_ZONE_ROOT_DOMAIN/docs/\n
      "},{"location":"api-quickstart/#ratelimitpolicy","title":"RateLimitPolicy","text":"

      Let's check that our RateLimitPolicy for the /store/inventory has been applied and works correctly. Recall, our OAS spec had the following limits applied:

      x-kuadrant:\n  ...\n  rate_limit:\n    rates:\n\n    - limit: 10\n      duration: 10\n      unit: second\n
      Navigate to the /store/inventory API, click Try it out, and Execute.

      You'll see a response similar to:

      {\n  \"available\": 10,\n  \"pending\": 5,\n  \"sold\": 3\n}\n

      This API has a rate limit applied, so if you send more than 10 requests in a 10 second window, you will see a 429 HTTP Status code from responses, and a \"Too Many Requests\" message in the response body. Click Execute quickly in succession to see your RateLimitPolicy in action.

      "},{"location":"api-quickstart/#authpolicy","title":"AuthPolicy","text":"

      Let's check that our AuthPolicy for the /store/admin endpoint has been applied and works correctly. Recall, our OAS spec had the following securitySchemes applied:

        securitySchemes:\n    api_key:\n      type: apiKey\n      name: api_key\n      in: header\n

      Navigate to the /store/admin API, click Try it out, and Execute. You'll get a 401 response.

      You can set a value for the api_key header by clicking Authorize at the top of the page. Set a value of secret. This api key value is stored in the petstore-api-key Secret in the petstore namespace. Try the /store/admin endpoint again and you should get a 200 response with the following:

      {\"message\":\"You are an admin!\"}\n
      "},{"location":"api-quickstart/#policy-adjustments","title":"Policy Adjustments","text":"

      Run the Swagger UI editor to explore the OAS spec and make some tweaks:

      docker run -p 8080:8080 -v $(pwd):/tmp -e SWAGGER_FILE=/tmp/openapi.yaml swaggerapi/swagger-editor\n

      You should be able to access the Swagger Editor at http://localhost:8080. Our /store/inventory API needs some additonal rate limiting. This is one of our slowest, most expensive services, so we'd like to rate limit it further.

      In your openapi.yaml, navigate to the /store/inventory endpoint in the paths block. Modify the rate_limit block to further restrict the amount of requests this endpoint can serve to 2 requests per 10 seconds:

      x-kuadrant:\n  ...\n  rate_limit:\n    rates:\n\n    - limit: 2\n      duration: 10\n      unit: second\n

      Save your updated spec - File > Save as YAML > and update your existing openapi.yaml. You may need to copy the file from your Downloads folder to the location of the petstore repository.

      Next we'll re-generate our RateLimitPolicy with kuadrantctl:

      # Generate this resource and save:\nkuadrantctl generate kuadrant ratelimitpolicy --oas openapi.yaml | yq -P | tee resources/ratelimitpolicy.yaml\n\n# Apply this resource to our cluster:\nkubectl --context kind-api-workload-1 apply -f ./resources/ratelimitpolicy.yaml\n

      At this stage you can optionally check in all the changes to the repo if you forked it.

      # Optionally add, commit & push the changes to your fork\ngit add resources\ngit commit -am \"Generated AuthPolicy,RateLimitPolicy & HTTPRoute\"\ngit push # You may need to set an upstream as well\n

      In your app's Swagger UI:

      echo https://petstore.$KUADRANT_ZONE_ROOT_DOMAIN/docs/\n

      Navigate to the /store/inventory API one more, click Try it out, and Execute.

      You'll see the effects of our new RateLimitPolicy applied. If you now send more than 2 requests in a 10 second window, you'll be rate-limited.

      Note: It may take a few minutes for the updated RateLimitPolicy to be configured with the modified rate limit.

      "},{"location":"api-quickstart/#application-developer-scaling-the-application","title":"(Application developer) Scaling the application","text":"

      Deploy the petstore to the 2nd cluster:

      kustomize build ./resources/ | envsubst | kubectl --context kind-api-workload-2 apply -f-\nkubectl --context kind-api-workload-2 apply -f ./resources/authpolicy.yaml\nkubectl --context kind-api-workload-2 apply -f ./resources/ratelimitpolicy.yaml\n

      Configure the app REGION to be us:

      kubectl --context kind-api-workload-2 apply -k ./resources/us-cluster/\n
      "},{"location":"api-quickstart/#platform-engineer-scaling-the-gateway-and-traffic-management","title":"(Platform engineer) Scaling the gateway and traffic management","text":"

      Deploy the Gateway to the 2nd cluster:

      kubectl --context kind-api-control-plane patch placement http-gateway --namespace multi-cluster-gateways --type='json' -p='[{\"op\": \"replace\", \"path\": \"/spec/numberOfClusters\", \"value\":2}]'\n

      Label the 1st cluster as being in the 'EU' region, and the 2nd cluster as being in the 'US' region. These labels are used by the DNSPolicy for configuring geo DNS.

      kubectl --context kind-api-control-plane label managedcluster kind-api-workload-1 kuadrant.io/lb-attribute-geo-code=EU --overwrite\nkubectl --context kind-api-control-plane label managedcluster kind-api-workload-2 kuadrant.io/lb-attribute-geo-code=US --overwrite\n
      "},{"location":"api-quickstart/#api-consumer-accessing-the-api-from-multiple-regions","title":"(API consumer) Accessing the API from multiple regions","text":"

      Info

      This section is optional. If you'd rather skip this part, you can skip forward to the \"(App developer) API traffic monitoring\" section.

      "},{"location":"api-quickstart/#pre-requisites","title":"Pre-requisites","text":"
      • python3 and pip3: these are required for this part of the walkthrough

      To demonstrate traffic management by geographical region, we'll use a tool called 'geosight'. This tool resolves hostnames from different regions, fetches a website from the resulting DNS record address and takes a screenshot. The petstore app has been configured to serve a flag image based on which region it is running in. In the 1st cluster, the EU flag is used. In the 2nd cluster, the US flag is used.

      To install 'geosight', run the following commands:

      git clone git@github.com:jasonmadigan/geosight.git && cd geosight\npip3 install -r requirements.txt\nplaywright install\n

      Then run it using:

      python3 app.py\n

      Access the webapp at http://127.0.0.1:5001/. In the input box, type the address from below and click the Fetch button:

      echo https://petstore.$KUADRANT_ZONE_ROOT_DOMAIN/server/details\n

      After a moment you should see dns results for different regions, and a corresponding screenshot.

      If you want to experiment with other regions, check out the Configuration section for geosight and the Kuadrant docs for geo loadbalancing.

      "},{"location":"api-quickstart/#app-developer-api-traffic-monitoring","title":"(App developer) API traffic monitoring","text":"

      To view the App developer dashboard, the same Grafana will be used from the platform engineer steps above: https://grafana.172.31.0.2.nip.io

      The most relevant for a app developer is Stitch: App Developer Dashboard You should see panels about API's including:

      • Request and error rates
      • API summaries
      • API request summaries
      • API duration

      All corresponding to our HTTPRoute coming from our OAS spec

      "},{"location":"api-quickstart/#platform-engineer-apis-summary-view","title":"(Platform Engineer) APIs summary view","text":"

      Now that the app developer has deployed their app, new metrics and data is now available in the platform engineer dashboard seen in the previous step https://grafana.172.31.0.2.nip.io:

      • Gateways, routes and policies
      • Constraints & Violations (there should be no violations present)
      • APIs Summary
      "},{"location":"api-quickstart/#summary","title":"Summary","text":"

      You now have a local environment with a reference architecture to design and deploy an API in a kube native way, using Kuadrant and other open source tools.

      "},{"location":"api-quickstart/#cleanup","title":"Cleanup","text":"

      To destroy the previously created kind clusters, run:

      ./cleanup.sh\n

      Info

      DNS records in AWS will remain after cleanup - you can remove these from your zone manually.

      "},{"location":"kuadrantctl/","title":"kuadrantctl","text":"

      kuadrantctl is a CLI tool for managing Kuadrant configurations and resources.

      "},{"location":"kuadrantctl/#installing","title":"Installing","text":"

      kuadrantctl can be installed either by downloading pre-compiled binaries or by compiling from source. For most users, downloading the binary is the easiest and recommended method.

      "},{"location":"kuadrantctl/#installing-pre-compiled-binaries","title":"Installing Pre-compiled Binaries","text":"
      1. Download the latest binary for your platform from the kuadrantctl Releases page.
      2. Unpack the binary.
      3. Move it to a directory in your $PATH so that it can be executed from anywhere.
      "},{"location":"kuadrantctl/#compiling-from-source","title":"Compiling from Source","text":"

      If you prefer to compile from source or are contributing to the project, you can install kuadrantctl using make install. This method requires Golang 1.21 or newer.

      It is possible to use the make target install to compile from source. From root of the repository, run

      make install\n

      This will compile kuadrantctl and install it in the bin directory at root of directory. It will also ensure the correct version of the binary is displayed . It can be ran using ./bin/kuadrantctl .

      "},{"location":"kuadrantctl/#usage","title":"Usage","text":"

      Below is a high-level overview of its commands, along with links to detailed documentation for more complex commands.

      "},{"location":"kuadrantctl/#general-syntax","title":"General Syntax","text":"
      kuadrantctl [command] [subcommand] [flags]\n
      "},{"location":"kuadrantctl/#commands-overview","title":"Commands Overview","text":"Command Description completion Generate autocompletion scripts for the specified shell generate Commands related to Kubernetes Gateway API and Kuadrant resource generation from OpenAPI 3.x specifications help Help about any command version Print the version number of kuadrantctl"},{"location":"kuadrantctl/#flags","title":"Flags","text":"Flag Description -h, --help Help for kuadrantctl -v, --verbose Enable verbose output"},{"location":"kuadrantctl/#commands-detail","title":"Commands Detail","text":""},{"location":"kuadrantctl/#completion","title":"completion","text":"

      Generate an autocompletion script for the specified shell.

      Subcommand Description bash Generate script for Bash fish Generate script for Fish powershell Generate script for PowerShell zsh Generate script for Zsh"},{"location":"kuadrantctl/#generate","title":"generate","text":"

      Commands related to Kubernetes Gateway API and Kuadrant resource generation from OpenAPI 3.x specifications.

      Subcommand Description gatewayapi Generate Gateway API resources kuadrant Generate Kuadrant resources"},{"location":"kuadrantctl/#generate-gatewayapi","title":"generate gatewayapi","text":"

      Generate Gateway API resources from an OpenAPI 3.x specification

      Subcommand Description Flags httproute Generate Gateway API HTTPRoute from OpenAPI 3.0.X --oas string Path to OpenAPI spec file (in JSON or YAML format), URL, or '-' to read from standard input (required). -o Output format: 'yaml' or 'json'. (default \"yaml\")"},{"location":"kuadrantctl/#generate-kuadrant","title":"generate kuadrant","text":"

      Generate Kuadrant resources from an OpenAPI 3.x specification

      Subcommand Description Flags authpolicy Generate a Kuadrant AuthPolicy from an OpenAPI 3.0.x specification --oas string Path to OpenAPI spec file (in JSON or YAML format), URL, or '-' to read from standard input (required). -o Output format: 'yaml' or 'json'. (default \"yaml\") ratelimitpolicy Generate Kuadrant RateLimitPolicy from an OpenAPI 3.0.x specification --oas string Path to OpenAPI spec file (in JSON or YAML format), URL, or '-' to read from standard input (required). -o Output format: 'yaml' or 'json'. (default \"yaml\")"},{"location":"kuadrantctl/#version","title":"version","text":"

      Print the version number of kuadrantctl.

      No additional flags or subcommands.

      "},{"location":"kuadrantctl/#additional-guides","title":"Additional Guides","text":""},{"location":"kuadrantctl/#generating-gateway-api-httproute-objects","title":"Generating Gateway API HTTPRoute Objects","text":"
      • Generates Gateway API HTTPRoute objects from an OpenAPI Specification (OAS) 3.x.
      • Supports reading from a file, URL, or stdin.
      • Example usages and more information can be found in the detailed guide.
      "},{"location":"kuadrantctl/#generating-kuadrant-authpolicy-objects","title":"Generating Kuadrant AuthPolicy Objects","text":"
      • Generates Kuadrant AuthPolicy objects for managing API authentication.
      • Supports openIdConnect and apiKey types from the OpenAPI Security Scheme Object.
      • Example usages and more information can be found in the detailed guide.
      "},{"location":"kuadrantctl/#generating-kuadrant-ratelimitpolicy-objects","title":"Generating Kuadrant RateLimitPolicy Objects","text":"
      • Generates Kuadrant RateLimitPolicy objects for managing API rate limiting.
      • Supports reading from a file, URL, or stdin.
      • Example usages and more information can be found in the detailed guide.

      For more detailed information about each command, including options and usage examples, use kuadrantctl [command] --help.

      "},{"location":"kuadrantctl/#using-with-github-actions","title":"Using with GitHub Actions","text":"
      - name: Install kuadrantctl\n  uses: jaxxstorm/action-install-gh-release@v1.10.0\n  with: # Grab the latest version\n    repo: Kuadrant/kuadrantctl\n
      "},{"location":"kuadrantctl/#commands","title":"Commands","text":"
      • Generate Gateway API HTTPRoute objects from OpenAPI 3.X
      • Generate Kuadrant RateLimitPolicy from OpenAPI 3.X
      • Generate Kuadrant AuthPolicy from OpenAPI 3.X
      "},{"location":"kuadrantctl/#contributing","title":"Contributing","text":"

      The Development guide describes how to build the kuadrantctl CLI and how to test your changes before submitting a patch or opening a PR.

      "},{"location":"kuadrantctl/#licensing","title":"Licensing","text":"

      This software is licensed under the Apache 2.0 license.

      See the LICENSE and NOTICE files that should have been provided along with this software for details.

      "},{"location":"kuadrantctl/doc/RELEASE/","title":"RELEASE","text":""},{"location":"kuadrantctl/doc/RELEASE/#release","title":"Release","text":"

      The release process follows a streamlined approach, no release branches involved. New releases can be major, minor or patch based releases, but always incrementing digits regarding the latest release version.

      "},{"location":"kuadrantctl/doc/RELEASE/#new-majorminorpatch-version","title":"New Major.Minor.Patch version","text":"
      1. Create a new minor release branch from the HEAD of main:
        git checkout -b release-vX.Y.Z\n
      2. Update version (prefixed with \"v\"):
        make prepare-release VERSION=vX.Y.Z\n
      3. Verify local changes:
        make install\nbin/kuadrantctl version\n
        The output should be the new version, for example :
        kuadrantctl v0.3.0 (ff779a1-dirty)\n
      4. Commit and push:
        git add .\ngit commit -m \"prepare-release: release-vX.Y.Z\"\ngit push origin release-vX.Y.Z\n
      5. Create git tag:
        git tag -s -m vX.Y.Z vX.Y.Z\ngit push origin vX.Y.Z\n
      6. In Github, create release.

      7. Pick recently pushed git tag

      8. Automatically generate release notes from previous released tag
      9. Set as the latest release

      10. Verify that the build Release workflow is triggered and completes for the new tag

      "},{"location":"kuadrantctl/doc/RELEASE/#verify-new-release-is-available","title":"Verify new release is available","text":"
      1. Download the latest binary for your platform from the kuadrantctl Latest Releases page.
      2. Unpack the binary.
      3. Move it to a directory in your $PATH so that it can be executed from anywhere.
      4. Check the version:
        kuadrantctl version\n
        The output should be the new version, for example :
        kuadrantctl v0.3.0 (eec318b2e11e7ea5add5e550ff872bde64555d8f)\n
      "},{"location":"kuadrantctl/doc/development/","title":"Development Guide","text":""},{"location":"kuadrantctl/doc/development/#technology-stack-required-for-development","title":"Technology stack required for development","text":"
      • git
      • go version 1.21+
      "},{"location":"kuadrantctl/doc/development/#build-the-cli","title":"Build the CLI","text":"
      $ git clone https://github.com/kuadrant/kuadrantctl.git\n$ cd kuadrantctl && make install\n$ bin/kuadrantctl version\n{\"level\":\"info\",\"ts\":\"2023-11-08T23:44:57+01:00\",\"msg\":\"kuadrantctl version: latest\"}\n
      "},{"location":"kuadrantctl/doc/development/#quick-steps-to-contribute","title":"Quick steps to contribute","text":"
      • Fork the project.
      • Download your fork to your PC (git clone https://github.com/your_username/kuadrantctl && cd kuadrantctl)
      • Create your feature branch (git checkout -b my-new-feature)
      • Make changes and run tests (make test)
      • Add them to staging (git add .)
      • Commit your changes (git commit -m 'Add some feature')
      • Push to the branch (git push origin my-new-feature)
      • Create new pull request
      "},{"location":"kuadrantctl/doc/generate-gateway-api-httproute/","title":"Generating Gateway API HTTPRoutes","text":""},{"location":"kuadrantctl/doc/generate-gateway-api-httproute/#generate-gateway-api-httproute-object-from-openapi-3","title":"Generate Gateway API HTTPRoute object from OpenAPI 3","text":"

      The kuadrantctl generate gatewayapi httproute command generates an Gateway API HTTPRoute from your OpenAPI Specification (OAS) 3.x powered with kuadrant extensions.

      "},{"location":"kuadrantctl/doc/generate-gateway-api-httproute/#openapi-specification","title":"OpenAPI specification","text":"

      An OpenAPI document resource can be provided to the cli by one of the following channels:

      • Filename in the available path.
      • URL format (supported schemes are HTTP and HTTPS). The CLI will try to download from the given address.
      • Read from stdin standard input stream.
      "},{"location":"kuadrantctl/doc/generate-gateway-api-httproute/#usage","title":"Usage","text":"
      $ kuadrantctl generate gatewayapi httproute -h\nGenerate Gateway API HTTPRoute from OpenAPI 3.0.X\n\nUsage:\n  kuadrantctl generate gatewayapi httproute [flags]\n\nFlags:\n  -h, --help          help for httproute\n  --oas string        Path to OpenAPI spec file (in JSON or YAML format), URL, or '-' to read from standard input (required)\n  -o Output format:   'yaml' or 'json'. (default \"yaml\")\n\nGlobal Flags:\n  -v, --verbose   verbose output\n

      Under the example folder there are examples of OAS 3 that can be used to generate the resources

      As an AuthPolicy and RateLimitPolicy both require a HTTPRoute to target, the user guides for generating those policies include examples of running the kuadrantctl generate gatewayapi httproute command.

      You can find those guides here:

      • Generate Kuadrant AuthPolicy
      • Generate Kuadrant RateLimitPolicy
      "},{"location":"kuadrantctl/doc/generate-kuadrant-auth-policy/","title":"Generating Kuadrant AuthPolicies","text":""},{"location":"kuadrantctl/doc/generate-kuadrant-auth-policy/#generate-kuadrant-authpolicy-object-from-openapi-3","title":"Generate Kuadrant AuthPolicy object from OpenAPI 3","text":"

      The kuadrantctl generate kuadrant authpolicy command generates an Kuadrant AuthPolicy from your OpenAPI Specification (OAS) 3.x powered with kuadrant extensions.

      "},{"location":"kuadrantctl/doc/generate-kuadrant-auth-policy/#openapi-specification","title":"OpenAPI specification","text":"

      An OpenAPI document resource can be provided to the cli by one of the following channels:

      • Filename in the available path.
      • URL format (supported schemes are HTTP and HTTPS). The CLI will try to download from the given address.
      • Read from stdin standard input stream.

      OpenAPI Security Scheme Object types

      Types Implemented openIdConnect YES apiKey YES http NO oauth2 NO"},{"location":"kuadrantctl/doc/generate-kuadrant-auth-policy/#openidconnect-type-description","title":"openIdConnect Type Description","text":"

      The following OAS example has one protected endpoint GET /dog with openIdConnect security scheme type.

      paths:\n  /dog:\n    get:\n      operationId: \"getDog\"\n      security:\n\n        - securedDog: []\n      responses:\n        405:\n          description: \"invalid input\"\ncomponents:\n  securitySchemes:\n    securedDog:\n      type: openIdConnect\n      openIdConnectUrl: https://example.com/.well-known/openid-configuration\n

      Running the command

      kuadrantctl generate kuadrant authpolicy --oas ./petstore-openapi.yaml  | yq -P\n

      The generated authpolicy (only relevan fields shown here):

      kind: AuthPolicy\napiVersion: kuadrant.io/v1beta2\nmetadata:\n  name: petstore\n  namespace: petstore\n  creationTimestamp: null\nspec:\n  routeSelectors:\n\n    - matches:\n        - path:\n            type: Exact\n            value: /api/v1/dog\n          method: GET\n  rules:\n    authentication:\n      getDog_securedDog:\n        credentials: {}\n        jwt:\n          issuerUrl: https://example.com/.well-known/openid-configuration\n        routeSelectors:\n          - matches:\n              - path:\n                  type: Exact\n                  value: /api/v1/dog\n                method: GET\n
      "},{"location":"kuadrantctl/doc/generate-kuadrant-auth-policy/#apikey-type-description","title":"apiKey Type Description","text":"

      The following OAS example has one protected endpoint GET /dog with apiKey security scheme type.

      paths:\n  /dog:\n    get:\n      operationId: \"getDog\"\n      security:\n\n        - securedDog: []\n      responses:\n        405:\n          description: \"invalid input\"\ncomponents:\n  securitySchemes:\n    securedDog:\n      type: apiKey\n      name: dog_token\n      in: query\n

      Running the command

      kuadrantctl generate kuadrant authpolicy --oas ./petstore-openapi.yaml  | yq -P\n

      The generated authpolicy (only relevan fields shown here):

      kind: AuthPolicy\napiVersion: kuadrant.io/v1beta2\nmetadata:\n  name: petstore\n  namespace: petstore\n  creationTimestamp: null\nspec:\n  routeSelectors:\n\n    - matches:\n        - path:\n            type: Exact\n            value: /dog\n          method: GET\n  rules:\n    authentication:\n      getDog_securedDog:\n        credentials:\n          queryString:\n            name: dog_token\n          apiKey:\n            selector:\n              matchLabels:\n                kuadrant.io/apikeys-by: securedDog\n        routeSelectors:\n          - matches:\n              - path:\n                  type: Exact\n                  value: /dog\n                method: GET\n

      In this particular example, the endpoint GET /dog will be protected. The token needs to be in the query string of the request included in a parameter named dog_token. Kuadrant will validate received tokens against tokens found in kubernetes secrets with label kuadrant.io/apikeys-by: ${sec scheme name}. In this particular example the label selector will be: kuadrant.io/apikeys-by: securedDog.

      Like the following example:

      apiVersion: v1\nkind: Secret\nmetadata:\n  name: api-key-1\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    kuadrant.io/apikeys-by: securedDog\nstringData:\n  api_key: MYSECRETTOKENVALUE\ntype: Opaque\n

      Note: Kuadrant validates tokens against api keys found in secrets. The label selector format kuadrant.io/apikeys-by: ${sec scheme name} is arbitrary and designed for this CLI command.

      For more information about Kuadrant auth based on api key: https://docs.kuadrant.io/latest/authorino/docs/user-guides/api-key-authentication/

      "},{"location":"kuadrantctl/doc/generate-kuadrant-auth-policy/#usage","title":"Usage","text":"
      Generate Kuadrant AuthPolicy from OpenAPI 3.0.X\n\nUsage:\n  kuadrantctl generate kuadrant authpolicy [flags]\n\nFlags:\n  -h, --help         help for authpolicy\n  --oas string        Path to OpenAPI spec file (in JSON or YAML format), URL, or '-' to read from standard input (required)\n  -o Output format:   'yaml' or 'json'. (default \"yaml\")\n\nGlobal Flags:\n  -v, --verbose   verbose output\n

      Under the example folder there are examples of OAS 3 that can be used to generate the resources

      "},{"location":"kuadrantctl/doc/generate-kuadrant-auth-policy/#user-guide","title":"User Guide","text":"

      The verification steps will lead you to the process of deploying and testing the following api with endpoints protected using different security schemes:

      Operation Security Scheme GET /api/v1/cat public (not auth) POST /api/v1/cat ApiKey in header GET /api/v1/dog OpenIdConnect GET /api/v1/snake OpenIdConnect OR ApiKey in query string
      • [Optional] Setup SSO service supporting OIDC. For this example, we will be using keycloak.
      • Create a new realm petstore
      • Create a client petstore. In the Client Protocol field, select openid-connect.
      • Configure client settings. Access Type to public. Direct Access Grants Enabled to ON (for this example password will be used directly to generate the token).
      • Add a user to the realm
        • Click the Users menu on the left side of the window. Click Add user.
        • Type the username bob, set the Email Verified switch to ON, and click Save.
        • On the Credentials tab, set the password p. Enter the password in both the fields, set the Temporary switch to OFF to avoid the password reset at the next login, and click Set Password.

      Now, let's run local cluster to test the kuadrantctl new command to generate authpolicy.

      • Clone the repo
      git clone https://github.com/Kuadrant/kuadrantctl.git\ncd kuadrantctl\n
      • Setup a cluster, Istio and Gateway API CRDs and Kuadrant

      Use our single-cluster quick start script - this will install Kuadrant in a local kind cluster: https://docs.kuadrant.io/latest/getting-started-single-cluster/

      • Build and install CLI in bin/kuadrantctl path
      make install\n
      • Deploy petstore backend API
      kubectl create namespace petstore\nkubectl apply -n petstore -f examples/petstore/petstore.yaml\n
      • Let's create Petstore's OpenAPI spec
      cat <<EOF >petstore-openapi.yaml\n---\nopenapi: \"3.1.0\"\ninfo:\n  title: \"Pet Store API\"\n  version: \"1.0.0\"\nx-kuadrant:\n  route:\n    name: \"petstore\"\n    namespace: \"petstore\"\n    hostnames:\n\n      - example.com\n    parentRefs:\n      - name: istio-ingressgateway\n        namespace: istio-system\nservers:\n  - url: https://example.io/api/v1\npaths:\n  /cat:\n    x-kuadrant:\n      backendRefs:\n        - name: petstore\n          port: 80\n          namespace: petstore\n    get:  # No sec requirements\n      operationId: \"getCat\"\n      responses:\n        405:\n          description: \"invalid input\"\n    post:  # API key\n      operationId: \"postCat\"\n      security:\n        - cat_api_key: []\n      responses:\n        405:\n          description: \"invalid input\"\n  /dog:\n    x-kuadrant:\n      backendRefs:\n        - name: petstore\n          port: 80\n          namespace: petstore\n    get:  # OIDC\n      operationId: \"getDog\"\n      security:\n        - oidc:\n          - read:dogs\n      responses:\n        405:\n          description: \"invalid input\"\n  /snake:\n    x-kuadrant:\n      backendRefs:\n        - name: petstore\n          port: 80\n          namespace: petstore\n    get:  # OIDC or API key\n      operationId: \"getSnake\"\n      security:\n        - oidc: [\"read:snakes\"]\n        - snakes_api_key: []\n      responses:\n        405:\n          description: \"invalid input\"\ncomponents:\n  securitySchemes:\n    cat_api_key:\n      type: apiKey\n      name: api_key\n      in: header\n    oidc:\n      type: openIdConnect\n      openIdConnectUrl: https://${KEYCLOAK_PUBLIC_DOMAIN}/auth/realms/petstore\n    snakes_api_key:\n      type: apiKey\n      name: snake_token\n      in: query\nEOF\n

      Replace ${KEYCLOAK_PUBLIC_DOMAIN} with your SSO instance domain

      • Create an API key only valid for POST /api/v1/cat endpoint

        kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: cat-api-key-1\n  namespace: petstore\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    kuadrant.io/apikeys-by: cat_api_key\nstringData:\n  api_key: I_LIKE_CATS\ntype: Opaque\nEOF\n

        Note: the label's value of kuadrant.io/apikeys-by: cat_api_key is the name of the sec scheme of the OpenAPI spec.

      • Create an API key only valid for GET /api/v1/snake endpoint

      kubectl apply -f -<<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n  name: snake-api-key-1\n  namespace: petstore\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    kuadrant.io/apikeys-by: snakes_api_key\nstringData:\n  api_key: I_LIKE_SNAKES\ntype: Opaque\nEOF\n

      Note: the label's value of kuadrant.io/apikeys-by: snakes_api_key is the name of the sec scheme of the OpenAPI spec.

      • Create the HTTPRoute using the CLI
      bin/kuadrantctl generate gatewayapi httproute --oas petstore-openapi.yaml | kubectl apply -n petstore -f -\n
      • Create Kuadrant's Auth Policy
      bin/kuadrantctl generate kuadrant authpolicy --oas petstore-openapi.yaml | kubectl apply -n petstore -f -\n

      Now, we are ready to test OpenAPI endpoints

      • GET /api/v1/cat -> It's a public endpoint, hence should return 200 Ok
      curl  -H \"Host: example.com\" -i \"http://127.0.0.1:9080/api/v1/cat\"\n
      • POST /api/v1/cat -> It's a protected endpoint with apikey

      Without any credentials, it should return 401 Unauthorized

      curl  -H \"Host: example.com\" -X POST -i \"http://127.0.0.1:9080/api/v1/cat\"\n
      HTTP/1.1 401 Unauthorized\nwww-authenticate: Bearer realm=\"getDog_oidc\"\nwww-authenticate: Bearer realm=\"getSnake_oidc\"\nwww-authenticate: snake_token realm=\"getSnake_snakes_api_key\"\nwww-authenticate: api_key realm=\"postCat_cat_api_key\"\nx-ext-auth-reason: {\"postCat_cat_api_key\":\"credential not found\"}\ndate: Tue, 28 Nov 2023 22:28:44 GMT\nserver: istio-envoy\ncontent-length: 0\n

      The reason headers tell that credential not found. Credentials satisfying postCat_cat_api_key authentication is needed.

      According to the OpenAPI spec, it should be a header named api_key. What if we try a wrong token? one token assigned to other endpoint, i.e. I_LIKE_SNAKES instead of the valid one I_LIKE_CATS. It should return 401 Unauthorized.

      curl  -H \"Host: example.com\" -H \"api_key: I_LIKE_SNAKES\" -X POST -i \"http://127.0.0.1:9080/api/v1/cat\"\n
      HTTP/1.1 401 Unauthorized\nwww-authenticate: Bearer realm=\"getDog_oidc\"\nwww-authenticate: Bearer realm=\"getSnake_oidc\"\nwww-authenticate: snake_token realm=\"getSnake_snakes_api_key\"\nwww-authenticate: api_key realm=\"postCat_cat_api_key\"\nx-ext-auth-reason: {\"postCat_cat_api_key\":\"the API Key provided is invalid\"}\ndate: Tue, 28 Nov 2023 22:32:55 GMT\nserver: istio-envoy\ncontent-length: 0\n

      The reason headers tell that the API Key provided is invalid. Using valid token (from the secret cat-api-key-1 assigned to POST /api/v1/cats) in the api_key header should return 200 Ok

      curl  -H \"Host: example.com\" -H \"api_key: I_LIKE_CATS\" -X POST -i \"http://127.0.0.1:9080/api/v1/cat\"\n
      • GET /api/v1/dog -> It's a protected endpoint with oidc (assigned to our keycloak instance and petstore realm)

      without credentials, it should return 401 Unauthorized

      curl -H \"Host: example.com\" -i \"http://127.0.0.1:9080/api/v1/dog\"\n

      To get the authentication token, this example is using Direct Access Grants oauth2 grant type (also known as Client Credentials grant type). When configuring the Keycloak (OIDC provider) client settings, we enabled Direct Access Grants to enable this procedure. We will be authenticating as bob user with p password. We previously created bob user in Keycloak in the petstore realm.

      export ACCESS_TOKEN=$(curl -k -H \"Content-Type: application/x-www-form-urlencoded\" \\\n        -d 'grant_type=password' \\\n        -d 'client_id=petstore' \\\n        -d 'scope=openid' \\\n        -d 'username=bob' \\\n        -d 'password=p' \"https://${KEYCLOAK_PUBLIC_DOMAIN}/auth/realms/petstore/protocol/openid-connect/token\" | jq -r '.access_token')\n

      Replace ${KEYCLOAK_PUBLIC_DOMAIN} with your SSO instance domain

      With the access token in place, let's try to get those puppies

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" -H 'Host: example.com' http://127.0.0.1:9080/api/v1/dog -i\n

      it should return 200 OK

      • GET /api/v1/snake -> It's a protected endpoint with oidc (assigned to our keycloak instance and petstore realm) OR with apiKey

      This example is to show that multiple security requirements (with OR semantics) can be specified for an OpenAPI operation.

      Without credentials, it should return 401 Unauthorized

      curl -H \"Host: example.com\" -i \"http://127.0.0.1:9080/api/v1/snake\"\n

      With the access token in place, it should return 200 OK (unless the token has expired).

      curl -H \"Authorization: Bearer $ACCESS_TOKEN\" -H 'Host: example.com' http://127.0.0.1:9080/api/v1/snake -i\n

      With apiKey it should also work. According to the OpenAPI spec security scheme, it should be a query string named snake_token and the token needs to be valid token (from the secret snake-api-key-1 assigned to GET /api/v1/snake)

      curl -H 'Host: example.com' -i \"http://127.0.0.1:9080/api/v1/snake?snake_token=I_LIKE_SNAKES\"\n
      "},{"location":"kuadrantctl/doc/generate-kuadrant-rate-limit-policy/","title":"Generating Kuadrant RateLimitPolicies","text":""},{"location":"kuadrantctl/doc/generate-kuadrant-rate-limit-policy/#generate-kuadrant-ratelimitpolicy-object-from-openapi-3","title":"Generate Kuadrant RateLimitPolicy object from OpenAPI 3","text":"

      The kuadrantctl generate kuadrant ratelimitpolicy command generates a Kuadrant RateLimitPolicy from your OpenAPI Specification (OAS) 3.x document powered with Kuadrant extensions.

      "},{"location":"kuadrantctl/doc/generate-kuadrant-rate-limit-policy/#openapi-specification","title":"OpenAPI specification","text":"

      An OpenAPI document resource can be provided to the Kuadrant CLI in one of the following ways:

      • Filename in the available path.
      • URL format (supported schemes are HTTP and HTTPS). The CLI will try to download from the given address.
      • Read from stdin standard input stream.
      "},{"location":"kuadrantctl/doc/generate-kuadrant-rate-limit-policy/#usage","title":"Usage","text":"
      Generate Kuadrant RateLimitPolicy from OpenAPI 3.0.x\n\nUsage:\n  kuadrantctl generate kuadrant ratelimitpolicy [flags]\n\nFlags:\n  -h, --help         help for ratelimitpolicy\n  --oas string        Path to OpenAPI spec file (in JSON or YAML format), URL, or '-' to read from standard input (required)\n  -o Output format:   'yaml' or 'json'. (default \"yaml\")\n\nGlobal Flags:\n  -v, --verbose   verbose output\n

      Note: The kuadrantctl/examples directory in GitHub includes sample OAS 3 files that you can use to generate the resources.

      "},{"location":"kuadrantctl/doc/generate-kuadrant-rate-limit-policy/#procedure","title":"Procedure","text":"
      1. Clone the Git repository as follows:

        git clone https://github.com/Kuadrant/kuadrantctl.git\ncd kuadrantctl\n ```\n2. Set up a cluster, Istio and Gateway API CRDs, and Kuadrant as follows: \n\n\n* Use the single-cluster quick start script to install Kuadrant in a local `kind` cluster: https://docs.kuadrant.io/latest/getting-started-single-cluster/.\n\n\n3. Build and install the CLI in `bin/kuadrantctl` path as follows:\n```bash\nmake install\n

      2. Deploy the Petstore backend API as follows:

        kubectl create namespace petstore\nkubectl apply -n petstore -f examples/petstore/petstore.yaml\n

      3. Create the Petstore OpenAPI definition as follows:

      cat <<EOF >petstore-openapi.yaml\n---\nopenapi: \"3.0.3\"\ninfo:\n  title: \"Pet Store API\"\n  version: \"1.0.0\"\nx-kuadrant:  ## Root-level Kuadrant extension\n  route:\n    name: \"petstore\"\n    namespace: \"petstore\"\n    hostnames:\n\n      - example.com\n    parentRefs:\n      - name: istio-ingressgateway\n        namespace: istio-system\nservers:\n  - url: https://example.io/v1\npaths:\n  /cat:\n    x-kuadrant:  ## Path-level Kuadrant extension\n      backendRefs:\n        - name: petstore\n          port: 80\n          namespace: petstore\n      rate_limit:\n        rates:\n          - limit: 1\n            duration: 10\n            unit: second\n        counters:\n          - request.headers.x-forwarded-for\n    get:  # Added to the route and rate limited\n      operationId: \"getCat\"\n      responses:\n        405:\n          description: \"invalid input\"\n    post:  # NOT added to the route\n      x-kuadrant: \n        disable: true\n      operationId: \"postCat\"\n      responses:\n        405:\n          description: \"invalid input\"\n  /dog:\n    get:  # Added to the route and rate limited\n      x-kuadrant:  ## Operation-level Kuadrant extension\n        backendRefs:\n          - name: petstore\n            port: 80\n            namespace: petstore\n        rate_limit:\n          rates:\n            - limit: 3\n              duration: 10\n              unit: second\n          counters:\n            - request.headers.x-forwarded-for\n      operationId: \"getDog\"\n      responses:\n        405:\n          description: \"invalid input\"\n    post:  # Added to the route and NOT rate limited\n      x-kuadrant:  ## Operation-level Kuadrant extension\n        backendRefs:\n          - name: petstore\n            port: 80\n            namespace: petstore\n      operationId: \"postDog\"\n      responses:\n        405:\n          description: \"invalid input\"\nEOF\n

      Note: The servers base path is not included. This is work-in-progress in follow-up PRs.

      Operation Applied configuration GET /cat Should return 200 OK and be rate limited (1 req / 10 seconds). POST /cat Not added to the HTTPRoute. Should return 404 Not Found. GET /dog Should return 200 OK and be rate limited (3 req / 10 seconds). POST /dog Should return 200 OK and NOT rate limited.
      1. Create the HTTPRoute by using the CLI as follows:

        bin/kuadrantctl generate gatewayapi httproute --oas petstore-openapi.yaml | kubectl apply -n petstore -f -\n

      2. Create the rate limit policy as follows:

        bin/kuadrantctl generate kuadrant ratelimitpolicy --oas petstore-openapi.yaml | kubectl apply -n petstore -f -\n

      3. Test the OpenAPI endpoints as follows:

      4. GET /cat - Should return 200 OK and be rate limited (1 req / 10 seconds).

        curl --resolve example.com:9080:127.0.0.1 -v \"http://example.com:9080/cat\"\n

      5. POST /cat - Not added to the HTTPRoute. Should return 404 Not Found.
        curl --resolve example.com:9080:127.0.0.1 -v -X POST \"http://example.com:9080/cat\"\n
      6. GET /dog - Should return 200 OK and be rate limited (3 req / 10 seconds).
      curl --resolve example.com:9080:127.0.0.1 -v \"http://example.com:9080/dog\"\n
      • POST /dog - Should return 200 OK and NOT rate limited.
      curl --resolve example.com:9080:127.0.0.1 -v -X POST \"http://example.com:9080/dog\"\n
      "},{"location":"kuadrantctl/doc/kuadrantctl-ci-cd/","title":"kuadrantctl - CI/CD with Tekton and Argo CD","text":"

      This guide demonstrates setting up a CI/CD pipeline by using Tekton to deploy Kubernetes Gateway API and Kuadrant resources generated by kuadrantctl, from an OpenAPI definition. In this example, these resources are applied directly to the cluster where Tekton is running.

      "},{"location":"kuadrantctl/doc/kuadrantctl-ci-cd/#prerequisites","title":"Prerequisites","text":"
      • Kuadrant, and all of its prerequisites, installed on a Kubernetes or OpenShift cluster.
      • Tekton Pipelines installed on your cluster.
      • kubectl configured with access to communicate with your cluster.
      • Optional: Tekton CLI tkn for easier interaction with Tekton resources.
      "},{"location":"kuadrantctl/doc/kuadrantctl-ci-cd/#procedure","title":"Procedure","text":""},{"location":"kuadrantctl/doc/kuadrantctl-ci-cd/#step-1-set-up-your-namespace","title":"Step 1 - Set up your namespace","text":"

      Create a dedicated namespace as follows:

      kubectl create namespace petstore\n
      "},{"location":"kuadrantctl/doc/kuadrantctl-ci-cd/#step-2-create-a-persistent-volume-claim","title":"Step 2 - Create a Persistent Volume Claim","text":"

      For this example, to store associated Tekton build artifacts, create a Persistent Volume Claim (PVC) in the petstore namespace as follows:

      kubectl apply -n petstore -f - <<EOF\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: tekton-kuadrantctl-pvc\n  namespace: petstore\nspec:\n  accessModes:\n\n    - ReadWriteOnce\n  resources:\n    requests:\n      storage: 1Gi\nEOF\n
      "},{"location":"kuadrantctl/doc/kuadrantctl-ci-cd/#step-3-define-the-tekton-task","title":"Step 3 - Define the Tekton Task","text":"

      Define the task that outlines steps to clone a repository, generate Kuadrant and Kubernetes resources by using kuadrantctl, and apply them directly to the cluster as follows:

      kubectl apply -f - <<'EOF'\napiVersion: tekton.dev/v1beta1\nkind: Task\nmetadata:\n  name: run-kuadrantctl\n  namespace: petstore\nspec:\n  params:\n\n    - name: gitRepoUrl\n      description: URL of the git repository to clone\n    - name: gitRevision\n      description: Git revision to checkout (branch, tag, sha)\n  workspaces:\n    - name: source\n      description: Workspace to checkout the git repo\n    - name: kubeconfig\n      description: Workspace containing kubeconfig for Kubernetes cluster access\n  steps:\n    - name: clean-workspace\n      image: alpine:latest\n      script: |\n        sh -c 'rm -rf $(workspaces.source.path)/* $(workspaces.source.path)/.[!.]* $(workspaces.source.path)/..?*'\n    - name: clone\n      image: alpine/git:latest\n      script: |\n        git clone $(params.gitRepoUrl) $(workspaces.source.path)\n        cd $(workspaces.source.path)\n        git checkout $(params.gitRevision)\n    - name: download-kuadrantctl\n      image: curlimages/curl:latest\n      script: |\n        ARCH=$(uname -m)\n        case $ARCH in\n        x86_64) BIN_ARCH=\"amd64\";;\n        arm64) BIN_ARCH=\"arm64\";;\n        aarch64) BIN_ARCH=\"arm64\";;\n        *) echo \"Unsupported architecture: $ARCH\" && exit 1 ;;\n        esac\n        cd $(workspaces.source.path)\n        curl -LO \"https://github.com/Kuadrant/kuadrantctl/releases/download/v0.2.3/kuadrantctl-v0.2.3-linux-$BIN_ARCH.tar.gz\"\n        tar -xzf kuadrantctl-v0.2.3-linux-$BIN_ARCH.tar.gz\n    - name: run-kuadrantctl\n      image: alpine:latest\n      script: |\n        cd $(workspaces.source.path)\n        mkdir -p generated-resources\n        ./kuadrantctl generate kuadrant authpolicy --oas openapi.yaml | tee generated-resources/authpolicy.yaml\n        ./kuadrantctl generate kuadrant ratelimitpolicy --oas openapi.yaml |  tee generated-resources/ratelimitpolicy.yaml\n        ./kuadrantctl generate gatewayapi httproute --oas openapi.yaml | tee generated-resources/httproute.yaml\n    - name: apply-resources\n      image: bitnami/kubectl\n      script: |\n        cd $(workspaces.source.path)\n        export KUADRANT_ZONE_ROOT_DOMAIN=example.com # domain name used in the HTTPRoute for the petstore sample app\n        for file in ./generated-resources/*.yaml; do\n          envsubst < \"$file\" | kubectl apply -n petstore -f - \n        done\nEOF\n

      Note: This example uses Tekton with kubectl to apply resources to a cluster. It is best to use a tool such as Argo CD to implement continuous delivery by using a GitOps approach. In this scenario, you would do the following:

      • Use kuadrantctl to generate Kubernetes and Kuadrant resources as part a Tekton pipeline.
      • Commit these new resources to a Git repository.
      • Use ArgoCD to sync these changes from the Git repository to a Kubernetes or OpenShift cluster.
      "},{"location":"kuadrantctl/doc/kuadrantctl-ci-cd/#step-4-create-a-kubeconfig-secret","title":"Step 4 - Create a Kubeconfig secret","text":"

      Important: While this guide uses a kubeconfig secret for simplicity, do not use this in production environments. Instead, use a service account for enhanced security.

      This example uses a kubeconfig secret and role bindings to demonstrate how to provide access for pushing generated resources to a cluster. However, for production setups, employing a service account is best.

      To proceed, create a kubeconfig secret in the petstore namespace to provide Tekton with access to your Kubernetes cluster as follows:

      kubectl create secret generic kubeconfig-secret --from-file=kubeconfig=/path/to/.kube/config -n petstore\n

      Create an associated ClusterRole and ClusterRoleBinding as follows:

      kubectl apply -n petstore -f - <<EOF\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: kuadrant-ci-example-full-access\nrules:\n\n- apiGroups: [\"*\"]\n  resources: [\"*\"]\n  verbs: [\"*\"]\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: kuadrant-ci-example-full-access-binding\nsubjects:\n- kind: ServiceAccount\n  name: default\n  namespace: petstore\nroleRef:\n  kind: ClusterRole\n  name: kuadrant-ci-example-full-access\n  apiGroup: rbac.authorization.k8s.io\nEOF\n
      "},{"location":"kuadrantctl/doc/kuadrantctl-ci-cd/#step-5-trigger-the-taskrun","title":"Step 5 - Trigger the TaskRun","text":"

      Execute the task from the petstore namespace, referencing the kubeconfig secret for cluster access as follows:

      This example runs this task with the Kuadrant Petstore app: https://github.com/kuadrant/api-petstore.

      kubectl apply -n petstore -f - <<EOF\napiVersion: tekton.dev/v1beta1\nkind: TaskRun\nmetadata:\n  name: run-kuadrantctl-taskrun\n  namespace: petstore\nspec:\n  taskRef:\n    name: run-kuadrantctl\n  params:\n\n    - name: gitRepoUrl\n      value: \"https://github.com/kuadrant/api-petstore.git\"\n    - name: gitRevision\n      value: \"main\"\n  workspaces:\n    - name: source\n      persistentVolumeClaim:\n        claimName: tekton-kuadrantctl-pvc\n    - name: kubeconfig\n      secret:\n        secretName: kubeconfig-secret\nEOF\n

      If you have tkn installed, you can easily view the progress of the pipe run as follows:

      tkn taskrun list -n petstore\nNAME                      STARTED          DURATION   STATUS\nrun-kuadrantctl-taskrun   12 seconds ago   ---        Running(Pending)\n
      tkn taskrun logs -n petstore -f\n\n\n[clone] Cloning into '/workspace/source'...\n[clone] Already on 'main'\n[clone] Your branch is up to date with 'origin/main'.\n\n[download-kuadrantctl]   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n[download-kuadrantctl]                                  Dload  Upload   Total   Spent    Left  Speed\n  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\n100 21.4M  100 21.4M    0     0  6601k      0  0:00:03  0:00:03 --:--:-- 8756k\n\n[run-kuadrantctl] {\"kind\":\"AuthPolicy\",\"apiVersion\":\"kuadrant.io/v1beta2\",\"metadata\":{\"name\":\"petstore\",\"namespace\":\"petstore\",\"creationTimestamp\":null,\"labels\":{\"deployment\":\"petstore\",\"owner\":\"jbloggs\"}},\"spec\":{\"targetRef\":{\"group\":\"gateway.networking.k8s.io\",\"kind\":\"HTTPRoute\",\"name\":\"petstore\",\"namespace\":\"petstore\"},\"routeSelectors\":[{\"matches\":[{\"path\":{\"type\":\"Exact\",\"value\":\"/api/v3/store/admin\"},\"method\":\"GET\"}]}],\"rules\":{\"authentication\":{\"storeAdmin_api_key\":{\"credentials\":{\"customHeader\":{\"name\":\"api_key\"}},\"apiKey\":{\"selector\":{\"matchLabels\":{\"kuadrant.io/apikeys-by\":\"api_key\"}}},\"routeSelectors\":[{\"matches\":[{\"path\":{\"type\":\"Exact\",\"value\":\"/api/v3/store/admin\"},\"method\":\"GET\"}]}]}}}},\"status\":{}}\n[run-kuadrantctl] {\"kind\":\"RateLimitPolicy\",\"apiVersion\":\"kuadrant.io/v1beta2\",\"metadata\":{\"name\":\"petstore\",\"namespace\":\"petstore\",\"creationTimestamp\":null,\"labels\":{\"deployment\":\"petstore\",\"owner\":\"jbloggs\"}},\"spec\":{\"targetRef\":{\"group\":\"gateway.networking.k8s.io\",\"kind\":\"HTTPRoute\",\"name\":\"petstore\",\"namespace\":\"petstore\"},\"limits\":{\"getInventory\":{\"routeSelectors\":[{\"matches\":[{\"path\":{\"type\":\"Exact\",\"value\":\"/api/v3/store/inventory\"},\"method\":\"GET\"}]}],\"rates\":[{\"limit\":10,\"duration\":10,\"unit\":\"second\"}]},\"loginUser\":{\"routeSelectors\":[{\"matches\":[{\"path\":{\"type\":\"Exact\",\"value\":\"/api/v3/user/login\"},\"method\":\"GET\"}]}],\"rates\":[{\"limit\":2,\"duration\":10,\"unit\":\"second\"}]}}},\"status\":{}}\n[run-kuadrantctl] {\"kind\":\"HTTPRoute\",\"apiVersion\":\"gateway.networking.k8s.io/v1beta1\",\"metadata\":{\"name\":\"petstore\",\"namespace\":\"petstore\",\"creationTimestamp\":null,\"labels\":{\"deployment\":\"petstore\",\"owner\":\"jbloggs\"}},\"spec\":{\"parentRefs\":[{\"kind\":\"Gateway\",\"namespace\":\"kuadrant-multi-cluster-gateways\",\"name\":\"prod-web\"}],\"hostnames\":[\"petstore.${KUADRANT_ZONE_ROOT_DOMAIN}\"],\"rules\":[{\"matches\":[{\"path\":{\"type\":\"Exact\",\"value\":\"/api/v3/user/login\"},\"method\":\"GET\"}],\"backendRefs\":[{\"name\":\"petstore\",\"namespace\":\"petstore\",\"port\":8080}]},{\"matches\":[{\"path\":{\"type\":\"Exact\",\"value\":\"/api/v3/store/admin\"},\"method\":\"GET\"}],\"backendRefs\":[{\"name\":\"petstore\",\"namespace\":\"petstore\",\"port\":8080}]},{\"matches\":[{\"path\":{\"type\":\"Exact\",\"value\":\"/api/v3/store/inventory\"},\"method\":\"GET\"}],\"backendRefs\":[{\"name\":\"petstore\",\"namespace\":\"petstore\",\"port\":8080}]}]},\"status\":{\"parents\":null}}\n\n[apply-resources] authpolicy.kuadrant.io/petstore created\n[apply-resources] httproute.gateway.networking.k8s.io/petstore created\n[apply-resources] ratelimitpolicy.kuadrant.io/petstore created\n
      "},{"location":"kuadrantctl/doc/kuadrantctl-ci-cd/#step-6-cleanup","title":"Step 6 - Cleanup","text":"

      Clean up your resources as follows:

      1. Remove the petstore namespace:
      2. kubectl delete ns petstore
      3. Remove the ClusterRole and ClusterRoleBinding:
      4. kubectl delete clusterrole kuadrant-ci-example-full-access
      5. kubectl delete clusterrolebinding kuadrant-ci-example-full-access-binding
      "},{"location":"kuadrantctl/doc/openapi-apicurio/","title":"Using Apicurio Studio with Kuadrant OAS extensions","text":"

      You can use OpenAPI extensions to define extra functionality beyond what is covered by the standard OpenAPI specification. Extensions typically start with the x- prefix, for example, x-codegen. Kuadrant OpenAPI extensions start with the x-kuadrant prefix, and allow you to configure Kuadrant policy information alongside your API.

      Apicurio Studio is a UI tool for visualizing and editing OpenAPI designs and definitions, which can visualize security details and custom extensions specified in your OpenAPI definition.

      "},{"location":"kuadrantctl/doc/openapi-apicurio/#prerequisites","title":"Prerequisites","text":"
      • You have Apicurio Studio installed and running. For more information, see the Apicurio Studio documentation.
      "},{"location":"kuadrantctl/doc/openapi-apicurio/#procedure","title":"Procedure","text":""},{"location":"kuadrantctl/doc/openapi-apicurio/#step-1-access-your-openapi-definition-in-apicurio-studio","title":"Step 1 - Access your OpenAPI definition in Apicurio Studio","text":"

      Open or import your OpenAPI definition in Apicurio Studio. On the Design tab, select the VENDOR-EXTENSiONS section to add an extension. Alternatively, you can use the Source tab to edit the API definition directly.

      "},{"location":"kuadrantctl/doc/openapi-apicurio/#step-2-add-kuadrant-extensions-to-your-api-definition","title":"Step 2 - Add Kuadrant extensions to your API definition","text":"

      The following configuration and extension points are supported by Apicurio Studio and the kuadrantctl CLI:

      "},{"location":"kuadrantctl/doc/openapi-apicurio/#generate-an-http-route","title":"Generate an HTTP route","text":"

      To generate an HTTPRoute for the API, add the following x-kuadrant block to your API definition in Apicurio Studio, replacing values to match your API details and the location of your Gateway:

      x-kuadrant:\n    route:\n        name: petstore\n        namespace: petstore\n        hostnames:\n\n            - 'petstore.example.com'\n        parentRefs:\n            -   name: prod-web\n                namespace: kuadrant-multi-cluster-gateways\n                kind: Gateway\n

      For more details, see Generate Gateway API HTTPRoute object from OpenAPI 3.

      "},{"location":"kuadrantctl/doc/openapi-apicurio/#generate-an-authpolicy","title":"Generate an AuthPolicy","text":"

      To generate an AuthPolicy, add a securityScheme to the components block in your API definition. The following securityScheme requires that an API key header is set:

          securitySchemes:\n        api_key:\n            type: apiKey\n            name: api_key\n            in: header\n

      Although securityScheme is not an OpenAPI extension, it is used by kuadrantctl like the other extensions mentioned in this document.

      When added, Apicurio Studio will display the following update in the SECURITY SCHEMES section:

      For more details, see Generate Kuadrant AuthPolicy object from OpenAPI 3.

      "},{"location":"kuadrantctl/doc/openapi-apicurio/#generate-a-ratelimitpolicy","title":"Generate a RateLimitPolicy","text":"

      To generate a RateLimitPolicy for the API, add the following x-kuadrant block to a path in your API definition, replacing values to match your API details.

      paths:\n    /:\n        x-kuadrant:\n            backendRefs:\n                -\n                    name: petstore\n                    namespace: petstore\n                    port: 8080\n            rate_limit:\n                rates:\n                    -\n                        limit: 10\n                        duration: 10\n                        unit: second\n

      When added, Apicurio Studio will display the following update in the VENDOR-EXTENSiONS section for that specific path:

      For more details, see Generate Kuadrant RateLimitPolicy object from OpenAPI 3.

      "},{"location":"kuadrantctl/doc/openapi-apicurio/#additional-resources","title":"Additional resources","text":"
      • OpenAPI 3.0.x Kuadrant Extensions in the kuadrantctl documentation.
      • Apicurio Studio - Now with OpenAPI Vendor Extensions.
      "},{"location":"kuadrantctl/doc/openapi-kuadrant-extensions/","title":"OpenAPI 3.0.x Kuadrant extensions","text":"

      This reference information shows examples of how to add Kuadrant extensions at the root, path, or operation level in an OpenAPI 3.0.x definition.

      "},{"location":"kuadrantctl/doc/openapi-kuadrant-extensions/#root-level-kuadrant-extension","title":"Root-level Kuadrant extension","text":"

      You can add a Kuadrant extension at the root level of an OpenAPI definition. The following example shows an extension added for a petstore app:

      x-kuadrant:\n  route:  ## HTTPRoute metadata\n    name: \"petstore\"\n    namespace: \"petstore\"\n    labels:  ## map[string]string\n      deployment: petstore\n    hostnames:  ## []gateway.networking.k8s.io/v1beta1.Hostname\n\n      - example.com\n    parentRefs:  ## []gateway.networking.k8s.io/v1beta1.ParentReference\n      - name: apiGateway\n        namespace: gateways\n
      "},{"location":"kuadrantctl/doc/openapi-kuadrant-extensions/#path-level-kuadrant-extension","title":"Path-level Kuadrant extension","text":"

      You can add a Kuadrant extension at the path level of an OpenAPI definition. This configuration at the path level is the default when there is no operation-level configuration. The following example shows an extension added for a /cat path:

      paths:\n  /cat:\n    x-kuadrant:  ## Path-level Kuadrant extension\n      disable: true  ## Remove from the HTTPRoute. Optional. Default: false\n      pathMatchType: Exact ## Specifies how to match against the path value. Valid values: [Exact;PathPrefix]. Optional. Default: Exact\n      backendRefs:  ## Backend references to be included in the HTTPRoute. []gateway.networking.k8s.io/v1beta1.HTTPBackendRef. Optional.\n\n        - name: petstore\n          port: 80\n          namespace: petstore\n      rate_limit:  ## Rate limit configuration. Optional.\n        rates:   ## Kuadrant API []github.com/kuadrant/kuadrant-operator/api/v1beta2.Rate\n          - limit: 1\n            duration: 10\n            unit: second\n        counters:   ## Kuadrant API []github.com/kuadrant/kuadrant-operator/api/v1beta2.CountextSelector\n          - auth.identity.username\n        when:   ## Kuadrant API []github.com/kuadrant/kuadrant-operator/api/v1beta2.WhenCondition\n          - selector: metadata.filter_metadata.envoy\\.filters\\.http\\.ext_authz.identity.userid\n            operator: eq\n            value: alice\n
      "},{"location":"kuadrantctl/doc/openapi-kuadrant-extensions/#operation-level-kuadrant-extension","title":"Operation-level Kuadrant extension","text":"

      You can add a Kuadrant extension at the operation level of an OpenAPI definition. This extension uses the same schema as the path-level Kuadrant extension. The following example shows an extension added for a get operation:

      paths:\n  /cat:\n    get:\n      x-kuadrant:  ## Operation-level Kuadrant extension\n        disable: true  ## Remove from the HTTPRoute. Optional. Default: path level \"disable\" value.\n        pathMatchType: Exact ## Specifies how to match against the path value. Valid values: [Exact;PathPrefix]. Optional. Default: Exact.\n        backendRefs:  ## Backend references to be included in the HTTPRoute. Optional.\n\n          - name: petstore\n            port: 80\n            namespace: petstore\n        rate_limit:  ## Rate limit configuration. Optional.\n          rates:   ## Kuadrant API github.com/kuadrant/kuadrant-operator/api/v1beta2.Rate\n            - limit: 1\n              duration: 10\n              unit: second\n          counters:   ## Kuadrant API github.com/kuadrant/kuadrant-operator/api/v1beta2.CountextSelector\n            - auth.identity.username\n          when:   ## Kuadrant API github.com/kuadrant/kuadrant-operator/api/v1beta2.WhenCondition\n            - selector: metadata.filter_metadata.envoy\\.filters\\.http\\.ext_authz.identity.userid\n              operator: eq\n              value: alice\n
      "},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/","title":"Integrating Kuadrant OAS extensions with Red Hat OpenShift Dev Spaces","text":"

      OpenAPI extensions enhance the standard OpenAPI specification by adding custom functionality. Kuadrant OpenAPI extensions are identified by the x-kuadrant prefix. You can use OpenAPI extensions to integrate Kuadrant policies directly into your API definitions.

      Red Hat OpenShift Dev Spaces provides a browser-based, cloud-native IDE that supports rapid and decentralized development in container-based environments. This tutorial demonstrates how to use OpenShift Dev Spaces to modify an OpenAPI definition by incorporating Kuadrant policies, and then use the kuadrantctl CLI to create Kubernetes resources for both Gateway API and Kuadrant.

      "},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/#prerequisites","title":"Prerequisites","text":"
      • You must have access to one of the following Dev Spaces instances:

      • A self-hosted OpenShift Dev Spaces instance.

      • An OpenShift Dev Spaces instance provided by the Red Hat Developer Sandbox.
      "},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/#procedure","title":"Procedure","text":""},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/#step-1-setting-up-your-workspace","title":"Step 1 - Setting up your workspace","text":"

      Create a workspace in Dev Spaces for your project as follows:

      1. Fork the following repository: https://github.com/Kuadrant/blank-petstore.
      2. In Dev Spaces, select Create Workspace, and enter the URL of your forked repository. For example: https://github.com/<your-username>/blank-petstore.git.
      3. Click Create & Open.
      "},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/#step-2-configuring-vs-code-in-dev-spaces","title":"Step 2 - Configuring VS Code in Dev Spaces","text":"

      For this tutorial, you will perform the following tasks:

      • Install kuadrantctl in your workspace to demonstrate Kubernetes resource generation from your modified OpenAPI definition.
      • Optional: Configure Git with your username and email to enable pushing changes back to your repository.
      "},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/#install-the-kuadrantctl-cli","title":"Install the kuadrantctl CLI","text":"

      To install kuadrantctl in your Dev Spaces workspace, enter the following command:

      curl -sL \"https://github.com/kuadrant/kuadrantctl/releases/download/v0.2.3/kuadrantctl-v0.2.3-linux-amd64.tar.gz\" | tar xz -C /home/user/.local/bin\n

      This command installs kuadrantctl in /home/user/.local/bin, which is included in the container's $PATH by default.

      "},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/#optional-configuring-git","title":"Optional: Configuring Git","text":"

      If you plan to push changes back to your repository, configure your Git username and email as follows:

      git config --global user.email \"foo@example.com\"\ngit config --global user.name \"Foo Example\"\n
      "},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/#step-3-adding-kuadrant-policies-to-your-openapi-definition","title":"Step 3 - Adding Kuadrant policies to your OpenAPI definition","text":"

      After creating your workspace, Dev Spaces will launch VS Code loaded with your forked repository. Navigate to the openapi.yaml file in the sample app to begin modifications.

      "},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/#kuadrant-policies-overview","title":"Kuadrant policies overview","text":"

      You will enhance your API definition by applying Kuadrant policies to the following endpoints:

      • /pet/findByStatus
      • /user/login
      • /store/inventory

      In this tutorial, you will add Kuadrant policies to your API definition as follows:

      • Generate an HTTPRoute to expose these three routes for an existing Gateway.
      • Add API key authentication for the /user/login route, using a Kuadrant AuthPolicy and OAS securitySchemes.
      • Add a Kuadrant RateLimitPolicy to the /store/inventory endpoint, to limit the amount of requests this endpoint can receive.
      "},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/#defining-a-gateway","title":"Defining a Gateway","text":"

      Use the x-kuadrant extension in the root level to specify a Gateway. This information will be used to generate HTTPRoutes at the path level. For example:

      x-kuadrant:\n  route:  ## HTTPRoute metadata\n    name: \"petstore\"\n    namespace: \"petstore\"\n    labels:  ## map[string]string\n      deployment: petstore\n    hostnames:  ## []gateway.networking.k8s.io/v1beta1.Hostname\n\n      - example.com\n    parentRefs:  ## []gateway.networking.k8s.io/v1beta1.ParentReference\n      - name: apiGateway\n        namespace: gateways\n
      "},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/#specifying-httproutes-for-each-path","title":"Specifying HTTPRoutes for each path","text":"

      For each path, add an x-kuadrant extension with backendRefs to link your routes to your paths as follows:

        /pet/findByStatus:\n    x-kuadrant:\n      backendRefs:\n\n      - name: petstore\n        namespace: petstore\n        port: 8080\n    get:\n      # ...\n
        /user/login:\n    x-kuadrant:\n      backendRefs:\n\n      - name: petstore\n        namespace: petstore\n        port: 8080\n    get:\n      # ...\n
        /store/inventory:\n    x-kuadrant:\n      backendRefs:\n\n      - name: petstore\n        namespace: petstore\n        port: 8080\n    get:\n      # ...\n

      Note: The x-kuadrant extension at the path level applies to all HTTP methods defined in the path. For method-specific policies, move the extension inside the relevant HTTP method block, for example, get or post.

      "},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/#implementing-authpolicy-and-security-schemes","title":"Implementing AuthPolicy and security schemes","text":"

      To secure the /user/login endpoint with API key authentication, use the following configuration:

        /user/login:\n    # ...\n    get:\n      security:\n\n      - api_key: []\n
      components:\n  schemas:\n    # ...\n  securitySchemes:\n    api_key:\n      type: apiKey\n      name: api_key\n      in: header\n

      This configuration generates an AuthPolicy that references an API key stored in a labeled Secret:

      apiVersion: v1\nkind: Secret\nmetadata:\n  name: petstore-api-key\n  namespace: petstore\n  labels:\n    authorino.kuadrant.io/managed-by: authorino\n    kuadrant.io/apikeys-by: api_key\nstringData:\n  api_key: secret\ntype: Opaque\n
      For simplicity, this example uses a simple, static API key for your app.

      "},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/#applying-a-ratelimitpolicy-to-an-endpoint","title":"Applying a RateLimitPolicy to an endpoint","text":"

      To enforce rate limiting on the /store/inventory endpoint, add the following x-kuadrant extension:

        /store/inventory:\n    get:\n      # ...\n      x-kuadrant:\n        backendRefs:\n          # ...\n        rate_limit:\n          rates:\n\n          - limit: 10\n            duration: 10\n            unit: second\n

      This limits to 10 requests every 10 seconds for the /store/inventory endpoint.

      "},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/#step-4-generate-kubernetes-resources-by-using-kuadrantctl","title":"Step 4 - Generate Kubernetes resources by using kuadrantctl","text":"

      With your extensions in place, you can use kuadrantctl to generate the follollowing Kubernetes resources:

      • An HTTPRoute for your petstore app for each of your endpoints.
      • An AuthPolicy with a simple, static API key from a secret for the /user/login endpoint.
      • A RateLimitPolicy with a rate limit of 10 requests every 10 seconds for the /store/inventory endpoint.

      In Dev Spaces, select \u2630 > Terminal > New Terminal, and run the following commands:

      "},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/#generate-an-httproute","title":"Generate an HTTPRoute","text":"
      kuadrantctl generate gatewayapi httproute --oas openapi.yaml\n

      This command outputs the following HTTPRoute:

      kind: HTTPRoute\napiVersion: gateway.networking.k8s.io/v1beta1\nmetadata:\n  name: petstore\n  namespace: petstore\n  creationTimestamp: null\n  labels:\n    deployment: petstore\nspec:\n  parentRefs:\n\n    - namespace: gateways\n      name: apiGateway\n  hostnames:\n    - example.com\n  rules:\n    - matches:\n        - path:\n            type: Exact\n            value: /api/v3/pet/findByStatus\n          method: GET\n      backendRefs:\n        - name: petstore\n          namespace: petstore\n          port: 8080\n    - matches:\n        - path:\n            type: Exact\n            value: /api/v3/store/inventory\n          method: GET\n      backendRefs:\n        - name: petstore\n          namespace: petstore\n          port: 8080\n    - matches:\n        - path:\n            type: Exact\n            value: /api/v3/user/login\n          method: GET\n      backendRefs:\n        - name: petstore\n          namespace: petstore\n          port: 8080\nstatus:\n  parents: null\n
      "},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/#generate-an-authpolicy","title":"Generate an AuthPolicy","text":"
      kuadrantctl generate kuadrant authpolicy --oas openapi.yaml\n

      This command outputs the following AuthPolicy:

      apiVersion: kuadrant.io/v1beta2\nkind: AuthPolicy\nmetadata:\n  name: petstore\n  namespace: petstore\n  creationTimestamp: null\n  labels:\n    deployment: petstore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: petstore\n    namespace: petstore\n  routeSelectors:\n\n    - matches:\n        - path:\n            type: Exact\n            value: /api/v3/user/login\n          method: GET\n  rules:\n    authentication:\n      GETuserlogin_api_key:\n        credentials:\n          customHeader:\n            name: api_key\n        apiKey:\n          selector:\n            matchLabels:\n              kuadrant.io/apikeys-by: api_key\n        routeSelectors:\n          - matches:\n              - path:\n                  type: Exact\n                  value: /api/v3/user/login\n                method: GET\nstatus: {}\n
      "},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/#generate-a-ratelimitpolicy","title":"Generate a RateLimitPolicy","text":"
      kuadrantctl generate kuadrant ratelimitpolicy --oas openapi.yaml\n

      This command outputs the following RateLimitPolicy:

      apiVersion: kuadrant.io/v1beta2\nkind: RateLimitPolicy\nmetadata:\n  name: petstore\n  namespace: petstore\n  creationTimestamp: null\n  labels:\n    deployment: petstore\nspec:\n  targetRef:\n    group: gateway.networking.k8s.io\n    kind: HTTPRoute\n    name: petstore\n    namespace: petstore\n  limits:\n    GETstoreinventory:\n      routeSelectors:\n\n        - matches:\n            - path:\n                type: Exact\n                value: /api/v3/store/inventory\n              method: GET\n      rates:\n        - limit: 10\n          duration: 10\n          unit: second\nstatus: {}\n
      "},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/#step-5-applying-resources-to-the-app","title":"Step 5 - Applying resources to the app","text":"

      Note: By default, the oc and kubectl commands in Dev Spaces target the cluster running Dev Spaces. If you want to apply resources to another cluster, you must log in with oc or kubectl to another cluster, and pass a different --context to these commands to apply resources to another cluster.

      You can now apply these policies to a running app by using kubectl or oc. If Dev Spaces is running on a cluster where Kuadrant is also installed, you can apply these resources as follows:

      kuadrantctl generate gatewayapi httproute --oas openapi.yaml | kubectl apply -f -\nkuadrantctl generate kuadrant authpolicy --oas openapi.yaml | kubectl apply -f -\nkuadrantctl generate kuadrant ratelimitpolicy --oas openapi.yaml | kubectl apply -f -\n

      Alternatively, you can use kuadrantctl as part of a CI/CD pipeline. For more details, see the kuadrantctl CI/CD guide.

      If you completed the optional Git configuration step, you can enter git commit to commit the these changes and push them to your fork.

      "},{"location":"kuadrantctl/doc/openapi-openshift-dev-spaces/#additional-resources","title":"Additional resources","text":"

      For more details, see the following documentation on using x-kuadrant OAS extensions with kuadrantctl:

      • OpenAPI 3.0.x Kuadrant extensions
      • Generate Gateway API HTTPRoutes with kuadrantctl
      • Generate Kuadrant AuthPolicy with kuadrantctl
      • Generate Kuadrant RateLimitPolicy with kuadrantctl
      • kuadrantctl CI/CD guide
      "},{"location":"dns-operator/","title":"DNS Operator","text":"

      The DNS Operator is a kubernetes based controller responsible for reconciling DNS Record custom resources. It interfaces with cloud DNS providers such as AWS and Google to bring the DNS zone into the state declared in these CRDs. One of the key use cases the DNS operator solves, is allowing complex DNS routing strategies such as Geo and Weighted to be expressed allowing you to leverage DNS as the first layer of traffic management. In order to make these strategies valuable, it also works across multiple clusters allowing you to use a shared domain name balance traffic based on your requirements.

      "},{"location":"dns-operator/#getting-started","title":"Getting Started","text":""},{"location":"dns-operator/#pre-setup","title":"Pre Setup","text":""},{"location":"dns-operator/#add-dns-provider-configuration","title":"Add DNS provider configuration","text":"

      NOTE: You can optionally skip this step but at least one DNS Provider Secret will need to be configured with valid credentials to use the DNS Operator.

      "},{"location":"dns-operator/#aws-provider-route53","title":"AWS Provider (Route53)","text":"

      make local-setup-aws-clean local-setup-aws-generate AWS_ACCESS_KEY_ID=<My AWS ACCESS KEY> AWS_SECRET_ACCESS_KEY=<My AWS Secret Access Key>\n
      More details about the AWS provider can be found here

      "},{"location":"dns-operator/#gcp-provider","title":"GCP Provider","text":"

      make local-setup-gcp-clean local-setup-gcp-generate GCP_GOOGLE_CREDENTIALS='<My GCP Credentials.json>' GCP_PROJECT_ID=<My GCP PROJECT ID>\n
      More details about the GCP provider can be found here

      "},{"location":"dns-operator/#azure-provider","title":"AZURE Provider","text":"
      make local-setup-azure-clean local-setup-azure-generate KUADRANT_AZURE_CREDENTIALS='<My Azure Credentials.json>'\n

      Info on generating service principal credentials here

      Get your resource group ID like so:

      az group show --resource-group <resource group name> | jq \".id\" -r\n

      Also give traffic manager contributor role:

      az role assignment create --role \"Traffic Manager Contributor\" --assignee $EXTERNALDNS_SP_APP_ID --scope <RESOURCE_GROUP_ID>\n

      Getting the zone ID can be achieved using the below command:

      az network dns zone show --name <my domain name> --resource-group <my resource group> --query \"{id:id,domain:name}\"\n

      "},{"location":"dns-operator/#running-controller-locally-default","title":"Running controller locally (default)","text":"
      1. Create local environment(creates kind cluster)

        make local-setup\n

      2. Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running):

      make run\n
      "},{"location":"dns-operator/#running-controller-on-the-cluster","title":"Running controller on the cluster","text":"
      1. Create local environment(creates kind cluster)

        make local-setup DEPLOY=true\n

      2. Verify controller deployment

        kubectl logs -f deployments/dns-operator-controller-manager -n dns-operator-system\n

      "},{"location":"dns-operator/#running-controller-on-existing-cluster","title":"Running controller on existing cluster","text":"

      You\u2019ll need a Kubernetes cluster to run against. You can use KIND to get a local cluster for testing, or run against a remote cluster. Note: Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster kubectl cluster-info shows).

      1. Apply Operator manifests

        kustomize build config/default | kubectl apply -f -\n

      2. Verify controller deployment

        kubectl logs -f deployments/dns-operator-controller-manager -n dns-operator-system\n

      "},{"location":"dns-operator/#development","title":"Development","text":""},{"location":"dns-operator/#e2e-test-suite","title":"E2E Test Suite","text":"

      The e2e test suite can be executed against any cluster running the DNS Operator with configuration added for any supported provider.

      make test-e2e TEST_DNS_ZONE_DOMAIN_NAME=<My domain name> TEST_DNS_PROVIDER_SECRET_NAME=<My provider secret name> TEST_DNS_NAMESPACES=<My test namespace(s)>\n
      Environment Variable Description TEST_DNS_PROVIDER_SECRET_NAME Name of the provider secret to use. If using local-setup provider secrets zones, one of [dns-provider-credentials-aws; dns-provider-credentials-gcp;dns-provider-credentials-azure] TEST_DNS_ZONE_DOMAIN_NAME The Domain name to use in the test. Must be a zone accessible with the (TEST_DNS_PROVIDER_SECRET_NAME) credentials with the same domain name TEST_DNS_NAMESPACES The namespace(s) where the provider secret(s) can be found"},{"location":"dns-operator/#modifying-the-api-definitions","title":"Modifying the API definitions","text":"

      If you are editing the API definitions, generate the manifests such as CRs or CRDs using:

      make manifests\n

      NOTE: Run make --help for more information on all potential make targets

      More information can be found via the Kubebuilder Documentation

      "},{"location":"dns-operator/#logging","title":"Logging","text":"

      Logs are following the general guidelines:

      • logger.Info() describe a high-level state of the resource such as creation, deletion and which reconciliation path was taken.
      • logger.Error() describe only those errors that are not returned in the result of the reconciliation. If error is occurred there should be only one error message.
      • logger.V(1).Info() debug level logs to give information about every change or event caused by the resource as well as every update of the resource.

      The --zap-devel argument will enable debug level logs for the output. Otherwise, all V() logs are ignored.

      "},{"location":"dns-operator/#common-metadata","title":"Common metadata","text":"

      Not exhaustive list of metadata for DNSRecord controller:

      • level - logging level. Values are: info,debug or error
      • ts - timestamp
      • logger - logger name
      • msg
      • controller and controllerKind - controller name, and it's kind respectively to output the log
      • DNSRecord - name and namespace of the DNS Record CR that is being reconciled
      • reconcileID
      • ownerID - ID the of owner of the DNS Record
      • txtPrefix/txtSuffix - prefix and suffix of the TXT record in provider.
      • zoneEndpoints - endpoints that exist in the provider
      • specEdnoinds - endpoints defined in the spec
      • statusEndpoints - endpoints that were processed previously

      Note that not all the metadata values are present at each of the logs statements.

      "},{"location":"dns-operator/#examples","title":"Examples","text":"

      To query logs locally you can use jq. For example: Retrieve logs by

      kubectl get deployments -l app.kubernetes.io/part-of=dns-operator -A\n\nNAMESPACE             NAME                              READY \ndns-operator-system   dns-operator-controller-manager   1/1   \n
      And query them. For example:
      kubectl logs -l control-plane=dns-operator-controller-manager -n dns-operator-system --tail -1 | sed '/^{/!d' | jq 'select(.controller==\"dnsrecord\" and .level==\"info\")'\n
      or
      kubectl logs -l control-plane=dns-operator-controller-manager -n dns-operator-system --tail -1 | sed '/^{/!d' | jq 'select(.controller==\"dnsrecord\" and .DNSRecord.name==\"test\" and .reconcileID==\"2be16b6d-b90f-430e-9996-8b5ec4855d53\")' | jq '.level, .msg, .zoneEndpoints, .specEndpoints, .statusEndpoints '\n
      You could use selector in the jq with and/not/or to restrict.

      "},{"location":"dns-operator/#license","title":"License","text":"

      Copyright 2024.

      Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0\n

      Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

      "},{"location":"dns-operator/docs/RELEASE/","title":"RELEASE","text":""},{"location":"dns-operator/docs/RELEASE/#release","title":"Release","text":""},{"location":"dns-operator/docs/RELEASE/#new-majorminor-version","title":"New Major.Minor version","text":"
      1. Create a new minor release branch from the HEAD of main:
        git checkout -b release-0.2\n
      2. Run prepare release:
        make prepare-release IMG_TAG=release-0.2 VERSION=0.2.0-dev CHANNELS=alpha REPLACES_VERSION=0.1.0\n
      3. Verify local changes, commit and push:
        git add .\ngit commit -m \"prepare-release: release-0.2\"\ngit push upstream release-0.2\n
      4. Verify that the build image workflow is triggered and completes for the new branch

      5. Do any final testing and bug fixing against the release branch, see Verify OLM Deployment

      6. Run prepare release for final version

        make prepare-release VERSION=0.2.0 CHANNELS=stable REPLACES_VERSION=0.1.0\n

      7. Verify local changes, commit, push and tag:
        git add .\ngit commit -m \"prepare-release: v0.2.0\"\ngit tag v0.2.0\ngit push upstream release-0.2\ngit push upstream v0.2.0\n
      8. Verify that the build image workflow is triggered and completes for the new tag

      9. Verify the new version can be installed from the catalog image, see Verify OLM Deployment

      10. Release to the community operator index catalogs.

      "},{"location":"dns-operator/docs/RELEASE/#new-patch-version","title":"New Patch version","text":"
      1. Checkout minor release branch:
        git checkout release-0.2\n
      2. Run prepare release:
        make prepare-release VERSION=0.2.1 CHANNELS=stable REPLACES_VERSION=0.2.0\n
      3. Verify local changes, commit and push:
        git add .\ngit commit -m \"prepare-release: v0.2.1\"\ngit tag v0.2.1\ngit push upstream release-0.2\ngit push upstream v0.2.1\n
      4. Verify that the build image workflow is triggered and completes for the new tag

      5. Verify the new version can be installed from the catalog image, see Verify OLM Deployment

      6. Release to the community operator index catalogs.

      "},{"location":"dns-operator/docs/RELEASE/#verify-olm-deployment","title":"Verify OLM Deployment","text":"
      1. Deploy the OLM catalog image:

        make local-setup install-olm deploy-catalog\n

      2. Wait for deployment:

        kubectl -n dns-operator-system wait --timeout=60s --for=condition=Available deployments --all\ndeployment.apps/dns-operator-controller-manager condition met\n

      3. Check the logs:

        kubectl -n dns-operator-system logs -f deployment/dns-operator-controller-manager\n

      4. Check the version:

        $ kubectl -n dns-operator-system get deployment dns-operator-controller-manager --show-labels\nNAME                              READY   UP-TO-DATE   AVAILABLE   AGE     LABELS\ndns-operator-controller-manager   1/1     1            1           5m42s   app.kubernetes.io/component=manager,app.kubernetes.io/created-by=dns-operator,\napp.kubernetes.io/instance=controller-manager,app.kubernetes.io/managed-by=kustomize,app.kubernetes.io/name=deployment,app.kubernetes.io/part-of=dns-operator,\ncontrol-plane=dns-operator-controller-manager,olm.deployment-spec-hash=1jPe8AuMpSKHh51nnDs4j25ZgoUrKhF45EP0Wa,olm.managed=true,olm.owner.kind=ClusterServiceVersion,\nolm.owner.namespace=dns-operator-system,olm.owner=dns-operator.v0.2.0-dev,operators.coreos.com/dns-operator.dns-operator-system=\n

      "},{"location":"dns-operator/docs/RELEASE/#community-operator-index-catalogs","title":"Community Operator Index Catalogs","text":"
      • Operatorhub Community Operators
      • Openshift Community Operators
      "},{"location":"dns-operator/docs/provider/","title":"Configuring a DNS Provider","text":"

      In order to be able to interact with supported DNS providers, Kuadrant needs a credential that it can use.

      "},{"location":"dns-operator/docs/provider/#supported-providers","title":"Supported Providers","text":"

      Kuadrant Supports the following DNS providers currently

      • AWS Route 53 (AWS)
      • Google Cloud DNS (GCP)
      "},{"location":"dns-operator/docs/provider/#aws-route-53-provider","title":"AWS Route 53 Provider","text":"

      Kuadrant expects a Secret with a credential. Below is an example for AWS Route 53. It is important to set the secret type to aws:

      kubectl create secret generic my-aws-credentials \\\n  --namespace=kuadrant-dns-system \\\n  --type=kuadrant.io/aws \\\n  --from-literal=AWS_ACCESS_KEY_ID=XXXX \\\n  --from-literal=AWS_REGION=eu-west-1 \\\n  --from-literal=AWS_SECRET_ACCESS_KEY=XXX\n
      Key Example Value Description AWS_REGION eu-west-1 AWS Region AWS_ACCESS_KEY_ID XXXX AWS Access Key ID (see note on permissions below) AWS_SECRET_ACCESS_KEY XXXX AWS Secret Access Key"},{"location":"dns-operator/docs/provider/#aws-iam-permissions-required","title":"AWS IAM Permissions Required","text":"

      We have tested using the available policy AmazonRoute53FullAccess however it should also be possible to restrict the credential down to a particular zone. More info can be found in the AWS docs:

      https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/access-control-managing-permissions.html

      "},{"location":"dns-operator/docs/provider/#google-cloud-dns-provider","title":"Google Cloud DNS Provider","text":"

      Kuadant expects a secret with a credential. Below is an example for Google DNS. It is important to set the secret type to gcp:

      kubectl create secret generic my-test-gcp-credentials \\\n  --namespace=kuadrant-dns-system \\\n  --type=kuadrant.io/gcp \\\n  --from-literal=PROJECT_ID=xxx \\\n  --from-file=GOOGLE=$HOME/.config/gcloud/application_default_credentials.json\n
      Env Var Example Value Description GOOGLE {\"client_id\": \"***\",\"client_secret\": \"***\",\"refresh_token\": \"***\",\"type\": \"authorized_user\"} This is the JSON created from either the credential created by the gcloud CLI, or the JSON from the Service account PROJECT_ID my_project_id ID to the Google project"},{"location":"dns-operator/docs/provider/#google-cloud-dns-access-permissions-required","title":"Google Cloud DNS Access permissions required","text":"

      See:

      https://cloud.google.com/dns/docs/access-control#dns.admin

      "},{"location":"dns-operator/docs/RFC/distributed-dns/dnsrecord-lifecycle/","title":"List of issues","text":"
      • Re-queue validation intermittently GH-36
      • Re-queue DNS Record whenever a write to the Cloud Provider occurs GH-35
      • Schedule removal of finalizer from DNS Records GH-38
      • Record write attempts in status for current generation GH-34
      "},{"location":"dns-operator/docs/RFC/distributed-dns/dnsrecord-lifecycle/#the-idea","title":"The idea","text":"

      We now will constantly reconcile DNS records. The reasoning is that other controllers may override/change records in the DNS provider so there is a need to requeue the DNS Record from time to time even when no local changes are introduced.

      "},{"location":"dns-operator/docs/RFC/distributed-dns/dnsrecord-lifecycle/#details","title":"Details","text":"

      There are a few new fields on the DNS Record status:

      • QueuedAt is a time when the DNS record was received for the reconciliation
      • QueuedFor is a time when we expect a DNS record to be reconciled again
      • ValidFor indicates the duration since the last reconciliation we consider data in the record to be valid
      • WriteCounter represents a number of consecutive write attempts on the same generation of the record. It is being reset to 0 when the generation changes or there are no changes to write.

      There is an option to override the ValidFor and DefaultRequeueTime with valid-for and requeue-time flags respectively.

      The DefaultRequeueTime is the duration between successful validation and the next reconciliation to ensure that the record is still up-to-date.

      The ValidFor is used to determine if we should do a full reconciliation when we get the record. If the record is still valid we will only update finalizers and validate the record itself. It will not perform anything that involves a DNS provider.

      "},{"location":"dns-operator/docs/RFC/distributed-dns/dnsrecord-lifecycle/#dns-record-normal-lifecycle","title":"DNS Record normal lifecycle","text":"

      Once we enqueue the DNS record, controller will compile a list of changes to the DNS provider and will apply it. After this, the record is enqueued with the validationRequeueTime and the Ready condition will be marked as false with a message Awaiting Validation. When the record is received again and the controller ensures there are no changes needed (the ones applied are present in the DNS Provider) it sets the Ready condition to true and enqueues it with the defaultRequeueTime.

      At any time when the record is requeued we also set the record.Status.QueuedFor field with a timestamp for when we expect to receive the record again. And on every reconciliation we set the record.Status.QueuedAt to be the time of the reconciliation.

      Upon deletion, the process will be similar. The controller will determine the changes needed to the DNS provider and will apply them. The record will be requeued with the validationRequeueTime. Once we receive it back and ensure that there are no changes needed for the DNS provider we remove the finalizer from the record.

      The validationRequeueTime duration is randomized +/- 50%.

      "},{"location":"dns-operator/docs/RFC/distributed-dns/dnsrecord-lifecycle/#when-things-go-south","title":"When things go south","text":"

      If the record is received prematurely - the ValidFor + QueuedAt is more than the current time - we requeue it again for the ValidFor duration.

      When we encounter an error during the reconciliation we will not requeue the record and will put in an appropriate error message in the log and on the record. In order for it to reconcile again there must be a change to the DNS Record CR.

      It is possible for a user to mess with the timestamps field or the ValidFor field. Kubernetes will not let setting an invalid value to the timestamp fields. Once the timestamp fields are set manually it will trigger reconciliation since there is a change in the record CR. The only one that could impact the controller is the QueuedAt field and the controller will believe that to be the last time the record was reconciled. As for the ValidFor: since it is a simple string it is possible to set an incorrect value. If we fail to parse it we treat the ValidFor as 0. This means that the controller will believe that the information in the record is expired and will probe the DNS provider for an update. If a valid value is provided controller will obey it. Eventually, the controller will naturally enqueue the record and those values will be overridden.

      In case the controller fails to retain changes in the DNS Provider: write are successful, but the validation fails again and the WriteCounter reaches the WriteCounterLimit we give up on the reconciliation. The appropriate message will be put under the Ready - false condition as well as in the logs of the controller. The reconciliation will resume once the generation of the DNS Record is changed.

      "},{"location":"dns-operator/docs/RFC/distributed-dns/dnsrecord-lifecycle/#metrics","title":"Metrics","text":"

      There is a metric emitted from the controller: dns_provider_write_counter. It reflects the WriteCounter field in the status of the record.

      "},{"location":"dns-operator/docs/reference/dnsrecord/","title":"The DNSRecord Custom Resource Definition (CRD)","text":"
      • DNSRecord
      • DNSRecordSpec
      • DNSRecordStatus
      "},{"location":"dns-operator/docs/reference/dnsrecord/#dnsrecord","title":"DNSRecord","text":"Field Type Required Description spec DNSRecordSpec Yes The specification for DNSRecord custom resource status DNSRecordStatus No The status for the custom resource"},{"location":"dns-operator/docs/reference/dnsrecord/#dnsrecordspec","title":"DNSRecordSpec","text":"Field Type Required Description ownerID String No Unique string used to identify the owner of this record. If unset an ownerID will be generated based on the record UID rootHost String Yes Single root host of all endpoints in a DNSRecord providerRef ProviderRef Yes Reference to a DNS Provider Secret endpoints []ExternalDNS Endpoint No Endpoints to manage in the dns provider healthCheck HealthCheckSpec No Health check configuration"},{"location":"dns-operator/docs/reference/dnsrecord/#providerref","title":"ProviderRef","text":"Field Type Required Description name String Yes Name of a dns provider secret"},{"location":"dns-operator/docs/reference/dnsrecord/#healthcheckspec","title":"HealthCheckSpec","text":"Field Type Required Description endpoint String Yes Endpoint is the path to append to the host to reach the expected health check port Number Yes Port to connect to the host on protocol String Yes Protocol to use when connecting to the host, valid values are \"HTTP\" or \"HTTPS\" failureThreshold Number Yes FailureThreshold is a limit of consecutive failures that must occur for a host to be considered unhealthy"},{"location":"dns-operator/docs/reference/dnsrecord/#dnsrecordstatus","title":"DNSRecordStatus","text":"Field Type Description observedGeneration String Number of the last observed generation of the resource. Use it to check if the status info is up to date with latest resource spec conditions []Kubernetes meta/v1.Condition List of conditions that define the status of the resource queuedAt Kubernetes meta/v1.Time QueuedAt is a time when DNS record was received for the reconciliation queuedFor Kubernetes meta/v1.Time QueuedFor is a time when we expect a DNS record to be reconciled again validFor String ValidFor indicates duration since the last reconciliation we consider data in the record to be valid writeCounter Number WriteCounter represent a number of consecutive write attempts on the same generation of the record endpoints []ExternalDNS Endpoint Endpoints are the last endpoints that were successfully published by the provider healthCheck HealthCheckStatus Health check status ownerID String Unique string used to identify the owner of this record"},{"location":"dns-operator/docs/reference/dnsrecord/#healthcheckstatus","title":"HealthCheckStatus","text":"Field Type Description conditions []Kubernetes meta/v1.Condition List of conditions that define that status of the health checks probes []HealthCheckStatusProbe Health check Probe status"},{"location":"dns-operator/docs/reference/dnsrecord/#healthcheckstatusprobe","title":"HealthCheckStatusProbe","text":"Field Type Description id String The health check id ipAddress String The ip address being monitored host String The host being monitored synced Boolean Synced conditions []Kubernetes meta/v1.Condition List of conditions that define that status of the probe"}]} \ No newline at end of file diff --git a/0.10.0/sitemap.xml b/0.10.0/sitemap.xml deleted file mode 100644 index c50f8033e..000000000 --- a/0.10.0/sitemap.xml +++ /dev/null @@ -1,613 +0,0 @@ - - - - https://docs.kuadrant.io/0.10.0/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/getting-started-multi-cluster/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/getting-started-single-cluster/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/auth/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/development/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/dns/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/dnshealthchecks/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/logging/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/rate-limiting/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/tls/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/install/install-kubernetes/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/install/install-openshift/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/observability/examples/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/observability/metrics/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/observability/tracing/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/proposals/rlp-target-gateway-resource/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/reference/authpolicy/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/reference/dnspolicy/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/reference/kuadrant/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/reference/ratelimitpolicy/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/reference/route-selectors/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/reference/tlspolicy/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/user-guides/auth-for-app-devs-and-platform-engineers/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/user-guides/authenticated-rl-for-app-developers/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/user-guides/authenticated-rl-with-jwt-and-k8s-authnz/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/user-guides/gateway-dns/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/user-guides/gateway-rl-for-cluster-operators/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/user-guides/gateway-tls/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/user-guides/secure-protect-connect-single-multi-cluster/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/user-guides/secure-protect-connect/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/doc/user-guides/simple-rl-for-app-developers/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrant-operator/examples/alerts/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/architecture/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/code_of_conduct/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/contributing/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/features/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/getting-started/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/terminology/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/anonymous-access/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/api-key-authentication/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/authenticated-rate-limiting-envoy-dynamic-metadata/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/authzed/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/caching/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/deny-with-redirect-to-login/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/edge-authentication-architecture-festival-wristbands/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/envoy-jwt-authn-and-authorino/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/external-metadata/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/hello-world/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/host-override/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/http-basic-authentication/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/injecting-data/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/json-pattern-matching-authorization/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/keycloak-authorization-services/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/kubernetes-subjectaccessreview/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/kubernetes-tokenreview/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/mtls-authentication/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/oauth2-token-introspection/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/observability/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/oidc-jwt-authentication/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/oidc-rbac/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/oidc-user-info/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/opa-authorization/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/passing-credentials/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/resource-level-authorization-uma/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/sharding/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/token-normalization/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino/docs/user-guides/validating-webhook/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/authorino-operator/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/limitador/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/limitador/doc/how-it-works/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/limitador/doc/topologies/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/limitador/doc/migrations/conditions/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/limitador/doc/server/configuration/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/limitador/limitador/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/limitador/limitador-server/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/limitador/limitador-server/kubernetes/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/limitador/limitador-server/sandbox/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/limitador/limitador-server/sandbox/redis-otel/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/limitador/limitador-server/sandbox/redis-tls/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/limitador-operator/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/limitador-operator/doc/development/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/limitador-operator/doc/logging/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/limitador-operator/doc/rate-limit-headers/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/limitador-operator/doc/resource-requirements/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/limitador-operator/doc/storage/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/limitador-operator/doc/tracing/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/architecture/docs/design/architectural-overview-v1/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/architecture/docs/design/architectural-overview/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/architecture/docs/design/modular_installation/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/architecture/rfcs/0001-rlp-v2/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/architecture/rfcs/0002-well-known-attributes/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/architecture/rfcs/0003-dns-policy/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/architecture/rfcs/0004-policy-status/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/architecture/rfcs/0005-single-cluster-dnspolicy/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/architecture/rfcs/0006-kuadrant_sub_components_configurations/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/architecture/rfcs/0007-policy-sync-v1/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/architecture/rfcs/0008-kuadrant-release-process/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/architecture/rfcs/0009-defaults-and-overrides/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/architecture/rfcs/0010-gateway-api-metrics-exporter/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/architecture/rfcs/0011-policy-machinery/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/architecture/rfcs/dns-policy-api-changes/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/architecture/rfcs/0003-dns-policy-assets/DNSRecordStructure/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/api-quickstart/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrantctl/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrantctl/doc/RELEASE/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrantctl/doc/development/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrantctl/doc/generate-gateway-api-httproute/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrantctl/doc/generate-kuadrant-auth-policy/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrantctl/doc/generate-kuadrant-rate-limit-policy/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrantctl/doc/kuadrantctl-ci-cd/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrantctl/doc/openapi-apicurio/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrantctl/doc/openapi-kuadrant-extensions/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/kuadrantctl/doc/openapi-openshift-dev-spaces/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/dns-operator/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/dns-operator/docs/RELEASE/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/dns-operator/docs/provider/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/dns-operator/docs/RFC/distributed-dns/dnsrecord-lifecycle/ - 2024-09-26 - daily - - - https://docs.kuadrant.io/0.10.0/dns-operator/docs/reference/dnsrecord/ - 2024-09-26 - daily - - \ No newline at end of file diff --git a/0.10.0/sitemap.xml.gz b/0.10.0/sitemap.xml.gz deleted file mode 100644 index 05251a82b2a6cfde40216c4bd5b5b80a71c875a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1525 zcmVA@ zlIHu1^Tq7u^6u4zyvh&kj)vE*XLDD6CCSfNHfgr*&_)b-=2*UVwU{mDxAW3!{3T4e zVS9JIxPA?b8@PTWP4?GD%}kAMLEm!fs`?3ve0xs zJ21XWnW7%pNlrXXANS!Ba7z(0tAZ*m=h)?18)i!z^4vBQvO4G?DTG`T`do_uHEVV7 zJy(?o6K$~Nh`_tXWrg6gS2s*t5Y^-T;S<)~l477t>Y2z*nZa(QPFC_VQQY9td6&0y zdcdaj`nuzkMMF6{qnt#JXcS7NHgd}eMK(p>f*6`&bV4O^w#O|*O58<5>huJyD2i7^ zgC*CpcV?@XgV-9{DID(WWl&6y!Sc}F6_GnJq7r#Bax>{ABKDNdzUV}4K-D=bdb`Lc zSaAewTM!p60R{`L$1E2cpde;Ck-lzv%2B*hXRrh@q95}uF6+6`>z(xJ*FFzjxqd5M zDlNh{%^VK~fkIFHIU4&hxDTWq+n)tDg>L4UMk3Qi0x?UoC@3%-LiyZ>K9vM+f0U+b zMy`0G`o;UvrAALNPZ)a9DjZ#44G>EUH8?Sv+Ld`JQ&bIT!KRF?LH~yNg*wvMv^P zBr}M_bvmaD*@~V_dl*}Eu%eXR20irArM$#ob&9y%+#do>CBQUL5?_-D;TCh5-q2tk zwBaOf^QUHRiHYdx2wvUh@pu2z+r$$|UJ&Su?K{&`?m8 zG{kq&>VQ}>0c!5SsDT1ts82{tReLIwkTEyCSnhVd?P;*e72J z`vUIAGytdx?WB_|U!rhuOXYt$7paUNeJqk3U`6V1PrhF9Bnxx!JjLU5RT$quKP*(1 zXg+MN&W4LZA_AoI81MH5)>98@jA_J`&{!-MS5Qh|H`mHwUqer&Ha~D50P`-HcG7E) z&$0Na)E2?i3;Ldg{(29)B-iFn+k^l4$+kkEpxpRbB5&Z(@;-ITd&5o3p_ml+Cm{!I z{qxIlbZvvtqvQ_o-yVBK%sfw+hN7p5rxia(Qz+o z!C7c`h|)ndmSK)kNN4tpC5kv{6P<3Rh#G?KvxuK2nUTNd-;)Js}F@djuykP zJBF4`K3=9Viq&Z&Gdc$&I?C#SUbc8EGeO>_i;ndnKMtT$7ZK95otKwL9Cz9)`vE{| zangCw#h97?I?M^mAqqEnP5V7$QBNCjpmaUvkH62YOZym`9rnYKcO0x;5%DWBTjNO+ brIUT;c0~Sv_``?z3U~hk)yovq&s+ci*45}w diff --git a/versions.json b/versions.json index c5cf82518..c92caf214 100644 --- a/versions.json +++ b/versions.json @@ -10,10 +10,5 @@ "aliases": [ "latest" ] - }, - { - "version": "0.10.0", - "title": "0.10.0", - "aliases": [] } ]

    Getting Started

    hu5Ph6Yn0Pcg(^9x{H{YlY&ZWBb&o?VZvsth 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 z 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

    QJM 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 diff --git a/0.10.0/architecture/docs/design/modular_installation/index.html b/0.10.0/architecture/docs/design/modular_installation/index.html deleted file mode 100644 index 43acce147..000000000 --- a/0.10.0/architecture/docs/design/modular_installation/index.html +++ /dev/null @@ -1,3456 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Kuadrant Proposal - Modular Installation - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Kuadrant Proposal - Modular Installation

    -

    Kuadrant is developing a set of loosely coupled functionalities built directly on top of Kubernetes. -Kuadrant aims to allow customers to just install, use and understand those functionalities they need.

    -

    Problem Statement

    -

    Currently, the installation tool of kuadrant, the kuadrantctl CLI, -installs all or nothing. Installing more than the customer needs adds unneeded complexity and operational effort. -For example, if a customer is looking for rate limiting and not interested in authentication functionality, -then the customer should be able to just install and run that part of Kuadrant.

    -

    High Level Goals

    -
      -
    • Install only required components. Operate only required components.
    • -
    -

    Reduce system complexity and operational effort to the minimum required. -Components in this context make reference to deployments and running instances.

    -
      -
    • Expose only the activated functionalities
    • -
    -

    A user of a partial Kuadrant install should not be confronted with data in custom resources that -has no meaning or is not accessible in their partial Kuadrant install. The design of the kuadrant -API should have this goal into account.

    -

    Proposed Solution

    -

    The kuadrant installation mechanism should offer modular installation to enable/disable loosely coupled pieces of kuadrant. -Modular installation options should be feature oriented rather than deployment component oriented. -Then, it is up to the installation tool to decide what components need to be deployed and how to -configure it.

    -

    Each feature, or part of it, is eligible to be included or excluded when installing kuadrant.

    -

    Some profiles can be defined to group set of commonly required features. Naming the profiles -allows the customer to easily express wanted installation configuration. Furthermore, profiles -not only can be used to group a set of features, profiles can be used to define deployment options.

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    MinimalMinimal installation required to run an API without any protection, analytics or API management. Default deployment option
    AuthZAuthentication and authorization mechanisms activated
    RateLimitBasic rate limit (only pre-auth rate limit) features
    FullFull featured kuadrant installation
    -

    A kuadrant operator, together with a design of a kuadrant CRD is desired. -Not only for kuadrant installation, but also for lifecycle management. -Additionally, the kuadrantctl CLI tool can also -be useful to either deploy kuadrant components and manifests or just deploy the kuadrant operator.

    -

    The kuadrant control plane should be aware of the installed profile via env vars or command line params -in the control plane running components. With that information, the control plane can decide to -enable or disable CRD watching, label and annotation monitoring and ultimately reject any configuration -object that relies on disabled functionality. The least a customer can expect from kuadrant is to be -consistent and reject any functionality request that cannot provide.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/architecture/rfcs/0001-rlp-v2/index.html b/0.10.0/architecture/rfcs/0001-rlp-v2/index.html deleted file mode 100644 index 31ad370e0..000000000 --- a/0.10.0/architecture/rfcs/0001-rlp-v2/index.html +++ /dev/null @@ -1,5274 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - RFC 0001: RateLimitPolicy API "v2" - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    RateLimitPolicy API v2

    - -

    Summary

    -

    Proposal of new API for the Kuadrant's RateLimitPolicy (RLP) CRD, for improved UX.

    -

    Motivation

    -

    The RateLimitPolicy API (v1beta1), particularly its RateLimit type used in ratelimitpolicy.spec.rateLimits, designed in part to fit the underlying implementation based on the Envoy Rate limit filter, has been proven to be complex, as well as somewhat limiting for the extension of the API for other platforms and/or for supporting use cases of not contemplated in the original design.

    -

    Users of the RateLimitPolicy will immediately recognize elements of Envoy's Rate limit API in the definitions of the RateLimit type, with almost 1:1 correspondence between the Configuration type and its counterpart in the Envoy configuration. Although compatibility between those continue to be desired, leaking such implementation details to the level of the API can be avoided to provide a better abstraction for activators ("matchers") and payload ("descriptors"), stated by users in a seamless way.

    -

    Furthermore, the Limit type – used as well in the RLP's RateLimit type – implies presently a logical relationship between its inner concepts – i.e. conditions and variables on one side, and limits themselves on the other – that otherwise could be shaped in a different manner, to provide clearer understanding of the meaning of these concepts by the user and avoid repetition. I.e., one limit definition contains multiple rate limits, and not the other way around.

    -

    Goals

    -
      -
    1. Decouple the API from the underlying implementation - i.e. provide a more generic and more user-friendly abstraction
    2. -
    3. Prepare the API for upcoming changes in the Gateway API Policy Attachment specification
    4. -
    5. Improve consistency of the API with respect to Kuadrant's AuthPolicy CRD - i.e. same language, similar UX
    6. -
    -

    Current WIP to consider

    -
      -
    1. Policy attachment update (kubernetes-sigs/gateway-api#1565)
    2. -
    3. No merging of policies (kuadrant/architecture#10)
    4. -
    5. A single Policy scoped to HTTPRoutes and HTTPRouteRule (kuadrant/architecture#4) - future
    6. -
    7. Implement skip_if_absent for the RequestHeaders action (kuadrant/wasm-shim#29)
    8. -
    -

    Highlights

    -
      -
    • spec.rateLimits[] replaced with spec.limits{<limit-name>: <limit-definition>}
    • -
    • spec.rateLimits.limits replaced with spec.limits.<limit-name>.rates
    • -
    • spec.rateLimits.limits.maxValue replaced with spec.limits.<limit-name>.rates.limit
    • -
    • spec.rateLimits.limits.seconds replaced with spec.limits.<limit-name>.rates.duration + spec.limits.<limit-name>.rates.unit
    • -
    • spec.rateLimits.limits.conditions replaced with spec.limits.<limit-name>.when, structured field based on well-known selectors, mainly for expressing conditions not related to the HTTP route (although not exclusively)
    • -
    • spec.rateLimits.limits.variables replaced with spec.limits.<limit-name>.counters, based on well-known selectors
    • -
    • spec.rateLimits.rules replaced with spec.limits.<limit-name>.routeSelectors, for selecting (or "sub-targeting") HTTPRouteRules that trigger the limit
    • -
    • new matcher spec.limits.<limit-name>.routeSelectors.hostnames[]
    • -
    • spec.rateLimits.configurations removed – descriptor actions configuration (previously spec.rateLimits.configurations.actions) generated from spec.limits.<limit-name>.when.selectorspec.limits.<limit-name>.counters and unique identifier of the limit (associated with spec.limits.<limit-name>.routeSelectors)
    • -
    • Limitador conditions composed of "soft" spec.limits.<limit-name>.when conditions + a "hard" condition that binds the limit to its trigger HTTPRouteRules
    • -
    -

    For detailed differences between current and new RLP API, see Comparison to current RateLimitPolicy.

    -

    Guide-level explanation

    -

    Examples of RLPs based on the new API

    -

    Given the following network resources:

    -
    apiVersion: gateway.networking.k8s.io/v1alpha2
    -kind: Gateway
    -metadata:
    -  name: istio-ingressgateway
    -  namespace: istio-system
    -spec:
    -  gatewayClassName: istio
    -  listeners:
    -
    -  - hostname:
    -    - "*.acme.com"
    ----
    -apiVersion: gateway.networking.k8s.io/v1alpha2
    -kind: HTTPRoute
    -metadata:
    -  name: toystore
    -  namespace: toystore
    -spec:
    -  parentRefs:
    -  - name: istio-ingressgateway
    -    namespace: istio-system
    -  hostnames:
    -  - "*.toystore.acme.com"
    -  rules:
    -  - matches:
    -    - path:
    -        type: PathPrefix
    -        value: "/toys"
    -      method: GET
    -    - path:
    -        type: PathPrefix
    -        value: "/toys"
    -      method: POST
    -    backendRefs:
    -    - name: toystore
    -      port: 80
    -  - matches:
    -    - path:
    -        type: PathPrefix
    -        value: "/assets/"
    -    backendRefs:
    -    - name: toystore
    -      port: 80
    -    filters:
    -    - type: ResponseHeaderModifier
    -      responseHeaderModifier:
    -        set:
    -        - name: Cache-Control
    -          value: "max-age=31536000, immutable"
    -
    -

    The following are examples of RLPs targeting the route and the gateway. Each example is independent from the other.

    -

    Example 1. Minimal example - network resource targeted entirely without filtering, unconditional and unqualified rate limiting

    -

    In this example, all traffic to *.toystore.acme.com will be limited to 5rps, regardless of any other attribute of the HTTP request (method, path, headers, etc), without any extra "soft" conditions (conditions non-related to the HTTP route), across all consumers of the API (unqualified rate limiting).

    -
    apiVersion: kuadrant.io/v2beta1
    -kind: RateLimitPolicy
    -metadata:
    -  name: toystore-infra-rl
    -  namespace: toystore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: toystore
    -  limits:
    -    base: # user-defined name of the limit definition - future use for handling hierarchical policy attachment
    -
    -    - rates: # at least one rate limit required
    -      - limit: 5
    -        unit: second
    -
    -
    - How is this RLP implemented under the hood? - -
    gateway_actions:
    -
    -- rules:
    -  - paths: ["/toys*"]
    -    methods: ["GET"]
    -    hosts: ["*.toystore.acme.com"]
    -  - paths: ["/toys*"]
    -    methods: ["POST"]
    -    hosts: ["*.toystore.acme.com"]
    -  - paths: ["/assets/*"]
    -    hosts: ["*.toystore.acme.com"]
    -  configurations:
    -  - generic_key:
    -      descriptor_key: "toystore/toystore-infra-rl/base"
    -      descriptor_value: "1"
    -
    - -
    limits:
    -
    -- conditions:
    -  - toystore/toystore-infra-rl/base == "1"
    -  max_value: 5
    -  seconds: 1
    -  namespace: TDB
    -
    -
    - -

    Example 2. Targeting specific route rules, with counter qualifiers, multiple rates per limit definition and "soft" conditions

    -

    In this example, a distinct limit will be associated ("bound") to each individual HTTPRouteRule of the targeted HTTPRoute, by using the routeSelectors field for selecting (or "sub-targeting") the HTTPRouteRule.

    -

    The following limit definitions will be bound to each HTTPRouteRule:

    -
      -
    • /toys* → 50rpm, enforced per username (counter qualifier) and only in case the user is not an admin ("soft" condition).
    • -
    • /assets/* → 5rpm / 100rp12h
    • -
    -

    Each set of trigger matches in the RLP will be matched to all HTTPRouteRules whose HTTPRouteMatches is a superset of the set of trigger matches in the RLP. For every HTTPRouteRule matched, the HTTPRouteRule will be bound to the corresponding limit definition that specifies that trigger. In case no HTTPRouteRule is found containing at least one HTTPRouteMatch that is identical to some set of matching rules of a particular limit definition, the limit definition is considered invalid and reported as such in the status of RLP.

    -
    apiVersion: kuadrant.io/v2beta1
    -kind: RateLimitPolicy
    -metadata:
    -  name: toystore-per-endpoint
    -  namespace: toystore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: toystore
    -  limits:
    -    toys:
    -      rates:
    -
    -      - limit: 50
    -        duration: 1
    -        unit: minute
    -      counters:
    -      - auth.identity.username
    -      routeSelectors:
    -      - matches: # matches the 1st HTTPRouteRule (i.e. GET or POST to /toys*)
    -        - path:
    -            type: PathPrefix
    -            value: "/toys"
    -      when:
    -      - selector: auth.identity.group
    -        operator: neq
    -        value: admin
    -
    -    assets:
    -      rates:
    -
    -      - limit: 5
    -        duration: 1
    -        unit: minute
    -      - limit: 100
    -        duration: 12
    -        unit: hour
    -      routeSelectors:
    -      - matches: # matches the 2nd HTTPRouteRule (i.e. /assets/*)
    -        - path:
    -            type: PathPrefix
    -            value: "/assets/"
    -
    -
    - How is this RLP implemented under the hood? - -
    gateway_actions:
    -
    -- rules:
    -  - paths: ["/toys*"]
    -    methods: ["GET"]
    -    hosts: ["*.toystore.acme.com"]
    -  - paths: ["/toys*"]
    -    methods: ["POST"]
    -    hosts: ["*.toystore.acme.com"]
    -  configurations:
    -  - generic_key:
    -      descriptor_key: "toystore/toystore-per-endpoint/toys"
    -      descriptor_value: "1"
    -  - metadata:
    -      descriptor_key: "auth.identity.group"
    -      metadata_key:
    -        key: "envoy.filters.http.ext_authz"
    -        path:
    -        - segment:
    -            key: "identity"
    -        - segment:
    -            key: "group"
    -  - metadata:
    -      descriptor_key: "auth.identity.username"
    -      metadata_key:
    -        key: "envoy.filters.http.ext_authz"
    -        path:
    -        - segment:
    -            key: "identity"
    -        - segment:
    -            key: "username"
    -- rules:
    -  - paths: ["/assets/*"]
    -    hosts: ["*.toystore.acme.com"]
    -  configurations:
    -  - generic_key:
    -      descriptor_key: "toystore/toystore-per-endpoint/assets"
    -      descriptor_value: "1"
    -
    - -
    limits:
    -
    -- conditions:
    -  - toystore/toystore-per-endpoint/toys == "1"
    -  - auth.identity.group != "admin"
    -  variables:
    -  - auth.identity.username
    -  max_value: 50
    -  seconds: 60
    -  namespace: kuadrant
    -- conditions:
    -  - toystore/toystore-per-endpoint/assets == "1"
    -  max_value: 5
    -  seconds: 60
    -  namespace: kuadrant
    -- conditions:
    -  - toystore/toystore-per-endpoint/assets == "1"
    -  max_value: 100
    -  seconds: 43200 # 12 hours
    -  namespace: kuadrant
    -
    -
    - -

    Example 3. Targeting a subset of an HTTPRouteRule - HTTPRouteMatch missing

    -

    Consider a 150rps rate limit set on requests to GET /toys/special. Such specific application endpoint is covered by the first HTTPRouteRule in the HTTPRoute (as a subset of GET or POST to any path that starts with /toys). However, to avoid binding limits to HTTPRouteRules that are more permissive than the actual intended scope of the limit, the RateLimitPolicy controller requires trigger matches to find identical matching rules explicitly defined amongst the sets of HTTPRouteMatches of the HTTPRouteRules potentially targeted.

    -

    As a consequence, by simply defining a trigger match for GET /toys/special in the RLP, the GET|POST /toys* HTTPRouteRule will NOT be bound to the limit definition. In order to ensure the limit definition is properly bound to a routing rule that strictly covers the GET /toys/special application endpoint, first the user has to modify the spec of the HTTPRoute by adding an explicit HTTPRouteRule for this case:

    -
    apiVersion: gateway.networking.k8s.io/v1alpha2
    -kind: HTTPRoute
    -metadata:
    -  name: toystore
    -  namespace: toystore
    -spec:
    -  parentRefs:
    -
    -  - name: istio-ingressgateway
    -    namespace: istio-system
    -  hostnames:
    -  - "*.toystore.acme.com"
    -  rules:
    -  - matches:
    -    - path:
    -        type: PathPrefix
    -        value: "/toys"
    -      method: GET
    -    - path:
    -        type: PathPrefix
    -        value: "/toys"
    -      method: POST
    -    backendRefs:
    -    - name: toystore
    -      port: 80
    -  - matches:
    -    - path:
    -        type: PathPrefix
    -        value: "/assets/"
    -    backendRefs:
    -    - name: toystore
    -      port: 80
    -    filters:
    -    - type: ResponseHeaderModifier
    -      responseHeaderModifier:
    -        set:
    -        - name: Cache-Control
    -          value: "max-age=31536000, immutable"
    -  - matches: # new (more specific) HTTPRouteRule added
    -    - path:
    -        type: Exact
    -        value: "/toys/special"
    -      method: GET
    -    backendRefs:
    -    - name: toystore
    -      port: 80
    -
    -

    After that, the RLP can target the new HTTPRouteRule strictly:

    -
    apiVersion: kuadrant.io/v2beta1
    -kind: RateLimitPolicy
    -metadata:
    -  name: toystore-special-toys
    -  namespace: toystore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: toystore
    -  limits:
    -    specialToys:
    -      rates:
    -
    -      - limit: 150
    -        unit: second
    -      routeSelectors:
    -      - matches: # matches the new HTTPRouteRule (i.e. GET /toys/special)
    -        - path:
    -            type: Exact
    -            value: "/toys/special"
    -          method: GET
    -
    -
    - How is this RLP implemented under the hood? - -
    gateway_actions:
    -
    -- rules:
    -  - paths: ["/toys/special"]
    -    methods: ["GET"]
    -    hosts: ["*.toystore.acme.com"]
    -  configurations:
    -  - generic_key:
    -      descriptor_key: "toystore/toystore-special-toys/specialToys"
    -      descriptor_value: "1"
    -
    - -
    limits:
    -
    -- conditions:
    -  - toystore/toystore-special-toys/specialToys == "1"
    -  max_value: 150
    -  seconds: 1
    -  namespace: kuadrant
    -
    -
    - -

    Example 4. Targeting a subset of an HTTPRouteRule - HTTPRouteMatch found

    -

    This example is similar to Example 3. Consider the use case of setting a 150rpm rate limit on requests to GET /toys*.

    -

    The targeted application endpoint is covered by the first HTTPRouteRule in the HTTPRoute (as a subset of GET or POST to any path that starts with /toys). However, unlike in the previous example where, at first, no HTTPRouteRule included an explicit HTTPRouteMatch for GET /toys/special, in this example the HTTPRouteMatch for the targeted application endpoint GET /toys* does exist explicitly in one of the HTTPRouteRules, thus the RateLimitPolicy controller would find no problem to bind the limit definition to the HTTPRouteRule. That would nonetheless cause a unexpected behavior of the limit triggered not strictly for GET /toys*, but also for POST /toys*.

    -

    To avoid extending the scope of the limit beyond desired, with no extra "soft" conditions, again the user must modify the spec of the HTTPRoute, so an exclusive HTTPRouteRule exists for the GET /toys* application endpoint:

    -
    apiVersion: gateway.networking.k8s.io/v1alpha2
    -kind: HTTPRoute
    -metadata:
    -  name: toystore
    -  namespace: toystore
    -spec:
    -  parentRefs:
    -
    -  - name: istio-ingressgateway
    -    namespace: istio-system
    -  hostnames:
    -  - "*.toystore.acme.com"
    -  rules:
    -  - matches: # first HTTPRouteRule split into two – one for GET /toys*, other for POST /toys*
    -    - path:
    -        type: PathPrefix
    -        value: "/toys"
    -      method: GET
    -    backendRefs:
    -    - name: toystore
    -      port: 80
    -  - matches:
    -    - path:
    -        type: PathPrefix
    -        value: "/toys"
    -      method: POST
    -    backendRefs:
    -    - name: toystore
    -      port: 80
    -  - matches:
    -    - path:
    -        type: PathPrefix
    -        value: "/assets/"
    -    backendRefs:
    -    - name: toystore
    -      port: 80
    -    filters:
    -    - type: ResponseHeaderModifier
    -      responseHeaderModifier:
    -        set:
    -        - name: Cache-Control
    -          value: "max-age=31536000, immutable"
    -
    -

    The RLP can then target the new HTTPRouteRule strictly:

    -
    apiVersion: kuadrant.io/v2beta1
    -kind: RateLimitPolicy
    -metadata:
    -  name: toy-readers
    -  namespace: toystore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: toystore
    -  limits:
    -    toyReaders:
    -      rates:
    -
    -      - limit: 150
    -        unit: second
    -      routeSelectors:
    -      - matches: # matches the new more specific HTTPRouteRule (i.e. GET /toys*)
    -        - path:
    -            type: PathPrefix
    -            value: "/toys"
    -          method: GET
    -
    -
    - How is this RLP implemented under the hood? - -
    gateway_actions:
    -
    -- rules:
    -  - paths: ["/toys*"]
    -    methods: ["GET"]
    -    hosts: ["*.toystore.acme.com"]
    -  configurations:
    -  - generic_key:
    -      descriptor_key: "toystore/toy-readers/toyReaders"
    -      descriptor_value: "1"
    -
    - -
    limits:
    -
    -- conditions:
    -  - toystore/toy-readers/toyReaders == "1"
    -  max_value: 150
    -  seconds: 1
    -  namespace: kuadrant
    -
    -
    - -

    Example 5. One limit triggered by multiple HTTPRouteRules

    -

    In this example, both HTTPRouteRules, i.e. GET|POST /toys* and /assets/*, are targeted by the same limit of 50rpm per username.

    -

    Because the HTTPRoute has no other rule, this is technically equivalent to targeting the entire HTTPRoute and therefore similar to Example 1. However, if the HTTPRoute had other rules or got other rules added afterwards, this would ensure the limit applies only to the two original route rules.

    -
    apiVersion: kuadrant.io/v2beta1
    -kind: RateLimitPolicy
    -metadata:
    -  name: toystore-per-user
    -  namespace: toystore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: toystore
    -  limits:
    -    toysOrAssetsPerUsername:
    -      rates:
    -
    -      - limit: 50
    -        duration: 1
    -        unit: minute
    -      counters:
    -      - auth.identity.username
    -      routeSelectors:
    -      - matches:
    -        - path:
    -            type: PathPrefix
    -            value: "/toys"
    -          method: GET
    -        - path:
    -            type: PathPrefix
    -            value: "/toys"
    -          method: POST
    -      - matches:
    -        - path:
    -            type: PathPrefix
    -            value: "/assets/"
    -
    -
    - How is this RLP implemented under the hood? - -
    gateway_actions:
    -
    -- rules:
    -  - paths: ["/toys*"]
    -    methods: ["GET"]
    -    hosts: ["*.toystore.acme.com"]
    -  - paths: ["/toys*"]
    -    methods: ["POST"]
    -    hosts: ["*.toystore.acme.com"]
    -  - paths: ["/assets/*"]
    -    hosts: ["*.toystore.acme.com"]
    -  configurations:
    -  - generic_key:
    -      descriptor_key: "toystore/toystore-per-user/toysOrAssetsPerUsername"
    -      descriptor_value: "1"
    -  - metadata:
    -      descriptor_key: "auth.identity.username"
    -      metadata_key:
    -        key: "envoy.filters.http.ext_authz"
    -        path:
    -        - segment:
    -            key: "identity"
    -        - segment:
    -            key: "username"
    -
    - -
    limits:
    -
    -- conditions:
    -  - toystore/toystore-per-user/toysOrAssetsPerUsername == "1"
    -  variables:
    -  - auth.identity.username
    -  max_value: 50
    -  seconds: 60
    -  namespace: kuadrant
    -
    -
    - -

    Example 6. Multiple limit definitions targeting the same HTTPRouteRule

    -

    In case multiple limit definitions target a same HTTPRouteRule, all those limit definitions will be bound to the HTTPRouteRule. No limit "shadowing" will be be enforced by the RLP controller. Due to how things work as of today in Limitador nonetheless (i.e. the rule of the most restrictive limit wins), in some cases, across multiple limits triggered, one limit ends up "shadowing" others, depending on further qualification of the counters and the actual RL values.

    -

    E.g., the following RLP intends to set 50rps per username on GET /toys*, and 100rps on POST /toys* or /assets/*:

    -
    apiVersion: kuadrant.io/v2beta1
    -kind: RateLimitPolicy
    -metadata:
    -  name: toystore-per-endpoint
    -  namespace: toystore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: toystore
    -  limits:
    -    readToys:
    -      rates:
    -
    -      - limit: 50
    -        unit: second
    -      counters:
    -      - auth.identity.username
    -      routeSelectors:
    -      - matches: # matches the 1st HTTPRouteRule (i.e. GET or POST to /toys*)
    -        - path:
    -            type: PathPrefix
    -            value: "/toys"
    -          method: GET
    -
    -    postToysOrAssets:
    -      rates:
    -
    -      - limit: 100
    -        unit: second
    -      routeSelectors:
    -      - matches: # matches the 1st HTTPRouteRule (i.e. GET or POST to /toys*)
    -        - path:
    -            type: PathPrefix
    -            value: "/toys"
    -          method: POST
    -      - matches: # matches the 2nd HTTPRouteRule (i.e. /assets/*)
    -        - path:
    -            type: PathPrefix
    -            value: "/assets/"
    -
    -
    - How is this RLP implemented under the hood? - -
    gateway_actions:
    -
    -- rules:
    -  - paths: ["/toys*"]
    -    methods: ["GET"]
    -    hosts: ["*.toystore.acme.com"]
    -  - paths: ["/toys*"]
    -    methods: ["POST"]
    -    hosts: ["*.toystore.acme.com"]
    -  configurations:
    -  - generic_key:
    -      descriptor_key: "toystore/toystore-per-endpoint/readToys"
    -      descriptor_value: "1"
    -  - metadata:
    -      descriptor_key: "auth.identity.username"
    -      metadata_key:
    -        key: "envoy.filters.http.ext_authz"
    -        path:
    -        - segment:
    -            key: "identity"
    -        - segment:
    -            key: "username"
    -- rules:
    -  - paths: ["/toys*"]
    -    methods: ["GET"]
    -    hosts: ["*.toystore.acme.com"]
    -  - paths: ["/toys*"]
    -    methods: ["POST"]
    -    hosts: ["*.toystore.acme.com"]
    -  - paths: ["/assets/*"]
    -    hosts: ["*.toystore.acme.com"]
    -  configurations:
    -  - generic_key:
    -      descriptor_key: "toystore/toystore-per-endpoint/readToys"
    -      descriptor_value: "1"
    -  - generic_key:
    -      descriptor_key: "toystore/toystore-per-endpoint/postToysOrAssets"
    -      descriptor_value: "1"
    -
    - -
    limits:
    -
    -- conditions: # actually applies to GET|POST /toys*
    -  - toystore/toystore-per-endpoint/readToys == "1"
    -  variables:
    -  - auth.identity.username
    -  max_value: 50
    -  seconds: 1
    -  namespace: kuadrant
    -- conditions: # actually applies to GET|POST /toys* and /assets/*
    -  - toystore/toystore-per-endpoint/postToysOrAssets == "1"
    -  max_value: 100
    -  seconds: 1
    -  namespace: kuadrant
    -
    -
    - -

    This example was only written in this way to highlight that it is possible that multiple limit definitions select a same HTTPRouteRule. To avoid over-limiting between GET|POST /toys* and thus ensure the originally intended limit definitions for each of these routes apply, the HTTPRouteRule should be split into two, like done in Example 4.

    -

    Example 7. Limits triggered for specific hostnames

    -

    In the previous examples, the limit definitions and therefore the counters were set indistinctly for all hostnames – i.e. no matter if the request is sent to games.toystore.acme.com or dolls.toystore.acme.com, the same counters are expected to be affected. In this example on the other hand, a 1000rpd rate limit is set for requests to /assets/* only when the hostname matches games.toystore.acme.com.

    -

    First, the user needs to edit the HTTPRoute to make the targeted hostname games.toystore.acme.com explicit:

    -
    apiVersion: gateway.networking.k8s.io/v1alpha2
    -kind: HTTPRoute
    -metadata:
    -  name: toystore
    -  namespace: toystore
    -spec:
    -  parentRefs:
    -
    -  - name: istio-ingressgateway
    -    namespace: istio-system
    -  hostnames:
    -  - "*.toystore.acme.com"
    -  - games.toystore.acme.com # new (more specific) hostname added
    -  rules:
    -  - matches:
    -    - path:
    -        type: PathPrefix
    -        value: "/toys"
    -      method: GET
    -    - path:
    -        type: PathPrefix
    -        value: "/toys"
    -      method: POST
    -    backendRefs:
    -    - name: toystore
    -      port: 80
    -  - matches:
    -    - path:
    -        type: PathPrefix
    -        value: "/assets/"
    -    backendRefs:
    -    - name: toystore
    -      port: 80
    -    filters:
    -    - type: ResponseHeaderModifier
    -      responseHeaderModifier:
    -        set:
    -        - name: Cache-Control
    -          value: "max-age=31536000, immutable"
    -
    -

    After that, the RLP can target specifically the newly added hostname:

    -
    apiVersion: kuadrant.io/v2beta1
    -kind: RateLimitPolicy
    -metadata:
    -  name: toystore-per-hostname
    -  namespace: toystore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: toystore
    -  limits:
    -    games:
    -      rates:
    -
    -      - limit: 1000
    -        unit: day
    -      routeSelectors:
    -      - matches:
    -        - path:
    -            type: PathPrefix
    -            value: "/assets/"
    -        hostnames:
    -        - games.toystore.acme.com
    -
    -
    - How is this RLP implemented under the hood? - -
    gateway_actions:
    -
    -- rules:
    -  - paths: ["/assets/*"]
    -    hosts: ["games.toystore.acme.com"]
    -  configurations:
    -  - generic_key:
    -      descriptor_key: "toystore/toystore-per-hostname/games"
    -      descriptor_value: "1"
    -
    - -
    limits:
    -
    -- conditions:
    -  - toystore/toystore-per-hostname/games == "1"
    -  max_value: 1000
    -  seconds: 86400 # 1 day
    -  namespace: kuadrant
    -
    -
    - -

    Example 8. Targeting the Gateway

    -
    -

    Note: Additional meaning and context may be given to this use case in the future, when discussing defaults and overrides.

    -
    -

    Targeting a Gateway is a shortcut to targeting all individual HTTPRoutes referencing the gateway as parent. This differs from Example 1 nonetheless because, by targeting the gateway rather than an individual HTTPRoute, the RLP applies automatically to all HTTPRoutes pointing to the gateway, including routes created before and after the creation of the RLP. Moreover, all those routes will share the same limit counters specified in the RLP.

    -
    apiVersion: kuadrant.io/v2beta1
    -kind: RateLimitPolicy
    -metadata:
    -  name: gw-rl
    -  namespace: istio-ingressgateway
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -    name: istio-ingressgateway
    -  limits:
    -    base:
    -
    -    - rates:
    -      - limit: 5
    -        unit: second
    -
    -
    - How is this RLP implemented under the hood? - -
    gateway_actions:
    -
    -- rules:
    -  - paths: ["/toys*"]
    -    methods: ["GET"]
    -    hosts: ["*.toystore.acme.com"]
    -  - paths: ["/toys*"]
    -    methods: ["POST"]
    -    hosts: ["*.toystore.acme.com"]
    -  - paths: ["/assets/*"]
    -    hosts: ["*.toystore.acme.com"]
    -  configurations:
    -  - generic_key:
    -      descriptor_key: "istio-system/gw-rl/base"
    -      descriptor_value: "1"
    -
    - -
    limits:
    -
    -- conditions:
    -  - istio-system/gw-rl/base == "1"
    -  max_value: 5
    -  seconds: 1
    -  namespace: TDB
    -
    -
    - -

    Comparison to current RateLimitPolicy

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CurrentNewReason
    1:1 relation between Limit (the object) and the actual Rate limit (the value) (spec.rateLimits.limits)Rate limit becomes a detail of Limit where each limit may define one or more rates (1:N) (spec.limits.<limit-name>.rates) -
      -
    • It allows to reuse when conditions and counters for groups of rate limits
    • -
    -
    Parsed spec.rateLimits.limits.conditions field, directly exposing the Limitador's APIStructured spec.limits.<limit-name>.when condition field composed of 3 well-defined properties: selector, operator and value - -
    spec.rateLimits.configurations as a list of "variables assignments" and direct exposure of Envoy's RL descriptor actions APIDescriptor actions composed from selectors used in the limit definitions (spec.limits.<limit-name>.when.selector and spec.limits.<limit-name>.counters) plus a fixed identifier of the route rules (spec.limits.<limit-name>.routeSelectors) -
      -
    • Abstract the Envoy-specific concepts of "actions" and "descriptors"
    • -
    • No risk of mismatching descriptors keys between "actions" and actual usage in the limits
    • -
    • No user-defined generic descriptors (e.g. "limited = 1")
    • -
    • Source value of the selectors defined from an implicit "context" data structure
    • -
    -
    Key-value descriptorsStructured descriptors referring to a contextual well-known data structure - -
    Limitador conditions independent from the route rulesArtificial Limitador condition injected to bind routes and corresponding limits -
      -
    • Ensure the limit is enforced only for corresponding selected HTTPRouteRules
    • -
    -
    translate(spec.rateLimits.rules) ⊂ httproute.spec.rulesspec.limits.<limit-name>.routeSelectors.matches ⊆ httproute.spec.rules.matches -
      -
    • HTTPRouteRule selector (via HTTPRouteMatch subset)
    • -
    • Gateway API language
    • -
    • Preparation for inherited policies and defaults & overrides
    • -
    -
    spec.rateLimits.limits.secondsspec.limits.<limit-name>.rates.duration and spec.limits.<limit-name>.rates.unit -
      -
    • Support for more units beyond seconds
    • -
    • duration: 1 by default
    • -
    -
    spec.rateLimits.limits.variablesspec.limits.<limit-name>.counters -
      -
    • Improved (more specific) naming
    • -
    -
    spec.rateLimits.limits.maxValuespec.limits.<limit-name>.rates.limit -
      -
    • Improved (more generic) naming
    • -
    -
    - -

    Reference-level explanation

    -

    By completely dropping out the configurations field from the RLP, composing the RL descriptor actions is now done based essentially on the selectors listed in the when conditions and the counters, plus an artificial condition used to bind the HTTPRouteRules to the corresponding limits to trigger in Limitador.

    -

    The descriptor actions composed from the selectors in the "soft" when conditions and counter qualifiers originate from the direct references these selectors make to paths within a well-known data structure that stores information about the context (HTTP request and ext-authz filter). These selectors in "soft" when conditions and counter qualifiers are thereby called well-known selectors.

    -

    Other descriptor actions might be composed by the RLP controller to define additional RL conditions to bind HTTPRouteRules and corresponding limits.

    -

    Well-known selectors

    -

    Each selector used in a when condition or counter qualifier is a direct reference to a path within a well-known data structure that stores information about the context (L4 and L7 data of the original request handled by the proxy), as well as auth data (dynamic metadata occasionally exported by the external authorization filter and injected by the proxy into the rate-limit filter).

    -

    The well-known data structure for building RL descriptor actions resembles Authorino's "Authorization JSON", whose context component consists of Envoy's AttributeContext type of the external authorization API (marshalled as JSON). Compared to the more generic RateLimitRequest struct, the AttributeContext provides a more structured and arguibly more intuitive relation between the data sources for the RL descriptors actions and their corresponding key names through which the values are referred within the RLP, in a context of predominantly serving for HTTP applications.

    -

    To keep compatibility with the Envoy Rate Limit API, the well-known data structure can optionally be extended with the RateLimitRequest, thus resulting in the following final structure.

    -
    context: # Envoy's Ext-Authz `CheckRequest.AttributeContext` type
    -  source:
    -    address: 
    -    service: 
    -    
    -  destination:
    -    address: 
    -    service: 
    -    
    -  request:
    -    http:
    -      host: 
    -      path: 
    -      method: 
    -      headers: {}
    -
    -auth: # Dynamic metadata exported by the external authorization service
    -
    -ratelimit: # Envoy's Rate Limit `RateLimitRequest` type
    -  domain:  # generated by the Kuadrant controller
    -  descriptors: {} # descriptors configured by the user directly in the proxy (not generated by the Kuadrant controller, if allowed)
    -  hitsAddend:  # only in case we want to allow users to refer to this value in a policy
    -
    -

    Mechanics of generating RL descriptor actions

    -

    From the perspective of a user who writes a RLP, the selectors used in then when and counters fields are paths to the well-known data structure (see Well-known selectors). While desiging a policy, the user intuitively pictures the well-known data structure and states each limit definition having in mind the possible values assumed by each of those paths in the data plane. For example,

    -

    The user story:

    -
    -

    Each distinct user (auth.identity.username) can send no more than 1rps to the same HTTP path (context.request.http.path).

    -
    -

    ...materializes as the following RLP:

    -
    apiVersion: kuadrant.io/v2beta1
    -kind: RateLimitPolicy
    -metadata:
    -  name: toystore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: toystore
    -  limits:
    -    dolls:
    -      rates:
    -
    -      - limit: 1
    -        unit: second
    -      counters:
    -      - auth.identity.username
    -      - context.request.http.path
    -
    -

    The following selectors are to be interpreted by the RLP controller:

    -
      -
    • auth.identity.username
    • -
    • context.request.http.path
    • -
    -

    The RLP controller uses a map to translate each selector into its corresponding descriptor action. (Roughly described:)

    -
    context.source.address    → source_cluster(...) # TBC
    -context.source.service    → source_cluster(...) # TBC
    -context.destination...    → destination_cluster(...)
    -context.destination...    → destination_cluster(...)
    -context.request.http.<X>  → request_headers(header_name: ":<X>")
    -context.request...        → ...
    -auth.<X>                  → metadata(key: "envoy.filters.http.ext_authz", path: <X>)
    -ratelimit.domain          → <hostname>
    -
    -

    ...to yield effectively:

    -
    rate_limits:
    -
    -- actions:
    -  - metadata:
    -      descriptor_key: "auth.identity.username"
    -      metadata_key:
    -        key: "envoy.filters.http.ext_authz"
    -        path:
    -        - segment:
    -            key: "identity"
    -        - segment:
    -            key: "username"
    -  - request_headers:
    -      descriptor_key: "context.request.http.path"
    -      header_name: ":path"
    -
    -

    Artificial Limitador condition for routeSelectors

    -

    For each limit definition that explicitly or implicitly defines a routeSelectors field, the RLP controller will generate an artificial Limitador condition that ensures that the limit applies only when the filterred rules are honoured when serving the request. This can be implemented with a 2-step procedure:

    -
      -
    1. generate an unique identifier of the limit - i.e. <policy-namespace>/<policy-name>/<limit-name>
    2. -
    3. associate a generic_key type descriptor action with each HTTPRouteRule targeted by the limit – i.e. { descriptor_key: <unique identifier of the limit>, descriptor_value: "1" }.
    4. -
    -

    For example, given the following RLP:

    -
    apiVersion: kuadrant.io/v2beta1
    -kind: RateLimitPolicy
    -metadata:
    -  name: toystore-non-admin-users
    -  namespace: toystore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: toystore
    -  limits:
    -    toys:
    -      routeSelectors:
    -
    -      - matches:
    -        - path:
    -            type: PathPrefix
    -            value: "/toys"
    -          method: GET
    -        - path:
    -            type: PathPrefix
    -            value: "/toys"
    -          method: POST
    -      rates:
    -      - limit: 50
    -        duration: 1
    -        unit: minute
    -      when:
    -      - selector: auth.identity.group
    -        operator: neq
    -        value: admin
    -
    -    assets:
    -      routeSelectors:
    -
    -      - matches:
    -        - path:
    -            type: PathPrefix
    -            value: "/assets/"
    -      rates:
    -      - limit: 5
    -        duration: 1
    -        unit: minute
    -      when:
    -      - selector: auth.identity.group
    -        operator: neq
    -        value: admin
    -
    -

    Apart from the following descriptor action associated with both routes:

    -
    - metadata:
    -    descriptor_key: "auth.identity.group"
    -    metadata_key:
    -      key: "envoy.filters.http.ext_authz"
    -      path:
    -      - segment:
    -          key: "identity"
    -      - segment:
    -          key: "group"
    -
    -

    ...and its corresponding Limitador condition:

    -
    auth.identity.group != "admin"
    -
    -

    The following additional artificial descriptor actions will be generated:

    -
    # associated with route rule GET|POST /toys*
    -
    -- generic_key:
    -    descriptor_key: "toystore/toystore-non-admin-users/toys"
    -    descriptor_value: "1"
    -
    -# associated with route rule /assets/*
    -
    -- generic_key:
    -    descriptor_key: "toystore/toystore-non-admin-users/assets"
    -    descriptor_value: "1"
    -
    -

    ...and their corresponding Limitador conditions.

    -

    In the end, the following Limitador configuration is yielded:

    -
    - conditions:
    -  - toystore/toystore-non-admin-users/toys == "1"
    -  - auth.identity.group != "admin"
    -  max_value: 50
    -  seconds: 60
    -  namespace: kuadrant
    -
    -
    -- conditions:
    -  - toystore/toystore-non-admin-users/assets == "1"
    -  - auth.identity.group != "admin"
    -  max_value: 5
    -  seconds: 60
    -  namespace: kuadrant
    -
    -

    Support in wasm shim and Envoy RL API

    -

    This proposal tries to keep compatibility with the Envoy API for rate limit and does not introduce any new requirement that otherwise would require the use of wasm shim to be implemented.

    -

    In the case of implementation of this proposal in the wasm shim, all types of matchers supported by the HTTPRouteMatch type of Gateway API must be also supported in the rate_limit_policies.gateway_actions.rules field of the wasm plugin configuration. These include matchers based on path (prefix, exact), headers, query string parameters and method.

    -

    Drawbacks

    -

    HTTPRoute editing occasionally required
    -Need to duplicate rules that don't explicitly include a matcher wanted for the policy, so that matcher can be added as a special case for each of those rules.

    -

    Risk of over-targeting
    -Some HTTPRouteRules might need to be split into more specific ones so a limit definition is not bound to beyond intended (e.g. target method: GET when the route matches method: POST|GET).

    -

    Prone to consistency issues
    -Typos and updates to the HTTPRoute can easily cause a mismatch and invalidate a RLP.

    -

    Two types of conditions – routeSelectors and when conditions
    -Although with different meanings (evaluates in the gateway vs. evaluated in Limitador) and meant for expressing different types of rules (HTTPRouteRule selectors vs. "soft" conditions based on attributes not related to the HTTP request), users might still perceive these as two ways of expressing conditions and find difficult to understand at first that "soft" conditions do not accept expressions related to attributes of the HTTP request.

    -

    Rationale and alternatives

    -

    Targeting full HTTPRouteRules

    -

    Requiring users to specify full HTTPRouteRule matches in the RLP (as opposed to any subset of HTTPRoureMatches of targeted HTTPRouteRules – current proposal) contains some of the same drawbacks of this proposal, such as HTTPRoute editing occasionally required and prone to consistency issues. If, on one hand, it eliminates the risk of over-targeting, on the other hand, it does it at the cost of requiring excessively verbose policies written by the users, to the point of sometimes expecting user to have to specify trigger matching rules that are significantly more than what's originally and strictly intended.

    -

    E.g.:

    -

    On a HTTPRoute that contains the following HTTPRouteRules (simplified representation):

    -
    { header: x-canary=true } → backend-canary
    -{ * } → backend-rest
    -
    -

    Where the user wants to define a RLP that targets { method: POST }. First, the user needs to edit the HTTPRoute and duplicate the HTTPRouteRules:

    -
    { header: x-canary=true, method: POST } → backend-canary
    -{ header: x-canary=true } → backend-canary
    -{ method: POST } → backend-rest
    -{ * } → backend-rest
    -
    -

    Then, user needs to include the following trigger in the RLP so only full HTTPRouteRules are specified:

    -
    { header: x-canary=true, method: POST }
    -{ method: POST }
    -
    -

    The first matching rule of the trigger (i.e. { header: x-canary=true, method: POST }) is beoynd the original user intent of targeting simply { method: POST }.

    -

    This issue can be even more concerning in the case of targeting gateways with multiple child HTTPRoutes. All the HTTPRoutes would have to be fixed and the HTTPRouteRules that cover for all the cases in all HTTPRoutes listed in the policy targeting the gateway.

    -

    All limit definitions apply vs. Limit "shadowing"

    -

    The proposed binding between limit definition and HTTPRouteRules that trigger the limits was thought so multiple limit definitions can be bound to a same HTTPRouteRule that triggers those limits in Limitador. That means that no limit definition will "shadow" another at the level of the RLP controller, i.e. the RLP controller will honour the intended binding according to the selectors specified in the policy.

    -

    Due to how things work as of today in Limitador nonetheless, i.e., the rule of the most restrictive limit wins, and because all limit definitions triggered by a given shared HTTPRouteRule, it might be the case that, across multiple limits triggered, one limit ends up "shadowing" other limits. However, that is by implementation of Limitador and therefore beyond the scope of the API.

    -

    An alternative to the approach of allowing all limit definitions to be bound to a same selected HTTPRouteRules would be enforcing that, amongst multiple limit definitions targeting a same HTTPRouteRule, only the first of those limits definitions is bound to the HTTPRouteRule. This alternative approach effectively would cause the first limit to "shadow" any other on that particular HTTPRouteRule, as by implementation of the RLP controller (i.e., at API level).

    -

    While the first approach causes an artificial Limitador condition of the form <policy-ns>/<policy-name>/<limit-name> == "1", the alternative approach ("limit shadowing") could be implemented by generating a descriptor of the following form instead: ratelimit.binding == "<policy-ns>/<policy-name>/<limit-name>".

    -

    The downside of allowing multiple bindings to the same HTTPRouteRule is that all limits apply in Limitador, thus making status report frequently harder. The most restritive rate limit strategy implemented by Limitador might not be obvious to users who set multiple limit definitions and will require additional information reported back to the user about the actual status of the limit definitions stated in a RLP. On the other hand, it allows enables use cases of different limit definitions that vary on the counter qualifiers, additional "soft" conditions, or actual rate limit values to be triggered by a same HTTPRouteRule.

    -

    Writing "soft" when conditions based on attributes of the HTTP request

    -

    As a first step, users will not be able to write "soft" when conditions to selective apply rate limit definitions based on attributes of the HTTP request that otherwise could be specified using the routeSelectors field of the RLP instead.

    -

    On one hand, using when conditions for route filtering would make it easy to define limits when the HTTPRoute cannot be modified to include the special rule. On the other hand, users would miss information in the status. An HTTPRouteRule for GET|POST /toys*, for example, that is targeted with an additional "soft" when condition that specifies that the method must be equal to GET and the path exactly equal to /toys/special (see Example 3) would be reported as rate limited with extra details that this is in fact only for GET /toys/special. For small deployments, this might be considered acceptable; however it would easily explode to unmanageable number of cases for deployments with only a few limit definitions and HTTPRouteRules.

    -

    Moreover, by not specifying a more strict HTTPRouteRule for GET /toys/special, the RLP controller would bind the limit definition to other rules that would cause the rate limit filter to invoke the rate limit service (Limitador) for cases other than strictly GET /toys/special. Even if the rate limits would still be ensured to apply in Limitador only for GET /toys/special (due to the presence of a hypothetical "soft" when condition), an extra no-op hop to the rate limit service would happen. This is avoided with the current imposed limitation.

    -

    Example of "soft" when conditions for rate limit based on attributes of the HTTP request (NOT SUPPORTED):

    -
    apiVersion: kuadrant.io/v2beta1
    -kind: RateLimitPolicy
    -metadata:
    -  name: toystore-special-toys
    -  namespace: toystore
    -spec:
    -  targetRef:
    -    group: gateway.networking.k8s.io
    -    kind: HTTPRoute
    -    name: toystore
    -  limits:
    -    specialToys:
    -      rates:
    -
    -      - limit: 150
    -        unit: second
    -      routeSelectors:
    -      - matches: # matches the original HTTPRouteRule GET|POST /toys*
    -        - path:
    -            type: PathPrefix
    -            value: "/toys"
    -          method: GET
    -      when:
    -      - selector: context.request.http.method # cannot omit this selector or POST /toys/special would also be rate limited
    -        operator: eq
    -        value: GET
    -      - selector: context.request.http.path
    -        operator: eq
    -        value: /toys/special
    -
    -
    - How is this RLP would be implemented under the hood if supported? - -
    gateway_actions:
    -
    -- rules:
    -  - paths: ["/toys*"]
    -    methods: ["GET"]
    -    hosts: ["*.toystore.acme.com"]
    -  - paths: ["/toys*"]
    -    methods: ["POST"]
    -    hosts: ["*.toystore.acme.com"]
    -  configurations:
    -  - generic_key:
    -      descriptor_key: "toystore/toystore-special-toys/specialToys"
    -      descriptor_value: "1"
    -  - request_headers:
    -      descriptor_key: "context.request.http.method"
    -      header_name: ":method"
    -  - request_headers:
    -      descriptor_key: "context.request.http.path"
    -      header_name: ":path"
    -
    - -
    limits:
    -
    -- conditions:
    -  - toystore/toystore-special-toys/specialToys == "1"
    -  - context.request.http.method == "GET"
    -  - context.request.http.path == "/toys/special"
    -  max_value: 150
    -  seconds: 1
    -  namespace: kuadrant
    -
    -
    - -

    Possible variations for the selectors (conditions and counter qualifiers)

    -

    The main drivers behind the proposed design for the selectors (conditions and counter qualifiers), based on (i) structured condition expressions composed of fields selector, operator, and value, and (ii) when conditions and counters separated in two distinct fields (variation "C" below), are:

    -
      -
    1. consistency with the Authorino AuthConfig API, which also specifies when conditions expressed in selector, operator, and value fields;
    2. -
    3. explicit user intent, without subtle distinction of meaning based on presence of optional fields.
    4. -
    -

    Nonetheless here are a few alternative variations to consider:

    - - - - - - - - - - - - - - - - - - - - -
    Structured condition expressionsParsed condition expressions
    Single field - A -
    -selectors:
    -
    -  - selector: context.request.http.method
    -    operator: eq
    -    value: GET
    -  - selector: auth.identity.username
    -
    - B -
    -selectors:
    -  - context.request.http.method == "GET"
    -  - auth.identity.username
    -
    Distinct fields - C ⭐️ -
    -when:
    -  - selector: context.request.http.method
    -    operator: eq
    -    value: GET
    -counters:
    -  - auth.identity.username
    -
    - D -
    -when:
    -  - context.request.http.method == "GET"
    -counters:
    -  - auth.identity.username
    -
    - -

    ⭐️ Variation adopted for the examples and (so far) final design proposal.

    -

    Prior art

    -

    Most implementations currently orbiting around Gateway API (e.g. Istio, Envoy Gateway, etc) for added RL functionality seem to have been leaning more to the direct route extension pattern instead of Policy Attachment. That might be an option particularly suitable for gateway implementations (gateway providers) and for those aiming to avoid dealing with defaults and overrides.

    -

    Unresolved questions

    -
      -
    1. In case a limit definition lists route selectors such that some can be bound to HTTPRouteRules and some cannot (see Example 6), do we bind the valid route selectors and ignore the invalid ones or the limit definition is invalid altogether and bound to no HTTPRouteRule at all?
      - A: By allowing multiple limit definitions to target a same HTTPRouteRule, the issue here stated will become less often. For the other cases where a limit definition still fails to select an HTTPRouteRule (e.g. due to mismatching trigger matches), the limit definition is not considered invalid. Possibly the limit definitions is considered "stale" (or "orphan"), i.e., not bound to any HTTPRouteRule.
    2. -
    3. What should we fill domain/namespace with, if no longer with the hostname? This can be useful for multi-tenancy.
      - A: For now, the domain/namespace field of the RL configuration (Envoy and Limitador ends) will be filled with a fixed (configurable) string (e.g. "kuadrant"). This can change in future to better support multi-tenancy and/or other use cases where a total sharding of the limit definitions within a same instance of Kuadrant is desired.
    4. -
    5. How do we support lists of hostnames in Limitador conditions (single counter)? Should we open an issue for a new in operator?
      - A: Not needed. The hostnames must exist in the targeted object explicitly, just like any other routing rules intended to be targeted by a limit definition. By setting the explicit hostname in the targeted network object (Gateway or HTTPRoute), the also becomes a route rules available for "hard" trigger configuration.
    6. -
    7. What "soft" condition operators do we need to support (e.g. eq, neq, exists, nexists, matches)?
    8. -
    9. Do we need special field to define shared counters across clusters/Limitador instances or that's to be solved at another layer (Limitador, Kuadrant CRDs, MCTC)?
    10. -
    -

    Future possibilities

    -
      -
    • Port routeSelectors and the semantics around it to the AuthPolicy API (aka "KAP v2").
    • -
    • Defaults and overrides, either along the lines of architecture#4 or architecture#10.
    • -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/architecture/rfcs/0002-well-known-attributes/index.html b/0.10.0/architecture/rfcs/0002-well-known-attributes/index.html deleted file mode 100644 index 7cbca85cf..000000000 --- a/0.10.0/architecture/rfcs/0002-well-known-attributes/index.html +++ /dev/null @@ -1,4059 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - RFC 0002: Well-known Attributes - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Well-known Attributes

    - -

    Summary

    -

    Define a well-known structure for users to declare request data selectors in their RateLimitPolicies and AuthPolicies. This structure is referred to as the Kuadrant Well-known Attributes.

    -

    Motivation

    -

    The well-known attributes let users write policy rules – conditions and, in general, dynamic values that refer to attributes in the data plane - in a concise and seamless way.

    -

    Decoupled from the policy CRDs, the well-known attributes:

    -
      -
    1. define a common language for referring to values of the data plane in the Kuadrant policies;
    2. -
    3. allow dynamically evolving the policy APIs regarding how they admit references to data plane attributes;
    4. -
    5. encompass all common and component-specific selectors for data plane attributes;
    6. -
    7. have a single and unified specification, although this specification may occasionally link to additional, component-specific, external docs.
    8. -
    -

    Guide-level explanation

    -

    One who writes a Kuadrant policy and wants to build policy constructs such as conditions, qualifiers, variables, etc, based on dynamic values of the data plane, must refer the attributes that carry those values, using the declarative language of Kuadrant's Well-known Attributes.

    -

    A dynamic data plane value is typically a value of an attribute of the request or an Envoy Dynamic Metadata entry. It can be a value of the outer request being handled by the API gateway or proxy that is managed by Kuadrant ("context request") or an attribute of the direct request to the Kuadrant component that delivers the functionality in the data plane (rate-limiting or external auth).

    -

    A Well-known Selector is a construct of a policy API whose value contains a direct reference to a well-known attribute. The language of the well-known attributes and therefore what one would declare within a well-known selector resembles a JSON path for navigating a possibly complex JSON object.

    -

    Example 1. Well-known selector used in a condition

    -
    apiGroup: examples.kuadrant.io
    -kind: PaintPolicy
    -spec:
    -  rules:
    -
    -  - when:
    -    - selector: auth.identity.group
    -      operator: eq
    -      value: admin
    -    color: red
    -
    -

    In the example, auth.identity.group is a well-known selector of an attribute group, known to be injected by the external authorization service (auth) to describe the group the user (identity) belongs to. In the data plane, whenever this value is equal to admin, the abstract PaintPolicy policy states that the traffic must be painted red.

    -

    Example 2. Well-known selector used in a variable

    -
    apiGroup: examples.kuadrant.io
    -kind: PaintPolicy
    -spec:
    -  rules:
    -
    -  - color: red
    -    alpha:
    -      dynamic: request.headers.x-color-alpha
    -
    -

    In the example, request.headers.x-color-alpha is a selector of a well-known attribute request.headers that gives access to the headers of the context HTTP request. The selector retrieves the value of the x-color-alpha request header to dynamically fill the alpha property of the abstract PaintPolicy policy at each request.

    -

    Reference-level explanation

    -

    The Well-known Attributes are a compilation inspired by some of the Envoy attributes and Authorino's Authorization JSON and its related JSON paths.

    -

    From the Envoy attributes, only attributes that are available before establishing connection with the upstream server qualify as a Kuadrant well-known attribute. This excludes attributes such as the response attributes and the upstream attributes.

    -

    As for the attributes inherited from Authorino, these are either based on Envoy's AttributeContext type of the external auth request API or from internal types defined by Authorino to fulfill the Auth Pipeline.

    -

    These two subsets of attributes are unified into a single set of well-known attributes. For each attribute that exists in both subsets, the name of the attribute as specified in the Envoy attributes subset prevails. Example of such is request.id (to refer to the ID of the request) superseding context.request.http.id (as the same attribute is referred in an Authorino AuthConfig).

    -


    -

    The next sections specify the well-known attributes organized in the following groups:

    - -

    Request attributes

    -

    The following attributes are related to the context HTTP request that is handled by the API gateway or proxy managed by Kuadrant.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Attribute

    Type

    Description

    Auth

    RL

    request.id

    String

    Request ID corresponding to x-request-id header value

    request.time

    Timestamp

    Time of the first byte received

    request.protocol

    String

    Request protocol (“HTTP/1.0”, “HTTP/1.1”, “HTTP/2”, or “HTTP/3”)

    request.scheme

    String

    The scheme portion of the URL e.g. “http”

    request.host

    String

    The host portion of the URL

    request.method

    String

    Request method e.g. “GET”

    request.path

    String

    The path portion of the URL

    request.url_path

    String

    The path portion of the URL without the query string

    request.query

    String

    The query portion of the URL in the format of “name1=value1&name2=value2”

    request.headers

    Map<String, String>

    All request headers indexed by the lower-cased header name

    request.referer

    String

    Referer request header

    request.useragent

    String

    User agent request header

    request.size

    Number

    The HTTP request size in bytes. If unknown, it must be -1

    request.body

    String

    The HTTP request body. (Disabled by default. Requires additional proxy configuration to enabled it.)

    request.raw_body

    Array<Number>

    The HTTP request body in bytes. This is sometimes used instead of body depending on the proxy configuration.

    request.context_extensions

    Map<String, String>

    This is analogous to request.headers, however these contents are not sent to the upstream server. It provides an extension mechanism for sending additional information to the auth service without modifying the proto definition. It maps to the internal opaque context in the proxy filter chain. (Requires additional configuration in the proxy.)

    - -

    Connection attributes

    -

    The following attributes are available once the downstream connection with the API gateway or proxy managed by Kuadrant is established. They apply to HTTP requests (L7) as well, but also to proxied connections limited at L3/L4.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Attribute

    Type

    Description

    Auth

    RL

    source.address

    String

    Downstream connection remote address

    source.port

    Number

    Downstream connection remote port

    source.service

    String

    The canonical service name of the peer

    source.labels

    Map<String, String>

    The labels associated with the peer. These could be pod labels for Kubernetes or tags for VMs. The source of the labels could be an X.509 certificate or other configuration.

    source.principal

    String

    The authenticated identity of this peer. If an X.509 certificate is used to assert the identity in the proxy, this field is sourced from “URI Subject Alternative Names“, “DNS Subject Alternate Names“ or “Subject“ in that order. The format is issuer specific – e.g. SPIFFE format is spiffe://trust-domain/path, Google account format is https://accounts.google.com/{userid}.

    source.certificate

    String

    The X.509 certificate used to authenticate the identify of this peer. When present, the certificate contents are encoded in URL and PEM format.

    destination.address

    String

    Downstream connection local address

    destination.port

    Number

    Downstream connection local port

    destination.service

    String

    The canonical service name of the peer

    destination.labels

    Map<String, String>

    The labels associated with the peer. These could be pod labels for Kubernetes or tags for VMs. The source of the labels could be an X.509 certificate or other configuration.

    destination.principal

    String

    The authenticated identity of this peer. If an X.509 certificate is used to assert the identity in the proxy, this field is sourced from “URI Subject Alternative Names“, “DNS Subject Alternate Names“ or “Subject“ in that order. The format is issuer specific – e.g. SPIFFE format is spiffe://trust-domain/path, Google account format is https://accounts.google.com/{userid}.

    destination.certificate

    String

    The X.509 certificate used to authenticate the identify of this peer. When present, the certificate contents are encoded in URL and PEM format.

    connection.id

    Number

    Downstream connection ID

    connection.mtls

    Boolean

    Indicates whether TLS is applied to the downstream connection and the peer ceritificate is presented

    connection.requested_server_name

    String

    Requested server name in the downstream TLS connection

    connection.tls_session.sni

    String

    SNI used for TLS session

    connection.tls_version

    String

    TLS version of the downstream TLS connection

    connection.subject_local_certificate

    String

    The subject field of the local certificate in the downstream TLS connection

    connection.subject_peer_certificate

    String

    The subject field of the peer certificate in the downstream TLS connection

    connection.dns_san_local_certificate

    String

    The first DNS entry in the SAN field of the local certificate in the downstream TLS connection

    connection.dns_san_peer_certificate

    String

    The first DNS entry in the SAN field of the peer certificate in the downstream TLS connection

    connection.uri_san_local_certificate

    String

    The first URI entry in the SAN field of the local certificate in the downstream TLS connection

    connection.uri_san_peer_certificate

    String

    The first URI entry in the SAN field of the peer certificate in the downstream TLS connection

    connection.sha256_peer_certificate_digest

    String

    SHA256 digest of the peer certificate in the downstream TLS connection if present

    - -

    Metadata and filter state attributes

    -

    The following attributes are related to the Envoy proxy filter chain. They include metadata exported by the proxy throughout the filters and information about the states of the filters themselves.

    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Attribute

    Type

    Description

    Auth

    RL

    metadata

    Metadata

    Dynamic request metadata

    filter_state

    Map<String, String>

    Mapping from a filter state name to its serialized string value

    - -

    Auth attributes

    -

    The following attributes are exclusive of the external auth service (Authorino).

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Attribute

    Type

    Description

    Auth

    RL

    auth.identity

    Any

    Single resolved identity object, post-identity verification

    auth.metadata

    Map<String, Any>

    External metadata fetched

    auth.authorization

    Map<String, Any>

    Authorization results resolved by each authorization rule, access granted only

    auth.response

    Map<String, Any>

    Response objects exported by the auth service post-access granted

    auth.callbacks

    Map<String, Any>

    Response objects returned by the callback requests issued by the auth service

    - -

    The auth service also supports modifying selected values by chaining modifiers in the path.

    -

    Rate-limit attributes

    -

    The following attributes are exclusive of the rate-limiting service (Limitador).

    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Attribute

    Type

    Description

    Auth

    RL

    ratelimit.domain

    String

    The rate limit domain. This enables the configuration to be namespaced per application (multi-tenancy).

    ratelimit.hits_addend

    Number

    Specifies the number of hits a request adds to the matched limit. Fixed value: `1`. Reserved for future usage.

    - -

    Drawbacks

    -

    The decoupling of the well-known attributes and the language of well-known attributes and selectors from the individual policy CRDs is what makes it somewhat flexible and common across the components (rate-limiting and auth). However, it's less structured and it introduces another syntax for users to get familiar with.

    -

    This additional language competes with the language of the route selectors (RFC 0001), based on Gateway API's HTTPRouteMatch type.

    -

    Being "soft-coded" in the policy specs (as opposed to a hard-coded sub-structure inside of each policy type) does not mean it's completely decoupled from implementation in the control plane and/or intermediary data plane components. Although many attributes can be supported almost as a pass-through, from being used in a selector in a policy, to a corresponding value requested by the wasm-shim to its host, that is not always the case. Some translation may be required for components not integrated via wasm-shim (e.g. Authorino), as well as for components integrated via wasm-shim (e.g. Limitador) in special cases of composite or abstraction well-known attributes (i.e. attributes not available as-is via ABI, e.g. auth.identity in a RLP). Either way, some validation of the values introduced by users in the selectors may be needed at some point in the control plane, thus requiring arguably a level of awaresness and coupling between the well-known selectors specification and the control plane (policy controllers) or intermediary data plane (wasm-shim) components.

    -

    Rationale and alternatives

    -

    As an alternative to JSON path-like selectors based on a well-known structure that induces the proposed language of well-known attributes, these same attributes could be defined as sub-types of each policy CRD. The Golang packages defining the common attributes across CRDs could be shared by the policy type definitions to reduce repetition. However, that approach would possibly involve a staggering number of new type definitions to cover all the cases for all the groups of attributes to be supported. These are constructs that not only need to be understood by the policy controllers, but also known by the user who writes a policy.

    -

    Additionally, all attributes, including new attributes occasionally introduced by Envoy and made available to the wasm-shim via ABI, would always require translation from the user-level abstraction how it's represented in a policy, to the actual form how it's used in the wasm-shim configuration and Authorino AuthConfigs.

    -

    Not implementing this proposal and keeping the current state of things mean little consistency between these common constructs for rules and conditions on how they are represented in each type of policy. This lack of consistency has a direct impact on the overhead faced by users to learn how to interact with Kuadrant and write different kinds of policies, as well as for the maintainers on tasks of coding for policy validation and reconciliation of data plane configurations.

    -

    Prior art

    -

    Authorino's dynamic JSON paths, related to Authorino's Authorization JSON and used in when conditions and inside of multiple other constructs of the AuthConfig, are an example of feature of very similar approach to the one proposed here.

    -

    Arguably, Authorino's perceived flexibility would not have been possible with the Authorization JSON selectors. Users can write quite sophisticated policy rules (conditions, variable references, etc) by leveraging the those dynamic selectors. Because they are backed by JSON-based machinery in the code, Authorino's selectors have very little to, in some cases, none at all variation compared Open Policy Agent's Rego policy language, which is often used side by side in the same AuthConfigs.

    -

    Authorino's Authorization JSON selectors are, in one hand, more restrict to the structure of the CheckRequest payload (context.* attributes). At the same time, they are very open in the part associated with the internal attributes built along the Auth Pipeline (i.e. auth.* attributes). That makes Authorino's Authorization JSON selectors more limited, compared to the Envoy attributes made available to the wasm-shim via ABI, but also harder to validate. In some cases, such as of deep references to inside objects fetched from external sources of metadata, resolved OPA objects, JWT claims, etc, it is impossible to validate for correct references.

    -

    Another experience learned from Authorino's Authorization JSON selectors is that they depend substantially on the so-called "modifiers". Many use cases involving parsing and breaking down attributes that are originally available in a more complex form would not be possible without the modifiers. Examples of such cases are: extracting portions of the path and/or query string parameters (e.g. collection and resource identifiers), applying translations on HTTP verbs into corresponding operations, base64-decoding values from the context HTTP request, amongst several others.

    -

    Unresolved questions

    -
      -
    1. -

      How to deal with the differences regarding the availability and data types of the attributes across clients/hosts?

      -
    2. -
    3. -

      Can we make more attributes that are currently available to only one of the components common to both?

      -
    4. -
    5. -

      Will we need some kind of global support for modifiers (functions) in the well-known selectors or those can continue to be an Authorino-only feature?

      -
    6. -
    7. -

      Does Authorino, which is more strict regarding the data structure that induces the selectors, need to implement this specification or could/should it keep its current selectors and a translation be performed by the AuthPolicy controller?

      -
    8. -
    -

    Future possibilities

    -
      -
    1. Extend with more well-known attributes that abstract common patterns and/or for rather opinioned use cases. Examples:
    2. -
    3. auth.* attributes supported in the rate limit service
    4. -
    5. request.authenticated
    6. -
    7. request.operation.(read|write)
    8. -
    9. request.param.my-param
    10. -
    11. -

      connection.secure

      -
    12. -
    13. -

      Other Envoy attributes

      -
    14. -
    -
    - Wasm attributes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Attribute

    Type

    Description

    Auth

    RL

    wasm.plugin_name

    String

    Plugin name

    wasm.plugin_root_id

    String

    Plugin root ID

    wasm.plugin_vm_id

    String

    Plugin VM ID

    wasm.node

    Node

    Local node description

    wasm.cluster_name

    String

    Upstream cluster name

    wasm.cluster_metadata

    Metadata

    Upstream cluster metadata

    wasm.listener_direction

    Number

    Enumeration value of the listener traffic direction

    wasm.listener_metadata

    Metadata

    Listener metadata

    wasm.route_name

    String

    Route name

    wasm.route_metadata

    Metadata

    Route metadata

    wasm.upstream_host_metadata

    Metadata

    Upstream host metadata

    -
    - -
    - Proxy configuration attributes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Attribute

    Type

    Description

    Auth

    RL

    xds.cluster_name

    String

    Upstream cluster name

    xds.cluster_metadata

    Metadata

    Upstream cluster metadata

    xds.route_name

    String

    Route name

    xds.route_metadata

    Metadata

    Route metadata

    xds.upstream_host_metadata

    Metadata

    Upstream host metadata

    xds.filter_chain_name

    String

    Listener filter chain name

    -
    - -
      -
    1. Add some support for value modifiers (functions), along the lines of Authorino's JSON path modifiers and/or Envoy attributes' path expressions.
    2. -
    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/architecture/rfcs/0003-dns-policy-assets/DNSRecordStructure/index.html b/0.10.0/architecture/rfcs/0003-dns-policy-assets/DNSRecordStructure/index.html deleted file mode 100644 index 06c85870a..000000000 --- a/0.10.0/architecture/rfcs/0003-dns-policy-assets/DNSRecordStructure/index.html +++ /dev/null @@ -1,3595 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - DNSRecordStructure - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    DNSRecordStructure

    - -

    DNSRecord is our API for expressing DNS endpoints via a kube CRD based API. It is managed by the multi-cluster gateway controller based on the desired state expressed in higher level APIs such as the Gateway or a DNSPolicy. In order to provide our feature set, we need to carefully consider how we structure our records and the types of records we need. This document proposes a particular structure based on the requirements and feature set we have.

    -

    Requirements

    -

    We want to be able to support Gateway definitions that use the following listener definitions:

    -
      -
    • wildcard: *.example.com and fully qualified listener host www.example.com definitions with the notable exception of fully wildcarded ie * as we cannot provide any DNS or TLS for something with no defined hostname.
    • -
    • listeners that have HTTPRoute defined on less than all the clusters where the listener is available. IE we don't want to send traffic to clusters where there is no HTTPRoute attached to the listener.
    • -
    • Gateway instances that provide IPs that are deployed alongside instances on different infra that provide host names causing the addresses types on each of gateway instance to be different (IPAddress or HostAddress).
    • -
    • We want to provide GEO based DNS as a feature of DNSPolicy and so our DNSRecord structure must support this.
    • -
    • We want to offer default weighted and custom weighted DNS as part of DNSPolicy
    • -
    • We want to allow root or apex domain to be used as listener hosts
    • -
    -

    Diagram

    -

    https://lucid.app/lucidchart/2f95c9c9-8ddf-4609-af37-48145c02ef7f/edit?viewport_loc=-188%2C-61%2C2400%2C1183%2C0_0&invitationId=inv_d5f35eb7-16a9-40ec-b568-38556de9b568

    -

    Proposal

    -

    For each listener defined in a gateway, we will create a set of records with the following rules.

    -

    none apex domain:

    -

    We will have a generated lb (load balancer) dns name that we will use as a CNAME for the listener hostname. This DNS name is not intended for use within a HTTPRoute but is instead just a DNS construct. This will allow us to set up additional CNAME records for that DNS name in the future that are returned based a GEO location. These DNS records will also be CNAMES pointing to specific gateway dns names, this will allow us to setup a weighted response. So the first layer CNAME handles balancing based on geo, the second layer handles balancing based on weighting.

    -
                                            shop.example.com
    -                                        |             |
    -                                      (IE)          (AUS)
    -                                CNAME lb.shop..      lb.shop..
    -                                    |     |         |      |
    -                                 (w 100) (w 200)   (w 100) (w100)
    -                                CNAME g1.lb.. g2.lb..   g3.lb..  g4.lb..
    -                                A 192..   A 81..  CNAME  aws.lb   A 82..
    -
    -

    When there is no geo strategy defined within the DNSPolicy, we will put everything into a default geo (IE a catch-all record) default.lb-{guid}.{listenerHost} but set the routing policy to GEO allowing us to add more geo based records in the future if the gateway admin decides to move to a geo strategy as their needs grow.

    -

    To ensure this lb dns name is unique and does not clash we will use a short guid as part of the subdomain so lb-{guid}.{listenerHost}. this guid will be based on the gateway name and gateway namespace in the control plane.

    -

    For a geo strategy we will add a geo record with a prefix to the lb subdomain based on the geo code. When there is no geo we will use default as the prefix. {geo-code}.lb-{guid}.{listenerHost}. -Finally, for each gateway instance on a target cluster we will add a {spokeClusterName}.lb-{guid}.{listenerHost}

    -

    To allow for a mix of hostname and IP address types, we will always use a CNAME . So we will create a dns name for IPAddress with the following structure: {guid}.lb-{guid}.{listenerHost} where the first guid will be based on the cluster name where the gateway is placed.

    -

    Apex Domains

    -

    An apex domain is the domain at the apex or root of a zone. These are handled differently by DNS as they often have NS and SOA records. Generally it is not possible to set up a CNAME for apex domain (although some providers allow it).

    -

    If a listener is added to a gateway that is an apex domain, we can only add A records for that domain to keep ourselves compliant with as many providers as possible. -If a listener is the apex domain, we will setup A records for that domain (favouring gateways with an IP address or resolving the IP behind a host) but there will be no special balancing/weighting done. Instead, we will expect that the owner of that will setup a HTTPRoute with a 301 permanent redirect sending users from the apex domain e.g. example.com to something like: www.example.com where the www subdomain based listener would use the rules of the none apex domains and be where advanced geo and weighted strategies are applied.

    -
      -
    • gateway listener host name : example.com
        -
      • example.com A 81.17.241.20
      • -
      -
    • -
    -

    Geo Agnostic (everything is in a default * geo catch all)

    -

    This is the type of DNS Record structure that would back our default DNSPolicy.

    -
      -
    • -

      gateway listener host name : www.example.com

      -

      DNSRecords:

      -
        -
      • www.example.com CNAME lb-1ab1.www.example.com
      • -
      • lb-1ab1.www.example.com CNAME geolocation * default.lb-1ab1.www.example.com
      • -
      • default.lb-1ab1.www.example.com CNAME weighted 100 1bc1.lb-1ab1.www.example.com
      • -
      • default.lb-1ab1.www.example.com CNAME weighted 100 aws.lb.com
      • -
      • 1bc1.lb-1ab1.www.example.com A 192.22.2.1
      • -
      -
    • -
    -

    So in the above example working up from the bottom, we have a mix of hostname and IP based addresses for the gateway instance. We have 2 evenly weighted records that balance between the two available gateways, then next we have the geo based record that is set to a default catch all as no geo has been specified then finally we have the actual listener hostname that points at our DNS based load balancer name.

    -

    DNSRecord Yaml

    -
    apiVersion: kuadrant.io/v1alpha1
    -kind: DNSRecord
    -metadata:
    -  name: {gateway-name}-{listenerName}
    -  namespace: multi-cluster-gateways
    -spec:
    -  dnsName: www.example.com
    -  managedZone:
    -    name: mgc-dev-mz
    -  endpoints:
    -
    -    - dnsName: www.example.com
    -      recordTTL: 300
    -      recordType: CNAME
    -      targets:
    -        - lb-1ab1.www.example.com
    -    - dnsName: lb-1ab1.www.example.com
    -      recordTTL: 300
    -      recordType: CNAME
    -      setIdentifier: mygateway-multicluster-gateways
    -      providerSpecific:
    -        - name: "geolocation-country-code"
    -          value: "*"
    -      targets:
    -        - default.lb-1ab1.www.example.com
    -    - dnsName: default.lb-1ab1.www.example.com
    -      recordTTL: 300
    -      recordType: CNAME
    -      setIdentifier: cluster1
    -      providerSpecific:
    -        - name: "weight"
    -          value: "100"
    -      targets:
    -        - 1bc1.lb-1ab1.www.example.com
    -    - dnsName: default.lb-a1b2.shop.example.com
    -      recordTTL: 300
    -      recordType: CNAME
    -      setIdentifier: cluster2
    -      providerSpecific:
    -        - name: "weight"
    -          value: "100"
    -      targets:
    -        - aws.lb.com
    -    - dnsName: 1bc1.lb-1ab1.www.example.com
    -      recordTTL: 60
    -      recordType: A
    -      targets:
    -        - 192.22.2.1
    -
    -

    geo specific

    -

    Once the end user selects to use a geo strategy via the DNSPolicy, we then need to restructure our DNS to add in our geo specific records. Here the default record

    -

    lb short code is {gw name + gw namespace} -gw short code is {cluster name}

    -
      -
    • -

      gateway listener host : shop.example.com

      -

      DNSRecords:

      -
        -
      • shop.example.com CNAME lb-a1b2.shop.example.com
      • -
      • lb-a1b2.shop.example.com CNAME geolocation ireland ie.lb-a1b2.shop.example.com
      • -
      • lb-a1b2.shop.example.com geolocation australia aus.lb-a1b2.shop.example.com
      • -
      • lb-a1b2.shop.example.com geolocation default ie.lb-a1b2.shop.example.com (set by the default geo option)
      • -
      • ie.lb-a1b2.shop.example.com CNAME weighted 100 ab1.lb-a1b2.shop.example.com
      • -
      • ie.lb-a1b2.shop.example.com CNAME weighted 100 aws.lb.com
      • -
      • aus.lb-a1b2.shop.example.com CNAME weighted 100 ab2.lb-a1b2.shop.example.com
      • -
      • aus.lb-a1b2.shop.example.com CNAME weighted 100 ab3.lb-a1b2.shop.example.com
      • -
      • ab1.lb-a1b2.shop.example.com A 192.22.2.1 192.22.2.5
      • -
      • ab2.lb-a1b2.shop.example.com A 192.22.2.3
      • -
      • ab3.lb-a1b2.shop.example.com A 192.22.2.4
      • -
      -
    • -
    -

    In the above example we move from a default catch all to geo specific setup. Based on a DNSPolicy that specifies IE as the default geo location. We leave the default subdomain in place to allow for clients that may still be using that and set up geo specific subdomains that allow us to route traffic based on its origin. In this example we are load balancing across 2 geos and 4 clusters

    -

    WildCards

    -

    In the examples we have used fully qualified domain names, however sometimes it may be required to use a wildcard subdomain. example:

    -
      -
    • gateway listener host : *.example.com
    • -
    -

    To support these we need to change the name of the DNSRecord away from the name of the listener as the k8s resource does not allow * in the name.

    -

    To do this we will set the dns record resource name to be a combination of {gateway-name}-{listenerName}

    -

    to keep a record of the host this is for we will set a top level property named dnsName. You can see an example in the DNSRecord above.

    -

    Pros

    -

    This setup allows us a powerful set of features and flexibility

    -

    Cons

    -

    With this CNAME based approach we are increasing the number of DNS lookups required to get to an IP which will increase the cost and add a small amount of latency. To counteract this, we will set a reasonably high TTL (at least 5 mins) for our CNAMES and (2 mins) for A records

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/architecture/rfcs/0003-dns-policy/index.html b/0.10.0/architecture/rfcs/0003-dns-policy/index.html deleted file mode 100644 index 2c3b57534..000000000 --- a/0.10.0/architecture/rfcs/0003-dns-policy/index.html +++ /dev/null @@ -1,3570 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - RFC 0003: DNSPolicy - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    RFC Template

    - -

    Summary

    -

    Provide a policy for configuring how DNS should be handed for a given gateway. Provide a mechanism for enabling DNS based load balancing.

    -

    Motivation

    -

    Gateway admins, need a way to define the DNS policy for a multi-cluster gateway in order to control how much and which traffic reaches these gateways. -Ideally we would allow them to express a strategy that they want to use without needing to get into the details of each provider and needing to create and maintain dns record structure and individual records for all the different gateways that may be within their infrastructure.

    -

    Guide-level explanation

    -

    Allow definition of a DNSPolicy that configures load balancing to decide how traffic should be distributed across multiple gateway instances from the central control plane.

    -

    Terms

    -
      -
    • managed listener: This is a listener with a host backed by a DNS zone managed by the multi-cluster gateway controller
    • -
    • hub cluster: control plane cluster that managed 1 or more spokes
    • -
    • spoke cluster: a cluster managed by the hub control plane cluster. This is where gateway are instantiated
    • -
    -

    Provide a control plane DNSPolicy API that uses the idea of direct policy attachment from gateway API that allows a load balancing strategy to be applied to the DNS records structure for any managed listeners being served by the data plane instances of this gateway. -The DNSPolicy also covers health checks that inform the DNS response but that is not covered in this document.

    -

    Below is a draft API for what we anticipate the DNSPolicy to look like

    -
    apiVersion: kuadrant.io/v1alpha1
    -kind: DNSPolicy
    -spec:
    -  targetRef: # defaults to gateway gvk and current namespace
    -    name: gateway-name
    -  health:
    -   ...
    -  loadBalancing:
    -    weighted:
    -     defaultWeight: 10
    -     custom: #optional
    -
    -     - value: AWS  #optional with both GEO and weighted. With GEO the custom weight is applied to gateways within a Geographic region
    -       weight: 10
    -     - value: GCP
    -       weight: 20
    -    GEO: #optional
    -      defaultGeo: IE # required with GEO. Chooses a default DNS response when no particular response is defined for a request from an unknown GEO.
    -
    -

    Available Load Balancing Strategies

    -

    GEO and Weighted load balancing are well understood strategies and this API effectively allow a complex requirement to be expressed relatively simply and executed by the gateway controller in the chosen DNS provider. Our default policy will execute a "Round Robin" weighted strategy which reflects the current default behaviour.

    -

    With the above API we can provide weighted and GEO and weighted within a GEO. A weighted strategy with a minimum of a default weight is always required and the simplest type of policy. The multi-cluster gateway controller will set up a default policy when a gateway is discovered (shown below). This policy can be replaced or modified by the user. A weighted strategy can be complimented with a GEO strategy IE they can be used together in order to provide a GEO and weighted (within a GEO) load balancing. By defining a GEO section, you are indicating that you want to use a GEO based strategy (how this works is covered below).

    -
    apiVersion: kuadrant.io/v1alpha1
    -kind: DNSPolicy
    -name: default-policy
    -spec:
    -  targetRef: # defaults to gateway gvk and current namespace
    -    name: gateway-name
    -  loadBalancing:
    -    weighted: # required
    -     defaultWeight: 10  #required, all records created get this weight
    -  health:
    -   ...   
    -
    -

    In order to provide GEO based DNS and allow customisation of the weighting, we need some additional information to be provided by the gateway / cluster admin about where this gateway has been placed. For example if they want to use GEO based DNS as a strategy, we need to know what GEO identifier(s) to use for each record we create and a default GEO to use as a catch-all. Also, if the desired load balancing approach is to provide custom weighting and no longer simply use Round Robin, we will need a way to identify which records to apply that custom weighting to based on the clusters the gateway is placed on.

    -

    To solve this we will allow two new attributes to be added to the ManagedCluster resource as labels:

    -
       kuadrant.io/lb-attribute-geo-code: "IE"
    -   kuadrant.io/lb-attribute-custom-weight: "GCP"
    -
    -

    These two labels allow setting values in the DNSPolicy that will be reflected into DNS records for gateways placed on that cluster depending on the strategies used. (see the first DNSPolicy definition above to see how these values are used) or take a look at the examples at the bottom.

    -

    example : -

    apiVersion: cluster.open-cluster-management.io/v1
    -kind: ManagedCluster
    -metadata:
    - labels:
    -   kuadrant.io/lb-attribute-geo-code: "IE"
    -   kuadrant.io/lb-attribute-custom-weight: "GCP"
    -spec:    
    -

    -

    The attributes provide the key and value we need in order to understand how to define records for a given LB address based on the DNSPolicy targeting the gateway.

    -

    The kuadrant.io/lb-attribute-geo-code attribute value is provider specific, using an invalid code will result in an error status condition in the DNSrecord resource.

    -

    DNS Record Structure

    -

    This is an advanced topic and so is broken out into its own proposal doc DNS Record Structure

    -

    Custom Weighting

    -

    Custom weighting will use the associated custom-weight attribute set on the ManagedCluster to decide which records should get a specific weight. The value of this attribute is up to the end user.

    -

    example:

    -
    apiVersion: cluster.open-cluster-management.io/v1
    -kind: ManagedCluster
    -metadata:
    - labels:
    -   kuadrant.io/lb-attribute-custom-weight: "GCP"
    -
    -

    The above is then used in the DNSPolicy to set custom weights for the records associated with the target gateway.

    -
        - value: GCP
    -      weight: 20
    -
    -

    So any gateway targeted by a DNSPolicy with the above definition that is placed on a ManagedCluster with the kuadrant.io/lb-attribute-custom-weight set with a value of GCP will get an A record with a weight of 20

    -

    Status

    -

    DNSPolicy should have a ready condition that reflect that the DNSRecords have been created and configured as expected. In the case that there is an invalid policy, the status message should reflect this and indicate to the user that the old DNS has been preserved.

    -

    We will also want to add a status condition to the gateway status indicating it is effected by this policy. Gateway API recommends the following status condition

    -
    - type: gateway.networking.k8s.io/PolicyAffected
    -  status: True 
    -  message: "DNSPolicy has been applied"
    -  reason: PolicyApplied
    -  ...
    -
    -

    https://github.com/kubernetes-sigs/gateway-api/pull/2128/files#diff-afe84021d0647e83f420f99f5d18b392abe5ec82d68f03156c7534de9f19a30aR888

    -

    Example Policies

    -

    Round Robin (the default policy)

    -
    apiVersion: kuadrant.io/v1alpha1
    -kind: DNSPolicy
    -name: RoundRobinPolicy
    -spec:
    -  targetRef: # defaults to gateway gvk and current namespace
    -    name: gateway-name
    -  loadBalancing:
    -    weighted:
    -     defaultWeight: 10
    -
    -

    GEO (Round Robin)

    -
    apiVersion: kuadrant.io/v1alpha1
    -kind: DNSPolicy
    -name: GEODNS
    -spec:
    -  targetRef: # defaults to gateway gvk and current namespace
    -    name: gateway-name
    -  loadBalancing:
    -    weighted:
    -     defaultWeight: 10
    -    GEO:
    -     defaultGeo: IE
    -
    -

    Custom

    -
    apiVersion: kuadrant.io/v1alpha1
    -kind: DNSPolicy
    -name: SendMoreToAzure
    -spec:
    -  targetRef: # defaults to gateway gvk and current namespace
    -    name: gateway-name
    -  loadBalancing:
    -    weighted:
    -     defaultWeight: 10
    -     custom:
    -
    -     - attribute: cloud
    -       value: Azure #any record associated with a gateway on a cluster without this value gets the default
    -       weight: 30
    -
    -

    GEO with Custom Weights

    -
    apiVersion: kuadrant.io/v1alpha1
    -kind: DNSPolicy
    -name: GEODNSAndSendMoreToAzure
    -spec:
    -  targetRef: # defaults to gateway gvk and current namespace
    -    name: gateway-name
    -  loadBalancing:
    -    weighted:
    -     defaultWeight: 10
    -     custom:
    -
    -     - attribute: cloud
    -       value: Azure
    -       weight: 30
    -    GEO:
    -      defaultGeo: IE
    -
    -

    Reference-level explanation

    -
      -
    • Add a DNSPolicy CRD that conforms to policy attachment spec
    • -
    • Add a new DNSPolicy controller to MCG
    • -
    • DNS logic and record management should all migrate out of the gateway controller into this new DNSPolicy controller as it is the responsibility and domain of the DNSPolicy controller to manage DNS
    • -
    • remove the Hosts interface as we want do not want other controllers using this to bring DNS Logic into other areas of the code.
    • -
    -

    Drawbacks

    -

    You cannot have a different load balancing strategy for each listener within a gateway. So in the following gateway definition

    -
    spec:
    -    gatewayClassName: kuadrant-multi-cluster-gateway-instance-per-cluster
    -    listeners:
    -
    -    - allowedRoutes:
    -        namespaces:
    -          from: All
    -      hostname: myapp.hcpapps.net
    -      name: api
    -      port: 443
    -      protocol: HTTPS
    -    - allowedRoutes:
    -        namespaces:
    -          from: All
    -      hostname: other.hcpapps.net
    -      name: api
    -      port: 443
    -      protocol: HTTPS      
    -
    -

    The DNS policy targeting this gateway will apply to both myapp.hcpapps.net and other.hcpapps.net

    -

    However, there is still significant value even with this limitation. This limitation is something we will likely revisit in the future

    -

    Background Docs

    -

    DNS Provider Support

    -

    Direct Policy Attachment

    -

    Rationale and alternatives

    -

    An alternative is to configure all of this yourself manually in a dns provider. This can be a highly complex dns configuration that it would be easy to get wrong.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/architecture/rfcs/0004-policy-status-assets/policy_status_1.png b/0.10.0/architecture/rfcs/0004-policy-status-assets/policy_status_1.png deleted file mode 100644 index 6732aa0a6a90ebfe877962c11fde32ecb9628a5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18956 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 z 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 diff --git a/0.10.0/architecture/rfcs/0004-policy-status-assets/policy_status_2.png b/0.10.0/architecture/rfcs/0004-policy-status-assets/policy_status_2.png deleted file mode 100644 index ec42f0080668926cdcf627a86b29437563eed7f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27708 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%0Alj_;-<6R@K>62kH!v| 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 diff --git a/0.10.0/architecture/rfcs/0004-policy-status-assets/policy_status_4.png b/0.10.0/architecture/rfcs/0004-policy-status-assets/policy_status_4.png deleted file mode 100644 index cd173ea863fb8aa3f55831a3694590a61b22696d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76260 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

    73R;*AJ?n2Q#;ePKj%@Q>!v2BE$6hq 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 T-ExSOG;VESZ(e@d>-+x(|0j(} diff --git a/0.10.0/architecture/rfcs/0004-policy-status-assets/policy_status_5.png b/0.10.0/architecture/rfcs/0004-policy-status-assets/policy_status_5.png deleted file mode 100644 index 7169cdd696c9fd9e53bcea27f66dca6046e9097f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81655 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 - - - - - - - - - - - - - - - - - - - - - - - RFC 0004: Policy Status - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Policy Status

    - -

    Summary

    -

    This RFC proposes a new design for any Kuadrant Policy (RateLimitPolicy, AuthPolicy, etc..) status definition and transitions.

    -

    Motivation

    -

    At the time being, the RateLimitPolicy and AuthPolicy status doesn't clearly and truthfully communicate the actual state of -reconciliation and healthiness with its operator managed services, i.e., the Rate Limit service ("Limitador") and -the Auth service ("Authorino"), referred to as "Kuadrant services".

    -

    As a consequence, misleading information is shared causing unexpected errors and flawed assumptions.

    -

    The following are some issues reported in relation to the aforementioned problems:

    -
      -
    • https://github.com/Kuadrant/kuadrant-operator/issues/87
    • -
    • https://github.com/Kuadrant/kuadrant-operator/issues/96
    • -
    • https://github.com/Kuadrant/kuadrant-operator/issues/140
    • -
    -

    Guide-level explanation

    -

    This design for setting the status of the Kuadrant policy CRs is divided in 2 stages, where each stage could be -applied/developed in order and would reflect valuable and accurate information with different degrees of acuity.

    -

    The Policy CRD Status in the following diagrams are simplified as states, which in the -Reference-level explanation will be translated to the actual Status Conditions.

    -

    Stage 1

    -

    State of the policy CR defined by: application, validation, and reconciliation of it

    -

    The main signalization at Stage 1 is about whether a policy CR has been Accepted or not.

    -

    States rationale:

    -
      -
    • Accepted: This state is reached after the Validation and Reconciliation event has being successfully passed.
    • -
    • Invalid: When the Validation process encounters an error, this state will be set.
    • -
    • TargetNotFound: This state will be set when the Reconciliation process encounters an error.
    • -
    • Conflicted: This state will be set when the Reconciliation process encounters an error.
    • -
    -

    -

    Notes:

    -
      -
    • States from the Stage 2 could be implemented as well, but only relying on Validation and Reconciliation events.
    • -
    -

    Stage 2

    -

    Final state of the policy CR defined by: health check with the Kuadrant services (post-reconciliation)

    -

    The Enforced type is introduced to capture the difference between a policy been reconciled and it's been enforced -at the service.

    -

    States rationale:

    -
      -
    • Enforced: After a successful response of the Service Probe, this states communicates the policy is finally enforced.
    • -
    • PartiallyEnforced: This state will be set when the Reconciliation event encounters an overlap with other policies.
    • -
    • Overridden: This state will be set when the Reconciliation event invalidates the policy because another one takes precedence.
    • -
    -

    -

    Reference-level explanation

    -

    In general, the new states and conditions align with GEP-713.

    -

    Besides the proposed Accepted PolicyType, the Enforced PolicyType would be added to reflect the final state of -the policy, which means that the policy is showing the synced actual state of the Kuadrant services.

    -

    The missing Failed PolicyType would be implicitly represented by the TargetNotFound and Invalid PolicyTypeReason.

    -

    Conditions

    -

    All conditions are top-level.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeStatusReasonMessage
    AcceptedTrue"Accepted""KuadrantPolicy has been accepted"
    False"Conflicted""KuadrantPolicy is conflicted by [policy-ns/policy-name], ..."
    False"Invalid""KuadrantPolicy is invalid"
    False"TargetNotFound""KuadrantPolicy target [resource-name] was not found"
    EnforcedTrue"Enforced""KuadrantPolicy has been successfully enforced"
    False"Unknown""KuadrantPolicy has encountered some issues"
    False"Overridden""KuadrantPolicy is overridden by [policy-ns/policy-name], ..."
    -

    Messages corresponding falsey statuses are required and should reflect the error that encountered.

    -

    It's possible to have the Failed state as a top level condition too. In this case, it might be useful to consider a -third "Unknown" status.

    -

    Policy ancestor status

    -

    The Status stanza of the policy CRs must implement Gateway API's PolicyAncestorStatus -struct. This will provide broader consistency and improved discoverability of effective policies.

    -

    Implementation details/requisites

    -

    Full implementation of Stage 2 states assumes reporting mechanisms in place, provided by the Kuadrant services, that -allow tracing the state of the configurations applied on the services, back to the original policies, to infer the -final state of the policy CRs (i.e. whether truly Enforced or not.)

    -

    Without such, Stage 2 could be only partially achieved, by relying only on Reconciliation events.

    -

    Drawbacks

    -
      -
    • This proposal will require to change the code controllers assert the status
    • -
    • Since the Status is part of the "API", won't be backwards compatible
    • -
    • Documentation updating
    • -
    • The implementation of the affected policies will create a fan-out problem, that might lead to updating many policy -objects and apiserver load.
    • -
    -

    Rationale and alternatives

    -

    Another option was considered (previously referred to as "Option 1"). While valid, this alternative would not align -with GEP-713, neither it would be as flexible as -the final design proposed.

    -
    - Details of the discarded alternative - -
    - - This alternative design would come in 3 stages: - - **Stage 1 : State of the policy CR defined by: application and validation of it** - - This first stage is a simple version where the operator only relies on itself, not checking the healthiness with the - Kuadrant services, but just validating the Spec. - - ![](0004-policy-status-assets/policy_status_1.png) - - States rationale: - - * `Created`: The initial state. It announces that the policy has successfully being created, the operator acknowledges it. - * `Applied`: This state is reached after the `Validation` event has being successfully passed. - * `Failed`: This one would be set when the `Validation` process encounters an error. This could be either condition's failed/error - state or a top-level condition. - * `Updated`: From `Failed` or `Applied`, it could be triggered a `Spec Change` event that would move it to this state. - - **Stage 2: Further reconciliation check provides a new state** - - This following one, besides checking what the former stage does, it also adds the states reflecting the reconciliation - process of any needed Kubernets object, Kuadrant Services custom resources and any other 3rd party CR required. - An example would be in the case of the RLP, it would create/update the `ConfigMap` holding the `Limitador` config file. - - ![](0004-policy-status-assets/policy_status_2.png) - - States rationale: - - * `Applied`: The __Applied__ state would not be final, and would be preceding a `Reconciliation` event. - * `Reconciled`: It communicates that the policy has successfully being reconciled, and any K8s object or required CR has been updated. - * `Failed`: This one would be reached when either of `Validation` and `Reconcilation` processes have encounter any errors. - - **Stage 3: Final state of the policy CR defined by: health check with the Kuadrant services (post-reconciliation)** - - The final stage would bring a greater degree of accuracy, thanks for a final process that would check the healthiness and - configuration version the Kuadrant services currently enforces. - - ![](0004-policy-status-assets/policy_status_3.png) - - States rationale: - - * `Reconciled`: This state would precede the "Health check" process graphed as `Service Probe` event. - * `Enforced`: After a successful response of the `Service Probe`, this states communicates the policy is finally enforced. - This is the final top-level condition. - * `Failed`: Now this state could also be set after encountering errors in the `Service Probe` check. - -
    - - The stages before mentioned would follow the [Kubernetes guidelines](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#typical-status-properties) - regarding the Status object definition. - - **Conditions** - - All conditions are top-level. - - | Type | Status | Reason | Message | - |-------------|--------|-----------------------------|-----------------------------------------------------------------------------| - | Progressing | True | "PolicyCreated" | "KuadrantPolicy created" | - | | True | "PolicyUpdated" | "KuadrantPolicy has been updated" | - | | True | "PolicyApplied" | "KuadrantPolicy has been successfully applied | - | | True | "PolicyReconciled" | "KuadrantPolicy has been successfully reconciled" | - | | False | "PolicyEnforced" | "KuadrantPolicy has been successfully enforced" | - | | False | "PolicyError" | "KuadrantPolicy has encountered an error" | - | Enforced | True | "PolicyEnforced" | "KuadrantPolicy has been successfully enforced" | - | | False | "PolicyPartiallyEnforced" | "KuadrantPolicy has encountered some issues and has been partially applied" | - | | False | "PolicyOverridden" | "KuadrantPolicy is overridden by [policy-ns/policy-name]" | - | Failed | True | "PolicyValidationError" | "KuadrantPolicy has failed to validate" | - | | True | "PolicyServiceError" | "KuadrantPolicy has encountered has failed to enforce" | - | | False | "PolicyEnforced" | "KuadrantPolicy has been successfully enforced" | -
    - -

    Prior art

    - -

    Unresolved questions

    -
      -
    • Is it worthy to implement a state machine or state machine design pattern to achieve this set of conditions?
    • -
    -

    Future possibilities

    -

    The implementation of this proposal could be part of kuadrant/gateway-api-machinery.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/architecture/rfcs/0005-single-cluster-dnspolicy/index.html b/0.10.0/architecture/rfcs/0005-single-cluster-dnspolicy/index.html deleted file mode 100644 index 7982b217c..000000000 --- a/0.10.0/architecture/rfcs/0005-single-cluster-dnspolicy/index.html +++ /dev/null @@ -1,3624 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - RFC 0005: Single Cluster DNSPolicy - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Single Cluster DNSPolicy

    - -

    Summary

    -

    Proposal for changes to the DNSPolicy API to allow it to provide a simple routing strategy as an option in a single cluster context. This will remove, but not negate, the complex DNS structure we use in a multi-cluster environment and in doing so allow use of popular dns integrators such as external-dns .

    -

    Motivation

    -

    The DNSPolicy API (v1alpha1), was implemented as part of our multi cluster gateway offering using OCM and as such the design and implementation were influenced heavily by how we want multi cluster dns to work.

    -
      -
    • Decouple the API entirely from OCM and multi cluster specific concepts.
    • -
    • Simplify the DNS record structure created for a gateway listeners host for single cluster use.
    • -
    • Improve the likelihood of adoption by creating an integration path for other kubernetes dns controllers such as external-dns.
    • -
    -

    Guide-level explanation

    -

    The DNSPolicy can be used to target a Gateway in a single cluster context and will create dns records for each listener host in an appropriately configured external dns provider. -In this context the advanced loadbalancing configuration is unnecessary, and the resulting DNSRecord can be created mapping individual listener hosts to a single DNS A or CNAME record by using the simple routing strategy in the DNSPolicy.

    -

    Example 1. DNSPolicy using simple routing strategy

    -
    apiVersion: kuadrant.io/v1alpha2
    -kind: DNSPolicy
    -metadata:
    -  name: prod-web
    -  namespace: my-gateways
    -spec:
    -  providerRef:
    -    name: my-route53-credentials
    -  targetRef:
    -    name: prod-web
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -  routingStrategy: simple
    -
    -
    apiVersion: gateway.networking.k8s.io/v1beta1
    -kind: Gateway
    -metadata:
    -  name: prod-web
    -  namespace: my-gateways
    -spec:
    -  gatewayClassName: istio
    -  listeners:
    -
    -    - allowedRoutes:
    -        namespaces:
    -          from: All
    -      name: api
    -      hostname: "myapp.mn.hcpapps.net"
    -      port: 80
    -      protocol: HTTP
    -status:
    -  addresses:
    -    - type: IPAddress
    -      value: 172.31.200.0
    -
    -

    In the example the api listener has a hostname myapp.mn.hcpapps.net that matches a hosted zone being managed by the provider referenced my-route53-credentials in the DNSPolicy. -As the simple routing strategy is set in the DNSPolicy a DNSRecord resource with the following contents will be created:

    -
    apiVersion: kuadrant.io/v1alpha2
    -kind: DNSRecord
    -metadata:
    -  name: prod-web-api
    -  namespace: my-gateways
    -spec:
    -  providerRef:
    -    name: my-route53-credentials
    -  endpoints:
    -
    -    - dnsName: myapp.mn.hcpapps.net
    -      recordTTL: 60
    -      recordType: A
    -      targets:
    -        - 172.31.200.0
    -
    -

    The providerRef is included in the DNSRecord to allow the dns record controller to load the appropriate provider configuration during reconciliation and create the DNS records in the dns provider service e.g. route 53.

    -

    Example 2. DNSPolicy using simple routing strategy on multi cluster gateway

    -
    apiVersion: kuadrant.io/v1alpha2
    -kind: DNSPolicy
    -metadata:
    -  name: prod-web
    -  namespace: my-gateways
    -spec:
    -  providerRef:
    -    name: my-route53-credentials
    -  targetRef:
    -    name: prod-web
    -    group: gateway.networking.k8s.io
    -    kind: Gateway
    -  routingStrategy: simple
    -
    -
    apiVersion: gateway.networking.k8s.io/v1beta1
    -kind: Gateway
    -metadata:
    -  name: prod-web
    -  namespace: my-gateways
    -spec:
    -  gatewayClassName: kuadrant-multi-cluster-gateway-instance-per-cluster
    -  listeners:
    -
    -    - allowedRoutes:
    -        namespaces:
    -          from: All
    -      name: api
    -      hostname: "myapp.mn.hcpapps.net"
    -      port: 80
    -      protocol: HTTP
    -status:
    -  addresses:
    -    - type: kuadrant.io/MultiClusterIPAddress
    -      value: 172.31.200.0
    -    - type: kuadrant.io/MultiClusterIPAddress
    -      value: 172.31.201.0
    -
    -

    Similar to example 1, except here the Gateway is a multi cluster gateway that has had its status updated by the Gateway controller to include kuadrant.io/MultiClusterIPAddress type addresses. -As the simple routing strategy is set in the DNSPolicy a DNSRecord resource with the following contents will be created:

    -
    apiVersion: kuadrant.io/v1alpha2
    -kind: DNSRecord
    -metadata:
    -  name: prod-web-api
    -  namespace: my-gateways
    -spec:
    -  providerRef:
    -    name: my-route53-credentials
    -  endpoints:
    -
    -    - dnsName: myapp.mn.hcpapps.net
    -      recordTTL: 60
    -      recordType: A
    -      targets:
    -        - 172.31.200.0
    -        - 172.31.201.0
    -
    -

    Reference-level explanation

    -

    API Updates

    -

    DNSPolicy:

    -
      -
    • new providerRef field spec.providerRef
    • -
    • new routingStrategy field spec.routingStrategy
    • -
    • new api version v1alpha2
    • -
    -

    DNSRecord:

    -
      -
    • spec.managedZone replaced with spec.providerRef
    • -
    • new zoneID field spec.zoneID
    • -
    • new api version v1alpha2
    • -
    -

    ManagedZone:

    -
      -
    • ManagedZone API wil be removed and no longer supported as part of MGC/Kuadrant.
    • -
    -

    DNSPolicy.spec.providerRef

    -

    The providerRef field is mandatory and contains a reference to a secret containing provider credentials.

    -
    - `spec.providerRef.name` - name of the provider resource.
    -
    -

    A DNSPolicy referencing a providerRef secret will expect that secret to exist in the same namespace. The expected contents of the secrets data is comparable to the dnsProviderSecretRef used by ManageZones.

    -
    apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: aws-credentials
    -type: kuadrant.io/aws
    -data:
    -  AWS_ACCESS_KEY_ID: "foo"
    -  AWS_SECRET_ACCESS_KEY: "bar"
    -  CONFIG:
    -    zoneIDFilter:
    -
    -      - Z04114632NOABXYWH93QUl
    -
    -

    The CONFIG section of the secrets data will be added to allow provider specific configuration to be stored alongside the providers credentials and can be used during the instantiation of the provider client, and during any provider operations. -The above for example would use the zoneIDFilter value to limit what hosted zones this provider is allowed to update.

    -

    DNSPolicy.spec.routingStrategy[simple|weightedGeo]

    -

    The routingStrategy field is mandatory and dictates what kind of dns record structure the policy will create. Two routing strategy options are allowed simple or weightedGeo.

    -

    A reconciliation of DNSPolicy processes the target gateway and creates a DNSRecord per listener that is supported by the currently configured provider(hostname matches the hosted zones accessible with the credentials and config). The routing strategy used will determine the contents of the DNSRecord resources Endpoints array.

    -

    simple

    -
    apiVersion: kuadrant.io/v1alpha2
    -kind: DNSRecord
    -spec:
    -  providerRef:
    -    name: my-route53-credentials
    -  endpoints:
    -
    -    - dnsName: myapp.mn.hcpapps.net
    -      recordTTL: 60
    -      recordType: A
    -      targets:
    -        - 172.31.200.0
    -
    -

    Simple creates a single endpoint for an A record with multiple targets. Although intended for use in a single cluster context a simple routing strategy can still be used in a multi-cluster environment (OCM hub). In this scenario each clusters address will be added to the targets array to create a multi answer section in the dns response.

    -

    weightedGeo

    -
    apiVersion: kuadrant.io/v1alpha2
    -kind: DNSRecord
    -spec:
    -  providerRef:
    -    name: my-route53-credentials
    -  endpoints:
    -
    -    - dnsName: myapp.mn.hcpapps.net
    -      recordTTL: 300
    -      recordType: CNAME
    -      targets:
    -        - lb-4ej5le.myapp.mn.hcpapps.net
    -    - dnsName: lb-4ej5le.myapp.mn.hcpapps.net
    -      providerSpecific:
    -        - name: geo-code
    -          value: '*'
    -      recordTTL: 300
    -      recordType: CNAME
    -      setIdentifier: default
    -      targets:
    -        - default.lb-4ej5le.myapp.mn.hcpapps.net
    -    - dnsName: default.lb-4ej5le.myapp.mn.hcpapps.net
    -      providerSpecific:
    -        - name: weight
    -          value: "120"
    -      recordTTL: 60
    -      recordType: CNAME
    -      setIdentifier: lrnse3.lb-4ej5le.myapp.mn.hcpapps.net
    -      targets:
    -        - lrnse3.lb-4ej5le.myapp.mn.hcpapps.net
    -    - dnsName: lrnse3.lb-4ej5le.myapp.mn.hcpapps.net
    -      recordTTL: 60
    -      recordType: A
    -      targets:
    -        - 172.31.200.0
    -
    -

    WeightedGeo creates a more complex set of endpoints which use a combination of weighted and geo routing strategies. Although intended for use in a multi-cluster environment (OCM hub) it will still be possible to use it in a single cluster context. In this scenario the record structure described above would be created for the single cluster.

    -

    This is the current default for DNSPolicy in a multi-cluster environment (OCM hub) and more details about it can be found in the original DNSPolicy rfc.

    -

    DNSRecord.spec.providerRef

    -

    More details of providerRef found in DNSPolicy.spec.providerRef

    -

    The DNSRecord API is updated to remove the managedZone reference in favour of directly referencing the providerRef credentials instead. The DNSRecord reconciliation will be unchanged except for loading the provider client from providerRef credentials.

    -

    The DNSPolicy reconciliation will be updated to remove the requirement for a ManagedZone resource to be created before a DNSPolicy can create dns records for it, instead it will be replaced in favour of just listing available zones directly in the currently configured dns provider. If no matching zone is found, no DNSRecord will be created.

    -

    There is a potential for a DNSRecord to be created successfully, but then a provider updated to remove access. In this case it is the responsibility of the DNSPolicy controller to report appropriate status back to the policy and target resource about the failure to process the record. More details on how status will be reported can be found in rfc-0004

    -

    DNSRecord.spec.zoneID

    -

    The zoneID field is mandatory and contains the provider specific id of the hosted zone that this record should be published into.

    -

    The DNSRecord reconciliation will use this zone when creating/updating or deleting endpoints for this record set.

    -

    The zoneID should not change after being selected during initial creation and as such will be marked as immutable.

    -

    Prior art

    -

    ExternalDNS

    -
      -
    • Uses annotations on the target Gateway as opposed to a proper API.
    • -
    • Requires access to the HTTP route resources.
    • -
    • Supports only a single provider per external dns instance.
    • -
    -

    Unresolved questions

    -

    When a provider is configured using a kind not supported by the DNSPolicy controller e.g. ExternalDNS we will be relying on an external controller to correctly update the status of any DNSRecord resources created by our policy. This may have a negative impact on our ability to correctly report status back to the target resource.

    -

    When using a weightedGeo routing strategy in a single cluster context it is not expected that this will offer multi cluster capabilities without the use of OCM. Currently, it is expected that if you want to create a recordset that contains the addresses of multiple clusters you must use an OCM hub.

    -

    Future possibilities

    -

    The ability to support other kubernetes dns controllers such as ExternalDNS would potentially allow us to contribute to some of these projects in the area of polices for dns management of Gateway resources in kubernetes.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/architecture/rfcs/0006-kuadrant_sub_components_configurations/index.html b/0.10.0/architecture/rfcs/0006-kuadrant_sub_components_configurations/index.html deleted file mode 100644 index f4cf0a446..000000000 --- a/0.10.0/architecture/rfcs/0006-kuadrant_sub_components_configurations/index.html +++ /dev/null @@ -1,3580 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - RFC 0006: Configuration of Kuadrant Sub Components - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Configuration of Kuadrant Sub Components

    - -

    Summary

    -

    Enable configuration of sub components of Kuadrant from a centralized location, namely the Kuadrant CR.

    -

    Motivation

    -

    The initial request comes from MGC to configure Redis for Limitador by the following issue #163. -MGC's current work around is to update the Limitador CR after the deployment with the configuration setting for Redis Instance. -This change would allow for the configuration of sub components before the Kuadrant is deployed.

    -

    This reduces the number of CRs that users of Kuadrant are required to modify to get the installation they require. -The sub components CRs (Authorino, Limitador) never have to be modified by a Kuadrant user (and should never be modified by a Kuadrant User).

    -

    Guide-level explanation

    -

    As the Kuadrant operator would be responsible for reconciling these configurations into the requested components, restrictions and limitations can be placed on the components which maybe allowed in a standalone installation. -An example in this space is the disk storage for Limitador which is a new feature and the Kuadrant installation may not want to support it till there is a proven track record for the feature.

    -

    For existing Kuadrant Users this may be a possible breaking changes if those users manually configure the Kuadrant sub components via their CRs. -A guide can be created to help migrate the users configurations to the Kuadrant CR. -This guide can be part of the release notes and/or possibly released before the release of Kuadrant.

    -

    The deployment configuration for each component can be placed in the Kuadrant CR. -These configurations are then reconciled into the CRs for each component. -Only the options below are exposed in the Kuadrant CR. -All fields in the spec are optional.

    -
    apiVersion: kuadrant.io/v1beta1
    -kind: Kuadrant
    -metadata:
    -    name: kuadrant-sample
    -spec:
    -    limitador:
    -        afffinity: ...
    -        listener: ...
    -        pdb: ...
    -        replicas: ...
    -        resourceRequirements: ...
    -        storage: ...
    -    authorino:
    -        evaluatorCacheSize: ...
    -        healthz: ...
    -        listener: ...
    -        logLevel: ...
    -        metrics: ...
    -        oidcServer: ...
    -        replicas: ...
    -        tracing: ...
    -        volumes: ...
    -status:
    -    ...
    -
    -

    The Kuadrant operator will watch for changes in the Authorino and Limitador CRs, reconciling back any changes that a user may do to these configurations. -How ever Kuadrant operator will not reconcile fields that are given above. -An example of this is the image field on the Authorino CR. -This field allows a user to set the image that Authorino is deployed with. -The feature is meant for dev and testing purposes. -If a user wishes to use a different image, they can. -Kuadrant assumes they know what they are doing but requires the user to set the change on the component directly.

    -

    Only the sub component operator will be responsible for actioning the configurations pasted from the Kuadrant CR to the sub components CR. -This ensure no extra changes will be required in the sub operators to meet the needs of Kuadrant.

    -

    Status errors related to the configuration of the sub components should be reported back to the Kuadrant CR. -The errors messages in Kuadrant state what components are currently having issue and which resource to review for more details.

    -

    Reference-level explanation

    -

    All the fields in the Authorino and Limitador CRs that are configurable in the Kuadrant CR are optional and have sound defaults. -Kuadrant needs to remain installable with out having to set any spec in the Kuadrant CR.

    -

    The Kuadrant operator should only reconcile the spec that is given. -This would mean if the user states the number of replicas to be used in one of the components only the replica field for that component should be reconciled. -As the other fields would be blank at this stage, blank fields would not be reconciled to the component CR. -By this behaviour a few things are being achieved. -Component controllers define the defaults to be used in the components. -Optional fields in the component CRs never get set with blank values. -Blank values in the component CR could override the defaults of the components causing unexpected behaviour. -Existing Kuadrant users may already have custom fields set in the component CRs. -By only reconciling the fields set in the kuadrant CR this allows time for a user to migrate their custom configuration from the component CR to the Kuadrant CR.

    -

    Fields to reconcile

    -

    Fields being reconcile can be classified into different groups. -These classifications are based around the tasks a user is achieve.

    -
      -
    • Kubernetes native, setting that affect how Kubernetes handles the resource.
    • -
    • Observability, configuration settings that allow insights into how the applications are operation. -This can be Kubernetes native or external tooling.
    • -
    • Application Settings, setting targeting the application and how it connects to external services.
    • -
    -

    Authorino Spec

    -

    Kubernetes native

    -
      -
    • replicas
    • -
    -

    Observability

    -
      -
    • healthz
    • -
    • logLevel
    • -
    • metrics
    • -
    • tracing
    • -
    -

    Application Settings

    -
      -
    • evaluatorCacheSize
    • -
    • listener
    • -
    • oidcServer
    • -
    • volumes
    • -
    -

    Limitador Spec

    -

    Kubernetes native

    -
      -
    • afffinity
    • -
    • pdb
    • -
    • replicas
    • -
    • resourceRequirements
    • -
    -

    Application Settings

    -
      -
    • listener
    • -
    • storage
    • -
    -

    Fields not reconciled

    -

    There are a number of fields in both Authorino and Limitador that are not reconciled. -Reasons for doing this are:

    -

    It is better to start with a sub set of features and expand to include more at a later date. -Removing feature support is far harder than adding it.

    -

    There are four classifications the unreconciled fields fail into.

    -
      -
    • Deprecated, fields that are deprecated and/or have plans to be removed from the spec in the future.
    • -
    • Unsupported, the features would have hard coded or expected defaults in the Kuadrant operator. -Work would be required to all the custom configurations options.
    • -
    • Dev/Testing focused, features that should only be used during development & testing and not recommended for production. -The defaults would for the fields are the production recommendations.
    • -
    • Reconciled by others, this mostly affects Limitador as the deployment configuration and runtime configuration are in the same CR. -In the case of Kuadrant the runtime configuration for Limitador is added via the RateLimitingPolicy CR.
    • -
    -

    Authorino Spec

    -

    Unsupported

    -
      -
    • clusterWide
    • -
    • authConfigLabelSelectors
    • -
    • secretLabelSelectors
    • -
    -

    Dev/Testing focused

    -
      -
    • image
    • -
    • imagePullPolicy
    • -
    • logMode
    • -
    -

    Limitador Spec

    -

    Unsupported

    -
      -
    • RateLimitHeaders
    • -
    -

    Reconciled by others

    -
      -
    • Limits
    • -
    -

    Deprecated

    -
      -
    • version
    • -
    -

    Drawbacks

    -

    As the Kuadrant CR spec will be a sub set of the features that can be configured in the sub components spec, extra maintenances will be required to ensure specs are in sync.

    -

    New features of a component will not be accessible in Kuadrant initially. -This is both a pro and a con.

    -

    Documentation becomes harder, as the sub component should be documenting their own features but in Kuadrant the user does not configure the feature in sub component. -This has the risk of confusing new users.

    -

    Rationale and alternatives

    -
      -
    • Why is this design the best in the space of possible designs?
    • -
    • What other designs have been considered and what is the rationale for not choosing them?
    • -
    • What is the impact of not doing this?
    • -
    -

    One alternative that was being looked at was allowing the user to bring their own Limitador instances by stating which Limitador CR Kuadrant should use. -A major point of issue with this approach was knowing what limits the user had configured and what limits Kuadrant configured. -Sharing global counters is a valid reason to want to share Limitador instances. -How ever it this case Limitador would not be using one replica and therefore would have a back-end storage configured. -It is the back-end storage that needs to be shared across instances. -This can be done with adding the configuration in the Kuadrant CR.

    -

    Prior art

    -

    Discuss prior art, both the good and the bad, in relation to this proposal. -A few examples of what this can include are:

    -
      -
    • Does another project have a similar feature?
    • -
    • What can be learned from it? What's good? What's less optimal?
    • -
    • Papers: Are there any published papers or great posts that discuss this? If you have some relevant papers to refer to, this can serve as a more detailed theoretical background.
    • -
    -

    This section is intended to encourage you as an author to think about the lessons from other tentatives - successful or not, provide readers of your RFC with a fuller picture.

    -

    Note that while precedent set by other projects is some motivation, it does not on its own motivate an RFC.

    -

    Unresolved questions

    -
      -
    • What parts of the design do you expect to resolve through the RFC process before this gets merged?
    • -
    • What parts of the design do you expect to resolve through the implementation of this feature before stabilization?
    • -
    • What related issues do you consider out of scope for this RFC that could be addressed in the future independently of the solution that comes out of this RFC?
    • -
    -
    -
      -
    • Is there a need to add validation on the configuration?
    • -
    • If a valid configuration is add to the Kuadrant CR and this configuration is pass to the sub components CR but there is a error trying to setting up the configuration. -How is this error reported back to the user? -An example of this is configuring Redis as the back-end in Limitador, this requires stating the name and namespace of a configmap. -The Limitador CR will have an error if the configmap does not exist and as the user only configures the Kuadrant CR this error may go unnoticed. -This is only one example but there is a need for good error reporting back to the user, where they would expect to see the error.
    • -
    -

    Future possibilities

    -

    Think about what the natural extension and evolution of your proposal would be and how it would affect the platform and project as a whole. Try to use this section as a tool to further consider all possible interactions with the project and its components in your proposal. Also consider how this all fits into the roadmap for the project and of the relevant sub-team.

    -

    This is also a good place to "dump ideas", if they are out of scope for the RFC you are writing but otherwise related.

    -

    Note that having something written down in the future-possibilities section is not a reason to accept the current or a future RFC; such notes should be in the section on motivation or rationale in this or subsequent RFCs. The section merely provides additional information.

    -
    -

    The implementation stated here allows the user to state spec fields in the component CRs or the Kuadrant CR (Kuadrant CR overrides the component CRs). -A future possibility would be to warn the user if they add configuration to the components CRs that would get overridden if the same spec fields are configured in the Kuadrant CR.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/architecture/rfcs/0007-policy-sync-v1/index.html b/0.10.0/architecture/rfcs/0007-policy-sync-v1/index.html deleted file mode 100644 index 76ebf7d56..000000000 --- a/0.10.0/architecture/rfcs/0007-policy-sync-v1/index.html +++ /dev/null @@ -1,3526 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - RFC 0007: Policy Sync - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    RFC - Policy Sync

    - -

    Summary

    -

    The ability for the Multicluster Gateway Controller to sync policies defined in -the hub cluster downstream to the spoke clusters, therefore allowing all policies -to be defined in the same place. These policies will be reconciled by the downstream -policy controller(s).

    -

    Nomenclature

    -
      -
    • -

      Policy: When refering to a Policy, this document is refering to a Gateway API - policy as defined in the Policy Attachment Model. The Multicluster Gateway Controller - relies on OCM as a Multicluster solution, which defines its own unrelated - set of Policies and Policy Framework. Unless explicitely mentioned, this document - refers to Policies as Gateway API Policies.

      -
    • -
    • -

      Policy overriding: The concept of policy overriding is mentioned in this document. It refers to the proposed ability of the downstream Gateway implementation to prioritise downstream Policies against synced Policies in case of conflicts.

      -
    • -
    -

    Motivation

    -

    Currently, Kuadrant's support for the Policy Attachment Model can be divided in -two categories:

    -
      -
    • Policies targeting the Multicluster Gateway, defined in the hub cluster and - reconciled by the Multicluster Gateway Controller
    • -
    • Policies targeting the downstream Gateway, defined in the spoke clusters and - reconciled by the downstream Gateway controllers.
    • -
    -

    In a realistic multicluster scenario where multiple spoke clusters are present, the management of these policies can become tedious and error-prone, as policies have -to be defined in the hub cluster, as well as replicated in the multiple spoke clusters.

    -

    As Kuadrant users:

    -
      -
    • Gateway-admin has a set of homogeneous clusters and needs to apply per cluster rate limits across the entire set.
    • -
    • Platform-admin with a set of clusters with rate limits applied needs to change rate limit for one particular cluster.
    • -
    -

    Guide-level explanation

    -

    The policy sync feature will allow a gateway-admin to configure, via GatewayClass -parameters, a set of Policy GVRs to be synced by the Multicluster Gateway Controller.

    -

    The policiesToSync field in the parameters defines those GVRs. For example, in -order to configure the controller to sync AuthPolicies:

    -
    "policiesToSync": [
    -  {
    -    "group": "kuadrant.io",
    -    "version": "v1beta1",
    -    "resource": "authpolicies" 
    -  }
    -]
    -
    -

    The support for resources that the controller can sync is limited by the following:

    -
      -
    • The controller ServiceAccount must have permission to watch, list, and get the - resource to be synced
    • -
    • The resource must implement the Policy schema:
        -
      • Have a .spec.targetRef field
      • -
      -
    • -
    -

    When a Policy is configured to be synced in a GatewayClass, the Multicluster -Gateway Controller starts watching events on the resources, and propagates changes -by placing the policy in the spoke clusters, with the following mutations:

    -
      -
    • The TargetRef of the policy is changed to reference the downstream Gateway
    • -
    • The kuadrant.io/policy-synced annotation is set
    • -
    -

    The upstream policy is annotated with a reference to the name and namespace -of the downstream policies: -

    annotations:
    -  "kuadrant.io/policies-synced": "[{\"cluster\": \"...\", \"name\": \"...\", \"namespace\": \"...\"}]"
    -

    -

    Reference-level explanation

    -

    Process overview

    -

    Dynamic Policy watches

    -

    The Multicluster Gateway Controller reconciles parameters referenced by the -GatewayClass of a Gateway. A new field is added to the parameters that allows -the configuration of a set of GVRs of Policies to be synced.

    -

    The GatewayClass reconciler validates that:

    -
      -
    • The GVRs reference existing resource definitions
    • -
    • The GVRs reference resources that implement the Policy schema.
    • -
    -

    Validation failures are reported as part of the status of the GatewayClass

    -

    The Gateway reconciler sets up dynamic watches to react to events on the configured -Policies, calling the PolicySyncer component with the updated Policy as well -as the associated Gateway.

    -

    PolicySyncer component

    -

    The PolicySyncer component is in charge of reconciling Policy watch events to -apply the necessary changes and place the Policies in the spoke clusters.

    -

    This component is injected in the event source and called when a change is made -to a hub Policy that has been configured to be synced.

    -

    The PolicySyncer implementation uses OCM ManifestWorks to place the policies in -the spoke clusters. Through the ManifestWorks, OCM allows to:

    -
      -
    • Place the Policy in each spoke cluster
    • -
    • Report the desired status back to the hub using JSON feedback rules
    • -
    -

    Policy Hierarchy

    -

    In order to avoid conflict with Policies created directly in the spoke clusters, -a hierarchy must be defined to prioritise those Policies.

    -

    The controller will set the kuadrant.io/policy-synced annotation on the policy -when placing it in the spoke cluster.

    -

    The Kuadrant operator will be aware of the presence of this annotation, and, in case -of conflicts, override Policies that contain this annotation. When a policy is -overriden due to conflicts, the Enforced status will be set to False, with -the reason being Overriden and a human readable message explaining the reason -why the policy was overriden. See Policy Status RFC

    -

    Drawbacks

    -

    Third party Policy support

    -

    In order for a Policy to be supported for syncing, the MGC must have permissions -to watch/list/get the resource, and the implementation of the downstream Gateway -controller must be aware of the policy-synced annotation.

    -

    Rationale and alternatives

    -

    Alternatives

    -

    Different technology stacks are available to sync resources across clusters. However, adoption of these technologies for the purpose of the goal this RFC intends to achieve, implies adding another dependency to the current stack, with the cost of added complexity and maintainance effort.

    -

    The MGC currently uses OCM to place Gateways across clusters. Relying on OCM for the purpose of placing Policies is the most straightforward alternative from a design and implementation point of view.

    -

    Consequences of not implementing

    -

    Gateway-admins will have no centralized system for handling spoke-level policies targeting a gateway created there from the hub.

    -

    OCMs Policy Framework will not be used to complete this objective:

    -

    OCMs Policy Framework is a system designed to make assertions about the state of a spoke, and potentially take actions based on that state, as such it is not a suitable replacement for manifestworks in the case of syncing resources to a spoke.

    -

    Potential migration from ManifestWorks to ManifestWorkReplicaSets

    -

    ManifestWorkPeplicaSets may be a future improvement that the MGC could support -to simplify the placement of related resources, but beyond the scope of this RFC.

    -

    Prior art

    -

    No applicable prior art.

    -

    Unresolved questions

    -

    Status reporting

    -

    While the controller can assume common status fields among the Policies that it -syncs, there might be a scenario where certain policies use custom status fields -that are not handled by the controller. In order to support this, two alternatives -are identified:

    -
      -
    1. -

      Configurable rules.

      -

      An extra field is added in the GatewayClass params that configures the policies -to sync, to specify custom fields that the controller must propagate back from -the spokes to the hub.

      -
    2. -
    3. -

      Hard-coded support.

      -

      The PolicySync component can identify the Policy type and select which extra -status fields are propagated

      -
    4. -
    -

    Future possibilities

    -

    If OCMs Policy Framework is updated to enable syncing of resources status back to the hub, it could be an opportunity to refactor the MGC to use this framework in place of the current approach of creating ManifestWorks directly.

    -

    This system could mutate over time to dynamically sync more CRDs than policies to spoke clusters.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/architecture/rfcs/0008-kuadrant-release-process/index.html b/0.10.0/architecture/rfcs/0008-kuadrant-release-process/index.html deleted file mode 100644 index 90962889a..000000000 --- a/0.10.0/architecture/rfcs/0008-kuadrant-release-process/index.html +++ /dev/null @@ -1,3647 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - RFC 0008: Kuadrant Release Process - Kuadrant Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - - - - - - -
    -
    - - - -
    -
    -
    - - - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    - - - - - - - - - - - - -

    Kuadrant Release Process

    - -

    Summary

    -

    Kuadrant is a set of components whose artifacts are built and delivered independently. This RFC aims to define every -aspect of the event of releasing a new version of the whole, in terms of versioning, cadence, communication, channels, -handover to other teams, etc.

    -

    Motivation

    -

    At the time being, there's no clear process nor guidelines to follow when releasing a new version of Kuadrant, which -leads to confusion and lack of transparency. We are currently relying on internal communication and certain people -in charge of the release process, which is not ideal.

    -

    Guide-level explanation

    -

    First, we need to define what releasing Kuadrant means, in a clear and transparent way that communicates to the community -what's happening and what to expect. The Kuadrant suite is composed of several components, each of them with its own -set of artifacts and versioning scheme. Defining the release process of the whole suite is a complex task, and it's -not only about the technical details of releasing the components, but also about the communication and transparency -with the community, the definition of the frequency of the releases, and when it's ready to be handover to other teams like -QA. This section aims to provide guidelines for the different aspects of the release process.

    -

    Components and versioning

    -

    The set of components that are part of the Kuadrant suite are the following:

    -
      -
    • Authorino: Kubernetes-native authorization service for tailor-made Zero Trust API security.
    • -
    • Authorino Operator: A Kubernetes Operator to manage Authorino instances.
    • -
    • Limitador: A generic rate-limiter written in Rust.
    • -
    • Limitador Operator: A Kubernetes Operator to manage Limitador deployments.
    • -
    • Wasm Shim: A Proxy-Wasm module written in Rust, acting as a shim between Envoy and Limitador. -connectivity and global load balancing.
    • -
    • DNS Operator: A Kubernetes Operator to manage DNS in single and multi-cluster -environments.
    • -
    • Kuadrant Operator: The Operator to install and manage the lifecycle - of the Kuadrant components deployments. Example alerts and dashboards are also included as optional.
    • -
    • kuadrantctl: A CLI tool for managing Kuadrant configurations and resources.
    • -
    -

    Each of them needs to be versioned independently, and the versioning scheme should follow Semantic Versioning. -At the time of cutting a release for any of them, it's important to keep in mind what section of the version to bump, -given a version number MAJOR.MINOR.PATCH, increment the:

    -
      -
    • MAJOR version when you make incompatible API changes
    • -
    • MINOR version when you add functionality in a backward compatible manner
    • -
    • PATCH version when you make backward compatible bug fixes
    • -
    -

    Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.

    -

    A more detailed explanation of the versioning scheme can be found in the Semantic Versioning website.

    -

    By releasing a new version of Kuadrant, we mean releasing the set of components with their corresponding semantic versioning, -some of them maybe freshly released, or others still using versioning from the previous one, and being the version of the -Kuadrant Operator the one that defines the version of the whole suite.

    -
    Kuadrant Suite vx.y.z = Kuadrant Operator vx.y.z +  Authorino Operator va.b.c + Limitador Operator vd.e.f + DNS Operator vg.h.i + MGC Controller vj.k.l + Wasm Shim vm.n.o
    -
    -

    The technical details of how to release each component are out of the scope of this RFC and could be found in the -Kuadrant components CI/CD RFC.

    -

    QA Sanity Check

    -

    Probably the most important and currently missing step in the release process is the green flagging from the Quality Assurance -(QA) team. The QA team is responsible for testing the different components of the Kuadrant suite, and they need to -be aware of the new version of the suite that is going to be released, what are the changes that are included, bug fixes -and new features in order they can plan their testing processes accordingly. This check is not meant to be a fully fledged -assessment from the QA team when it's handover to them, it's aimed to not take more than 1-2 days, and ideally expected -to be fully automated. This step will happen once the release candidate has no PRs pending to be merged, and it has been -tested by the Engineering team. The QA team should work closely to the engineering throughout the process, both teams aiming -for zero handover time and continuous delivery mindset, so immediate testing can be triggered on release candidates once -handed over. This process should happen without the need of formal communication between the teams or any overhead in -general, but by keeping constant synergy between quality and product engineering instead.

    -

    There is an ideal time to hand over to the QA team for testing, especially since we are using GitHub for orchestration, -we could briefly define it in the following steps:

    -
      -
    1. Complete Development Work: The engineering team completes their work included in the milestone.
    2. -
    3. Create Release Candidate: The engineering team creates Release Candidate builds and manifests for all components required -for the release
    4. -
    5. Flagging/Testing: The QA team do the actual assertion/testing of the release candidate, checking for any obvious bugs or issues. -Then QA reports all the bugs as GitHub issues and communicates testing status back publicly on Slack and/or email.
    6. -
    7. Iterate: Based on the feedback from the QA team, the Engineering team makes any necessary adjustments and repeats the -process until the release candidate is deemed ready for production.
    8. -
    9. Publish Release: Once QA communicates that the testing has been successfully finished, the engineering team will publish -the release both on Github and in the corresponding registries, updates documentation for the new release, and communicates -it to all channels specified in Communication section.
    10. -
    -

    Cadence

    -

    Once the project is stable enough, and its adoption increases, the community will be expecting a certain degree of -commitment from the maintainers, and that includes a regular release cadence. The frequency of the releases of the -different components could vary depending on the particular component needs. However, the Kuadrant Operator -it's been discussed in the past that it should be released every 3-4 weeks initially, including the latest released version -of every component in the suite. There's another RFC that focuses on the actual frequency of each component, one could -refer to the Kuadrant Release Cadence RFC.

    -

    There are a few reasons for this:

    -
      -
    • Delivering Unparalleled Value to Users: Regular releases can provide users with regular updates and improvements. - These updates can include new features and essential bug fixes, thus enhancing the overall value delivered to the users.
    • -
    • Resource Optimization: By releasing software at regular intervals, teams can align their activities with - available resources and environments, ensuring optimal utilization. This leads to increased efficiency in the deployment - process and reduces the risk of resource wastage.
    • -
    • Risk Management: Regular releases can help identify and fix issues early, reducing the risk of major failures that could - affect users.
    • -
    • Feedback Cycle: Regular releases allow for quicker feedback cycles. This means that any issues or improvements - identified by users can be addressed promptly, leading to a more refined product over time.
    • -
    • Synchronization: Regular releases can help synchronize work across different teams or departments, creating a more - reliable, dependable solution development and delivery process.
    • -
    • Reduced Complexity: Managing a smaller number of releases can reduce complexity. For example, having many different - releases out in the field can lead to confusion and management overhead.
    • -
    -

    By committing to a release cadence, software projects can benefit from improved efficiency, risk management, faster feedback -cycles, synchronization, and reduced complexity.

    -

    Repositories and Hubs

    -

    Every component in Kuadrant has its own repository, and the source code is hosted in GitHub, mentioned in the previous -section. However, the images built and manifests generated are hosted in different registries, depending on the -component. The following table shows the different registries used by each component:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ComponentArtifactsRegistry / Hub
    Authorinoauthorino imagesQuay.io
    Authorino Operatorauthorino-operator imagesQuay.io
    authorino-operator-bundle imagesQuay.io
    authorino-operator-catalog imagesQuay.io
    authorino-operator manifestsOperatorHub.io
    Limitadorlimitador server imagesQuay.io
    limitador crateCrates.io
    Limitador Operatorlimitador-operator imagesQuay.io
    limitador-operator-bundle imagesQuay.io
    limitador-operator-catalog imagesQuay.io
    limitador-operator manifestsOperatorHub.io
    Wasm Shimwasm-shim imagesQuay.io
    DNS Operatordns-operator imagesQuay.io
    dns-operator-bundle imagesQuay.io
    dns-operator-catalog imagesQuay.io
    Kuadrant Operatorkuadrant-operator imagesQuay.io
    kuadrant-operator-bundle imagesQuay.io
    kuadrant-operator-catalog imagesQuay.io
    kuadrant-operator manifestsOperatorHub.io
    kuadrant-operator source (includes example dashboards and alerts)Github Releases
    kuadrantctlkuadrantctl CLIGithub Releases
    -

    Documentation

    -

    It's important to note that keeping the documentation up to date is a responsibility of the component maintainers, and -it needs to be done before releasing a new version of the component. The importance of keeping a clear and up-to-date -documentation is crucial for the success of the project.

    -

    The documentation for the Kuadrant suite is compiled and available on the Kuadrant website. One -can find the source of the documentation within each component repository, in the docs directory. However, making this -information available on the website is a manual process, and should be done by the maintainers of the project. The -process of updating the documentation is simple and consists of the following steps:

    -
      -
    1. Update the documentation in the corresponding component repository.
    2. -
    3. Follow the instruction in https://github.com/Kuadrant/docs.kuadrant.io/ -to update the Docs pointers to the tag or branch of the component repository that contains the updated documentation.
    4. -
    5. Once the changes are merged to main, the workflow that updates the website will be triggered, and the documentation -will be updated.
    6. -
    7. If for some reason it's needed to trigger the workflow manually, one can do it from the GitHub Actions tab in the -docs.kuadrant.io (Actions > ci > Run Workflow).
    8. -
    -

    Communication

    -

    Another important aspect of releasing a new version of the Kuadrant suite is the communication with the community and -other teams within the organization. A few examples of the communication channels that need to be updated are:

    -
      -
    • Changelog generation
    • -
    • Release notes
    • -
    • Github Release publication
    • -
    • Slack channel in Kubernetes workspace
    • -
    • Blog post, if applicable
    • -
    • Social media, if applicable
    • -
    -

    Rationale and alternatives

    -

    The alternative to the proposal is to keep the current process, which is not ideal and leads to confusion and lack of -transparency.

    -

    Prior art

    -

    There's been an organically grown process for releasing new versions of the Kuadrant suite, which is not documented and -it's been changing over time. However, there are some documentation for some of the components, worth mentioning:

    - -

    Unresolved questions

    -
      -
    • What would be Kuadrant support policy?
    • -
    • How many version are we going to back-port security and bug fixes to?
    • -
    • What other teams need to be involved in the release process?
    • -
    -

    Future possibilities

    -

    Once the release process is accepted and battle-tested, we could aim to automate the process as much as possible.

    - - - - - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - - -
    - -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-a1.png b/0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-a1.png deleted file mode 100644 index 05edf2aba55ff3a0415fb13b2af6dda3cc952284..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270738 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%0DyeuNjmt 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ⅇ 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 Z_tnBQA0z6XE&%_W?RW1e+U9fle*q<-u_6Ef diff --git a/0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-b1.png b/0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-b1.png deleted file mode 100644 index 960fd827f296dddaa9c413e7be770d1177f3e8da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275553 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%0DyeuNjmt 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ⅇ z$PS$KF$b}OJwdgSart3T%PgV&oe>$2vw$4T4wxNhsQ`j7Fj23m67|r~AQIVRm5|6X zw^JNQNlAP@i7l}KDl;CSgsi*fomwwxVKOlpw$r|=p$)q=UNf%zMm zb0kWAMz&kUP(XHM;zZlQaTnIYyp;imHWlE|CgWGz?C<~O?|kH{q}Q%8OLeGg5d%fX z){~g30_{(;x%hpY-9|Y{nukLmJ2`^1i%J?bH2ANu_*EfC3hZ4H2L6dK5z2svUa>Y` zWTkoJd2_=QvGI$~ z<_+$a1Lr(?*ZFEQfPPQ)!OaS;;D!~#&7Z}c|FKqTXwfFmPXZ>qBgB>HKX4G3u+|zF z-Y{;DRH=)hD!F-#q5Q?xZXKaF{^tvjkpr_@0#ZVc3p8;u_p&g|ECa%(aGDI0wwx8B zLZ+CmAZ;c98@he39e#iIJLSC^C3u+z;9lzp2a*5XwMmEpN%CagI;OnEQYmU|8WkSKm>xOPFk%q$6`v1r=!lVX#+lED5G zG@iXLh?wM^OBqpQv_#yxP(bxT|m-|NRpI+9qQ*fcY%o=P=Mc>@R-hrp_j(}}f z)XQ|W3T|*R@hwb2PsYRJeqp?2vtZm@uSg2wALwQM%bT{Bk4=dFjAZWqX=&!KfEFFQ zo}s?wohCExU>NjBPn6D1My7L{eNX)3ebFcYBUGB-wdLF3rcci*p?b7Cl5A7-htU;f&*vYh)*gS!m2L56mRp0~vU9$eHxUKb1 z`)L~H6JZNrCl!`9r*W2Yz9wd6aa2(ey1h!my|FBVfB$qUPZY?{Xwv`GA2jDNQ|^%s zz}lF$`mMQdxCquyLN6~&?^p04YwGIr+@%7N7++{;#ZO5;WiOv z3lrO0dgJ=8x9l8S>!g$uL_>3URSx&}^2@+|xBOE#^Y|;EL{&lKq`OJO&p+h5id}Y{ zT`w$u_so>^=?=AA2Y1_B+*$EF=GD7?ivO$x3y{MIjIo1DjL-jVt!DIog%DDBo+t56 zL~HmHrBTTV-H@;~C@n#|7(CA!kM6oo`*wc+sP z96%y-AmbP+&}(p8689aZEg4BABPx1#ybC@AMfsBxBEf8T}gLf#I*$^!MH!T z(>G!cKHNL54fpco|7{I`I?*j}au_h5LijV{KU)g}E3Bj^JV1TWT}o?a9WvN+dStaA zjOa-$@nw6yQ5H#?r|BL>s!jQ8h!9x+ei_bu3lVm65+4Kl!tQ45y?vV){I3Hf@=k#ddD^rPg+!~MA34VRs91-^ zLOv;JPaw!>=_~Z{0-4{+4?qgY^WgZ`(Wf2^MZSa#f9qQAaLLpX;4T z;@_Lba7Okc@}IwURVEzvj;y7tS<2vJJ6_`w`_`v4EFyc!Dl>ezQ0Gn!7!%B&t&~4! z3ffCZ{IfRT(STj6d1K!wpqFVuBKeO{zZFZ%fgmZOA(q=#q*yM%!uwV{S$M_HvFOhn zDD~;o(dIt4erMA5u1oOe_Vdr92N>xYefy&7V!O&|HZkJV*w}d9?z^xY@wF}`3mhDb z5B(Oo{p?=eJ6-?pCwIUc?^`V%1C_-R>aE|ikbk`^z>8lFO0=oAK;Xv7$?nk{{fTvH zPX}z-rZJ`F)%U+RQC05~p8WG@M-1NLk45Kr%5^ZBNI|H)qNMS8{@- z&E}7^m5$yAa(-H)Gz-9!Y2(z!0xtJU>*K$Lng0=3UKGoVMeyfqbrNw%&e9p|3)+n$ znVMu`L$1zfT+Q!!+Nyx}(f=IlMH+u51WAW3OIN|y`ir#JdL>EP$P_uCMb9`@;7D~< z{sevWc9Q=@`-FPHiDCsl-~*yQ7!iiQx70i037}0dmWz<1*Cmhv{ zqz#|E>oWyRcvR%yPX!!l4XiK~{lV2khcZX&g6YP|*O(KBb;1d6;-0y*eFb}e;y;-P z3W3+w|K%Y30S7@q-{gpfwNKXO@z2s;KN04nSFCRm!JjSF(MbG!ZBh!lW@oAGT)&ly zy=klG>j}7L;7YG~eyjuA=KUI$T1%6pfOUi`{&qBzTS6x2$#_vsF~P%)RwP9K|D4B~ zfVcRgpKh@vxn+x3TgA>*H7SXKNhNBy;r90Dyd(1X46Pu zNOx}=8(#wYieiEZd(~4hin4Dz=sSB$67yF!*s|#x1w;6083HFCXK9;YObTRZciAx< zg$8C@R@;=L;z6teos2-0Z}i(xJz^}0BQ7o;(%9D&AJ;WQ^#0ACC5ZMAeo_b$I$SLZ z3lpY#aYEf7o)We4kfe1`912)~dhYyC05iY?AykG)?Vl!WE-ZGepD9MOHNIH8vA&#G zQ}>>p*CKw`GYvtK0iDwo`qgH%9BD*sSC;2!C}_3vr`Q?@f^(r!;s0`>K?LuWDGkb| zWzlBSu(})aK)I8-_iLxZ_xtvd+aMz0Lu&Fhmp>M5X4aOPwklqBbPeJ)hI5;xST1{N zW|p>E9?z^!n#c5pTyuAPGfbgisE!Jo zYq^f~NYDN=7KC+=KI36gY7bHmY!y5s>kNLRysv)##&)Hbxx^S?x@hzNKKAw(1OUU2 z5FTRmxX*Tn#Ew(jr8}3pb|K(R@=1Bd>LcKzlNv#$8?9q{|1q_^*Zylg2M3HH3o!Od zY2az|B2Z#mS(RDKx075*d(ZQaLz~xmA|6N(62X2vHGim3sy1SQ2_+&TAkwN+ax=Pl zJca(m$LsTP{`2P(@~t}jS*NIiQbeSg)w7lde5Ri*O)h22>buByT~a@NIhdqLA(%eIkFKQzT$p=j`b$g;e6hIfBV8+%hS~fcf34f6D@JlM-b}rK`r7* z?Wed$;$Gm_6wX7NC!$R$I-yol9bD2F)v#J8&GMP4&n&;`Sl~oLtJDWjJyX~wc^Wd2 zW(Wlv;f3yfiD4~bX#|5`-w-~Ea$WD#Hyu)DsLm5wiO{@DiS?#$D4LaOTn+NM@+Y~# zO}*4777{z!G>kQ$c zE}ZBJp4z*Gq&TGT^)Nl7O#?{PUQ3r&af9XuTGibiG16*m31gIk)&+c1Fo{n?YSKFw zN%-ffrDOLK?=#!#U!ec1FMa}afb7cw~b&OCXCta`c zw(Rt2e#t_G7{t?%H7y4?QF{nOJJdbGhu~d^{(Be59_qr1hFP-d|43jd@`>bw6(#-j zLCrry=#+nUt3nnf|D~`)h&;(FMf!A{7jlH&j$+?C2AE2T${*-)wU}{6M|Mqm`#+dSI4^HNo>`bNtBv$!okT{aALb1AMcCcTi!HLZva<9ChZ^C>iXT(t|$4$!z+;@__ou9HfSRD5un(XIx6F$s& z1e{IK*Aw9C#472RLJ&>F{H*~c;)k5TdH#77#d?)IB5CGP^BpZo)PQ>Ii58M{@seIt z24S>McJnDw^(cYWBN<>j4VPg_2X|ncH_7OkLe}bI-D#8u+3HTdC2kISj3qMt{!&x$ zA)mXtvQ*I&**Uu4+wp(T&-y6NK{TH8az$ghCrG#sP8_dx-jV!VU9aCRwR8E@4z znxy+BLuZ%|OJGIcPA(NaRLP}2F1{uuEi`t*nd9??<3Z~N0dws=>L>+G+8pFTSvjrPP@dcqX+tfx;P zD#^%Tf`SD3KN&xbA7ga}OvVPn;~1-1pSlfmVI-`8?}&KZL1|4@7%G>i8RTrx0w^c} zooj&+HSFO!zRC9$yTS^h2{{C-dxN1sSEb`uy-_$)9G8pT%gdPsCIQ%{&p zHH9BShFo6N>T}ABEiQGTpu7F^$2nipgp9{+zEvGT;~)~XmiBToTz zR#+TAwk^zIol@3vER>I}?8WgFjm|&x<*9pR^`A^9Xcu$aoydd>zS- z+Q`p;y>w`tJ5h&CuW?Mr1q;IuT!pyMU;n^Q2wI^O#1%y@EBI1T&52HbsF>=-lXowg zly|(p*Erkbdn!aOVRBgxcI#fFEF6Nilj5q)oOzFf9vZRI%L~R)aot1j_c>C zGl|qH<80xP+3OY0H}Bh!!SXrApdJzBqxaen3*4#JNDqy|*KQfHy^eVo6Hx?dku+o? zY3Jo&=`C*MFmvB!T+;BR{vXb3!*kZK?^Zyb4{%Q6-pg2$p^HN0C3%EA`54(y(*JA> z3NuvFwi3R3-^r6Zz`-quDEVR=UF`IIV^#4+m1(^Gj?<-rmPy5BG7Q>68cHLl-o_-) z-nS|U_bN_IwWOGk(re4zH`|r@9XyAlb!{&x-Xhs17wr;NTE&NbtXaH*H>#n0YF@BO zIPM;bY^)Nnn{56?1^XQw#YgL8;y0&f@a?tx$)_Es0(c)9<<^&uQr-{Tw8aKI4HJt` znLzk@y!EPta`V3+M!d!FQ3GICxyHQ+Qa@d}%^Ujijt#wc^QCt+nSL6=e}(71S`716 zI4IOm1PE$W^0kH0Lvv36_pEGiMfz|6b?;00l!fkgNAVV1us7m5imztBbak$hQ_6K= z>sZ=OLF#yNA~9~;HuPeQ0J#aM7E^@ z<&!N(FS(s1=zjXX3oZiVSkd5B`}0BqJd}_gQKvR+U#^00gU9DTY$nenCO}jj`N((pWKz6%~`K5Jfs(*&i1`tx38_{|@j6Zs{U z%7B%!MrRFR2|b}#&!G`wGGJH^VYX63D?Bzq8sH2g4sL{ zF$DJveQ|w{#Z5yIa`O&*kgph(f{sIPjj4mG@JqsCo=PrRyuq%Gfa}?+I>e|^iUl2- z0`m$`{v*NmQzBNXmoo)s5dyMW=(_F%NueKA-9Pf3v1r2fDpFL*VNYPkrwlR^Fqn@2 zVEE-rK9K{?oCO8*5(v>Aw71bn@&`fLuJ%`P`Sr(Zdrw4W$WxTPTI&4(+1BdoINjA9 za05B$uyDMxxGbm~d3z&x*i?tYq<61AhCiD}n@O_9L4rYnJqn-VLM z7>m+8uWPCRFQsieZQ`YUy&0Tf9Vxq|A*dz76U$%6Q|9@rBkbS|QM~YWDZ28V{$-EW z_|%M}YF(=-hh#={6du=!k#e73o*XPyEw?adg7jt9O%M6Fvv+M?+C&|RwRTQG`@a5c z4?@HPTy<^H%`0%^wa~{E3aU1RC~uzjpRdAq!0~opzx6^!g@3w$BDPG2a=c$TU}c49 z3Zw7Ui1|gTLuyCvwzG12wm|7I5pTE0Ug#x;l}L)S{_F_xYS|v`v>xHuwHXx2xBgA< z>UYuJmE}Ii9Ho)1&OiJFh%d6_8*9`tuH9kgiw3IS1XVlLxf6LFs+-Z`k?eRlJqdfN z2}iWsRFm_XybIMQ<}oy?+jS2oWq|XJ-$TUng4J1ei$-mMcdj#|rdsweI`uA}3QW59 zadhXu+s~LH$hDCE5dStqoa}ltrLv{UM%4O{ksJ>Gi>tj{KnoMv1sAtXXuyN>I=zyd zBre8><8TyMYFR}^LMKD!S8iR_xe%nLhw%%UJ#SyGrYi*YC$?hFLyJL12$oO3wTpGY zW~)K7K8PR*cbK1{_!am`v}pQ7mgJ}zPAjf@%CR~@O;zX#x73=OJy(={1rLri#U1ZL z?bH5+b5cF27R>>3G+lL5yV6WqeP@pa{tvE{FB1;FJpSOS{-(cESj)+_Y}QcGsM)*? zrT*(oQG?h7>b~?0c#mmv43U>u731W5=w{OF8L>$L{s^kHk`8PZ+Jdt0M|M5& zd}JlDY5#}N1lo2qsoYLZR3?L`@cxJLRVI}j)8eO>_`>2^hNM18rx@|uHtUUSbLkz@zK;X2>U=d$6t?V;m-W^yIA{Z1%+j6Ot1 zLM-28K|$rT#orMp6Y7IBRNSM2hRkFX(Br^@f&OE#hwk~Ly3wN7CwgH5C+>7;1OZ`N z#tmt5Wde4uvgTXi<*K3;$1+%cHhRYLl0qw~x#%lZ6HA9fZ2^oYpsjLw}`| zKNCw0iif%|0LWPXOq2JZxXl;84)Emb4vvJhI>^PQi9u*@xdqUJa#J<@VSt#H$k-6| z^@o;QP{X&YVFoRe67e9^p)~_~RU?QWalsiC$S)wvh4tCsmmL!`fGdRk?QE zN=bK1cSs4+-H3#Qba!`m%A!F;K)RLg25A-{-Q6G!N=cn(8GG;d+wXVIpYz9SU9Jn( z!yR*uImVcCnc_XXH+FM~MM3Udn0RBQ=-6O;C#KC87j-y;C_Zj9*6IvfN5aFk*~ zl8Aqof;Z`OmgNx^|H3r&T$AQX&craDbz|yWWh60^U8^9<&dcdRLFO1M^m7lf(7hm$ zBxUg%CgtbsJ9UN%RM9N>gmU*-VhFI$LB?prWv^g4QI%+^-uV&VVN)wKzT#*H^r&GKjmH07=-y1#_=Yt7k@?>#KtE0*tfZ7HDuXwmzXF*?%C()8`;xf z@G{W+KM}tX%Qws_X%>&}Z&#r{aIB;r-)~w0y7w^3^ymkW%_Lnf7J1yK{D?;ppeD_A&4Vy4 z>phKogq+plt7L;UVb|ulps8IDdR#DxyV7%zq-t!pst;!a(;fN|Uqq0+Fk_9=bJ|@cv0Tel3DgnC{p3(-`aF@ zDL58n6jp2njOx}tiEIi!^KaVN(IF&X?+9IZx2;Nek*etKZ zUI^U=u)q0eNcF1Hu~icT3x_1yu3kZ0rm**W(v+Ca+xk@!SXg+f!wzZU7~f-KbQrM{ z;H##Me2vbt#lfD=@0FK;=yap+Lt4-YZ7R@_-ki0Mnt+M5((g4p&^9FT_Oj#V- ztgo>`c2ggk|EeK?7xyyl_(AbKNos4WPmcKnb`6hXgW|6yAIaT!H3nC3!j!6nFyh5$ z;zVgAtP3G}WCXY{UCFoT2vjPj4a#91KfH~`wMKs$%p)n$leuoDdP}6I&8lZK(-m*f z?WN`&>fEvMu#m0Fj~%6vdAYumGE1HY&IhlhFOW#H*9eVFwF!2Bsu5D=llJgQGee4d zU7WqbJv%8j`@V$A67jmF^q81P!H4bmRPo^thHeC1aejK|ueXHXs*7OahCDW$Kz3BK z>s*5Yx8$bKB$?jyZLvylHtluMK~uBcUZeZa614MK7AV|f;%uU0-A7klY1V3Lu_(ML8X!zbwT`5J+}+sl+%;=@RFedU(O zC#=`6Nne7Hdm?Aht7e7_(?6F5<8UugP)5s2GXjG$VtZj8cB2hGEmx}K8PBZihdRi0 z;%-G$E=d$%?!?Hn-3omacf*5n8$+2%iJA1fdhxrK^Fs7^$;Mu6PJ=S#C7oODtBoIp z(ngD6{&|$ZK^#E)d8*Bz52g~2$1BhZ3~`R7P$`qMZ$DuMo^S5#dmnzjoRVJoR=T6} z_TXA!jtbEO6u_D>b>wM}d=`nK07o@F(Wp18vRNI&(E&Q=)fx*e%;YSAqdIH67N&d( z4CPBU)HNx{H?IbAZ(AyN zVeTPQ2~FSgpulld%_BMf8te99W;oG6;)3c}^bdYXLI9N;EdOz zk-g7-3mV6^Jy+!CbtAEp6I0)~$uU2(%XG>s@XJio9OYS6ldp5kNQydhGo)CNeEPm* zlaT`l11n|LC#Wj>lOy{hyD=Q_?n>_0e^#254gm5BdBAmr?cHWp5W$VIfXAX>w{&TB z%c+x{sS`$)LTbAu&i{N@G{h|fk{CZ~T`6rO(>p_CoW9SmiQb)12g%vFcrABu>jf(z zIOJUw^d&qv&8v}?l$S|OC&WHIT*OSC-Dh*}5Kui_Hg%@Ax{{&RbIg|)eEPf4` zV8J%d%<{%Ch#OkXP0$F1KkpOp~vTTed>CS8?Z z1EUsv+%AZ`#kKgG9PKpP*~S}}Uird8zSbf6^763kI?~hi{O`rwsBZIW-lO`VNbE>k z-!hMs3f8TbYQEXVz=YS4c`uAGEkz$vDw|X|jB2b>^A)x_-?@^I-mh>G580mxweEIP z>p12(cO<6Wj3L384KEb&D8C3xNV0npqA(T{Dg-(F*587`AK3L1I3-KbQ85Xn>}GaO zaxw-Le^*%!VFBE*R8u|Y9>xZV{7Lp|sdX#_FZdZAC9&H50@4n@fpjh9YUXXc5m5bp zaE&}Q!LncvED$LEG<@q70$;@8ZjBQKj><0wnX^i-`ypO_raS?2_d&-B`0D!Sg`*V3 zM5vkgkGFfs2|is?Qi=3REG|j&F=JF9n zvgiJuQ8g|_(LQyFd@;T=R^0kK8knzh{l%hf6Ft#B_r~j}*M95h(0hWAEzYIicdFV`=a$0%pE5P>Yz>PMjrc?E4y(o}1a6s%HoB*&%LS6FugOnzulo$2qNP z)@u2FG|h|h(5UcPcTg|0%I=hm_sT~;!%4&5M8j3+{@qu}ry)*#j?#njsfRS2&!8W$ zFpWrX_5H|dj6LK`uIK2g?mp500uFb2;u~x){<`WS+rOfaJk2U9K(9&x^y=p|``Ln+ z!SrwQO$O9L@+KB{tz({AK+N|6V*YR0s=@iP0u|9CNkk=MO4Tqp!<^*x;^;gq)%f)3 z-k0D*v#rs$tn|f7-FH>PnkUf*xu|n8Cj9Cn&Q;NM1QJqM3=VOG^oy9A#d7(&`<&0< z)zS7|O1_yT7I0F`m~oe5+x&CYf+&-Q=t_w5~ zQ-UUoIf#RqEcu?l&wRBZBc?iCBOS?KH|#}u8Aqi3avI;{mb-j<{ZNbZaS$`=PE-6` zpZW^CtIwHp8Mx+l|GgLua`|GCsPZsjd_b|H5iNUvaOh8}qTL%18OHkG1G+=|Y)cPf zG8|Q4piIMd6D=ZU3Ef(GQ2hK`EaIyXjsX`V1p)y0>l+Dj7T&zM?c(`9@KQE4W+x-| zN=3nSc3D*^@b1B@YOMjG7K77-etkq}<`cNv(3}rl6a)-N1J(PkdEplgv% zxmouk7ecIp7I^03U@4ysx}1ifoYz?^1v9B|lBl0=v~7I?*@B<&V@len#p^howZ55jD?wC8t1$ z=ye*Y1$+hI`#VRHNpA%yyL6hP3AFgK>O%|7B4{Rc1u-BPTlCS@zhsQQGFHb_mXMef z{Zu&})~NU!kdV?r4(K)`l~C&DmIYCe1b|2++z{GpY@;tIN^K>U5&mK{JZ`N!(O$Gu zKq(3p*V1%=f6|8G-XmWCdZX~fl~!ofOvPhw{$A#I{Hl3uZQTNm>Blujo9;|pv|&ej zSGt*?63ONWNeakX(d{s+jiMNqm1R)1>>>lqwk~UsgEk1{BlqEjs2p}GBdXxjH(-{W zLNHSkE9;1a)C|3VkEOj};fI9*IT}$h5%TIcMJ1-REBm1VV(%}=3C5P4RfZM17-0BP zt{bXPk7D5~0X`-Fs|{wil=V!l&#AbnGeEm)C%MxJM!c@X3bMMVQO}Rsfosg*$GQ6<`|oU}A8>ps z0Wk4k=Bd$gh>CzL{>lX$I{`wZ+rSH%_JyGMh+DoP zQoTdhnnO`Gr$co^nJ4qR21iImfLM$h`7s953L+EgC~Z0dWndud3`sBd`j(fcE3;MT zBhf2bO`PkuTw(~)jMj1k&yb{;PG%1ps0bK}xfqn#w)%DXL$kwT4k-8F9`J(D#BBxn zq{0l|gQC8Eyc!o>CIj+6^oHQKdipCfok?se4n7{Sukk;a;bl*k72%astwJj6hKXM* zEi?`tP(HA}+kYC_Y(!Iw?ynQ(jc?bpmdi;QtW*Iu$QyYkIjoK3-lplTA-Xyg-XkWwo=T zNN*z#^uCerZBB8Q>K&jb$tDuVG0C2yZ?+fKuH{n#w@d9WHb&zaX~d&m6d{zz$~chc zPzB*&MhZ-l0^qDoIDm{Bm!A6je9-2L`5~d1%w-aDG{>~WCE(bYvfqaNrdqXvwaJnkRJ0Kc{7JT>0c{PjJ~mAsDbbSeiQn*#EaAt zSM|><0Psx^CYg~{<;$f6`3{-Lj-AjKBI51%BUU(3Ja|!Z-riIL#d05TEq`olc44!9 zox}+vxf%ctBplULFQ1&Jad79+p2}Ot4v<6`ajJ7WIrNl3wFy4EGoy?91h8STJ{2VJ zXzCQout%QSCJ2_Y@r0Ur_hu61Xvv<2ieb7}dpD~NkN(y;sUg>U_RsYW2#W8e;c2-N zSGCb7SA~UbK5m$r72i;^kaeeCVXv+1>`_ba2srza`pS3p5iq_Uf|8mdkS2+k^<&_B zy2;NoZZI*P?Bz(4(*9;~AeY)A7Pf_%fMLPxR@Qm1tT9TslC9HDno$AcwnnfejjYQ4op%z(U9JFKhbzn8j zY}~jPF{5loSh_gKj@5?IaTs($wsZR>&HOz#@cIY|eZG<($BMymdgb1tF|}ArB+PWo zg|kQY2OrypD)C5tql1!gYmEjs|T7#&MI=UVsb}2mD#x zTFZ%qfvYEP;GuwQalw2Ee9PW^z>^`ib;PrSVAv;!S9_Y#L706(@r2*FQ(>Nh0|>q_ z?2sgZo+=z{S0L;2f^TvSHbo3^Ni}P94R@Fjg2fx`NE@t|&4_X9&}+dcly}X2S=K&0 z>{vM%M1)Z}PE=?~&u693@KjTdV}Z!8RjrFbqx_5m}}n{_W=ZNaDLaQJ7Y zQK;j!)2;lSYl_lM-D-tmZ+>$kqfZcCvE?}90;mKqL1?D|mpl69t2#@n7@sTQe9G%# zLWGxl^BxtUbwB0Y$PuMVQ!0ro5mOurBb}w5D~*5Fc{1%E0_x$Y^5FP1Q)z=#Syrs?b>6Jc&0n-e8}g$n^PsuCO^p#s_aXf%7wYm@!`362y1u znK@4JrA=-~UA8-Bt}Q{_(7OIL>U$IGDeh*u1$MH3Sc{O zM}!HTGuietBd}zV&QOH@LX#yF2KH;YE-By(qzm8a*r98>Y{}(w&ZJ6fEO+io(H>qK z5$s7m@6l^SY#oUoc%g8g!skuJSR_x7Od1K#>Ua=Rb|_Zst@CWU(qQx2)VqSA7^g#w zsjB_Og{tjm`6aa!uLaR%Z7xRhZ)(TSJjsN2wgt_WGMn_wV`bXARfx^4DuqUt?(mb2 zJKnVB%YFk@h{*9V;~L-e@C)ji4a5<0m{_6*VJ0f6d`7Q@o;AUY6US5k%FH|CH_J=suHM#5#7af&q=?ZsL9)*bz(_)4Uq3B(C(R`a*D-;MJDv{2@gbxZA!fj%~Dc2MSS# zNK)mOk&HG0ai0Fe<5S}7`^m{k`UU%={q^(n32(p<^Bv3BTOTvI-b&bSQRk!1QHv5{ zGTU@(Qahk*Ci!;ic7U1fZAB8n>sVyi5$g6&Hfy&o^MhOVY&I0d;25$#oJn;Jet)WX z^yZW*L7)jQg;E8KP4*m=HI7Af@}2Vtk!L>DVDqb@o8eBjQwS`)!97WrYk3E9=c!4q zgFrl?_j2>Z=`{d9cQarWe>v62q0q5U-WZsS)Jrj?E)ozfc8S|@FNMB=ncx5%gWSl& z;dQdmZ9Zx$>DLSdm94mKTK)uNx9>`c8;;3Z*{GSP>*B+#e74Asfl?uLWj5f6F^QL3 zWGA-z#W}`#uO01(R;*UMCnpm%Ms)#-sKiH^+P$0_?hX(aLGOM&ic}aF13!cby?ps~ z2zT3nGGk^#K_=K@;i~?P=}U@k%+9xbP_qlrjQjgenSb(q5G3D!`sD$v=Yc9ml2RZB z3KQLRr0oV75EH&?lo31OH}6cjT4yGpPj$S?E4 zUXCdW=j^7IW8z>3KX*iRfBBmL9v8Upj2v|wdU2FtHCDFQ4mD{)Cgx%Fq%(oAe+C-O z{qG3VK7#0>%?6G6X|LyHvZHK(std=a_ zoeM)d{i{lJcO!khP<4(d8^C5`o^+trJ2}k}CBVpDcYsf*ZE{+m62eNdd8foid0ni4 zOp+_kw!hs`HDGKyJm7m}I;fQYd2ZrO)6izF-c`a>qXw;?$rusgG}+8r?uzqCPp0R9 z&pE=}CSvH;<3&MxlJMT61^+F>E4H_BOS0n}2mm=ySY zl8jKMi!b?&Qp;s6TEXd$Wd%KA*NJ8`k?4ZzjTB&{?Vx!rEuxf!8r*f%2II?s_i@5z z1Pn!N>%)zyiI%&VlNLLNM|I`In|A=NU+F9b^J~FihC!9fkFlyb)S+oo=AH=0n&Pzm zQbaC;TrD`vYQj*cXcDCspB1j%j0#dfkH|T&?t%vNYT@BPoH`y!-`cs`eh7UuRuM)O zd;UEVd_hEgKg4e;V!q|45__8P`!KagLU5zWFUOsBT7Wu$V}vOs@M}T4OYpjME1NDc zy;Rpc-+Qe;aw81p&@%&Q;{F_;_-+r`lu6X_RHpeD%2azqm|f+CNCi0lAZye2M2L~w zUOA>f@Jta_Qj*ugQd2iEF?6x9I&mOoCoSwsrB9Q~p^`3?G7O(ZMAtMoSpSs`ld}2Z z2CiXLF|G3R zayOrwX@n4W9DC|TreEwOTNfzx(OeYl2N8f~ZEz}?b}Mz=o_1c2E-%L~c;|&87uyq@ z^nKjTvN~NwHClRQg<^h&q3=6_l-{)y>+}%|9xD;dNm;@HG#9?BQl*tM)UvLth~-w< zL|ZeV)TR%aPJ{gIGK^Rd^hp(%J%`&V%Y`&vvTev+6@Wj&cj;f~S-5jv_PuIx3BIf< zu-Nem27xTF$cLX~1iUD0N@AAwZd>#_+t8g&*DX`!&d>DsZz5`zbc<4X?B0vI(WLDn zeADcEWxKD`@U2Qu&~c*;tEI)KoSjv3=cu(X<2ZKz6?0DVGM6`1RHvgzm6zN2BbP{L z*3~aVaH&eK#tnj7wUvO`ln{U*>-V+Ytuc?R`St$MEju7A%i`7 zii34R0HrTfEJz70MT`MO1=KGm)1~6+!=ilP6;|R)(=2pNU`40R6Ib(1QwBU06?Vf& z5o4;6>7!k4IbI8tzgA6MtUCU<1i=VZo;|ZBI?o4Ao##KlKj@4JMjhFtLyhX2tRA0Y zS-gLzu$$dkw_XCle%<#dCjTf&Z=4 zzWU^*jxxVU|I$LhNt5i*Fx3`d_G|F{0LyR5vQplxm}zT`c?Qk4`%-`ZyxHO(yd8@T zc(du00f8La_!}OC!2sXyJiw^LgAfSt-bD3fy72UkpYOjq`HCfiz%)5N9)!t@#$fQw zggfsW%FE+GJMQHJ)kirox=4I6pzBFIVo@0*tfm!C6+x5JPq4y;YWlZjSfc<(aYWZrPg_4IHRN}v)2c0Vnz`eY86&HwU)2RvW`gsI80 z<7@iiQ#;rff}1zGI3VO@rz84C+fSJKiuMk1lN0sz^N%Ab;W0h3zeb(+f0hP-yYiKc>v;)MbfQXLTy|_SZ&T(yeqco)7NLIV< zWi>`cpjk;lcKqNW!#lNvKf<2cKeB-AxRq?Ti(@OCTFebc2(|MqKFZ5VT%?^p7NNxJ5Wmk4y5$SX6U*m80naXlIbhb4-}L+;K_FLO>Q5v4zRh9QuyD_#n&P0Oif6od zAsM3_JAk{& zOUDTq#8+WkKPL*uCx@bg^#L$ugvzEv#^;Vol5G*g#J8@s2g$)LHs#W6l(szFU$j^i zyTHpN&o+WkOc&;a*|Bqm9C+*OTPEZ{%YeFI-mJYc|0uY!gVv?PF}&di^(8U*^HOrG zV$aoJu^f-F27X~398ktsXF>^D<~r5I09rQq{#cv3Dhh`SmY=6gQF_s{ZQom_EEDJM zpx^G~IvnDgpzJDgRf3bau%Vl_-MVzHt3U^5VOfnmB{&7t1F;nT6--T4ICabBbn>9w zhAO4I%Oo40>WhjX*~cF}yyw|q`6F4Vw0`W}WR+!dc}Hl`3B&a8;3G5_M6OvWuKih@ zU5J@Y!Q@xr+eSk^eliV;BAtJGH~)0NZYVq#bFMJ+;?+hSa5;;TKz4+iKelQG7#=3_ z=^w14o%}4Uo+#U;Ki*>fZY-!~W){Ijn%NbX>RnQBn)}UEoxDL@T4G>-?kQzjo`60Q zeaTDt3ksa_9}1rolG(=Ez+KUelSC-9m*sRytjaipl+~dwJclUVnQl#0_IHXs)1~wn znlEtThbn_b9UUq8`-7+D6Mah!B-CI59YO(LKVr8Hm>tWCrKz~tvS8AFn<9qA$74aiHyjZ0@L9*tt@Q zryxo7`K4S%25^A`;EF{_n^f7<90lU)PD% zC5fVykqnML*Km*XEo9Vx&O#b|80dL3ghe3n_=)D`tODU^{}D~q*;6GSo7NJd7N#T9 zlzhpu4NdVT4KlS0-KD~+cpT<0*JhdHdiM#`IZi^*>VDno)6ib&e*oU*_&RL>L>wU zTmMLNCx&?sMc9tG5%9DrxYB&dkD(GR)4gVA5s(8_37=F^^J1lf8_Q=M2!!pKCEP@7 zJ#{XsGG&^hMNNWybxqt7M~)eEJ0(}6O(eoSXR)t}-QYY?ITylx%7~We6hPbJ@$>!D zQsnUDnbnyOF0r1BZzohwnRuSJ1~)1!#m#6`0!=PgPtjjTWK?x z&C+g@b0id91ZNXg@)$b+p)Dr8Goy;47)Sp$rO<_QBPS!sKP&o9t~KUjVuFjY*4{Id zSfEbND*XqqBCH|9r;nj1XHF9-pR8(o3OVkrx+o33Qz)wX2F?>`D48(ak=DktR2QiCeD%8vT`NCTP zcN6HxdEMlyvkN7M$@6Y|b;9MrY6p}%6S}kdroD0W6uo2bfp&*mZIElsdrpVMzM~sy zR+Jajx~!fhG;Qc-O;s&78=@ui4ta)sdn-Q;13m6<|FE$CfzExUvg&GZ;3eK5IS=!t z11j1iq2=Y`&V{C?qEO6_y*FXl3=If4lo*qURJx5a@t$%Z3Vvh+RMD`6zLZeXJvhK& zn6vPu{$um@$lZv*)M!|v)PvM3AG*9H@6Qw1H05d6$5~tt4#xbab$sN{aRQYnjWUxX zhc2=sWS#Ts~rh0o58vc(aI!Vc?JiKcX1^R9qyHjuURt{Y-RhOvZcFu)c?X zzU@njeodkg|8rhKhWZuD*MqwM5E!8RsaKIZz?ZRV#&=sF86bqUb7kS@u(cq(jMJzUqNDuJ3Q%z-Kc;O zFYYj}eO(Mw@@ztw3C8ieVsuAWr{l_N&66%spU;)2J-Ik_-4Z0JD*1@)ks%jwbq9(O z%yxn^XOeZ(@mBJ#Di(kMC7&5y`Tp6Mj}4Q(!N`L!~m?kIC+muhXws z2$;(lNCX}iNN!x(O3vH8vt?N2ZA+?!ZrD@Bm`8PaJQQ>No2 zWo$a90Mye^%m$ym`Rd!%*%QZ&^pt z@0=%3tqj7;>2dbVUsYwuKrDqx1-rqF8=Z^_+t^C0gaj1)NDh#yt7c)>=x+#2XD%Z1 z@+Ue##518{;A*_29L%D^qa#~5eHSfzcyl~t)bit6&$Yfk^AZ$*)8#cA;ZQ?jx2PVZ zsc)t^o1J&Zq`Vk>CO!X6l|S>M1#Mj@m0|WfPN3QWZc6_7@-?M%Z>2DWNjtu${eX9K zmDa3Oh~PNAjg(cqTPI>6^+xM4deQ6c5lqV20Xc5=-K%eWK8;6gcn=?pPrXI_GV|}$ z*xy}fAG(X4HA%u6^D2R=i4))d5CWg_RM)q8Y>?Npv+#ew-~Y|rvb)$DVl|EO{FF(5Tgml%wi;G|cT>s79S$ z;2Oo_Y-O^(!XEINYG2ao&o47l@}c3gCj2rTL=)ngXfs$P`-kOwbT-B6dTw2fyj@}g zmC(dQ_*D95g3sb1i~*i)y@gu~7>E5%Lkc?*#?39y_=0R9=7YY_f@O~Ci?BOU%K2qx z^ZW&godivRlD@1%I%SD(-rgVb6MD@l*Eip;IM;k(s+&llJei!jW8N!qr!GtiRSCm+ z-N2|E;&=p-(DBiEyHvpbVON!6Qc1s4oBJ(m{LUiRByD7WO+7bXOWTkW#W9S!B+xfi zYeILiHD?xGDWo1j+xz`E1kkgI9X-|*!%mjG28TMQ?;7TljDp?m$hM18oOGlne9XSG zY~pg6bi2AK1FgKW5<_`0We>;N_m_q~wCo@r=d^gEJml^VdVsudQ62KpI4(x~GEye~ zg3`Olc2dz_AHGLv*LjV8v%6Ay_&mx`*P*N7Xs_nbuWs{F6ivp=rfKWTIUXgxrf`lr z{7_2;g?H4VImK^nN)h5P-i&0Jn!SEKu{_ws-v?N&e)lY3)W4(!VnmZ-2dLQ{c_Cip z8v-EL$P48PeqSl2r?(t}H4t!tM=7@YUj z&PI4N`C6GjCIP-@<2}bj?Q67pLBm{S{v@v4LZQX{Bd)J1Xa2iq%e$F2DWif9%qg}l{?e)B6-J^yaY&qT%N-S$tqUVdbte40b4x^m55Ys>Qy(`|g`H(@| zEz7MHo@n!gr1)gVl^zpHDg%#DLTBz{p6{Mvd|)>pTNGykBpz2TK69_;-Kgf{N~zsl znL&H?xAX8n+yu6%0iZqQldYYPLLQF_s@UVxsZb1;B<8;a24e_{+)_NvthvooJzNMo zJJdGhaY3k+lulHFmy{r931^Iw3lzlwr|*MiY)B!7g*|3^+q3>8Ch^<6bEEv-KTZ$}K7#N*&I5?ki5HQCcG?Z0~3hLDLcCZpy@gCuJ$u{q>5rqAOQiGOo; z^M0P8bA#vBmxLW%-RR3v?rgetU?)~E)|cnwkyzEM7=Y->GDKG#4`gra#O|BR@0+X0$(wwJnv?mn|VUsxOT< zo-ByFKM87FqO(dnd&INIVq79Q*&PHK{+<`>geqpT=O&u>?xb}jjM9dhs6`Tw!_dY$ zI=8U{+m>>kiSb-|4{UGrKP&d_=hS4a%D2IqW4R#tBoz-G946f*hUwSiNAQAdWW})@ zw&SLgc-t7ht@Hk(^-EJBddW=KPk+RpPV;|A7{;(Z6a?|XzOC*wR*ZsN2WGDC9KFcz zE5X-;?|=D2JfD}Dp^EkO2a3_L8{1Pu2f3tCf3QlY1QfQun9~1H$bLB|+A*Q*5v3w7 zXAGBGupwBKWB*iS{;ul$UKBZ={+`Y3C_LN zoo}mL*uYGL#WQyvqo&7Ag2J`gKSNI<(tj{He}q;~$oPY~OBLq#a%|7-0}f9Pz_X9! z7HF%gwJZ&Rp#kBcLGf-L&JF|rUc3JY$Nzqtlxp>92Z;EjFG+o^ooqRp_A45JKUS0r z32^}8(~vH4>BCN#zZf`m zBLxQCLgLeJ|GHj(y$I0z*^nazJgtF^!aow-ugkOg47v?3>h`+{>b+mHX($0{@Xl7u z8+oK|!Ur__v)4cG#dAU`#Xs#>|J);F=w-YpaHOx3DelFCn!Tg$(JUR?MF)8ro8Zuq zC~#f5fTBW`VVI+p(iFFD;`mmMoQZ9Zvvr<~ zb4HtW!OKt!rD{$#?VfwWKgdEkGBGbTdDqm$_fZ&dE1VV9)u~-SdlDTd z{5V+j`qQURN<#W83;lC!S_iXfFW+h(%(whgm;ANUA~z5wd-%NYf4wPz?=hm@navp9 zznEep6y%ELni-S-9F}YRL55>I3NX-R8RQX?douo)z-93>a5^_)>dWPxN(3((O}uu) zoYSx-Qi4>@w?O)UX84B=|0izBwA%uk+z?%qP4T~n?R0c!}7) zDNKnm+OkQBgjA{m3rA(UcCI1O z^X1vl*7;uW9>?ZcFV=V%G0!)8dU#=Jpc#S^w_VyXHVSIaZF%`xfLpu%j|Bq*q z7?dz8*9vA{_C$1;ip@*?f`Y)^}Mq>xGgG6 zPq0tE7sd-E-}sJEuK}6N1Pdhf&R(g1-*M{Iw?H~&!PJBVnYZwl|K0~5>8yM})+->> z(+E8{KW|HQdD@~}ZwS?}J%|t+Be#zu+5wUttK#_A{s+3rWzoP=^+tFx5vW901zp$* z6Z*)L5BpIp9yUYr6`c~>Iu{?;e~XF#bM(>weDGBw=u%NOWzRgc;|!hPqNAo#j-U0%<-`~rsn_iCq z*~#0S+|^eGok@nf?Bw8$jVV4!;B-2+9K`*0Z2Z0GS?O4iJJa22oPw#pY=<)tb^#|W z#Q6xj4N*E7p((o%vY7&a=W5hg`(FzVh2t~4oCrOFALs($rx7wBG!O^?~~cx zt4KvU!dLn`!Qu5mFJWP!lUR@>e>51BM@jwMQFV-Jm4AIepqoq<4ICBL5tx2$6>z2(2(|F-5>QG>JFo|K6Bo+R+cN zR8D0?_=FW_9a{E^&9A@vUm$l7_(aP*ThIR)T)SV!&Hb4b_BR|BX{H(lw0FeY1@Gd@ z>)<*vM=B<)h9BS9T#jaHhDreHVH3zydF}u0LVx+$zxU>Uhaix?7$>9V&s^(+mQu-4 zq^V}bd-NI>5-cCcB1j88>8e3|nm+>>Bd*_n$&Lr5(V);w!akC zW-uSpsk0zT&S1*dX9BzGlz|gfGd;E4@b_W(lL2m{Atz2f>hEf2o&suPOicA?E_X

    6 zj!F6VS?2sT*$yave%%z0n1KF}pv09V`^=B9O}LB#)3NA{t=6(Fv>Gs z7+)uKOGuS;is+;l0(p{o>cAW%D!(~BP|LcN4jUz6|LIz(R|eT#MlfSAV%LQ6v*+m- zrE0Aj#KgbD=@moZG&Mmyg7eJOdUd#zDqcP6&5O&8&^r@D9x-F+558f*E>&>={ejW% zNFYlr(oAi@HnkC(E?p_ujM8@=)dh~4wza=zsdL-TNn$b^t{)f?hn~^ib0=(aeYUrD8_aAQ2!2NC$Nw*NEw)< z1}Ve?-4wC_Bjo0TJ!Z~hbkQB;UhYUKS2r%F6;Gm%)*cn5+)omJPDh+d*kAo&MahT5 z5jES>?OG8Tn)o|-Wkrfu<41i=(B$t6AbTiRTRKl2S$(xyQyBbgQ>$`q<5$S)JMrYj zvVehgiYPj5_g=6uWB)~;7ApHc+D90Xnjf8)!jU>ZU$3=DzwR?(7rmdH zo@Nx5IxSPZCqQ|;Raj6Ub?xJ8U%0)@rN`?(Ow+ITH7Om4jL)%>nGPP;a=8U#7;+Po zJlDFKpzx^|`g|HV&VATj*uc{AG6<8smI*!MB5UfcWCb(C0Unbk0kKdQ4qvIyVjOl$GSAsIf0rpp$1 z1b0M>T+AY1@~w-yj+dCa>1F7acZH+jcW@G$1QaSD9;PW(}+VU@Y3)R~15OUrIqQz6#>D~j>ycTSY z!+xG|w24}r_K19+V;^+JF0Z<6s=ifw3^$(eusnk&yA3!mgI!i^uu2nCBW5eRIE5`3Z!Y zCud_|Wkg=C_Res(YgiMeUyT+2$g-cY$e-&gcCPSo&A7nn?h9F+N_~=JqeW~HnEqCl z>L|H-Zhb)c9u50Y;OPE<_q26{w7&uE z?k#UVkR*tt(wv+;)NL5F@fI*?%isci6LFVshF%%znp`XdVZjU(S%p?qo<1CM zym9S-SYWx`z4g8Q(T*@9Z&;7EE*foQ{yv#ykfJRjZpsl!swBW6379s<0AJb1%P$DJS!@SD45wlqTqvYChFFw7U{QS#ktQ)x1 z?wjDTed0^XC{Ig*ZM#|sKbc(V5De@nd?5eITvX248x-t4OJ$pEvy@q{3X~C+xl&SP zA#WP#wbQ3Rv?gmehx62D!tuXFQ-KhWyVESYhH&jmz@2*}lH0zGj^_;h4F(c9lDgiD zN^=lNJ3&F-l0E3_x)3AYr4l+YPov)$Q{&K;7EWk{c_A344_1Ie6e`(u5JMuAb1CrE z7Z>*X5NaLXrqov8o7(;$gaB9<>=VFHQK>lXkh%(bCu-)!71`2+@X+++AzF9t{kg*W=O2Y$X&%jgprd^VdJfCoD{PeTLrD1`T^cCW( zr?GAZ_ICN#G8GQ1`fR=pp8AgkTJ#XuYfKkc6&k)mCi+F%t=#rLo+Kcu&ZF)LTf2S{ z&3g6uS2u_4v);n;{n(meOgz^^M`>3N%d%N9*D?nh0wux`-C8nXdlpr z&J{;Vf4a4R3NbYRm?=D&ScKodSjWV*I+7#@IBZ+*Bx1yoBo+JwV3(wR4EyB(W#Y3} zY?KTY0EFA6s5mGW@Hx|t>0uaAcoMLA<>0&o>3exCpL<9_!Ggo8Ck*y!$>)aLpNMR$ z2@Bw9Vu5sW{@YSuI)4O`OFM0ZG^8TBXo5v|HyG26$ej}tm^ipoo5dc^Bp(Fm(bF_iQo{Gd;W0DD zN#Y3!Np&Ol4s0ejO>)bC>8+nELAxxKaxA1wp!$4(Uee?(UY7Mv(4KsY7>%bcb{|NOw2V-OalZ_1^1v z#`nDM_YdO?#yLCInsctX*53QKr`GytBBOA>88PyuXW-#Z+EN?r1o{2)Pm}^Fl#l{) zc3+MhcJ8KqcLT)LQG&sJz;d*o(Jp?+Jz*n9Z(i!Vju*gc%;NmXUAs7{YXbK(?#0Jj zx;u6-h7h>zw#QRZ!;{&J*guH}!s;_7Mf#6Cx2Z7rYD=7z{bsvNWbiEm46t4p0#zC{ zLwT=i@oR{;fyy$E_dcG}+1jQQzYM0BHkpsc2+#u+Pns67CLw;v?niNG!#S_3gt+8? z?)ChI<~&v){@Z$^r5xssda9W}o&UGbV1P>;Dij(UaxlK{^_@$OH8c3UvT!ubkTks) zf#BAR@+iKVZk}7j_2uz&g_Kk#A23a?kZz`rk=E-wX-_hBwsGixufkVqOTneWwnx15!EGR7{{ zq-g>cobjOiHf%;B^q|*Q_iG4}sXe)UJ;7RA5Ny|`e6c6d>nHk4OZ|V=1K`=eZ*QA@ zQ8P+Pv11p;w9e^}&Tds-c#b76O;_w0`v|^B>5P54!Oj8sI?D&Q>n?eJ&+11R!_Us% z=}RISzB>cI=8sGQyZvj=HD>F_H7n!Ke{=x1o21p{9$ub~k$S@8WZXxu<`uQkZ z!VqnD+JZwoPtmrbF<~dhx((MpnDm+9SHn%J8a_R~p%=B)zILZOjv2s+bc52C?Y*|p zUM2@9#pCge_CDw%YUk-*{cg#QU(E3hcnn7PsU3>;bIyK|3!DI_sK5DW z%>KLF+B`>ocN(5#U$d;(6x{FmCf5w^;=TvME}2~PsP+UJ4_oQ1m#5Lz$4{dwM)B44 zlo0rStzaQ^Ebz`$Fx*P{`~3LR%|H`bngqOF0PCS$t`cpEoLih4IMd84Hq8E!5b9U8 zx2j`3u{*Fkr5kfS=Ykwy3@;#V23!6t)==x=scr`wxSMYUPm&Az+fj($Y8yA&mHV|y zYV>hqxh3@YG_IuxL8>FNe)+guwbzGOpM86EC0lL?4Byl9r@dzMOyx42em?I)Rw6u- zrI{`~X@~gxWZWw5|-b@nA&laOVMej5q1owN#nJ4N<8$}p{Ywb zv`SpC1$fl>XV*fKL29LD z2jGgsw^#JILX>!t7*XTGJ3t$zhbD=APrq%n^kJ>0kG0V!>J~dn6tvi9zrE>CWLxXC zAAs&_(12NPV;jZf{6d8IQW<7c;AB@8!9bVSQLvx4|9kWh7e2IQb3ETWKR8Y;s;RY$ z;i7w=BempsluUFvzJxjt&+gE)ur_fHA>|7Ycj*x~B&amWQMJ;`@W~TA3t>KPxsGon zqOsEE`=TZUP-WOsZ7~hIpN>-~$@uOvCkP8O1@nC~`lOalreGQ^^6^V|KaU?}7?4rY z3i&44p!v@`2Jp!%G;HE6sVuh!$K5*XNagswSelJE-C1T>&QFn!#@iYa-=QA65v&hXJ2rG;p$+1t6ioLm{Gf;z#S@H*1N;S~+G?H^&Q5lct znZG2YDaa=slEy!e6=(B(1x~%+#U<{Xx6#JO;4H_J&S^2QJx;FBkM426)ssbTG9T_a z_o9EhXP~+oP9S}d+L6D?aqOu|<{;K6g2-t>n#1m^j(9#k_IY(|yW9P<7@6ph87P5LH)2E`lm!q;4x2t6YeJ(j07h6#%`=>M4Z-GG4> zU~v|ydM4IH2{kLems{#aK+*N0=%&wXZZXl+@^Ev0oE-~pKE_|#xkWC}`Ummriyu1G z;<`>>aYBo)CTJY{oPz0T zMgg@kf#dG!gBx=sRvv3UtHNgpqzb1i`m+KFt9r^5^?&l;ZJ2A+hQikHp zsCq-8_N@)?Bd)g0lxY_pK%3C$;o1e%y<3+Xz9v#g?i?ThM`H%#9ft~^{O zM$4nV+J^*hp!Boco!CRB4kWo6Q{)C=@xO-hiTh4X!4+meXx)r|HSY608wO&(Aux`2 z^RsBEsL0mH8o$72Xfv2c>RJ)H@8P3w3S|}!M_I^%LkpKoi*PP&O&Be3pT&=W(JTB=x%U)?)Hw$^C?3Mp5}j z1BbHtFoEoH;0-ft)b0CMv{oV+83(t1boqGah|DpFI9(cd0c_nvPnFoF2Ko7^jCQ9d zXTeIIwstMbk=d;1(#F_TpOzyTeYVnZ(0?hQHw+c`hDCV9r;Q;V6Mlxt2nMS=aYpMw zdVWG#HJM8h6;#FHY|SoL80Z^DfiB${YzZ(ng~06o%1Um01Gep*HG0ck8H(MZC%uCz zhQa5yB`Vm`_|Wx94|$gs2GvAQfG~G!>s*LbwbTiS(Ex5#B4jF5Tt4W(&H6oVbF@s_#} z@g*xQI<&ye^$Gv%$!nqyB=>i$5iZ|&MUYw|ynrvziKETA2^n!Vw6+i6i442I>+C2N>k~qTH zRl{F_yv1O^o@OuWCZSyGb)1NQYDJNS{UsR`%3ZCz1M+fkmtQ!-JG4{{hnqYyPbl-kppYI z`5PnT+7@mZ{oHd7qlWg=O9wc|YMZ?@EU{WT)pg18I0_k9F)oc1x0Bn&as5`)h$ZNJ z!*PxnOnI=ND)=C=otg1XYxpHfFXN7jq6ejvH0fNo%BW*N>q3uGzTpH$fxdaeY*2(v z!pL8&nO;v~Sud8djTBQ}Xg$&*Ix+%}U`#T2u_^aj!8spEC;RfKPVQ^_&IIgsJIX{5 zr~^xTxeu%$Bk*}}qc!;3$O2#~1xSIdjclXA6R41z{6)`GUT^v)4~-vR$koHFMAOd2_2TvYfg)yq~-R|czcS}N_$ zDP`^A(dSvTf9lU%FreDA`u&kc1Zfi#=;q1QD@k-u74eHtJV%(UqIRN4X4zO!D~C9B zrLb|AME7toaEfnf0(IqVue@t`pVgOW4nN_0UO6{|TX{a^j$c>5-m;X0Y?!B+&fbZ8 zF5WZ(-La+CPzB`T@-yqCe8DOQ~}q(mRjFfRo7$z>=PYPQ){3!Pr8SePT=MYPG*7dCVp zagoY1ZR$`H5Ah>057;^2AC^?3a>8|Zgr^xp4Z7WhQP#K?rNz4>_)653WM6O zJ;S+m`kQQ~VN;EoGJHIXp2ot9<#&>fo-&$W^R)plfR2un53<<2K9*PMow8HfS}BO` z)SA`(68~}3N_}4SqcBaFylTLlmCP2Spva(58Ug~C6MKoxxS7w|N`K__kQjCU!6-bN zg{;Q=xwX1K`t<~fM$`?s4`!%J)x+X5pH&cW&jcg?EFRG!DtKEe+O~~e^TGr)oQCO@ zl&9nw+OiK)M%70h&?<~pPt$N2S&8wCA*qpE6}7^w;a!NJu5&FM3b0hLG3j@OW+BHw z?kVcayUX1yb1zJ3P%DZdJMHn7&Wb^_OM~N>%e!|KxXfQL4T-1Lg~*>900GIDbhgX~ zPu?RRW$hkhK&41vdy*r~zO#06uLvZ9D<1&bx#7td3pB!xQq(w&4+?xaf!CVmvLq*ZDyoHaoPs*%#UTp5_W6o7Vf&rC6uXFfh&+V&>qUBZFUz1IPG=Nq`b9m~CG#nirjk1_}X9;t}x1L2&xY|;^U zo%Tq+DQ??@7fTH?C;g~~=oP+k5i9a5J71AO;4mV*J6IzT^09RTcu(b9t1V%f(Kq>( z&{Pf%j(OV(DyIk$>8D78bbb~}cN^j+;C4;HS;JS4YB!SUj-dx8)&%a31H7s9l$b>^ zjKkbriK(Q~Pc`%FLwz4NJx=G74I<7IwN~9pB50p1C4Qk|!4TS-lCH_-lIK_*Pea`g-De@oO&#FMG|Rjm3G<-^J__$D?FPSivlwi}ok-Brl^tl})X}^bM-1#T zKU3ZRkQ|g7C*WJbn8UO*mQ+#o%Z~tz8FYp$)@*ZLQ>kXacj)s#IFDuBBSqSP1;?HY z33@61^_|=Yxb~3hUc1vLTU~+gsaoKuXG4huYun_Rim9&7q29#raY+y5BrWgX7#bd& zA6ofwOb`2c#-b=S+=3#kdl!?c)`Pn%km+LuQ9-_Kqe{Gog38v<$Tryx5Q#HLJc28U z@0c5?uR5QTYK<*W-7X?CugVESXe4k|ITBnCYO@u1ekAvF+REYz28{BH z=8qdCaNE!!U<}BjQqV~-*hN7Q;5A}-`f@I4hUjgjUbR6X*Ov&3gkcKgLyE1k%mRy5 zUL}>EFu#k8ZY3vy6h5}Xe`PN=Uiev8rbu)LHKux-YBtmqbphAPC4Q5?k&g^bm{1F&DPof{^i_j$ z&WsAX_}Eys2q#H(`^iQRah1wS`{o0S-1~_DF!d+7pBZUXlX^f9>~_W)0bt@{f2s_^ zy#v>9-lqY-cFf6LbwPY;C$%I`|0SDjA~g0~S1u(z7rPMySvVe#0!MEs^tN<7YUA8- zVJ&UZ<2nFss=(OA%&S}rbwsz>w_OYkvE48lsnEAG($iroZ0=K122MhzI6{rAxVLBT zWNK)PnSH{C&r&5ULjAwGGvMf~n4Y47te7lnF&^BY2vD6EMX0*KW4Ku1W6p{+GM*uS zN%vaBVa&UhI4v;kU&{03zZiK-TlM+dZDGnT4TW>0e!wR){GvC!;XKAR>0@YnZSgx{ zDs{KkR6%;1e5h&UmYwIkDyG+o+L0azM!ZNq>Z<(PXtEuIOsh3yl?1SiQ&pntLImT> zUoyUEZAI22pe&Q?FOmO&O%wPI{)7HZD$%4NqU-B}!NQYVpJB+koWF|u^o~nAd{yP6 zRALq}n{dRSsv>a)(6_ls#J~6eLGT(n>B*ao6G$9Wa9Hf|Ol%{B=^M6p$g83lJ8z|Z zya7K`^28^spW{6aWndtr5C&+HRF+cThNe6bh10SE^R+9jyB|&@;Oeq+mArm~vg%geH%;daCrT)=D;ce7s*3W}I%#7#Fz7bNM zOyzK;nr-22#LZ9VpSK%r#Sacn<_E{0)Y_@Knt!{S8j2TSNjz?_ejyF4{ve=b^(0CR zd&6K%HR(^sy3z4aO*z7gR51|h^_qRJd$G0NH{RJOL|-vixqPn9t$ zsP{VShre93i=vH=KxjNY`CQf$#zECD$^BtKmvJ zfyBIBYEgpe&&kJ6=9_Q>wSSMk?|V7IkP*;z4a}NL#&RhV7i*j1Rk%1xyjj~`-PsiP zp)fOh1va9%4-6};vGDw0lk7U0J&ARieUpQU)oWet;@w?rQXuc~CeZC~@ngrOP~(+& z4P^&Ae3|3nR-CF8lH=jbhrTXi{F8>KKpLc>f*}aV+|6x>Qo^`?G}M#a?T?Sktd?xV zhdf!Bw7Y2U7=ABdfozzY%jZ1LJUT*T`?)8Fe(-KB`A3@w#xM2H5iqyt5#~3U2w;Ps0Ww z<-n6sNRN(IKD}bTR5LviV&T!zyXiiFtG6>z_Ge0$`{}!#^}*DFo79SSh*u_1Rc9HI z;T8t7wqFef3Z`e++wTU5-PqNE7)Caqm+GFi!v=Q60k+VEFiXUO(GXt{9-#wv(|glZ zC~ObwlJe(0lp%jbaPmCvg?AW zB{p?Xmz5CLqkn?{Gv!#FT$oc!l-CEDcFu!29mqDQGaW4k=Ae%e_wE%cA%T4T->$PSFL}hdcxl4fWw&}Nosi4t1M#isu zReSGb;9Ol#YBo{5U~oQG6J0s!^(K@5*o5^6&0kOAmX(j3OZGY1Z{*z+WF=IO!n6hI z#%1}6++(Z^-abGGRc%+|XSq}RY-7(R)>IGGt6~d3Rxa)ve9(Dp3uCe0Y&A6Bc-g4B zGp#`wXtHBm8{E{xu$X8V%lq@YTs*^!AD1k4De*be#;nAn)^JbfPC0NiwMhQNl57;8Hp)8 zD>QeKYmew|)uP4ykH7-sP27jlgbWPgewHRONaW9sIAe`BgprWg$E_GIZ^@l855|}UQ>OyKRlvi|a z>7fNqNG`rS9%DW{Agd@`CJFgJhsKOaLVGMo8y?_E4*Tf+sH6Bz6G+?p81oQ<8+W|9 zV+<=vif}^Dstv7Rh(JMQj#3pb1^Ax%l#w5{TxVreIMuTk2hGEoO0t-Y^_#6Xx_Hx2 zUiPJ!_11LU1!CDS47C5FdsHGnb+6=a-IJOa^mv_jF4~&FLQ%YI^BYgj5c@%|bkz ziB^bz(?bl{YX@IGTN&^&R$K`^z$$d9G$4y-yd7RU9rX_QTu2&?De&!#1q5oq3|-CD zq#R9P_Vftc&M@}7Pk6B}H6tO`yKwaUQ!ti1JCV^X!e;3;Uy*q~3MgV{+RwkpMpO;5 zA~cxt_I;!e1VLu@w+`LLD$Kz4^{0}OgrO;b!OVU?)LhGQ)w?>RFX&aASHwS%=VJOH zP+UA@EzrXDg-_^mVsfg*fFdHsdmaYql#(>CsU9J#v03A>r#bWx1g~^;2Qisp7Gji6 zHf9vxkl+6z{scfMgo#89LC4IWi4-)num`A?AiQ{5WO49=`)VelC7&~6k@2=QQMq1p z^t30|B0|p4yxmP5^6cEgk0WQd?H%F=$dP#r>VW399##Pw{HrQ+Thuemv{Sa1t+Koa zUE*i=YMc4ALWxT_KPmM{>-xYOV(8pZWhGCS z5^f>CQjLSb*nJNtNCA8(fhemGO+L`MrXEC;DJQ`z_IHCAd3rGA7_Gb*aH$cPqL^5o zb6AW2>Nlew&NfoE=U2Ze#f@t;1#Lh^US3n8qMTttU#TeM`z=R3)?|-E`zbT|yLb30 z3;e$IMm5#OGES|R_>j^f0SfvAIU+Pi{U5T~ow{;s-P&PegpH}2eGRBA4|(2AjEhj_ zp+IcZinf3)p&;(1nVSz4Hx^pTNLIedQyo|*AFJ>CJ(Sb@Fo(YS^9+0Kkdb7t6a z-Aiw`W3z_v6O_8Fv(9&z4^o-S-*z>Q@XaT=Haz{vT4_DxQ5%kDomIvKu3A5>}$au(qXprte0ZUrflAMdJ6b}<(Md1GyCDz7_3 zf1CsMO2L@(l{nV!eib~=Gw0%+{&(G<6@n~%^6D~|vL|^0TYY_;I5PB5x(Z$fG`LmOaM;=kWErrFK7c9U_PXH*I)0!z~0?|lG#YN}j8 zLHv<-yzp2<{f70fHEN>Rv@8w2AJljuDtSrR2Eo-?4kV^QE78;M8sD5T-d&#yW9(?} z$9lW1>KNW+x>!X3!@>3D(JHA*DHc9;!<&b{wb9f;ro5Klx{r30Xx8cR)Z_U4dAuYR5gU8eV&en-D{S-C|XKwisM?8U=e8yDDC-YE# zvUbIA3KEt3>GJx4&6GqS*6u&`+6w)l=S2VHgCPUd>+itv(8v@%WRw^&+sL59d3$(M zbyzQFoKzdhY|d=^#j7M@!4dC$Y(d>XlL6s-FI+bB_-#zN!@-W$RfE*eyjzT(EwtNl z5e$cgn0Q5oR$nyJOR6Ex>l~yUINLsw8tK2P6g6x0Ku~mPtup-$o!NMRQ*!+{{~)KY zM4M!`R9Vr(3zOD%)(_kH3Vn2tC+jwP=LRN{^Iivc89tURTWnOrB>L#Oy+Z~0!(+9V z!a{aJ3J)>cr|4$q@=w9x`6hkU?K8Nx-Xncw)OGgU#2l3)u#qH_NG^TX_RLyt|v>VKZL70ZBH|RZWOl$2i7r8Kg(2;8n7I*AJW(-KkJu8Z>R{}7p3)^Sz;Kb$S z!?Y#ZC|4qduN?P_r7jQ@MY(%5&W6_s)$xEZ>MVA%|dPVc8&y>eh|a8Wb4xE?X}8+Ce+g{U=g7NAV`Et zaWBPSuCioFycnd$uiqPHAt)nJKJyK+e%w6%YAoBJ=pVYubQyQG1ARoP@n|NR+8>5$ z?L=*UbJ9OMccf+uc>p&|flbdaU_%4E`klwZ8!oYJ?I}#KQARTFWCBrZVNq8Cp7Cdo zY%xgtiYca_w)N(P&#dm}LuOd|o8vqudagZR<GJ=cM3;0fHZb z{5UvD?kK8_ih(tZ$P28hjjgx&BFlUu-$Z;nF5oMT7dYcHM4rWc?W%rFs5AoYVma!6 zU*dQG@~r;de=c#j@9`|gYiB6k+h@8|(bnG_FcsjOz?_VAb~A1&M_%j)Uv_m(bV(l^ zo;3}#zQDtul*E~sVzjL<#R+`5E?>>*ey6S^Dp9hBjEMrm?9TCs0_UD_MLkw{hGQ{# zd;Ka05v-&plrJcEX|+L%%E>w%J>EuFw7Z+u9o<$L#zF8RFU}Md6!W#`@HgFJ+`fV* zkfL9@K6&!w{@wvn3g!2k7C$3mK6i;TMWmH;k(g4qxjhx?hhynPQ9IF|iqD z*JDVwua8QMb=F&pJr6Hf>ppfS`YK787KLTnd_F&~uCLa(t%wV6rq0gJo~AK3H#a;s zhH|vEvlF34%`BVTFDu#%ZR(KAA@|(f3Tg5nz%hNLKC*e{J0`sVT_-ZjO#SZX;hE_- zH)2Jr5{YEPa|CJ_+dOBY0$=2)>q)H^QVQe)&_px@eaaXKSU=E-_V783HA>D@=2_aj z5Y=B@6WUDm5gs`ncz(Vad9$S~W8bgHd*(f3a50B8e00?4fupNR##XoDUu`yzyJA_RM%ddQ4zMvI2rAa8|b%^@jFT^;|1ZbI4?t|Fs}*=W$RZv zQm<`y3~y$jhc9O7@g}VD*6XKIXZ=GY$MqsQ?as#{CE-(TuLoFn7xl(H^Kj_Qo#L z&eNY^P_{gN^^w!kCU<|RmtU06b$v&7ti|Z+ey-SdPboR&ZjNNiF_|VAW={To^6T(b zhY>HQ@6y6R>Wh*WPr>22aFxM|8m@9zbM84~^X?eC>b6fYPa8+BA`9+pc^gYd?+f*F z?;BGV=tmoO9RN&4EALpB1)q;XO*)f0%+>9)T(><)wNF4v>g$v`@eOXv?IBC20)bRWidBHCG@b(Ej+^n*MO=g0H zK?de!>OmvMs|c~ZxWaWsmy<7B!{~A!fz{DCi|MLSrn~bJ4?QOmP29CP>69fn zy42?SN``W2N+=W?u7B7g1Xx*}f4AqnEdr+)Xt|-NUa1>wDDWkg!ijMJtzxGoMi0Pq zJ$X2BO)KcSvuPs<9RImsx+>rVl4GLxcuTIO#qRy=apvOu>K$uM`80%0<7tU(?tSMN zwSwQ%IumdfzD}O>4?5U62?oIjwZb37G?}UwhA-UKQl;M$5R>!1gqB-yiW0KSd(${f z|E=hwioLt4|hjA~=H-DtLq@eOv38->uBn3VDlbfDucM6TQ5}+48yjqUcU`*YOuNUULg#qD)f~SDgT!@v z0{kg9o+=Fijn+bHdt|3nFCgj#D}+|~CsDb?kp?H$hkqQ>ee_5K<4F}T1*Gw&03 z1F-&-ogb#&Fm>3f>TnUs7nic>W|ea~b6A|Ah40H#`7KH_9EOGmojoh2C-OsUYWHEF zd|=4%FUxGrTObo(#p~R{HR2qZr@pj|NIuF4aSmljaG$z&*4ET?N%z>onfFk$iL^k8 z8$4&S^LtYv_4Qq*s+HfWcp)VAc)fMNOYqq@Q!=j@^3|)DlsINZxV){l_AaZf#>Tv_ znRJq2CqPr$lCgF->x8neRADMdbDthPeJ{naleU+7Bbp_;G+T{_V_LN>v6+2|3lNxO zcK^u_>#!-%6?T!$Aey<0%U%`x*6Ej9sX5bjW{q%ynA{*>bx;p z38wb>oQW~(9?ARC&$i(B`Nrp@>ej=hmD=f)|1W-ivf-|Y}Ksg(tJ{Oa=gfn*yM6PPGioR_GX|%^_D+v=>~KyKjm>3=XlRZ(ddgF z7&JO4)Y+0!`g58KRbzsma031axHb8P9^BQ=F{T;iRYHO68t1a{z`g=)efbBIi$2Fv zbJ0~ly1<_N?>x-=U9ah?DF$|qMz0qZrtmpk^#<)Q(Bs~__sf8FdnqyP!x8(E?Uc=|xr z$=6T82&hi&T6{%m{0V4yp0Xd`MXe`??}?ux8Ys9{4Rl2$99g`kH>yD1t&Y~oi@jbc z%?|45le|}F87~aw5)C*W1=W2gB`c;qFH8^j$>Y@W^Po z1GD4XymYxEGO`S=xrrDx+d%YEUqvjNH8vKe(%ao15@ugz=Xf;)YgaNnDXX`zzr%7U zSrA9=_r49YFlH&|RdlZ3Al}zOK@mQ?fC|fN;o&DUrVq23JWGzwIGsa5l#;|6TJM#U zeAAuGBL4C`hFDu~Ajom%q8^K7qA+spM^AcLg#tuM9HA`xCci7(%hB^HAqXmbh|Fc! z>Tu%G)JXA0R~Z(CA{kCWZ@Rs%uVam6Wj06om_ZK$5F!M`$Zu49w|bWwfrvuuxj>8` zBP1xjBCv`D3=#&?3gT+DPkv^#VEQuYAtTS&aym2vt4pbZVp|GB!WJ*8Xurpnp|xm6j}JvA1i=a(cFc zr0(=W!W-dduF(0xzy)qbCIKZXEZ;<*VuXqMh7%fXqwC!}wC?~*macT+Bm(D@|rH4$wL8#v0!lRo*37G#v(WCA^ zaj$}cNB6_XSeMX&^B>$^Yey1bn~;-(1aNkc-ZWL&h^IE^EF%~4mh*PnhfTTDAktwY z!}_RGk&&67ilagWHbx$`fGHX8H&1Axfz8E|{eakQKu~*K|G5R<<{r{LG=dQYQ_p&@LF77V5f|)@Y)FB5TT5}HILv4*mfw0QCNHbK&R5=o*T0&g3_1Ag2@52ncZ zjc43s3kR9jTE;!Wb`&O-p`nTXG(awNo+GsOUWS~Sasl5#jrv@@E?7tZYM+$)wtT(u zR~=b=55P#>D75Re%)+^G-Tk|mz@sw zSCJ0u>H(cPJ+FPlBcIt~Z3j5It~JK54n;EvWjTQ5srR#6)Z8p!uQ*HFlKDMg6$srO zJfL%>i5G9@|G!U>rzk#}-IK^2VcqGGhJ>G>wE2JKl>HWM+IU18a=BGWXW0gPnK3IpcQ$6t=j@s1Bd^+RM>!rZq~Az*3}KtN zTa(Z%3A-)6qm&m^K#V(r-g9vd ztZsRq#kT2!t&MK>3x6l$c{}FogH0QR@!tS&PejF~DIM_=W_1TNnflWeznDSWNiaOR zuu8bu&)nOBIq(E#1Q$e5_RUGmS(eeS?m?d)o;W95dQNysswJjgS*#_$6Fjn{V^`BB z^ZA_$q=!`WL4vBlzcT&e&!eeucROwKy@Cs0?!CQ%KWR?h2IVkd)hy-_hN)V zdw{hQ^&rYdc%V2IP(m~;%0?+ru+`susMQtcjo)Fem!qp!lZPXhdH;*W=n`&CU1mI< z9KA-d_gt;S=!I75C68X@@<&vlPgO zY7G+y4ycLoPc`{NS%8%*z&6&-S>UxT8Nr+)W1! zk4DR=_@}b}1FsM&G<+k5zA#|zZ?9vc7xh@jv4fE z|A^n?5A0NdZFFLE@WBO)U;RP$uNZ`p z0@4;c-CZB`FKKfRU9Eun$7su*8iI-t~&tmyv?#t z!24e?d0-&h1J74p>BtZ4VGPxtRzL+zJ`kPaox)!`gZJeIgd0Z41_*V<^X4c!-WPw2G{99V0YyVxA;Www5|XyTx5yokp9I{ zMu6&7#xH;jHk16t^k15JGV2F0{h`l(;JIDlR5tuy+vo&9Wmo5(zcuAd;7~cw@DZWb z6+oYN2ibqW_ymj=V1nP%ZYm(ufUi9V3SP;e(qB8{!hH^)m=<@69}+bACjU>Je#|1FERb2c@^DAW|CHqJ z&q#$|{vwnsu$enUUSM|<(;JiG{(FDe4?I77UYe^9 zRG~SC887~w2co0C$@^<(kZrhtG(IP+1w#G7)B3-%<~%ZKu@ zNzjBIcw#8J2mTAQ%f!G*WW0T>$C?o@zcrjEjovTs;n^m0I-=zOPy6Y+?iMhLrkEQU zynfHr=x`_#nx8*-OFAjy<0$m>L)Y8NB305?aGbc#YIC>OWo6ehjOnA0j9^aHFL(Ny3tc-X(p;nUDjAV9!#aY0$-ao-p<+RnfSc(AXD zv>WO(T~A~WILcLr@V^jqe%Ztzrhrc~b+74lzgKH) zFJL#j)?#2}EOis7AA6qj5BSsCbxXNN^e!XDn#~@{FzE*w1GAT*PO;imjIh)eoDvF8 zS1NkwmpUEg6YUlxy1!!t^`I+m32CB}|CCr^=@m2O|3>KP0s!Gd$q_)rYR3QY;Ag>m z2oP#7&c*djP=J19MAu2)s7txA%a*X=-8!d@6WsyBVT5dkT~YmWn{+cuAVTs^pdq11 zwu#>g!THkxh&(y~cWDavqx3IWu)01tcq_2?>1E|h4UQSwKWbBXn3-kj4TLuukWDgL z+0*@t?uGha+e5|PNj+ViX%CKOy!)`OIo z;NAHe{;j=6Ne6~8*3Jm$tr5Dtdk)~6$b65==-&3=P7^-o4jBK3sAC0fr+*cr8=%W; z5^%b9-O23; z0f6_8Zy?fsC-Zi|`qw_1;DDs4Rv`W&5HfUr&EA{S2){jecmJX!Y6yBgrt1o}Ymo8v z_Ay?veq?0#iK#QIjs_Xy@DjGn4>TtkLA^{l>T2`VF{v`*g3IP}kEK`6__vlab^CWR zOr}Y|j4veV^Gy0@`M_^C>$;n&wR&CJHa$TsDjm){G>X<6+Z!Rkn?*$Rjhh9v~SMh;SQigp{ zCY481M`Xhx|0Vh%EP!n0lu4dM{+ZRdGdpbjMi{-Chvrkrg;}s#}->{W^Ts%e-{dC&f5~J0yS3LkVML{fM{6b zJPF7wdM(XhWUK>(*pq6ceD)kQaR6^~rY=YK)KRVQ}jIHNkCYpAH-L6^`TGY%Pg%}$|7NsA4K#0i8M*EsOAHnqbg zF7;L>O4Rj+>c07C(5#2A+|5y1Wd>AAQXNSAs{l~Qko1#+r{@X&#se$h7RnX$vFR#ZK3Q3Z&&w6QwLA>UAxDLlObQO zD#!_q@kc+eJpI0v5s*4YplFP!eM5H7d!D&P+!+T z^x+n5-rMV4Q=9giB#B;``IH9>h`t% z8dd(bwBSx;4{H1B!G)>(@gI+lJqJD;Z~%+C^cI#nYu2I<0N9(a&A4^lhd7UPI+2P! z*wprzX)X9xq)sV*?<8C^UJ%J;S(fdZ{RJ~DG?9}3Q`(?kCl=>wnUW3R754K9ciK0% z_@E*5oA73aUu;efe~4xQ(7!x5W%PEixet|H)BCfC$Rsh9S-?A1zb#g%E1!Se7gbbK zyXQD14B5(H^mf8F z5=_?5F8Oj)4AVu$hJmK^>EFGMuW5X=|6j&BT?l}v|DvFoG5|dslRusK>!(ycxHSIY3Y0N8n1Z3eRm+j0I2?=f zSFTPfD(W|mW((=E10ld-KAtl}3ZG2tmB9i(d_{q}6qDRz=2hct{edKiXb*>nB8LG) z3jQOg!wtgdw>rA~tX`zQ?H}}LZzI{oXmBY(P?$N+J)f`89B*U9*$>mx{hsd7E&kN9 z4_?R>3^fd6JvIBTm9D`r<8&eeBf(CyM`?izFKNt{2}U;A#myDb_ml&BVfAr}cob_ooyKU}9b-+M)6)rN$-wR;CgDuym7|DR zGGOjoY$^T7k~F~6_6d-O9|sS5w1RR+e$TeT8R@ZbA?WTv3|NLschmo}2Tu6scKS8|J-O)1iqmhld-8W_z5H&CltTldd@ho*|UA(ed|>01~35I6b%J#N$U zt{N2_*TkeTp_ukP|Xzu0tl;n3#*Q1bI^?B(sDQi0GbD^NPa-FRdWl^mh+rBYHmi89* zSfZ$v73mH(8OFRSrA*iBIJ<-}%U@=xNdkc2lrR?@j>$g)*w*?==ATMSGwpZJ#emSh4yOi*-87Gas1`=^D$!JSVrMt8`uSoJiZ&b<=sR6T!3#Elg| z_+H(O-1L87m8=p`^Vg`-?!gVBso+(xOga->LH?Pc3K=Iw@H}xJg&w7l3#YTO6>Y}0 z%vk6+Iy#XZmOkdbComrCCQiPU z2d;ERZTHxv(x(CKw{BUSbG!2BfK0PVZI9OgCIRzGM{NTR?Ct7fM zpcG8}Yc^0v0brn~07-=r;E`+E9}H}Dpn^fBt8;N8q!;DMmUae(gLZZ_y>H;rX(M$( zUm&&L^-4b5|EG+QJtT-d%d*!KkU6{R8`s5Em}qd1O!9@MU*H=20=1P&XSV^ zB?%HFOBN*wNCrWofaIX$3@Q>NXUPJR!zPDK*mthIH3i8SMx zo~Qu$7$4ITtm>9)TwGUwH~R*s%44dmL?MvCw;AiWeQxadw)X^2pJTsQr{@wnO;tqV z6#U0aac)-5XVYPXPWy?ec0xj}@00u}JQjA(s8iNyG9j7ROq?;fqp}TR~# zeD=LbXXM0{>rPIeBDx0ZmaqZ8-Kwp=80wDF+v);YDI%%5w*^aEvC!d!N)6nD)>UDS zw?Vpig!eX?;pck&o-79Af={&H?T3V4j{!p@GZ1WXGA4c}$IN{x;sc?hScTe2%1&GR zW%l~Vi?QV5=zF(z7UI70bB?#PNa9xHm6!78J1;i^_1KzmYh)}YA$5&urop95T0agh z>Ha>(u8&R;wpp~nE1n^q9AAUOIICCGO!gPnDd4Y|O-W3I(u_Q?4Ab@QTZnooYunBR zFGP{$+)|ZTzmn(W`dMOcs5$Ntci63zoiF4e`KR#Me7+ zl)~G2D$}3{@wm{|CxB`R)?A%CS-+AA_{@bD?T+(4)CpLD(l10|`-96f)1>JRy)HvjKH3I=HO*B8nEv|;tnvCr1*RIb_(n(cjUA0dx??i z`8v4?oX4M4J`uMm2@e+ndRkbEdZ{{_4KShdY)4}N*FS+xKyW_xb2k95j<^rW zho`Je&`*4{M!HB~rr@7|neuZSHLK-jZi{LMC1KHYUoprj2nAhRK9m^8yWQ0@P|u8G z0?1t)&Ck zlC0PfB!#+{0qY15)jEvVg~`xC7&SajT~Qc9muTWvu@*H@3HiQ#Y_+B_^DRoF;8FQ) zfHAXv&AFh@F(KCU3VnfI#{n38shRQ-j&DUYdq0SAoJ}N|Rd~SO4(%ge_v_bh z_v+RWVY=42ha_jd8@vNLM>G06`eMt`EGhGd8YPO}WW_{;S zsg?AeJdiw#jCmY{hkSP33R`PWSe&m1YdDd_g1XGAA#mN_h*W|4HwYxaH}d5lQA_M2 zba*+c|MBpO)}9u_+KReGlop5IZJtxJjyw0D>Kom{bZL~_wT62Eo#(y+03aPh>u7@t zAfp!=S_VoHsJM{Y4wf2iF^#rf?oWz$-&>o4bYdU|5Hie6)k-Wea!Dm-(5b5xD3)$l zE4r;+Zb@Yxox~^ZTzXI-!LN~$)m%0M6tHZ&0nE}y78WvR0fqJ`2~Fcv6M*;3nzmNa z_~p*dl{iMj(9iY!Ifzc}co6OXC*G0bFSPVpnyRB~LdKfg=2KF7N$<#qrf6ce59V4Q zV!=lMFUbis?jR}g_;4h?n4D62Q>z6`U%3`pm-yXNc! z)0UHHEL+WHpxgW2U^v_$cq6F~gSl#HDSubqJ-oPN3`-#6{bG7D_*b}B9@u_2UoVJ6 zmsVzuSVuv50-P(V(K{+?AATcDGyBHNj}`_U+T4gBfISlMv;RVv3YDMh5rq2|R_}V- z@D7B1d%t$e7(yc&m+UM@C~zP})u74}904 z@>Z_l0~^eAxzu24UacbMc!NMXW%E($6GWFn+S-CCc$C@Z3fbQSQ?!l)Rx^CS?!BTw zEew?g$OS?_g+1f`WnW2}U10h%7r2DX1p@vl7mzzy#PxvLV`*s5Qc`v{T1A;m`)?6VF!o~-0S z7>Btynhm^ujOExy4xfes4o}%6x?B$v~mN`g^7~LLBMKCwqq&!-Z|P<&*j0^+esS-YK?!9 zPXx=IOX9G{M6tAikA&UX z{$5^OdYFTG=9^ae1D)~`vk;(mjDEIg9M={uqRp%@lT)>O7HpH`?2nTMa3Zz(O*a14 z)~@mivN?4XO6?fVSMeXIq|b=t*S~(l*ZWENjzjKxb-`urDuWOnhnSsJOlDqZ*wrB9 zS$eJp-uzjSp?$T^FSMQgXf!)|_a7yb0ZiZ}4oxf}%u(}L(1IlKCB!`-iEN~rj_M={ zr*z_bQMNT~s=RzftR92-uj^ak0gGm1Bb@pi-j;0ObXkgE9&M6hXp<}nA5q303iKZ! ztZEy+Nii?U%zlX}vSs*zuB0tExld|r{FP=Pg3HTI5eFNc1g8Kcio~~=>ko;3zcX0e z{AL#FYY>-~nao)X`Jg18Y&v8FYmQZ`6G=@nV$3VTeJmX)kB#C;>E^Y9P@Zt}@ zVB8z#?#t)Vf9WWzUTCof0g8#WLQs+Q-bYGqW)XH+b*uc~NcB;hD zIBHt)%*%|cg%Yi|$1dI0R&uuk~P?fYE2gIF?^%eiELkq25YLELv zd_e_N%My$&?c^>{}o6Z#MSKcp=9C87HtIUVw2|BsvweHH$X zobG?*bpIo#LtT*nKa5wr4hf47Wgqy8N)4T15fAa(e=~tY8iO)z- z&=+bzc^g#MK@tNRv{qGKPo@Kyn3{$Kj1D2Axk z2?uZdol{#Pd7x`YA_At4YNOX?PO~TIhHaRmSEBVDq>=$2l2Nf>oa7`Hx4vQLzzaJq zHe9eK{q$Kux$Y=n=dPs8FI<*XefV(ap4G54ZykP^67ppNNWtEi8|wK@iu~Ve5C851 zAb8i#jW5CMaeM3_5Hxf(h3CbWbaSaXH^1)6dO_*Ls?Pz|*x1la=otXVJslo0qw9}4 zNc=0UgxWZ@H!pwRS$WyD)yLM<*c=v(?bF8hk)3b)vMJ!8h+fADe2Bk;4 zM=ZO($(MK4tUnlQAaHwADE#?V88V|2B83voFJdEB(!W$>|NYAx3mK3?%3y($Ij}0) z&6?7ovUksd&ZvXp575Gx9{AgW%mFy(EbED1uP`m5MROiIKsjM$B865YOr5mD8>U^l zHHzQV8Zp0+8-DzQ*SXKG1aaSqw}OiDmUODl8qPMYL^tJ&IDC}2&fqgF)L!Ba zE3(Vuf&_#hntV^^wP^a4djpk_pu-<3++bqxqpz%F>olNl9k;)^H;N5zS|AAh;JRx) zu+ed<4F{iiRjvYzI(E?lGFINbaXMETnTwn?cWX%01{Ouk%=JY*f(-NQ_V^!o1L=%4}N}wn3!zWI- zNEdzN1%PZu`{ilU*gqTNh@o_OV(-C2ZkXExz~=9!p}C>M;o}xx)O{iJ2wZ1W^|$ej zAvAaQ@Ad#>VVDvG{T7qv&Zo3MIf0YY!jF2D-x~!k(0T|x$+FGXz7@B5g}S0p8Os<( zp&=@2#p6677nWHovG6UTtE%j--}KVlv#;y8c3Nic&SeG$hLWrC&XQsl7JTyL2M;`+ zZSX{( z!g-^AJOy9|sbmyk!23f)<%*`?)E6VS*u@-5`#GO-F^QH*HoP#hiBehvh)->KT8l zMRmDwPI2{p_h%P2TQ!K~;cZBG8XCUr{u}_Cw@ln&+MPAT8P|F|PAPv7)^%Q+GnN|t z>F064)c01`U6wTApkP+_Me9M-7rUAJsiZdrS8ZsUq6P|DmmiMB=r}19AFRJmjNrbW zmZV7EzV9~>UY*M{u=71HWzzjtuag79t#_-8h-f~(n$OI*5uSjMaVj>$jb}CxjWZsk zej_R7=GJJzb>&I5L(GPqeJOWJjhSk(OifY^jt}ph(J>60Dm#b$x?Q*EB_SIdgsEJh z0nU0H!KQYU?Y9g?7W22_%_F>+Hup=VXqxvqfow+Jyo*H-pNxDx{nOMo2A{|A1- z9dov(fU|1H!Nhr+Y|ixYEJEu^lvX34rM}fXGnF}2$R)6!Xxo>I%PoD#WCIC`?rlZC z#@QaG9*LQ6HCk~UP78{dsM^A^7`nxiu7K!xY07Xnt)QZ$Kh(m;*xVdf^5Sk zU)+|5`@i62)Tm^wvKhsC(q$Z~CcJOcb?Lalwmg}@;_TyU9B@{jzy4RAzLqI}OVmFvFC>W-KDBm&x>fUU=ohYu@y!Q?7>$IgmXYSW8Qb z`*?j|eyjqs;TqS(M^%eFSx3~NC4dAa@0n0cpWf+{N3!X?kon8eO~!FqMy63jt5Hj) zPq$MsVB~9#t9LP)>+}VA4G?{xu{(7pfh=Da7G*!xi!Y4D!`IRMfo{=?bxC=%46&gqB8CqZ+~ z!KF0l(V$w|y(d8X!(5mRkIvJn5Msz#@_&vPCTk}`3h|v@;df!HI4>3V zJB1A=(t=)T(hrYy74#}eLHe~D4Rd#AvhphI8{MjsMYNyX^L%o9|Inc;iRQ;pv|(4Y zv1Df~_m}w3xB(z@km~ow`EpIkeg~gzc|{&qtBvWyZU$|fq1g{(edC62v+Q4;1H1){TZ`0uWCo+((eN>cnpk#G{o?%hJ!Gais_zW_uMPr}@ZeWm36 z&n0uO#-wK8MUUDsy0VOZuzZS-JD~n84)<8`cfu0gwCl%!F?UHN zRpY^(HiHC`jC=+z7P5|EyE1=iEe_RS5u?eZHUAlKg*;>a#vb7aE?h@bMX!!Qkz2chnz``6CwL#TNGJ;%sm9aOg;@1p;5+T>PYHpxhw4Br8{9O1`tW225 zXh8HlPeqgZZFZTNNXGdLZp8h~XZ$-h+SY(9{2Y=%YCZbUAw4a!harlbFG$<1lxN6L z1KDnf6e!O1r%ng{#^4Y$j{bpAU+{&*(`IryHw{722ah^#@U867?71;=npD?GffTV4 zZlmS2DB6}Hc`$iWps<9!SjdN)r!PCCzD9sKE=%nU!dt^_o<#AEgM~=oS-ZACmD_D& z$rU|g-`=N*LwiPY-hI8)wtq8ds$*yx*57%O(rI7ffD$i*mF$4f>}(IA(8+np(@srs zY+oINwi04j2~+mNnMH3A?6;g2d%@e|w?#kf;65WsJ}__DJMX@kZW`-1PrD6?}g7Waqj;V zZv%&`@yF!+wNm*(waR2Cibs22ZB|x0i!m^e`k`+H?KsX7VWf4{Dy{e4y-{}$$*9^) z)f4w~OL`$tvdn;40?Dnfz-qX5nl+*9$ZoX%3+T?VeCZS_3A!%Yk~Qqa#osvDW*4O2 z-E9ja4LmSw{OEMO#_g)b+zrHKyIS|gyS$tmlUn_VmAy9A%9E5|?AACkG-Qi22V`SK zy&P>Dsl{8jScgLcU@tRXV%7v0L=xKIa=}(jefo%Qr5t+bZs=+rREA$&>-1%BnZ4K6 z9yl*yb4kU`&#CTdJk~W)Eud=VCRVimmI2$ixXFHP`Od-39^eKwak{}4W4r~Q4?jiA z?qse?oX2=1+92zTYn=cTJv|hlW}1AlkG{0BwSQCo6|$gEA90&`-ur7SZ-Yb`4^ zQ%yxVuy}jy&Fk&aDbE}EJwIP`*X-t`Pqq4h=b`stj7dH#CZn-#QEw-L9T1g2?Fuvw z`E&0uVq4YYX&wgpPq{wT6OpgGv)R>5U682PI6h)JQC~EMuyB7&MXLq48!|EMEvzh6*{sm>5=DelPt7&`NwUlBffxgQxRf_ zAHifn>4|Q%xKf%;I>dTdkYGd8LH4~&U-saNs&ls@W?|tSUi!8QA*d@)(X5mVsVO!E zX`_Gq9f$hc*cdRQD=5rZ7YQmnK!XZY=d!C0d4OQvzA2tXAys>;H7fTp&!sME7SN~h z^uFV?TGHs=Ah}CkO@WXXQD$Dv4O0#NZt>>8>w)oh$@4G#lOwsvd1{{D=HiW+l)ob> zwJlid!m(H}7jTX){Tic&)s~w0hW~>`$Ft^jx6%{kubkHqi6%`(fF*}g0h z505|owqB}4`H2@m5-dD`%}uea_`O4MY-^_Nk2DvpmV0$43naSjmd9!+Nl$?pk=i(+ z70W%-waR&7+IH!ZT8T)w*6PNsTmpqjW(vlw)9Fe*o}uG3lpGDkS+u1+BUa9c)VGyS zQ%PfUX=$%oWH_&!Fah%W7WOv=JeTjdD>j?a=z4H_aj4^t`}dP2n)FoS_)@x?FoBDhKPCP)jV2v8-+A_uPrdy`SIpPr1ZA~c0qan35(ynrg6G~Xu^4xhET1vOdgNyy_DJs}Mw<^gd#j$r8 zubvMODfb>7OLlwpU~fbV2%6n%-3Mp|=q3dmMGA!<9Wum&PpBXWniDLm@17hg1|Eg) zTB2%dho#J59?!Ei3xzh6q`dc{**!vHn~3D}s3NiJnw13GiYhV`q*OX?zLfJ-pQU>V z(Yi%QJV)pM4$l#}aNk{i$?Q9ohCUXxmh8^s$eeaTTG@6%Uei;Qz==Z~h)cW^~S{GNy*{GOD$*FStES>u4tSuV*w zVjM!^ru*_$(PfXDI?iGiH1seUf4dm%^y%wEsk-7U;n#N;PdU6(@f?MTlE zrYpXvkM)7@Np*I=S<;?lu3klSC+ zH`WSU=ThIKKL5U{@q)t3lHSWb(O-3YwjR5DmZ&^MxwYdZsmr77H{FVD7xeH+gj4># z1n@t%O@<7HK?F>VLKcoK;p zJIT&~KC`Mvj-MN+jSs0>nfH6S)iyV|d<_h7oJT*M0V!0Ii6Gac5kOYeKf1@Tl8$R{ zj2Z-X0=lG(YzO5B;1L4#cW0ozvYyg)>PJ8T^OmJeKn;lIypb0J^CqNLa%2yzp7k;C+=J7n1bF>Ub zwrg&=^7DVfTBxy_QIU-R>aiv@7)f+=S57=n*GR{8vMe>pH>6qPGJi?wQ9Zt7@-<+A z7$BBxTlzj;jKy;$H6crRm3)h1*Ze8j#fokcFQf z$EXr~*$Bx;uAdvd_uOxg!E!G&wMEW6S?Lm~SEchjFam^2uoc-e z`ZsR``A7AT1LY(WC^s7C%T)cmvL%k+4^V9>kYnEulF(`*O}?u~rHK6jCAtL>H?$I*y12(Svhs+? zoSqhV+8V{Wzxyd0N7_9;*Fo|T2zrC3YY;gIH%0EmKw5NZ|Yv`w}{nSb( zf`)})tk(B?nDw3VV-v$}!1p}Vdu zcINwKzN3L2u9CMGk55TKl0aY>=}RCZQt})bXk`f2o&^jA8B(AJLK7ByY$oPpm7)( zA2u<{@K>y)@2-Uuhu#*WjPMBAy8R@@=76Uufm3@;B`WX?a({T(A`Nz zvqK4@bK_esH0SR|3renIyW9DdbGPm1Ykz3YRa}iINY=@$co;T&UrJZ4M5#?h@8>&R zsS2#Kv%1q+pfsGf8+MCIul3DsKzGpJQ6b%%1E9M&-s=pf>C2qjcPx#HWVpAVu#%-= z@0PJAZB}ik99BEqwik8Naqec@09s4~ALhE*^%Zz)(|6v(YT6e-g4yUc#%OR%f*L@7 z2xuSW99_3b3nbayWm9s9|N3FJVKukwQ~I^uxzx|Ha<$_8hj+Rj4N`*tcgS=)|CGUh z^{UBV;u!uAsI@W2v#f5N)*hUh7iY=oh{}Jwkion2|2+S>nsf3~4Xh&Sd_LrYjhJ#x zO7I&uB9LTnz zeNTLqA@4E%8;s0|=8Te zWsG*#XYY4k_ZzNTlEcWAt0#rIJVH|4E2*Ho%*G&_oqIMdy0CI9GeB@&Ng=@?w6WHA zJsf}2KYZ>dN!mS1LmwAg7Wu|4quU>2e}NG}+(wH#o$;EVVJ$;flBj>>uSN;K!9d6OjO!0F(>|0rF=L=>#>iY!ub;{@G zTXKKwc@hf3&IbqeDd=Hg^e9o8_I6Xnit-y8Ow80=|2ltp?~^}M|ITOK6crpNJPs~i za&+OQD$%K9hcM4lmGpkA(9q(iurYq>J+SAdHXc@odc_rWEH~2E?JT}uUxL-pwj%a@ z)*W|Abgf2{xo>CWLm`_k4H1?lbE|!KFxX?K?T2&kLwz15+krLa1V*ol?u`3CtMPt5i9ok{uN#n7%BhPL7n zfK?H*-|A?$U$h!jvm0y-d~&fRj+T0U?&=rDm}|T5*X!OsmM=wS01jv`@wU`M9T^2d z_i-c1$F6(kCh!^QE{%#o$I~AK5`hFJZu0X1ZRb*Ao(a!P>_QgoEul5f?2jA0B*U*V zPSJEL`xvB%wqJi|9Q63vzCxN3TUNFV&DCx0&NzaQc#34+^zstUvo*>3!1us!YeW}m zUNS$!8!3ti$gNuH170*)#u=~)wJ&byia1K6&GR+|G8CSd=IG6nhHlO4>Y6Wt#x z022z95ixo2y=N(}sA3Kem`$9Pqk}cJUq_QT2WzX+JBHnAS-t^VGL01;X@@=CT9Bm5 zVydJvknzDaH&dM?930bTy&y4Q6}it{A=%`CA^i^S{6y@$yQOx~V-Ha7@ra9`k4bm# zCwxBN#866-(9vfIz}WHh9A= zz!#KX;gsx;%<0;g7=zMeUsA+7+S#RU{bv*bWh|3Pq}QB9fN=};lf^sHPZy1;2cyzi zbn!DfAF^*AkX6pYCIX&Z!X0fz8=D}z+w#lMTmjP=&e=5Y$`ZC`;fI1FfZ2{)(jj7+ zRr!SF+|*k@X}c})=B*)xfkMqqXvBm;{|_AJEjKc(MrC=);87uj5=M6LT``Nm@M}&{ z9Q+8gM!H92h30}h$_YXkT5Q<+h=S|!^Uq#Ki(OVsR2H1RIqf}g(X)?hEqwj2II zLU}YmLgi6MX1UxZ0nszx4;-1a-W-R!L7&o$XCDQsgk-u~=AGWqC(hB0+_(ay> zuTt}5--2iW3A zxyxAjLEr$~)m1}GJaArDq-~k#5q1sA_w!eIoFWA08GNr+1@GBryrbU|_-#59_amS@ zM?Mn4BLnO^)OyCr4r~m0)?+o(;l`N_FN`h*C?M?9VQ;Y>4A`~D2?(dgx?0rT?QP=6p?pNJL2U%?Q+8I(*@Z{ZJEWfhf7b+!fUJaLYQVYwQ#?uarSVxCGE& zn7FQQdg$9{%R(S8hvjJSfl)(w!hv%6MvA9Xr@KFs3L&qNp|q}6)_TeOAs$@tmV!L5 ziRxXVJ=pt?xPzl8$DeqQ?zz?LrUAlYa=BPlg**=l$jXT;FD@e<(g}{&1&<)wN8@T6 z6#5b52&x!fleekjZ#iTK3-2f1=N7$RhOZDJjeF*<(1p7qB5n7WHRbT?u({8i{@AE{ z5pT!whsTdkH#)2_O}Z&f1`8#-Q_Ery+q`oQ>m!R6`C*H4Mxp(D*QBR++FBgq$7HX; zm$v!G-dc__jnFsZTfQRd>0pnoE3YoA@4;sB+q3@M*PCVdJ0tryrk01l)>23nvt80UC7zpImIvk~cY6!UExo4~&mxDw5k zq<%3v5Y}F@167Rk*pixce=7VST{FLBm&{N5y0v91S&5{>WMpHU>8&S&9CS4sSqggt z9w^yhFtY205iLc$aGG;}QDNZY#A{!Vkpt$i_?RrCg*!^E*<r7f^UM8yZRUKH3z7 zW2kSmoUq#-BaA1bQ078v6KV6d zot7Lo6$+wejTdW_v$!5M=5jsU5KQG&PSv(|tkdF!*LYCOUnSDX&@6p&Haz`h6|XHu z2i)16LHnCt;@9Yqd#z3^9RXLT_shkvh4z(OjV)jw-fzpTDp#jD?TfiTOg(iI3M z+G1oU$i~*v1jWw0nuvH^B&hl$(VaWbjl9Lxt}*@aqd0|80BZwm+!Byj;yx+Hn*7|EU?60Q_DOHNPi_^xhkar{CV2dXJB>;cZR7x28swR>?OXT$Q}sDV}0Ch2^Z)Q;rJ@ zk4K0$y;UTz%SPY=shl5+STcf(a%)RZ-*B-Ylv^xWqjjfy1q`#9qU>X*k&X1rbEkZi z5Fht=iObTTyS{})_v0+h%r?_R%AG5%d6f(}HR{*wI6~eGipAC8qOx-r$n((fB>*QN z&wlTliD{pQv(HXCSY*Fhp3a$fuS}CRl6>XV{Mn4|yK%fhI$|;=T-1((bAQXkM5*AM zt>sW^DsyY(V!lbJpo1md_a}Lt2zg-&yUsZBm|in7vMZbtYD!_?a^a;`PER#tWDI+- z`M|LP#x#d1lkm2&N>M=!k&wNVS3_fN`mF(%mM=8&EvKaD)G0UFb~kc{w8)5C?{|CO z#I^Ap82J`1UTuoy)38oelNgQV#{WdMz~P>qIkpg4GNzhPlA?d0Ig`UR2bbl_T;6qV zBl{56MUK~@hCPD&y8S?*d}uK4`EXs3JH@;Es$)bbvlwD?uv5ge{I~dnjvOo2A!uH1M?4F4ZpxlyKmH(ebdQ$HOp)V<;I503FOU^lq@M~?BQAwlrJ zag6@~RK@trMO9UAe%n){#h4C%sBF&xjcdq{KP}ZU<^I)D-5mnl|Ba=(33%#IvAGIt zq^0`qcS~qqKm}@E!14A4LS_NT`FQ<5aXzMk#1JR`+4=YcGt{h{v9wfmEC=F(Jlu3ght!xh$`8N64H`@_h8|3DbmIf`X$1(* z@e}?d+v*cwt6=^c+v;bKh*H|z5_atCTnU|p67$a^zx*)>EPVldovH5p>FfOBABGu_ zgAep?h8ak_1v?-`0ls_>3AhSuT>;JUJOAK0-VWAs=Rfis#{^qN@~?mP9IurIudZY2 z?96Rz7upIKNKrzI}%}u94M+`V;f7s!l{s%jJL1e=Ek9PRM9AF1X zCU1;*AsaPZ7LmtX8#VIgm*8$%T1a%U+g)hz#DcUx^8#h!N%K@?%$hDJj{*<%QlSmfiNF(-XxA&09y zh@Xe)Y39ZRlsUIXbQQF}8cYZv zYjX28=%IVu|NXFyH-FAJNJ3uR*s_1g~p^kyrUcvVON%6H^Qg=#gnE%~S>* zH)D4B`6-K^{i%%y3#(m^lJ{C)5D-Wd4#P)>kN7m`$_xqTJaPGtQ7Xg`SM#Df{da2; z)TOebnFz065bdc+9+Gx)tA?~m11dH9GhJ(AYKvdmoL18W7)5>D?wBGnfkBfG-XgWK z`pt;`wh{+wJN|+8;GS=1emnxo6Cp|kQFI(4#s`-x(*T+%(^pPZ!kN(Bi?bBvuOeGf zPY!g*u*Ubt4PdCa{pd}>yU|1?o1xbHf}$daf&#ARdb-T;l<_4=IQ#iL9uMA%v}9pb zMs0>iJi*FCM(t5_-Awyk!3pmRJ}Ph?!0Alf5mo7dbgrEoL=uwZYB$3KTtk1hM^hGU zk5Iy6{hITFIfxD=4CWA3GVQGqBwS2VKb5~7_3>hWRpAr5_D%~qO8}KyvVmFZ=6`IY zleeH`NcML(XH>w^!B)hlf+qpqu2t!Tp&uy0x_Q!{nI-`1CZnW)w)ee24CQW2ok#1Ye*ICZw>GY*IQgxw z;^dQNy#gDFg;neJDffX}KBEq48FRhrX3`Z=vVd?v1F1^I{2RgCQMshF zG@_==bX%hrm_(p`jAS7}ory88I(B83B#cH{?F&ts%SWu>i>|Z5p6yFujQ9LCH;Ho2 zKHiy&uKR?FF5ky76XfrrKd1!YGeUX>0)H`(hvFs4oa)5kA2rQgkkJyvUi!m03t7`V z??0LKh7nj;Gvb%DGBCfHd-Gs=acB#^kUzI7P8qoHIvV?uG^iMR+?*TA$z64UeRza2 zhM3~+`K|SUdOJY7)T>TKqq7_^W)|d~Qs{!O{zGl1C>J3T{rI!Op+NP%k z_Y=%qm*uB}*V&bosUp;LFMnk2^H%c+0c({#Ln^!XncXfWO}e*B%lq*0{F3C8>b%lXICSig)*xnW@tf#up0^ID8LoGRkH~j*yN9luW4TQAM<0fDMQ>yMa}TjQq)c zv`R$KDrFw8l2EHTmvqVB69}3Efs7kxdrY6)-YDs2%}%JV>qpK?tbmj?l1Kdgj|bIk z7TD%2EFuHws1;X>^6+*$O<@({gPCJ6eqAqlnuNoFsP6GWu5{NQ0w&Hd_i=4u%z)Xj zCl(s?BS7j1Ja)s~r`A?B)sGy3Lcs1|v);<6F8Hl_%&<6BVJ7>)B1xSt5>w%cGte>*7~L zyOoLhO^dWw_?=~q>z;nT)XH2#g(EM}>7P_B*v(vXkBwGN>RiThh)>F94p&^hFc?SR z=5Nb&8=qKGBK98Ylsp3#qIFkhLQ4IA$*Czj*@hu2p<^Ksn4#Q=ysx48S-C~W?WxGx z61;mP=mU~5-bCzyi+ z+I;7~&hK@NE=$Pp9LUfOJJfipl=m!hKIviLa+*W*g^MsN3hPlR(0@Z~K%+r5(w@#= zb3BL=30K8)VRQX4uHhV*;uP|OBk}hh%A*7GSi3-Me);fjoq3i;HRB`a){+`JZJe0T zd)7uU8p9cP)=DxB=rb~7OF}5 zc%gtbze4doJmZ6qs!2w;?pDzXaMZ6dd$nk0f(gqiopx#>78C$~h?<@SAZAJkf7%qo zsVfwj>=chArNcIcA2bR65Q=u$r=`TjDGvE&?CSti?F|7kk};|6V)Ibecj`28D<(~< zarAe!yoX3W9>h5qObX-O35t76tKyz)=YY6h&S@S#r{*Gj@64G4JiKyQJ%jrcXsg2? z5MI#U#9#65myH&G8-oj-)f{a%Vrt|@3;u_V#zJtiw_lgA+FVmLwdFw}M`e!M{IyD5 zO~kgvGu?4<0s1h3)r=MU$_RCj5JvaCEHmeE$2nEz%>d2(d@6@}8M=f0GLQ-NjCu!r(30)4ge1PZ3Iz= z@GQvq*h&@dLnDSzqsyQ|o1mxf{pcUTj*?nP&miUJ$XGvsO^yE+?F|oEpFOEBsn`2r zx2wB%iqBf&wSRi0y<6R+CH%nBaA*v1X_RX!+a^VCc^E7q5ibkd!CIcbqoaQ1+V}ze z9k$Iy8*0m~#g*Jos*0QEKQ1>DzZM_@D7nUmBP1hP9@NXtp94-W9eDw8Qlsb0Sb0D< z;i!!GyV>uPDLakH6e9E2_A&}{?-#t71w>}%CGqN!q-~)McUe6un?a7b>>QjiVP#|C z!(rDHAupvhqt;M!%St9jSS4eQW$wjItoTvvj1o0y5RIqtl0+}Nh+u@o=ENBa))&lx zM^QYCXx5LL7;=S{w%R0Q(aby|ph+oZ!ta*&Pj1YBfOEWDC>sbpA@IRZt(}G^{<1AS zEFRJSdHF*~f!JTJz9rBE1L|W-5btv>Cg%e1J>JGxhAuA+#ig~>}zKO);a?)679#642WH!NLqX}B_aTL;T4P67Z={a z>dq@yWuukxy)b}IW#U{d?%~t0Jkn)wHj0qpMfkI(u`dmltMrZ8l-P1vSjoNGq`}$K z+;Yl{|5WXxp3a5gE*3@C$xVupkD72`bO5NpGs6ptu!HxU4krZ%Rht-)?U%#IL(708)`fo0aT_W z4vp{Fc0CC(_-R$zFD%sC;f*rqAe_18?;irw{w9+&@ultczeOeEm%m@QJU*Q|+x8ZZtPl?|acHSNhXEJ;mq6RvtZ6WOYm zWqi-X0#}y;B*EP^_U}_@S#ZpDQt)+59B0Tf+-FauUE0OCN=2RKR&V!O#<;FdNq}+^ zkFRlax9QF&w@Jxt66;Vayj&Cy{MX542v=LjQZ)GuXMNF=)bq#iS>#}_{SK^Gy`P{9 z^6#cug7uV(C(lu-T?ezV9u;5E#$HbntJ1Mv-VGHr4%FHF3TW(VBfS8zgyShKEN~>4 zhc?3b>m(iihf|c@)$rR*@tSW}T#NTNnY%U?VR38SOcf7+mW@E5KkJ40LcjFTyh>=z z-ZEx;`Gm^I*>d?kZ=Qkup)m=q&Alq6@0p*Km`f$VjYm3L7}c=fLDIRuCf$`dT0Ox) zuNPj?5YILjmJr%9@rre!1*!D`ky8RvI`mu#>LL3DJ0!{I8?XK&Jlq8)!UVA>6XD}I zp-2qfqmxPx^ftL}us|sQp<88Jy_klxIINj(9dAD|Jl5Lu^Nf>9Fw!)8WqzpM6`dXG zQ9-MqOpBha8%%J5kXW+$TX?j8WO=!G&|7T-5OUhMCxh-t(YP(%QJYb^Q!TW)|K!VE zeC^DY4!q_Rc~_o8%u`octJ(E6|43cafvJ@TWdZ6mX*AjZ$&@WuqI(k56 z$9PE?IMwr7Zb!7YglB$TuC{TdEjT(2U%<<;J-CaAw>%QIBe?|kp`f>a0Jb~eVEGCT zQLE-ai;029rNRv z%!sU;Y6S+eF*H+e+K3Jbrt$OV zGLb8i=|*Ip3P8z!Pk_r8To8?=&Q@x_Fm08OF_(|d1^V-|yhWBSw|~=*qu_U7I_i0f z@?Egko;k7=kuKoFDR%2o?_vCY#({zs_$@Zt0?`MU5>dLehM{wE? z!IUTX<(b6g(zjqbBimsjUOiLGvGcMB_yDvml-7j5oqw?ulhQv1(h5BX#Lnro)!$u@ zQAHeBB^f;`##>58Oq%oX&OTR|++2DVA!yIY^pb|Y+A8or!XNXdJUUd*!IX$cR0R8A z`u5$Mem9;ANu80=Gf1~gU@1@w;N7_p?J^-rm$RT=`K-c;z0qmY`$E-EcRgJ??#Y5& z5>-Zxn;;DcjgPqn<$Q1#*L$0rRR!%AGZMvD$Hhyl>&q+LZ<0MR6#)|(*_G2&oKzzh zo;*E?jt!_$82kses8JXwl6Al5QP0udII6eLLHTrtRFxf+xLiAq4M^?1jmups!2cFD?)m6(;7XC2Dzapj#}FXI9YOd~ zQ`JK#eXkrtAS+(le?h7&c+BX>lU%^FWj4Fj+;gpXn5~YH1(!m~O25FxH@MHjcP5_h zlr%%Y*JS$&diTMQ-6?UDZ&6%liI0~n6n{5nZC6Kxq~x#;gsI0|C_(4PDH)UPVGe)% zioLh}=HlyT+2p^;zw&7LX(yK!3rKL0vR~p6r8i(1sS6DOFO;XLxfh3DW1*M`{Xw*VZC%Vs%VC=pL z@jW2ak-{#_JDgG5DH?H|zXy|fz6DAj|2f4MGZceZ(Oytqi}#2doPk%&K%L(f5s|lB zwmzk8+1_5}XU0@Kir z@Dp)F+E+mG_r+lHd^*&(+7LSXj&!1d=*6HOF{Ty0@Ky!x*CsOFFUqIRUy!WoPJ5RV z8ah|H?J-72w1(@`K*6xF;hc6&ejXQmWsTir6eS)wnP{zdgpy(pq+W!gf6*M;)awA$ zPIJ@C;^3&zeRgZf@;tds!5#P-{RyW^Z?EO7nPONgv_qJUJ{F1Lvb&0TpW@<{=sJZWoO~RczfWKaMm?6pE6u$&q7YImLE}`Gw z%j}2(HbneD=G~Eef|N#R1I)~Ac{Zt*C0;)KRQ#HnegW?p`N_h5I1pa4%DBV5{tjdm zT7NC6~_o$##yXJzU_a zwnd8=Boljskjy!jkiza=_8`T5LzCnie2We}nG0TXcbG+L$XKdgQ?!Bptu z?aX+IzU6FLYx0&s9mxI~X>ZDRNKueFuacsI^dHdC<{%FBuh$A%LPtU(K%&4L8=Rn! zj6GRFArdO}N%s&w;%@}IyHc}8@51%Jyk%*#vO0a;Q)c6UX{P*1$b zeDaech|AuZpTBV3g8med!f}5_!w4{GVdSMPZP9IzxMJK(T%q9pvneH|{`(>at$gg& z!-$w7RN5+MJ8kuQ%INQclznD!=ELqO$`RGuuCDTHQ9^O^xXrIBD4Q}H?wmUB=^wtr z*~(&f4_ev4=*Mn|%gDR>X)Z592^h&@jss2uo(9n0*ZRD7I)0xC%468~_Ud)ERW*fN zojN_TYZJ4UVMssbG6$XqdHBVlTHRzs`XGH0RCR8HVxiGy@hXc{1xtWfXTlQb3e1nD z+7>)^)(7F)^DLm}FakOD@?}HmQ%L*bVwiW*&ln$fWxbXy4AB#`(Yra^a8%_yv_G4) zcYhk?r>f;6>O%@g4onZBxp~&;pA=5y>5h+q_BP3Z4!u$zKZ;*TFO})-N)H5~{<|5o zzNrfQNuvqOxBdc_uRKGzSRRx`aDv|6M<#$AN{7OGCsKYU_-H$JxVooj!?ACa!QYrd z*J;O%&6R%m+MM#DVCi|!uGf#X;(v)lN(?UmXf(y+-`QMK2&N5X8Y@eF^e<)*m zV!D8$s{W!S)DPJ5QP_0*;zDOxdZ5(j{t{ZK4?o&1kj4BQ0-D=ikjkO$O714A&s2W{ zq%%>dNIXFuPwef4SmNLnpt{*~e-KDCf5m<$4C2PDm5_X1>!tydw0Gf7GLaLq`a6{| z;#45@q9*k#IL}*T4WCnuB=A!{FRvXlgN7d-I=}(GDL)kaCK=3PbiJ}YcemOb@Y7ez zs4wo4Hd21qLYYDKz3n;aDd+Oa(3!pwWEB^e#*J5e-04GyCld{(4UFyQF?$xKW>JcN z0Bm{@As{W(e7QHjp7=62`P3M*pUt*CmuM(}ZXJtI--lK~X*f?c@U72AYN$aIy&xJ< z6QInf&(gYw@==JHfpbR8%v`rO`%m!7 zb~Lt|ccXk(PJBUSHwAq9TE4(1c5zGW2vhN7r_>gcBGFnJ{|V`zoLP+X@9pdkpGGY?)#mUc@UNP=64l##~~E_ufV;i?#3Mm z>%YMEy7p*L{x@jgKc$&}#{>V4P4Q2ADIWAbz+lJ!3fwC(-+{3H8*J~la`|7Nfp;3@ zw=t0aiU;QWjn`Lsn6m5h{NBR3}%lC;LkcIz>2Hvxl{{;{H$2eZNn7n5`_jd0; z1NZC)b|I|)f>b}4kvd@2@aFy_8u-ZM{l)|Tca!Ioa=K${={`ttz6S+M|GUlzl~K3# z%~X@F+Ugo|-%Y2Hx>(t8yzDc)`)rFiNKT1I%YVLV_y<2EKG*yH;-QJ@QHE*Zs9sJfHV?#{)|zJv`6F?CCI!HK%8O}n3|K@N)d7@I16#O zXY*;kC|2LFzQI-Ml|4z*K4+>Nq+!|Y%T68uGJ6iLjMg2BTjWvmayilx3z9(OlD>}t z&{beN4A}Q|;zr=ZY2@v&J5zLmykBi=jpTf5jpu|R*+fMr|H9jx(&cz@rGR_PMMfV3 zfAHF7P8 zmi(g)Xh6Ra&Ew?A_c?!jW007Bm@4VCZ~suvxG3rZ;`xF{ z_W;jOT&N2UAU*>bP%#wW+vku#aC^~rdzmUweL@YS`>Ay6s?okP(W3Sqen|0q=Ah05 zAbXlcCGxU=*U$;L;%E*#XW$Xt>SvFG1eFfqs;i)^a$rtZhd4-Xy?kOxn{OPTC-Z@I zs%V{&wJp~=`Q^eQEi<)lZF6Uyb4gBjT431pw4Z_;V_|!OM{L~Lb$hsQIyyB!8CjOu zFYKP4E;>wrfAyRndaZ~=(A%2#GV~4FOR<6Q2=MjPF@=9CJK4ubI5t?SnYXp7SO>F| ztqZ-$I1;9&l=dzyU|MG5H8%Ex00}+Aq%x@&o%g?$wGRwT*xpjTVex*djjc|uta)5j z^~FHfz~g1y^USlQSErXr0l?U_E{L;nVEx?=6i)}0mw)x_!dry{eLbhdb>*e^9VOI} zgaKgKytKj@HGCjTM1M@{8A*wQwhrtq6^M_7ADt-$!->J^SQF9#c{WpfxN=+8!dc&@ zv@yv<%9rGK1b(c^O4bzRwng7QrT~F@14N zw3hAArJ2D@Az@6LC4wtVR?av}5lrXrF>dwupr3c=iAP5}Teg)u#_Ce2T=4dZta9_+ zj9F*4afJw+S)1%Erz-58O)y7(ppC%!nx%8_LQ@YQ;IbbX4b705mL-2H^UH|E&Y|gj z9eudote-Um?qX$O_U2mxS6fz=K3usp$ypS43O0|}$QlonO){MF(Of2gs(89NdX7j38|VO1xeeeNA}{pyPg+KXWp5`n?4y0sn`A87&H)k~S~<#eYx zXCrOJu)B6-DvwW8$cFpfwbQI6aYQ!ty$Eb>xa$(Ls5dm^^Hqk-FO$eR#dtnzj(os5 znP`A`aHfoHzS3WR^E1UnnL~Ne*!QmufQ7BeJy#cy7s**Se7K={r4-?%QpG=zVA!bw z5aGV79ohYrC)v4OJ2JC?$%KnhD1A;GJLY}OUzJTUUfWq@m}A2%ZlQR%YBt9?lne}` zAthgzXowUqt9jo)Fe*OSU!tFlL%FPu?Q>I}&S`20^eCHeH}^XKpqTHg;E{sTFT+wE zFAC^P>+d+0E~u!Vq%=x99hj4S(V@1wkNx4QwjxlP+Uj&gS|FhyVEj9@chA$sJ*;2R zL79w1oWA-xnD%}5+pnv~w^lZ+Ve1Ar&-ey}F=Jvm-NjxBr!NFK7@6f02+n1LEi;xa zb(>FxY#K5U;nHB&=;0;yApzN~g_<}a*UKGq)`noL#o#*0MK1G}9`-iNMZEBQ%9^B> z@yF=zT8`#BT#anPJum&XA9UysYFWnVG+i3qoKHnCfLK{`#*c`0~Zx*D15>)3EiqhEMB)z6f#Inlx3yjzS=+ zp||GNEmz)p_G|PYW_YuPrt{BVY`y3KC>YfWCVMKxS^BNT5+=G;>Zkjl^FSX zYZ)XN^Vb-}53G$@o4f?*(8SBqi0iU4KbzpcAj)Ni%WeAnF_w0}Leg(5!#7%&+Ms$U z2%oj`^i2fyYYBvTvBb2~>Psj3WD=d9m_(n}uEoJ^)tWDK%z6B}?_;&BdF7i0v`!hi znnfo=$WPkpoj>?4ZxumwEe2^G6y(X)2@@@OiCtZHZ<&i#a|^Mg4S)Ta?cSVZbH9JW z7kX}m1WAwJ;|a?pwqdFsQ!V$Xpj>d6huMzZIss~2Y;R>UeD?Ln5=?Q%uN=}OgQ#r$ zpyNkdRAHLqw>R+WN`u{@Z|b5BHeiL@);Zy)$Br-eAs1OjOJ86LT3vR)v!ePnjg=G* zO+A;!zytsG@;1&&p?MdeGpl9{FPlY_9QW4DW`2o{9XlnZ9nj$J|0S^fmd{z-!BGsN zE9qergD|N6#+&n3V38-jH;45h?^fE#s)wW$DK>gX8C11gew7pgZ$#k9@z}?pu+)lY z?**nXC8}8|Sh-xDNtDYju}W6eUWzuXVc7a&_qYPbe#H&=t2z1Pa18#Tn&-6Fg-GBT zTATvQQauQZ^QCegJZmjYHY z?sTq}oXNqJ*|fp;igJvVP+-CyX6>jJDeS7^g95hxRIvnyw5%0h^m-L9`0fh1zGmm+WcG592wvUaQ|^c zg+&-&?**K@9*WG7TZ1uOjqkFTPi&GEJ- z0q&j+*^|*3<~T#A!NK=g%kj`s26gAHca{Lv>ZF+!|Bl8n{T_zsREv;!<2U(4gKBZT z)@=KnPn#4857V&m-c_H%%dz-4dG_L%jttrl0;gNNI??%-28{t(r>}J+qhGUz*a@n2 z-eIs0vPZc3aXG9!`?Y*)W8FjcrraAGZmSl{JI6;ioZF-41f8>Cr_je?MCTjk>K|Z< zzJV+oG4d=`;47MJR}PlaL!IWIvnMOQz1?gRWmxgC;OAGj#pPFKL2qW|JI>lp19-*8 z+FfWu_tqE|@E^P^6CYEof4qaJOqi+{O#~G9F~AoboOzYf4o6c zkTYO+l~W~<++XuWFF*Tj`^l(2jq{&KH)((3MW=_k)y#E(M%EyS zqhftv(A~mL)^IP|WbD!1Xpi=;D|cf9$BjjO?r>y_A@#RPAOS0iolWMWyqT+mTOO7D zX@&ZUfGK0-lGF`W0`7Y8%wYXkTh5>lT;FmnJHL>|CS)tLJ$a%x^1KTDyq8@H0?E(F zoc@U>>2=|1!NS$eIWfJq$2B!f5P4pJM&51GQS?e1F;I;$ER&ORhig>_GaK$=_(N46 zqP&EUCP0`7tt&Kn;aH-tHhEJKQRVBrv1z2uj7ns|+RhRe!yTy{A4ZmoKcyo&PZu0- zfbGuJF0=Na>kWH*EvQ{iNi5&F(`B|pR!976yMloJo6{Zz_XZt#|5iizotL6H57*eM z^Y8k2IyX?|gPx-8`b)p%al>PXEZUM)MfA|cQ76GSkd^rlpP&6uYFY#%9gFU)PxYjs zk(x(jT3Wskw-;yYq}-Y_J=Ybv zcf#0E#M_@0I6gdOqON#Fio};=ztFtDa?fw9E$c}fnC6wCz}H&tcJ0#j`dUmPiNO@r z#}++v4YRT97Eo(%*}Lo#ckZ%Fo-vX$D^hel(RTYXW4{IRvL;n0y(>EPV*}qzbZUj6 zg0qCg^FNCTn;9+)fN4uE;`KxvvdOD;C6~Z|4uMd=4~!HqM7`P zmrt^;T#4KKDFr9f-(8wju*&@*n7_{KD|bF`3+_0ya^)=Gdz)AE%30)JAQFTHGEz(zWJyXU@v>tDx2eUg~Hf%U9D`z!rlTX#<<;j+d#+gCDQS7 zH-6n)g93{kQ&d56*5syQ^~o%}B2QKa#UvrNHuvTyNYjbTe0NLoABP^>s(il4g+kb&(wnLnKZe`}WEHNN`A;kZNwK7HydE34*c)R{65c#~ig=iV63Z zjxGIQQk_su(6oBoL3^ioWY+fCyHFeZj(HcG50(QbM5zo&7{eLf!wPsNIDx7sl!F<{ z!CFDLqzD;>8Sma{l=eGMoanHG4*;RJX$bw2Ld?Bwi$82sj3&j*qfw^<*2sYp+tu*& z8Q*vVGcZc{?0L~k>JAxDu<_E$iAJVr;hr=d$;IFWR&>F;{K%wQo z%T5ITK4FI((UX-Z{B$7Q3b1jRn%_wIT*6XQv&Ok(rRv{w3-c6*V%3JKU1=|a=f0$< zeu@5y?VQLLE;&qpjsgu>_R5b4@xDF_?tEDV^a6TkI1T7OgBbG8Ks)+OLJbu$MeSet zngM2}5OQck;>3+krJkflzY<0rb!pfIzfRfADl@){vnZZS0bsI zhM*r}eGB~&apSnnJbfY{^-@)HiBy17O?huQ&HR>m2bP+N^y||jo|r22h+AtKV1>I{U1IjZt~?6^T!<$FRMG;hF?%PCX&ofp7pu2~&C?7iRX5By9;r2cj3VNCk=7_UL5V4f!k3N9A1C3E zs%kJ9^}z8uQ?$mw+7>fWDhYX^wg3#6WYcDUWT&mV4vGmLco@bL?{`{37?|#i5$s`3 z8F}B8*9xN4pcZA@;5EM>Mn#W6x_c3kM3UAzl^(P5pE$*pbSl@InACsv)7hpM%GF6TwgEta!Q2p2T!tXPp{!2F&L9rtqGOvP zt{z@0neC-g-a~w}xQ$bwFn|AdzL$aoG%x6u#|?oEhf`jp^zXX|-p-Zub*1|EQaCp= zYHub2YV{}znX&#zOi>gj2{_5W_|#i7Yb54<#b}p80ooOSUT5EtjgyF4(IyckauQpTEh)h9 zeFDM4G9C;u=;w?`NbonNysT{p7|BQ{LN)i$$pV)$OM$_QLquT-Yqv8Ao%IxMU}Jmi zcTdai{Ra|qD?tMT0t2E%ZA1ZJX@<>B5!lnczkS{>c*$KhXkz1M0ukWIDwWD)^|HK!>DEifU?lvL zG9M!;e{SC5vT4-&S)%Mvl$`)0lcJKR* zoPX+(J^0oA^jrN3pc})FKU*?hb1m-HY&zC@cfUWD&_vO)}&WJ61tKlJa!zDH~Q`$Xh8Yfj;Gwx6<{{3-~V|krErhYZkM9 z<;(Im`#lsF!D7uT+4Q@^H#79r*zwzEtxQAy+VJZNUz?CWpB=}uOvAx4ga7hx>&%c~ zlZyYkRG-fJn#!5yvzL0Hd$^_u%lH+?8_WHRv(-me4Dp_-Kyib4VN3h|2u=0;uhsO<*UXZW!g@>%CT5BM!Bp<4 zcej5vl!6u^8Eyj*0QjP#*k2*s_Bz~9{1n%ur_cd0WN}6}1)7bHa5n>prOwIniC~X3 zxT}5^6uH>F;OVJhRfadT%#e}*t`qrXhvyH*RSRYA=5=h={ z`^>d4TL>ffw5QvxU+{A8)j|J8;}bqjn(U_ElmUJDX*o{{AR7RTSQMueiHm}?zE2~;#>w)klnbC~!b)8LL zF)5&EtFBxtI(xB$-I~k%6a}vIhe!kZLe5VE(5fIi(Z)+u6Iwq+8mlkc8~BlTdWSi& zzZn~{j}Pj~S3+Uv^=`W0I|SfcYHvB#5u28ck89WE5oxmqdaZHqCad3k<02sCRacM8 zjTgP>yo`)h$HcJ`ybrjrCA!|#;a_&Ww#=^@BgAja2priuP!w1%o+X$2#Q{UapTlX3 zN|T@uyP`@<>zCL&pe2vcl$@WjdHPePNZZM~@CO*NLk<6rfX+U{v<{ooN zRT0%Ldf*HgR9V~7|NK$F0r2*%hY}OpQ($&5Jt%eZogSD)XJapy$p@fB==Uch% z7Y68HBa+y?NT?1?G@J2vtB*RNivb&9sl0j#IPM=wAPv!2amrejP7R-%~$O( z&FW(lVz_c5u?${UCprudC*`l@f0bDtZ;e88h|DVzN44K0C%WOvAN?b|*bfu|vZ~$Nz0i90%>las}Z(k~E8t>u$8rv9TRP~Z|iG+uk4OG~^253Xh zTWcDYuc=1(^unMu@!I^feTYt8saFC40b!{IQw)zzWX+oP43fgXarld^X>b%cg3;F1 zX97R4^(L>lY{Z)Amh}A6V3$7o$~LVmn|H$Q&Mh*!V4L~47tM4ry=f~5hqzR@lcn*J z>@uH%48JD!%AmRuizeSxxm&3Vf4$pa*Zruv2my(79FxblSyuC6q&A2m zob^0OTved#3Mb>pZUPOP3O7LOb&&J8a%21lkf(U9miP%FO8@e~tW>9Mod?WlgIf*M zNjVXlt)*oWE4ND05TfHGcJYZMc6p@>S*A+a(_^%tbN-q#$o97tJ#p2VR%c_U8Qv5~ zkjjTU1t5M9YRYesF|PNI(n4gOrq4due$E8sIxl1d|=YUS}Q^71t6L=AY@>&P1|q2K zR}b6XexH9@T@` zHc(JSQX3v`Fjc!tej9F|?3@>@SZPt;1w~4!4LVD87RtFQ+K3ljyq7i^Qr0~P62LZX z$;lPRLL#V1 zZ2lEsNQpy~n#ehsCth=TyRd!nSDM>)uz%Od7*<>FR)z9X< z7^OoYF#<%yKVf;}+Uy{dq4=GN7-y;3Wyt^YeRNbM^BesHgNrW%felJz?;kg$yU=MD z0;)8CPk`jdmbtR=4pR^J{rDu>dU*QCM-)VfkS#cL6ifbEF{Oaa885 z{KGc%C#3fP-B@cMf{)~2VouN)c&V|~9OspDL8W2&55n!=z%~GfZGf?xzx`r2m^i9^ zb68a^FJ0v_DTPC2q0DZdzYmEJc?YjcXMI3zQ@{mORQRj2+s;;Z=H<4NT+Rvt!!zev zY7+Kg!ha5(h&BGRI@^DhqL_N?4ct{3QBaSTy}XWlUCmyr_iw5A2~ub7Qs*{+{CvAM zC34Iqleq<@z7S&@MWbCoXJd_fQiV<=7ET+C4;JOx+W3laaYJ4^UY8N3d{vI(CZ7g= zAoXr|aaELYXZj}PcUd4i2-85lj;{w6RZraV?7`%nOD0G{(cDZm`-di(J(a!lw1+U5 zE^;iW+#M>EiA_kZx9jRJ8Ic_C89g&zs6ObdJ^_>mHy0GP6$?ttudT>rZc_#bf{L8! zTGbOHCrka=A9uy$wI9dnU6A!u3+{liXRbG_}ylazphkN=Apg$9SZ-|Aqg^41XAPbqGm8KB4L`)Kn z_kL2fnfcbLtU(rHKS+ckT=~tehj$EY%<+e@mz7!%Y|Q1KPc9xj?ByS}yZqw;y2~o{ z&r$zRFS*-|b_RZFyT1{GTesy&k>K)jH_g2!!i%d>fC3{ymMvscm@-~)12uR|4CZ6k zFc=gb!4fwbO5eltt`hXWgFO)}2NH*o@>%0v_aCc{PZUXbxXVBgwINO2Y3ro5*A7`%;vR0-v}rA>j(G;4`3i zF;3!9fUZLz@r=y$;g_OW`<35;Mc#v zuj@(g{aQBFBX4&4Ld6g6!FWSz@9Mi(5){-KJ}zHI#oBhU>%cu8$%9W~S9&a#ACe~9fFI_;j0k9xMfhb-R$cUfJ^Fr-$n9-%trr6)ke`b1V%QS#4Mz;}5uFhsRh zZs`oue&{~6{cgLz|IQB9p_!q3>#oI{57ub{w-j{rH2VmJ5B$0w6GJqB>*LqSo?5=} zjh7FVpQc`v*GjRbpF6M)hF~2c zwwcIJ((=-zVFWVwc}eo<*@|r5!=Fa;Ax+gqk|>E z65o1LE^eZ7@E#K26aQYrvd$1Hf(v!kZlPe`pXAY(iXK?5RdAR7_KI+?JDouuG&lU# z-O6kE`4vGlyKlv&@bHN3dazu419i0M53EBo*eih;ja8u%#s^)6a13b|Uu!c3yaT^x zBEln99gMt^Zb-fObmrWJac~duC{=>}D{{;Q3oHrlTljew->wY01NZO;pU~$vJ129A z&@lOV;d6t1A2yYB^g6IyGvF?T39tD{gOb>ZBp%W%;-h3HNq+x(;C;Ic4!gpumLuc>D(YTpeVewrLuu196yF8usc zJ+=433dL_z2l=36M&bQ|6I_l1!rvBu5d+QEF>j7LHO|+bM>l)YfiR^(eJUe88p%GlHEGY|J+B?6n}AYj|*Tw;{M2}92u3Po|2=Ul6^Yi$fz6{ zm7OfaPATtyHY)oL4aSinIWi<;)cC|Ur%ksW?e+erWA5>6r!yf7`=lS+^yDr*Dfvh!4!2yu0oN9WgEq18`-dp z64*x1>}Jy}xMyG4Rv%Y(W~@DG)-=i1|U}2V|x{g}r}8$|%Jm zas;|Q+ieZ#mo=ph5SP0|cnYFXL+7xdbJ^=P4r%LHn;MHg>xCl}i;F&M>z0Tg0+Z|P zNH>ZMEu`KtBBY2z0NbQS58ibsBB@;5fDw(_BP8X_fz6lIqt6 z*(dr6!Xpep5yQoP$%im0j6aqQ*G6DRw#q+p_^O zVmSe5%%N7YTNDRLkIU}5aG$rlO;u*>F9gO)do{c|;o`f6d@;7eo?dC{hDY236FPtJ zR|0_S*ol8#|2$xuAFR_DHqxPaZM4SXxyg3F`2aig_k=5Rfzb6p6|F1@KXFqq^s|0o;Ff@$yCqT0q~dC zInp5C`v$oW2S8&NET#9a|r~R zjke8IJxF|=lnQ~EMIwlP_?o(j>(E%fTVI52!H_)`D=Z7t+Q?PpiuP8mg3p0BdsYr9 zE05UfiP-W#cY~K{A(>M|&)aWZ0z5)U&70@~(3O!_duJZS&8{yb zY`~aJ^1y(xhtQWq60r$GrX#HeVDkSYQ>cBsDOMNnhEf>pVnHO5&2nszx(EnK0jym6 zMz-(z67DD%b`TTGf;E^?UDT61M!E4YtyfH;lLW#Q;>K)V~ z&dD`Qu>eNyBJ*Qz9+W<&xeA5ri`qm%5X&ngxaic7yt?~e^ICsAT6At4&0?e?rCKnw zaI3xaOWEuVpls)8L6jXl67;llqfo>sa(K>*qDkJsn~F7S2ucv-b%%qWC}_Ds*g$k) z(ttXU`G~tShcy|G_7}?ox)BEJM({00MUBryoRdIzDXClyuX$HZ9hG zqpiJ+yB>P%Iz41F5IF?(hiNY+fU5*6F}&Pgi-B;vm_Dg>$K}SiL`*?zn<4#+xa$Zp z$JfI4TmCOJ)`*%=OI#Zvi$={Z6~z73^vxO!(Tvm^fHgty|AVe8*WRqs-t<3<9~8Iw z?FT8lP~Eb}S-k91KPl4Iq3etE=&Ph_9tNCj5i^CgDcLo#=+xYIV{qxhmMIWFC=e%- zkjoK-#OuqVgS+iNyAW?EIZBMm%7Zg%eHulxn!!l~Z>qTUKx+XPc^8Sh_#L@16tT&T zd=@bZv013VMP82Z!a-Ic=d?#xyEnmLjQI1|mv^vg+m|etmHDo0_GGMF9D$Fl=j1*U z>V;E`7+tJTl^kJ!oblAtt@PRIRx?znM8c7Iwt0oVv?7FxNHNL_&vX<|az4{J9@E-D zj+bIqYX9o~^^Vk)#8U4jWks7}jpil0HcMeq15pF=)rf+xqlnqrRqKoj^GzK++cE+! zn&YR$1pYmsqs>+>;u; zI3LH2>HK`y6uZ*g3tvM)%Qrhe{&SsACtX%&VG&Ed2pv6R>QtXg5S&CvyssA%gjk|R z;q*G;(k7-GWNRp0A~U%LSJY;C@)7&*XV|$+DFYgdb=~EbPh%PBP#%pp59@2FR0J;6 z#htt+8W|Otu(<&#>+AlEQ#}8|cVJ7h|LwtNaAA2>z6ygvi|{@pzXf~X7vkZEc;L-1 zig6VXwh~db$YyAtDd4?CC`}_}*-VpX?YlNc^^p1@)k7MX<6DznWJdy+nWLp^Z z+AYGew}d`FVf?9Gwz(p*x=c{F2}YJM1PlGywVg|b3w^JlfcAIDk7&1QXu5qD!k@BS z`5roXGSW-W%27*z_(%Au-r7x_m$+i32>9gW1;<}<&a4Yx%Qa;VUrGkUdHq+Q82luK zhp7>Dt9Z2QoZr|t0m3O+xQ?D;?W)LY$mVqOFwAQiEdJ(|ez(Jm?_Dkn*|K8#sqkqr z^CX3*>G=i1IhDw`>1+x#T)(gLY{EA0S2lHMrV&?z=NF^IO&F1m$dIi|6Zh$zS+k0@ z-AVlpuGU-?-cuxEOF~H1h;j3W7h;I?A;Y(Fd9lJR2uY4_3Sorp@@MgxU}0QUryC2M z%Gv|Y+081SaYe(AH!>dH!8s}n=dI;#e}OMGRQ(+8bZy8D;~Q^@HgsN=AzFyY3clm< zvhcNteQvIy%Vfr*yhur>qx~{KVp~4;Hg8*MB5pma$JDs_okjTpW99nV3$zlJ8#%I< zo1e09J65xdHYuo=Jv58q@Oel%c6p3(j5aWbu-ZRnamBvGhnM=X-2uTvUAR1^Os`Jg zwM(w$HaJ)@m3hu>h=73GGF^hjM$9$ZHD;%B=&t8tTb;2wYlSo8V>(VvW{AW6z@N+H zeh>Oe9zAFA!EHdvGn-2n-Om`!%4m-z&2u@pOhqR-=ey*1u;Aj8R4EZ*kR(w5{qFg+f|sQqJ0-qN5KnlkttxQA zJ??FS8$D!l8J^Fd*b^Zcx$Lp_=^>fMgNJ08Ua>5Y6vyhQI2ywRy|WA1S}SBQvBPJM zCIbuY;l-ZQJYtjN8gAujIsV>JxseHaS_}8H$tU%sbKl*48kVqp(hA#j>9kgk?>9T3 zi9A?OIMFOF_{o|LTRWGfQ61D~f@sauExp2%7g7x$X~$aobP44NT)0nObTU|~YdkQF zLihE9tqELFc`F4sg%7&LZnB=7TbT{hw*~6yEy!P@bACK5v&T#x8<9q&w+ctE{`e(@x@(W!vbcw-DX?ah~-yk!rt&U!jK zRME7_c=$O93RqmmNVcM*Dx+N^V{|s;F?b{&EY+~(=e`@(OAS?H{vpkrzx>Q?xsCgAHTRs_BL7c?>YOuiew zp7&X~E2s?wP>5kf*_98|v2T2p58G~`TEKKj&!>3t^~*s5k51!aw6L`a_mxM-=)|}RUkzd*qRbd$^c0i5 zEX!n)A<(7m`S-P1Fj_b>#>mDfGgD)P=~aywD%Hg9U*pb9!9>4tzPGmzPcZPIhqFt# zOR39XEBs{e$-Ir9?138JQo2nBN30C~-X%UC!AZi0M46w)NS$5-dv(VQ!|Nqq7%B7c zIR}PF9}3T5h61x8g-5!KwaQg|RlHSvy7oABwfx-<+P0bP1$;_Ubx^cNe5Zq+qxuSVH?HrS}LypWV-9>zlY6k*OtTUAly`(1I~9icV5B zw~Dd7zBJr$ab7ij`uZ5|--?6mRHVe6#s|h1Q*9$%bP@#Gbp5fsXiRbh{B&30H7ikX zOV>W1tg^wLxmLMuf@8MvMM&E`a*kfibfGB_CT-^NR_U+9GiQv!5SdNs%ru+yR`%AQ z2#+gY-UczL)V#O;*{*5+PZy676}>qI7wKCYBOjw2qe^|Ba^qc>3LDo@T`PBXVM;|& zPI_<7i@!Ao7iC7O>W_}m-4wJN=GVJ=Eb`- z%@dkoXkvJ9wwWx!xd%+kHr*Q;{t_LPb05?&)Gz~hFK3QjGHbn+(fyEmSkG$^9Z@Wl zxmkxr&3*gJ;`9RnOuI6tD3_bpd-LS4ML0#cT={G+ zEE3L{k@$0O(b@KvG-b|bTr0JKV5n87j5D~4pu2NEH!H!Q@OagB;Vfp~zmx3ODEN81=m6DYR4!3aL-bi*-c2-DeygXiv=k$ZZ-Z5;nQ8*2?}= zeYRZe+-ExP2s=3gY`~_OuGS-`^ zP=;VxMa#kjD&BKNWAS(i3<+*!dh9H^Stq!EW*cmn%K!c9-_TtY@cG|NRTkqVJS(eS z;oDR#&o(E{DZ`?h`GJ1i$}6XZvo|_1$NRacA2AVSeA<@}U3Y6moVzwN&Os&rl9?5u zV`MS8-fJ3qZoi&a1bDNt2(gx0S|LKitrN;9*pN`(pk8qqHyf7#mr{IQj<=T6;oXHQ zmc2+wQMmZw(>QqL_>DJR*X9bTpU6<$BD%#jp4lKO-4)1VVHN%qOM(dNQq$V^x-2RX)>!w?9oYeKX|MEgXKUp;>M_BVh4U zV1pV@^95E}uJ^;sMltSp$S?;mG+jA|GKW8yG~^nY(4xHL1D9N-Y=L7sn~*)ER1mv$ zHRvKX{8WHlShiDBLvK!QKJ_yt-}7_28zQiB0Wpek$LZBNf>qyx&JDO^zrUaf!CIGr{MxT_1kf;nf&H@kS}fX$eW-FolshZrtjxu_b* z>Co~I+b2lbD;l1MQp%}5IR?*trXQ~je_2s$m+c$1!HDPd<;+yM;gy%_@?DobZL8^) zxv9+gf3oRZXb-7+h~OgXH@uBng)+u1AZ82SS1&$#nuCaX>U@vi_8cS+c5Qe_dxH+k z($Jh!EHv+LUG&HT%?EqD!WHYyY#!my%*C)O2cPLnYupx&;VbS&tG9F}h;zUa^Gckd z=nJHDTP|oi2f?+0*T_KsUZj~j$C$waJ100lkuDz1j~I$?Y!|pbJ$*98>P@1d@S^yc z=^-^K@{v)(%A0b%0)MM+e*A}K4~&Tyn`*hGX;!7#%4)0xHbeOZnyHa@Z$gqni``+I z0G^7C!Dn4BWEeb*)!yV`wVTa^yZP2$DPAs?EZ zPvr!-P`}ohVM*5`smOo#=KoGef-~66LkpBtz|Bn4d}whXoA|E!l(^n z2S%kmM+c%FAyh;tqGRlg=}VW*&resfr*ARIT;ufnC(YE1auwvC=7+h$O%0i@kNoPN z?;|HYpO890&n&W!e6wZvNa2)tJvhPRB*~q5rzZKz2-1p+?JIQ4e+#$+_1wqEw9}^ue_ZXu zbbuT38tRcdNANlcY|uR`{d~b}Cndhq~t;OgBr-|`DT!5yfsJa94Fh8uQ&Xk?g z&bflQkWHpzMy;+Xw?(txQDV2q!n#=%~jI)_y2v%EQ4 zm`fZpK;gpd_2Q`sU5`^f%etopDFk;NlJgI~={GDFOStGHU5{CQ`g~A3r$DntNWn@T zM!aaNS&q-tF(hMvo!QXnxV3=rKm57?;__bL)|oBp;>xnFl}j=bgN-Xd^p_x>df%z6 z-n4deB9i!Z!$Jf&Ir}Pe|3TjHK499c2&b5BDmqkukPWqAl3m4bpYbo3?551ia-Sa& zUQ>B+HAE%cbNO$*I`zK1gQJKnV&yA+9>**8_Oed8v=V-o_cE=SiFT&BLF^lrXz-hj zrsw|Y@Z8psDyAgob$Y-a&fZ$HPMqB-(8NvHQs0M}{HSJ5H-D3fb))Bu<-_zT4qc^1 z&%gaffxvR6B*W5~8toqM+z7{c1sCpXQN7&6xA%`)QSp9^UD3%d{E#cqe|et7g%WlW4mJL(c%zquc z0(uukxv(v(OGv+g;O0?fMGg(7xfu>Jb4d7uw|7mFdCBZ;ttM`i5%(L`_ z>U#%`#z3ph%C5P*S8Bb!$s97!RO;Q>&T3O__P2GOk=Bt)9=nMMXe2Svu7P`cPJVkl z74=lhnbof;HH{>}E6kEtV54p2@4fz{h?f05-m9@NZGK~uzjO$`LC?y8XTvv?lSz{Q zt6AX5KZvG@~)l*c)a7IMTRhiK1=qzzg2*RZ+X&Oc&3zD6MqeUcPSZ~0>yY(b7?{z zZ(!-)mLZiuWt@V{1Y#IEEwEZxN}hnU$A}+nz4|}?fce~q;A(}wP^TtpZzo%Z(q`~D zE`hI1mo2K&>*`MYgH)9e+*Gzohbv_Y^u-~_lglj7MsN5|IVMA|I-56@N)+(^eTKx) zMss`=VOLhJ_pRef*oPvVPV$M3K5Yu!2yIgQ`;}$sAIVIrET=vwnTSJpZc$hjbx1i} Trf)q4{*w@q5l*|U^Zfq+8Iqm$ diff --git a/0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-b2.png b/0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-b2.png deleted file mode 100644 index 91381dd78e85016c851068b2006f54fda7288ebe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272439 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%0D3e!1>$Y^`)lr|5js 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Ð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


    Dn0fgfbQ@=bCO^ycWKaZ2R= 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

    {qF>=67aJw&?a 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

    mIs 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 diff --git a/0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-c1.png b/0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-c1.png deleted file mode 100644 index 21398dee95d833c0e273213a068314b0bd78dfef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274404 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%0D3e!1>$Y^`)lr|5js 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%0AhJ2medD3^B{7Q_X5x3VW4;y&S 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 L5{y46sK_h6qNJg-VF02t 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 diff --git a/0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-d1.png b/0.10.0/architecture/rfcs/0009-defaults-and-overrides-assets/example-d1.png deleted file mode 100644 index 90b9648fa6b015a9fdb0b44a0884bab19e055270..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276316 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