From 09b53ec6a7ca0dbc84ea064d31ecd5f79c6af736 Mon Sep 17 00:00:00 2001 From: Thibault Jamet Date: Wed, 3 Jun 2020 21:35:23 +0200 Subject: [PATCH] Import private repo in a squashed manner MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Miguel Bernabeu Co-authored-by: Alfredo Lopez Co-authored-by: Ricardo Garmendia Co-authored-by: Oscar Ferrer Co-authored-by: João Alves Co-authored-by: Tanat Lokejaroenlarb Co-authored-by: Fabian Selles Change-Id: I7700bc258eb26a7b9ea60894b855ee0598891fd0 --- .github/dependabot.yml | 26 + .github/workflows/build.yaml | 45 + .github/workflows/golangci-lint.yml | 27 + .github/workflows/manage-stale-branches.yml | 21 + .github/workflows/test.yaml | 66 + .gitignore | 28 + .golangci.yaml | 58 + .yamllint.yaml | 7 + CODE-CONTRIBUTIONS.md | 280 + CODEOWNERS | 3 + CONTRIBUTING.md | 9 + Dockerfile | 23 + LICENSE | 22 + README.md | 57 + cmd/observability-operator/main.go | 376 + cmd/observability-operator/main_test.go | 164 + docs/01-send-pod-metrics/README.md | 84 + .../README.md | 59 + docs/03-configure-loki/README.md | 70 + docs/05-send-pod-traces/README.md | 131 + docs/README.md | 32 + docs/administrators/README.md | 200 + docs/development/README.md | 226 + docs/images/architecture-overview.png | Bin 0 -> 318079 bytes docs/images/logs-overview.png | Bin 0 -> 125269 bytes docs/images/send-data-different-backend.png | Bin 0 -> 304812 bytes docs/images/send-metrics-grafana-cloud.png | Bin 0 -> 167401 bytes .../source/architecture-overview.excalidraw | 4918 +++++++++++++ docs/images/source/logs-overview.excalidraw | 1790 +++++ .../send-data-different-backend.excalidraw | 6225 +++++++++++++++++ .../send-metrics-grafana-cloud.excalidraw | 2850 ++++++++ go.mod | 99 + go.sum | 1709 +++++ helm-chart/observability-operator/.helmignore | 21 + helm-chart/observability-operator/Chart.yaml | 7 + .../templates/_helpers.tpl | 24 + .../templates/deployment.yaml | 91 + .../templates/prometheus-tenant-rbac.yaml | 40 + .../templates/rbac.yaml | 207 + .../observability-operator/templates/vpa.yaml | 13 + .../values-test-full.yaml | 120 + helm-chart/observability-operator/values.yaml | 125 + pkg/controllers/common.go | 230 + pkg/controllers/files/config.alloy | 136 + .../fixtures/additional_scrapping_config | 61 + pkg/controllers/interfaces.go | 8 + pkg/controllers/interfaces_test.go | 16 + pkg/controllers/metrics.go | 28 + pkg/controllers/namespace_controller.go | 236 + pkg/controllers/namespace_controller_test.go | 575 ++ .../namespace_controller_traces_utils.go | 171 + .../namespace_controller_traces_utils_test.go | 575 ++ pkg/controllers/pod_controller.go | 387 + pkg/controllers/pod_controller_test.go | 1135 +++ pkg/controllers/podmonitor_controller.go | 956 +++ pkg/controllers/podmonitor_controller_test.go | 1933 +++++ pkg/controllers/prometheus_job_definition.go | 128 + pkg/controllers/traces_collector.go | 601 ++ pkg/controllers/traces_collector_test.go | 429 ++ pkg/grafanacloud/fluentd_template.conf | 101 + pkg/grafanacloud/grafana_stack.go | 86 + pkg/grafanacloud/grafana_stack_test.go | 189 + pkg/grafanacloud/grafanacloud_cache.go | 128 + pkg/grafanacloud/grafanacloud_cache_test.go | 249 + pkg/grafanacloud/grafanacloud_public.go | 131 + pkg/grafanacloud/grafanacloud_public_test.go | 79 + pkg/grafanacloud/loki_config.go | 202 + pkg/grafanacloud/loki_config_test.go | 1017 +++ pkg/test_helpers/http.go | 32 + pkg/test_helpers/test_helpers.go | 26 + 70 files changed, 30098 insertions(+) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/build.yaml create mode 100644 .github/workflows/golangci-lint.yml create mode 100644 .github/workflows/manage-stale-branches.yml create mode 100644 .github/workflows/test.yaml create mode 100644 .gitignore create mode 100644 .golangci.yaml create mode 100644 .yamllint.yaml create mode 100644 CODE-CONTRIBUTIONS.md create mode 100644 CODEOWNERS create mode 100644 CONTRIBUTING.md create mode 100644 Dockerfile create mode 100644 LICENSE create mode 100644 README.md create mode 100644 cmd/observability-operator/main.go create mode 100644 cmd/observability-operator/main_test.go create mode 100644 docs/01-send-pod-metrics/README.md create mode 100644 docs/02-send-pod-metrics-different-backend/README.md create mode 100644 docs/03-configure-loki/README.md create mode 100644 docs/05-send-pod-traces/README.md create mode 100644 docs/README.md create mode 100644 docs/administrators/README.md create mode 100644 docs/development/README.md create mode 100644 docs/images/architecture-overview.png create mode 100644 docs/images/logs-overview.png create mode 100644 docs/images/send-data-different-backend.png create mode 100644 docs/images/send-metrics-grafana-cloud.png create mode 100644 docs/images/source/architecture-overview.excalidraw create mode 100644 docs/images/source/logs-overview.excalidraw create mode 100644 docs/images/source/send-data-different-backend.excalidraw create mode 100644 docs/images/source/send-metrics-grafana-cloud.excalidraw create mode 100644 go.mod create mode 100644 go.sum create mode 100644 helm-chart/observability-operator/.helmignore create mode 100644 helm-chart/observability-operator/Chart.yaml create mode 100644 helm-chart/observability-operator/templates/_helpers.tpl create mode 100644 helm-chart/observability-operator/templates/deployment.yaml create mode 100644 helm-chart/observability-operator/templates/prometheus-tenant-rbac.yaml create mode 100644 helm-chart/observability-operator/templates/rbac.yaml create mode 100644 helm-chart/observability-operator/templates/vpa.yaml create mode 100644 helm-chart/observability-operator/values-test-full.yaml create mode 100644 helm-chart/observability-operator/values.yaml create mode 100644 pkg/controllers/common.go create mode 100644 pkg/controllers/files/config.alloy create mode 100644 pkg/controllers/fixtures/additional_scrapping_config create mode 100644 pkg/controllers/interfaces.go create mode 100644 pkg/controllers/interfaces_test.go create mode 100644 pkg/controllers/metrics.go create mode 100644 pkg/controllers/namespace_controller.go create mode 100644 pkg/controllers/namespace_controller_test.go create mode 100644 pkg/controllers/namespace_controller_traces_utils.go create mode 100644 pkg/controllers/namespace_controller_traces_utils_test.go create mode 100644 pkg/controllers/pod_controller.go create mode 100644 pkg/controllers/pod_controller_test.go create mode 100644 pkg/controllers/podmonitor_controller.go create mode 100644 pkg/controllers/podmonitor_controller_test.go create mode 100644 pkg/controllers/prometheus_job_definition.go create mode 100644 pkg/controllers/traces_collector.go create mode 100644 pkg/controllers/traces_collector_test.go create mode 100644 pkg/grafanacloud/fluentd_template.conf create mode 100644 pkg/grafanacloud/grafana_stack.go create mode 100644 pkg/grafanacloud/grafana_stack_test.go create mode 100644 pkg/grafanacloud/grafanacloud_cache.go create mode 100644 pkg/grafanacloud/grafanacloud_cache_test.go create mode 100644 pkg/grafanacloud/grafanacloud_public.go create mode 100644 pkg/grafanacloud/grafanacloud_public_test.go create mode 100644 pkg/grafanacloud/loki_config.go create mode 100644 pkg/grafanacloud/loki_config_test.go create mode 100644 pkg/test_helpers/http.go create mode 100644 pkg/test_helpers/test_helpers.go diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..e52b48d --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,26 @@ +version: 2 +registries: + github: + type: git + url: https://github.com + username: ${{secrets.EXTERNAL_GITHUB_USER}} + password: ${{secrets.EXTERNAL_GITHUB_TOKEN}} + +updates: + - package-ecosystem: "gomod" + directory: "/" + registries: + - github + schedule: + interval: "daily" + commit-message: + prefix: chore + include: scope + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" + commit-message: + prefix: chore + include: scope + diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000..0683287 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,45 @@ +name: build +on: [push, pull_request, merge_group] + +jobs: + build: + permissions: + contents: read + packages: write + runs-on: ubuntu-latest + steps: + - name: Set up Docker context for Buildx + id: buildx-context + run: | + docker context create builders + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + version: latest + endpoint: builders + + - uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - uses: actions/checkout@v4 + + - name: Build images + id: buildimages + run: | + img=ghcr.io/${{github.repository}}:${{github.sha}} + echo "IMAGE_NAME=${img} >> $GITHUB_OUTPUT" + docker pull ${img} || ( + docker buildx build --push --cache-to type=gha,mode=max --cache-from type=gha --progress plain --platform linux/arm64/v8,linux/amd64 --build-arg BUILDKIT_INLINE_CACHE=1 -t ${img} . + ) + + - name: Build main image images + id: buildmainimage + if: ${{ github.ref == 'refs/heads/main' && github.event_name != 'pull_request' }} + run: | + img=ghcr.io/${{github.repository}}:latest + echo "IMAGE_NAME=${img} >> $GITHUB_OUTPUT" + docker buildx build --push --cache-to type=gha,mode=max --cache-from type=gha --progress plain --platform linux/arm64/v8,linux/amd64 --build-arg BUILDKIT_INLINE_CACHE=1 -t ${img} . diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml new file mode 100644 index 0000000..e40e495 --- /dev/null +++ b/.github/workflows/golangci-lint.yml @@ -0,0 +1,27 @@ +name: golangci-lint +on: + push: + branches: + - main + - master + pull_request: + merge_group: + +permissions: + contents: read + # Optional: allow read access to pull request. Use with `only-new-issues` option. + # pull-requests: read + +jobs: + golangci: + name: lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: '1.22.4' + - name: golangci-lint + uses: golangci/golangci-lint-action@v6 + with: + version: v1.60.3 diff --git a/.github/workflows/manage-stale-branches.yml b/.github/workflows/manage-stale-branches.yml new file mode 100644 index 0000000..ccd7f44 --- /dev/null +++ b/.github/workflows/manage-stale-branches.yml @@ -0,0 +1,21 @@ +name: 'Manage stale branches' +on: + schedule: + # Run every monday at 10 am + - cron: "0 10 * * 1" + +jobs: + manage-stale-branches: + name: "Manage stale branches" + runs-on: ubuntu-latest + steps: + - name: "Manage Stale Branches" + id: manage-stale-branches + uses: crazy-matt/manage-stale-branches@1.1.1 + with: + gh_token: ${{ secrets.GITHUB_TOKEN }} + stale_older_than: 60 + suggestions_older_than: 30 + excluded_branches: | + origin/main + origin/master diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 0000000..74c9fa3 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,66 @@ +name: run tests + +on: + push: + pull_request: + merge_group: + +jobs: + testGo: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: 1.22.4 + - name: Run CI script + run: | + go test -v -cover -covermode=count ./... + + # testGCloudIntegration: + # runs-on: ubuntu-latest + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/setup-go@v5 + # with: + # go-version: 1.22.4 + # - name: Run CI script + # run: | + # go test -v ./pkg/grafanacloud/... + # env: + # GRAFANA_CLOUD_TOKEN: ${{ secrets.GRAFANA_CLOUD_TOKEN }} + + alloy_lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: '1.22.4' + - run: | + cd pkg/controllers + curl -LO https://github.com/grafana/alloy/releases/download/v1.3.1/alloy-linux-amd64.zip && unzip alloy-linux-amd64.zip + go test -v ./... -args -verify-alloy + + testHelm: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + depth: 0 + + - uses: azure/setup-helm@v4.2.0 + with: + version: v3.12.0 + + - name: Set up chart-testing + uses: helm/chart-testing-action@v2.6.1 + + - run: | + git fetch origin "${{ github.base_ref }}" + # Ensure the chart meets requirements + ct lint --remote origin --target-branch "${{ github.base_ref }}" --charts ./helm-chart/observability-operator + # Ensure the chart can be rendered with default values set and the generated yaml is coherent + helm template ./helm-chart/observability-operator + # Ensure the chart can be rendered with all values set and the generated yaml is coherent + helm template ./helm-chart/observability-operator -f ./helm-chart/observability-operator/values-test-full.yaml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..51e3a7a --- /dev/null +++ b/.gitignore @@ -0,0 +1,28 @@ + +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, build with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Kubernetes Generated files - skip generated files, except for vendored files + +!vendor/**/zz_generated.* + +# editor and IDE paraphernalia +.idea +*.swp +*.swo +*~ +.helm +vendor +profile.cov +junit.xml +.vscode \ No newline at end of file diff --git a/.golangci.yaml b/.golangci.yaml new file mode 100644 index 0000000..f591fef --- /dev/null +++ b/.golangci.yaml @@ -0,0 +1,58 @@ +# Options for analysis running. +run: + # Timeout for analysis, e.g. 30s, 5m. + # Default: 1m + timeout: 10m + # Exit code when at least one issue was found. + # Default: 1 + issues-exit-code: 2 + # If set, we pass it to "go list -mod={option}". From "go help modules": + # If invoked with -mod=readonly, the go command is disallowed from the implicit + # automatic updating of go.mod described above. Instead, it fails when any changes + # to go.mod are needed. This setting is most useful to check that go.mod does + # not need updates, such as in a continuous integration and testing system. + # If invoked with -mod=vendor, the go command assumes that the vendor + # directory holds the correct copies of dependencies and ignores + # the dependency descriptions in go.mod. + # + # Allowed values: readonly|vendor|mod + # Default: "" + modules-download-mode: readonly + +# output configuration options +output: + # The formats used to render issues. + # Formats: + # - `colored-line-number` + # - `line-number` + # - `json` + # - `colored-tab` + # - `tab` + # - `html` + # - `checkstyle` + # - `code-climate` + # - `junit-xml` + # - `github-actions` + # - `teamcity` + # - `sarif` + # Output path can be either `stdout`, `stderr` or path to the file to write to. + # + # For the CLI flag (`--out-format`), multiple formats can be specified by separating them by comma. + # The output can be specified for each of them by separating format name and path by colon symbol. + # Example: "--out-format=checkstyle:report.xml,json:stdout,colored-line-number" + # The CLI flag (`--out-format`) override the configuration file. + # + # Default: + # formats: + # - format: colored-line-number + # path: stdout + formats: + - format: colored-line-number + path: stdout + # Show statistics per linter. + # Default: false + show-stats: true +issues: + # Show only new issues created after git revision `REV`. + # Default: "" + new-from-rev: master diff --git a/.yamllint.yaml b/.yamllint.yaml new file mode 100644 index 0000000..1fd3784 --- /dev/null +++ b/.yamllint.yaml @@ -0,0 +1,7 @@ +extends: default + +rules: + line-length: disable + document-start: disable + indentation: + indent-sequences: consistent diff --git a/CODE-CONTRIBUTIONS.md b/CODE-CONTRIBUTIONS.md new file mode 100644 index 0000000..6cee11e --- /dev/null +++ b/CODE-CONTRIBUTIONS.md @@ -0,0 +1,280 @@ +## Pull Requests + +Code Review is an important part of any modern software development team. In this document we aim to give a set of guidelines and +_rules of thumb_. +These are not hard requirements for _every_ Pull Request, but they should help us making better decisions. + +### Why do we do Pull Requests (PRs)? + +We use PRs mainly for three reasons to: + +1. **Share knowledge**. Although this is not the only way we can achieve it, PullRequests are + a great helper to share the experiences, successes and failures, as well as the domain knowledge across + users and maintainers. +2. Overall, **improve our code and architecture quality**. +3. **Help catch problems** before they reach production. + +### Rules of thumb + +#### Issuer + +##### Avoid internal tools references + +This project is an open-source project and we should avoid references to internal tools, such as JIRA, Confluence, etc. +On a general manner, any reference must be publicly accessible so anyone can understand the context of the PR. +It is accepted to create references to resources that requires a login but allow access and account creation for anybody. + +If you feel the need to reference an internal tool, make sure you provide a good summary of the concerned ticket or document. +and use the word _internal_ to help identify private accesses for public readers. + +##### Link to the issue + +Any PR solving an existing GitHub issue must reference it. This will help to understand the context of the PR and the problem. +It will also help to track the changes and the history of the issue. + +##### Use correct PR title + +Any PR title should follow the next principles: + +* If it's a bugfix, the PR title should start with "fix:" +* If it's a library update, the PR title should start with "chore:" + +Good PR titles will help to understand what has changed over time +and will help to troubleshoot any issue in the future. +Good commit messages are particularly useful used combined +with `git log --graph --pretty=tformat:'%h %s'`. + +Format: + +```plaintext + +``` + +Example: + +```plaintext +fix: solve a race condition in the HTTP client that caused the app to crash +``` + +##### Make small Pull Requests + +Small Pull-Requests make the reviewers' lives easier and they tend to be faster to merge. There are a few options when it comes to +write small PRs: + +* Separate refactors from the actual task. You can do them either before or after. But if a refactor could help to a feature +* include it in the description, so you can get the context of the origin of the it. +* Separate _vendor_ code either in another _commit_ or in another PR. +* Create small PRs against a main-task Pull-Request. Another option could be to use +* [Maiao](https://github.com/adevinta/maiao), when you have write accesses to the code repository. +* Use [feature toggles](https://martinfowler.com/articles/feature-toggles.html) if you don't want the new code to run in + production just yet. + +**ProTip™**: To evaluate whether you should do one or multiple PRs, you may ask yourself _If I revert feature "add the ability to +count to 2" should "bump testing component version" also be reverted?_ + +##### Explain the _why_ and write good commit messages + +Explain **why** you are introducing these changes. For people with plenty of domain knowledge, it serves as a quick validation and +they will verify if the code does what you're saying it does, speeding up the review process. +For people with less domain knowledge — such as recent team members or people not familiar with the codebase - it will allow to do +a decent review. +Having people who are not that familiar with the codebase can both bring in a new perspective and it is also an efficient way to +share knowledge. + +**ProTip™**: If you write the _why_ in the commit message and have a single commit in the PR, GitHub will propagate that into the +PR description upon creation. + +**ProTip™**: If you write the _why_ in the commit message and use [maiao](https://github.com/adevinta/maiao), the PR +description will automatically be maintained from the commit message upon updates. +Here's an [example](https://github.com/adevinta/noe/pull/84). + +There are [plenty](https://chris.beams.io/posts/git-commit/) of +[resources](https://www.freecodecamp.org/news/writing-good-commit-messages-a-practical-guide/) on how to write good commit +messages. + +##### Link github issues + +If you're working on a feature or a bug, it's a good practice to +[link the issue in the PR](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword) +description. +This will help to understand the context of the PR and the problem. +It will also help to track the changes and the history of the issue and automate the closing of the issue upon PR merge. + +Example: + +```plaintext +Closes: #10 +``` + +##### Define non-goals + +One important note, aside from stating what's the _goal_ of the PR might be to state what's a _non-goal_. An example could be: + +> Non-Goals: Although I moved function A of place, this PR doesn't address a refactor because it would broaden the scope too +much. + +In this way, we're telling our reviewers that, albeit something was considered, it should not be part of the review, since it's +out of the scope. + +##### Be open to changes + +Finishing our tasks feels great. It liberates dopamine and gives us a sense of accomplishment. Nevertheless, there's a reason why +we don't commit directly into the _main_ branch and why we ask our peers to review our work: we want to learn from them and we +want to listen to different opinions. Don't get too attached to your code (It could help to think in terms of our code or team's +code, rather than my code) + +**Rule of thumb**: If you're not strongly opinionated and making the change is less effort than discussing it, we can apply it +directly and move on. + +##### You're the shepherd of the PR + +If a PR is getting too long to get reviewed, you should be the one contacting people that made comments/suggestions and are not +approving them, to make sure we move it forward. +If you don't reach consensus/commitment, you can involve the Tech Lead to help on solving the conflict. + +#### Reviewer + +##### Focus on the big picture + +We all have opinions and software — especially if it runs on the cloud — is never in a finished state. Consider the work and +effort the PR issuer already put in, +weigh how important the task is and how it fits in the bigger picture. If there are ten flaws in a PR, perhaps only three are +critical and/or important. +Therefore, the other can be marked as _optional_ or _nit_, so we don't overwhelm the PR issuer. + +##### Be clear about your requests + +State clearly what you're trying to achieve: are you blocking the PR? are you nitpicking? Is a question about the code that you +don't understand? Be explicit about it. + +If you think that a piece of code could be done differently, ask the following questions to yourself: + +* Does it really change what we are trying to achieve here? Is it worth to tackle this _now_? +* How many other recommendations did the issuer already accepted? Remember: there's so much we can do. Everything can be improved +* Do you have an alternative? Maybe you can put it in the comment or even use + [suggested changes](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request#applying-a-suggested-change), + to lower the effort of accepting it +* Is it a big change? Maybe it makes sense to check first — face-to-face, through a VC or Slack — with the PR issuer if it makes sense +* Is it a big change? Maybe it makes sense to check first — face-to-face, through a VC or Slack — with the PR issuer if it makes + sense + +**ProTip™**: aside of Github's Approve/Request Changes/Comment system, it can be useful to point if a comment is a _nit_, so we +inform the PR issuer that we don't expect it to land in the final code. + +##### Use commit suggestions + +If you have a clear idea how to improve a certain piece of code, you can use +[suggested changes](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request#applying-a-suggested-change) +and make the issuer's life easier. + +##### Not all suggestions will be merged + +And that's fine. Sometimes, it's just too much. Certainly, the comment you left will be taken into account the next time. + +### A word on kindness + +When doing a code review, we are not seeing each other most of the time, but rather each other's code. We can’t leverage body +language or happy, in-person smiles like office-dwelling teams. +This means close attention to the language and tone of our written feedback is crucial to team happiness and morale. + +Moreover, adopting an understanding tone will help your point of view to be understood, considered and achieve your goal to alter +the PR contents. + +**ProTip™**: [Grammarly](https://app.grammarly.com/) has an experimental feature to show the tone perceived by a text. Abusing it +to tune your message would help you find the right tone. + +#### Understand first + +You're reviewing someone's work and, usually, people don’t make mistakes intentionally. +Perhaps they were having a bad day, or couldn’t come up with a better solution. Take it easy. +Ask people why they did it like that, in a polite way. Sometimes you don’t understand the trade-offs that were made. +Sit down with them if needed. We should let our ego out of the door. + +##### Good 👍 ✅ + +> I see we're repeating this in a few similar classes instead of creating an abstraction for this use-case. +> Could you walk me through the changes so I get a better picture on this works? + +##### Bad 👎 ❌ + +> You should use a parent class here. DRY + +#### Be expressive + +Sometimes it’s difficult to convey meaning through text alone. Comments can come off as terse or rude, even when the reviewer +tried to convey them in a positive and helpful light. +Sprinkling in emojis can help elevate the voice and tone for many of our team members. It helps the author read the comment in the +reviewer's voice, as if they were delivering the feedback in person. + +##### Examples + +> This looks good. I think we can move forward. + +vs + +> Wooow! This looks good 👏 I think we can move forward and put this code in production! 🚀 + +#### Suggest, don't command + +People will be more enthusiastic about changing their work when you make polite suggestions instead of commanding actions. + +Having a commanding tone is more likely cause repulsion and close the conversation from the PR author, while adopting an +understanding tone is more likely to open the conversation and get your point of view to be considered. + +##### Good 👍 ✅ + +> Maybe it would make sense to rename the class `UserRepositoryImpl` to `RedisCachedUserRepository`, to improve readability. What +do you think? +> Perhaps I’m not understanding it correctly, but it seems that this code won’t work properly in X and Y cases. Can we review it? +If it has a bug we can fix it together! + +##### Bad 👎 ❌ + +> Change this! +> This has a bug here! Fix it and create a test + +#### Focus on the essential parts + +You shouldn’t expect that all of your comments end up in the code base. That’s totally OK. +If you think that you are requesting too much changes or that some of them are not that important, please refer to them as +recommendations for future work. People will still learn and will try to improve for the next time. + +It’s also possible that one or more engineers on the team have already pointed out numerous issues on a single pull request. While +the additional feedback would be technically helpful, it’s likely going to just "add to the pile" +and make the code author feel discouraged or overwhelmed. + +##### Good 👍 ✅ + +> [Future reference] This code looks good 🚀 In future occasions, we can also use it for comprehensions instead of `map()`. I +wouldn't change it now, though. +> [Nit] We could use XX instead of YY. + +##### Bad 👎 ❌ + +> We could use for comprehensions instead of `map()` +> Here too. +> Again, for comprehensions. +> Can you change XX for YY? + +#### Make someone's day + +Compliments are free to give. By leaving a sincere compliment or mention that you've learned something new you could be making +someone's day. + +##### Examples + +> I know we usually stub this out, but your approach of calling the actual method in this test is 💯. I feel much more confident +that we’ll catch changes to the API in the future. 😍 +> Looks like it's working as-is 🚀 Great work in this PR! Thanks for taking the time to write test cases for X and Y. I think we +should keep this spirit and improve our codebase a bit every day 👏👏👏 + +### References + +1. +2. +3. +4. +5. +6. +7. +8. diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 0000000..fd0b9f7 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1,3 @@ +# Adding this CODEOWNERS file and adding another branch protection +# ` Require review from Code Owners ` we will ensure that other members can create branches (which means they can merge PRs) but only merge PRs that has been approved by Adevinta. +* @adevinta/cloud-platform-runtime \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..f34571d --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,9 @@ +# Contributing + +Any contribution submitted for inclusion in the work by you shall be under +the terms and conditions of this license (MIT), 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 regarding your contributions. + +Please refer to the [code contribution guide](./CODE-CONTRIBUTIONS.md) diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..58500b9 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +# Build the manager binary +FROM golang:1.23.5 AS builder + +WORKDIR /workspace +# Copy the Go Modules manifests +COPY go.mod go.mod +COPY go.sum go.sum + +# Copy the go source +COPY cmd/observability-operator/main.go cmd/observability-operator/main.go +COPY pkg/ pkg/ + +# Build +RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build -a -o manager cmd/observability-operator/main.go + +# Use distroless as minimal base image to package the manager binary +# Refer to https://github.com/GoogleContainerTools/distroless for more details +FROM gcr.io/distroless/static:nonroot +WORKDIR / +COPY --from=builder /workspace/manager . +USER nonroot:nonroot + +ENTRYPOINT ["/manager"] diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..5ab934a --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2024 Adevinta + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..96c985d --- /dev/null +++ b/README.md @@ -0,0 +1,57 @@ +

+ + Quickstart  •   + Administrator docs  •   + Development docs  •   + +

+ +# Observability Operator + +Observability Operator is a Kubernetes Operator that manages and +orchestrates the infrastructure to collect and relay Observability +data to several destinations in multi-teant Kubernetes clusters. + +It aims to require minimal configuration and reduce the toil of a +feature team to get Observability data from their workloads by +providing sane defaults and automatically discovering as much +information as possible on behalf of the user. + +It captures telemetry of tenant workloads (won't instrument the entire +cluster), can capture metrics, logs and traces and will relay the +telemetry to the tenant systems. + +## Supported integrations + +* Metrics: scrape Prometheus format from Pods +* Logs: any format, preferably JSON +* Traces: OpenTelemetry format +* Destination: + * Metrics: any Prometheus RemoteWrite-compatible destination + * Logs: any Fluentd supported format + * Traces: any OpenTelemetry-compatible receiver + +## Technologies + +Observability Operator relies on the cluster already providing some +services. Cluster admins are expected to fulfill these needds in +advance: + +* [Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator) +* [Kube Fluentd Operator](https://github.com/vmware/kube-fluentd-operator) + +For traces we use [Grafana +Alloy](https://grafana.com/docs/alloy/latest/) but we manage its +deployment directly in this operator, so there are no dependenciies +to install. + +## Contributing + +Refer to Please refer to the [code contribution guide](./CONTRIBUTING.md). + +You can find further details of the operator in our [development documentation](./docs/development/README.md). + +# License + +This project is released under MIT license. You can find a copy of the +license terms in the LICENSE file. diff --git a/cmd/observability-operator/main.go b/cmd/observability-operator/main.go new file mode 100644 index 0000000..02416df --- /dev/null +++ b/cmd/observability-operator/main.go @@ -0,0 +1,376 @@ +package main + +import ( + "flag" + "fmt" + "os" + "strings" + "time" + + advlog "github.com/adevinta/go-log-toolkit" + "github.com/adevinta/observability-operator/pkg/controllers" + "github.com/adevinta/observability-operator/pkg/grafanacloud" + "github.com/grafana/grafana-com-public-clients/go/gcom" + "github.com/sirupsen/logrus" + networkingv1 "k8s.io/api/networking/v1" + _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" + "k8s.io/client-go/util/workqueue" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/event" + metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server" + + validatingfield "k8s.io/apimachinery/pkg/util/validation/field" + + apilabels "k8s.io/apimachinery/pkg/labels" + // +kubebuilder:scaffold:imports +) + +const ( + missing = "missing" +) + +type grafanaCloudClient interface { + controllers.GrafanaCloudClient + grafanacloud.GrafanaCloudStackLister +} + +func main() { + // ############## Manager options ############## + var metricsAddr string + flag.StringVar(&metricsAddr, "metrics-addr", ":8080", "The address the metric endpoint binds to.") + var enableLeaderElection bool + flag.BoolVar(&enableLeaderElection, "enable-leader-election", false, "Enable leader election for controller manager. Enabling this will ensure there is only one active controller manager.") + // ############################################# + + // ############## metadata to add to metrics, logs, traces... ############## + var clusterName string + flag.StringVar(&clusterName, "cluster-name", missing, "The name of the cluster being run. This will add the cluster tag to all collected metrics.") + var clusterRegion string + flag.StringVar(&clusterRegion, "cluster-region", missing, "The region the cluster runs in. This will add the region tag to all collected metrics.") + var clusterDomain string + flag.StringVar(&clusterDomain, "cluster-domain", "adevinta.com", "The domain used for labels, annotations and leader election.") + // ############################################# + + // ############## Feature toggles ############## + // Enable sending to GrafanaCloud if storage is defined as such + // TODO: Always enabled? Can we drop it for now? + var enableMetricsRemoteWrite bool + flag.BoolVar(&enableMetricsRemoteWrite, "metrics-remote-write-to-grafana-cloud", true, "Enable/Disable remote-write of metrics to Grafana Cloud") + // Enable VPA provisioning for Prometheus + var enableVpa bool + flag.BoolVar(&enableVpa, "enable-vpa", false, "Enable/Disable support for VPA") + // ############################################# + + // ############## Filtering/ignoring workloads ############## + // Avoids recognising apps with this label as valid to create + // Trace Collectors + var ignoreApps string + flag.StringVar(&ignoreApps, "exclude-apps-label", "", "comma-separated list of app label values to exclude, if any") + + // Filter workloads by label selector + var workloadLabelSelector string + flag.StringVar(&workloadLabelSelector, "exclude-workload-selector", "", "Exclude applications using the provided K8s Selector. It is a string specification of a equality-based or set-based selector as described in https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors . This selector will be matched against deployments, statefulsets, daemonsets, etc. Matching ones will be skipped") + // Filter namespaces by label selector + var namespaceLabelSelector string + flag.StringVar(&namespaceLabelSelector, "exclude-namespace-selector", "", "Exclude namespaces using the provided K8s Selector. It is a string specification of a equality-based or set-based selector as described in https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors . This selector will be matched against namespaces. Matching ones will be skipped") + + // Do not process workloads in these namespaces, nor react to + // its events + var ignoreNamespaces string + flag.StringVar(&ignoreNamespaces, "exclude-namespaces-name", "", "comma-separated list of namespaces to exclude, if any") + // ############################################# + + // ############## GrafanaCloud configuration ############## + // Name identifier of the GrafanaCloud organization controlling all stacks + var grafanaCloudOrgSlug string + flag.StringVar(&grafanaCloudOrgSlug, "grafana-cloud-organization-name", "adevinta", "The name of the grafanacloud organization hosting all stacks used as destination for telemetry") + // Name of the secret containing credentials to access GrafanaCloud + var grafanaCloudCredentials string + flag.StringVar(&grafanaCloudCredentials, "grafana-cloud-metrics-credentials", "", "Secret used to store Grafana Cloud credentials") + var grafanaCloudClientCache bool + flag.BoolVar(&grafanaCloudClientCache, "grafana-cloud-client-use-cache", false, "enables the usage of a client-level cache in the GrafanaCloud client. This can significantly reduce the amount of calls to the GCOM API for the stacks that exist.") + // Periodicity to reconcile the status of Grafana stacks for changes + var grafanaCloudStackReconcilePeriod string + defaultGrafanaCloudStackReconcilePeriod := 5 * time.Minute + flag.StringVar(&grafanaCloudStackReconcilePeriod, "grafana-cloud-stack-reconcile-period", defaultGrafanaCloudStackReconcilePeriod.String(), "Frequency to reconcile grafana stack change that triggers namespace reconcile (expressed in go duration: https://pkg.go.dev/time#ParseDuration)") + // ############################################# + + // ############## Prometheus configuration settings ############## + // Prometheus image details + var prometheusDockerImage string + flag.StringVar(&prometheusDockerImage, "prometheus-docker-image", "", "The name of the prometheus docker image to use.") + var prometheusDockerTag string + flag.StringVar(&prometheusDockerTag, "prometheus-docker-tag", "", "The prometheus version to use.") + // The name of the nodepool to target for Prometheus pods + // If empty, Prometheus pods do not target any nodepool + var prometheusNodeSelectorTarget string + flag.StringVar(&prometheusNodeSelectorTarget, "prometheus-node-selector-target", "", "Node-selector label target pool for Prometheus pods. If empty, no node-selector gets added.") + // Name of the namespace to hold Prometheus pods + var promNamespace string + flag.StringVar(&promNamespace, "prometheus-namespace", "platform-services", "Namespace in which to create prometheus instances") + // The service account to be used by the Prometheus instances, which provides the necessary permissions to scrape workloads + var prometheusServiceAccountName string + flag.StringVar(&prometheusServiceAccountName, "prometheus-service-account-name", "prometheus-tenant", "Service account to use for Prometheus") + // The pod priority class to use for Prometheus instances + var prometheusPodPriorityClassName string + flag.StringVar(&prometheusPodPriorityClassName, "prometheus-pod-priority-classname", "", "Prometheus pod priority class name to use for Prometheus pods") + var prometheusMonitoringTargetName string + flag.StringVar(&prometheusMonitoringTargetName, "prometheus-monitoring-target-name", "", "Name of the secret to store the monitoring target and extra scraping configuration") + var prometheusExtraExternalLabels string + flag.StringVar(&prometheusExtraExternalLabels, "prometheus-extra-external-labels", "", "Extra external labels to be added to the prometheus configuration. Format: key1:value1,key2:value2") + + // ############################################# + + // ############## Logs configuration settings ############## + // Namespace to locate the ConfigMap with FluentD's configuration + var fluentdLokiConfigMapNamespace string + flag.StringVar(&fluentdLokiConfigMapNamespace, "logs-fluentd-loki-configmap-namespace", "", "The namespace of the fluentd-loki configmap.") + // Name of the ConfigMap containing FluentD's configuration + var fluentdLokiConfigMapName string + flag.StringVar(&fluentdLokiConfigMapName, "logs-fluentd-loki-configmap-name", "", "The name of the fluentd-loki configmap.") + // Key used in the ConfigMap with FluentD's configuration that contains the configuration + var fluentdLokiConfigMapKey string + flag.StringVar(&fluentdLokiConfigMapKey, "logs-fluentd-loki-configmap-key", "", "The data key of the fluentd-loki configmap where the fluentd rules will be injected.") + // ############################################# + + // ############## Traces configuration settings ############## + // Name of the namespace to hold Alloy collectors + var tracesNamespace string + flag.StringVar(&tracesNamespace, "traces-namespace", "observability", "Namespace in which to create traces collector (alloy) instances") + // ############################################# + + // END of CLI options + flag.Parse() + + // ############## Parse extra external labels for the Prometheus instance ############## + prometheusExtraExternalLabelsMap := make(map[string]string) + if prometheusExtraExternalLabels != "" { + labels := strings.Split(prometheusExtraExternalLabels, ",") + for _, label := range labels { + kv := strings.Split(label, ":") + if len(kv) != 2 { + fmt.Println("invalid extra external label format") + flag.Usage() + os.Exit(1) + } + prometheusExtraExternalLabelsMap[kv[0]] = kv[1] + } + } + // ############################################# + + // ############## Initialize label names for configuration ############## + grafanacloud.Config = grafanacloud.NewConfig(clusterDomain) + controllers.Config = controllers.NewConfig(clusterDomain) + // ############################################# + + // ############## Verify configuration is valid ############## + grafanaCloudToken, tokenPresent := os.LookupEnv("GRAFANA_CLOUD_TOKEN") + if !tokenPresent { + fmt.Println("missing GRAFANA_CLOUD_TOKEN env variable") + os.Exit(1) + } + + grafanaCloudTracesToken, tokenPresent := os.LookupEnv("GRAFANA_CLOUD_TRACES_TOKEN") + if !tokenPresent { + fmt.Println("missing GRAFANA_CLOUD_TRACES_TOKEN env variable") + flag.Usage() + os.Exit(1) + } + + if clusterName == missing { + fmt.Println("missing cluster name") + flag.Usage() + os.Exit(1) + } + if clusterRegion == missing { + fmt.Println("missing cluster region") + flag.Usage() + os.Exit(1) + } + // ############################################# + + // ############## Set up logging facilities ############## + log := logrus.New() + log.SetFormatter(&logrus.JSONFormatter{}) + log.SetLevel(logrus.InfoLevel) + ctrl.SetLogger(advlog.NewLogr(log)) + setupLog := ctrl.Log.WithName("setup") + // ############################################# + + // ############## Set up the Manager ############## + scheme := controllers.NewScheme() + cfg := ctrl.GetConfigOrDie() + mgr, err := ctrl.NewManager(cfg, ctrl.Options{ + Scheme: scheme, + Metrics: metricsserver.Options{ + BindAddress: metricsAddr, + }, + LeaderElection: enableLeaderElection, + LeaderElectionID: "8cba130d.prometheus." + clusterDomain, + Cache: cache.Options{ + ByObject: map[client.Object]cache.ByObject{ + &networkingv1.NetworkPolicy{}: { + Namespaces: map[string]cache.Config{ + tracesNamespace: {}, + }, + }, + }, + }, + }) + if err != nil { + setupLog.Error(err, "unable to start manager") + os.Exit(1) + } + // ############################################# + + // ############## Verify we can connect to GrafanaCloud ############## + config := gcom.NewConfiguration() + config.AddDefaultHeader("Authorization", "Bearer "+grafanaCloudToken) + config.Host = "grafana.com" + config.Scheme = "https" + + gcomClient := gcom.NewAPIClient(config) + var gcClient grafanaCloudClient + gcClient = grafanacloud.NewClient(ctrl.Log.WithName("controllers").WithName("Grafana Cloud Client (non-cached)"), gcomClient, grafanaCloudOrgSlug) + + if grafanaCloudClientCache { + gcClient = grafanacloud.NewCachedClient(ctrl.Log.WithName("controllers").WithName("Grafana Cloud Client (cached)"), gcClient.(*grafanacloud.Client)) + } + + // ############################################# + + path := validatingfield.NewPath("metadata", "labels") + appSelector, err := apilabels.Parse(workloadLabelSelector, validatingfield.WithPath(path)) + if err != nil { + setupLog.Error(err, "unable to parse application selector", workloadLabelSelector) + os.Exit(1) + } + namespaceSelector, err := apilabels.Parse(namespaceLabelSelector, validatingfield.WithPath(path)) + if err != nil { + setupLog.Error(err, "unable to parse namespace selector", namespaceSelector) + os.Exit(1) + } + + // ############## Set up Pod Reconciler ############## + if err = (&controllers.PodReconciler{ + Client: mgr.GetClient(), + Log: ctrl.Log.WithName("controllers").WithName("Deployment"), + Scheme: mgr.GetScheme(), + ExcludeWorkloadLabelSelector: appSelector, + ExcludeNamespaceLabelSelector: namespaceSelector, + IgnoreApps: strings.Split(ignoreApps, ","), + IgnoreNamespaces: strings.Split(ignoreNamespaces, ","), + TracesNamespace: tracesNamespace, + GrafanaCloudClient: gcClient, + GrafanaCloudTracesToken: grafanaCloudTracesToken, + ClusterName: clusterName, + EnableVPA: enableVpa, + }).SetupWithManager(mgr); err != nil { + setupLog.Error(err, "unable to create controller", "controller", "Deployment") + os.Exit(1) + } + // ############################################# + + // ############## Set up GrafanaStackReconciler ############## + // we need a client that can manage resources only in a given namespace + // by default, clients generated by cluster-controller manager are generated + // for cluster scope controllers are using cluster-wide caches. + // In the case of the loki configuration, we want are restricting the role to manage a single resource. + // Hence we create a dedicated client for it. + // TODO: Consider using the general client now that we restrict the cache for specific objects + namespacedClient, err := client.New(ctrl.GetConfigOrDie(), client.Options{Scheme: scheme}) + if err != nil { + setupLog.Error(err, "unable to create uncached client", "controller", "Grafana Cloud Config Updater") + os.Exit(1) + } + + gcConfigUpdater := &grafanacloud.GrafanaCloudConfigUpdater{ + Log: ctrl.Log.WithName("controllers").WithName("Grafana Cloud Config Updater"), + Client: namespacedClient, + GrafanaCloudClient: gcClient, + ClusterName: clusterName, + ClusterRegion: clusterRegion, + ConfigMapNamespace: fluentdLokiConfigMapNamespace, + ConfigMapName: fluentdLokiConfigMapName, + ConfigMapLokiKey: fluentdLokiConfigMapKey, + } + + go gcConfigUpdater.Start(workqueue.NewTypedRateLimitingQueue(workqueue.NewTypedItemExponentialFailureRateLimiter[string](time.Millisecond, 30*time.Second))) + + grafanaStackChangeEvents := make(chan event.GenericEvent, 10) + stackReconcilePeriod, err := time.ParseDuration(grafanaCloudStackReconcilePeriod) + if err != nil { + setupLog.Error(err, "failed to parse grafanacloud reconciliation period. Using default %v ", defaultGrafanaCloudStackReconcilePeriod) + stackReconcilePeriod = defaultGrafanaCloudStackReconcilePeriod + } + + tick := time.NewTicker(stackReconcilePeriod) + + if err = (&grafanacloud.GrafanaStackReconciler{ + Log: ctrl.Log.WithName("controllers").WithName("GrafanaStack"), + GrafanaCloudClient: gcClient, + GrafanaStackChangeEvents: grafanaStackChangeEvents, + }).WatchGrafanaStacksChange(tick.C); err != nil { + setupLog.Error(err, "unable to create grafana stacks reconciler", "controller", "GrafanaStacks") + os.Exit(1) + } + // ############################################# + + // ############## Set up Namespace Reconciler ############## + if err = (&controllers.NamespaceReconciler{ + Client: mgr.GetClient(), + Log: ctrl.Log.WithName("controllers").WithName("Namespace"), + TracesNamespace: tracesNamespace, + ExcludeWorkloadLabelSelector: appSelector, + ExcludeNamespaceLabelSelector: namespaceSelector, + IgnoreApps: strings.Split(ignoreApps, ","), + IgnoreNamespaces: strings.Split(ignoreNamespaces, ","), + GrafanaCloudUpdater: gcConfigUpdater, + GrafanaCloudClient: gcClient, + GrafanaCloudTracesToken: grafanaCloudTracesToken, + ClusterName: clusterName, + EnableVPA: enableVpa, + }).SetupWithManager(mgr, grafanaStackChangeEvents); err != nil { + setupLog.Error(err, "unable to create controller", "controller", "Namespace") + os.Exit(1) + } + // ############################################# + + // ############## Set up PodMonitor Reconciler ############## + if err = (&controllers.PodMonitorReconciler{ + Client: mgr.GetClient(), + Log: ctrl.Log.WithName("controllers").WithName("PodMonitor"), + Scheme: mgr.GetScheme(), + ClusterName: clusterName, + Region: clusterRegion, + GrafanaCloudCredentials: grafanaCloudCredentials, + GrafanaCloudClient: gcClient, + PrometheusNamespace: promNamespace, + PrometheusExposedDomain: fmt.Sprintf("%s.%s", clusterName, clusterDomain), + NodeSelectorTarget: prometheusNodeSelectorTarget, + EnableMetricsRemoteWrite: enableMetricsRemoteWrite, + EnableVpa: enableVpa, + PrometheusDockerImage: controllers.DockerImage{ + Name: prometheusDockerImage, + Tag: prometheusDockerTag, + }, + PrometheusServiceAccountName: prometheusServiceAccountName, + PrometheusPodPriorityClassName: prometheusPodPriorityClassName, + PrometheusMonitoringTarget: prometheusMonitoringTargetName, + PrometheusExtraExternalLabels: prometheusExtraExternalLabelsMap, + }).SetupWithManager(mgr); err != nil { + setupLog.Error(err, "unable to create controller", "controller", "PodMonitor") + os.Exit(1) + } + // ############################################# + + // +kubebuilder:scaffold:builder + + setupLog.Info("starting manager") + if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil { + setupLog.Error(err, "problem running manager") + os.Exit(1) + } +} diff --git a/cmd/observability-operator/main_test.go b/cmd/observability-operator/main_test.go new file mode 100644 index 0000000..d3bcd14 --- /dev/null +++ b/cmd/observability-operator/main_test.go @@ -0,0 +1,164 @@ +package main + +import ( + "context" + "fmt" + "os" + "os/exec" + "strings" + "testing" + "time" + + k8s "github.com/adevinta/go-k8s-toolkit" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/e2e-framework/pkg/env" + "sigs.k8s.io/e2e-framework/pkg/envconf" + "sigs.k8s.io/e2e-framework/pkg/envfuncs" + "sigs.k8s.io/e2e-framework/support/kind" + "sigs.k8s.io/e2e-framework/third_party/helm" +) + +var ( + testenv env.Environment + imageRegistry = "local" + imageRepository = "adevinta/observability-operator" + imageTag = "latest" + imageFullUrl = imageRegistry + "/" + imageRepository + ":" + imageTag + kindClusterName = envconf.RandomName("observability", 16) + releaseName = "observability-operator" + + operatorNamespace = "observability-operator" + prometheusNamespace = "platform-services" + tracesNamespace = "observability" +) + +func buildLocalObservabilityOperatorImage(t *testing.T) { + // Ensure we always have the latest version of the code compiled + // This is crucial when running integration tests locally + cmd := exec.Command("docker", "build", "-t", imageFullUrl, ".") + cmd.Stderr = os.Stderr + cmd.Stdout = os.Stdout + cmd.Dir = "../../" + require.NoError(t, cmd.Run()) + + cmd = exec.Command("kind", "load", "docker-image", "--name", kindClusterName, imageFullUrl) + cmd.Stderr = os.Stderr + cmd.Stdout = os.Stdout + cmd.Dir = "../../" + require.NoError(t, cmd.Run()) +} + +func installObservabilityOperator(t *testing.T, args ...string) { + t.Helper() + helmClient := helm.New(testenv.EnvConf().KubeconfigFile()) + + require.NoError(t, helmClient.RunUpgrade( + helm.WithName(releaseName), + helm.WithNamespace(operatorNamespace), + helm.WithChart("../../helm-chart/observability-operator"), + helm.WithArgs( + "--install", + ), + helm.WithArgs(args...), + )) +} + +// Verify the Helm chart can complete successfully, the pod can be +// scheduled and get to ready. The Pod may fail right afterwards due +// to missing credentials or values, but it was able to start-up, so +// the CLI flags, Helm values and immediate verifications on startup +// passed. +func TestDeployDefaultHelmChart(t *testing.T) { + t.Setenv("KUBECONFIG", testenv.EnvConf().KubeconfigFile()) + + secretName := "observability-operator-grafana-cloud-credentials" + + buildLocalObservabilityOperatorImage(t) + installObservabilityOperator( + t, + "--set", "image.registry="+imageRegistry, + "--set", "image.repository="+imageRepository, + "--set", "image.tag="+imageTag, + "--set", "image.pullPolicy=Never", + "--set", "enableSelfVpa=false", + "--set", "namespaces.tracesNamespace.name="+tracesNamespace, + "--set", "namespaces.prometheusNamespace.name="+prometheusNamespace, + "--set", "credentials.GRAFANA_CLOUD_TOKEN.secretName="+secretName, + "--set", "credentials.GRAFANA_CLOUD_TRACES_TOKEN.secretName="+secretName, + ) + + cfg, err := k8s.NewClientConfigBuilder().WithKubeConfigPath(testenv.EnvConf().KubeconfigFile()).Build() + require.NoError(t, err) + k8sClient, err := client.New(cfg, client.Options{}) + require.NoError(t, err) + + secret := corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: secretName, + Namespace: operatorNamespace, + }, + StringData: map[string]string{ + "grafana-cloud-api-key": "", + "grafana-cloud-traces-token": "", + }, + } + err = k8sClient.Create(context.Background(), &secret) + require.NoError(t, err) + + assert.Eventually( + t, + func() bool { + podList := corev1.PodList{} + err = client.NewNamespacedClient(k8sClient, operatorNamespace).List(context.Background(), &podList) + require.NoError(t, err) + + require.Len(t, podList.Items, 1) + return strings.HasPrefix(podList.Items[0].Name, releaseName) + }, + 30*time.Second, 10*time.Millisecond, + "The operator pod should be present", + ) + + assert.Eventually( + t, + func() bool { + podList := corev1.PodList{} + err = client.NewNamespacedClient(k8sClient, operatorNamespace).List(context.Background(), &podList) + require.NoError(t, err) + + require.Len(t, podList.Items, 1) + return corev1.PodPhase("Running") == podList.Items[0].Status.Phase + }, + 30*time.Second, 10*time.Millisecond, + "The operator pod should be running", + ) +} + +func TestMain(m *testing.M) { + if os.Getenv("RUN_INTEGRATION_TESTS") != "true" { + fmt.Printf("RUN_INTEGRATION_TESTS is not set, so skipping all tests of main") + os.Exit(0) + } + + testenv = env.New() + // Use pre-defined environment funcs to create a kind cluster prior to test run + testenv.Setup( + envfuncs.CreateCluster(kind.NewCluster(kindClusterName), kindClusterName), + envfuncs.CreateNamespace(operatorNamespace), + envfuncs.CreateNamespace(prometheusNamespace), + envfuncs.CreateNamespace(tracesNamespace), + ) + + // Use pre-defined environment funcs to teardown kind cluster after tests + testenv.Finish( + envfuncs.DeleteNamespace(operatorNamespace), + envfuncs.DestroyCluster(kindClusterName), + ) + + // launch package tests + os.Exit(testenv.Run(m)) +} diff --git a/docs/01-send-pod-metrics/README.md b/docs/01-send-pod-metrics/README.md new file mode 100644 index 0000000..aeb2f31 --- /dev/null +++ b/docs/01-send-pod-metrics/README.md @@ -0,0 +1,84 @@ +# Send Pod metrics to Grafana Cloud + +> [!NOTE] +> Administrators can modify the domain of the cluster, which will affect the domain used by label and annotation keys. +> If the cluster's domain is `example.com` the labels and annotations will match it, e.g. `grafanacloud.example.com/stack-name`. +> +> In this document we'll use `adevinta.com` as the cluster domain. + +## Overview + +To send [`Pod`][k8s-pod] metrics to Grafana Cloud, you'll need two steps: + +1. To configure your team's Grafana Cloud stack (account) in your [`Namespace`][k8s-namespace] definition, using the **[annotation][k8s-annotation]** `grafanacloud.adevinta.com/stack-name: `. +2. To annotate your [`Pods`][k8s-pod] with the **[annotations][k8s-annotation]**: + 1. `prometheus.io/scrape: "true"` (**Mandatory**, _string_). This will tell us that we must ingest the [`Pod`][k8s-pod]'s metrics + 2. `prometheus.io/path: ` (**Mandatory**, _string_). The path where Prometheus should get the metrics. + 3. `prometheus.io/port: "9090"` (**Optional**, _string_). The port where Prometheus should get the metrics. It may be the same as your pod, if you have an HTTP service, or it may be a different one. By default, Prometheus will scrape, by default, all exposed container ports. In most cases, you don't need this configuration. + 4. `monitor.adevinta.com/pod-sample-limit: ` (**Optional**, _string_). This will tell the sample limit allowed by the prometheus for that pod, by default is set to 4500. (this flag is still experimental and could change in the future) + +![Send metrics diagram](../images/send-metrics-grafana-cloud.png) + +## Configuring your namespace + +Below there's an example of how to configure your [`Namespace`][k8s-namespace]: + +```diff +apiVersion: v1 +kind: Namespace +metadata: + # Ommitted for brevity + annotations: ++ grafanacloud.adevinta.com/stack-name: mymicroservicestack +``` + +> [!NOTE] +> By leveraging the `grafanacloud.adevinta.com/stack-name` annotation, your team can have multiple namespaces using the same Grafana Cloud stack. + +After the configuration is applied, the metrics will start flowing to your Grafana Cloud stack. + +## Using multiple Grafana stacks + +Below there's an example of how to configure your [`Namespace`][k8s-namespace] to forward metrics to multiple Grafana stacks: + +```diff +apiVersion: v1 +kind: Namespace +metadata: + # Ommitted for brevity + annotations: ++ grafanacloud.adevinta.com/stack-name: firststack,secondstack +``` + +> [!NOTE] +> By leveraging the `grafanacloud.adevinta.com/stack-name` annotation, your team can have multiple namespaces using **multiple** Grafana Cloud stacks. + +After the configuration is applied, the metrics will start flowing to your Grafana Cloud stacks. + +## Disable metrics or logs to be sent to your Grafana Cloud Stack + +You have the option to disable logs, metrics, or both from being sent to your Grafana Cloud Stack, giving you complete flexibility in choosing what to utilize. + +### Disable metrics: +```diff +apiVersion: v1 +kind: Namespace +metadata: + # Ommitted for brevity + annotations: ++ grafanacloud.adevinta.com/metrics: disabled +``` + +### Disable logs: +```diff +apiVersion: v1 +kind: Namespace +metadata: + # Ommitted for brevity + annotations: ++ grafanacloud.adevinta.com/logs: disabled +``` + +[k8s-annotation]: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ +[k8s-pod]: https://kubernetes.io/docs/concepts/workloads/pods/ +[k8s-namespace]: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ diff --git a/docs/02-send-pod-metrics-different-backend/README.md b/docs/02-send-pod-metrics-different-backend/README.md new file mode 100644 index 0000000..9c8a503 --- /dev/null +++ b/docs/02-send-pod-metrics-different-backend/README.md @@ -0,0 +1,59 @@ +# Send Pod metrics to a different backend + +## Overview + +By default, the operator sends metrics to the corresponding Grafana Cloud stack, either [via convention or configuration](../01-send-pod-metrics/README.md). + +You can change this behaviour, setting a custom [storage][prometheus-storage-docs] (`remoteWrite`). For instance, this may be useful to configure a [Victoria Metrics][victoria-metrics] backend to store your metrics: + +![](../images/send-data-different-backend.png) + +[Zoom](../images/send-data-different-backend.png) | [Diagram source](../images/source/send-data-different-backend.excalidraw) | [Shareable link][send-metrics-different-backend-shareable-link] + +## Configuring the backend + +If you want to use this feature, you need to annotate your [`Namespace`][k8s-namespace], with a [`remoteWrite`][prometheus-remote-write-docs] configuration: + +```diff +apiVersion: v1 +kind: Namespace +metadata: + annotations: + # Ommitted for brevity ++ metrics.monitoring.adevinta.com/remote-write={namespace}/{secret-name} +``` + +In the above example, `{secret-name}` is a reference to a [Secret][k8s-secret] created in the cluster. + +> [!NOTE] +> If the [Secret][k8s-secret] is defined in the same namespace where it's being configured, then you do not need to namespace it. So, in that case, you may eliminate the `{namespace}/` part. + +The content of the secret is a [`remoteWrite`][prometheus-remote-write-docs] spec as well as references to secrets that need to be used: + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: my-remote-write-secret + annotations: + monitor.adevinta.com/referenced-secrets: my-secret,my-secret-2 +stringData: + remote-write: | + url: https://my-remote-write + basicAuth: + username: + name: my-secret + key: user-name + password: + name: my-secret-2 + key: password +``` + +Observability Operator then configures the tenant's Prometheus [`remoteWrite`][prometheus-remote-write-docs] accordingly. + +[k8s-namespace]: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ +[k8s-secret]: https://kubernetes.io/docs/concepts/configuration/secret/ +[prometheus-storage-docs]: https://prometheus.io/docs/prometheus/latest/storage/#remote-storage-integrations +[prometheus-remote-write-docs]: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write +[send-metrics-different-backend-shareable-link]: https://excalidraw.com/#json=Jj-IkULKwAafn4b_IHygp,YzbiPd5xoJBGRfbuddInOA +[victoria-metrics]: https://victoriametrics.com/ \ No newline at end of file diff --git a/docs/03-configure-loki/README.md b/docs/03-configure-loki/README.md new file mode 100644 index 0000000..9b09713 --- /dev/null +++ b/docs/03-configure-loki/README.md @@ -0,0 +1,70 @@ +# Configure the logging backend for Grafana Cloud's Loki + +> [!NOTE] +> Administrators can modify the domain of the cluster, which will affect the domain used by label and annotation keys. +> If the cluster's domain is `example.com` the labels and annotations will match it, e.g. `grafanacloud.example.com/stack-name`. +> +> In this document we'll use `adevinta.com` as the cluster domain. + +## Overview + +To send [`Pod`][k8s-pod] logs to Grafana Cloud, you'll need one step: + +1. To configure your team's Grafana Cloud stack (account) in your [`Namespace`][k8s-namespace] definition, using the **[annotation][k8s-annotation]** `grafanacloud.adevinta.com/stack-name: `. + +![Log architecture diagram](../images/logs-overview.png) + +## Configuring your namespace + +Below there's an example of how to configure your [`Namespace`][k8s-namespace]: + +```diff +apiVersion: v1 +kind: Namespace +metadata: + # Ommitted for brevity + annotations: ++ grafanacloud.adevinta.com/stack-name: mystack +``` + +> [!NOTE] +> By leveraging the `grafanacloud.adevinta.com/stack-name` annotation, your team can have multiple namespaces using the same Grafana Cloud stack. + +After the configuration is applied, the logs will start flowing to your Grafana Cloud stack. + +## Using multiple Grafana stacks + +Below there's an example of how to configure your [`Namespace`][k8s-namespace] to forward logs to multiple Grafana Cloud stacks: + +```diff +apiVersion: v1 +kind: Namespace +metadata: + # Ommitted for brevity + annotations: ++ grafanacloud.adevinta.com/stack-name: firststack,secondstack +``` + +> [!NOTE] +> By leveraging the `grafanacloud.adevinta.com/stack-name` annotation, your team can have multiple namespaces using **multiple** Grafana Cloud stacks. + +After the configuration is applied, the logs will start flowing to your Grafana Cloud stacks. + +## Opting out from logs + +If you want to opt out from having logs in your Loki, you'll need to annotate your [`Pods`][k8s-pod]: + +```diff +apiVersion: apps/v1 +kind: Deployment +spec: + template: + spec: + metadata: + annotations: ++ grafanacloud.adevinta.com/logs: disabled +``` + +[k8s-annotation]: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ +[k8s-pod]: https://kubernetes.io/docs/concepts/workloads/pods/ +[k8s-namespace]: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ \ No newline at end of file diff --git a/docs/05-send-pod-traces/README.md b/docs/05-send-pod-traces/README.md new file mode 100644 index 0000000..521ecb4 --- /dev/null +++ b/docs/05-send-pod-traces/README.md @@ -0,0 +1,131 @@ +# Send Pod traces to Grafana Cloud + +> [!NOTE] +> Administrators can modify the domain of the cluster, which will affect the domain used by label and annotation keys. +> If the cluster's domain is `example.com` the labels and annotations will match it, e.g. `grafanacloud.example.com/stack-name`. +> +> In this document we'll use `adevinta.com` as the cluster domain. + +## Overview + +To start using traces, users need to: + +1) setup the namespaces where traces are to be enabled + +2) instrument the application(s) to send traces to the corresponding OTEL collector. + +> [!NOTE] +> Currently, the tracing integration only supports **Grafana Cloud Tempo** as backend for traces. + +## Configuring your namespaces + +Your namespaces must have the `grafanacloud.adevinta.com/stack-name` annotation which specifies the Grafana Cloud +stack that your namespaces will use for sending metrics, logs and traces. + +In addition to the `grafanacloud.adevinta.com/stack-name`, add the `grafanacloud.adevinta.com/traces` annotation to enable tracing: + +```yaml +metadata: + annotations: + grafanacloud.adevinta.com/stack-name: "{my-grafana-cloud-stack-name}" + grafanacloud.adevinta.com/traces: "enabled" +``` + +This will setup a dedicated OTel Collector for each configured namespace. + +Collectors will be accessible from the user specified namespaces via the following endpoint: + +* `otelcol-{namespace}.observability.svc.cluster.local` + +and through ports: + +* `4317` (for OTLP/gRPC connections) +* `4318` (for OTLP/HTTP connections) + +## Instrumenting your apps + +Once you have your [namespace ready](#Configuring-your-namespaces), you need to setup intrumentation in your apps to send traces to +your OTel Collector(s). + +Users may configure the OTLP endpoint and protocol either through the OTel SDK and languange of their choice[^3] or via +environment variables[^4]. + +An example follows using environment variables: + +* using OTLP/gRPC + + ```yaml + # Deployment manifest + spec: + containers: + - name: my-instrumented-app + image: hello-app:1.0 + env: + - name: OTEL_EXPORTER_OTLP_PROTOCOL + value: "grpc" + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: "http://otelcol-{namespace}.observability.svc.cluster.local:4317" + ``` + +* using OTLP/HTTP + + ```yaml + # Deployment manifest + spec: + containers: + - name: my-instrumented-app + image: hello-app:1.0 + env: + - name: OTEL_EXPORTER_OTLP_PROTOCOL + value: "http/protobuf" + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: "http://otelcol-{namespace}.observability.svc.cluster.local:4318" + ``` + +> [!WARNING] +> If you set the OTLP endpoint in your application code through the Otel SDK (instead of using environment variables) you may +> need to append the `/v1/traces` path. For example in Python[^5] this might look like this: +> +> ```python +> from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter +> +> otlp_http_exporter = OTLPSpanExporter( +> endpoint="http://otelcol-{namespace}.observability.svc.cluster.local:4318/v1/traces" +> ) +> ``` +> +> Check the corresponding SDK documentation[^3] for more details. + +## Disabling traces + +You can delete your dedicated OTel Collector at any time by annotating your namespaces as follows: + +```yaml +metadata: + annotations: + grafanacloud.adevinta.com//traces: "disabled" +``` + +Or simply removing the whole `grafanacloud.adevinta.com/traces` annotation. + +Before deleting your OTel Collector make sure your app instrumenation is no longer sending traces to the collector, otherwise your +app will error out when trying to send spans. + +## Sampling + +The Operator provides the following default sampling strategy to all managed OTel Collectors: + +* successful traces (`status_codes = ["OK", "UNSET"]`): + only 10% of these traces are sampled + +* traces containing errors (`status_codes = ["ERROR"]`): + 100% of these traces are sampled + +This means that for a service generating 100 succesfull traces/sec only 10 traces/sec will be stored +in the backend together with any other traces that contain errors. + +[^1]: +[^2]: +[^3]: +[^4]: +[^5]: diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..0d19f52 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,32 @@ +# Observability Operator + +Observability Operator allows to dynamically create [`PodMonitor`][prom-operator-podmonitor-docs] and [`Prometheus`][prom-operator-prometheus-docs] +objects, based on Prometheus Operator, in a Kubernetes cluster. + +These Prometheuses can then use a `remoteWrite` to send the metrics to a backend such as [Grafana Cloud][grafana-cloud] or +[Victoria Metrics][victoria-metrics]. + +Observability Operator can also dynamically create OTel Collectors for those user namespaces that request tracing capabilities. + +If you're looking into how to contribute to this project, look into the [contributing guidelines](../CONTRIBUTING.md). + +## Overview + +Below there's an image with an architecture overview of the metrics, traces and logging collection using Observability Operator: + +[![architecture overview](images/architecture-overview.png)](images/architecture-overview.png) + +## Features + +There are four main features provided by the Observability Operator: + +1. [Send Pod metrics to Grafana Cloud](01-send-pod-metrics/README.md) +2. [Send Pod metrics to a different backend](02-send-pod-metrics-different-backend/README.md), such as [Victoria Metrics][victoria-metrics] +3. [Configure the logging backend for Grafana Cloud's Loki](03-configure-loki/README.md) +4. [Manage synthetic monitors for your Ingresses](04-manage-synthetic-monitors-ingress/README.md) +5. [Send Pod traces to Grafana Cloud](05-send-pod-traces/README.md) + +[grafana-cloud]: https://grafana.com/products/cloud/ +[prom-operator-podmonitor-docs]: https://prometheus-operator.dev/docs/operator/design/#podmonitor +[prom-operator-prometheus-docs]: https://prometheus-operator.dev/docs/operator/design/#prometheus +[victoria-metrics]: https://victoriametrics.com/ \ No newline at end of file diff --git a/docs/administrators/README.md b/docs/administrators/README.md new file mode 100644 index 0000000..63e148f --- /dev/null +++ b/docs/administrators/README.md @@ -0,0 +1,200 @@ +# Observability Operator for administrators + +This documentation explains in detail how to operate Grafana Cloud +Operator in your cluster(s). + +## Cluster Requirements + +### Runtime Dependencies + +Observability Operator can collect metrics, traces and logs. It +manages the entire requirements to gather traces, but has dependencies +for the other cases. + +| Dependency | Operator version | Dependency version | +| ----------------------- | ------------------------------------- | ---------------------------------- | +| `Prometheus Operator` | > `v0.31.0` (verified with `v0.74.0`) | verified with Prometheus `v2.43.0` | +| `Kube Fluentd Operator` | verified with `v1.18.1` | verified with fluentd `1.16.1` | + +#### `Prometheus Operator` + +Observability Operator relies on the `monitoring.coreos.com/v1` resources +provided by `Prometheus Operator` CRDs. These resources were originally introduced +in version `v0.31.0` of the `Prometheus Operator`. + +Observability Operator currently manages (through `Prometheus Operator`) Prometheus instances based +on version `v2.43.0`. This version of Prometheus might be customized in Observability Operator's helm values +via the `prometheusVersion` variable. + +#### `Kube Fluentd Operator` + +Observability Operator relies on `fluentd` to forward tenant logs to their corresponding storage backend. Tenants must annotate their namespace to specify which Grafana Cloud stack their logs should be sent to. + +To enable this integration with Grafana Cloud, the Observability Operator dynamically updates a Configmap (named `grafana-cloud-fluentd-config`) with the required fluentd rules[^1]. + +`Kube Fluentd Operator` must load these rules from the `grafana-cloud-fluentd-config` configmap into `fluentd`s configuration, otherwise logs wont reach any of tenant stacks in Grafana Cloud. + +This requires `Kube Fluentd Operator` configuration to follow these steps: + +* define a volume in the `fluentd` pod that loads the Observability Operator's configmap and loki key/paths: + +```yaml + - name: loki-config + configMap: + name: grafana-cloud-fluentd-config + optional: true + items: + - key: loki + path: loki +``` + +* mount the contents of the previously defined volume as a `/templates/loki.conf` file in the `fluentd` pod: + +```yaml + - name: loki-config + mountPath: /templates/loki.conf + subPath: loki +``` + +* add the following directive into `fluentd`'s `fluent.conf` main configuration to load Observability Operator managed rules, stored in `grafana-cloud-fluentd-config` configmap: + +```xml + @include loki.conf +``` + +In addition to this, log events that shall be forwarded to Grafana Cloud must be tagged with a `loki.` prefix. + +The following `fluentd` directives show how to achieve this: + +> [!NOTE] +> This setup assumes logs are collected at the node level by `fluentbit` agents and forwarded to a `fluentd` service managed by `Kube Fluentd Operator`): + +```xml + + @type record_modifier + remove_keys _dummy_ + + kubernetes_namespace_container_name ${record["kubernetes"]["namespace_name"]}.${record["kubernetes"]["pod_name"].split('.')[-1]}.${record["kubernetes"]["container_name"]} + # dark magic to change nested attributes, this record is removed inmediately, it is only used to change kubernetes.pod_name value + _dummy_ ${record['kubernetes']['pod_name'] = record['kubernetes']['pod_name'].split('.')[-1]; nil} + + + + # retag based on the namespace and container name of the log message + + @type rewrite_tag_filter + @id record_tag_rewrite + # Update the tag have a structure of kube.. + + key kubernetes_namespace_container_name + pattern ^(.+)$ + tag kube.$1 + + + + + @type rewrite_tag_filter + @id copy_log_to_loki + + key $.kubernetes.container_name + pattern /.+/ + tag loki.${tag} + + +``` + +The previous snippet will: + +1. tag container logs (captured via fluentbit node agents) with `kube.` tag +2. prepend a `loki.` tag to the container logs that originated from namespaces with log collection enabled. + +Users who are not using Grafana Cloud can send their logs to a different storage backend by creating the corresponding fluentd rules in a Configmap in their namespace. This Configmap must be named `fluentd-config`. + +> [!WARNING] +> By default, `Kube Fluentd Operator` compiles all ConfigMaps named `fluentd-config` from every namespace to create the final Fluentd configuration. Any syntax error in these ConfigMaps will affect the entire `Fluentd` log processing pipeline. + +A simplified example for sending logs to a custom fluentd backend follows: + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: fluentd-config +data: + fluent.conf: | + + @type forward + @id _match_forward + + name forwarder-server + host + port + + … + +``` + +### Networking + +You have to provide some namespaces for the operator to allocate the +Prometheus storage systems and the OpenTelemetry collectors. We +recommend to use separate namespaces for the Prometheus and the +OpenTelemetry collectors as they have different networking access +requirements (pull-model vs push-model). + +#### Networking requirements for Metrics + +The namespace for the Prometheus systems should be allowed to access +all tenant namespaces, so it can scrape the workloads. This is +expected to be provisioned by the cluster owners. + +#### Networking requirements for Traces + +For traces, the operator provisions NetworkPolicy objects to grant the +required accesses between the namespaces holding the workloads and the +namespaces holding the collectors and Prometheus deployments. + +This scheme assumes: + +- your cluster has the components required to enforce these + NetworkPolicy objects +- communication between namespace objects is blocked by default + (allow-list pattern) + +The NetworkPolicy objects created restrict access to the +OpentTelemetry collector's Service for a specific namespace to +workloads of that namespace, matching collectors and namespaces 1:1. + +## Helm Chart + +The Helm chart provides the following options: + +| Option | Required? | Defaults | Description | +| ----------------------------------- | --------- | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| replicaCount | Yes | 1 | How many operator replicas to deploy | +| image.registry | Yes | | The registry hosting the operator image. | +| image.repository | Yes | | The path to the operator image inside that registry. | +| image.tag | Yes | | The tag of the operator image to be deployed. | +| image.imagePullPolicy | Yes | | The operator image pull policty used by the Operator pod. | +| region | No | eu-west-1 | Metadata added to telemetry data | +| clusterName | No | CHANGEME | Metadata added to telemetry data | +| clusterDomain | Yes | CHANGEME | The cluster domain. Used to generate the name of labels and annotations used to configure the operator behaviour as well as internal consistency. | +| roleARN | Yes | CHANGEME | The AWS ARN for the IAM role the Operator should adopt. This is required to grant interaction with the AWS API. | +| exclusionLabelSelectors.workload | No | | List of workload label selectors that should be ignored. Deployments of this name will be skipped despite how they are configured. | +| exclusionLabelSelectors.namespace | No | | List of namespace label selectors that should be ignored. The telemetry of workloads present in the listed namespaces will be ignored no matter how they are configured. | +| enableGrafanaCloud | Yes | false | Whether to set up the discovered GrafanaCloud stacks as destination for telemetry. If disabled, fallbacks have to be setup on each individual namespace for each telemetry type. | +| enableVPA | No | false | Whether to allocate VPA objects for the Prometheus and Alloy deployments that collect tenant telemetry. | +| prometheusDockerImage.tag | Yes | v2.43.0 | Tag of the Prometheus image to be used when provisioning Prometheus statefulsets for tenant metrics scraping and storage. | +| service.internalPort | Yes | 8080 | Internal port for exposing Operator metrics in prometheus format | +| enableSelfVpa | No | true | Create a VPA object for the operator itself | +| resources.limits.cpu | No | 100m | The CPU limits of the operator deployment | +| resources.limits.memory | No | 128Mi | The memory limits of the operator deployment | +| resources.requests.cpu | No | 100m | The CPU requests of the operator deployment | +| resources.requests.memory | No | 128Mi | The memory requests of the operator deployment | +| grafanacloud.configmap.namespace | Yes | | The namespace holding the configmap with Loki credentials to send logs to GrafanaCloud. The credentials are the same for all tenants in the cluster. | +| grafanacloud.configmap.name | Yes | | The name of the configmap with Loki credentials to send logs to GrafanaCloud. The credentials are the same for all tenants in the cluster. | +| grafanacloud.configmap.lokikey | Yes | | The configmap key holding Loki credentials to send logs to GrafanaCloud. The credentials are the same for all tenants in the cluster. | +| namespaces.tracesNamespace.name | Yes | observability | The name of the provisioned namespace where Alloy deployments will be allocated to | +| namespaces.prometheusNamespace.name | Yes | platform-services | The name of the provisioned namespace where Prometheus deployments will be allocated to | + +[^1]: diff --git a/docs/development/README.md b/docs/development/README.md new file mode 100644 index 0000000..743957c --- /dev/null +++ b/docs/development/README.md @@ -0,0 +1,226 @@ +# Developing observability-operator + +Make sure you have Golang already setup in your local environment. + +## Running tests + +We have 4 different kinds of tests: +- Standard unit tests at reconciler level +- Linter/formatting tests for embedded configuration files +- Integration tests with GrafanaCloud API + - Require a valid API key set as env variable GRAFANA_CLOUD_TOKEN + - Verify the Grafana.com API client works properly (for stack discovery) +- Integration tests for the entire program and Helm chart run in a Kind cluster + - Require env variable RUN_INTEGRATION_TESTS set to "true" + - Verify the operator can be deployed and behave correctly inside a k8s cluster + +## Setup a local Kubernetes cluster with Kind + +For convenience, you may want to run the Operator against a local cluster during development. + +Make sure you have a container runtime installed. + +For macOS users, consider using `colima`[^1]: + +```bash +colima start --edit # set enough resources, ie: 4 cpus and 8gb mem +``` + +### Create kind cluster + +* Create a Kind cluster configuration (ie: `kind-cluster.yaml`): + + ```bash + cat << EOF > kind-cluster.yaml + # three node (two workers) cluster config + kind: Cluster + apiVersion: kind.x-k8s.io/v1alpha4 + name: observability-operator-demo + nodes: + - role: control-plane + image: kindest/node:v1.30.0 + - role: worker + image: kindest/node:v1.30.0 + EOF + ``` + +* Create the Kind cluster: + + ```bash + kind create cluster --config kind-cluster.yaml + ``` + +### Setup Operator runtime dependencies + +> [!IMPORTANT] +> Make sure you are using the kubectl context of your kind cluster, ie: +> +> ```bash +> kubectl config use-context kind-observability-operator-demo # or equivalent with kubectx +> ``` + +* Namespaces + + ```bash + kubectl create namespace platform-services # for Prometheus instances and operator + kubectl create namespace observability # for Alloy instances + kubectl create namespace userns-dev # for user namespace (example) + kubectl create namespace observability-operator # where Operator pods run (if installed via helm) + ``` + +* Prometheus Operator + + ```bash + helm repo add prometheus-community https://prometheus-community.github.io/helm-charts + helm install prometheus-operator prometheus-community/kube-prometheus-stack -n platform-services + ``` + +* Kubernetes Metrics Server + + ```bash + curl -L -O https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.7.2/components.yaml + + # edit components.yaml: + # add `- --kubelet-insecure-tls` arg to "metrics-server" container + + kubectl apply -f components.yaml + ``` + + You should now be able to run `kubectl top pod` against your kind cluster. + +* Vertical Pod Autoscaler (VPA) + + ```bash + git clone https://github.com/kubernetes/autoscaler.git + + # fix addext param for openssl version https://github.com/kubernetes/autoscaler/issues/6126if + OPENSSL_VERSION=$(openssl version | awk '{print $2}') + if [[ ! $OPENSSL_VERSION =~ ^1\.1\..* ]]; then + echo "OpenSSL version is not 1.1.x, modifying the file..." + sed -i 's/-addext "subjectAltName = DNS:${CN_BASE}_ca"//g' autoscaler/vertical-pod-autoscaler/pkg/admission-controller/gencerts.sh + else + echo "OpenSSL version is 1.1.x, no modification needed." + fi + + # Make the autoscaler up + ./autoscaler/vertical-pod-autoscaler/hack/vpa-up.sh + # check vpa-admission-controller is running + kubectl get pods -n kube-system + ``` + +## Run the Operator + +> [!IMPORTANT] +> Make sure you are using the kubectl context of your kind cluster, ie: +> +> ```bash +> kubectl config use-context kind-observability-operator-demo # or equivalent with kubectx +> ``` + +### A. Locally against your local kind cluster + +Tokens must be set but they can be fake if you don't need to test the Grafana Cloud integration. + +```bash +GRAFANA_CLOUD_TOKEN='test1234' GRAFANA_CLOUD_TRACES_TOKEN='123455'\ +go run cmd/observability-operator/main.go\ + -cluster-name='observability-operator-demo'\ + -cluster-region='eu-west-1'\ + -cluster-environment='dev'\ + -cluster-domain='adevinta.com' +``` + +### B. In-cluster (within your local kind cluster) + +```bash +docker build -t local/adevinta/observability-operator:latest . +kind load docker-image --name observability-operator-demo local/adevinta/observability-operator:latest + +cat << EOF > secrets.yaml +kind: Secret +type: Opaque +apiVersion: v1 +metadata: + name: observability-operator-grafana-cloud-credentials + namespace: observability-operator +data: + grafana-cloud-api-key: YOUR_BASE64_ENCODED_TOKEN + grafana-cloud-traces-token: YOUR_BASE64_ENCODED_TOKEN +EOF + +kubectl apply -f secrets.yaml + +helm upgrade observability-operator helm-chart/observability-operator --install --namespace observability-operator\ + --set image.registry=local\ + --set image.repository=adevinta/observability-operator\ + --set image.tag=latest\ + --set image.pullPolicy=Never\ + --set enableSelfVpa=false\ + --set clusterName=observability-operator-demo\ + --set region=eu-west-1\ + --set clusterDomain=adevinta.com\ + --set excludeNamespaces=kube-system\ + --set credentials.GRAFANA_CLOUD_TOKEN.secretName=observability-operator-grafana-cloud-credentials\ + --set credentials.GRAFANA_CLOUD_TRACES_TOKEN.secretName=observability-operator-grafana-cloud-credentials +``` + +## [Optional] Debug the Operator with VS Code + +If you are using VS Code you can use the following "launch configuration"[^2] to start a Debugging session from +within your editor: + +```json +// .vscode/launch.json +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Run Observability Operator", + "type": "go", + "request": "launch", + "mode": "auto", + "program": "${workspaceFolder}/cmd/observability-operator/main.go", + "args": [ + "-cluster-name", "observability-operator-demo", + "-cluster-region", "eu-west-1", + "-cluster-environment", "dev", + ], + "env": { + "GRAFANA_CLOUD_TOKEN": "test1234", + "GRAFANA_CLOUD_TRACES_TOKEN": "test1234" + }, + "console": "integratedTerminal", + "preLaunchTask": "check-kubectl-context" + } + ] +} +``` + +The `check-kubectl-context` preLaunchTask might be useful to ensure you are running against the right kubernetes cluster. + +You may define this task as follows: + +```json +// your workspace settings +{ + "folders": [ + { + "path": "path/to/observability-operator" + } + ], + "settings": {}, + "tasks": { + "version": "2.0.0", + "tasks": [ + { + "label": "check-kubectl-context", + "type": "shell", + "command": "[[ $(kubectl config current-context) == 'kind-observability-operator-demo' ]] || exit 1" + } + ] + } +} +``` + +[^1]: +[^2]: diff --git a/docs/images/architecture-overview.png b/docs/images/architecture-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..361ddff6a1f6f13d4ff6328ef92143bf967d7fab GIT binary patch literal 318079 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%0AbnnxaKf>lfEQOzWt48kcC7V<)j-qTn7Q}FH5#^ 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�Dz)92 zi*jky9oMhYm;H*FM^D%Ftll1Uk6L$ycjHb`zAA87|LNX=pzl@%FF$PTeffvlm$RfZ zUuciX@dBc9E7$IR*L*w)F>XjD+_t%w2?{Gz+%I4)T4a@HAA?gGba5s!!+jE^cJ%zQ zxJrxmnUjpTN?63v-x+OxH3wq!wCJ;rY=mZ3GRu@(4r-H5 z5vhvYj-~*mrfBGlw_;^!!(XJIA4mYq?8L;3e7QqDXZFv>coz!QqRQpEmBo2xyVQ3o z`$jyJ9bcl#>nY-yvOl0(#g^}Erxuh;A=XGJY6)ib9h|LhRtX0;VCO9!iGU~TUzkf< z%hS(PiaTO5l3nC3=kgP%dPaO#gU{%$=Y9RQC&>SX4v&^%?nHv&4r}t)cCqiS4q=FSx>jX86eL({Dk%|n(yuZvN5rM@I?F6qD1X}?^0%5;A7^(WGW*jL z&jUR1;(((&b$BPPV%c}Z{V%=27#6%~%NUMQ&&4*NQWFg*H z8E4Zq+T34g^L3l$p5ms(=Dev_zRzKAl=g|%q6?<@Ap33~
ETWzp_ix|ZE804>!W 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%0ARW@}ZHxOh$as-5239v8HJk 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 e|KBj@mjpQq=@Tz9`X_k6pVj+1pSg!~^~8`CKO literal 0 HcmV?d00001 diff --git a/docs/images/logs-overview.png b/docs/images/logs-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..6bc3bb323759f62f4bf9d3b71490aa677c703c67 GIT binary patch literal 125269 zcmeFZcRbtu_dXsJEj8LIMU74^Meka*g6>w0R_&rgtq5wbm{na$2W~Uk8ZD9_c1Vo2 ziV~|rj2JaTVkU_2d!_CD{@&WpcJA$5z$>UP=kEjmuz6j-cm{-Q-9H5aNrNt*)4SnsJ2SxTf5UWR zbDo+hsBw(vNyIVL8-kcy^-u29KY<~7Y+xPA@xO=uSMUF? zPyaWh{x_rke*%;*H^KuJ$9olV>vyVy=%vE)R>~`?O-)U%<6o1yv-Cx*gJw&_gTaPd zLDT*vh%NZ&vM}`gpSXMdnDLDp_SVpnczNs6uMc;M-XYld*+k+)NHBVDyt(aEtCG+3 z4RSZaIuhTwV+(SJU)?1ghJT&@HtkQC)P2I~fKP`;a`AaOYR}bh%ywJ5L+AEB8UFj>-B2+Gu0FMBluN^^ZH+# znm1iSL&DEnm7!Bh0xfNEk@Ak!g9e`NM%v4-ZTyF$D8vsuLuLJ*`qt$hZ!~4tf?s*d ziTv9Q;YWp}!`#mVE5!VPbiGH6=NAcP8Z=e8&D#lvYAZ^40dH2U|u_ZGexIQZ%?ijt_uP^+n z(4&L|i>Y@amaFESUuD^q1|Y3@c_f!+S^|!IIiali+HuDfTA#bTj7&q|(&R2px^qsN z1FCA_2?Lg*3eC5}g{VS_%4J7`{l(SXQlXVo*@cRVmPH>!)~000gVh*Kv%U#3DW-`2HikWYwf`sQmAxWrv=oqf3TJ_ILq|Kl!IKT3Zl z^8V^rVqc>Se1-<2R?}x5>@j@Axg0Iw`}c8UxK1dRPYSH{VexqJ<_sGDl9-tG{~D=r zzU*W0s@q5Kwr*y&$qS|DHGE4V-UwJ`4&?G_(7QgE%uc?Gb!$`io-;MKx!17Y>zO8g zs5Wx;T`bt8O?__-K3yBrT}0!n+|GSyOV-I*hJiwkM0%;>% zRuYP^F7w6A6n7e4#-|#2w_+%j%`J6~Tgg??Wq|FZ1ilLTGj8G!3NlB{t?y3^i8*2~ zc27eBtR-C4$*#^XOuO@m$fDhOf77$#Lse^=9JL^3*n_t*hw_jRPDgDMDkJ%?yALIT z=W3TVHkLY#%4~dlKMB=LOiVPi-tWKP(EGjd6*<@tu_N@$f#{xAO{%L6#uu?TzkiE! zwr661n69J?&TcgsxV7-&Jr?(yrJpLKNtM~Crv+IK4vJVBmJMDm(X5;ikW2B8j>iXs zhc_y$_q(k|DqNWk9!>*r(B9g$@O<_2Z+ccr8*iT~6lv4@m3*JeA9#wZ*10X6TR2 z+1!%n$B+xz_;^K96HJ+Z@lCBXVvl4Vp#mPd5uiz}TD;TXR@&=O3cwI!jf{E)CIyla zj(cPby%{2V_x5fus8X6(gA~=$7S+C<%*(G{g5kbZ0FXi9FxrRCzh<6oMIkhBV;XdR z=>KqIyWg*j7{~=wtbL_kN>Rxl%5-e8Dt7S*YSxi}WT9+rnOf=<-3$4R4)Rt6vY1rp zdSOeNCZV*?O_SV_^)x;{-VzRmx%L*_D_lJOx6a1Or~w1J+->a^iu>@430#^WqxyNu z$=eY=Ab>U$DL{OG?Okp$wWwJEJu-491q=%;2@6@8Yn^tZ3VEsCA4m5_^1uODc(ge-R5 z#J%mml76~Zb{wDYi><XFmm^@xN+R6 zZH5oFdfphw=|h>5+?JeSCA9K$UCYPuuys4R6kkXh9* o$wp2CI{b);eL%M7{M@1 zNk?8ny(yHzl!rHv+mZG8SB?wez z{_3yV2e)E}beQg$aHn=DpfYRatsnv$>GnN5&&Azel-j)PEiq)guJT5juAi;OvN)$95WOe)3(V<2IquQXxPNh7L!G5KWA<$6DJzn8>66pmzS?3$CWXG!6LVuyK{2F3#!Y!a9$RU7p84PX@zegRseNRb_a96-ho_`-y9YQng zT`oS#P$AsBYg6g{SNv1=$>bRvla`X^QMZFOl>;Y!Gq;0Yl<>LHL~MGzwRm}pNQW8G zCEvofxQ7)YZKv6@ni1bWy*g1jxwr<`LB;P)J&D+8Ab8lXn%_mZF6iXWzQ9pKPvk&I z7b=d*{G0dy!Q}Kekka+*r^WsZtQ#3ih-+r^EsKw>;iOhi4SH!RA3r+vn_A%|jDoPd zoGN2fQ*LuuK5u2p;OTe7omIxbz%h1(Fu0X=n0e4b>FG}gp_*zTbUE_o~CkFEM%lnv;}`_)H&J*ZwnY3BdU))+Zm5UCuSD)EQgI<88u zHI$iYP%@?wPtKhv!>=Y_dPyB`KV{vGEuMtKk9C2q5JQHhAHO)THAh^B53k`{e z)-8vE*gxz6q9^T$`QWA_9uyRiJO3bq)bcX$38h^ z=|f!YHf-@$nWJ3J_XU)<3MWpis@YOVsBqkZ7r-w{F4S%0?MpuXmEUbuBL5ScNr&wx z&PDhA4rbT);SihI)Ll=FXc!f9!jIsTn+(sDq2po^?4j{kn7;3K($5hFR#GOrT% z^F-*a)gY~uznt!w;ESGcx_^SYZ@A$tGwatxy%d#&wp`4YqW~p!oi?CwZh4uN+&Z@|7L@Kzqyv&NxOIAP(o2k(S737!%08RIwx(># z9f$VZ7N-*A7(KM&c*^IJf5#6f+<}#yu9$T3i>$-`h2^ ztQi$wa%(PbI1Y0(N53THmMG=)IVbcj&J?@r@SWT8_M&TmOT~lYgZ@k-F-}?GDu*#R zTqG3UubP0Fmrv;YU`LcqfcbtnA1bw{3>IJ=Q+O$5xwCXudFK|JzBsT#lVU^R+wwBY z=n>v?&H1j~jSl+YOVY3JzEBmn%4Do2bUHT_UwbATV!zjG!@2#f`)Jv56nYHGsI)w+ z1|?oS`|k$^g^wQwe32TM67(DJ11$S*-D3arcvuzg{M+*?dFK|sE|~q*?A-1hXf<9P z{Md4JM655aZzAAnaqs&nVq^SoK2`wE{i*}%2mcWZmeQ5>+3_&nb7q3yy|p_%F=@^Y zFY?Q!+_pl;mvg|AU!74QZY7zl6gs}=kpi=;39Hqb|283M?l|Vow9#ucaaTg$sFXu8 z0{?Jp(zV$GAY^a>AGO6qmOrI!w!O{5S%30NwDg|(?(KZNWA=;X;>~8uQK4>_k<~Ma zE$;~b3;?COmUZi&79|}PL=;SROqqeHX6Uz5&ZLD)DH{psZjYzMgNJAPu53Xt!0QJA z@7xSbW^4^1;A+ATbG{XpPlvRRNm+R}G8{g^Q{tI!?F*z=TG;!(Pla4v6L1OVt>}f9 z7-`!F#iNtZTd5DFym{;`us&mUnyd?pq~FeK7Ng&AN+Y?!Lu_|-m3V0X(yjr z|E>CHfwIjFI?ng|i;KwD4%+h{_t1dWtPe&XNNl^GrTpOOe{nzHm6*eAGaM^p&572y z5atZQF0^EIal-ue#zM0qv@JuAHd{s_0!q!eLkxGBCE6j$;T5Z+Dz$HX*;7XAb(8{x zo|}h!EJr$JheCkwp|ug5r5?j)tc#sqz}Dv*zOhsDkd;jen3+>Sl!}R&j7WZ~ zi+4XiEBs)RQ_04&m8bvVEmoZ=-J#3?Z6sK`6)v`F;#K=S&YBES)R=)O(9*}8WI$5F z4)~A8Q2G|fThOeoyhU2TO{2lw4t6h1)2|e0V0(`mB-_7|G4h=-Jr-KGLq@r2BB#8( z$54GtC}^quVqTgZffO*2mKV%~Z?5Oq-2b!}Xuwdtl0h@=$Dlm$r7#Zuf<)WEMn1FC zBaaT5HK|l={~fD-4^QcWQ=G{#Q0UrJPTznZ3Cf`2aMdd#Pg`xXzLyOKLKuK&`>A_f z^KJwg8a{{3)pC~t8dxQ&3_@sCz^>d8xkI1rBg6-p&ut6_QG0>r^s3VLlH+l>g(f+h zOX<@HK;wE2UUM>e><6th1f;&Z5DcWW!Xb^jOkc6O3km3mfF_p=1=@lSZr4i|Kg0n2 zBt|?ggN(p!thpIST=`z+P8tLr@h^hI)&>`dd6(TQqp>E-)^qg0ZUi_evP+DpdfrLdlY+rEIJn<6>x z*MI+FSvID0Zl`DbTb+qiuaOX=v6;>J*wCI9HPQ?gl?Xa?@pqwzR*Z|O{XJYSpmWtf29Oc(>45Ok=h-YT-p~J=GA+V8jldz-^hUu=Z_g>olki%71T1kE+81f^gsRNSc)e=X@PGpx! z_kX)rNa*8pb7O=h4bYu)tAWre6r~a06c=}CpCjDstfwDMaUE$IgmA6L9XNX@8p8C` z&V=xCEv_*|9aC@n4frI&Hkov{rC^vUpK)7#S$7)z)V(V+Lb9Ex#J#}uAW`nV)S!Ki z3w!bo+$Uk{u9b*$v+3$y*~>G%om@Nj8Mj;<51f)-?C-xRvLUelbldU)@vV8KOWW== zRGJbL*d9&%$06PH|C6Q_0H{XJh}9KFTAXs$qojeYEMldoigi?Pw+9h ztflQC*Oksvk6s2@d2OWm4c-Z$Z3IauI~|sy?pzuXu?a{Ih|kvFp26bD z0=8$(rp0ZnQ@Hj`YGAMH%{|bdu~5lbv@#sCg;)xO0Erf7 zEvb-Xfc~N)Xp8Puak5TfpSjnZP$BD6%eJ@?%rnT8W)7)%EAV|J+*gSYBIpLB+2P;i z@{0^ET}7xme-3=Bw{rgcdF0DMActI8s(wtFm|_?~sS0-ib2nw?pIv||)x&p1eD81t zpK_Ur+>-J)c$CQ?TLJ9G?HdAR?=Hsr9+UkG1uDxn5GdwJ!fTN8Wid=Z7DisR@$Wnl zpks0q-K`Q-Wsb7tTib67ptQnC+*EeT&5CM!wU%iqK<(cvB7za&PgW@)y5v>Vv!qM4 zS32bb_ZuWAU{dHNtn+E?fN!5X4a#R_oMCI-!wlV|hq~ER0x2}ms-)J+~-rkk{$5rgo$)FnRK=Ug#TP=r@C}$;zI@p=p^A&&$z)8Y zM7`WO8%Dyy(xQnU!YOL~9+5$g8T6yM$~it0cK*YhSK0{O2ZE)x&^;##+q!_x`jF(o z$P~%b4bMdP_+;Ut=;O6Frs32M`YL;hc+4a4k6@Es{A6YvfR*tmG zt4yhL(QcN@>{cpBHz`S21Ly@Mw{I5Eg%xH9o=#$M$kC~UxwLpU35Ad zirXaqqJUd+7Gg6(VEJ+78G*Jy|8HMiTS~j1d2@c_$-=EKG`oy_SC+MfBtXtpk%X?0 zkAz7+Cs*18jKx!KTOFEJ;nnJe<{?TwA>ZX~t9m5fCT-(s^O4$sY}^d|(j7QURIaZA z>X6&E^;bsVsR(zwhjxkwyM$Y|&1EqoX4?aU#ZG33vWZ=ma_3E)BHY>@zpra8h%#9NQ(;LDy_R$;NR8*%~bt1exT0NpGoo$0hQ~LNCv~;Ky|v*UP%#Q;mQJw zH-)NEU)-yg6M~M~g))~12unAE=Rb*HK!Z9t5B1yN0GD)=UIA+IemU*UW<}h`++j`* ze?ALBzArS{5(Q$Gk3RQm?v@B$pQn(M*{J$>7HdUn*q#m}XmYf45I{6y=`9cn0{I-` zeoc{KV};5b`eUZ{o$`?jxsc z-)1ad4B52Fxv$sv7-?O*m%(_jW6#z2sp8|(1h02AQxFNzuRC=;aL#i8VzRJ>XsleU)USc%RYjGMdSGwU)PpilrHH+4-l!y~lG> zugiy-?>)_TxDE4=s47*nxjF&&1v&)GsIuUJa_70K^!9JhliB^N@%v8MKSJ-srQG6M zAqGZJw>D6rJCwFykBlZ(KA5X)y>?Mz>^TV_di`QvE>CTR-e;ysPL>?4 zzEH_%;hwWHvQgZ<6dIq|na#E%@U(dW!kCnpOrR@U>ypuO<>q~+T(&6@{@UO3GSlF@ zP_=v^-*L40Z|t-IKf54cmOOADd!m{>sQOvkOrYo#QLIqs?&qBhV5)Spk3pwOiSL_R z#OpN3a($Fb!b^EZ2XX7+rP^>bNXZaeZ-~-9L)Klevr>dJ`>~%btrOTb@460lo&{hgWhGGK>KXbDySN z#Lomq3j#o)Hz8Jq1Yt{E0sy8niFEYfyWY08P-~zxwR{4Z>nQ^dE=uu{Qtrx#k}vJ4 zL$IOP*u@T`CKiXXn*yxt(naTb7bl)*{##@O1P-TewyHV@&QHW_gA@mGXz>g2T@->h zq0%wXczJBNZXhGt8bOyF6v~t<=Wi7zfRq2y@fyEcmYyt$Wd`6@$Hm1@dt~sUOofdU zg{O-QQct&Qe+*szX1+tfWL2AQU)wk#jKwBhp+40QP6K2vPXbrZuW3OYte&M{sJ@35 zOW<}&wzW9Qr$lOJGk1L5W`oYgu&uGv!;m~PM8A5DVcK+E5R3^FTqVv4pfB->+>2cq z;dP{PD}ONz4|;3R;NlRe8nqhuqUJXlC@zhir^(dEFtTuO9b?)(#G_ocXNn+8Me2;%Tp!(#;MnP73tKjgPP+;U?YSM@3q(CN!Dn%} zl$ht}sNDe6fi&~IL&{(5@IzJva5<~-H;w9C^eNcJ+#!=XgnZ{iWoARBA+iWmIE84} zOj(}();#;RmLXQ2K|jPZWLjs7o>IA08@-hK(C_PC4Fz1mz8mu+$bSnl8N0S6`+!)k z#Dv)hyiERtG#ExYJYpoxS?y`%{(3tUv4||V8D6ByN#*G+IT}=DIV0vwY3`oVvxF4N zWpvl01@J0+s=$YuR8HBUY0F{AIJ=3?O99$nAQ#rzxc3V}uov3NY+AwcF;0XNzVWoq zYNxQ;B**lr3(I7^n~ECB({}Xg`Oo4FtvS&_hT)>cc14rc@@oG+vVl&lmMVP69NxXz-$wF2-SiToE|a zQ%J$Gx&l8aACjQC)0Dd{6U2A44P7NL_fLLU$b+}oonPzt?RXYqZ45)jQJNxmfcG%zw=cCvw!;lOd@{P}o z3I|Dt@i6FGgHuN3QSSF?!1hTVW&&sl%ksEJ@?=vLHBq{D;T7o^Q!Bf8vWCyJkS2ml z{wf?iFc9m|O=j>=mL=4p@)b`@j^ zxvCIX%&o1^tCt$%o2%xkxz_8fkHulOOWHwMh+w);~IN%^fCgr ze@9m9FP67&4&1XXV{4fXsj&PNOcv@u)XFs^<^7>R>+adUBCXylU3xrnBD>0Wk2hc9 zkI9BphVIdw(oRm|D#tS4OgKp^MgNQmV@F`Nqw(tgpTU;-E=-`n{Hpj^a^kTze(V>c z=)|=a=x1k*5ML*gQJ%w^pzQnBwY|G^rPDa;HXWivQK2X%u9uT}A#)MY_6r-Hfzk!G zu8gvh**-ta7AWe3&E-4bmAXOPd%`B{OB#Q8(C0gyzu24E+prA-I*0!fc?dTz&xloy zSc&fuz4>FUCc_YTdY_Rye@wCkFL8%^%pp}*1qZn)4`!#@Op1TbRKmMn9Tj__epnNmqGRKOu7ter1|H+N$hosA5>2K`t&z*Z@lOO12>25A->aqsM zUDiWs?y{SFKeqNd3~muqbvhB3i*vZbhm>Azt`^%Fg&2;VH9?073^HxO-gL#m9RsV| zergwOTH9{0HE_?b(d~42=e%?mCxa-vfuy?R7alKG1Gs@Vs9J~@TTXbI;D6iaEJvO9 z4(^WCBeyE|Wih0Lh|&LCjdFtS+0b!lzVAI^fatnanWTOq-exY~@OtWdO)*su3BSAb zT)wD2z9PSFo@1_dv@WEnEpo9)8-hs@|JkER9}mAJXym+>`K9N_?p($TPO~c@)Q}Cj zf7$aBZgO7n`riX>U$j%la_FW)MeC|$pP-${_afrl2f}nYI6IECIS)ZS%9G}m#H2WY zm6R)NI{wzs?PgaG#kn`xIO1qxt{SPki9 zh}+D)$F{FeLf!-fzc1I{f{@bj?BF34KKVEmv!%Me^Bqw6{PmiGcc_acZraU_T(qM zR?K}F-QOsrpwo4>sJYJZ^(kT-%JHJOYC+Je(&(oIql~$Sk4k2AI(XJ%-jjBm{?DS^ z3Or2lJStb?YsAFe9~Kpy+9oDc!|3I-x*MA)Cif0g&h^{sKBpZSn3TPBR@-v5MhERuQS8_{ z+4+?MM!P5WQj-Qkf2l&@-a@y8gEeS8P*!a$GS3)f)5@Aa)6dqXZB-|Gr9CFo(09u8 zw!=lWb9<@8W7=?0=6SiFuK6Ow)*bQB3cjxI_Aa?FM_Q1tH`s6M1=yo&iq)fhzeu33 zqK7O6z)FG1fHmz##VpVOqU@?r8(x%X!3$LO*dLWW>4-53WQ!(Q(zVeV$=$y_+O--K zH!8?cI5;qrU0KNhQe31838e2q{DK4%&S25C1m?x-P#F`=7rsCIbkKMLl-^4f?LaI4 zw%A{@W93L!x;8p?ncT}3ue>*7JviBSXUk8{Ag#Ymxy|T6Fi@;^t~9>{kEycE_1^p5 z3xp?9r-<>zyuSkJR}M<2>lO%UqlY@_N^eC*tQabTY3%+ExW&eQH_O1GU(SV}rKaAa2Aep2jW8k&c2?$B?KC27yt(%?2kaw3||Vy-)7sdk#*7e8Waalyv}^vug!@)E?pgA@3qfyBNW=^;`=-JwP}@SF3$ zOnMh)$Bn(W`NC~V{8zOUJ1ac}N?%xvsl}`RmQH2~pnH?%3El&!cb)}b&*fpnFaE0i zx&zySL2v>zjL{qUb2TOWGiw=hr)lfse@e%HxNeBB78#(Wgnhu1*}>Zm{)FBlQ(YZD z!5T*h)zgmUpTO;hC2G(cL4n@;5dT`rVX@5jIFNqcHxjb&dDm6t_zXv3tGheAY=0gj zxSi)%7@_;Nh0w2^RI&5G^VljLFD^8*eYeE%`%0t54tBAd$k`;NwfqNp_aEB>TSl+0 z-I4lr*roWIq8wip=DHpTE_yU=3>n%T_-&`d4Yd;~0HtzHXi~P96n4`uypp9N7h6OHNLJaX&>b|W34gv~9+ir*! zNww5-VS;c%xg`WoR+V0j?Dnt! zoQ&pgJTDUy#_lg$m1U&3t0u?Du5I^E3zH)O4(~O2kFpCe!^sL@cG=4l)4v6zoaIoP zrlTcbFtn$JBDdOfQz2bRT5nuv91YwSPBI^Y5OWo}j_Xl#CbbmrLaAKr-* z3up1KQ;=*+|smw)h|Q5ScZ(ZHTNH48RE^_K61pz@494lt0VLBWon*;j8Xc{944f% z0!cv42J@|Mgt2jmdHTmRP=JZVGT85KY2IMWi0-cl03zoByN%-CcNX3Hcf3&+9OCpB z^JX{r>9&ld9e}M$WDhqH!2K4DEQ&6g+I%lT*Pzx5dcg108=q5*uJb4MvFDr;bh~uY zCXptCc85|LQxCO+OO`J}NvP(MSF>{>!xWz)@81V9CX9}jXa_S%2`Md# zS14eU_Uxy+D#TlNl5qyF*R5_RA&|2xB#z72eFn|%iJr_n>((im`sLzLpgGb z6fuSd@Ed%1VK9?=Xa;XuRxp@ndSv~(Umi`RB_y3@a62B*kMm1!tsqEb@&*KmZc)vE zBBl3xTG9bV(!{u{AES#$O5~a`A3)i|G>;l$L{bvQX!S?@6mooG`RZ@$cF!fXDfAvU=3=& zBQoMwZ3zW*jz#Am8Q^pkK%CEAWBmpPJ?d8~#yRdpp^xamW*l%L-eidN-eAW)lGVLJ zL(liC*M)qw#Fw;lKLfuu3q##4Ufn&f;qIXWbFW*fP;eq(u}do*I=nV>Qtl*wyF~*1 z$Vg-ZcXLv7UuMVXyPO;DubvZx-9qR5?f64l6+;Jda9GN5+myPAtKLlet5weB29*zq z)ILdN16um-q!q7etxAGFGc)K3A$v}{S}CV({A->!jYB>-Y8&7BKA?A^Yj2j!4ROGX z8o0TgKlZ8Fe&d80#0yELEkyD*`0&HhOQN_RRDlVuv6OLe?6B{{zDykvuW_dHtD~j~ zc?8v4H45E#X60Q!Kk*sR-t|$f(a!niKik1#mv!0Jfp*|AbEfxF;&Ab0;I?GKKPvpf zuej@g*Is*io?>B4c${trTNQf?KtwsD*`4Jx;%>6N2ZUt(Y;F6|izFu{vwX*Q7h=3| zgk*wd`sq6G#tcgHW(WD7U4RTr24hZpe=%g>epDscDOThL*VOWhyF zv}Kektjbl;&^8O~4+G5Zf0 zYNuDE2j}%(oom%FZ##ZXhr92Fi4Hg8@cyo5^>%5#P@|2t$90=Tu7Ja0nQu^Juid^2 zFuOiSH7#kqW@RmPx0igP$~DY@>nnr4j6HX7M;{rHaa_*(S+xQPqr=BD;4;fzh8`IX zFQbdBp8yGIva@OGM=b*C!_>(L&nQx@-VyK(@Tg8`^@FD()3RYO=0&s}79}>w0GTV!2RFJ&pn98# zYWu>bA>?sWKBA9d6gBzVOeDqsjfcT-&|8py*Q?Md`aGAwwn#TAmj*_%79{0}RQjrv zn~8^RSgXiRV*MNMD$9l1Q3!9-gvclO7?N%8^n^bLPjJcz=fK)vC{9_^<=r&;`zwje z7f$2VI@oNU9gn#Vuc#goi!<)iUJaKS4nKq+05@?`0uKy?GM{IcjM6bHx9KVlPqIiP zSn)raTanPP@s77!EqAMWEMZHSB$jUw1{Ogj4D}&b{&U zx04#Awj*4o{H1aQs$8zbtFF#j&9;^7j;bqZIfjDLygcT@&P>gH4bqW2cFmvaNRjev z$al$}Z>nubsgP29Pk2T-H#Ss%^l>iR14jz^G~cE7Q|T_A&(+@bM^BV2zY-vgmKCNt zfs((`>|8bm5=E7Lr(NxD6ErnF+D{O2HDqMBT>z`g2}>Ro$CCY9l)F#N?oi52xC=Ol zt)Py+LutHnfeL<4n6Ea^>sQ-1DEC$1Vck4COsWa^M5E^t_%#CZILLjZ-d%#^)xzJ} z7+o~XwqtmCiixdVR*F0_4M}d7z=n8`>>Xaq@HFjJg+Li|VIUi$)_E?=$)J$9$mg*l z-qFn)GPztCqmlYMRv2B{%hfX|p9|#c2GUxW&P+Tr=R0uiaiA&3r5iE2-#{*>+L_Px zt2BW_Lto0BwOi=CsPKR=5q0l!a<5%czrxP|u>@Eg94yhqJJ+>zzL&lyf3gLg-|}Y9 zi5ysLSE@2!>-EC#GS(Y)8)gN|9?euA?{{VICrdi>?Yp%dUhF4(=mos9i{<^1qRKI> zf)A7!79UAweWb!`YU%{es3n9TMos>dax7RR+#v}9A9}WM>loRQCz`-#-t(cizgAb< zHf*}ytVCuI3xo(a3Vtk@{>G#HtAAB50XtJo9MP|W=;{{CRJ%K_teneQg1z6LT0PsB ze5{5KUuEtu1qSc;CX^;%>{O+-^mQx@Z3)*_D2`4IaXJp0A z0+2G*SziS*GO!b>4tW^=wW@g`Na8MnJI1i(a_7(qF^htk-tdG@UwMe%v{B69+aq*( z@sm3D7Ef!7=tVQ-wdL}kw6}9RKma?-y-Znbtb!GUQG>SU^JeFYO;#W1N zvtDv8QhB%hJwYUKC~@~CB8je~TM{o3PoR3^RMo@OT`^`R+0Mtu&eaJlwc!-2osMVUbEruw#fK zy4bOyvs1T{7Ch8fhURON=wLwsq$T`nl4rbn?8Hp-IKgbqhAx8oSUn@e!w{XVW#g=! zvqi5)&UUQ^uTUasb6@>9mt`@iIjt97Rdd?c)cs5^Z(nOXybsGzjneO81YKuDa`3pU z&2Uj01v<7zZ>mI5hikcW;{;FiNuk8*O;A^h4n+EvFcm_29P%v^L0HlCfhPH%icMS# z`&w_~=CkA$deRR1XI9pBEF?x-OeGp6jeWOtOGMo_zwNQ@$rG2Q&aHd=(YavR=CU5i1IP6#e=T#>MRkc*lex zOit!y*kn~k>Xl$sfof7%w2Zx4erDKz7}K3-uDPyWuhij_=5N=z!Go$tS3!89R3>Ze zniIdkPgZ*-l;f~E?p1RG(TLi(!RQ7Jg>r}L5Gi+Bxj+GPW@_lxgCVQw`R4+m^83Ak z_;$&Gx2L~9hpVFxxvt-WyUaZ}Gkc4~nJ0X>5`PX-D}x4C;X=ym&Ojj*4RU=_s;2%_ z{h6}ao?2M?`ov)^=>ylI*f%F?>FDPINFynCSb)yr=9tLmzc;>Cuqot8?PpX0Rd(lp zs;uC9;I9CHVc-LSY=cFcm*ghZ4#LFZ+2lX0cs-X7oifg|SU{hDDw2F&Zlp{@2G3Kf zL9(I*+i>;AC&lmWD-sbXe8MSZeZHOQFm`0VPolA~{~N=i@2<|3Mp!&^u2Me80pC;M zsR6w+`y8J3(#z{d(;mLW`pDleRR~aV0Tsr?U9~gl_+)98kH(C!NQcX!-u?2!ey78} zZG?Swf|NG4q+X1PWws?J-^v0&E`fm3@mISqpsYIpfJkyA1HGZf)~p z$c)wY<2pBvQ&FR@5Dpm-h;D>KYfvXZpIl?zP2MuD-k^~LcF*bgRgL<%*%=%-ol%>} z6lnECHL6>@sR{L6KjG6Wg)yN&P@=0y>qTB(f95YimHP`opHSw|3FfVo2*$KOE}<$R zXobMM+YiTVN*Ys|I?(@7Q+xqv^icnq_Lqpx43)+{8u#;cf;)5h!5~ zL>?)?-H*Wg-P>Ot>Aus6vuw?+c5%J>X{18fxwrkGJduEEfBallvG7TjjN`*-=UoAeW6H&^cqvJ$;@S*EeV8KR90ucr1_2L!UPnvO0__Ij^5+{*ckoa5 zv91 z!k?gSu1@oq@=aRvAuvzCq(IzM91`FYa|0V|)Deym8yO2YZJ^hx-HYqGY_0n1R6p(NFs|~y)Sc<*WiHj&yG(%zcV~d=6 zw-N*o*2h$)=NC%{Wa&NI`Gs4GOC7C)b_|gT@9vSFm)yI{Wo<}qO~5$lJQZd-+|w~A zw0Cq9!7ck)|HXVLt2E)Ik?#nNW%K}-WjRH_Cn4KC6GJh}ZHeH@lK4$pq4m@1fyZ{3 z0_0^d8;58{ZhFiYnVFKqSf>vIC5P`XYsU7i?&66me(P;cdJ${UrHz7hHPoQ=U;3Vo|a`OJ%&IJ2-Pp7P9B<9|JZpXvXgo^?wD$+Nq z-cKrjdaZV}9@5HC<%|`Grp|Xe3MAAEB>XLqsBV62HZ5YTpE+Mk<|Z7AEu#b%Db>|S zZi|TI?#fACmE7N!QM-+YRPte3uUssQnsaV!Qstf2{x9U4!%b`<$2sDw1Y3YQ~9T~5~Qp31kDnqdZ9^x-}2O`#!uR}=x3@z56WU4Hq(coRg$chz{hC}C(9S|*sKx; z3>Zyy-QsL5y7Sqd9@Z6IGe-$^-f z0;wE_0190%5#2I`Rc62d9Z(^RkS%z6P;7WDxo&aj#Qmr=9v9eg0J1osQpMZ^1HvC(Xm<(0TqN4NmYq=1DXk!M1fErc*uYk z!d;4=#2jLSF{6xlpmoo1P2FT7b~+44TY^8GsklffStWffA_Ymf-+f5^zR!g>YZQ3P zeq+J>Y(aP3vjuRb_Nv$ClmNI>0tUAUu%R>{z1K=~Y<(REH3n6a83jz{IvR?A(tPRS zsJd{l44`N3E=xXBz})bUT61)-{Bl$)5Dn}L7K*MT>VI*Qupgx<$H;wmO-{CA|Fe|| zx)-{<4__%h5GCDBiu<8Ui>n!0YiHaBi|Z3Qvr)Az0Aj2*3CT8=^4`?Q$i+CGM> zSe)u_AJOS25aD1F4Em|~n%R2mB|3SXkH0Vip;(Y=s#bc0j+(eqIf1BtRU*1z7Ee2Y zt$xQyj|hlQ_nT;SClg=b+K0OXaWZ)`DEy;RnxjJTrDjtT4hM&^MV;cTSmr`-Kxw(YjhDHt zJj}|l6pjE+Vyy~txq5VyL0B8A6>aAss`Oddbqb%@gIt_CGLS)Op2-r`>2Xv~`PkIR zP5)LBp;QzJs8ny>J9I`nzGBP`NKv_kzOH7S$`?SYqdZrVzs>fck~(;-eFkr>P#qQX z4zE2r0K20^W#%06H;j)I;3^m&qNf$v9Xp99*R*?1SJE+)4VDqme@dFEm>EUMD@$_FQdm z9j+ovl|G@7lN4W2bw+E)c0_QTs#BuFNMwK5(I7?tR?fM0r)kHx_H@#%euN6tHN3Kna&qA=QhirmDqHbg-V}bcl&G z>egU!D6^Y-saZ8@cMPX^iO_%OwxTdi(0dIrN-uQtaEevpti3o zK&(8E3^2|7O|X{dEobNmU)%sdu3VbaiQjH;;RYJLa*IjabF&XOED%dD*s?O{R%7*m ztUjsCuE9!b?wRR{wYn!HjD{JXF2@eyep+CO==yT?(S{!!B$M?C|FtE~AH$=fYrqr> zY+mK9P)fa~@R)RuswcM3$>idL0TaQ}#1+*`E$=`fpOMb=bN%U`M^aEM9 zxvN2-#CcCcUxJ7h1P{lQMDlWdsWrB_z4FdP*3mw?-cMp8(hx`StFjyc?=w9%)BKuT zRU6I@c3o!GgsIJtm{m=q$-A=}z6G&5c{ls|?Q~8vtloG4fWo(ZE_--RyC;OHu^&Vz zb_;sDJg|3Kwu+wB2{V>Ry+(I zg}$i*CFoP_SdWcb&m|kYq0zTsN<6fk7Z??PDZYsi#&YejjrL^Om3P?Yf22tjlw|bv1dN>tblCE#{VB>ZypYH{IvlaOG2V#OK7u%OeJJjib}S! zWZz=!vTrlS5-M9IWZx3m_idQ5WY3mmFc|yT##m>DvAo~<{hsG}|9h|ZAG$8Y_4%If zIrq8GeeREF=HAj=Tcr<7yMSj@T`H`xrD91@_gv{`Q+*=`utvJg>6MCjx&DZ11fe1F z_Q`$#Wj+#Iq*tgf4n-H)_B}OtaQWOQjB35jC#-YMa57NUvr)1m6jV0JpE}Abjw?wb zwMgQsQD7nXhUWVCa*C(4dAcGOA4RgGx>QQ3*93JwycoF=_(1pkdA`BBbMC}B$qtw{ ze|jH*{)um)uMG)CHfwY$pAI-dmNZGrABEg@s809T$DIo&Osb7un4u6^5c7k`v0ODU zkNc{^rUYBM4csY1UJkbcbJ`jb!rVS>Xnc<9G>%j-BbTh(Z$%VbAW!T8>=(cZ#_y24 zx1VoN*3O^ovYMEinWsqQ4fe~r)*UN4hD`75M2uBB=85R>AMIx}Smnd++ce_0Ya{WE z9$K+HND7f+!xR#FDa3}b54q0O%))i2Ic)2H_mh-=oFzkOP9;2lRLSvRo&os9tXTM{ zKOTnuF|o?n3p4abi8nrPFMI=?kqvmAqGDdTQej@S7)LK=q+@%qzG=;vdR#*ulXB5- zwC%2y!*fPf*%6R>dy_x)@2#7Oj-R+!erd0nZ!;EqIoLAEcMOP)18Z%-S1g9I!(7bc zE5Vd<_xb`3Sh!K40-@YO&I93O;~bmBhgkkX323-S2L5eXZ(36{mH@=7lixai{rM;u zSzO_63b0Fc0UCjklNC6YvI#hn1c)vdOtaec+do9H0(-J{wQgPtbq_$}$Wj_Ti4 zigmUzj=Pny>@P&f`kz*Me^99QdOn{*2uN}e@BTo30LAHoPN z6IhzDpJk!+n^uRBO`Yj^6K3oB&OPUr&^Qn*bT-(nE_FPocJJid9+v3>znQVYOB65-Y}dzuM{*4+kf6rAS4e>X|VIY^T#|8>}Eh=!>=U8PrPa z&eB3m^`8NLFN&Q4IYG|EUOi)~{TMm@4EtKMGrfF4QqCL)9$$XsSikF4UJ9;Pb8H`| zY~%|tjzmJnKi*1web72lQq4COluh4@Wf24mwN8dNufN{b-}fkuqvEz@X< zd*o^1#dOhcy1*EUi5=;vUzL$nvH%UbA~sxHDjGB*Mlc+}TEv<8wP?!YUdoZluco(i z_i3X56UhAMG{s$Pq@x}n2 zClw!=b-rGIm{Vxpm_5=1r*w%VoV>|3S1^ZV*wx=gLY#Z;C%Py3PJb4EbE{<6;#;w= zj1})${gbwJiGu=9x=KzKU4V=zK|4=JNS?~;JH=u@02*BajD2P+aMd3NQ2&z>RfVb` zx~;>uyi+KHKV5jTLh+v^7`V{n1}5qtRZO(9>@d7=mLd0j6!>j0`VSC;J_seJiZh^N>Q7jVUf2$d12bZl979UWuA5YOEgOszE_SK0(s4t z6wG9N!q#F@54vqn>PEZ?wSMt`RvClj68ozKJRlRst|-UhADT6qX|fa5EHULZ_({wT z2d~M~0x5mnuK?6dGOaodFZUV<%?hmh)#zHtuRNsQ#@A4>%lD!)h-+LF6}xUd{Npk7s6Ybi}m|N(9=J@$%ut1MHGU_Emve? zfxQ!R;4R%XII@IMh{a=@dI%zru<@2DuE_eOlJfH6>72aV<`pAVmx5l*Kyfg{%J(*> z!E2r4A^Q=!#x>3GljGS7`+1YxB@LOB5t)753yIl%mOR^LNRLwB5&QqTfB_?lPDpd9 z@qako&M&IWcy>Q=cp%&$Tj7s8yW><3dcmwy-Hn;b7X{VVa)|NbF z#EbO(e4Do^{#GX1YZuM$blV3x<~~WvXG`i?O8i~dZNw5d4+h8Np+-uZ@;owWi<^vBl+w1$vuAG+m@q zcg0f8!`Nz5$qfsx((gk10so@~Fo(1{`BIa`C{)skm@FAa21 zkgfHwEbNII05#{OTqjm88hamm4sysJ`RUiP$Ih} zX(S&Mo7S1T)~45*OT&I+D)Hv0T(+n{QoW-(X>%IiDC%0t?zmT7o7d?03a}DjselU>Rw63RqB^4N=nb%+CGNTAkkAY9R^!Q)HBaVyT+JCtH zO=d>%V3950Adx7wTUqaoe+UmFG=xi;e}u0_!fOYVPNz!XF3HYQIgVl@Gj$tmh`owl z=M?Z+IOZ#l zh$I|2$>7H{-)85tH~Bx>=UxhK0t)UrO-AjMW{OnR-CGJst8T4?VVC05)32AGt@chXNN^mB!ZQiSh;7XV)#L1sJ|?TXfN2 zeF~aXG;~}eo=r=5touPNW=ebu8t5qoq$xdNgPIqD?`r1|)2?-j*Q5Dk(d^BgDqg%2 zos5@6ISw*LZ}zpt7>F>5c*8&mB~xUGX|ne(;Uh&Xc<1v6!e;<`%>n0A~mzEywe`AwlLmr&KZ z&8$<4r4Cqo$3J>-m5KCDW-vmW<}4$Gk6KleF;{}Xe7t08w=QZM@+7Hp=^bdt7O`vB#9{kT$1_Vu@m-+JEdlY=f{c-!`3(J z_ysQeNGhk*97Ns2?hhMqdH2TuFq^&+tJ0Hxn+&*ixZyrUl;sdVEX!0M;xt0HMuiAT z$S*vek0zKswgHQfxuL|FjA4n?m1EZXj$}ATq5ciqw%vG5q6f@cA`km8vkPve*Q`%LCI>5W4^F#orn+@- zufWlv<8=2sG3%MO2r>-tg|H z0k>cJngWqIq55-P7o?}mu1yDg%G4Ilq*AcMu+GFgbPlIv2*U8IqUTo%Kp_hAA( zYwXQJJ(?@>Rxbh0LLXh#C>R8xZM+m5=F^CxR!2K^U$oK4fBLi+C#7o>=rdWR{{3*n zfY6-kr$i;tW92g`OC!Q5Zt`BVwDF?Bw7>Mr6fbEn98_wIifkQ2ct_J|8Z2HM`->1~ zc2Buxv)uIV{D(Y=oQVv6(k(u2Xj6G90a%$$+N9$&|7erqZB68KP03)e5Q>2_6xQO~ zWTqRej@Q`j;F?N}CyUc$-#_=yA#;_^Ujhd^s%bVa75B~qRtjw!6O|emTiyVRhhZ*U z?n~V(Z++=#us@$fyy|aV6Hp58;Msd1{$Q2M#BHvAyxN1_wl6ts70%u{DB57z`y+bA zdkOXSpk1MypS!LKv;9LOgVHhkIZ%iPL;m;-F^K!B{{zo$z|z7*G6~~`f1k@1S6d+S zC1$tzp}*Z#JNBXGJ4N3XHZQ*?RgL0|jK~N{A=GicQlwA;mS~(YYvVWAkP-#ynT@A~ zhBxNv(ml?jJ&WG`?QeokUeU|P!qcZO5EMyN9kKkeF`=Cc%M!_#(+s&*`yLHC;qvlQ zn)_gn>M6uDBG(CYHT!p$D|e)a(oVi@zFFS2nS)ujsAECeJ^Rjnzn%GxL#+twIcfeZ zz;nWP16w+~-d?!9$cwgUD-if5>m|Zbij7s`;GS6kw*uwX?@H;tH#nI4#GDNfVeq1ae9TopDrZ zBO9nK4F9YwLzzUYh;9D-9FX+n57Snp!3sXDDMh zsy*nr^%RZ}y-%%pm#6~CV$7#52olL;yu?m-shKlAZOjYsbWoOOe^2*K;$mRHVZSn2 zeBDCUWan(cW6j7yD#dgmtYe4wr0zFy1XHTUW)g$akEAJ_nD{7||(Cf-q2e$^uw-anAVrP@jtf-E2bnV3J9ny z&4nE8g~o`%pZ1cT^4TH5LofZY$JfKn0~)v^#%6N}^@_d8>IveJ({jTaH}}8jt(VC; zEByFv7A4(@iWJ&J^c4<#XmafspQDk$DZ!WTNAVrl3BDn?o0*TedI&c7IK{ZaF;P0` z^fzl`PM(*{{Ba&M`XsTW5L^WCPzg{f%%7TB)Ijv(SVuzVTruJ@WtTGpc99>s^VQx5 zs2~e9ohmw0Ks)lN)U4^;#_2{M?%qD-?OLp`PJx&UVd(5Gdb6$ibmb#TzxctMlUoA4 znM=&p+b6f3Ul^;p))x8O#dw5RmCy6PHRAOcnvDb_m6Hm*+};#w<{LS&32LT(n>anF zRS0WPtLgupvZ?CYtB5*i9risA6MCV0VhxT}t4@xvQSI)Psh@pkoBy)-jQ@$~qWIwH zF9-75dEFx;Bn`31==~`oFV@HWSItSvs>JqqG-tAG?(@W!Q^CMsFdXyI(je`_Fl9P& z(M%#w1c-Vs%mXst^3Whfik9SI3y&2f^-B^rZ)`T6@vwzK%;XRxc5>lE zt*=Q6j7s9<3+Ph{6AjicX%T>0(o{$S44fGld7eww1$1}?$(-lo5S;8)@dM&}8WwTK zW$Hmx+5;Xe7~}VzC#cz{9(uL^LgS~aguB#abvd*&CoefF(F%x248Q%P_WuR#d}a_e z`N8{5?w25_)kbLlqyPDmumfWkUGo>-@JrRX>;8IwQ+$^+9c{B(+xg|&hkcKm)IzqR z65!BZ)?6}HzP6bz$lJoS`Q<}`t>wv{_;E%nkjL9O z*=Bw%5;(I-?TJ>?U;G3Q8*NrmTm5PoH=NO+HzRgo-2=>b%7$w+^LWWK%<5&ZvGvzG z*234*KQAi`$TFi%-&P#dTP=yy&2AcK|A5+jHB#blJN04{$19yR*E;TaY;CTvqhd0= zz-4{mbh8Un=|qHSHAMyDGCpRx_P2hM3z++69n+Ggg$#FR7v&BTlUbL^!@|!$Nk-dw zh-=C(o!c;!|G)wGI%1l~7J*dV5XjgK)3r5$55He2hp z8M8xjhbgOn&Ii64)z5!v#ozCY;TnyVV>;G!{h-F@M|(rH>3zIF?4!hjbvHxQdKqk2 zRzgVj!if9{)Wmn++4e|^SC&VJmik1ab1KNkRh~oZi1I{U;po~P&s`A7bi5~Of66$^ z&6W4?0djiclJnZvUmnt4ZD9t}LA@?lQn`m_a?E7?i5njnM_Jm~z$nM;4Zmyc$f!qn zdx|Rx{!1s=y1b;3K$ckV4sh>cJAy)9_@w**$g@Hn2ijB_T$Iepf5_x- zg8rCH%{Uu58S^ikucFw?ah&1~2pfsty>H>rA-%MbSM6{g_oM@=fY)5_^ z9b!P00m!;Ld)eun#)b69shJpDYh4*yj6=*Gd2@7c_xtapYU^Cb<{qn%SlXf(N@ovz zkdH_UJUImRh;?%isBV@B zxx0GGC*i$V)r2){Of?JzyPw9L%765Mlst~`D1AgZUp#b2hS?QHR(cT#yZL9VR7z(k z(Zv1P4_^Nd?s`KFUXH)N?Syfsd|rT`$g)%_2KE7q38S*F_j_4@bbD?laGm+6!VSE+ zg6e*4x2I9yXY6Cf()8M(D$Qs9R^-9gAjX@+O@Bn-rQkkP2eznIyxOI=m0-@9fFI zSphbj<4BmCcq94Zm8Z8tMfssL>$cII#$bieh;%rOoJeg~lw$3`MAv66>z#G2Z~4c8 zwSaD}7wJ>VG+5WFc&-r#ntD4bVCytFt_66H936KA@I6GZX|?S)1#od;YhBG#v8Q|{ z-bRk!^YRwPdCc0<6pWLOh`l&130M@L!evOh-;X2;!o06FM|$s3WIrTlH%!{9ZHnbi z;BUJrg?T@x(!nd-6k_Js5AHK3l_gg-NiuK79Y9G>AOpQ=Mx2Km?2OyG?!oz{7vTdodIs>)pBU@`n#!qyD=Br>62h8C#ofJ_|_ZzWF8A zfANLR%jTFsRL!ZznF5MCLj8o4JSqa|X%qH+0KW> z;B9>=*tUvhij2gMdCXnXH#brKF{(bT2TaA9O{}~urSB)>pU*C@mv%G~kPq>KowM)E zq%Ee}(6i}6C!rn)pEgXXd?c1-vA1C0wR?-lTA^^Z`n;gIPUzdaV_DwhTMD;j{lK=n5u2D zJrk-mXuafqX%pZE`_~Tmg(AuRlybAzOs{zOY$8#X(_T_`E?y3Nr}TI|j6pe9wd1_0 z)2Y1<%B3$u*r3EJq03J-pDn02jB%O$uS1_su?|y_i#N?oQ*m7IKq?!_h0rK{E|uVc zFJAG$Q%RVyLTeu?kxsrFQ3iLD3_Juh?w zS-c~^J3-xeywOI+k`pyZjg4+IOVXKMdE#e+T&K$}n@2UUJB}5#04_kbdweI`uD;}& zUS?s4pV!Vs=+?Mo-R7F8+iGqipZm4P%hMa0%0YCWWArR?%82W!9oKMYA0L1C9aW1;859KVfO#j;o z=HCKZ!F+sOi2)GPJH{YcnaZc{8o(9P^jMp8+D*qX*T?l0HZN|<-(GXR>WT|ddONEe z2nNslGS1$3{+<1z4sa2t>g0|s)12*s5qmUUy|NcZHs!)LZKahCcxyT=n%bKawtFGj zU@|P2hW@fP%2{1FqtV$-OIvoX^EOvtAndD%@fpk?sRfD+;$H3-VahQ*aiJS6lw}ny zTem)y^CECBI^YZQ*QLhSZ%P_(Y8UIC`6$5Nsps4~H!_T{Zkv=8Hm?LF*D5jNYFwlI znBX0NzhrO~v*X(rX!y6MxV@#yyW9JaZCp>03_8jB=!+uk?RI@$&WSyGZpth%6TLmU zwZtEwQ~wK8Dfq!*SymlC^Uf@1*>Zn4k1JDMA)jYAFfY&fS9|fxq3_Swb}wh3k;}X$ zSS!&#=%eskl^hoPU&0;~So?hU-i+N8Ky?DNhwGTZ{))>3(qc`%A(2WkL!Q~=M??{c zd+4}jRy-;3=6D`x6t1QVC(lKEyW_#2sHMa~gW!(=K%+#>zGFhz&LnBWhjEG_5p zuC1qRbwm;yX81sPnV>r1kyb-wz8Bb5Cyi}JsUqK77jQ}k{3$i{n*vOdzuooVc$t#^ zj!`W=>Xqyj>kgB$IV!%(zRbv!dqaypsGX0!pI=sk#!5}2pJl+qy+i|_0J~*dzvbfk zF5@M)p(PVFEUquiqYWq{Z8`iWQE^6Nj}|V|=L{^#Ls1U&e+9=sBa`90D)&McTG#s2mjkrzZHnbOXzI`0wxZs;sFx}nhxWT<3hd{nm&Lb- z6THQJk*ecQeUY9TV^`4BQn?DJH=W+-N`b1Fu=bz(O?KY3T20?ZTw72#4$!>PNskp0 zd#aM8U~jmrv`gyq-S3Vl_uIZ?{Y*Spwa+Mjw2`d@HK+Pr*Y%tIQlMAFN3QLb*t)r@ zj@K!=%sk$lorFlv*%rrssRVMVg1ch^6J3dZl^rgb%ckFCK_GiMFQ3&!!;5 zZlROuMev=q3EXF5=ad+IH83$5*IvK$!hbDUY-<|%>1sfG*TJrl{_l4LB{8$$&i+z} za{U9or;G9#7hZUrh-IS|za$=4?Y2d#gz(CM1HeDeO_{8yU{fP*)M~XIxhhKEqQ0l@ zek;}Q@YYJ;s>ZnffpDskw5RuL+VowVBS!De=hGz-{bs-0EMbJr)D5CMV#KIFC+&GK z<$e`u2;fodj;B~+779fJ2AUS?traL6sBQI?>`+QzrlzOxtlzA!ST>7m%FxU3+KHY8_^7&R1~>XlW13 zxB6GKKJKF_rBa+9a|nB^+k9p#ji2SAk+hm5P9y*KdpnL04baY!VfF~Oo<^Bts0Ke& zXyaz1P5RRi2T*gAi4tLjRkwOh31lan=qG$VMLR`10oLUq{pXuwX5RzceYgIWF4*Lp z){*^<2djVV!2s*9oGQ%&-Cl0T5{*@q|B+b!q-*1 zkAl-Oro#yDCXdY(xN^nIUe6*H+47L@`b-9fB;&T{YL&9z{QP4#-N-PL)YKxM*tkHA zve9}|>V%`Fwp_Dpa|HEy2h_8+DAoz~n~MWiYz}14G`(q2NZPVa?k0%8o#4FCU+rpy z;wVhG-9Ebwx0srh(9Uv*{|)0Hi+jxbzd3R0&37}Kc{}hyLF*(97e%qppdWg_J1^TA zSa~IP$G`Fq(ly6fCg&(~*BzeRqyeFg^FCHs>pY00Rrq zmFk?8Gdx>hs5L8hW8PVNK$g1Zzz4MRE@s1c7Qw8Cm*1gHp&i|L)nWO#o>xFz+aNnx zCMHOy)fgjXt}MOYu$6WPb7swZPnH7pYv#7|g9^n3q~r0CjNXeVW~_6jxVHJ8$6V9n zCy2z0w6hJ~TjEe0XNLQ=hgCIma&x6C*GkoOeQuKbnLrmWxT@HHxWY*mPbMn|utF21 zlTww+yEt)FNb#+-#QVRpg8jRWa)JrV^PQ(!!Ogm7YuG~N^VFMj)7EncANGHLonoTP zPBN(|1AiDFcs(#S$=B=U@kyQWit*G1Af69nO-(cZrx0te{0n{Kg8z@upN-V4os(-p zuoU#l!%Cm=`8^^7v}_iYBFaavQ*@7UOGCi##+1pLNh4G868CA9M+<$hf2{&&aW6N^ zWJ?MvG!m~U(33``Kl}GIC@#U1E_;odMlrANL9jn-QT6)s8Siq#TIWB`8YWa?lh0o}t1U(X@WW0yERwz;Iyx&5t!Z zGKI>kW}0g8QR|B6qke{p3~^{;WpA&LyP%8^W&VSm2q%?OWFY0qr;t&N+lp%@^Aa~!gO{Xer|nNpyD5K zeNy0h5-c*lsrhAhu4b3`LY?2RAv)$`g5p^zE%?f8Vo*uD+?W z2F`!#H>-btRq_&x$!YA1$N+v_Z=5}jt2V1*u|i19_HpBY;B+*UvzTl$D`$ydP5`P8 z;Lyxlg->i+xO|Y@?4w9}63aFwA(G;lxZ)8^kb))z0%i485jsgTC;*~VnRDRRL92|I zM0m{0%)w0-cnPIl?tVe%8B+61I%ega$^CbsL^4t42GqxyWTTmiN|lh6AJ3doym1c+ z+kQBC==tS1?)_ai?s0O?a!~AYrTY56qhtls(N?kWNd12CFi@~e?<{|*Y4=Rs&<6MV z*(j}Frwn~FJ-a{RsmYB)k_l$OxGXziOz(e7dhpcWc|z_+Se!?pI$rHRtyJ^NAguI- z)?EsNtPy1vq05iz~+VignEnU?=iR!nl&0bQKc51SBJ)v`=(qer;KGr_( z#FLI0o1>1Ep~Lh~)0Y}{o|&f>WxyJmbPYhLCt;sSiewkHCm0TbR3m4Q#(00@ZWXuC ziej$I*^!ITUK7(ue^4b<(RGgBcdeRbYphJ&?a{D^#bfD*cRfA6&joJ#XmqW@5mdlA*C z5M*uS=bUe0*Z*h%&Xnvb@kjOb+N~bFJ2ZiqCB|vW-qH&1DpvS(ynNGU0MD=sS4HeM zjmm$C4EL+Zq#plCO(wf010M*%{r?4D%Iv})0f!&(M?{IEKAmpxk-l>FEd7ikSEvh$ zW^Sh`Qb7Utl$F0koaP1Dls>Y~21lB_9-Vh#>+_{QXttLio@O?eKa7-=hiW|eqEufp z>n(S(4%+LlO82C_eU;tg9CWLG5T`UgL1l(0W{y2b_3JVGRg+eh_<6YG3DWte3oe>u zSj*-a*&a}QX8-D}vD6cB#xC;6!)z2oRefMg18>JXd$53q|LnV?G5 zE_TI3%|7VE={yEpf0O@a4&C2IBd*faeb@swGH|BPY6+Zamf5gq1>q@)<79svz%zsK zm>;(aP;w*gyhx)h!2G1$IObgUl0(Upo|(`;fIE=J53&w+A5ldz^*BpYA(~Ppq?1k4 zBY9}h*C{t417>kSu=-C|DYtMfHAkFXn+<$j9%Jzy*LUYR#~R6xs7hsK*>-YX3grU1 z=ZP}NP3v={-%(V$thHuBJb%DOd4#Y|mgja|!HwPM^_z?>vweYlyXwS5t|%=dNc6(3;c*Ll%_{{Pb3CuRUXK~(NLXaD6bl%p7*UIK35V^n;3 zwYBjHD(ONi$QLp2I64pqIIMO0zOM4O61Jcrb3(#{DuN#MYhU+@ZNjCfWESuUfHRG< zt0v5@SJT~jzE=SzG_Vv@ut;Z{>|`PQ&`FWgHKDZ+rJZ}~ORQ5yC5{;uA*WJ}*qSAa z84u9lrUZ`&CUblf9aFRX+B?Qo?rA@^y<$5aT`tO#;i|YQ=0qIw;-qvNsTQ+!iZ+flQpY3@3G|`0d&J;rxC-yXEpRP2nDBoLok%&Z|_ClKV9rw;=Owb{XZB_sMQ0e~p#lPJy(^|p=DyH(vEOQ@T15y7 z0TNa1Vnky8o8SWKx6WjTP$TpEO}wz%Ue1G>9A*adpAtWTY9e z6x8^xh3UbL=@J(s;bHwUk&d|okl&I6cMaiX_9-tKXZP z%fX4d&=L^itj9u}2IU`sX(q$3=dZvEvo1DVWY0fDzcC3sU}v1Wa47wy zj)wgp^nwrwcs+`@q~4NRoO$-Tunf?OSNHUnT%Lbw4Bz&fhTp%uEHD^p3oU--%l`D; zF1{cIi&Fr1_HN?7+g;B{tk9AQ!eQxt?Gkp3e#WTiRJ46+4X|4PE}q(QV>OM?1v23E zLgkxh2d-?1)!^kboYk?G?k$y%*KQ2`(xb|-lgr-ykRKF;bjx@l<;7s!Zfh#m0;`{; z`>6gMY*`xQBKK$fOnZ%2y|bIROb-K!K^1T38C>zj$IN|*O=MRRgt&O%+~&jM>EV1Y zQ2V|Dj?mu=WsPQf(vR7-QuJDV6;zYfn_B8-Dh`ePx-dmIx}lcY$ei4M9gSSMx@D?d z9$b^C7! zbSsDe2S*W(eR*rzot?0KOa@?g)fU0c!+ra|`N*%33J%}Fa`P*=(>)(k;P{Cz{fz-t zlOFw4PQt^L|FCtT1{jwf-4J^Ys1|%oLC~3v;Nrrlt9L$934vR5XNvOQ5|iJ5s(LG8 zx~HE@*bb@3&1+UT`U~gX&XQwNsy(=zff-<27GZ;oG0w6-Z)F9K~mIQiTy{Z~(pw7U3BfAv_ydWpn9u?btqZs^^UcXLWaeXsu;V8q;*Y z+@>m+t(oy?nKQu(45l)il@kJIPFElP2&)C^go2#AxjS@MW=?3X`Y}I~yx_`yi;wwZ zq_R!<4T$lF{Mz6LoxA(p4MYL@ZnyqG6Yaijfz}M-(LH!gttq1udDBe(YNM^0n?0~y z<^5QWmm#5K!YY+%>itfp%#eG0n9iKH2vzy9&oE6F9n}Opm_U32;*PwqLyej~*o7W0 zch^5%MATiV+e#bY&K)pW|H9bf&Gkw8eG1b||3ts6i$92xG*S&_?2=)Ng!P-x%8|aB z>sP+jnmEZb1ny)3xH;fW3O>>fLb0u?4tvhP#$OkTN{wtJ^S7;Wh3N*v*5NAd)q+W< zs-oX}&mqMAW->3jt$GB#xNoBH^Xj|(rfJpE|KP@s3W%pmowku+82CH)PD~aR^3G;K z$ur;=Tr>sE1yB#mV5K^1+YBMz1NXfArb{}HwpGH8@G%W+=6yPtA;y~~*|wP}tv zmOWJc)1zjYRm%Q6NKEEbI2y@B=k6AqQ9fU0VP5fe;CrfRfAqe9Yh#-FOrlwHqWMe> zzV_9%!G`oidS7oFGk3vy1E@Hs9>+kkm6*kSYUBz`aQ!1N*S!j7pC#x{_DkChD$fO+ zJU7o*6Yb&HV4PimR{`0+pO4&(P;J1))J#VHYaKsi2JwQx9As!mq`rejMicK#stkqc zs`!6jtk0q{q-M&Qy%8UBX2wPV;AQbe$n>|shLL>MVXl^KpPRE96;sirvuj2p5`QLR z+?TWI($BQGe%Rp<7S(Clp%cu&__ehyap4-dayM0xk?lpixh^X9pu-ZchR2?4?ih{( z6Hc7Hie82wb&$Yek`&%$ueOQLM^g&w(>ZSwMiS(`e4!t#gs5gPefep=m(bs2_4t98 z;HBD}#TzX?-KKnRDEzCBK)9veC2{SPEmN_1Lv;9>JNM(Ma~n)_$X%|*4hvHE-3`f! zt!dm_3l)FR+C42&Dq?KEBJZMKxA&LWbT3JIXe&&2?cHC+6RXJ8j216APiVZxh&Phe z#ce9#7hL6%9*;ker{%npXhees4*1S~wbY`v8VQueH8`;R%S$)2siod?I{Kf8-ww$7 zK^x_T0-#XAw=sjiy~$P5rL8Be6n`NoCsjs34o*vpaduY?!YjbZ{`O%;(8G|KPZ|Nj zB8lzMA_WDh<7F5c6IURuK9~lx9YilQJB)Czl%J!t z*&2uLjoRVp$}qb7wbJY(Q-i?uG>(HQYfdB+bQ${ENzUs;jPrVk(<#u#9a^IpOy9Gv z`+m5HQ=IVL8HqbjZ*{>H0UAHggw&-bwzFXTXA~hL>7Tbs+U3{ZvYgR+4f-LSDfp9J zg@fYm-6nIl?iS0GF74(Lz1&Wk^;1QEMTibnMkK%c%`(j)+A@oDnR@l9RDQ?#*fr4n!d{sXe>=RKAoC8 zzV~PH-@{l8r&in&|J3At+;*2jNy^u2Vywv}Gc{nL+7(aD98MHyl~lCRi3`bIXYWi%39I>hdeStVS5@oWz%V)u zorkKD#l~>d4O+zkgE8rM(q>cI>Gzz0r|=F}rO8Qw`Pt&wSg4nZ)gCJ`sP(P zF`S%a*&7>p;Q&wt@yNz(V|P?B>o}9oL=+^28z=qpU%vkCaaC`67vHv4O`<~iFjE=4 z{1FR%H3I>bInl?>uO8^9x?nz8ADD1JnXTUV$xN6w*>n-1D(S9itpyuuv-~gv)Fi=f zG-Y!LSofp;iA>J(vX94W4&1Yp`)N-1WLUHV#&SLHxI=vdEz$5vQ zJh84$C2w44HT<84aOn)4iLpPmP1x2Dp@^EiQvE0SKMzM2#Mwx3 zTB^+>{BrHpzgF$E5>P70y!NfCR;)%3_7JoUz%ze`Di~7Kg2p$v@*V?q_lY&fH-3g+ z4Cffs7?_d_Qdx&$?h7h6E*!HzAgnMZT^L2acZpGv^8sagFCv)b=)@?>h%{-_OyP{X z*Hb(MJ_$Z3)j4B(g`>5)f0oa|BUkNHJK5>2vt!wyiTT-M#-w;gSwtK_|pXh|*2;&OpjcER;1} z+RR-P@{!C+S4<U;9#J0)5^3H2BJXZnTFM;Du+au9m`7@}#&fQ8jY%kj=7*5%8~MV#HSF zrPTbJm1N!#X~r_V90Bex<<+O+Z_+n<^{?Ki3M-RmsvXh4#alsps4>^pWG^0#OVB=t zcnM4$73!+8FWr`mjO3)0IO90gOnMN{sH2J#g+T31cd{eN^Lw)F^D%}sK}p@*%@8Wi zA|ejj7(0WfURor2P0qVQ1PEm14l&R6Nbi` zN;v;h3MyL~1fh7ya`9pP!k+O%7tH`wq5q?QGpMcrIx;NbacQj#l2`Q{{Qgz|{f8jP zB8AACWill74maQpKRUVonT7#))s7GTTyQrGzDh+1d3f^M&f?J%4!IsoOby4@Z&_;Z z10chjrmLGG(!~a<+i<&f>GcSOp&n1Z8nz=1 zgzwbM+)Ic3=+!&-1V1d9psMu}Z=!0e_% z)##sqA~;ppqRl-JJBZr}1XT9FuW6@QpM}=mz;ZJWm~7GRc+c%t4s2NNv{&AAxD!lG zPEF-==HUbo;|x94{+6ckTe-=}n$ra6g7=J@;iuQXF!*+}8GM|x9lfT-s;W0ae_H%g zZSjWbT^Q_eZI>Gt@O)aEg?Jf%FkX6a-!0?Wn+EyBdW_>2b;ivH_YxNUa04taG$kn4 zwoHj?Ctvp?*&Cx=(VUTiKOHf<80`#g*(=amlHrMqidT7;5BN=)i`bUJ)B|W=)1syM znbo(xVJhMxC%x>=Kljh4UqScJOuzEUSWL|@0%jIaj@^fe&mPE9*m<}CoO1Ab z{a(xNcyx9wUk6DWbBK=0KYa1)x%qk7^IjtHkJl-XYcLza4h zWF*skGJd9X)pq8Xy*S4X5VBYG`SkRt_*2U4Z$u`YVLwx_tLxNb@BFV~e+;Llj;}Xb z4nj~Q(x}Cu{P%7y{=P^%io1P?XT|va)Kd3<}8+x(R@4W%v!%)JIvRe!rZBOW|B&JT; zdu>xZuxuY-Y4o@3(hyV}Jj45@Gv z$tyZJ=fa^|0lH;Ve2E-K5eDGsJd{b2OvJ)kVq3Xa@7zZ=hq>(mgW0x&b?bC~@O4jz zmlqUbNqoOS|U+%blpKqbc69JFROR^97L!C321?+?lU zykYK)T{gF=eJ6(;w?#9l%(TM)bq0PpLCjd#&?@zuqh6s^<{?nY=~O#B!oAIWc{+Bh zpIR^VG3Ko6fuNqU_QkX>fobaJYdPKcv z@Bj7&bg1{?h5d>%AHG1qbLkU_oFUiO7+mou8#h|(KfVfLxq{)mO4~!<;*-HgT_2h~ zCBsSC31LcZGZlUdTyIzlCyqvUcs2WYyE7qoci!<1@p%e{T;a%0Lm^IqHho3qW!_&3 zGfWdS16-|uxaQ!~Bx_D}^oo<;GJ6#Mx}LYT@gNd}rO_&lMe;gij}Eem33YAy%v+wR zI>oJzeyem66-m@+DGG?~T;79qn4Kh|{tO*=9|&?n2gXLX7u(e`eaiv)?4Req4;7dz z6P?>@Ou6$-f8JCjx`c34zbf}$=Zi|I<^XFRv)yWsv|Ltj)~S317=ni51Ke6roU>?@ z2cC7dbfSW%Q(7$6hR56TxJCs8%W=rvo{3h=@vpzwAsC2DKPQnV0LLy`W7%9}&qU~n zeF!V8$?1Hx+q6)EZJ>`p3&;8S1HaMF-n%&}oq5ek4^BgSj z!4a6D1B}R5pwHBAwQ2Q<4q;Jb0F;;B@_Rm8+CZGG#%~Pq&*C)DTF=XJBhV zBTWDg_<8kIVdY;1nLnzGqP)2WFq6A)VblH>2 znD~^U6cKv(aBJqw;YOQj9L%jHCX*QKI`Nig<4lXsm={S?47a3(P~zF^WW=_aQoR?n z336_CRcod6n+?``3~~d!z(wT%<5l~7iEGVUn!XqYbjm(dkWkgBFH5ecCLhv`E8F*{Lt#>2@6GX z9@yoh7lvqoDS_E(SKn`lPL0Swe}`-ie}C9%iJLiou)cb*%zceQUN=r|*g(AQddMx2 z@FUAKhtW3GHPPwe>eqQYz0xbl6R%3pA5!`>D+|2h+-`zvTae4XcC`tkzUxf%AAv7} zHI{THCp*_0$4X`XAFkd!8tOOfA2;?TTeiwt5+zhZwy|W3LXstGBxGO5GGnbMdx^># zLiT+(MzSwsAKMtRuVbGXgZaMod7g8A&+i|{@kgigzVG|GU)O87?(v*0jfe<%XDx(3 z?xWo&#sf?X2|!oPOsI52?m$VVxu&N|*0Ud7zInZROU$dSx#yxpcu7%$eL(|huB5cn z=2Ut$)AOtQLB(s+sydv!vo|lk?67ZSs(~FAvMD3VWdpfl#=mDf3W)5iXpn|uRw|~f8qt2b#ytDb#1S2fSaFP zme2LfTr(%qb)2r^a&0ln6iIW?)(Q!PW^9D;(3we$S9&2dDM~HMHi)KKE7_s#;6X7j z9|?B6Ks_S{U0qKY3m0f?glrQSxCq+~?0|JML+4>p^5d)_$(hNQlqdaMA|Y}6o!LyK z=e5HSq&n28WEGnXKa)g)6s~%HzGAo2BU5KY4Oy6k(D|1QdaJL?Bi>Lcq z=O9=TbST_(gj{}5Y-)E>CC8hm0G9EhxxwUYcdb#6?=DKMH}5*v!{hDKuR##*`z<(m ziq6aRaMuk!Xpos`lZ-vDEA*6WBz6zY&)xYy$EkIN}OJB{cn>Fz4~k^UB6e-x#%%!TrfUj zsPN$ey_UG;1W4khC3 z%){M5+Z1CePRUJ&lYlpgz-F;Yn6Pgh7g&w%m5r;q@oUABXV)U1mIfPMg~2Z*Ui&5^ zodG`bzI5I`{H3Q2;U~23DHz)fQEWZ^I+uqTkm2Y*Y7$j)N<81Hq?q{6u@-Xq(Y z+oryWKx;gDA3YI$Ipt>NZdv%|lBcVn;gct=Au_@3k+V;t#}r-G9D_+cRb$j&Pgv5_ati!hW6e??T#c zB_Rs>8}DWr)BcgXlJUJgo868K3FGw(X!h$Wu{~p?y@c*JsAyy9f4(8hapkncjpH92 zGz{Go$qbQgdQ+h1tNW$q={Z-1C=KBa1-lPge?}?N7DS~%3zwhVlV|9mKsMYK?}KDW z-a9Ma#m=vb62BjRnA^@Hv&4u|>4Nw}AY$Y7B3!P(tzfknpr3P>xMU)ozfviX-;Xla z->yu@xv1)Id)4a6Yfo~ocEBu^o0D;_#e*qoOcGSg$Td5mX= zYCGFdxCq$eRB9jsbc=xHzXN;pA{}|093gK*=ty($H7O{6C#(fN{oubkR8bI$Vx-Y) zqmkhax83+6sed-+Sm=Ryi+QrWU!rOB`yoFmG&s1L9+!clB`K6k*KAJMJC8Ri$uct- zxpaQgl>ZybOhPz~pk9@{^C9|_q+K2xa5#obi2V*pc5Gekf;;;OoA376+%I}D zrG{kd$-@pH+?*hD<;bLkFQO^_owC4-08LY+-^#a1j!zouDV1@csc}7mzgIf8`oiGu z4*jz8%@81=;TAD)SxazEP*g(tHwSfx%yad{Z*Lg?XVa*i7mu;`vn`?krdz98H$NwC z1w^gQko?xOtu0Z^1#F4?vio%-2D9SghJa0CSR-q7l1prz?!@YnVvia|SQQKu5-Nfr z*HAt1OgUHU#&2DILk_}BmyhGdR83{j{qe1$m4TZ)O|MT6H&C`iS?YK@v&*9;7Tor{ z#>9AZwP2rJ^h^j=g|N02d7!m}-fk=57K5$?go)pxZ1rO8ib=(_zL5`@IfIbLEx%&VN*>FDG;}YDrPBs>P&ksHk3paM7g2Mej!4a%J{L&XxE+=tker zz|3ag5ide8<1AD?`2Aj+v3SZSAvtr(>zk#Pa7yW)SjnWl+e_LUnkm#vcPB%K+CP8f zwHX;WQn@+$EjXQZSrhd{%4k2@vSsD;=R~=EOa0@rKx|OaOcO)(t;GAbXXiM0Z$I~8 z2ji4;&5tw%1_^HSnUWi{)oWyklS3Y)43osIqS*>=;|#w`1vyEGlIF{=<4XC7Ug;U4 zfgzmLy*Be1Yt)E+%w*q}4$@PxTT5X>4AGUL8i-D}P7Z|Tc>2-)o2xvg!o~lSv~dtkqz2+ue45M#OH;6{n{3C~ zQ#!ler1qH>)!J~^HIso8f3MEb$38IS89rh8eQ(qi$^zKJ&bJM|xshki(`Z@7Mu*kVuO!f^sPy)4v&wOs zWo$k6e!SJfE6q-ZxYE$t7OO%sOR?2TFR16w7;^m1y@FF{36JEK+CPr&T46}q^3Sf1 zEM@Kh>vZiu)~TMn=1@W6fcR0_2d+`ZCoZF~!7?RjFv}%`J(7S`!j=7q1|hr&8T(@$ z;}0K`r6=%U50vC;SgUGo#rM+hF!ty3z`qHFnZA!#m;}6!8wtvJh(*AYiflmR`go_Q zvC#p{x4=t zZc{O?=^eGg?<)sFaVPkJG^cC{SpCM{8c&Jq;G|DB4i->WT==N2k}VOVI2;(U&~!S< zey}~nv3v3^sh3}BD(zomO80{dq|jS6>Q&bD8KY1uOjycXc$|3b(e`@T7d2%ScFWpq z(1{Wn=4x;?BMJCm+_%Xrw^kSk+$zccs4Hc@n*uHNjt@(P3W0dpq1u0lRgx;KXa&}M zZ!axrzq;VL?4N+y5(&=3w`)%0E*JU)k?cQY`+Cc^ z2IQQq!yUZ8<#7}Ew^c)7{@1#WFlkQleDmHP4}z?xGb`D06y3g{p#b0Yb#~&vtaGRc zdzTxTQe7Zy#!uT~lsi$1=tkpQ|-J_;m2kJfua+p!60zGE0@TF54cBTyZ`Y5 zb@V%s50;B^-Xz*N0+wYgcP`x}tsYo|KgNKWq_3Wj{dC|my~qlNZY=!Tv_<6hnRDs* z0LfK}tCyI;C3c4;UC7et0MI1^!9EAhB8U@4xQusvT2mVCdmDkwrY_&QrabhgQ=>SH z+7z{a$bU8y+L^mW`NLnA;boJ{6Xe+hc9>UauH*~r`jHR_a~!^x0B}DwmNwH83lnql zw3gGp$Ely?la#$`EeFruMcu=hVj7jvu{Uaoo}J7x8JVjd(*xixZOl8g%8sH@M1;f4 zrLc~V%bV^>i?^LmJU$ZM<+AR`!Xlgk|J^$kx8gBm;GceX0RqOy_EE`C2f*aycP1}y zNwU2nQ4NTQO^HemN`NgDm`T7a1Z((E|7(KSy{YhxZ@KFIe(3b706wY>$NzjM_VijM zhxH7>jBnS)MQ}^b$)I9e)7DbLf zF*5J$EeFzFSk*rQ^8Uc=gU@s{@)jX|$F8v+(*|j*qrR8rohZP>Y?G1@h;f|&3kltW zz7f$R0rAs6s9<;>z8BjVP@l}|%zYr>x1~|lxMMLzu!iX8D6A|kC#*Bq1xox0gja4pL4enIhD5W&I)66=geQl8`W2N z^c^l@(+2-%Z%qJui!Qk3RtT~oj((2esD6AB(5aN6=NZq^t>Dinaj=Lsnrm`99D78+ zbU1qN=aX2x7SII@^P~RKjyzEaV+3SFT=e?tq&|Xb2b{mD(dKn2LmhBEYg@oMyBjRl z8|F^GtxfM99JoxHSZqFl9v$$s`1fBl!5hN-5SjW$lY$`3ZM2qg(>Ug%`V)@&D|w**0tkjXXCpUI^| zm}xZ73Mf~@Qnfan#ERxrhhpTGbXBOZH@Cul2{!laSH4?pU8<64S( zW*uWMAi~RcD$YCg7F_M(?XI!7wh8bbCx1y*+X_0z_uQTJL&)s zXPAWf?s?{3Plguloc4Z+$h|N(p_2S~hT)p)eVG2V`_8O|Xz-ExpT=Z!z;(D{QRwpD zw<=P8NxrimQQfxxne=D>nb8k(pnF=Hk9|P=#(&3ta=c5`Ax7buGVtIPUP0dcsc#W5 zW>*BX^F2knr!8mf-@lRd~*@q zuqW9Xq+c$!PJoaHCY{8dhlWr0e~K;SgplDk-1t8Ud8Ulek#_+G;I>zRH-}!->ZJIE zLom|#%{8H08H5Er*B1k1OAhmm+*__~D2I9Zm9?oqMCXOAfC_1@j}cyyJFO7VUqIh! zG^eHgILK`8j~#fHh1x22Cc`%BTjS<)rD?y5W;E8E8ld3ptZS!pzlkQ-{=%5p+=8V6 z;mUyt{{VJ-z3d!2L~_IjcO2~Ivff?=d zXp+In+>GTx4X!zL3<2TSP9Ds=SMJ}bxF?S>?iW;>aw86}2N^T`Wh>p59l6qS7ex^G_4aa9+GqKQYg6A{7I zUdOW!$4v`u9u@r`u2wNux1V0<&U~(|yGi>elRBUWP>|wp3zTYA-+Ch;`|Hxt=5$IepHQZHK^Kw)fN4u(d>syoqKAd+9EPKisrK(M++K_)5$zxb3QCk=8qy=+<{h!bt#QARQ>R#trCu=)p;=2 z*M5|RKA$+FN)B`#E?e*AzCTW*-c@N4?-hd1vyk9{LY|4^2mI=A;fhQoaa)%Y4|=># zUv=uu5dOPzcK^!YMQsrA@BGW!C5tLQONrwa<61EjLg+PQ$7KEr9fb zKNvS!wm*UZMzFe#G@-ivKI(jZxyvN8DmvpB)94GnM-bCv2jLNZ3CS|1s|x#r!GRF& z(O-u23`VXG_ose+J(}h;-}|dNvL3q6oo%(!b|-Ms$WX$Hd`U+rds0!7yffJ4_=)u&9myVNyk^nG@_V;296k zY>?1SgW)q9)VhgTYZh~^n%#|}QS8+jibB6@0Y4X4!J7>K0w83f>BP-1KK%7FQ?hMp zDXHPLXhTbSdfrBF;lT8mSg1^Z@m<+TgL-OVbD&+K`U-Ej|c$#=wAqS@bq-ig-mM*Qw_MLZ;G9Y`GGT z9wrNl&ZkXoTyV$Ycbp9$J!#dH;SV>%oN%}Ww{SA>JGcobWcTu)tTNAdzOlHlJ&RCF ztK6IpMkt>Q-)w)1J#zf|po}B7;5n!K(W|eKM;E&vt?mrsCTc_};;bep^J??MECO*0 z?|v035B4}H<7d`_M)d_z4y+;!`p}Gw=A+O|xYB)`WfQDv%G>3eSTE&60l}$FKdf` zO!EgHSqOA7;0MZ~{wpxoixniXLcY;4AKmk8lTwn;?s+MR0NfmBRSElLtH>??2QOy5 zVWThY?m7;7I7oTtez+&`Eb9TFRfaFT@Bb5%H`;EYcxA4pHmH3}cue|E;C^hgh?U&r zViR_vj(mG{2r(**&y|8D&wK5*mHDnpd-8#K-EUi_9t-2&RNMl-ReR3Q>s2wILDJWiLLQ;Ew&T>F#ucA z9a-*U{62Kg3LV6w{qy<{)GB}Z;8ZwAT*e%)l3QZmG!P*Ij@&dG=S(9x-r9xz>z@t7 z^}7FnyExV8)Ap7O0Dz)oQDf({!`V#%fxzh_-W#aEIuW0No>*sL{W!`Vx_ML)hW5;H z#gqBP4++m%W8-VMebMuK??nEyoPqdFAPpgaA6ThzfyVdy-Zny~o=J|>F08FhdpZgc zreo9)UZXO?0~#?6hmtO<=x-AN1W!aG>*_GLD*#P(>f5Zvy0kfswg&HwQ%xeoj+ z!bUaV6l=ZuXw+vb)ASzJDw#cmJgM1g8QuTM6gmDV1V&k}Ql~%b!&HV6bftynl7WLU zNV)I8#mCMI+GOh3lZ&v?JF@b-6Rnyss$I)>MEnT#PDYKuXbx43CvY@5eJ z`z!ea1^@vb>!#0FdgSyTki{1Aq}Heh*vjJ4%Bg{y)G?Lv%5%{e3Yw7Q76Kc0|>rtf+GV+^2fSx>%C^K%-1aY3#b4mmj`GGB@! zhUu>xiQ63vp7$0DKEQg?hyq3s%RGb5e{y`LJ1~V{_W!P;hyYJ!|L)e#->>D=2)4xY z81N?L^@_AZ0GRsPHo9Inacd)Kae-#9kod&mWqFrxDGg(9h9EN}e`PObk(1AL!tN2` zo6tNRTtm*&LDSDZP?=O%s8H{ul7>~P`}XMOoW4xBX3e4hYBaKSX)jhz6av`KMJIqu zfEe_8;7~x5oGYZ!e`QNn#{x75&O{zxOmIa?rZzXH{uGD`NWUq6O~L%2k+BgrXFk4A zay8#oKQSO@=HQ<00~F2r;+r1d8Y6fYp;jp+Y*z6;4OBd6)Y16gp1lODEHZ;3i}93I zs^?NKAwtQNv#wC8CmAtS9C*)4BHgfWqMcOcDUXN9N63q^CbHF?gAo21?+db$L@N>087e=M7WF>A7Js+ z;h+&)l3k{9d6T)3@MW;-_2tI|J4vu<*O_?Oehe82*p>S_^wOW%(jzukzfxZQE)-w}QJTdB|L zAgFdWz-fjP>^yPj0HHeOJ+xGP!tz^`?_%BR{1NN+X2Tk5SgL??%#24?H!F4n z#U+cZk0m zK7by)m#`)othayE7Dc9KH8Z*x2l)}yM?pdhB<)tpYgkrq`1w(d9Lk@@Ne2Ucwdl`k zjQhW)QuuVMM5|<)N=W`~5RJpXrszDOSCI`EbXtILL#5aEs`JKD%|PHq{6NrV!`5^y za`QWKD`V^KQZ3Atlhx!5 zy2BA=447|{==WnsCcZ5-98H^*CV7?VyyaMV;cYOD`bec4F11WN%I(SCcQs7o+)R4m ziN!dFq0ANh06a@^0WQ_;?~Y=BWrp+-PnV+V`|*i?T+IJWC7a?u+$C^sf6wy;2D04v zZl<$If9FbY4{x!@*w=Ra4E&Tc(D+^MJGB-sl@p7BUOsSgj%uZ~{naZVeo`7>i)x}d zcjANpmm8u!2Xzo&zUIpZ=mzTN0$6rh@-^T4a+;70s!*?SyMu-*$kjlW=w#mtgEgg@ z2mX25tAP|jR)-mPN$o%iA|hl@AYc5>4Aqi~ewr6BNw%o{{W?@bpI=<5X*5~HPhQo^ zb7DoRH}VQ1?!=~^kQG-Css=hZ0|8ouCikyie;SYpoO9qfwG?-`mQ~W2uS&C@k(c(5 z8$f=Ccr?26oM~RN%2V|iy_u0}dkL5Uvk=X%G>d=`!p35Jxu$ViJ87_bz_hRCufNz( zgsK$=5B8mwzpPjGmA_(fH1U2|$!C=8Tq2sjAfDscXcJmXPKJdM_0B6dgnJQQDKi!}N zurSR^0BKZnr8iSQZpFvbFG_0(tJ!;~G&SQLtbyFv0@bK3y2^cL>fQRMUPao(X?++m zR{w1tGrX7QCph@^BCM{VNbnHd;Q2wI)MXVgyahB=1(|c~fbf}JKDwhcMuL-xmAu4P zv2Lga`0j#}r`>54V7qc6Jj@K#Ux{wAzZ#t^LfBO6U^~Ff+#Nem7ekd=xjC;|bctt< zzb`2na7}U7H_5DbvXFSu7`R04U^RPWGAB=D?pfMSPjK++?j*;+>_;sdo6od-&^p(^ zc=4ws&vdBlf*q8rhd92}C~$Ra=@b}&VGO=f#r7X}DZ)ZIXZi?0%*lY^b>8-Yd|F(7 zpe}$FE$P#g9$aLO9PeJ= zm>u)Rx43}{4vc{mK_KZu^2ScYc%ONwZ&b(*_q^XN_x&RhsL@(U8=_R;!o{Oi{90VJ zj*HpZ-E}&l(HhLde$?vq4RSwOnDVS5#-u(Xe6dJ^br;x?6UGmODdBtrj8`v0YbD&& z$k&fd64o`suy84=rB66TKr$@h%gQ)42SJOl8pY?fj{@aaR6xwtv40gJ_nh?)(xgGX zculbPyXnKdjLyO9Wd)4oKQBr=T72DITt#6H0mSpWI|l&~k4y8({ooL1;gFdbnJv)@ z;Nyi$8IbW4P8|MM&Fng7q?~}|+M67@QlRWA8gC_#w$EhGfeqhtex{#2>=l?1cKjLp z3m@=6cqX&U%c`YZt$JD-2RGjx28t?}&;MNLLUoUNc&dZA5YxVkJP7+dF(kqMdZDWf zbAzJeRO?6>cwCi;f9`lW_p;!i>2-R=B>01~#wcH#*z9eHo%r?m3X#A6IU~$Jv?xN-+ybJH4wIYB2!ZNfls>9q1RJM99nMxp)=; zBpfiwGQ{d_abpd05w_Z0>+YnzN*S=xyrsO0W5eXVJlx{ zIpVXg>BNY8BI;H07v~@7r7b7vzB&3^Vny8C$+4iEJh0>}?D#<$wW(ZuZZaR6C9wgByXqM4{VX+^`3-@|Mdcp<2Unj&({ZNrKo^CdEo6x zoH4XU9&=2{@2az>;A9`BKSn)@;0;Yohy3sh&-U`lC!a=HlH;+MhkFE)s%N1W{idAv z-*hCC&j<9J=latth2-<_$Qy%3(^C>V(&OSCc*KUrC>1zh;oibdP@G56(Hkj5u`I!8G zZq}6cZ)e}5I6A~gnB`O)a3vl*`>D=lSQs?;ewMmTI=*IW(L!XK_-(2ZpHz+%94`3q1~vOhf%UHVsDsDQ9= zZ^VosJ#qxWH{kc@nafu9I-@U4^sqXj4A2dt{NAs-ic>#x_R`X>*D>#RI?p%p^ z2?EfHF(-S%cKBbFr|ZMWngiY&!A)tsidu@lKEJ5(wx(=GC+*8-y|mcZ0zq5BpXG?= zhQMVWQF&Z*RW9#u;YQ%H24ClQk_DMUsLZ^g;5d-lli~y&3~8x3h;ts14^Coy*rYot z=fd|8wfR#;M8p?;D;ki@Bd7GbWc42UjcrDj}Y?VG+XBe|^|o+-hP6 z&2@9zQiQhQI?I#9Iz^hmVsADU(cnNgiwR!wC6)UL#Q7Os=u~5%9a6LE)2X{p5>9u} zj=nlGZrP&9=ReiK0?69l{dH##_79dTK%pH4Yp3NZ!iYJKOBAY3@ zmezUg+DU3_KR$(K>qx#IIJ8ikiYZzW}~3B8n{bhF%Tw*33IB zyQDDL?Cb@u4z@_tuXyKzrbc(oB$(|V;*R940I_w`yW{!Lnq83J)S$8BWP9{hWeitm z2%umvAnl%lS3oi@WS~1y+(Y7X;8b|U+=cLMBYJaAx``+M4f&?Ni!=e|NxUT-v zSh)5xMO>N$n3&nl;Kg_DB!X3Sw9d0R7xxT8o5A6)^%iT#=1fS@_)VhmF5_7za6y*UTo z47ig4$QHiY=~(TuGJB-*cN0kKlY<>7CQAuF9o0Mc?Q3|0G~PuL)6@LRpOycp-AAw? z7@+pNGF*)eV-|{A8R6Eo4DRSE5J265I^kWA=^KD+zS#|2J~7#=fu9SkBCNq!PiqG5 zY3L_5$osNDAxKFgV;J@*^;#avmf)g#*tHJH-`kSjoueH5@ zK+~Yy#v?`3m&S-J!(yq*LKm24#9w4N)ny|x<{_f(DSSVXgfeNL2PZC@Sk$Y zADrjc($;-cWw#EcPdJC4DZj|zEWCRP=GqF%a>?0G*Zk{#P5IPtxPuhrKML)cEBoJ1 zShsnKy!%_lM`jOfKIf-*5DOCyuWFRz(}e2EHaZY*~?ITcBQZw&_dbw-C)d7}Cl3&g0|b#BEbN*-sM zR3ASmbCUOk9bfoV*%m@x9)cn87~vl zK7x%uc0_WcY)A$EB0*DW69j^!)?_W)P5TR~d%Mkj8*8L`>YEc$Ij{4qG08}q;GgRv zu(3<*I*jTs9iLL|sRCyy=s5ra+8uRf!21_-yv8;$HFl`{gFlK4a+RB+2yDK|X1+(5 z=Tw_!*t)bx96KF$Ihr|aeK<}+b$07v)*%(#i}zx822A~Ttsz;4anG9;|6Judi7Z&z z7q;CcUci4jSh4;iVOHG1j%c#AGI=8b1l8xmQ~VmcCy1$}z*waH3TJ*yoRbf|7p1)B zAXp*T{~6X$bLja1y&|ojT;G^!mOia7PYWlGvusCC)ew1vU*HECs`hG;m8pU0Ubs(m zC>QJ(SZFJpokhH}i3nZ`?!2QQ19eD$QL{K1@zM9(=~BcsX`qgIpH_P> zQ5s1%{5mbSqY6Tw$m_aY(jH^`_4oytk)q|w`&uLnq-p5N{wv^ja|s!Ez9vWOF>o>N zNCW)-MYm9>>GhWD{S%c8?J{ERXXr-#B2V5-=jYdlz^B-XU?TOazB3kL5P^xt=p@o6 z5Tco$65?mo?_T=obW~dehRNw#xUL@)ec8<#^C!)Lw-=xFlXW$$1DUiT37| zQ$H{_Cl?+O-H#4x)XxA|fcKibxD&{n)D#=EatX-zVmBT22sz4wTtnp(Lycwk^2L(x zdoA%DT&}&lJjRMZ-L&G7fjo{Wa0${tc&YMR8F6Sn*Sjk#@1P!RI4$n*wB^OJIn`i; zzG6}rPGAMZ^!LTgzUh5`WcG(td#iawiz0l~C;LxZnlS2kmI}8y@*Z0uULLkGB^c_; zpC89=hgJ2!$TDjS%|+!yBq$?|!15=Kr57Yys`l>LYa6;uiNW`gii)2J*W z9$t6+RmZ)}!t7^kU?wQmis-AYm9 zB*I}#?bb|JZcVMq$!RLq@~Rd7BZQ{sNL)P_u0{WRSS)mLDI zT9NL$TF;^QA?6Ax{Tm9HZ1>9Kl1>l;5)04*ZpfUYbQ*d*Jd%kkbaM(SSuimmEbhB( zBebn6D}S`VDcDE`hoL|DHAB2vZG}(md5wPBz0z4SlS`6Jrr1>2v1oXk)d;PhSgKFi zHxF^uc*o~f}BUbOoll-#iSt8Zk*eeSodyk?W4a1Ep9!yOgJBf%BnnMsdq49sY! z!UL|u2o+29^);&%5B5dYyPc|h*9ycbvU=YPkyDgW1wm_OBd4_f`6FrRuU`zYs_?&T z`BjOtci8AJu8Kn>&79t1!{;P;GmXZNeGJusnfyelisj9rql}+b`xtVcHQ`34fHeD` zS?&qZb&UA6$h2H<$}d?V2eUc2SylS(8UoxaneKCU8hUc{iRbqI&h>B2UcG@>=ig`B z{>*%D?(x`VpGM$)Gca+WN{usSo`u;@d6mhmF$xt3C^!Xa zEQ(O?%vZqueRwX+Es6G$fxUd8M&aI*BE=JpBd`GL*#@7D#N10c_5)L1q68g~VhG89 z{lZ=U%Oa?UcvUKfNS@uL-o(W5G4>p}7e6A8tko-zA!=1_SK_$o z;evJRarf%Rg*nLr0Zhgg{UxPHrdOX`DD&^>OH>lTzTHtD)i-Ti*Qj-xy71426mZW5*jZizGqxEvRr>4C`)1wdArn%CmzeDwX+_y+qVS zR0y1PbYosV=G(T^vU%QyMp@Tl~5 z%`{6^rIn-M;N?@Ty&JZ=m~O{h&!atm?=!p1NN>_w5^}yu_Kw|(b5r#?+wIHuc{AKj zIA3+Tjb`m9h6=coaB~=Ux!v2)0zI`qT;7)5ou9+A?uH;$cK1C{7v}o8G5|wz(4Bh^ z0Owds(?gn;!=RmeZhn&+FKi$IPm&HSC^nAOc8;-PO_rILu4(8+6n8zBfnU&7G;@U@ z19@k~D(AWHa(|s*_$WzU!wI=saR|#IE$*g))I*y$%yu3Jvb0J6(Y-7 z!rX|MT{RMUN;PMSljMp#k}1@@2?Qqka9SY zOxT&8pzC;((0H*0FUu>Sm+@>HK`9TWY|d97volJF27J}^sa9Q}HLMD%WNUH)wthz7 zkxbmdNAeElteBxT!~OzTttogrJGtpMI9)qnuVn-_&ot*4O-#Qnv7A3Sh^jAdiBywO z_4&5d81%5`cK6}XNQIV1<;g1WwsJHdsxA0(eljn0y!vWy)*rjm5%U<9)NQF3-5a=c z&d}0+3v5HCqy0>9=m}{f7gI1q z2?YivGI1VIlOPsWTkYA#^f->4Hf69*LJh&b_LpST>78b`t=Gzx$AVB|A zkkl?*F~dI8FE#VndXSANTI@p-}xl%qnJQI9r2N-zu@ zMs$wymKk{qg4S(w@+JQwKW5JApOZ&BN5iFmYm1giHVaW>q_dVwvwAGz z0(13&1$Lxv98a#JOqXA07JHTPtQaCMz*BgY?}VcQh(u-L;}$&%_4?l9t4|KT8<gciED8v4} zIx}WX#^r_c2D6jE zQts4(=0o9Ho0Db!o%tABG0ha2v>C>HP}Y0*>P7M`n4E1Si=A ziRYXaXTBY>1oN7UPf-)nT`euoR*Bn-M$cr9?&n8ju6aca31K2 zSI6;9UckJ+ywj0R$y9W228-=9%4SSeOph?g((c+?`NNnl#Q(d};}-iEgT5yX@)580ov3g8%l|6@(&nazDTD4x(7aa{f9o5aJq^e&HvwN=dE!{VI&oqz4DWYyGw4ZL-O7wp%|jMMb7Di) zuA1Sa*~!-{K3VwgtzDLQge(2;$T48&#3_klK^pYeV)cPr*8JIB{QaY0`4?tOii+zv$C@4<<|R6 z{qbUQt7}82!-}hso|O!XAqtg^?Pp@XL>%%Q=Pt%dC6g&8<~0}|4B-!&`xp^@$LS^9 zUah?yaz3pF7dD5U9-F_I>NEeqVSQedlncmC(GP|4$eKD=R4TjCPYbN+PG(7(4=(Ja zb!ZqJ#0aC`s)Y`jJtR5&393*XFbg z^KAX|dvq>i==26FB8`c+uGzJSPfp@V3dSuX*24+@n@grS?e9Hh)}z`p-`cVU(o&Md z?HIx4FP9K`#~v<~WgpVWMxK#r>7v=bzb6j|ezpxu$trdGF755E*8G zc@E8e<9F@4mk7sqgi$twf(}MSEknY(aFpkbr-FE}JWI`=XJxhiWN=%jAAA;Z`4Omh z#43Miy-8>v*$zMKAVGg_Nb@u}ZspylG%~Q_(BB*n5!t@VD-+zU0hSXK3N!$mu%@ao z2#qIGU|jrA0=x#KF;v9ER@+ZcX^6Oh=(WzH7L6G~jfP%U23%8gB2R>xkM{pE=dcLQ zk!tTTvD0Owk)5Hp)rVv{GM)ic>oZE|>)()X?G3EyG(AZ1%1D`TY=@LoltZ%m2O9FF zgYU1U_-}u=V6F)ttG-w-5j92nT!hv6Iooniq?FftkV$&gCu#DiH=Qoq3p93DUc}vX z!(gzon|0@edf>dEDKFn*S)F^ie01F{Mj1CJo9(XGrg8~=;OZz8w)SdlHq)C|O*X6S z=+BKAqehy)XgYE^ncL5}wnS@H4{e_B_IzaCnck+#N+WWkLj$>)bg7!Fna;o!^voo} zCw#fZlFhl`I*{c!ooIpOch95gAb!$Y2#x^B42 z5@IBsKJ|WnpP$VIHbbaRG~YU=^J&hdnBCriYA+H>yaL~~D}M;PQ?Q@k2+md~uK-D6E+dA2(N4Hi;Cy5q<1Rdb83`4or(3ekS_zn;+aBPn}4l zA9h;sd(-WNUzo#~cytyeMw0kzkO-m^TrKsq-$dQ`L_PPN^BuIWNB_0gWK3FXl_>JJ;-_OUH?$ZpE{b>CK%2JXu&36_^Pr64)YDUX&AK+q4_v|DTzc7FQkjIB=a5n0&8til3|q)6fGd~m z7Dx@2Q}!kDRoEQmoaDvRlHxDV<^9(s4arCc*z&LCTiTIcax$H5F7)#W((l^Qi?=ds zHwF>K<5hf%>)G9FKBD7Gug6!6RH|7;oEGRuWybFEiQIWnOS6ulhsyNY>A}oE=!z~_ z<=xB7*Y)|YKv56=T7ODvD;k|jAN%M3QCK5J^&dq`VI+~C)&UFRJ-CR$#*6+9G@@$%UTzfs2H z2jNfhYG3xQrQsbr-EOj^Tsv?h9`X&EFXI57TAb(4s*)8uC*hSCrp(&{G}S$PR(yoa z4)kf+KqN`Z-}T;Z8{CT{4+DFujBS#c)>sSQkzl?32a3YL+2 z=Va!U8VEc7%^fMJ_v4z=v=JP{V`25a*t|K~+hxrX_lbGlLb5f3+ftP3U_%$E$#+D5@L5tp8oBiIRWedjFXGZ7IJB5UPzd?Z=}x}D$BV=pEJ}7g ziTCfw$Y^Ws51mne;48cS9K3(9ct?g}#wdGua#m4h`x>9*zaZldqCW@Pb_L_`vNw^lk0baD|~ zdcQBw8Cn`CkrY%?kXBkLMd@yol5QAaXcPniQ4j%X=@_JQDCw3MdI;&5A%_~c2S2~> zy_bJ^m}d@Wzk9E}_FDU`IyP?J>Tl_u49gziPHCPMWfpwXKg{L;iP8$Hnr>!SzU&Pj z`;I{QgZF!v(`KlHs1=gBP`H6K7ACl8tN3dz#;9}`?k+XG6Pg&=e3TXV()@f~`gNmM zQ+Z^N_hu^lx@7gUT&#M4CQRqi8*W&l^0gnsD~juApzny@04^}+ASa_V$#(;eVrzcQ zUJ8cmt%_+htA9YsYU4LB^xLZe<`*<0L8q#%^&8ZFcavHkSb{QI5VARyn4K%!J$wQA zmvE~>ZsWvnt|t&&6{^Ew4n9$u=MRwZTvzP*XV9dPW|4^U-(BQ~5tShw)pRkYt-?|b zdmjb&xt9v*(_rPs^*1ntK536=7IzbVU#n@uJ@#1G`$1a5b!L)G8opIRwD4XCtj&UJ zy{66EPk2t#T4RI1a^F_wNa5QYbJb7nHBy3G=%fWI-{zlp zZTJYEs(HmY^_&#YMi5{Z;@f;yj2I4Ex7S~KpH!F}=yY!|QSRKuJsp7NFV+AUFqpQk zNKOqGa<@0wkVC=q$*M(A*@Qehg;dCy-Sr^tw{4xOAFFW!EYY12dOurT{G1LqckhUy z@N^xb{-*`d1h3?uT=7`D(|>t;(~dm$h?6y!P)rQ+8%wS8*n78A?l>m<9`>abv z!KcB)=}rPW~AB z=ge!I&x{Of8za}m3pV%hrx@(FRU==J8>R;uc}(xEn~YgJM0nf%t@2u_jCB7s;qVr0 z%%GXkwvYyfv)=l#oVMt*3|NP@Xc$)x>?p>iKWA4WvL*><*ki!RtH!=6WD)cubBwo> zmHhR`%zFZ0XlNF2`?Kh{z`45~tr_a)V5q5Vu=;tKC=HCHOeGD>O6hh=p+IW*mk`Y< z-f=uDtwBty{Cu;E%hmINqZlJQ>PoWl!!Y)*Fn$RLA`L+yTV&6Vw>jAtVixPon*9vQ z*$ye9t>_mgG4erSd>JQV*)yMLCE2CpQJ$=`jq8@~CfB}k_8AWk7*f?^0-fiADBir&R`r&sB1oC9x4jQN0>h-W3qC^SaPkwW- zO7g$X0$>B6RjP58K#Sr(W}+?vgH#lXzYa=-c=olFVK2?PlN8cDcwSM!e&+P)*J<8gt+ixizFl&^V*-oo$qBr__hjJ`W2y01Vl~Cw)0IJu^GE0M zvoWoM%x&FK_Oa9ir{Is$GM}B3DG;&rXNcQD{$?o9mU zm#W=)#5dJ)XZyn=NOaEu=6JkXqZjn#`*#McC)e*4K|+??f!HHjKEsOpuQGz1f7~?KA(we_Pe71A zmm|43>_%yeJ|^x`W!!p-3OUq|1xz1%rRznlUAe*zXv%WPB$~^x_mJd8bBsmAbd0k^4ds{JWRfj90Z^ z^!L}pz%B1?UD@6-!})6}qx3!Sp#lhCVYp%%LiN7W9$NE{28j@O0! z9Zu4UNzKMq%adA7s|PRadPScMmYh^B8(M%eXp7ua+h{C6E@hOsrxuM7=C#?u{zETL zPXyEw?M;I+D8y)>RuPGL3e3bGTvZu}I%!Fc+wYBeYv1KFWURsI%oJg~WvhD~B5ipu z7-e=K0iDf@Wb=DaLB!5#VCnn%sji@}yFXVf*OX)v&TzJ-+yvv2~ zKA0 zN0sFN*u(3*xb&+H9!}85o~t|xUzHB=2tC3(l5N~n1&A6P1dXV{Z-co*kK zTN#8V_Jvc<#bl8>`r<0L4zA@vT8v~xd@G2zVe)(tLe8s^Agg#`s|;i|W*!e#rGJ_2 z7LeJRfXp_r9csJBbxNLWoLY=2Q`C8OjVcN5^k7IDW(jxl3u;}b%bYXk3Thn6Rm}Pf zX?EyOyxc3oF`hSGdWU^NBhh5*@pE%X)Z@u`2QOHeW?apMV{2xwO(`)4#uTg<-@@hcE@;f>7&XJ`jJV|P+L^~PO7WUS#H&CPwdkmJ>T_{z|UINbcCwpdR4DzXu2)VgLI**@BarX;C841sgU_r|+D=+;wV^=K~Zv~x~ z?!9K6e(czlfFx)KEkHXNTGwmy?;WmhFNl&XB%+?bl;UuiV+rXYti|7*O7a9R3?kcW z&-`0yS*rqDi4}RNO34WO#K}#ekD{!`6ua5qxOY<3-#9YT^rhlEAbiL^QL~=&_+EEc8HMQn8cz`*6{h zL`{^)+W9K`GHmAWau-O7}p`Ls0T_ zR@;^Z+LWT&n(kseVxq^t63%rnM}(~2I2%gDMvxV}Bcv#4_sMyf6)Q?PlE3~14ApCv zbZxxpQ8H+Iwm}PhGwG^Q6pES}6>@I86Nd_E+P7>+ytXU=j*E@O$=ju7@FOrse>up! zd6U%P%)o=>e9^?0DqeW+GX@#6VVZCG&|HLc>TW7PJ7UQfCQ!KP{dPs%VvJ3rx>++h zi!YuKWk}vqd2H#|39j~LRq%rHs`|f_ohMrT^Jc0~^!?!^H$x)ZE0nCP2T``bZg{B) zK%E+OGy>j*Mm0(hOE3Lm${21@H`#9~5R*Ch$NZpql8Y&6t86@)|rfS;lxXoJgiV}A}ODDcH@s$Y9W#y zYo8+X4ijVATD=RGB%kT=`0@IjPe*mO81f&6qN{(V-QP?9>G@ZNOPO(*#h?ncGCj zuoyHNCVn01i-jw9wy##G0-%WotEP!Q%XP(r4#7llA%~(s(LKBnu8nK0JU4}ir{JDO z&eA{Q_7+`@a)iTiqZbWDZg0_Y`f7IXg*Ok$P0hkd6@TT{t4i16rjupJOE-}gNj|DV zIBWQ+K2zw-E8L@hy4F&Z$P0oVoZ+_4!OIg}ZW$+fqsxLQVq-Jf_2AXA!xyppXr~M! z|CRhj$r_ri!s^I73RGxfsqU)~+hfM^2Wjt{5loQvlW;8|f}vFS@a}AEH|q!D@2kNG z_NiOh+aXelzh%!ia!%156rEm{_dpq`ZH;2A1n4()hQ2TUWyHV#%4=5VfVy@T7gxpG zN7I>MBH7b-3VACFIGaPCSr7W9muzsW`|BBv+OD2U&*f2aA)54vzNJ?rQUR|J;-J`K zF=H2iAByq|E@lpY;`P)k!7uX&XFTF6^F6@k%!u~qsv(Z!*D8Ljp9j4C^hJCd`Hsq^ zgr2X@>>JB7mtO*7eXnJmuDY5I84P8Uf!!sQ2e;O0ZfdD4Z!6%jEepKJIM04zb#Gu( z@~JUC@ES_pJ#6*=9TQsMm{@+H!XN*wjV|+JhT|Tprn;S6;HqePfYimd(rE>rNuT-` zi7}O$hmRlIvSofx-GZRWkl=DAo>=c%sdHBW71?}nIObu-Ez&@cUylLZFXEKR9IfVOo z>$m=_pR|KyYGG_~8UFw+S}zz3g}^A{h7`a!XzewDXAvjNT8j4lnQ#4;fQwevw@nS; z;^am$rzJJn!#j#C`M&q0kXJlVM9KQGFA{f^ENPSeg{`H6`z6m zLcC9!%XdE~t!jy{#U!mtqzavv;>-o}a z+Luvr5K$!~f_MO#gySHCT3(_w`)b20{kKd|dzG`n)X__h=AAx_zXu0{Ac!W*I{F*NQb1>SE?C7ysKehVFk0lMC66*BkVNg=-h zqOo4fns;eF2RymMRWudF9FQ5g*m>Rgal?nKef=Ttd4T#ibxrj!l$Wum9JVO8(@Pqf zpJ6?UNaHa#4VI(YR66C4mJ(MgBn-XIYW3kL5X0>hN`+Q7Tb3|xWCjbmG#dV`pZ-zu z*EXp%(VHz;?}c|y8(&hBpbB#988~NXTp;Gn`dt8_DgB2P^nk1i6hJbRSU?d)S`b5I zL<)JgQ?Bgu)x)0ey1xce9ZURAqQYjMx3HmTARj> z+L&|Gx_6sozJK3#?4E3gUX5-+2M*Vlz&6n7TTE`V{;xJO7p|Sb?(hZYJ9A4ZGfXo6 z_vfrr+T$Tiv31R^Cr0cR5?}~M7SpC(CB`(mn)&0DzMNK0!KH;G*auKr>|KGA7@Hz- z{ACDCk}O~gj3-^N@U{U6k?+fpBOFLG!8s8m>XR+Wc~g}BNvthQ zS%w4KDSzc|zV~s>@r=Qs3C@vR`g!)nF`>Z5mE75cieYNa0L3PU(ldKVis2+#^`hwcAfqaV%{{rC~#H#GxE3btz|MmVpt8x%^ zk;P<=YhHb&v4}%H{QN%nG;$f8j>JK<oIAw*UB4=!9S3OqCrGK0Fod+UyO~_BLaN zOERl`eg_0(a9}8Xa-uG;0vBH?mQ-=|a<2!bZqc z#g&L`*<)M0gPCd#k1mgJ8%VSA!Mht83dJQCk-8!MjpB(lD&=7v^{>l~yPnN?@+aOu zI+_9D)e?SB{=9H-l7JNMDfC?Kr^k#8jBp`{1r&?DRWM2JbYIk$0v|?(18jvSzZimb z7VJDS3oBi-XkB}O;L^%R$-3OWvH?qX|Q z|A1NazpVAb8Cv_30Cw?#W}@Hr|&)Y|ePQ zLecK_+62g$&ypI*pUr$pjc#eU%uOQ*GP<)e!d;tDR0Vv1Z^rs!lytoRpmMvK*lN~A zENHrJplnov(1YdiRyRl{!RK+=e{`i6{sB%f(tn8!K64~Z-o?^(HPr#kQ=WJ8IH5JZ zE^#sLs(++*wq6R!h1hH|eji_v7vVRSo%@hvy^_@-6_WLk6l6B&aSyH1okaZLQIqSGrutIYsLlmxW*SdaDn* zG|;SR@7=NNRFO5Gc)bg%7F`m=pb=nqUM22Jb~4jZN-pcTRroT0$;kC9Yin^J2vsry zu32OKD0oh;7Gk@d>RQD@f%>qX<#&70abK1z*QkA4E!6h7qqSZ%a;F}r4ByG3c!c(3 zyX(0d4QcAr13C8=9MY6khn|MNSIvXM|3n;Y0M`U!9V+gy6xIy}NhQYR3;eQDR`asX zOb7j>66<3RJwE$QO>Np93c#hpa7&p}3jf64j}S_c`*xFuN6+jx|6EbjkKrQ6NPbpd zZ4?ur2eWGjTZ6a&@|WMsiM)+(GR9I=l8X&@_1xdu10hyT8t8B_@I52Va}0&lI1*+I zn+U@(5`kYmjW-+>4qg{`{1-Vw${_&dw9+4gw0w@iD2CxJZlYKw-ijEnePTZ}GW>s) zkoqD<{0*c!1y2%P3A|I8S0vz{$aQC|%p#J<|Abt})HXG4+iuE-tn`;2zkRi!am(`aYNEipvB2<&M}6M=E*9MR%%YjZhC zLR1>KljQjHHnFqv@4?i|2Id1?hD?;bXg^^t`+|WoD!65&A*6&M#k%+XpP{O+OEp{y zQT77)W0&e?9{JAnSK;@uAI;H^y*mkU2Gn=4w7}FdeT8>jJK#BHWuNnx#r5qH8Th@y z@9?d2awENWU+gTUse*`CNpe}OtY+lOL=ucKMoONGM5mt$lAdCOf|Is;0A=urzL`s> zj~j{9H7UUt{yc}GA?N-~nzA>3u)DSNWk|{A;OQA&SMM`sm0#aIj}^rquwtnfVg%ab zJw;R*W4o-}G9h`B`Pv@<2W)&fwN%~`sI>8as=!v++$ z>+*l3fl$15k{;M)7t`o!Y+M6KEi-(~K;CUCWz z6ME%b4EnN{RQ(F$BK0LQE9NruVkL2(jf<7s8u@iq`@@@o3zmU~AI?=cNNeAbLH6Ne z#9+x>p}EB6NH4G=ap2(s(MZ^;76R8Qc{?O9t-9Xs;)9v+%rEKw+lhh z;M)DljeK~_5U%Ioccj_aL|=o!{Dsh|T0lR!fW~}?v_!V!GuPNMgf!5V` z-t}TG(%UBEc)ghd z_jcd_qnTqMIb61W=AI0#1~}hVQfKi&X<%T`S_nm@4*cv@m3L>2)aC&1taiz zC&tEqiJpN@?89&twxz`=;1ifA36(-d3zrKHnp9y^>;u+I+J!-Z_DxkuGyfcMi{e0^ zhMB?MROsHTNb^HHc7d`G={5Xy;Y4r=d!pw)|R+Ihl1?i57sj0+LlBFUK$fvi812UO~G*_vauhG2ilT-wt*$ z&H4WB2vB+~@9J#P55 zoyAM4MD_RC$inereF1BR=O1M#@W=0lROO`!vP)A!YlxA9e+YUGIv7j02hYW~-qKl@ zsVipIjwLBBq=wi}Kf@P3Ekk|{$=;8ly7I$@G1Gjud+V+7Jg?dNx&wP@cW*=9|35(d z*9JefGwpZlG)1Oo$nDeJnvaGuw1e*H!IHF(fM9xhJ**?Lo-udCvc2y+;^^*^z+-^Z zg1OctF1=MHp6*Fatf*jl_Br{9`{t8$qw~AoX|vJawGhioHkeH7vvJOEx0+<@|BCK3 zLPoBA)Ow9h^STMyVN!~7$dg%VHX;~pRMYiNo_N-#FQ9l2M7GcP=ATP&PA zf)LP)k+{IlMJAflisysHXQX+_IUJ>`$uNA7=Tmbq$zS*)H3ALrM{_vt*^h(Qnb1#v zp$gOq(C({15RAtTSYv^bE-gh1pU(h)?0(MLl-=sKEx1%;sW<*R2kp#&dwdGjR4fz% zsf5wLi95=#Bgute0yscTCF1^rOXU**#IAG{xxGxV;v$**%vju$UG)w#l;Ww{00#Gz z{4k^-3T+~TKRi_XMzZnF&`D5Ra|v}qHll3-dfQPnK$S|44~jC*1f z*JhT;vFHJHI~)Ps5$UJ@>eVZs`Xj&nCO)%4h9xl5Mmk0@$JU^0Ea#oEbZP(Bz}N-N znQ=sz5dO*+dyLpWMwqW4gRT|ZLh<9je~*0ro;d48Jo_fga+_=9<w#q9N6HA{VD;L+P)jwQOfclpbI#&L$w9$8O-SFFmKbC+Z>m;n=TJ*o2M_sn0qoQ95*xuz6)BqAC!h%{HMg1C;t7g zJ8Kx`vjY92_^JNN?Wk~GT7DP5F?mr^5iUCdDJW>z`)xx7hDD$}rNwbhnQeV6(LXfn z@|V~?IrGHXaHP3h*2~^aC<}A(hlcZOJJZi>_Z#nK$YZvyzIIw67JSwM0Ku42htToo zMHL#ht5F-wav1^c{^t3|@8zquRGPB)*TjCbK*7|tSL|D3Z=yuI#g|KUGk)5)Y>P6Z zy(8AOGwbOBTGoN<7BhThSzKgrh3dbNVgzvsQ6{4+d8>!gT7M_dUZY4YR9_RW4md;LS=H9yIKuw)r;i zlQLS9oc}PVxq-YlB%;4C;*;EQTM`6sfs7-B#BMAfFID;N<`CD+`9!0 z4|XwB8fv>s^yIBsIBFc{l)ogRRKfB|N+2(eveb1m+3}Qs>jIj7?%Ff-t}aVo^)N@a zj%0xh#oVH?OJ78M{9fQHIgkSw>Ek^jvB_|(X_Uu@m0{x*? z84k_pRXd4*#bk-$3*g7D2@ugg@!4bA*p8&)&}f3Vfh(QFQcoH4jjHVn0IF+^{2_B` zXLq;dY>gA!g>RGwvS}Kn@KeAulZ}TbAjmj|>FMpmwL$7Z;0Tx(7*^)xY6|_Y$RANj zJYe*Ef!}La5|ZtAEGPY0wT{-{WdOEm{{5EX=asWX(QV&HDE|m@W{rlbYlQ~Gqbf+p z<6nW|EK-k^zNWVM*lU05|54V@_h+-=mw>ROzoF@hsFUikh6E)Pfx9C|hZP!8KTJ?u z=zu)gcBn<}@2KRHT~B4~<3^S?Dc%tKb0$V*KxgXaW&s!o0PcgHkDD#|12I3+QF z;$i6{9miu^6f0yi!^dq*ba&r5f_~J$%ay6YljiU|ATH{C|3`o7xsL{Jo{yj!`#XQc z!>zHB%w}>Of4tlP7t61U%fP0ID_>98o{#%zUwqxlhG@W@52AO1yHn~D>xbF(mzCq5 z?-mQ`D2(QxC!49SJx<(A3x5+vy66$833LnyfXW;~4bF+-oKue1t_m);`xWdr%HM(G z7^fPRC%$7iVnP10(})`mNrBvnoK0?kS3XIo5N~5Sj1q}5m9Ax4n5e~-@o5co9E5); zoqP1G`?eY_bX~uraw#zLj|JB)$*eBt(A%1%Lp85DA2&B5Loplbu3{J9vg3|7VT>ol zSc}HVpy2uDif9lzR>>SNE^txmvcxu^FFpHTtz0>|!M)DxrF|T@< z?0xM`H?iH(5RQSbjsk3_+zGebh^dDbi>Q4s-qS z1R#*EX%&uqy=m_vmph}iz4UWcXseuN=~Pohs63)Setd~=-4L#S)A1p9?v>aPEw5hH zI2|tJm5^JmtG3()TZ3~nxj}=~OCAHR=!Lxfez{5psF+bvYIR}AuE#zLFc+Z|DwSEj z9gm(iJOWa96RM3Jd28YBo8tY?IBk}^nTBK2L@m~uGd5HcHr^-W-jBs`iYy%w05gnq z$Q5AtEWX_jVS6T~W_WD_G!+Mx{YT=_f5a<$YK44?a$00tlm@KVg@*!e9(a=XvG1%1 zw9Z>fMS+%DbEA7%{SD?UAoIn$3K7oKql+@e&^O1hhW?*EI_FT75#A+k%pU0!6SHS_ zhgW^)2eZn|{0+2Wz?f1SRpi4~wb8|Bg3C`ZvFqSo<9uSWwWHKeeeZcK`i7?2-(msB z=4gRq0O|Lq?1~(HgKDFzIuB1yL8^UXa;dD&RP~ee6A zppz?_53D)xkQ0Z+OVWb$eTEL)?a=r3&+NqThc;BciD*-w;QnF+>*`BqizNKneJ$q6 z*Tjg5@SACeFySw4Y^jTWHI72H+e5_WDKc^>6Z$%`m{LHUEVpcDt=|$aNV~N8?{H2< zO@wI`;6uCN?@OWPQw|rhJtrmXpdc#yUBO@kN#i`&cyvw9D%tbpqC_oeP2GcF$y-s& z=J#21dF!gc-pB|0mCaqL<%vV4gv@^)5Fqc<0BIXZR6-)l_K#3C(X~L7nQ|G|ltj8C zqUcuDG_E%DGsw9Rz#V<)oyy^5^ioImf;@$Ecz(K{3RKp1h^gw`=yQcXvR9`o29-8s z4_|)|22^kPRlX-XhE%43J5z$-I+w;>u_tMP>vpBztA)L`bOzES^{0MkJoO;BzC5J( z_Q?1l`;o8~Kj1-5b#8bmBIvoH(R4T@**=p_e#d~Dbg{JHw^zFsSXfd|Sklijp<_Q0-* zOp>j+T1aupQJr`BCQt8guXCq1it!6;2zVGgJ`soxq^Qa3a_c>(Na#03X<2w@wnBme zW4@F0iz~6v02S@0F*xdXUZi8dy~oCt2BJFrTHs0y|Lt!pynEl@zq378+c)aPIE#hM zy_1)u0Z-o;*nWH1h^j5pi8K+t|K# z74m*K@|WFeHDmg7SjyG4j%NLLnrL!aj6BN7R52q-`sF)pfPfSL_GzMdLiP2bk?Te= zU9AoJvULldev*J3xS)p+S#Km6&tXPq8g!4F4v>y?pHyDI**S1~r(d5~zLZhnAhuw4 z9qJ0|*~?~j9*o^?_>oNB3Et9|XbJ5B?ZUF{*~zUgWeZAxHhV zH-b|!J?m)Z6rzmT_dSf?I;szyr;1yM{Hy4e%5aK^FN5sGgRk%fjza1r_bI=Se^S(0 zR^svu>I)${R|=8{jr89VbDCHPZuUeiGP}h{W!;blLKXbJZ~YJN->^L-v~|!kp{?=4 zuf%!%4IEqn7rV95Nd)9fTn9aXUeg?Od{@+-i1KR6GOo?Jb_I*U?#1Etw_NN=?qgkA zupg9Jb6YaXzBTSOyi%ASLu%<%b%1PkN49m6ETlq$h%E{Mo#%(~EWy#Kz{`DQrYEi- z0r+Y56Dc`D+7bZT>FF#>yeR|)P^z-h+50ZqeZIRhK`}*|&bT{*3%1}$5DRP1w=~_* zk!H{JkNP0a8)8<;1L@56J_6)(MPHAlXa{+I^CbbU3&s}RXh`Md&Uj5;;sCLkF$crn zn!DC8#UO{t^%T8|r@h%t)(zhck5bD#*fUYG27zZ5b`(|`rrwXnMal5tj1($(5>1)r zw&!O4bel;`^#52w_h_8%Wwp1H3-6yW`IB_?z-TLzh*G(-t>>yy^1j@1FF*p1Xac5aSD!rr>JLG=xW%ykeP} zlfu8D2et4;K*P?I!IY(D%tA+!dEm!k*=r_g{}URq z6C)Yl&}Azp_4tF?T9@vviDLY!{CAM3$N4`Fthm*wcBnbk6!O)shV2UQ?3Hnk6S}XK zB3Qd%Emu)_s;PO#8Og%7%kj!Az#Jded~z3#Ju&{oApC)2ajcXJ`MsFtaUi7=Z53g~ zt)%G^#+zhYMex`sqv;1uXXPu6P*lEp2Hj+pQM_Uu;K~4g&5zaq5QSWG@*yZ@kf>-- zu309jUW{|4&PsEk;tWu7RsieLsx{=Q`RE%5)E4;qq`#*Hmdk@f9Is>ikws22gN2Ts zdlia9W$RxqZcI*S-9?25%i1J4_ zzC(>7xsRVYmFnAC=1!Se-bv~F4RF!BlEAC{k>vG-F=vsR^Wu6^^~UH!mBb|A-Ym{T z&B2a%1#sL#gIR|xZTqKRA=ziRko^pw-!n8Ze4$HZ1dBj7sZIWDWQnMvz-Q*NFsJ|k z`oKA|IKAw4z4w%^81;iUd-r%1X}P_>VJ;9|o$DPjiQ?>%drz+X$>8+U#vz~r)nXs% z%?4%y)z23Lwo1)!6`z~?40jVcbdwaQzi$nK-8IE~k$-teaw5>?(Z4|B;9N6_cP48j z4z}_z=TDKb7_R@qh|#kt>;%bFCcF-k1U5X(2nMTPr!PyY(r5&rSD0+2 zup`>cFx35{Q#NGhCvak9mO5C}b-`yhP<;~|$%P=RsR(eN7doG#4>uFD6?|ps)A&X4 zlb?dZ&&Z8~U0+feBMt;U*GvB_JwLp7>x<`_OfRHF35Pm{^PR*E%A34Dgi8F`;-Pt# z$2P4;fDgkGpM;7&ib>*Kb;bwC4n&++@BBrI@-RSl7{cV--G%HCWn@uG`C%6o*@{0L zV2aAhVeWln2r@>o$QBQ-C^KF_q%Gxev@wcfL;ZK5)`b-S8WiBo-cYz|s#vzfGvA7D zoONZ)1dkn*E8inppE46~lFYpttw;_u0yW0OHs! z=8xRh+`#g7Ds&soGNMBdOx8;6nJy&Y#R9qO$pzTl#FlL07rIRTc5N&PT+hW6DLNKt zl|A7%Yl`f%#4s=p2w`sP~Zj{)q$d{;kvkZNpFle7`HHT7j% z^Bii211bIanJ7Wc{>QOgfZ&-7Fr6PJGcTvBH#XgCh4vGx{?yKuSpUMG`MOQZ&WzL8 zui`z-^s-2L8el%s{5>AK8P0u>sK`*(z(0$rnrw|znohb zFQx`)0Q&fAf2JpA+KWZ8%jkq=>R4j=B`%YWKi}IMZ%?;gY(N$h-|%qHoO#ca40q}l zlCC-FW`s01A(>m7i{PwZ%+K=aO7LuVdo_MoFU26qkwYPC+6XzxdP1(hqCuTSiExi6 zA-8dtO3-&QtzwIxL15rGwLDOW&3W@}X^UGVKedCwQZE15eQ|gfkNw`q_-DujphuNi zU-D8gioG@%(hh$zT`gczrxEPY$DnQwtf!2fEH#ey?~Y@QD>H3eUTh0%54}otfwxIx z=E4@5{a04vWa;=~vJu?pro83>$F#r#7P|7ZmtP+)buqfo)bg1%87Pc6Ab?Ma00?Q~ zR`rNmp|m(yn)nvqN@TMZ?@SvG&Owe+Oz7bAnTG`Ew(&JYhY@%;Y(x7N4_8L5o)t)o zu3qi9v|XjNj87%iY|I$;HLZb4N1K^rLtH7@K~@{kF>b6oMGO%wnzd|A5EW{Fykgjf z^=9%<#1A6*QjkQRq9b$l?ptoX*)5gC@YH8-fNe0ah(PrX3Y~WzwO^uI9j|OGztrR1 z*-kNBa#%^+6*i0l@g9o%vusH03a^CR&It_3z6=87_+TVMYs9hf1BzH+@m56(C8l=RzR)QRt7Y)gH+Q4=tU;4)-8!u9NeqG--oqE?%xvq$Yr zC7>_LMFeOoGG(Eg-$7`b_mkGk-^{}&F5uCGilR|c`H|@G z+F3QNx4Tc7C}(xKg!v_8FNAHFR?st%!H0#Tvmdg4KrItP)UgB)+>(OPD)DQsdh$%6tzg;`; zo%#av`rElxwEAIA2M#L~9RfPnBgTdB^0=jy>&ktjnBaMr_tF{)7k@WjzX8>l%DLS&A_|)f+`Z9(HQ1M9xN!!$Xg1{VV|0VKo*Q3V=pBjZ3nK{q1~;@U=JIC(^Za~i@!s#I zvQT^iqUpKb;&UxNJ!T{*Za7TkeSeN~uhF|>>>#_o_;kEBg9mnHL%Xr@^a^sx{l;1* z>*Auor0#hSc9g6FiW)bwq1koGXd-ys%@@Slf-(=CkcUZ7;QiVD!fW=|E&rXjB^)y_ z^0cKY%dltFmYxxCE40i4Vf25TRg)ABG6b(o&E4^KeQk zFan;LYhXOJeMQunZR$UA(w-SA;Km4zSO~sbD{3vGvINAaS@oCSVLwtS5&Qn{ue9Pi=LU@tNt*iHXS;+mEkNrW-`<(ELL z%zgZLXVgphhdmqV-}QTVHyU;mHbBv}0kDrCUP=>i=!mGpBu%D?9*h5uV7yDf??@`h z)!8_=M^F3J&UED|aLWUp1`L>nsZaypPlDg1j;#zBGGN&wq!eeV|H4;dB^8>1Ve8wT z&-ZZJwOOO-9tk-_Q%e^#^CeuJc#u2LCky|t*$UH(mxY^kZpY${z!IZ?3jArA>&qoSxFIX zVZ9mw?FhMthD^<+384GC+yZn(un>a9Uj8Y~dify%nmD#$uEoQKMd`5wYOWM6~k5PA49 zo=o#+mlapdi&t2;+__>vXL$xd!r^BB6y=*u5YzdfXXv+`QA;TfJ^0*CPkj&W`yFlE z1D%tJ&jr^w&9?7)M{~KKEBnrK(>IljARit1eC}SMIyuZ$$yH@|ff&w^6m4eYnr*p>q!h-t`a0-SdG4fLZw$ap<{1Ql<$G$Lh?N}B$tZOQ;mvb)WbFd_ej zY=Lp9CHc61AREb3Fu7(G{>SDpVbzHvXo^$r-a{`iL%UNbq+2FF>kO0yP9VdikkTIoj}zQ`s;fYg9NMve*7*E{|UALMhM$RJt1;E>(Q{zzI`m zM?Gm|1W5k&)`r@}dc7R^__XajdGIc!ve~rk=4ZB5Is!CaQh#1K>tP8#G@bXF0(0-_{vD_r3FVTsGx^N1 z4ZablQM#|6<_BU;#U3Ur1}QByPXG7>lKec$ z@YITmxJjI);4$vO%srBo^n~LFW8+&P!E(d$nbK{na}oQD>=ZFTx(~-`wk7QzJ*75~ zv3f}SBwMSn!s7bvjc?Pf6fo*PNpq!>96GxWyW!GC8}$&Mbq0!{s5XLl1l#4}G>2P2 zF5R7p->B!U4-RQF!-|h2f53&Hm~CJq-XX@Y;E@opj)u?s2Tp7-g_p7$)`GZTJ-@9M zOw$5DvuLL*Om*oY~XjWY_XD+kc(L9(!PLm?EV^Z?+U^7fYT`Y;v=&$#WaQeIETu z%SN)k^R(qswJP9ejqLjjJ=?Nzf{pxSfSa580TuQ74zL8s9QUTS${sEgjYkVF&dM^O z@0<5xcZZkM4BJ$rlVj?6NMMt-?z!`k2j$`t-|1ILozxacg14yEUKg$NxjIWFyv5B@ zsKtZcaz(vMFOpXL)kamRYI11$0~a-Fd-=**cvFvfmbR4+p9{ZJb@}?h8{f>9`H6}& zh5z3Plaege4-V@OZ$OuRG#KhU(+0%gfaODE|ekJM;6C_SH z$N$lB$gTK$Lwckto`kJtr}omRxGFllT%!pWI{UZ~{xdZ|@_O(9(14;?@Y5gv!@<)< z|7RZPx5w{^O6=<%OM0=?NF|n{n7|0!D}YWrkAG%pXj&Qh&b}k66OtKe&%sqgYyoWM z3V%x_5O%G17&|s+?Nz$qvLb1H#j)b^9;*F* z8q#Ps>2~+1zw=db>^b}#7s>aV9QJA_lzF|(*|V#-60UYWU~u69nzw5i-)b1_zAydpTbr&`$Sm~x^~LQ zh&#Guk$79AReAN79^?}y@C-xj`qb6mAfFV8^*#f)4^}HyQ+~)GKWw$qI2sCnP=V%` ztdUmpp!1Dk`KELpOV?#_cyuFpxWMsfw^&)icH_7&ga#fTu7BUYXUjl-pv-9o@=>(TjMgb<$H=>5i;z{l&9zW0TEu7Wc&kQ^dWXL4q2y7JMzA z4_Mx{%UDS={Qey`Bv|!55kB{C1Hf!t!ayIGvy&fw)N*S7jKnjW(ToYjaNY3oWc!yU zo0}Z+!*Z);ee7vsxUR0%{k;*V&Q6_k(pinW{90vr;mk-Da>H>^#`V* z<`*i@F$o~|OO4Zu@a+cMKM_P6`EwX{;PfBke>1JSOyJ0OOKcjG6F4a0>Una0+Lemf zD1zZCC!A-troxKG&s$ynO53k?fY{0<=sKRnNz$)yzHajQ6ai&2Y$xc`v9oo1EMY^Z8vmz?jb5S4!9M_Z5c3nnWxqaT zL(C{fsFx@akILP`0|h*YFxGB9BzD+y@1U4o@nH|zl1F|)4KXvnB3QoxBuaJS_m1ao z`lA{2#p6>eBZK-J-$~`m-&+^+oDtnA@!B5i=UxS9o9#Sw*A=6cJQQ5?&b0b2J*?G7 zZNRlOnM9GG*CLtbP%m2eI3`Y%-G>Vr$tnuwW?^vOB8hOXR!Lmo7Q-`l=F_|1M7t$> z0@QLMPk>-KROa?*7K6vZ>vbYiwjTQ-Wb0R8kX4C3hjOy|T&Q_SP~HMe!MEYe3)W*t z%C2|6LT@|a1*a_w;>MXl;{{06hpH`(01|+=Z6dC99FsU=3#7sB&u><(!JZwePWC6Z zye3|&vOH8!?c=D9sHwoJpr&GC=rsSWvRJ*fC|aH9*cs1RubZ*s+{5tt_u#MRLju{z zrFMziRLblHx;I@3LsWlWPDCdvi_|>;mwf|FKKe+-&~UafS)R`%#?~up^{%Qlo<2}o zy3JfTRvGl2z(Q&Jff|_Q9P@ql5I(F`~L*T0%oo zVp3hY+{d5i`A-@4 zcvwI2+_y?&vgUcvg zdX$juXfdmoeUUc;3)n}8zjPUtz7YQA!JGmYrmIrM{jmkZ303x9EkrDWo>99^Wj*3K zi0>zaj?QQD`_V{dF(CUuYoZdy5vri*wmRG`?S8|#TZwSbQSK%rC}bC9@L7#|7Y3#L z_2bWpb9qw+OChU_XGWI$oAbG_I2MsB>2{iTs0WE)r_0Pht!fg+5Hh^meYqycf#ZdI zr*Zc%afGt+^e5+EQG2P2de;OEFYLu&p9Z$mn)5)e zBh{r&0Fl7n{dRo>2MvKRsci|>qs4}(HG_uf zU+}QRBtsSo$mqgld2yli$C{1(#M&x^bLxlXm~z(fTcqDkOsarGZUS5G#j!6Ab0GOq43u%1Akt zOguKpl*@(3Ey+sHCY&y4P01eR^<$`qshEeqT}Cb*YOS`4jRBo{&SVZMKmLP)1&w`AT`dKK34=?;}~QT0`AjN8RhVLpA;l;U6<@ zHRQl3e+kkUPt4*QgZhoB0-R^;wDXeJsSdrt|kG^VDTDuX^?LFi*MLozv@NMt6hnTR@ z6TD{y$gbrP;F%8kq}6-Mm_hN+l$>)Tt-l`N`67cSHadEz9-spN27S>U@HC?MQi^+L zx5m3da|I6hwUw6Ck+TlBi>$TEb>+dJH*`Q0n9{w5DhMR_D=M&GLiNwAt{SAF% z;0R;qBE_o0a7(pNi~LO7rtsZGRNf}pOXQiG)o5laWIQTlO)4>DgC?S9&GoJ8D-<#? z6q#lR3}u+B-mJX|FI5`G{+msmn`rtBc!lkBUHY3JJAdOZ^b93y%ND$3Gwfw8TElUT zOd2j$*bD#Kbftk|uKWEv6+Og*` z^J0k|Pec`;!``0+E$rdi_*+K!~0|5>iRggvWX&mXZ4yIrwO%btCW+|_-l?$fiwF-*FJ)s^LUy*7jW z)J4HkYa1cEHm$lwQ1BqIGC3MrF-U|Q3v|Z|{EV;+%2d8h}6dB#9 zp5-#G-Y8{mmg_tpkK`WFT}<{1zV2ht6oY{GmWaWcl#V<;L*UFwwmZHk;Kaz{VX_c- zmPGVz`jA5KN{#Mfr%baGoafTVIWqG0s(NWrM2=g8?dA?Ey2`m^||&M#Y! zEAy?|p48_=mvsm25sl1kq4DXof5p<~IFTowRO$_H{E?gdP{BT)idG9v@nDoC(c3Z&*8NL(=Pn>y2rmT#ddE z`l!1y9Z2yxd0)KLugh_Tcf^A)o~+|D><~D-oe$-U3?#d-IfIJE`lulkHwAn4*P2_8 z&Ybuba-F4)iAFO_^VoTt#;YV5l%JQ~o-bkEc?ltUR^MiN)x4;AHnVldI}h-iIAXXZ z5obi37KnrjrNF{_E+(e=H!kR{aiYjRJge**y5;XGNy|;?2ss~P!$C7$NlmZMr=2^o ze(oDO%+D@#Ql~SFE3tW(C78~?%T~v7`>50pD1F=cw&c-(yDc?Ra?DI(Qeu~yGsY4u z+b?XP4GFm@q4gm;&VROAQo$uzHvL!WNh%2CF~8>8BNV!%(R?lZrWs+Z6p9qfiOfG` zXO^dtV{YE;Imcw-ZfHc}84H0tq+#Ih^v_X`)u$rIWEaCt#QK&Ms>T%)d$*6yQPUe+ zOj%QpXL?%O#cAg_Q5c&iXJbzu&-ExUln%SH%UX}V(!ifvPH2odlda71c2c~9O+jUIk#6o+OTTMb7)nx7^H6r~_kAtQTj|P7N*mT@BEqT4;!QaQ_P&ak zgMf_5a4AMJ#ha$zPv%n~@G`aWNW@xX(zwA|j|bDiCt#Bz)=q_Ng$L}bP*D?upE85oaD%5BB(D?v~q31>Sxix9lFka5{8g1{A4@yTy%C zJ-0Y~aP{3seBN|s<4EW}ca6gC%E9MSgHgiK$lRo#L#(Np4$F+zA+r&}7-;*BO$p{W zI-`tYk=Ms~w8wDnkX`Ag#teA&+Tc94cXi~j_H?w7#}ghmlq9mvL{ZtvzppFK!ypaT zDdI1mbA3vR0iX-KzDfXq@wOzG>k&{Oleh~BBNnj6_Al>5@u++`0Ztpzdy>f`e!?bh zw3x8X|Lp@rn5N#yX3A9U0IS8SkRk2exfsjZEg{nd3UOs0yK!Sju3%$r$!_YsCW&KM zL3YGw@hRK0)xcNS>iMhVz-m+RAm}bH8(AQ5*3Ih4k1_Pkm)JTOyWgg_%TRh{?^ZDf zL6L;5?tWQ_$U@qM1Saa<9TOV881js7a$ELi7&BPf?(3N)gS!}af_zbIJaoMtYK9%$ zobC4#=Mig>7b@B`A2Lg4YA8RvvR}>JW7lj++b}TL&y4TEn5Y~7f;pk8NmrW@NqtCdygKR%IrIWzu(})TjPOn$?v?to+I?~ zmtZj=2(&}Fb5tcr6PaFEaH437)plz8SvciFgKg$tUO4KG;So1pDg9gN)YHErLL?n; z-py|=hXyrUK1R*f-SrwNR{i>6Cd0`h45gbPDmgJSGA>oR>o?MoC4psQIwvrfp)~CA zlM;-*dR=zO_5hAEZs)J%mX_BpnmCik^90BS_=;ZxW*}%0^mmr)LH~Z^@#j%4(ypoK zgDEz|VUB$T%Ot(G>O?zNg0hoPrfcJM6ST4u0=uL~M0ho=J=-JG#9PrI*0jn1j{Mx~H+d9H6$dybf$ah{@C2E(ZWKwa+r_mv zWO5?GorEtPREtZ-5}`P|wr9%Y27i5cH`I!>`TJtG3iFhEOS=y@NO1b~sb{kvMtbA4 z={~B=^CAJipHa})l_<42%x5tsoo3hBuPIVJ{uIxiP3 z74LsI`~b2s2h?ZqfeiOm(qvAiloozri&2AXVS4skyzh*@W(<1h@dd1~IizxHHzK(%6 z#YFFRC|csw$JGfT)8TEIPPgKjOOQ0RoY_bifLo9vu~}Pc9uBJXGoTmlGRugwZ|B}?GG540+MC{{%(RFN&=@BK1pq2@_!pQu zM$lR@#t%-F%?WX>BWtX}UhOa7?Azb6=X=+SwCIO=6Lo=Q=OWo9VRM6Xp9^37WpHQy z9h4{6wr42HFuv{};eU?OjR-zZ7c!7Jj3CH4r`*Vo>%Snp{vPfb=Zc4C-C|L45mDzgG@)mrRdOQo|<*t={$bn?S9$-yaoEV&U6*_Am(! zfYhb3`^7ya9F!ZLkV#{98t|JlqB2#`HJRE35ZdrR`q6)8Wm*4sJaZr3i?u zW>A!8s`+cYDUEC(>fm)eDLC>_I@g_0u4tAmE(~`nv{wds=1jGZ5xS^d_Rk1h$j{cP ziK?_N8;(@LW|Dng*SI3w<+}(1yv@3a!A_BsVXGW>X>gTxZ>U^l%I(u+xLfM!I~V-_FfMx3?I7sl#?b# z8n&L@IQJJiIs8e`^57@FrxTbCug-neWo(GB8q>g){I<3pG`iyO5QK=nN;OrUCrn-7^?x#ypwNZ*13Q7Cg2R4(j2cqk zqi($+A1{eAn@}nr%|fQHFZeN+;X>W*1Jz8Gv&{NE_cv)RO_cHpdh@Rch#(7VKE3pA zTVhR}KTMp}e75X73Cb9u?`IaY2C}UHzcN4gD;E|UNV*1l#<#ogYP89>*}fLrDC?X2 zKrw6cA~$2OlK$oSV1wntXSQM7HC-1Kc;8U+ml=Bj ziemits_ZogDwOQmQAeoW=@#rc3uTeIW_F&=)@E*a3t#++fD;p1BP?W*gKXywiK#)=y5_FItF-D~t*iF4(C>*|XMO`;!9r?pz71!}CWsY4UYA`Hy#)<`${pAyl+Pl-1<`!R3 z_I7>W3+*k>yrbRlS8oo9*NuI)pg)?Il@RZAC^cE!!!)1jCA(o)Gu}qB7-t%5y+LS3 zG$)5Q#lxZh(W3ZbJI?+wD)f-iGQ&442i=ZBB7zzLyP8zZMT{$mO8$I{9|$vuwLJ&8 z5I|gp22c(aT}u}hZ_X54@a4B_FwE?Zkl=kM^BvCRn~#lMj7ms!PVRp}XtfY~qLgkd zY1O5m@$-wuZt}C$;()IK(@D*jKJ5!_%ejR9IJY0xW~flGT=bL;cS%QE-Z@<;&Z>X4 zG@#xzTq6%oPi|Fze=YIjWIpv;)?8l@Jv7DUZJ9tg$C5P!o;hsC7f_ZiLNNCbm+4$U z3VJy1K#Q;ezaaAVY3@~5sMd;G^#8jdY>;n~MHP)!3i#oka;)&b4CP^kte1PAhFGj4 z6{NCZA9$6rbxwu{A&B2ezz~(qQkjg6c%;q6cD^xapH(Mkcs?tQE&NJgf zHbbzzp$2CwH%O7CwAdf4i*plEeZXILN5Z#;KM(v#Y&F=FL!KeC9F0uJF?0#2xD#7? zC1Jalar?k}UG`aocL;!d4dCzaJy`76Cs-xw*&0Wp!_9}sykVA^mLVjQigYH;U2XSp zpNh0U>Yr5Vj4$Dj`s6Q&_x;44Gb^rO-IlM;YLBbf6L;FSbOb=Aj|#nVnJ7^0@w7GQ7Vt?Oe(wGB-F~pm>%yX$da#So!SM z1_caXtJHrf?GFu>>y^yi*B$m843vDUJX!Fo-E?JXzViGPf*c2*4slIX(Y<)_1({uVi>P^B1F%jm7f=y$rNyEF|EeX%$E}A!v z#<4%e`hzX#a zyBW`Ou~HfSK$JpA7*FWa{*@{Zu#K>RH9n%u=-59nEDrC85kGz!k1cw^z6^g5lXrBz zC`jGhQTVs_r>LyQT?cm z;gs*Wds6X>300V@KZw~qd{n5MGTbyX4~JbzGVSfZ__J4p5X=;>@`3biEZ2pgE@BW+ z)}%ndauRW(u%FO<>m;#|n$@#^@ME-{D0E<;nnSksVr}&D>1PccEbNn(@tE$`-B4*W zauFZYgO=lowr2%OiyJp*+xaW6_2P4SN{PQ7n&Tf?l3^-gC#Ega-q9mY6z=`x;~D+- z?5UtwjQ7h+Z^s*HtwS4%J{?m$lz3iY3@y|4nf6BR^YoF?*9epARPJBf#V!g2{M~3X zxC?rC^5RMV59#?DRtC1kl1SqiejlfI3^AuCKWDfs*0`KkoipGZlhIA7aa)Q%KOrBJ z9oW(60^*hxO_YN-&t|bKILsVm9>3;d(MvLKyOsoan&fZzDm9Z#*VuFEYvyBLVnRC# zxqrZ>ix)K;I#6-yaBh$>y)4=osXKyCFvr>zJ@PNvmVm^R!r%wsjvl3muDJ`X@1eAf zn%_l9**5NDt;V722dN%7K3lJqy=a-Pt8)`G4YW{Y)UJpM`-~>aRX4_$#E%_(0xiE* z9}A`2?%Q)De$g-xfyV`%1sPFJU9^)Uyy+TRC@Jf%y+*m_CD zXIlwLza&9*olJg+xmRV}lW>b2;LlzFWlrk)s1Ikc1v=@{v?NI z1Dip1((IA+olyxHtah;>$&5*->V*K_bFs&Z|0-&Ui#{>QMi2jt`NNY<Y(X%Y4Gw3PMe=||8&Sg@nK{}9vBD?cmC&p7Z{sMN~9z0iH13zd6N)G3E=aM1itqT<53o z#EjYGSwOC~S(z3?14#%sMQr;qJgYbrhkbWPs8F~xf3>_CD2doilk_MS-di@1dEwzk zpRZjRR2IW5@aq#aIOz7sH^5xE*e`u~UjTtsHH64HNv_PU^;4!klitWmK0fFmDU4lc z2nHE7E-smDi6jRwYu7>x%oLz8$`SMe!lbM0X6d$Cs4<6iBNpp3p;5n2ZklhzH_O}E@T(9T$B}r{c#+N~Ij}NJ`*|Y_l5Vg46k{WoFU!vyk}MG~)=M z@O<^2FSv72b)bE^5-NS5q@9~XME2>|3i7~SeeuB{Bu}Uz!G^}ZYQMpF?YYeBKIwOs zym*7<%3MR5+3&B-&n@JyxHPhLrk@u)WV+GpxVF@wFfA7TcpCSU=?fR7HG0zr1L#_z z*T$u8qPkzuNqou5yWR^ZPcC<`%;nO}eK3#8%vbsxwb7H^u}8;ITI#3V!(pku%J(|% zXrj4#6d;vtqbqw>lUwz^Cx=kSxRNxf6F2=ZAuQsL%6d~}rNFjJNLaXhe!D`U9Di1E z0ut@M%;?63Zm^N4`#h$%PYx=@wYw--@$f9pLG`Dr?ef#)N3VxQe;zHfSNiE4MW2lL z88hKWg3rbieG+|t_|^97#Cfetwmw`qDh=+Z&6Yb0O8j`O+hMyW873eC?~ z`tnY{OpESl$oJ26+oX}%HR{(ca!D9Kut<|3{g+?B*Bm??WP_VW`;-*}L+M*e|IsV& z14!Tt3L*!G&mt~{KZi(jQmWRkml7n?)_J!-Ze(o6nU~`VTcsV3vHEA!c$%~J8+EYh zvC5N|df}viI_oBNr+oxJUQTjvx2yQ?^C`pN3+fu|?I#hV7b9;dzsN=Bm7z6FL~fVG zt6Pr!>LXT+w!@eKwI)~+kjsu|$j1fs5;;&LaSR*TF(N%1ZtHgNf^W=6H=ucrHFa0H zlaijhA{K(Zv}OhI&bJ2VAjz#MS5r%~3q`PxCaK_VADjkXk#bcD145d;QR#CnW9(Ey z8J0K7mu9K#wna8*Fn;0aN==X)Fy`{%c(y;GSY=Db6+{#Tz*U%c%C$TDdA#_#BQ}>Pe{eg^6ltY zYD#P_JKmuX59F?UYByYEI{o6;a8<{34YF@Vw;sG<@5y6pC1ptMh$N%WcGU#5#<2#k z=eSbSTflFZH$|1sW+l=*Vuc6t*YSfmeJZZ78#@waC>fQmI#=os&#`zva6UR%b zZn<;PKW9JY)>rawFMva)EU&B@pZI*<{Wz)q3++@o-;5)7aIZ-KO>L+?OqZ8);-S#{ zi^o7`%5%mYkt^sc(Kfku89XQ9@`J!RV#WgR3KT?*G5`p$?l;Emf1GR$@V>r7z=MqN z5m~A7m!VA0%hqM38a z*zZ6$btees!TS*w6C>ag-5w28E3Wmxrtq)@k4Qmd%tt%>{FYW z@eG4FdBI{UwE4nHv*$j#;*TkxnbDZoj8H1HG!uIaS(VR{8&4Fk5Q zC%w9FA2F93l-awn9~PV!ek=a(&OtAOyusi^SS~J+4ZmvsgLDKZeYRfvQ9ZJaC0gus zO~T{2ora*dKTZo-_}ORQVCiT0soOYPbkMs57`lNgA+xqZp_)Dd1+E&kNvCbM-2R~(<5AL6QqUI#LKV?w^kWnER5y!Ik5mVD@ zR3%8n-51*~FOWe?3MFL_A<2OkED`i_cURD0lXsED48F57Y32q{r7YGQi*hES>iTXs zft$rApD-&x=wG8s><_T#tPAh`w#>i`PyB4RS5v&ZvBnP#d#qkJZxBB>I)>y$yHi2 z{|Kr~b21{6G1xhlBHYf%15gH=z9gVl z8kYXBzuqBF8;ACbS4#v6S%W>QZ{y6`Fry^K{L`D9+*+TVK#4PxNmPXVrHVGHx%qkM ze0pZ~QU0HsDFvQ%{h7;~;GFxv4wD&FL6qfs40BuA?eNO*CBwJ$<({$QZtGaOxi!$X z=o`d0_MV*PGoNc~!kV~;?-9OQsUJA0A^NY=BBRj($w-{M&E&526pCnhP)98B$~5<5 z@E0PL4tvB;l=z5H7Kv_Y<7tA> z_ghA)C-T#En9czoRqHt+@(~G3fUm8{>Ste+g`TW%EBUH?tV|*kD6?4I_G(q zf+(`;M)hXl?o64jc!O*4G?y_SDpZh?7jw_W1u6F**i#|%A@-+0-e+^C28JVAwYcVr z5|ACmW^L57K-29u(aY$VOA`OfOzEJ=3vZ*u=YY7}b9H4tz00}3(9Mr$%%)%XKU;MZ z>6Ao}FsSQ3hR~D%8UFpD`rbHt_t}Xeyhf6du{Ad!1rUr_V}p{3GFLJNs$tcih#!l>=&vtud?-AO0wvaA;_MhChK@)#L zOA{4z$aw;Y!_)PXj_1Kv!(L)0=5xc6zgZvvAhd`h}as zyLu5bRao`!NU?-4kks)-9^Ew(5#Ibf8tjj&#o@_6Y*GRHBlQnX2I1ZL8te}`?&>YF z*K+|4Gk}r-J<{BO1}QYvE?)%xADInFYd1N!nFIw8zW%FizuyO{s&z3J9;bh6nQN}w z^rO^vF1}?2re12{ch9-jHAmGRPlkuv^4&)U!v~Do)z~1B0O|67V)B3V zCWNwr*p}5mwhc%yFCo;;a+b;#hp)cIO$@6%r_VBd3-Z;}WC;m?OfnN~J)k0jw}itU z_p_}p$yov<;<@5}kTT*v}+SpacBaEJdxqy_l6f|wVh;6tbe&q3=SeUIKYVfxO+ z@-c)?M&+2wy`V=Q$3TL(kc1Y`)E^Pge8^MXjSqEYflv>D2_e_{3{N=Ln_pJW1C?mv z05r8qscH2aDrUkZI9AK(M{T4t7B-t2#T)2b&q77XHTsXrqU&LQtcx~XjW?>5^xfaE zzWj8G$mFGTt> z(?g8^^>w&>;|xzVn9Ws-Q71lCGt#$)im}^3kCcZ4!%BGXd&e6yW3LiQ)V<0CQ2D-#;s^vTP~AxGQ|sqbb#$dGkM?W%uv zK5N$XdpB+k+?`Z3;(y&e68ObojRV0ycmF>Y8%Dc#6&aYGO(dKgqq4xr+A90PsfaY} zGoPU$&G7H_v45s%#zd)DbM2{+Z0egjFUDJ#RI@5+jMLDubZ2G>rB4oP-v3k>g$3ov zRo&lG;Ni%#QIB?^%3sz5b>}C#GRrB1BBOiQSzuddTmLmK-1K%h#PCvwbm-wBvnR_U z<&9-iNK)$aGzy9hf(RY9vvk5BZ6bOhmHX+}yc%*9R zQ+Dy7{mNT!IM`<==bLHqA96H-cc6?r6Tfk(H0kt^D;ggLCUfP9{2+>;1>iMD1{_K- zFtz6O-R?91!$=->)Z@e8XY|eB(GAyMxx($i+Vmz747f(1mZH&cfqJLR>CSYQZMWa! z*LA;*dkH|fNbo2+jC6%}x|@7u;<U#(ejUs{@sbGFQx{Tt#ZaauByW86xVc} zR}FM!ujfW|`lO$(5s?QZlK4~oY)aCmx?{{Ng8u)}Mcr+-gknRyDSzetcA2KP*jN>s z$Qqk{0vbjtbb0Us)V`clF^l8L%Ak{sOH0$f0A1+xzQEIw@uK7+(_h;|f{q$fYz?JmDUB!Y zvc?b3#ZM1Dtt5g`(b#oPDOqp~ItI44v~PY4a5%2&#d@by&Tc!+J&>;lO*azF(^uI@ zhbVTAuE)o9P&m-gc=R@k*~y8+^9l&Nc{KUiPTt*r5k6bcILlWe5&W|8NEdu=>@!VA zoVi7RpkMz@x0MRnl7=?NI32uG#Gk8dnoW|mXAc3|2`<{tPJK`&5kK!iP>s9S+U@N@ zxUu>(vRiRx*`WVGB8wuJhWPb)fC`kR78Yxv1Np=op@6H>aRa~LLJvZs?w_VkGG7R! z4+!EHblK7}QP;F)H>4q%t~bQDU>7diK8tY(?pKa$UG+4L)W%S4 zY#@ArXy1TM)7%C;BzHp&cWJpP!w6> zg$sA^AQu|`5%5eRe8=PLiZDsBvpHPlDdVa$tKXG>>Z8R~*3lWkZ=>j9O>0bRKphKj zy`EPIFgo<6?6?z~?{uo^7nhtQFf1n)S^Lojoc!wuhb2TK3>6`&vm^px(`2!u|3ATi z$OJ|x|IfWVdYtEU4~13x5|QHcW#>d8)B*CkE^nl$Hmp9BEuW<~FluH~B-G;if)r+1 zE$%%N6dukx85jM~z8NDS1&%|8w=9}}GrVcB= zS>2KJtlD_+C`I9wsSAZ4Gjy?cjR^{1Di2S~U_5GK!_|xIBOoWkr+jMrs(m5=)7<4J z9^tMwdBHK#6 z%zshghN#A;eCTR$92|L?rXOH=?ray$5EXL-%ER)<@IOmMd`1I?3>?>~svCZZXH^w( zsn~@5BCc)Yc=f?S?C);=ql*^Io+@!mMFu?Gu#$Z>dwspVu}RlgEeU#t2D-r(<7cO0 zctBu)98|_=oE_);bx~TI&=|c2lWa;1c8_GidX;}{JplsTvaHqrIA}YrOzNnF^ZSR; zMQ9n(KRB}hc1vszZ2*i#p6c&fcsLWJBe$qC@D$-l8QLV{}Y6!;O{0UyG82KxbN{NbpNWdS zO}Y<-AJ#L1fus67V{#*16;^M_*E65rF=Mb$!ZwiAW5?Js>LuYn1bBVLQ@2(8&H_|y zlL95F7nY4xII_-_pzq`kpPJX9iqD zXb0)ff4No*J(_YNMo5P=VvpEAi)sCE9pb{B+_igyGu*r8vMThPd}caCRhF1vpcbps z%`K)b_&>a1=O58gE-F2_Di++J%6cgPKRcYq+m>CrsvDimTeV22{aVZUsOyC8Ezn1f zze%=N7vq0IE^f1z`_Z|_;$_i`G5fNRH`lvf&pJlBW!i}W#87fV_A9U-Zk36DZAq~D z=K+8d88en)|8ve-gmcP8ECTWnM*Y`ph|R=fyOm)0QOU7s9OR-|2lR zce+@CPu{feO5hd{oXN z-Z0g&w+m~e#VSS}b5Hv1JBEMA0KQ@&B%`-!+^_Dy!yaJ_Ask>R4LT~y$8zsK+b#ws zX-Fw9vdN3h_C;ga#q0jy@HNF~db?gtIR@2GG?Rq@ZCh$Icv6kYP4<~x-haq+o^7O4 zafFMr-}mz~lkQ1(iuHur&WNktlC@R+jC=&J^O&F^20Olu>X3dL*iI$=2id;#@kGSa zw#kd2hQ1%*mhCpXa?th@|8Q^TJQeRyDl>|qimg#d8hbZ1LwO=mZ!Bdg&T(e7? zY|SM4dRmq#g>l5EQ&l8>EVw*%UL5@$GHLNQrtI_A_M^>_;>4NrFk&nF^er(6FSU^! zvcXSEJ9g|M;iPw&K^g8{Ohx&6Y+0_UR@h(;R{FAb9m6MOT7qR4NT)AntJv z-M2#BYODP4$um7_IkErF0;JSLz(suF6`?3~AH(0ilc)3|3!#V{s9Br*m@P1|U-Q8d z?J3nu--Zd$aTjZ|_nG20d6f|Nx7Oe}(;0LDOwyQ?x3$F4Q4wX)VtOxk#>Vl;Tk+C- zUl79!@UB(L4mCXRlta0I&M*CXP$ZD#*K|U=0Lt>w;^lo(n&&yQ548xQ|BaEQM!Ksr z&9&ce$)ngZ9;*A{c&M_u>`X9sn`vTw?UEDCw*ei`0$u(@BQ|F|#QZ<r|Ct>zZe6d><_QFy|1$joz zcWTIub-F3K@|K2rJ_Lz`c@xCIu6& zp8;679=$ldy8=)}V+2NMS*@0OK3C~JHKRsmpiPq!4F;64tUd(e2X(vU%c6QI87phO zb1%tH&}pm(#_eIXI|N;)1PjS~Xp_iso~J)e#yng4Y?;qj`rGq}7Ya9oNe35lT%`JB zCmqhND)T1SB{C4Q7IeO&?QHGlK7ZnuVB1|gS4-TP!F!A!`kJ2zJsN%GZKi*x)U=J2+^b>iCxSwh|N3 z<)B-$^QliBcS(M0^gksEn9>ZmvM%$kUv&S9xOD}h`9@?8^Iz1;H2-f~9U+Se0$;c3 z_{LR>jC^jSAp(uXeyg9)6O1kMw9wJBikKhxa0p8%T-ZC@GtJW|gX2vv z&pMY@w}1v5$I@Yg^tjVcMFs}f7SK{!J1uk2BXhu}#wpRMBq8!~)5uN(5_OOPr?&!V z+YBu~#{HF9paC;k{(}K zTBhOPA@$1L{rT#YM{GC^f^0Ambu#?7$(is$Qd#a#y4b@5F(5yY2_;4hh3PrQm9z)p z2&5@I0V@Bn$uo)KHF)Wi4i+fR-<{uBRc`K@s}P6NK%S>LKXF$Y_m$Ihe2~C;qBr1s zYGXjGzlmmiQU{IwHans)6UeEw+qw{p{cJzkdCq1Vc{PEZivgRaQ8=jSL=SG;kL`ll z@zY~Npila!Xb4Qp5>v+`f$++o*0bJ6M3&P3FZl4skk@zbWaQ}Z$F;Y5Ohu*Q7#2{C zBtyjGu$osp7N^odUypUnp8G~_R{0mU&yM2H!o$b{ogE*MS-daa?q^dUEy<@zKF!Uz zs6X`sp9`)?1>|Gbsvp>Y{L z1aCk9YDXo@u+{y`?2eG^oo4gLjF8uDuw8T#jYtn$#<{LWLRI@l8XRv5-!I z9@DV=Sp)85xV56UCRg3G#gz5XOE53$|ED0C8yPXM_TH8Z3l!VMFDS$RrwWgPfv!fM z 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 literal 0 HcmV?d00001 diff --git a/docs/images/send-data-different-backend.png b/docs/images/send-data-different-backend.png new file mode 100644 index 0000000000000000000000000000000000000000..ae9b81cd2e550ab4d527ac3000a430ace1a15f55 GIT binary patch literal 304812 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 z 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 0 { + existingTenantCustomRelabelConfigs = prometheus.Spec.RemoteWrite[0].WriteRelabelConfigs + } else { + existingTenantCustomRelabelConfigs = append(existingTenantCustomRelabelConfigs, defaultPrometheusConfig) + } + + err := r.Client.Get(context.TODO(), client.ObjectKey{Namespace: namespace, Name: "custom-relabel-configs"}, &configMap) + if err != nil { + if k8sErrors.IsNotFound(err) { + r.Log.Info("ConfigMap not found, returning empty relabel configs") + return existingTenantCustomRelabelConfigs + } + + r.Log.Error(err, "Failed to get ConfigMap %s", "custom-relabel-configs") + return existingTenantCustomRelabelConfigs + } + + relabelConfigs, ok := configMap.Data["relabel-configs"] + if !ok { + r.Log.Error(err, "Failed to get ConfigMap key relabel-configs", "custom-relabel-configs") + + publishErr := publishPrometheusErrEvent(r.Client, "CustomRelabelConfigReadError", namespace, prometheus, err) + if publishErr != nil { + r.Log.Error(publishErr, "Error sending error Event to K8s") + } + + return existingTenantCustomRelabelConfigs + } + + var configs []monitoringv1.RelabelConfig + err = yaml.Unmarshal([]byte(relabelConfigs), &configs) + if err != nil { + r.Log.Error(err, "Failed to unmarshal relabel-configs") + + publishErr := publishPrometheusErrEvent(r.Client, "CustomRelabelConfigUnmarshalError", namespace, prometheus, err) + if publishErr != nil { + r.Log.Error(publishErr, "Error sending error Event to K8s") + } + + return existingTenantCustomRelabelConfigs + } + + r.Log.Info(fmt.Sprintf("Successfully fetched Custom RelabelConfig ConfigMap Name for %s", namespace)) + + configs = append(configs, defaultPrometheusConfig) + + return configs +} + +func (r *PodMonitorReconciler) updatePrometheusObjectDef(monitor monitoringv1.PodMonitor, prometheus *monitoringv1.Prometheus, grafanaStackTenantMapping map[string]*grafanacloud.Stack, nodeSelectorTarget string) error { + replicas := int32(1) + shards := int32(1) + // It is important not to overwrite the whole ObjectMeta in order not to break + // the CreateOrUpdate function + var availableStorage string + availableStorage, err := getAvailableStorageFromNamespace(r.Client, monitor.Namespace, r.Log) + if err != nil { + return err + } + + prometheus.ObjectMeta.Annotations = map[string]string{ + Config.storageAnnotationKey: availableStorage, + Config.accountAnnotationKey: monitor.Namespace, + } + // If there were resources set up manually we keep them + // This is now required because big namespaces like serenity need big prometheus + // but we dont have a way (yet) to tell how much resources a given prometheus needs. + // if parent object doesnt have any resource, we set a default one. + resources := prometheus.Spec.Resources + if resources.Size() == 0 { + resources = defaultResourceRequirements + } + + var remoteWriteConfig []monitoringv1.RemoteWriteSpec + if r.EnableMetricsRemoteWrite && isGrafanaCloudStorageEnabled(monitor.ObjectMeta) { + for stack, grafanaCloudStack := range grafanaStackTenantMapping { + remoteWriteConfig = append(remoteWriteConfig, monitoringv1.RemoteWriteSpec{ + URL: fmt.Sprintf("%s/api/prom/push", grafanaCloudStack.PromURL), + BasicAuth: &monitoringv1.BasicAuth{ + Username: corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: r.GrafanaCloudCredentials, + }, + Key: stack, + }, + Password: corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: r.GrafanaCloudCredentials, + }, + Key: "grafana-cloud-api-key", + }, + }, + WriteRelabelConfigs: r.getTenantCustomRelabelConfigs(monitor.Namespace, prometheus), + }) + } + } + + if secret, ok, _ := r.getNamespacedNameObjectFromAnnotation(monitor, Config.remoteWriteAnnotationKey); ok { + remoteWriteConfig, err = r.remoteWriteConfigFromSecret(*secret) + if err != nil { + publishErr := r.publishErrEvent("RemoteWriteConfigFromSecret", monitor, err) + if publishErr != nil { + r.Log.Error(publishErr, "Error sending error Event to K8s") + } + return err + } + } + var alertingConfig *monitoringv1.AlertingSpec + if alertingConfigMap, ok, _ := r.getNamespacedNameObjectFromAnnotation(monitor, Config.alertManagerAnnotationKey); ok { + alertingConfig, err = r.alertManagerConfigFromConfigMap(*alertingConfigMap) + if err != nil { + publishErr := r.publishErrEvent("alertManagerconfigFromConfigMap", monitor, err) + if publishErr != nil { + r.Log.Error(publishErr, "Error sending Event to K8s") + } + return err + } + } + mergedLabels := map[string]string{ + "cluster": r.ClusterName, + "monitor": "prometheus-local", + "account": monitor.Namespace, + "region": r.Region, + } + + for k, v := range r.PrometheusExtraExternalLabels { + mergedLabels[k] = v + } + + prometheus.Spec = monitoringv1.PrometheusSpec{ + ListenLocal: false, + Paused: false, + PortName: "web", + PriorityClassName: r.PrometheusPodPriorityClassName, + RoutePrefix: "/", + Retention: "30m", + ServiceAccountName: r.PrometheusServiceAccountName, + LogFormat: "logfmt", + LogLevel: "warn", + Replicas: &replicas, + Shards: &shards, + Version: r.PrometheusDockerImage.Tag, + BaseImage: r.PrometheusDockerImage.Name, + ExternalURL: "http://" + monitor.Namespace + "-metrics." + r.PrometheusExposedDomain, + RemoteWrite: remoteWriteConfig, + Alerting: alertingConfig, + ExternalLabels: mergedLabels, + PodMetadata: &monitoringv1.EmbeddedObjectMetadata{ + Labels: map[string]string{ + Config.accountLabelKey: monitor.Namespace, + }, + }, + PodMonitorNamespaceSelector: &metav1.LabelSelector{}, + PodMonitorSelector: &metav1.LabelSelector{ + MatchLabels: map[string]string{ + Config.accountLabelKey: monitor.Namespace, + }, + }, + RuleNamespaceSelector: &metav1.LabelSelector{ + MatchLabels: map[string]string{ + "name": monitor.Namespace, + }, + }, + RuleSelector: &metav1.LabelSelector{}, + ServiceMonitorNamespaceSelector: &metav1.LabelSelector{}, + ServiceMonitorSelector: &metav1.LabelSelector{ + MatchLabels: map[string]string{ + Config.accountLabelKey: monitor.Namespace, + }, + }, + Resources: resources, + } + + if r.PrometheusMonitoringTarget != "" { + prometheus.Spec.AdditionalScrapeConfigs = &corev1.SecretKeySelector{ + Key: "prometheus", + LocalObjectReference: corev1.LocalObjectReference{Name: r.secretName(prometheus, r.PrometheusMonitoringTarget)}, + } + } + + if nodeSelectorTarget != "" { + prometheus.Spec.NodeSelector = map[string]string{ + nodeSelectorTarget: "true", + } + prometheus.Spec.Tolerations = []corev1.Toleration{ + { + Key: nodeSelectorTarget, + Operator: "Equal", + Value: "true", + Effect: "NoSchedule", + }, + } + } + return nil +} + +func (r *PodMonitorReconciler) createOrUpdateAdditionalScrappingConfig(prometheus *monitoringv1.Prometheus, monitoringTargetName string) error { + ctx := context.Background() + + additionalScrapingConfigSecret := r.newAdditionalScrapingSecretDef(prometheus, monitoringTargetName) + + _, err := ctrl.CreateOrUpdate( + ctx, + r.Client, + additionalScrapingConfigSecret, + func() error { + err := r.updateAdditionalScrappingSecretDef(prometheus, additionalScrapingConfigSecret, monitoringTargetName) + if err != nil { + r.Log.Error(err, "Failed to update secret with additional scrapping config") + prometheusErrors.WithLabelValues(prometheus.Name, prometheus.Namespace, additionalScrapingConfigSecret.Kind).Inc() + return err + } + + err = controllerutil.SetOwnerReference(prometheus, additionalScrapingConfigSecret, r.Scheme) + if err != nil { + r.Log.Error(err, "Failed to assign owner reference to the secret with additional scrapping config") + prometheusErrors.WithLabelValues(prometheus.Name, prometheus.Namespace, additionalScrapingConfigSecret.Kind).Inc() + err = fmt.Errorf("%v %v", additionalScrapingConfigSecret, err) + return err + } + + return nil + }, + ) + return err +} + +func (r *PodMonitorReconciler) createOrUpdatePrometheusRules(monitor monitoringv1.PodMonitor, prometheus *monitoringv1.Prometheus) error { + ruleName := "prometheus-remote-write-behind-seconds" + rules := []monitoringv1.Rule{ + { + Record: strings.ReplaceAll(ruleName, "-", "_"), + Expr: intstr.FromString( + "max_over_time(prometheus_remote_storage_highest_timestamp_in_seconds{job=\"prometheus-scraper\"}[2m]) " + + "- ignoring(remote_name, url) group_right " + + "max_over_time(prometheus_remote_storage_queue_highest_sent_timestamp_seconds{job=\"prometheus-scraper\"}[2m])"), + }, + } + err := r.createOrUpdateInternalPrometheusRule(prometheus, ruleName, rules) + if err != nil { + r.Log.Error(err, "Can not create or update a prometheus rule", "prometheus", prometheus.Name, "prometheusRule", ruleName) + return err + } + if monitor.Spec.SampleLimit > 0 { + ruleName = "scrape-config-sample-limit" + rules = []monitoringv1.Rule{ + { + Record: strings.ReplaceAll(ruleName, "-", "_"), + Expr: intstr.FromInt(int(monitor.Spec.SampleLimit)), + Labels: map[string]string{ + "job": fmt.Sprintf("%s/%s", monitor.Namespace, monitor.Name), + "namespace": monitor.Namespace, + }, + }, + } + err = r.createOrUpdatePrometheusRule(&monitor, fmt.Sprintf("%s-%s", monitor.GetName(), ruleName), rules) + if err != nil { + r.Log.Error(err, "Can not create or update a prometheus rule", "prometheus", prometheus.Name, "prometheusRule", ruleName) + return err + } + } + + ruleName = "prometheus-remote-write-storage-failures-percentage" + rules = []monitoringv1.Rule{ + { + Record: strings.ReplaceAll(ruleName, "-", "_"), + Expr: intstr.FromString("(rate(prometheus_remote_storage_failed_samples_total{job=\"prometheus-scraper\"}[2m])/(rate(prometheus_remote_storage_failed_samples_total{job=\"prometheus-scraper\"}[2m])+rate(prometheus_remote_storage_succeeded_samples_total{job=\"prometheus-scraper\"}[2m])))* 100"), + }, + } + err = r.createOrUpdateInternalPrometheusRule(prometheus, ruleName, rules) + if err != nil { + r.Log.Error(err, "Can not create or update a prometheus rule", "prometheus", prometheus.Name, "prometheusRule", ruleName) + return err + } + return nil +} + +func (r *PodMonitorReconciler) createOrUpdateInternalPrometheusRule(owner metav1.Object, name string, rules []monitoringv1.Rule) error { + return r.createOrUpdatePrometheusRule(owner, fmt.Sprintf("%s-%s", getObjectName(owner), name), rules) +} + +func (r *PodMonitorReconciler) createOrUpdatePrometheusRule(owner metav1.Object, name string, rules []monitoringv1.Rule) error { + ctx := context.Background() + + prometheusRule := r.newPrometheusRuleObjectDef(owner.GetNamespace(), name) + + _, err := ctrl.CreateOrUpdate( + ctx, + r.Client, + prometheusRule, + func() error { + err := r.updatePrometheusRuleObjectDef(owner, prometheusRule, rules) + if err != nil { + r.Log.Error(err, "Failed to update prometheus rule") + prometheusErrors.WithLabelValues(owner.GetName(), owner.GetNamespace(), prometheusRule.Kind).Inc() + return err + } + + err = controllerutil.SetOwnerReference(owner, prometheusRule, r.Scheme) + if err != nil { + r.Log.Error(err, "Failed to assign owner reference to prometheus rule") + prometheusErrors.WithLabelValues(owner.GetName(), owner.GetNamespace(), prometheusRule.Kind).Inc() + return err + } + + return nil + }, + ) + return err +} + +func (r *PodMonitorReconciler) newPrometheusRuleObjectDef(namespace, name string) *monitoringv1.PrometheusRule { + return &monitoringv1.PrometheusRule{ + ObjectMeta: metav1.ObjectMeta{ + Name: name, + Namespace: namespace, + }, + } +} +func (r *PodMonitorReconciler) updatePrometheusRuleObjectDef(owner metav1.Object, prometheusRule *monitoringv1.PrometheusRule, rules []monitoringv1.Rule) error { + + tenantNamespace, found := owner.GetAnnotations()[Config.accountAnnotationKey] + if !found { + return errors.New("annotation" + Config.accountAnnotationKey + " not found in owner Object.") + } + + prometheusRule.ObjectMeta.Labels = map[string]string{ + Config.accountLabelKey: tenantNamespace, + } + prometheusRule.Spec = monitoringv1.PrometheusRuleSpec{ + Groups: []monitoringv1.RuleGroup{ + { + Name: prometheusRule.ObjectMeta.Name, + Rules: rules, + }, + }, + } + return nil +} + +func (r *PodMonitorReconciler) secretName(prometheus *monitoringv1.Prometheus, targetMonitor string) string { + return fmt.Sprintf("%s-%s", getObjectName(prometheus), targetMonitor) +} + +func (r *PodMonitorReconciler) newAdditionalScrapingSecretDef(prometheus *monitoringv1.Prometheus, targetMonitor string) *corev1.Secret { + return &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: r.secretName(prometheus, targetMonitor), + Namespace: prometheus.Namespace, + }, + } + +} + +func (r *PodMonitorReconciler) updateAdditionalScrappingSecretDef(prometheus *monitoringv1.Prometheus, cm *corev1.Secret, targetMonitor string) error { + tenantNamespace, found := prometheus.Spec.PodMetadata.Labels[Config.accountLabelKey] + if !found { + return errors.New("Pod metadata label " + Config.accountLabelKey + " not found in Prometheus.") + } + cm.ObjectMeta.Labels = map[string]string{ + Config.accountLabelKey: tenantNamespace, + } + + additionalScrapeConfig := PrometheusAdditionalScrapeConfig{} + scrapper := newIngressAndClusterScraper() + scrapper.JobName = fmt.Sprintf("%s/prometheus-%s-%s/0", prometheus.Namespace, tenantNamespace, targetMonitor) + scrapper.ServiceDiscoveryConfigs = append(scrapper.ServiceDiscoveryConfigs, &kubernetes.SDConfig{ + Role: kubernetes.RoleService, + NamespaceDiscovery: kubernetes.NamespaceDiscovery{ + Names: []string{prometheus.Namespace}, + }, + HTTPClientConfig: promcommonconfig.DefaultHTTPClientConfig, + }) + scrapper.Params.Add("match[]", fmt.Sprintf(`{federate="true", namespace="%s"}`, tenantNamespace)) + + additionalScrapeConfig = append(additionalScrapeConfig, &prometheusLocalScrapper) + additionalScrapeConfig = append(additionalScrapeConfig, &scrapper) + + data, err := yaml.Marshal(additionalScrapeConfig) + if err != nil { + return fmt.Errorf("There was an error Marshalling the additional scrapping config %v", err) + } + + cm.StringData = map[string]string{ + "prometheus": fixPrometheusConfig(string(data)), + } + + return nil +} + +func fixPrometheusConfig(cfg string) string { + redirectRe := regexp.MustCompile("[ ]*follow_redirects:[ ]+(false|true)") + + kubeconfigFileRe := regexp.MustCompile(`[ ]*kubeconfig_file:[ ]+""`) + // For some reason, the prometheus serializer generates an additional follow_reditect: false + // at the root of the kubernetes service discovery while it's set to true inside + cfg = redirectRe.ReplaceAllString(cfg, "") + cfg = kubeconfigFileRe.ReplaceAllString(cfg, "") + return cfg +} + +func (r *PodMonitorReconciler) createOrUpdateAdditionalScrappingConfiguration(prometheus *monitoringv1.Prometheus) error { + targetName := r.PrometheusMonitoringTarget + err := r.createOrUpdateAdditionalScrappingConfig(prometheus, targetName) + if err != nil { + r.Log.Error(err, "Can not create or update the secret with additional scrapping config", "prometheus", prometheus.Name, "secretName", targetName) + return err + } + + return nil +} + +func (r *PodMonitorReconciler) removeFinalizer(podMonitor *monitoringv1.PodMonitor) error { + controllerutil.RemoveFinalizer(podMonitor, Config.podmonitorFinalizer) + if err := r.Update(context.Background(), podMonitor); err != nil { + return err + } + + if err := r.deletePrometheusIfNotRequired(*podMonitor); err != nil { + return err + } + return nil +} +func (r *PodMonitorReconciler) handleFinalizers(podMonitor *monitoringv1.PodMonitor) (bool, error) { + + podMonitorWithFinalizer := controllerutil.ContainsFinalizer(podMonitor, Config.podmonitorFinalizer) + // examine DeletionTimestamp to determine if object is under deletion + if podMonitor.ObjectMeta.DeletionTimestamp.IsZero() { + // The object is not being deleted, so if it does not have our finalizer, + // then lets add the finalizer and update the object. This is equivalent + // registering our finalizer. + if !podMonitorWithFinalizer { + podMonitor.ObjectMeta.Finalizers = append(podMonitor.ObjectMeta.Finalizers, Config.podmonitorFinalizer) + if err := r.Update(context.Background(), podMonitor); err != nil { + return true, err + } + } + return false, nil + } + if podMonitorWithFinalizer { + if err := r.removeFinalizer(podMonitor); err != nil { + return true, err + } + } + return true, nil +} + +func (r *PodMonitorReconciler) createOrUpdatePrometheus(monitor monitoringv1.PodMonitor, prometheus *monitoringv1.Prometheus, grafanaStackTenantMapping map[string]*grafanacloud.Stack, nodeSelectorTarget string) error { + ctx := context.Background() + _, err := ctrl.CreateOrUpdate( + ctx, + r.Client, + prometheus, + func() error { + return r.updatePrometheusObjectDef(monitor, prometheus, grafanaStackTenantMapping, nodeSelectorTarget) + }, + ) + if err != nil { + prometheusErrors.WithLabelValues(prometheus.Name, prometheus.Namespace, prometheus.Kind).Inc() + return err + } + + return nil +} + +func (r *PodMonitorReconciler) createOrUpdateVerticalPodAutoscaler(prometheus *monitoringv1.Prometheus) error { + updateModeAuto := vpav1.UpdateMode("Auto") + vpa := &vpav1.VerticalPodAutoscaler{ObjectMeta: metav1.ObjectMeta{Name: prometheus.Name, Namespace: prometheus.Namespace}} + + ctx := context.Background() + _, err := ctrl.CreateOrUpdate( + ctx, + r.Client, + vpa, + func() error { + vpa.Spec = vpav1.VerticalPodAutoscalerSpec{ + UpdatePolicy: &vpav1.PodUpdatePolicy{ + UpdateMode: &updateModeAuto, + }, + ResourcePolicy: &vpav1.PodResourcePolicy{ + ContainerPolicies: []vpav1.ContainerResourcePolicy{{ + ContainerName: "prometheus", + MaxAllowed: corev1.ResourceList{ + corev1.ResourceCPU: *resource.NewQuantity(8, resource.BinarySI), + }, + }}}, + } + + targetRef := &autoscaling.CrossVersionObjectReference{ + APIVersion: monitoringv1.SchemeGroupVersion.String(), + Kind: "Prometheus", + Name: prometheus.Name, + } + vpa.Spec.TargetRef = targetRef + err := controllerutil.SetOwnerReference(prometheus, vpa, r.Scheme) + return err + }, + ) + return err +} + +func (r *PodMonitorReconciler) SetupWithManager(mgr ctrl.Manager) error { + return ctrl.NewControllerManagedBy(mgr). + For(&monitoringv1.PodMonitor{}). + Complete(r) +} diff --git a/pkg/controllers/podmonitor_controller_test.go b/pkg/controllers/podmonitor_controller_test.go new file mode 100644 index 0000000..bd9e588 --- /dev/null +++ b/pkg/controllers/podmonitor_controller_test.go @@ -0,0 +1,1933 @@ +package controllers + +import ( + "context" + "fmt" + "math/rand" + "os" + "testing" + "time" + + "github.com/adevinta/observability-operator/pkg/grafanacloud" + "github.com/adevinta/observability-operator/pkg/test_helpers" + monitoringv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "gopkg.in/yaml.v3" + corev1 "k8s.io/api/core/v1" + k8serrors "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/intstr" + vpav1 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +func newNamespace(name string) *corev1.Namespace { + return &corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{ + Name: name, + }, + } +} + +func newDefaultTestPodMonitorReconciler(t *testing.T, initialObjects ...runtime.Object) *PodMonitorReconciler { + t.Helper() + scheme := runtime.NewScheme() + _ = monitoringv1.AddToScheme(scheme) + os.Setenv("GRAFANA_CLOUD_TOKEN", "zzzz") + grafanaCloudClient := mockGrafanaCloudClient{ + GetStackFunc: func(tenant string) (*grafanacloud.Stack, error) { + return nil, nil + }, + } + + fakeClient := test_helpers.NewFakeClient(t, initialObjects...) + return &PodMonitorReconciler{ + Client: fakeClient, + Region: "eu-fake-1", + PrometheusDockerImage: DockerImage{ + Name: "foo", + Tag: "v0.0.1", + }, + PrometheusNamespace: "prometheusesNamespace", + PrometheusExposedDomain: "clustername.clusterdomain", + ClusterName: "clustername", + Log: ctrl.Log.WithName("controllers").WithName("Deployment"), + Scheme: scheme, + GrafanaCloudCredentials: "observability-operator-grafana-cloud-credentials", + GrafanaCloudClient: &grafanaCloudClient, + PrometheusServiceAccountName: "prometheus-tenant", + PrometheusMonitoringTarget: "monitoring-target", + PrometheusExtraExternalLabels: map[string]string{ + "mycustomkey": "mycustomvalue", + }, + } +} + +func createCustomStorageSecretStub(namespace string) (*corev1.Secret, *corev1.Secret, *corev1.Secret) { + remoteWrite := ` + basicAuth: + password: + key: password + name: secret2 + username: + key: username + name: secret1 + url: https://victoria-metrics-url` + + remoteWriteSecret := &corev1.Secret{ + ObjectMeta: ctrl.ObjectMeta{ + Name: "secret-storage", + Namespace: namespace, + Annotations: map[string]string{ + Config.referencedSecretAnnotationKeys: "secret1,secret2", + }, + }, + Data: map[string][]uint8{ + "remote-write": []byte(remoteWrite), + }, + } + secret1 := &corev1.Secret{ + ObjectMeta: ctrl.ObjectMeta{ + Name: "secret1", + Namespace: namespace, + }, + Data: map[string][]uint8{ + "username": []byte("foo"), + }, + } + + secret2 := &corev1.Secret{ + ObjectMeta: ctrl.ObjectMeta{ + Name: "secret2", + Namespace: namespace, + }, + Data: map[string][]uint8{ + "password": []byte("bar"), + }, + } + + return remoteWriteSecret, secret1, secret2 +} + +func createSecretStub(namespace string) *corev1.Secret { + return &corev1.Secret{ + ObjectMeta: ctrl.ObjectMeta{ + Name: "observability-operator-grafana-cloud-credentials", + Namespace: namespace, + }, + Data: map[string][]uint8{ + "grafana-cloud-api-key": []byte("xxx"), + "grafana-cloud-traces-token": []byte("yyy"), + }, + } +} + +func getScrappingConfig() (PrometheusAdditionalScrapeConfig, error) { + var scrap PrometheusAdditionalScrapeConfig + b, err := os.ReadFile("fixtures/additional_scrapping_config") + if err != nil { + return scrap, err + } + err = yaml.Unmarshal(b, &scrap) + if err != nil { + return scrap, err + } + return scrap, err +} + +func createPodStub(name, namespace string) *corev1.Pod { + return &corev1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: name, + Namespace: namespace, + Labels: map[string]string{"app": name}, + }, + Spec: corev1.PodSpec{}, + } +} + +func createPodMonitor(namespace string, name string) *monitoringv1.PodMonitor { + return &monitoringv1.PodMonitor{ + ObjectMeta: ctrl.ObjectMeta{ + Namespace: namespace, + Name: name, + }, + } +} + +func createPrometheusObject(namespace string, name string) *monitoringv1.Prometheus { + replicas := int32(1) + shards := int32(1) + return &monitoringv1.Prometheus{ + ObjectMeta: ctrl.ObjectMeta{ + Name: name, + Namespace: namespace, + Annotations: map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + Config.accountAnnotationKey: name, + }, + }, + Spec: monitoringv1.PrometheusSpec{ + AdditionalScrapeConfigs: &corev1.SecretKeySelector{ + Key: "prometheus", + LocalObjectReference: corev1.LocalObjectReference{Name: fmt.Sprintf("prometheus-%s-monitoring-target", name)}, + }, + PodMetadata: &monitoringv1.EmbeddedObjectMetadata{ + Labels: map[string]string{ + Config.accountLabelKey: name, + }, + }, + ServiceMonitorSelector: &metav1.LabelSelector{ + MatchLabels: map[string]string{Config.accountLabelKey: name}, + }, + PodMonitorSelector: &metav1.LabelSelector{ + MatchLabels: map[string]string{Config.accountLabelKey: name}, + }, + RuleNamespaceSelector: &metav1.LabelSelector{ + MatchLabels: map[string]string{ + "name": name, + }, + }, + ServiceMonitorNamespaceSelector: &metav1.LabelSelector{}, + PodMonitorNamespaceSelector: &metav1.LabelSelector{}, + RoutePrefix: "/", + ServiceAccountName: "prometheus-tenant", + PortName: "web", + Version: "v0.0.1", + BaseImage: "foo", + Replicas: &replicas, + Shards: &shards, + LogLevel: "warn", + LogFormat: "logfmt", + Retention: "30m", + Resources: defaultResourceRequirements, + ExternalLabels: map[string]string{ + "cluster": "clustername", + "region": "eu-fake-1", + "account": name, + "monitor": "prometheus-local", + "mycustomkey": "mycustomvalue", + }, + ExternalURL: fmt.Sprintf("http://%s-metrics.clustername.clusterdomain", name), + RemoteWrite: []monitoringv1.RemoteWriteSpec{{ + URL: "https://prometheus-us-central1.grafana.net/api/prom/push", + BasicAuth: &monitoringv1.BasicAuth{ + Username: corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: "observability-operator-grafana-cloud-credentials", + }, + Key: "adevintaruntime", + }, + Password: corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: "observability-operator-grafana-cloud-credentials", + }, + Key: "grafana-cloud-api-key", + }, + }, + WriteRelabelConfigs: []monitoringv1.RelabelConfig{ + { + Action: "drop", + SourceLabels: []string{"__name__"}, + Regex: "prometheus_.*", + }, + }, + }}, + RuleSelector: &metav1.LabelSelector{}, + }, + } +} + +func createIngressServiceMonitor() *monitoringv1.ServiceMonitor { + return &monitoringv1.ServiceMonitor{ + ObjectMeta: metav1.ObjectMeta{ + Name: "prometheus-podmonitorNamespace-adevinta-ingress-metrics", + Namespace: "prometheusesNamespace", + Labels: map[string]string{ + Config.accountLabelKey: "podmonitorNamespace", + }, + OwnerReferences: []metav1.OwnerReference{ + { + APIVersion: "monitoring.coreos.com/v1", + Kind: "Prometheus", + Name: "podmonitorNamespace", + UID: "", + Controller: nil, + BlockOwnerDeletion: nil, + }, + }, + }, + Spec: monitoringv1.ServiceMonitorSpec{ + Endpoints: []monitoringv1.Endpoint{ + { + Interval: "30s", + Params: map[string][]string{ + "match[]": {"{federate=\"true\", namespace=\"podmonitorNamespace\"}"}, + }, + Path: "/federate", + RelabelConfigs: []*monitoringv1.RelabelConfig{ + { + Action: "labeldrop", + Regex: "pod", + }, + { + Action: "labeldrop", + Regex: "node", + }, + { + Action: "labeldrop", + Regex: "namespace", + }, + }, + MetricRelabelConfigs: []*monitoringv1.RelabelConfig{ + { + Action: "labeldrop", + Regex: "federate", + }, + }, + HonorLabels: true, + }, + }, + Selector: metav1.LabelSelector{ + MatchLabels: map[string]string{ + "release": "adevinta-ingress-metrics", + }, + }, + }, + } +} + +func createRemoteWriteBehindSecondsPrometheusRule() *monitoringv1.PrometheusRule { + return &monitoringv1.PrometheusRule{ + ObjectMeta: metav1.ObjectMeta{ + Name: "prometheus-podmonitorNamespace-prometheus-remote-write-behind-seconds", + Namespace: "prometheusesNamespace", + Labels: map[string]string{ + Config.accountLabelKey: "podmonitorNamespace", + }, + OwnerReferences: []metav1.OwnerReference{ + { + APIVersion: "monitoring.coreos.com/v1", + Kind: "Prometheus", + Name: "podmonitorNamespace", + UID: "", + Controller: nil, + BlockOwnerDeletion: nil, + }, + }, + }, + Spec: monitoringv1.PrometheusRuleSpec{ + Groups: []monitoringv1.RuleGroup{ + { + Name: "prometheus-podmonitorNamespace-prometheus-remote-write-behind-seconds", + Rules: []monitoringv1.Rule{ + { + Record: "prometheus_remote_write_behind_seconds", + Expr: intstr.FromString( + "max_over_time(prometheus_remote_storage_highest_timestamp_in_seconds{job=\"prometheus-scraper\"}[2m]) " + + "- ignoring(remote_name, url) group_right " + + "max_over_time(prometheus_remote_storage_queue_highest_sent_timestamp_seconds{job=\"prometheus-scraper\"}[2m])"), + }, + }, + }, + }, + }, + } +} + +func createRemoteWriteStorageFailuresPercentPrometheusRule() *monitoringv1.PrometheusRule { + return &monitoringv1.PrometheusRule{ + ObjectMeta: metav1.ObjectMeta{ + Name: "prometheus-podmonitorNamespace-prometheus-remote-write-storage-failures-percentage", + Namespace: "prometheusesNamespace", + Labels: map[string]string{ + Config.accountLabelKey: "podmonitorNamespace", + }, + OwnerReferences: []metav1.OwnerReference{ + { + APIVersion: "monitoring.coreos.com/v1", + Kind: "Prometheus", + Name: "podmonitorNamespace", + UID: "", + Controller: nil, + BlockOwnerDeletion: nil, + }, + }, + }, + Spec: monitoringv1.PrometheusRuleSpec{ + Groups: []monitoringv1.RuleGroup{ + { + Name: "prometheus-podmonitorNamespace-prometheus-remote-write-storage-failures-percentage", + Rules: []monitoringv1.Rule{ + { + Record: "prometheus_remote_write_storage_failures_percentage", + Expr: intstr.FromString("(rate(prometheus_remote_storage_failed_samples_total{job=\"prometheus-scraper\"}[2m])/(rate(prometheus_remote_storage_failed_samples_total{job=\"prometheus-scraper\"}[2m])+rate(prometheus_remote_storage_succeeded_samples_total{job=\"prometheus-scraper\"}[2m])))* 100"), + }, + }, + }, + }, + }, + } +} + +func createPrometheusRulesWithoutSampleLimit() []*monitoringv1.PrometheusRule { + return []*monitoringv1.PrometheusRule{ + createRemoteWriteBehindSecondsPrometheusRule(), + createRemoteWriteStorageFailuresPercentPrometheusRule(), + } +} + +func getRecordingRuleByRecordName(prometheusRules []*monitoringv1.PrometheusRule, recordName string) monitoringv1.Rule { + for _, promRules := range prometheusRules { + for _, groups := range promRules.Spec.Groups { + for _, rule := range groups.Rules { + if rule.Record == recordName { + return rule + } + } + } + } + return monitoringv1.Rule{} +} + +func TestPodMonitorWithoutStorageDoesNotCreatePrometheus(t *testing.T) { + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + reconciler := newDefaultTestPodMonitorReconciler(t, podmonitor) + reconciler.EnableMetricsRemoteWrite = true + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.Nil(t, err) + require.NotNil(t, result) + + prometheuses := &monitoringv1.PrometheusList{} + + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + assert.Len(t, prometheuses.Items, 0) +} + +func TestPodMonitorWithoutStorageDoesNotCreatePrometheusRules(t *testing.T) { + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + reconciler := newDefaultTestPodMonitorReconciler(t, podmonitor) + reconciler.EnableMetricsRemoteWrite = true + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.Nil(t, err) + require.NotNil(t, result) + prometheusRules := &monitoringv1.PrometheusRuleList{} + + require.NoError(t, reconciler.Client.List(context.Background(), prometheusRules)) + assert.Len(t, prometheusRules.Items, 0) +} + +func TestPodMonitorWithoutStorageDoesNotCreateIngressServiceMonitor(t *testing.T) { + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + reconciler := newDefaultTestPodMonitorReconciler(t, podmonitor) + reconciler.EnableMetricsRemoteWrite = true + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.Nil(t, err) + require.NotNil(t, result) + serviceMonitors := &monitoringv1.ServiceMonitorList{} + + require.NoError(t, reconciler.Client.List(context.Background(), serviceMonitors)) + assert.Len(t, serviceMonitors.Items, 0) +} + +func TestPodMonitorWithGrafanaCloudStorageCreatesPrometheus(t *testing.T) { + grafanaCloudClient := mockGrafanaCloudClient{ + GetStackFunc: func(tenant string) (*grafanacloud.Stack, error) { + stack := grafanacloud.Stack{ + PromURL: "https://prometheus-us-central1.grafana.net", + } + return &stack, nil + }, + } + + t.Run("it should create the prometheus object", func(t *testing.T) { + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + } + podMonitorNamespace := newNamespace(podmonitor.Namespace) + podMonitorNamespace.SetAnnotations(map[string]string{ + Config.stackNameAnnotationKey: "adevintaruntime", + }) + reconciler := newDefaultTestPodMonitorReconciler( + t, + podmonitor, createSecretStub("prometheusesNamespace"), + newNamespace("prometheusesNamespace"), + podMonitorNamespace, + ) + reconciler.PrometheusPodPriorityClassName = "prometheus-priority-class" + reconciler.EnableMetricsRemoteWrite = true + reconciler.PrometheusNamespace = "prometheusesNamespace" + reconciler.GrafanaCloudClient = &grafanaCloudClient + + expectedPrometheus := createPrometheusObject("prometheusesNamespace", "podmonitorNamespace") + expectedPrometheus.Spec.PriorityClassName = "prometheus-priority-class" + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.Nil(t, err) + assert.NotNil(t, result) + + prometheuses := &monitoringv1.PrometheusList{} + + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + require.Len(t, prometheuses.Items, 1) + expectedPrometheus.Spec.PodMetadata.Annotations = prometheuses.Items[0].Spec.PodMetadata.Annotations + expectedPrometheus.ResourceVersion = prometheuses.Items[0].ResourceVersion + assert.Equal(t, *expectedPrometheus, *prometheuses.Items[0]) + }) + + t.Run("it should fail if the grafana API returns a non-200 listing the stacks.", func(t *testing.T) { + grafanaCloudClient := mockGrafanaCloudClient{ + GetStackFunc: func(tenant string) (*grafanacloud.Stack, error) { + return nil, fmt.Errorf("not found") + }, + } + + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + } + reconciler := newDefaultTestPodMonitorReconciler( + t, + podmonitor, createSecretStub("prometheusesNamespace"), + newNamespace("prometheusesNamespace"), + newNamespace(podmonitor.Namespace), + ) + reconciler.EnableMetricsRemoteWrite = true + reconciler.PrometheusNamespace = "prometheusesNamespace" + reconciler.GrafanaCloudClient = &grafanaCloudClient + + expectedPrometheus := createPrometheusObject("prometheusesNamespace", "podmonitorNamespace") + + // Declaring the []monitoringv1.RemoteWriteSpec slice at assignment makes the value nil instead of an empty slice. + // -> var remoteWriteConfig []monitoringv1.RemoteWriteSpec creates an empty slice. + // -> expectedPrometheus.Spec.RemoteWrite = []monitoringv1.RemoteWriteSpec{} creates a nil slice. + // The test expects an empty slice. + var remoteWriteConfig []monitoringv1.RemoteWriteSpec + expectedPrometheus.Spec.RemoteWrite = remoteWriteConfig + + _, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + assert.Error(t, err) + + prometheuses := &monitoringv1.PrometheusList{} + + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + assert.Equal(t, len(prometheuses.Items), 0) + }) + + t.Run("if a Prometheus existed, the remoteWriteconfig should be kept when the grafana API fails listing the stacks with a non-200 return code.", func(t *testing.T) { + grafanaCloudClient := mockGrafanaCloudClient{ + GetStackFunc: func(tenant string) (*grafanacloud.Stack, error) { + return nil, fmt.Errorf("not found") + }, + } + + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + } + + prom := createPrometheusObject("prometheusesNamespace", "podmonitorNamespace") + prom.Spec.RemoteWrite = []monitoringv1.RemoteWriteSpec{{ + Name: "a-test-connection-remote-write", + URL: "grafana-api-to-send-labels.com", + }} + expectedRemoteWrite := prom.Spec.RemoteWrite + + reconciler := newDefaultTestPodMonitorReconciler( + t, + podmonitor, createSecretStub("prometheusesNamespace"), + newNamespace("prometheusesNamespace"), + newNamespace(podmonitor.Namespace), + prom, + ) + reconciler.EnableMetricsRemoteWrite = true + reconciler.PrometheusNamespace = "prometheusesNamespace" + reconciler.GrafanaCloudClient = &grafanaCloudClient + + _, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + assert.Error(t, err) + + prometheuses := &monitoringv1.PrometheusList{} + + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + assert.Equal(t, len(prometheuses.Items), 1) + assert.Equal(t, expectedRemoteWrite, prometheuses.Items[0].Spec.RemoteWrite) + }) +} + +func TestPodMonitorWithCustomRelabelConfigs(t *testing.T) { + grafanaCloudClient := mockGrafanaCloudClient{ + GetStackFunc: func(tenant string) (*grafanacloud.Stack, error) { + stack := grafanacloud.Stack{ + PromURL: "https://prometheus-us-central1.grafana.net", + } + return &stack, nil + }, + } + t.Run("it should create the prometheus object with a relabel config", func(t *testing.T) { + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + } + podMonitorNamespace := newNamespace(podmonitor.Namespace) + podMonitorNamespace.SetAnnotations(map[string]string{ + Config.stackNameAnnotationKey: "adevintaruntime", + }) + reconciler := newDefaultTestPodMonitorReconciler( + t, + podmonitor, createSecretStub("prometheusesNamespace"), + newNamespace("prometheusesNamespace"), + podMonitorNamespace, + createConfigMapRulesStub("custom-relabel-configs", podmonitor.Namespace), + ) + reconciler.EnableMetricsRemoteWrite = true + reconciler.PrometheusNamespace = "prometheusesNamespace" + reconciler.GrafanaCloudClient = &grafanaCloudClient + + expectedPrometheus := createPrometheusObject("prometheusesNamespace", "podmonitorNamespace") + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.Nil(t, err) + assert.NotNil(t, result) + + prometheuses := &monitoringv1.PrometheusList{} + + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + require.Len(t, prometheuses.Items, 1) + expectedPrometheus.Spec.PodMetadata.Annotations = prometheuses.Items[0].Spec.PodMetadata.Annotations + expectedPrometheus.ResourceVersion = prometheuses.Items[0].ResourceVersion + expectedPrometheus.Spec.RemoteWrite[0].WriteRelabelConfigs = []monitoringv1.RelabelConfig{ + { + Action: "labeldrop", + Regex: "^prometheus$", + }, + { + Action: "labeldrop", + Regex: "^node_exporter$", + }, + { + Action: "drop", + SourceLabels: []string{"__name__"}, + Regex: "prometheus_.*", + }, + } + assert.Equal(t, *expectedPrometheus, *prometheuses.Items[0]) + }) + + t.Run("it should not update the prometheus object with the previous relabel config if the new configMap is wrong", func(t *testing.T) { + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + } + podMonitorNamespace := newNamespace(podmonitor.Namespace) + podMonitorNamespace.SetAnnotations(map[string]string{ + Config.stackNameAnnotationKey: "adevintaruntime", + }) + existingPrometheus := createPrometheusObject("prometheusesNamespace", "podmonitorNamespace") + existingPrometheus.Spec.RemoteWrite[0].WriteRelabelConfigs = []monitoringv1.RelabelConfig{ + { + Action: "labeldrop", + SourceLabels: []string{"__name__"}, + Regex: "^prometheus$", + }, + } + + reconciler := newDefaultTestPodMonitorReconciler( + t, + podmonitor, createSecretStub("prometheusesNamespace"), + newNamespace("prometheusesNamespace"), + podMonitorNamespace, + createConfigMapBrokenRulesStub("custom-relabel-configs", podmonitor.Namespace), + existingPrometheus, + ) + reconciler.EnableMetricsRemoteWrite = true + reconciler.PrometheusNamespace = "prometheusesNamespace" + reconciler.GrafanaCloudClient = &grafanaCloudClient + + expectedPrometheus := createPrometheusObject("prometheusesNamespace", "podmonitorNamespace") + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.Nil(t, err) + assert.NotNil(t, result) + + prometheuses := &monitoringv1.PrometheusList{} + + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + require.Len(t, prometheuses.Items, 1) + expectedPrometheus.Spec.PodMetadata.Annotations = prometheuses.Items[0].Spec.PodMetadata.Annotations + expectedPrometheus.ResourceVersion = prometheuses.Items[0].ResourceVersion + expectedPrometheus.Spec.RemoteWrite[0].WriteRelabelConfigs = []monitoringv1.RelabelConfig{ + { + Action: "labeldrop", + SourceLabels: []string{"__name__"}, + Regex: "^prometheus$", + }, + } + assert.Equal(t, expectedPrometheus.Spec.RemoteWrite[0].WriteRelabelConfigs, prometheuses.Items[0].Spec.RemoteWrite[0].WriteRelabelConfigs) + }) + + t.Run("it should create the prometheus object without errors if no relabel config is defined", func(t *testing.T) { + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + } + podMonitorNamespace := newNamespace(podmonitor.Namespace) + podMonitorNamespace.SetAnnotations(map[string]string{ + Config.stackNameAnnotationKey: "adevintaruntime", + }) + + // ns.Annotations[stackNameAnnotationKey] = "adevintastack1" + reconciler := newDefaultTestPodMonitorReconciler( + t, + podmonitor, createSecretStub("prometheusesNamespace"), + newNamespace("prometheusesNamespace"), + podMonitorNamespace, + ) + reconciler.EnableMetricsRemoteWrite = true + reconciler.PrometheusNamespace = "prometheusesNamespace" + reconciler.GrafanaCloudClient = &grafanaCloudClient + + expectedPrometheus := createPrometheusObject("prometheusesNamespace", "podmonitorNamespace") + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.Nil(t, err) + assert.NotNil(t, result) + + prometheuses := &monitoringv1.PrometheusList{} + + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + require.Len(t, prometheuses.Items, 1) + expectedPrometheus.Spec.PodMetadata.Annotations = prometheuses.Items[0].Spec.PodMetadata.Annotations + expectedPrometheus.ResourceVersion = prometheuses.Items[0].ResourceVersion + assert.Equal(t, *expectedPrometheus, *prometheuses.Items[0]) + }) + + t.Run("it should create the prometheus object and don't remove the remoteWriteConfig if configMap info is wrong", func(t *testing.T) { + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + } + podMonitorNamespace := newNamespace(podmonitor.Namespace) + podMonitorNamespace.SetAnnotations(map[string]string{ + Config.stackNameAnnotationKey: "adevintaruntime", + }) + reconciler := newDefaultTestPodMonitorReconciler( + t, + podmonitor, createSecretStub("prometheusesNamespace"), + newNamespace("prometheusesNamespace"), + podMonitorNamespace, + createConfigMapBrokenRulesStub("custom-relabel-configs", podmonitor.Namespace), + ) + reconciler.EnableMetricsRemoteWrite = true + reconciler.PrometheusNamespace = "prometheusesNamespace" + reconciler.GrafanaCloudClient = &grafanaCloudClient + + expectedPrometheus := createPrometheusObject("prometheusesNamespace", "podmonitorNamespace") + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.Nil(t, err) + assert.NotNil(t, result) + + prometheuses := &monitoringv1.PrometheusList{} + + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + require.Len(t, prometheuses.Items, 1) + expectedPrometheus.Spec.PodMetadata.Annotations = prometheuses.Items[0].Spec.PodMetadata.Annotations + expectedPrometheus.ResourceVersion = prometheuses.Items[0].ResourceVersion + expectedPrometheus.Spec.RemoteWrite[0].WriteRelabelConfigs = []monitoringv1.RelabelConfig{ + { + Action: "drop", + SourceLabels: []string{"__name__"}, + Regex: "prometheus_.*", + }, + } + assert.Equal(t, *expectedPrometheus, *prometheuses.Items[0]) + }) +} + +func TestPodMonitorWithGrafanaCloudStorageAndMultipleStacksCreatesPrometheus(t *testing.T) { + grafanaCloudClient := mockGrafanaCloudClient{ + GetStackFunc: func(tenant string) (*grafanacloud.Stack, error) { + switch tenant { + case "adevintastack1": + return &grafanacloud.Stack{ + Slug: "adevintastack1", + MetricsInstanceID: 14111, + PromURL: "https://prometheus-us-west1.grafana.net", + }, nil + case "adevintastack2": + return &grafanacloud.Stack{ + Slug: "adevintastack2", + MetricsInstanceID: 14818, + PromURL: "https://prometheus-us-central1.grafana.net", + }, nil + case "stack3": + return &grafanacloud.Stack{ + Slug: "stack3", + MetricsInstanceID: 14820, + PromURL: "https://prometheus-us-east1.grafana.net", + }, nil + } + + stack := grafanacloud.Stack{} + return &stack, nil + }, + } + + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + } + + podMonitorNamespace := newNamespace(podmonitor.Namespace) + podMonitorNamespace.SetAnnotations(map[string]string{ + Config.stackNameAnnotationKey: "adevintastack1,adevintastack2,stack3", + }) + + reconciler := newDefaultTestPodMonitorReconciler( + t, + podmonitor, createSecretStub("prometheusesNamespace"), + newNamespace("prometheusesNamespace"), + podMonitorNamespace, + ) + reconciler.EnableMetricsRemoteWrite = true + reconciler.PrometheusNamespace = "prometheusesNamespace" + reconciler.GrafanaCloudClient = &grafanaCloudClient + + expectedPrometheus := createPrometheusObject("prometheusesNamespace", "podmonitorNamespace") + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.Nil(t, err) + assert.NotNil(t, result) + + prometheuses := &monitoringv1.PrometheusList{} + + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + require.Len(t, prometheuses.Items, 1) + expectedPrometheus.Spec.RemoteWrite = []monitoringv1.RemoteWriteSpec{ + { + URL: "https://prometheus-us-west1.grafana.net/api/prom/push", + BasicAuth: &monitoringv1.BasicAuth{ + Username: corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: "observability-operator-grafana-cloud-credentials", + }, + Key: "adevintastack1", + }, + Password: corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: "observability-operator-grafana-cloud-credentials", + }, + Key: "grafana-cloud-api-key", + }, + }, + WriteRelabelConfigs: []monitoringv1.RelabelConfig{ + { + Action: "drop", + SourceLabels: []string{"__name__"}, + Regex: "prometheus_.*", + }, + }, + }, + { + URL: "https://prometheus-us-central1.grafana.net/api/prom/push", + BasicAuth: &monitoringv1.BasicAuth{ + Username: corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: "observability-operator-grafana-cloud-credentials", + }, + Key: "adevintastack2", + }, + Password: corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: "observability-operator-grafana-cloud-credentials", + }, + Key: "grafana-cloud-api-key", + }, + }, + WriteRelabelConfigs: []monitoringv1.RelabelConfig{ + { + Action: "drop", + SourceLabels: []string{"__name__"}, + Regex: "prometheus_.*", + }, + }, + }, + { + URL: "https://prometheus-us-east1.grafana.net/api/prom/push", + BasicAuth: &monitoringv1.BasicAuth{ + Username: corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: "observability-operator-grafana-cloud-credentials", + }, + Key: "stack3", + }, + Password: corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: "observability-operator-grafana-cloud-credentials", + }, + Key: "grafana-cloud-api-key", + }, + }, + WriteRelabelConfigs: []monitoringv1.RelabelConfig{ + { + Action: "drop", + SourceLabels: []string{"__name__"}, + Regex: "prometheus_.*", + }, + }, + }, + } + expectedPrometheus.Spec.PodMetadata.Annotations = prometheuses.Items[0].Spec.PodMetadata.Annotations + expectedPrometheus.ResourceVersion = prometheuses.Items[0].ResourceVersion + assert.ElementsMatch(t, expectedPrometheus.Spec.RemoteWrite, prometheuses.Items[0].Spec.RemoteWrite) +} + +func TestCreatesPrometheusWithSelectorAndToleration(t *testing.T) { + grafanaCloudClient := mockGrafanaCloudClient{ + GetStackFunc: func(tenant string) (*grafanacloud.Stack, error) { + stack := grafanacloud.Stack{ + PromURL: "https://prometheus-us-central1.grafana.net", + } + return &stack, nil + }, + } + + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + } + podMonitorNamespace := newNamespace(podmonitor.Namespace) + podMonitorNamespace.SetAnnotations(map[string]string{ + Config.stackNameAnnotationKey: "adevintaruntime", + }) + + reconciler := newDefaultTestPodMonitorReconciler( + t, + podmonitor, createSecretStub("prometheusesNamespace"), + newNamespace("prometheusesNamespace"), + podMonitorNamespace, + ) + reconciler.EnableMetricsRemoteWrite = true + reconciler.PrometheusNamespace = "prometheusesNamespace" + reconciler.NodeSelectorTarget = "my-dedicated-prometheus-pool" + reconciler.GrafanaCloudClient = &grafanaCloudClient + expectedPrometheus := createPrometheusObject("prometheusesNamespace", "podmonitorNamespace") + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.Nil(t, err) + assert.NotNil(t, result) + + prometheuses := &monitoringv1.PrometheusList{} + + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + require.Len(t, prometheuses.Items, 1) + expectedPrometheus.Spec.PodMetadata.Annotations = prometheuses.Items[0].Spec.PodMetadata.Annotations + expectedPrometheus.ResourceVersion = prometheuses.Items[0].ResourceVersion + expectedPrometheus.Spec.Tolerations = []corev1.Toleration{ + { + Key: reconciler.NodeSelectorTarget, + Operator: "Equal", + Value: "true", + Effect: "NoSchedule", + }, + } + expectedPrometheus.Spec.NodeSelector = map[string]string{ + reconciler.NodeSelectorTarget: "true", + } + assert.Equal(t, *expectedPrometheus, *prometheuses.Items[0]) +} + +func TestPodMonitorWithGrafanaCloudStorageDoesNotCreateServiceMonitor(t *testing.T) { + grafanaCloudClient := mockGrafanaCloudClient{ + GetStackFunc: func(tenant string) (*grafanacloud.Stack, error) { + stack := grafanacloud.Stack{ + PromURL: "https://prometheus-us-central1.grafana.net", + } + return &stack, nil + }, + } + + secret := createSecretStub("prometheusNamespace") + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + } + podMonitorNamespace := newNamespace(podmonitor.Namespace) + podMonitorNamespace.SetAnnotations(map[string]string{ + Config.stackNameAnnotationKey: "adevintaruntime", + }) + reconciler := newDefaultTestPodMonitorReconciler(t, secret, podmonitor, podMonitorNamespace) + reconciler.EnableMetricsRemoteWrite = true + reconciler.PrometheusNamespace = "prometheusNamespace" + reconciler.GrafanaCloudClient = &grafanaCloudClient + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.NoError(t, err) + assert.NotNil(t, result) + + prometheuses := &monitoringv1.PrometheusList{} + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + assert.Len(t, prometheuses.Items, 1) + + serviceMonitors := &monitoringv1.ServiceMonitorList{} + require.NoError(t, reconciler.Client.List(context.Background(), serviceMonitors)) + assert.Len(t, serviceMonitors.Items, 0) +} + +func TestPodMonitorWithGrafanaCloudStorageCreatesASecretWithAdditionalScrapingConfig(t *testing.T) { + grafanaCloudClient := mockGrafanaCloudClient{ + GetStackFunc: func(tenant string) (*grafanacloud.Stack, error) { + stack := grafanacloud.Stack{ + PromURL: "https://prometheus-us-central1.grafana.net", + } + return &stack, nil + }, + } + + promNamespace := "prometheusesNamespace" + secret := createSecretStub(promNamespace) + + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + } + podMonitorNamespace := newNamespace(podmonitor.Namespace) + podMonitorNamespace.SetAnnotations(map[string]string{ + Config.stackNameAnnotationKey: "adevintaruntime", + }) + expectedIngressServiceMonitor := createIngressServiceMonitor() + + reconciler := newDefaultTestPodMonitorReconciler(t, secret, expectedIngressServiceMonitor, podmonitor, podMonitorNamespace) + reconciler.EnableMetricsRemoteWrite = true + reconciler.PrometheusNamespace = promNamespace + reconciler.GrafanaCloudClient = &grafanaCloudClient + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.Nil(t, err) + assert.NotNil(t, result) + targetScrappingConfig, err := getScrappingConfig() + require.NoError(t, err) + + prometheusConfigSecret := &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: "prometheusesNamespace", + Name: "prometheus-podmonitorNamespace-monitoring-target", + }, + } + require.NoError(t, reconciler.Client.Get(context.Background(), client.ObjectKeyFromObject(prometheusConfigSecret), prometheusConfigSecret)) + actualScrappingConfig := PrometheusAdditionalScrapeConfig{} + err = yaml.Unmarshal([]byte(prometheusConfigSecret.StringData["prometheus"]), &actualScrappingConfig) + require.Nil(t, err) + assert.Equal(t, targetScrappingConfig, actualScrappingConfig) +} + +func TestPodMonitorWithGrafanaCloudStorageCreatesTwoPrometheusRulesIfNoSampleLimit(t *testing.T) { + grafanaCloudClient := mockGrafanaCloudClient{ + GetStackFunc: func(tenant string) (*grafanacloud.Stack, error) { + stack := grafanacloud.Stack{ + PromURL: "https://prometheus-us-central1.grafana.net", + } + return &stack, nil + }, + } + + promNamespace := "prometheusesNamespace" + secret := createSecretStub(promNamespace) + + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.accountAnnotationKey: "podmonitorNamespace", + Config.storageAnnotationKey: "grafanacloud", + } + podMonitorNamespace := newNamespace(podmonitor.Namespace) + podMonitorNamespace.SetAnnotations(map[string]string{ + Config.stackNameAnnotationKey: "adevintaruntime", + }) + expectedRules := createPrometheusRulesWithoutSampleLimit() + + reconciler := newDefaultTestPodMonitorReconciler(t, secret, podmonitor, podMonitorNamespace) + reconciler.EnableMetricsRemoteWrite = true + reconciler.PrometheusNamespace = promNamespace + reconciler.GrafanaCloudClient = &grafanaCloudClient + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.NoError(t, err) + assert.NotNil(t, result) + + promRules := monitoringv1.PrometheusRuleList{} + require.NoError(t, reconciler.Client.List(context.Background(), &promRules)) + for i, rule := range promRules.Items { + if i < len(expectedRules) { + expectedRules[i].ResourceVersion = rule.ResourceVersion + } + } + assert.Equal(t, expectedRules, promRules.Items) +} + +func TestPodMonitorWithGrafanaCloudStorageCreatesThreePrometheusRulesIfSampleLimitIsSet(t *testing.T) { + grafanaCloudClient := mockGrafanaCloudClient{ + GetStackFunc: func(tenant string) (*grafanacloud.Stack, error) { + stack := grafanacloud.Stack{ + PromURL: "https://prometheus-us-central1.grafana.net", + } + return &stack, nil + }, + } + + promNamespace := "promNamespace" + secret := createSecretStub(promNamespace) + + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + sampleLimit := 10 + rand.Intn(50000) + podmonitor.Spec.SampleLimit = uint64(sampleLimit) + podmonitor.Annotations = map[string]string{ + Config.accountAnnotationKey: "podmonitorNamespace", + Config.storageAnnotationKey: "grafanacloud", + } + podMonitorNamespace := newNamespace(podmonitor.Namespace) + podMonitorNamespace.SetAnnotations(map[string]string{ + Config.stackNameAnnotationKey: "adevintaruntime", + }) + + reconciler := newDefaultTestPodMonitorReconciler(t, secret, podmonitor, podMonitorNamespace) + reconciler.EnableMetricsRemoteWrite = true + reconciler.PrometheusNamespace = promNamespace + reconciler.GrafanaCloudClient = &grafanaCloudClient + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.NoError(t, err) + assert.NotNil(t, result) + + promRules := monitoringv1.PrometheusRuleList{} + require.NoError(t, reconciler.Client.List(context.Background(), &promRules)) + + assert.Equal(t, intstr.FromInt(sampleLimit), getRecordingRuleByRecordName(promRules.Items, "scrape_config_sample_limit").Expr) +} + +func TestTwoPodMonitorInTheSameNamespaceOnlyCreateOnePrometheus(t *testing.T) { + grafanaCloudClient := mockGrafanaCloudClient{ + GetStackFunc: func(tenant string) (*grafanacloud.Stack, error) { + stack := grafanacloud.Stack{ + PromURL: "https://prometheus-us-central1.grafana.net", + } + return &stack, nil + }, + } + + promNamespace := "prometheusNamespace" + secret := createSecretStub(promNamespace) + + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + } + podMonitorNamespace := newNamespace(podmonitor.Namespace) + podMonitorNamespace.SetAnnotations(map[string]string{ + Config.stackNameAnnotationKey: "adevintaruntime", + }) + podmonitor2 := podmonitor.DeepCopy() + podmonitor2.Name = "podmonitorName2" + + expectedPrometheus := createPrometheusObject(promNamespace, "podmonitorNamespace") + + reconciler := newDefaultTestPodMonitorReconciler(t, secret, podmonitor, podmonitor2, podMonitorNamespace) + reconciler.EnableMetricsRemoteWrite = true + reconciler.PrometheusNamespace = promNamespace + reconciler.GrafanaCloudClient = &grafanaCloudClient + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.Nil(t, err) + require.NotNil(t, result) + + // The first reconcile should work to provide the expected context for the actual test case + result, err = reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor2.Namespace, Name: podmonitor2.Name}}) + require.NoError(t, err) + require.NotNil(t, result) + + prometheuses := &monitoringv1.PrometheusList{} + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + require.Len(t, prometheuses.Items, 1) + assert.NotNil(t, prometheuses.Items[0]) + expectedPrometheus.Spec.PodMetadata.Annotations = prometheuses.Items[0].Spec.PodMetadata.Annotations + expectedPrometheus.ResourceVersion = prometheuses.Items[0].ResourceVersion + assert.Equal(t, *expectedPrometheus, *prometheuses.Items[0]) + + podmonitors := &monitoringv1.PodMonitorList{} + require.NoError(t, reconciler.Client.List(context.Background(), podmonitors)) + require.Len(t, podmonitors.Items, 2) +} + +func TestReconcileHonoursResources(t *testing.T) { + grafanaCloudClient := mockGrafanaCloudClient{ + GetStackFunc: func(tenant string) (*grafanacloud.Stack, error) { + stack := grafanacloud.Stack{ + PromURL: "https://prometheus-us-central1.grafana.net", + } + return &stack, nil + }, + } + + prom := createPrometheusObject("prometheusesNamespace", "podmonitorNamespace") + secret := createSecretStub(prom.Namespace) + somegigabytes, _ := resource.ParseQuantity("2Gi") + somecpu, _ := resource.ParseQuantity("1500m") + resources := &corev1.ResourceRequirements{ + Limits: corev1.ResourceList{ + "cpu": somecpu, + "memory": somegigabytes, + }, + Requests: corev1.ResourceList{ + "cpu": somecpu, + "memory": somegigabytes, + }, + } + prom.Spec.Resources = *resources + expectedPortName := prom.Spec.PortName + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + } + podMonitorNamespace := newNamespace(podmonitor.Namespace) + podMonitorNamespace.SetAnnotations(map[string]string{ + Config.stackNameAnnotationKey: "adevintaruntime", + }) + + prom.Spec.PortName = "wrongPortName" + + reconciler := newDefaultTestPodMonitorReconciler(t, secret, prom, podmonitor, newNamespace(prom.Namespace), podMonitorNamespace) + reconciler.EnableMetricsRemoteWrite = true + reconciler.PrometheusNamespace = prom.Namespace + reconciler.GrafanaCloudClient = &grafanaCloudClient + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.NoError(t, err) + require.NotNil(t, result) + + prometheuses := &monitoringv1.PrometheusList{} + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + require.Len(t, prometheuses.Items, 1) + assert.NotNil(t, prometheuses.Items[0]) + + assert.Equal(t, expectedPortName, prometheuses.Items[0].Spec.PortName) + assert.Equal(t, *resources, prometheuses.Items[0].Spec.Resources) +} + +func TestDeleteOnePodMonitorDoesNotDeletePrometheus(t *testing.T) { + prom := createPrometheusObject("prometheusesNamespace", "podmonitorNamespace") + secret := createSecretStub(prom.Namespace) + + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + } + podmonitor2 := podmonitor.DeepCopy() + podmonitor2.Name = "podmonitorName2" + now := metav1.NewTime(time.Now()) + + podmonitor.DeletionTimestamp = &now + podmonitor.Finalizers = append(podmonitor.Finalizers, Config.podmonitorFinalizer) + + reconciler := newDefaultTestPodMonitorReconciler(t, secret, prom, podmonitor, podmonitor2, newNamespace(prom.Namespace)) + reconciler.EnableMetricsRemoteWrite = true + reconciler.PrometheusNamespace = prom.Namespace + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + + prometheuses := &monitoringv1.PrometheusList{} + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + require.Len(t, prometheuses.Items, 1) + assert.NotNil(t, prometheuses.Items[0]) + prom.Spec.PodMetadata.Annotations = prometheuses.Items[0].Spec.PodMetadata.Annotations + require.Nil(t, err) + require.NotNil(t, result) + assert.Equal(t, *prom, *prometheuses.Items[0]) +} + +func TestDeleteLastPodMonitorDeletesPrometheus(t *testing.T) { + prom := createPrometheusObject("prometheusesNamespace", "podmonitorNamespace") + + secret := createSecretStub(prom.Namespace) + + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + } + now := metav1.NewTime(time.Now()) + + podmonitor.ObjectMeta.Finalizers = append(podmonitor.ObjectMeta.Finalizers, Config.podmonitorFinalizer) + podmonitor.DeletionTimestamp = &now + + reconciler := newDefaultTestPodMonitorReconciler(t, secret, prom, podmonitor, newNamespace(prom.Namespace)) + reconciler.EnableMetricsRemoteWrite = true + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.Nil(t, err) + require.NotNil(t, result) + prometheuses := &monitoringv1.PrometheusList{} + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + assert.Len(t, prometheuses.Items, 0) +} + +func TestPodMonitorDeFederateNamespace(t *testing.T) { + // The result should be a Prometheus Object whose storage is only `grafanacloud` + // Even though EnableFederation = true + ns := &corev1.Namespace{ + ObjectMeta: ctrl.ObjectMeta{ + Name: "podmonitorNamespace", + Annotations: map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + Config.stackNameAnnotationKey: "adevintaruntime", + }, + }, + } + + var replicas int32 = 1 + var shards int32 = 1 + prom := &monitoringv1.Prometheus{ + ObjectMeta: ctrl.ObjectMeta{ + Name: "podmonitorNamespace", + Namespace: "prometheusesNamespace", + Annotations: map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + Config.accountAnnotationKey: "podmonitorNamespace", + }, + }, + Spec: monitoringv1.PrometheusSpec{ + AdditionalScrapeConfigs: &corev1.SecretKeySelector{ + Key: "prometheus", + LocalObjectReference: corev1.LocalObjectReference{Name: "prometheus-podmonitorNamespace-monitoring-target"}, + }, + PodMetadata: &monitoringv1.EmbeddedObjectMetadata{ + Labels: map[string]string{ + Config.accountLabelKey: "podmonitorNamespace", + }, + }, + ServiceMonitorSelector: &metav1.LabelSelector{ + MatchLabels: map[string]string{Config.accountLabelKey: "podmonitorNamespace"}, + }, + PodMonitorSelector: &metav1.LabelSelector{ + MatchLabels: map[string]string{Config.accountLabelKey: "podmonitorNamespace"}, + }, + RuleNamespaceSelector: &metav1.LabelSelector{ + MatchLabels: map[string]string{ + "name": "podmonitorNamespace", + }, + }, + ServiceMonitorNamespaceSelector: &metav1.LabelSelector{}, + PodMonitorNamespaceSelector: &metav1.LabelSelector{}, + RoutePrefix: "/", + ServiceAccountName: "prometheus-tenant", + PortName: "web", + Version: "v0.0.1", + BaseImage: "foo", + Replicas: &replicas, + Shards: &shards, + LogLevel: "warn", + LogFormat: "logfmt", + Retention: "30m", + Resources: defaultResourceRequirements, + ExternalLabels: map[string]string{ + "cluster": "clustername", + "region": "eu-fake-1", + "account": "podmonitorNamespace", + "monitor": "prometheus-local", + "mycustomkey": "mycustomvalue", + }, + ExternalURL: "http://podmonitorNamespace-metrics.clustername.clusterdomain", + RemoteWrite: []monitoringv1.RemoteWriteSpec{{ + URL: "https://prometheus-us-central1.grafana.net/api/prom/push", + BasicAuth: &monitoringv1.BasicAuth{ + Username: corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: "observability-operator-grafana-cloud-credentials", + }, + Key: "adevintaruntime", + }, + Password: corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: "observability-operator-grafana-cloud-credentials", + }, + Key: "grafana-cloud-api-key", + }, + }, + WriteRelabelConfigs: []monitoringv1.RelabelConfig{ + { + Action: "drop", + SourceLabels: []string{"__name__"}, + Regex: "prometheus_.*", + }, + }, + }}, + RuleSelector: &metav1.LabelSelector{}, + }, + } + + podmonitor := monitoringv1.PodMonitor{ + ObjectMeta: ctrl.ObjectMeta{ + Name: "podmonitorName", + Namespace: "podmonitorNamespace", + Labels: map[string]string{ + Config.podMonitorLabelKey: "podmonitorNamespace-podmonitorName", + Config.accountLabelKey: "podmonitorNamespace", + }, + }, + Spec: monitoringv1.PodMonitorSpec{ + PodMetricsEndpoints: []monitoringv1.PodMetricsEndpoint{ + { + Path: "/metrics", + HonorLabels: true, + }, + }, + Selector: metav1.LabelSelector{ + MatchLabels: map[string]string{ + "random_label": "true", + }, + }, + NamespaceSelector: monitoringv1.NamespaceSelector{MatchNames: []string{"bar"}}, + SampleLimit: 1500, + }, + } + secret := createSecretStub(prom.Namespace) + + grafanaCloudClient := mockGrafanaCloudClient{ + GetStackFunc: func(tenant string) (*grafanacloud.Stack, error) { + stack := grafanacloud.Stack{ + PromURL: "https://prometheus-us-central1.grafana.net", + } + return &stack, nil + }, + } + + reconciler := newDefaultTestPodMonitorReconciler(t, ns, &podmonitor, secret, prom) + reconciler.EnableMetricsRemoteWrite = true + reconciler.PrometheusNamespace = prom.Namespace + reconciler.GrafanaCloudClient = &grafanaCloudClient + + annotation := map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + Config.accountAnnotationKey: "accountName", + } + + podmonitor.ObjectMeta.Annotations = annotation + require.NoError(t, reconciler.Client.Update(context.Background(), &podmonitor)) + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.NoError(t, err) + assert.NotNil(t, result) + + prometheuses := &monitoringv1.PrometheusList{} + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + require.Len(t, prometheuses.Items, 1) + require.NotNil(t, prometheuses.Items[0]) + + prom.Spec.PodMetadata.Annotations = prometheuses.Items[0].Spec.PodMetadata.Annotations + prom.ResourceVersion = prometheuses.Items[0].ResourceVersion + prom.TypeMeta = prometheuses.Items[0].TypeMeta + assert.Equal(t, *prom, *prometheuses.Items[0]) +} + +func TestPodMonitorWithAlternativeStorageEnabled(t *testing.T) { + secret := &corev1.Secret{ + ObjectMeta: ctrl.ObjectMeta{ + Name: "observability-operator-grafana-cloud-credentials", + Namespace: "platform-services", + }, + Data: map[string][]uint8{ + "grafana-cloud-api-key": []byte("xxx"), + }, + } + podmonitor := monitoringv1.PodMonitor{ + ObjectMeta: ctrl.ObjectMeta{ + Name: "podmonitorName", + Namespace: "podmonitorNamespace", + Labels: map[string]string{ + Config.podMonitorLabelKey: "podmonitorNamespace-podmonitorName", + Config.accountLabelKey: "podmonitorNamespace", + }, + Annotations: map[string]string{ + Config.storageAnnotationKey: "federation", + Config.accountAnnotationKey: "podmonitorNamespace", + }, + }, + Spec: monitoringv1.PodMonitorSpec{ + PodMetricsEndpoints: []monitoringv1.PodMetricsEndpoint{ + { + Path: "/metrics", + HonorLabels: true, + }, + }, + Selector: metav1.LabelSelector{ + MatchLabels: map[string]string{ + "random_label": "true", + }, + }, + NamespaceSelector: monitoringv1.NamespaceSelector{MatchNames: []string{"bar"}}, + SampleLimit: 1500, + }, + } + ns := newNamespace(podmonitor.Namespace) + ns.Annotations = map[string]string{ + Config.storageAnnotationKey: "federation", + } + reconciler := newDefaultTestPodMonitorReconciler(t, &podmonitor, secret, ns) + reconciler.EnableMetricsRemoteWrite = false + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + assert.Nil(t, err) + assert.NotNil(t, result) + + prometheuses := &monitoringv1.PrometheusList{} + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + assert.Len(t, prometheuses.Items, 1) + assert.Empty(t, prometheuses.Items[0].Spec.RemoteWrite) +} + +func TestVpaEnabledCreatesVpaObject(t *testing.T) { + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + } + podmonitor.Name = "podmonitorName" + podmonitor.Namespace = "my-podmonitor-namespace-pro" + reconciler := newDefaultTestPodMonitorReconciler(t, podmonitor, newNamespace(podmonitor.Namespace)) + reconciler.EnableVpa = true + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.NoError(t, err) + assert.NotNil(t, result) + + vpas := &vpav1.VerticalPodAutoscalerList{} + require.NoError(t, reconciler.Client.List(context.Background(), vpas)) + require.Len(t, vpas.Items, 1) + require.NotNil(t, vpas.Items[0].Spec.UpdatePolicy.UpdateMode) + assert.Equal(t, vpav1.UpdateMode("Auto"), *vpas.Items[0].Spec.UpdatePolicy.UpdateMode) + assert.Equal(t, podmonitor.Namespace, vpas.Items[0].Name) + assert.Equal(t, reconciler.PrometheusNamespace, vpas.Items[0].Namespace) + require.Len(t, vpas.Items[0].OwnerReferences, 1) + assert.Equal(t, monitoringv1.SchemeGroupVersion.Identifier(), vpas.Items[0].OwnerReferences[0].APIVersion) + assert.Equal(t, "Prometheus", vpas.Items[0].OwnerReferences[0].Kind) + assert.Equal(t, "my-podmonitor-namespace-pro", vpas.Items[0].OwnerReferences[0].Name) + + result, err = reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.NoError(t, err) + assert.NotNil(t, result) + + vpas = &vpav1.VerticalPodAutoscalerList{} + require.NoError(t, reconciler.Client.List(context.Background(), vpas)) + require.Len(t, vpas.Items, 1) + assert.Equal(t, "monitoring.coreos.com/v1", vpas.Items[0].Spec.TargetRef.APIVersion) + assert.Equal(t, "Prometheus", vpas.Items[0].Spec.TargetRef.Kind) + assert.Equal(t, "my-podmonitor-namespace-pro", vpas.Items[0].Spec.TargetRef.Name) + require.NotNil(t, vpas.Items[0].Spec.UpdatePolicy.UpdateMode) + assert.Equal(t, vpav1.UpdateMode("Auto"), *vpas.Items[0].Spec.UpdatePolicy.UpdateMode) + assert.Equal(t, podmonitor.Namespace, vpas.Items[0].Name) + assert.Equal(t, reconciler.PrometheusNamespace, vpas.Items[0].Namespace) + require.Len(t, vpas.Items[0].OwnerReferences, 1) + assert.Equal(t, monitoringv1.SchemeGroupVersion.Identifier(), vpas.Items[0].OwnerReferences[0].APIVersion) + assert.Equal(t, "Prometheus", vpas.Items[0].OwnerReferences[0].Kind) + assert.Equal(t, "my-podmonitor-namespace-pro", vpas.Items[0].OwnerReferences[0].Name) +} + +func TestVpaDisabledSkipsVpaObjectCreation(t *testing.T) { + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + } + podmonitor.Name = "podmonitorName" + podmonitor.Namespace = "my-podmonitor-namespace-pro" + reconciler := newDefaultTestPodMonitorReconciler(t) + reconciler.EnableVpa = false + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + assert.Nil(t, err) + assert.NotNil(t, result) + + vpas := &vpav1.VerticalPodAutoscalerList{} + require.NoError(t, reconciler.Client.List(context.Background(), vpas)) + require.Len(t, vpas.Items, 0) +} + +func TestGetAvailableStorageFromNamespace(t *testing.T) { + type TestCase struct { + Description string + Name string + Namespace corev1.Namespace + ExpectedResult string + ExpectedError error + } + + testCases := []TestCase{ + { + Description: "when the namespace exists and has the storage annotation", + Name: "mynamespace", + Namespace: corev1.Namespace{ + ObjectMeta: ctrl.ObjectMeta{ + Name: "mynamespace", + Annotations: map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + }, + }, + }, + ExpectedResult: "grafanacloud", + ExpectedError: nil, + }, + { + Description: "when the namespace exists and does not have the storage annotation", + Name: "subito-pro", + Namespace: corev1.Namespace{ + ObjectMeta: ctrl.ObjectMeta{ + Name: "subito-pro", + Annotations: map[string]string{}, + }, + }, + ExpectedResult: "grafanacloud", + ExpectedError: nil, + }, + { + Description: "when the namespace exists and does not have an empty storage annotation", + Name: "some-namespace", + Namespace: corev1.Namespace{ + ObjectMeta: ctrl.ObjectMeta{ + Name: "some-namespace", + Annotations: map[string]string{ + Config.storageAnnotationKey: "", + }, + }, + }, + ExpectedResult: "", + ExpectedError: nil, + }, + { + Description: "when the namespace does not exist an error is returned", + Name: "notfound", + Namespace: corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{Name: "other-namespace"}, + }, + ExpectedResult: "", + ExpectedError: k8serrors.NewNotFound(schema.GroupResource{Resource: "namespaces"}, "notfound"), + }, + } + for _, item := range testCases { + t.Run(item.Description, func(t *testing.T) { + reconciler := newDefaultTestPodMonitorReconciler(t, &item.Namespace) + expectedResult, expectedErr := getAvailableStorageFromNamespace(reconciler.Client, item.Name, reconciler.Log) + assert.Equal(t, item.ExpectedResult, expectedResult) + assert.Equal(t, item.ExpectedError, expectedErr) + }) + } +} + +func TestPodMonitorWithCustomStorageCreatesSecretInPromNamespaceAndRemoteWrite(t *testing.T) { + promNamespace := "prometheusesNamespace" + + ns := newNamespace("podmonitorNamespace") + ns.Annotations = map[string]string{ + Config.remoteWriteAnnotationKey: "othernamespace/secret-storage", + } + + remoteWrite, secret1, secret2 := createCustomStorageSecretStub("othernamespace") + + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "custom", + } + reconciler := newDefaultTestPodMonitorReconciler(t, podmonitor, newNamespace(promNamespace), ns, newNamespace("othernamespace"), remoteWrite, secret1, secret2) + reconciler.PrometheusNamespace = promNamespace + + t.Run("Reconcile wont fail", func(t *testing.T) { + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.NoError(t, err) + assert.NotNil(t, result) + }) + + t.Run("Secrets are copied to prometheus namespace", func(t *testing.T) { + createdSecret1 := &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: "prometheusesNamespace", + Name: "custom-remote-write-secret1-othernamespace", + }, + } + require.NoError(t, reconciler.Client.Get(context.Background(), client.ObjectKeyFromObject(createdSecret1), createdSecret1)) + require.Equal(t, string(createdSecret1.Data["username"]), "foo") + + createdSecret2 := &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: "prometheusesNamespace", + Name: "custom-remote-write-secret2-othernamespace", + }, + } + require.NoError(t, reconciler.Client.Get(context.Background(), client.ObjectKeyFromObject(createdSecret2), createdSecret2)) + require.Equal(t, string(createdSecret2.Data["password"]), "bar") + }) + + t.Run("prometheus object is created with the proper remote write ", func(t *testing.T) { + prometheus := monitoringv1.Prometheus{ + ObjectMeta: metav1.ObjectMeta{Name: "podmonitorNamespace", Namespace: promNamespace}, + } + + require.NoError(t, reconciler.Client.Get(context.Background(), client.ObjectKeyFromObject(&prometheus), &prometheus)) + + require.NotEmpty(t, prometheus.Spec.RemoteWrite) + remotewriteSpec := monitoringv1.RemoteWriteSpec{ + URL: "https://victoria-metrics-url", + BasicAuth: &monitoringv1.BasicAuth{ + Username: corev1.SecretKeySelector{ + Key: "username", + LocalObjectReference: corev1.LocalObjectReference{Name: "custom-remote-write-secret1-othernamespace"}, + }, + Password: corev1.SecretKeySelector{ + Key: "password", + LocalObjectReference: corev1.LocalObjectReference{Name: "custom-remote-write-secret2-othernamespace"}, + }, + }, + } + require.Equal(t, prometheus.Spec.RemoteWrite[0], remotewriteSpec) + }) +} + +func TestPodMonitorWithCustomStorageErrors(t *testing.T) { + promNamespace := "prometheusesNamespace" + resetRenconciler := func() *PodMonitorReconciler { + ns := newNamespace("podmonitorNamespace") + ns.Annotations = map[string]string{ + Config.remoteWriteAnnotationKey: "othernamespace/secret-storage", + } + + secret1, secret2, secret3 := createCustomStorageSecretStub("othernamespace") + + podmonitor := createPodMonitor("podmonitorNamespace", "podmonitorName") + podmonitor.Annotations = map[string]string{ + Config.storageAnnotationKey: "custom", + } + reconciler := newDefaultTestPodMonitorReconciler(t, secret1, secret2, secret3, podmonitor, newNamespace(promNamespace), ns, newNamespace("othernamespace")) + reconciler.PrometheusNamespace = promNamespace + return reconciler + } + + t.Run("non existing referenced secrets will make it fail", func(t *testing.T) { + reconciler := resetRenconciler() + secret := corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: "secret-storage", + Namespace: "othernamespace", + }, + } + _, err := ctrl.CreateOrUpdate(context.Background(), reconciler.Client, &secret, func() error { + secret.Annotations[Config.referencedSecretAnnotationKeys] = "undefinedsecret" + return nil + }) + require.NoError(t, err) + + _, err = reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: "podmonitorNamespace", Name: "podmonitorName"}}) + require.Error(t, err) + }) + + t.Run("Non existing secret will fail make it", func(t *testing.T) { + ns := &corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{ + Name: "podmonitorNamespace", + }, + } + + reconciler := resetRenconciler() + _, err := ctrl.CreateOrUpdate(context.Background(), reconciler.Client, ns, func() error { + ns.Annotations[Config.remoteWriteAnnotationKey] = "notfoundsecret" + return nil + }) + require.NoError(t, err) + _, err = reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: "podmonitorNamespace", Name: "podmonitorName"}}) + require.Error(t, err) + }) + + t.Run("unmarshallable remote-write will make it fail and report an event", func(t *testing.T) { + reconciler := resetRenconciler() + secret := corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: "secret-storage", + Namespace: "othernamespace", + }, + } + _, err := ctrl.CreateOrUpdate(context.Background(), reconciler.Client, &secret, func() error { + secret.Data["remote-write"] = []byte("foo") + return nil + }) + require.NoError(t, err) + + _, err = reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: "podmonitorNamespace", Name: "podmonitorName"}}) + require.Error(t, err) + + event := corev1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: "GrafanaCloudOperatorEvent", + Namespace: "podmonitorNamespace", + }, + } + err = reconciler.Client.Get(context.Background(), client.ObjectKeyFromObject(&event), &event) + require.NoError(t, err) + }) +} + +func createCustomAlertmanagerConfigMap(namespace, name, payload string) corev1.ConfigMap { + return corev1.ConfigMap{ + ObjectMeta: metav1.ObjectMeta{ + Name: name, + Namespace: namespace, + }, + Data: map[string]string{ + "alert-manager": payload, + }, + } +} + +func TestPodMonitorWithAlertManager(t *testing.T) { + cmName := "alert-manager-config" + namespace := corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{ + Name: "user-namespace", + Annotations: map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + Config.alertManagerAnnotationKey: cmName, + }, + }, + } + podmonitor := monitoringv1.PodMonitor{ + ObjectMeta: ctrl.ObjectMeta{ + Name: "podmonitorName", + Namespace: namespace.Name, + Annotations: map[string]string{ + Config.storageAnnotationKey: "grafanacloud", + Config.alertManagerAnnotationKey: cmName, + }, + }, + } + + t.Run("Fail with invalid Alertmanager configuration", func(t *testing.T) { + cm := createCustomAlertmanagerConfigMap(namespace.Name, cmName, "is this not a valid json/yaml object?") + + reconciler := newDefaultTestPodMonitorReconciler( + t, + &podmonitor, + &namespace, + &cm, + newNamespace("prometheusesNamespace"), + ) + event := corev1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: "GrafanaCloudOperatorEvent", + Namespace: namespace.Name, + }, + } + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.Error(t, err) + require.NotNil(t, result) + require.NoError(t, reconciler.Client.Get(context.Background(), client.ObjectKeyFromObject(&event), &event)) + }) + t.Run("Correct Alertmanager configuration in YAML", func(t *testing.T) { + cm := createCustomAlertmanagerConfigMap( + namespace.Name, + cmName, + ` + - namespace: javi-test + name: alertmanager-example-test + port: web + - namespace: javi-test + name: alertmanager-example-test-2 + port: web`, + ) + + reconciler := newDefaultTestPodMonitorReconciler( + t, + &podmonitor, + &namespace, + &cm, + newNamespace("prometheusesNamespace"), + ) + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.NoError(t, err) + require.NotNil(t, result) + + prometheuses := &monitoringv1.PrometheusList{} + expectedPrometheus := createPrometheusObject("prometheusesNamespace", namespace.Name) + + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + require.Len(t, prometheuses.Items, 1) + expectedPrometheus.Spec.Alerting = &monitoringv1.AlertingSpec{ + Alertmanagers: []monitoringv1.AlertmanagerEndpoints{ + { + Namespace: "javi-test", + Name: "alertmanager-example-test", + Port: intstr.FromString("web"), + }, + { + Namespace: "javi-test", + Name: "alertmanager-example-test-2", + Port: intstr.FromString("web"), + }, + }, + } + assert.Equal(t, *expectedPrometheus.Spec.Alerting, *prometheuses.Items[0].Spec.Alerting) + }) + t.Run("Correct Alertmanager configuration in JSON", func(t *testing.T) { + cm := createCustomAlertmanagerConfigMap( + namespace.Name, + cmName, + `[ + { + "namespace": "javi-test", + "name": "alertmanager-example-test", + "port": "web" + }, + { + "namespace": "javi-test", + "name": "alertmanager-example-test-2", + "port": "web" + } + ]`, + ) + + reconciler := newDefaultTestPodMonitorReconciler( + t, + &podmonitor, + &namespace, + &cm, + newNamespace("prometheusesNamespace"), + ) + + result, err := reconciler.Reconcile(context.Background(), ctrl.Request{NamespacedName: types.NamespacedName{Namespace: podmonitor.Namespace, Name: podmonitor.Name}}) + require.NoError(t, err) + require.NotNil(t, result) + + prometheuses := &monitoringv1.PrometheusList{} + expectedPrometheus := createPrometheusObject("prometheusesNamespace", namespace.Name) + + require.NoError(t, reconciler.Client.List(context.Background(), prometheuses)) + require.Len(t, prometheuses.Items, 1) + expectedPrometheus.Spec.Alerting = &monitoringv1.AlertingSpec{ + Alertmanagers: []monitoringv1.AlertmanagerEndpoints{ + { + Namespace: "javi-test", + Name: "alertmanager-example-test", + Port: intstr.FromString("web"), + }, + { + Namespace: "javi-test", + Name: "alertmanager-example-test-2", + Port: intstr.FromString("web"), + }, + }, + } + assert.Equal(t, *expectedPrometheus.Spec.Alerting, *prometheuses.Items[0].Spec.Alerting) + }) +} diff --git a/pkg/controllers/prometheus_job_definition.go b/pkg/controllers/prometheus_job_definition.go new file mode 100644 index 0000000..e7e9d27 --- /dev/null +++ b/pkg/controllers/prometheus_job_definition.go @@ -0,0 +1,128 @@ +package controllers + +import ( + promcommonconfig "github.com/prometheus/common/config" + "github.com/prometheus/common/model" + promconfig "github.com/prometheus/prometheus/config" + + "github.com/prometheus/prometheus/discovery" + "github.com/prometheus/prometheus/discovery/targetgroup" + "github.com/prometheus/prometheus/pkg/relabel" +) + +var prometheusLocalScrapper = promconfig.ScrapeConfig{ + JobName: "prometheus-scraper", + HonorTimestamps: true, + HTTPClientConfig: promcommonconfig.DefaultHTTPClientConfig, + ServiceDiscoveryConfigs: discovery.Configs{ + discovery.StaticConfig{ + &targetgroup.Group{ + Targets: []model.LabelSet{ + { + "__address__": "localhost:9090", + }, + }, + }, + }, + }, +} + +func newIngressAndClusterScraper() promconfig.ScrapeConfig { + duration, _ := model.ParseDuration("30s") + return promconfig.ScrapeConfig{ + HonorLabels: true, + HonorTimestamps: true, + Params: map[string][]string{ + "match[]": {}, + }, + ScrapeInterval: duration, + MetricsPath: "/federate", + ServiceDiscoveryConfigs: discovery.Configs{ + //&kubernetes.SDConfig{}, + }, + // ServiceDiscoveryConfig: sd_config.ServiceDiscoveryConfig{ + // KubernetesSDConfigs: []*kubernetes.SDConfig{}, + // }, + RelabelConfigs: []*relabel.Config{ + { + Regex: relabel.MustNewRegexp("^.*-(ingress|cluster)-metrics$"), + SourceLabels: model.LabelNames{ + "__meta_kubernetes_service_label_release", + }, + Separator: ";", + Action: relabel.Keep, + }, + { + Regex: relabel.MustNewRegexp("Node;(.*)"), + TargetLabel: "node", + Replacement: "${1}", + Separator: ";", + SourceLabels: model.LabelNames{ + "__meta_kubernetes_endpoint_address_target_kind", + "__meta_kubernetes_endpoint_address_target_name", + }, + }, + { + Regex: relabel.MustNewRegexp("Pod;(.*)"), + TargetLabel: "pod", + Replacement: "${1}", + Separator: ";", + SourceLabels: model.LabelNames{ + "__meta_kubernetes_endpoint_address_target_kind", + "__meta_kubernetes_endpoint_address_target_name", + }, + }, + { + TargetLabel: "namespace", + SourceLabels: model.LabelNames{ + "__meta_kubernetes_namespace", + }, + }, + { + TargetLabel: "service", + SourceLabels: model.LabelNames{ + "__meta_kubernetes_service_name", + }, + }, + { + TargetLabel: "pod", + SourceLabels: model.LabelNames{ + "__meta_kubernetes_pod_name", + }, + }, + { + TargetLabel: "job", + Replacement: "${1}", + SourceLabels: model.LabelNames{ + "__meta_kubernetes_service_name", + }, + }, + { + Regex: relabel.MustNewRegexp("pod"), + Action: relabel.LabelDrop, + }, + { + Regex: relabel.MustNewRegexp("node"), + Action: relabel.LabelDrop, + }, + { + Regex: relabel.MustNewRegexp("namespace"), + Action: relabel.LabelDrop, + }, + }, + MetricRelabelConfigs: []*relabel.Config{ + { + Regex: relabel.MustNewRegexp("federate"), + Action: relabel.LabelDrop, + }, + { + Regex: relabel.MustNewRegexp("__replica__"), + Action: relabel.LabelDrop, + }, + { + Regex: relabel.MustNewRegexp("^prometheus$"), + Action: relabel.LabelDrop, + }, + }, + } +} diff --git a/pkg/controllers/traces_collector.go b/pkg/controllers/traces_collector.go new file mode 100644 index 0000000..476c601 --- /dev/null +++ b/pkg/controllers/traces_collector.go @@ -0,0 +1,601 @@ +package controllers + +import ( + "bytes" + "context" + _ "embed" + "fmt" + "strconv" + "text/template" + + appsv1 "k8s.io/api/apps/v1" + autoscaling "k8s.io/api/autoscaling/v1" + corev1 "k8s.io/api/core/v1" + networkingv1 "k8s.io/api/networking/v1" + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/intstr" + vpav1 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1" + + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +const ( + defaultObjPrefix string = "alloy-" + defaultServicePrefix string = "otelcol-" +) + +// TracesCollector abstracts the management of the Alloy service and +// its related objects. The goal is to create an Alloy deployment and +// service for each namespace that sends traces. The management of a +// single Alloy is represented by this type and the orchestration of +// the different Alloy services is managed elsewhere. +type TracesCollector struct { + Name string + HTTPPort int32 + ServicePorts []servicePort + TraceNamespace string + TenantNamespace string + ClusterName string + EnableVPA bool + + templatedConfig string + + Secret *corev1.Secret + ConfigMap *corev1.ConfigMap + Service *corev1.Service + Deployment *appsv1.Deployment + NetworkPolicy *networkingv1.NetworkPolicy + VPA *vpav1.VerticalPodAutoscaler +} + +// TracesCollectorOption implements the functional options pattern for +// TracesCollector +type TracesCollectorOption func(*TracesCollector) error + +// WithServicePorts allows to specify a list of Service Ports that +// should be enabled. +func WithServicePorts(extraPorts ...servicePort) TracesCollectorOption { + return func(tc *TracesCollector) error { + tc.ServicePorts = append(tc.ServicePorts, extraPorts...) + return nil + } +} + +// WithHTTPPort allows to specify which is the port used to expose the +// HTTP interface of Alloy +func WithHTTPPort(port int32) TracesCollectorOption { + return func(tc *TracesCollector) error { + if tc.HTTPPort != 0 { + if tc.HTTPPort == port { + // nothing to do + return nil + } + + // Remove prior port from existing ServicePort list if it was present + var newServicePorts []servicePort + for i, v := range tc.ServicePorts { + if v.Port == tc.HTTPPort { + newServicePorts = append(tc.ServicePorts[:i], tc.ServicePorts[i+1:]...) + } + } + tc.ServicePorts = newServicePorts + } + + tc.HTTPPort = port + tc.ServicePorts = append(tc.ServicePorts, servicePort{Name: "http", Port: httpPort}) + return nil + } +} + +// AlloyWithOTelCredentials renders the Alloy configuration file using +// the supplied credentials to set up the destination of traces +func AlloyWithOTelCredentials(credentials ...OTelCredentials) TracesCollectorOption { + return func(tc *TracesCollector) error { + templatedConfig, err := tc.getAlloyConfigContents(credentials...) + if err != nil { + return err + } + tc.templatedConfig = templatedConfig + return nil + } +} + +// NewTracesCollector initializes the TracesCollector type. +func NewTracesCollector(tenantNamespace, traceNamespace, clusterName string, enableVPA bool, opts ...TracesCollectorOption) (*TracesCollector, error) { + tc := &TracesCollector{ + Name: tenantNamespace, + HTTPPort: httpPort, + ServicePorts: []servicePort{{Name: "http", Port: httpPort}}, + TraceNamespace: traceNamespace, + TenantNamespace: tenantNamespace, + ClusterName: clusterName, + EnableVPA: enableVPA, + } + for _, opt := range opts { + err := opt(tc) + if err != nil { + return nil, err + } + } + return tc, nil +} + +func (tc *TracesCollector) objName() string { + return defaultObjPrefix + tc.Name +} + +func (tc *TracesCollector) svcName() string { + return defaultServicePrefix + tc.Name +} + +func (tc *TracesCollector) labelMap() map[string]string { + return map[string]string{ + "app.kubernetes.io/name": tc.objName(), + "app.kubernetes.io/managed-by": "grafana-cloud-operator", + "app.kubernetes.io/version": "v1.2.1", + } +} + +func (tc *TracesCollector) annotationMap() map[string]string { + return map[string]string{ + "prometheus.io/path": "/metrics", + "prometheus.io/port": strconv.Itoa(int(tc.HTTPPort)), + "prometheus.io/scrape": "true", + } +} + +// defineVPA returns a default initialized VPA object and +// populates it inside the TracesCollector as well +func (tc *TracesCollector) defineVPA() *vpav1.VerticalPodAutoscaler { + var updateMode vpav1.UpdateMode = "Auto" + + tc.VPA = &vpav1.VerticalPodAutoscaler{ + ObjectMeta: metav1.ObjectMeta{ + Name: tc.objName(), + Namespace: tc.TraceNamespace, + }, + Spec: vpav1.VerticalPodAutoscalerSpec{ + TargetRef: &autoscaling.CrossVersionObjectReference{ + Kind: "Deployment", + Name: tc.objName(), + }, + UpdatePolicy: &vpav1.PodUpdatePolicy{ + UpdateMode: &updateMode, + }, + }, + } + return tc.VPA +} + +// CreateOrUpdateVPA creates or updates the VPA by calling K8s API +func (tc *TracesCollector) CreateOrUpdateVPA(ctx context.Context, client client.Client) error { + vpaMutating := tc.defineVPA().DeepCopy() + + _, err := ctrl.CreateOrUpdate( + ctx, + client, + vpaMutating, + func() error { + vpaMutating.Spec = tc.VPA.Spec + return nil + }, + ) + return err +} + +// defineSecret returns a default initialized secret object and +// populates it inside the TracesCollector as well +func (tc *TracesCollector) defineSecret() *corev1.Secret { + tc.Secret = &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: tc.objName(), + Namespace: tc.TraceNamespace, + Labels: tc.labelMap(), + }, + Type: corev1.SecretTypeOpaque, + } + return tc.Secret +} + +// CreateOrUpdateSecret creates or updates the secret by calling K8s API +func (tc *TracesCollector) CreateOrUpdateSecret(ctx context.Context, client client.Client, grafanaCloudToken string) error { + secretMutating := tc.defineSecret().DeepCopy() + _, err := ctrl.CreateOrUpdate( + ctx, + client, + secretMutating, + func() error { + secretMutating.Data = map[string][]byte{ + "grafana-cloud-traces-token": []byte(grafanaCloudToken), + } + return nil + }, + ) + return err +} + +// defineConfigMap returns a default initialized configmap object and +// populates it inside the TracesCollector as well +func (tc *TracesCollector) defineConfigMap() *corev1.ConfigMap { + tc.ConfigMap = &corev1.ConfigMap{ + ObjectMeta: metav1.ObjectMeta{ + Name: tc.objName(), + Namespace: tc.TraceNamespace, + Labels: tc.labelMap(), + }, + Data: map[string]string{ + "config.alloy": tc.templatedConfig, + }, + } + return tc.ConfigMap +} + +// CreateOrUpdateConfigMap creates or updates the configMap by calling K8s API +func (tc *TracesCollector) CreateOrUpdateConfigMap(ctx context.Context, client client.Client) error { + configMapMutating := tc.defineConfigMap().DeepCopy() + _, err := ctrl.CreateOrUpdate( + ctx, + client, + configMapMutating, + func() error { + configMapMutating.Data = tc.ConfigMap.Data + return nil + }, + ) + return err +} + +// defineService returns a default initialized service object and +// populates it inside the TracesCollector as well +func (tc *TracesCollector) defineService() *corev1.Service { + serviceName := tc.svcName() + labels := tc.labelMap() + + var ports []corev1.ServicePort + for _, sp := range tc.ServicePorts { + ports = append( + ports, + corev1.ServicePort{ + Name: serviceName + "-" + sp.Name, + Protocol: corev1.ProtocolTCP, + Port: sp.Port, + TargetPort: intstr.IntOrString{ + IntVal: sp.Port, + }, + }, + ) + } + tc.Service = &corev1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: serviceName, + Namespace: tc.TraceNamespace, + Labels: labels, + }, + Spec: corev1.ServiceSpec{ + // service name is the tenant namespace so that svc endpoint looks like '.observability.svc.cluster.local' + // the service selector should target the alloy pods with name "alloy-" + Selector: map[string]string{ + "app.kubernetes.io/name": labels["app.kubernetes.io/name"], + }, + Ports: ports, + }, + } + + return tc.Service +} + +// CreateOrUpdateService creates or updates the service by calling K8s API +func (tc *TracesCollector) CreateOrUpdateService(ctx context.Context, client client.Client) error { + serviceMutating := tc.defineService().DeepCopy() + _, err := ctrl.CreateOrUpdate( + ctx, + client, + serviceMutating, + func() error { + serviceMutating.Spec.Ports = tc.Service.Spec.Ports + return nil + }, + ) + return err +} + +// defineDeployment returns a default initialized Alloy deployment +// object and populates it inside the TracesCollector as well +func (tc *TracesCollector) defineDeployment() *appsv1.Deployment { + name := tc.objName() + numReplicas := int32(1) + + CPULimit := resource.MustParse("250m") + CPURequest := resource.MustParse("50m") + + MemoryLimit := resource.MustParse("500Mi") + MemoryRequest := resource.MustParse("250Mi") + + var ports []corev1.ContainerPort + for _, sp := range tc.ServicePorts { + ports = append( + ports, + corev1.ContainerPort{ + ContainerPort: sp.Port, + Name: sp.Name, + }, + ) + } + + tc.Deployment = &appsv1.Deployment{ + ObjectMeta: metav1.ObjectMeta{ + Name: name, + Namespace: tc.TraceNamespace, + Labels: tc.labelMap(), + }, + Spec: appsv1.DeploymentSpec{ + Replicas: &numReplicas, + Selector: &metav1.LabelSelector{ + MatchLabels: map[string]string{ + "app.kubernetes.io/name": name, + }, + }, + Template: corev1.PodTemplateSpec{ + ObjectMeta: metav1.ObjectMeta{ + Labels: tc.labelMap(), + Annotations: tc.annotationMap(), + }, + Spec: corev1.PodSpec{ + Containers: []corev1.Container{ + { + Name: name, + Args: []string{ + "run", + "/etc/alloy/config.alloy", + "--storage.path=/tmp/alloy", + fmt.Sprintf("--server.http.listen-addr=0.0.0.0:%v", tc.HTTPPort), + "--server.http.ui-path-prefix=/", + "--stability.level=generally-available", + }, + Resources: corev1.ResourceRequirements{ + Limits: corev1.ResourceList{ + corev1.ResourceCPU: CPULimit, + corev1.ResourceMemory: MemoryLimit, + }, + Requests: corev1.ResourceList{ + corev1.ResourceCPU: CPURequest, + corev1.ResourceMemory: MemoryRequest, + }, + }, + Image: "docker.io/grafana/alloy:v1.2.1", + Ports: ports, + ReadinessProbe: &corev1.Probe{ + ProbeHandler: corev1.ProbeHandler{ + HTTPGet: &corev1.HTTPGetAction{ + Path: "/-/ready", + Port: intstr.IntOrString{IntVal: tc.HTTPPort}, + Scheme: corev1.URISchemeHTTP, + }, + }, + InitialDelaySeconds: 10, + PeriodSeconds: 5, + TimeoutSeconds: 2, + FailureThreshold: 3, + SuccessThreshold: 1, + }, + LivenessProbe: &corev1.Probe{ + ProbeHandler: corev1.ProbeHandler{ + HTTPGet: &corev1.HTTPGetAction{ + Path: "/-/ready", + Port: intstr.IntOrString{IntVal: tc.HTTPPort}, + Scheme: corev1.URISchemeHTTP, + }, + }, + InitialDelaySeconds: 10, + PeriodSeconds: 5, + TimeoutSeconds: 2, + FailureThreshold: 3, + SuccessThreshold: 1, + }, + VolumeMounts: []corev1.VolumeMount{ + { + Name: "config", + MountPath: "/etc/alloy", + }, + }, + Env: []corev1.EnvVar{ + { + Name: "GRAFANA_CLOUD_TRACES_TOKEN", + ValueFrom: &corev1.EnvVarSource{ + SecretKeyRef: &corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: tc.objName(), + }, + Key: "grafana-cloud-traces-token", + }, + }, + }, + }, + }, + { + Name: "config-reloader", + Image: "ghcr.io/jimmidyson/configmap-reload:v0.12.0", + Args: []string{ + "--volume-dir=/etc/alloy", + fmt.Sprintf("--webhook-url=http://localhost:%v/-/reload", tc.HTTPPort), + }, + VolumeMounts: []corev1.VolumeMount{ + { + Name: "config", + MountPath: "/etc/alloy", + }, + }, + }, + }, + Volumes: []corev1.Volume{ + { + Name: "config", + VolumeSource: corev1.VolumeSource{ + ConfigMap: &corev1.ConfigMapVolumeSource{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: tc.objName(), + }, + }, + }, + }, + }, + }, + }, + }, + } + return tc.Deployment +} + +// CreateOrUpdateDeployment creates or updates the deployment by calling K8s API +func (tc *TracesCollector) CreateOrUpdateDeployment(ctx context.Context, client client.Client) error { + deploymentMutating := tc.defineDeployment().DeepCopy() + _, err := ctrl.CreateOrUpdate( + ctx, + client, + deploymentMutating, + func() error { + deploymentMutating.Spec = tc.Deployment.Spec + return nil + }, + ) + return err +} + +// defineNetworkPolicy returns a default initialized network policy +// object restricted to a single source namespace and populates it +// inside the TracesCollector as well +func (tc *TracesCollector) defineNetworkPolicy() *networkingv1.NetworkPolicy { + name := tc.objName() + protocol := corev1.ProtocolTCP + + var ports []networkingv1.NetworkPolicyPort + for _, port := range tc.ServicePorts { + ports = append( + ports, + networkingv1.NetworkPolicyPort{ + Protocol: &protocol, + Port: &intstr.IntOrString{IntVal: port.Port}, + }, + ) + } + + tc.NetworkPolicy = &networkingv1.NetworkPolicy{ + ObjectMeta: metav1.ObjectMeta{ + Name: name, + Namespace: tc.TraceNamespace, + Labels: tc.labelMap(), + }, + Spec: networkingv1.NetworkPolicySpec{ + PodSelector: metav1.LabelSelector{ + MatchLabels: map[string]string{ + "app.kubernetes.io/name": name, + }, + }, + PolicyTypes: []networkingv1.PolicyType{ + networkingv1.PolicyTypeIngress, + }, + Ingress: []networkingv1.NetworkPolicyIngressRule{ + { + From: []networkingv1.NetworkPolicyPeer{ + { + NamespaceSelector: &metav1.LabelSelector{ + MatchLabels: map[string]string{ + "kubernetes.io/metadata.name": tc.Name, + }, + }, + }, + }, + Ports: ports, + }, + }, + }, + } + return tc.NetworkPolicy +} + +// CreateOrUpdateNetworkPolicy creates or updates the network policy by calling K8s API +func (tc *TracesCollector) CreateOrUpdateNetworkPolicy(ctx context.Context, client client.Client) error { + networkPolicyMutating := tc.defineNetworkPolicy().DeepCopy() + _, err := ctrl.CreateOrUpdate( + ctx, + client, + networkPolicyMutating, + func() error { + networkPolicyMutating.Spec = tc.NetworkPolicy.Spec + return nil + }, + ) + return err +} + +// ObjectsToDelete returns a list of all the Alloy deployment related +// objects for deletion. The TracesColector has to be initialized the +// same way as it was when creating the initial objects for the +// deletion to succeed. +func (tc *TracesCollector) ObjectsToDelete() []client.Object { + objects := []client.Object{ + tc.defineSecret(), + tc.defineConfigMap(), + tc.defineService(), + tc.defineDeployment(), + tc.defineNetworkPolicy(), + tc.defineVPA(), + } + + if tc.EnableVPA { + objects = append(objects, tc.defineVPA()) + } + + return objects +} + +type servicePort struct { + Name string + Port int32 +} + +//go:embed files/config.alloy +var alloyConfigTemplate string + +type alloyConfig struct { + Credentials []OTelCredentials + CustomResourceAttributes map[string]string +} + +func (tc *TracesCollector) getAlloyConfigContents(credentials ...OTelCredentials) (string, error) { + // Set up default credential values + var cred []OTelCredentials + for _, v := range credentials { + if v.Password == "" { + v.Password = "env(\"GRAFANA_CLOUD_TRACES_TOKEN\")" + } + cred = append(cred, v) + } + + // Render the template + config := alloyConfig{ + Credentials: cred, + CustomResourceAttributes: map[string]string{ + "k8s.cluster.name": tc.ClusterName, + "k8s.namespace.name": tc.TenantNamespace, + }, + } + tpl := template.New("alloy-config") + tpl, err := tpl.Parse(alloyConfigTemplate) + if err != nil { + return "", err + } + + var buffer bytes.Buffer + err = tpl.Execute(&buffer, config) + if err != nil { + return "", err + } + return buffer.String(), nil +} + +type OTelCredentials struct { + User, Password, Endpoint string +} diff --git a/pkg/controllers/traces_collector_test.go b/pkg/controllers/traces_collector_test.go new file mode 100644 index 0000000..23a6fb8 --- /dev/null +++ b/pkg/controllers/traces_collector_test.go @@ -0,0 +1,429 @@ +package controllers + +import ( + "bytes" + "context" + "flag" + vpav1 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1" + "os" + "os/exec" + "strings" + "testing" + "text/template" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + appsv1 "k8s.io/api/apps/v1" + corev1 "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" + networkingv1 "k8s.io/api/networking/v1" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/intstr" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +var verifyAlloyRendering = flag.Bool("verify-alloy", false, "use the alloy binary to verify rendered template correctness") + +func setupAlloyLinter(t *testing.T, buffer []byte) (*exec.Cmd, *strings.Builder) { + t.Helper() + paths := []string{ + "./alloy-linux-amd64", + "./alloy", + "alloy-linux-amd64", + "alloy", + } + + var path string + var errors []error + for _, p := range paths { + np, err := exec.LookPath(p) + if err != nil { + errors = append(errors, err) + continue + } + + path = np + break + } + if path == "" { + for _, err := range errors { + assert.NoError(t, err) + } + t.Fail() + } + cmd := exec.Command(path, "fmt") + cmd.Stdin = bytes.NewReader(buffer) + var out strings.Builder + cmd.Stdout = &out + return cmd, &out +} + +func TestAlloyConfigTemplateCorrectness(t *testing.T) { + // This test verifies that changes to the template result in valid, executable templates + path, err := os.MkdirTemp("", "alloy-lint-*") + require.NoError(t, err) + defer os.RemoveAll(path) + + tpl := template.New("alloy-config") + _, err = tpl.Parse(alloyConfigTemplate) + require.NoError(t, err, "couldn't parse Alloy configuration template successfully") + + t.Run("test alloy config file generated with a single credential is syntactically correct", func(t *testing.T) { + config := alloyConfig{ + Credentials: []OTelCredentials{ + { + User: "123", + Password: `"my-pass"`, + Endpoint: `"my.domain.tld/otlp"`, + }, + }, + } + var buffer bytes.Buffer + err = tpl.Execute(&buffer, config) + require.NoError(t, err, "couldn't execute Alloy configuration template successfully") + + if *verifyAlloyRendering { + cmd, out := setupAlloyLinter(t, buffer.Bytes()) + err = cmd.Run() + require.NoError(t, err) + assert.Equal(t, buffer.String(), out.String()) + } + }) + t.Run("test alloy config file generated with multiple credentials is syntactically correct", func(t *testing.T) { + config := alloyConfig{ + Credentials: []OTelCredentials{ + { + User: "123", + Password: `"my-pass"`, + Endpoint: `"my.domain.tld/otlp"`, + }, + { + User: "456", + Password: `"my-other-pass"`, + Endpoint: `"my.other.domain.tld/otlp"`, + }, + }, + } + var buffer bytes.Buffer + err = tpl.Execute(&buffer, config) + require.NoError(t, err, "couldn't execute Alloy configuration template successfully") + + if *verifyAlloyRendering { + cmd, out := setupAlloyLinter(t, buffer.Bytes()) + err = cmd.Run() + require.NoError(t, err) + assert.Equal(t, buffer.String(), out.String()) + } + }) +} + +func TestAlloyConfigSupportsMultipleDestinations(t *testing.T) { + credentials := []OTelCredentials{ + { + User: "123", + Password: `"my-pass"`, + Endpoint: `"my.domain.tld/otlp"`, + }, + { + User: "456", + Password: `"my-other-pass"`, + Endpoint: `"my.other.domain.tld/otlp"`, + }, + } + + t.Run("when there are multiple destinations all of them appear", func(t *testing.T) { + tpl := template.New("alloy-config") + _, err := tpl.Parse(alloyConfigTemplate) + require.NoError(t, err, "couldn't parse Alloy configuration template successfully") + + var buffer bytes.Buffer + err = tpl.Execute(&buffer, alloyConfig{Credentials: credentials}) + require.NoError(t, err, "couldn't execute Alloy configuration template successfully") + + assert.Contains(t, buffer.String(), "otelcol.exporter.otlphttp.default_0.input") + assert.Contains(t, buffer.String(), `otelcol.auth.basic "credentials_0"`) + assert.Contains(t, buffer.String(), "username = "+credentials[0].User) + assert.Contains(t, buffer.String(), "password = "+credentials[0].Password) + assert.Contains(t, buffer.String(), `otelcol.exporter.otlphttp "default_0"`) + assert.Contains(t, buffer.String(), "endpoint = "+credentials[0].Endpoint) + assert.Contains(t, buffer.String(), "auth = otelcol.auth.basic.credentials_0.handler") + + assert.Contains(t, buffer.String(), "otelcol.exporter.otlphttp.default_1.input") + assert.Contains(t, buffer.String(), `otelcol.auth.basic "credentials_1"`) + assert.Contains(t, buffer.String(), "username = "+credentials[1].User) + assert.Contains(t, buffer.String(), "password = "+credentials[1].Password) + assert.Contains(t, buffer.String(), `otelcol.exporter.otlphttp "default_1"`) + assert.Contains(t, buffer.String(), "endpoint = "+credentials[1].Endpoint) + assert.Contains(t, buffer.String(), "auth = otelcol.auth.basic.credentials_1.handler") + }) + t.Run("when there's only one destination the others aren't there", func(t *testing.T) { + tpl := template.New("alloy-config") + _, err := tpl.Parse(alloyConfigTemplate) + require.NoError(t, err, "couldn't parse Alloy configuration template successfully") + + var buffer bytes.Buffer + err = tpl.Execute(&buffer, alloyConfig{Credentials: []OTelCredentials{credentials[0]}}) + require.NoError(t, err, "couldn't execute Alloy configuration template successfully") + + assert.Contains(t, buffer.String(), "otelcol.exporter.otlphttp.default_0.input") + assert.Contains(t, buffer.String(), `otelcol.auth.basic "credentials_0"`) + assert.Contains(t, buffer.String(), "username = "+credentials[0].User) + assert.Contains(t, buffer.String(), "password = "+credentials[0].Password) + assert.Contains(t, buffer.String(), `otelcol.exporter.otlphttp "default_0"`) + assert.Contains(t, buffer.String(), "endpoint = "+credentials[0].Endpoint) + assert.Contains(t, buffer.String(), "auth = otelcol.auth.basic.credentials_0.handler") + + assert.NotContains(t, buffer.String(), "otelcol.exporter.otlphttp.default_1.input") + assert.NotContains(t, buffer.String(), `otelcol.auth.basic "credentials_1"`) + assert.NotContains(t, buffer.String(), "username = "+credentials[1].User) + assert.NotContains(t, buffer.String(), "password = "+credentials[1].Password) + assert.NotContains(t, buffer.String(), `otelcol.exporter.otlphttp "default_1"`) + assert.NotContains(t, buffer.String(), "endpoint = "+credentials[1].Endpoint) + assert.NotContains(t, buffer.String(), "auth = otelcol.auth.basic.credentials_1.handler") + }) +} + +func TestSecretUpdate(t *testing.T) { + tracesNs := newNamespace("observability") + ns := newNamespace("my-namespace-dev") + gcToken := "grafana_traces_token" + gcOtherToken := "grafana_traces_token_2" + + t.Run("verify the grafana token is updated in the cluster", func(t *testing.T) { + verifySecret := func(reconciler *NamespaceReconciler, secretName, token string) { + secrets := &corev1.SecretList{} + + err := reconciler.Client.List(context.Background(), secrets, client.InNamespace(tracesNs.Name)) + require.NoError(t, err) + + require.Len(t, secrets.Items, 1) + require.Equal(t, secretName, secrets.Items[0].Name) + require.Contains(t, secrets.Items[0].Data, "grafana-cloud-traces-token") + assert.Equal(t, token, string(secrets.Items[0].Data["grafana-cloud-traces-token"])) + } + + reconciler := newDefaultNamespaceReconciler(t, ns, tracesNs) + + tc, err := NewTracesCollector(ns.Name, tracesNs.Name, "", false) + require.NoError(t, err) + + err = tc.CreateOrUpdateSecret(context.Background(), reconciler.Client, gcToken) + require.NoError(t, err) + + verifySecret(reconciler, tc.objName(), gcToken) + + err = tc.CreateOrUpdateSecret(context.Background(), reconciler.Client, gcOtherToken) + require.NoError(t, err) + + verifySecret(reconciler, tc.objName(), gcOtherToken) + }) +} + +func TestConfigMapUpdate(t *testing.T) { + tracesNs := newNamespace("observability") + ns := newNamespace("my-namespace-dev") + + t.Run("verify configmap is updated in the cluster", func(t *testing.T) { + verifyConfigMap := func(reconciler *NamespaceReconciler, name, config, token string) { + configmaps := &corev1.ConfigMapList{} + + err := reconciler.Client.List(context.Background(), configmaps, client.InNamespace(tracesNs.Name)) + require.NoError(t, err) + + require.Len(t, configmaps.Items, 1) + require.Equal(t, name, configmaps.Items[0].Name) + require.Contains(t, configmaps.Items[0].Data, "config.alloy") + assert.Equal(t, config, string(configmaps.Items[0].Data["config.alloy"])) + } + + reconciler := newDefaultNamespaceReconciler(t, ns, tracesNs) + + tc, err := NewTracesCollector(ns.Name, tracesNs.Name, "", false) + require.NoError(t, err) + + err = tc.CreateOrUpdateConfigMap(context.Background(), reconciler.Client) + require.NoError(t, err) + + verifyConfigMap(reconciler, tc.objName(), "", tc.templatedConfig) + + tc.templatedConfig = "test" + err = tc.CreateOrUpdateConfigMap(context.Background(), reconciler.Client) + require.NoError(t, err) + + verifyConfigMap(reconciler, tc.objName(), "test", tc.templatedConfig) + }) +} + +func TestServiceUpdate(t *testing.T) { + tracesNs := newNamespace("observability") + ns := newNamespace("my-namespace-dev") + + t.Run("verify service is updated in the cluster", func(t *testing.T) { + verifyService := func(reconciler *NamespaceReconciler, name string, servicePorts []servicePort) { + service := &corev1.ServiceList{} + + err := reconciler.Client.List(context.Background(), service, client.InNamespace(tracesNs.Name)) + require.NoError(t, err) + + require.Len(t, service.Items, 1) + require.Equal(t, name, service.Items[0].Name) + for _, sp := range servicePorts { + assert.Contains(t, service.Items[0].Spec.Ports, corev1.ServicePort{ + Name: name + "-" + sp.Name, + Protocol: corev1.ProtocolTCP, + Port: sp.Port, + TargetPort: intstr.IntOrString{ + IntVal: sp.Port, + }, + }) + } + } + + reconciler := newDefaultNamespaceReconciler(t, ns, tracesNs) + + tc, err := NewTracesCollector(ns.Name, tracesNs.Name, "", false) + require.NoError(t, err) + + err = tc.CreateOrUpdateService(context.Background(), reconciler.Client) + require.NoError(t, err) + + verifyService(reconciler, tc.svcName(), []servicePort{}) + + servicePorts := []servicePort{ + { + Name: "test", + Port: int32(1234), + }, + } + tc.ServicePorts = servicePorts + + err = tc.CreateOrUpdateService(context.Background(), reconciler.Client) + require.NoError(t, err) + + verifyService(reconciler, tc.svcName(), servicePorts) + }) +} + +func TestDeploymentUpdate(t *testing.T) { + tracesNs := newNamespace("observability") + ns := newNamespace("my-namespace-dev") + + t.Run("verify deployment is updated in the cluster", func(t *testing.T) { + verifyDeployment := func(reconciler *NamespaceReconciler, name string, servicePorts []servicePort) { + deployment := &appsv1.DeploymentList{} + + err := reconciler.Client.List(context.Background(), deployment, client.InNamespace(tracesNs.Name)) + require.NoError(t, err) + + require.Len(t, deployment.Items, 1) + require.Equal(t, name, deployment.Items[0].Name) + require.Len(t, deployment.Items[0].Spec.Template.Spec.Containers, 2) + for _, sp := range servicePorts { + assert.Contains(t, deployment.Items[0].Spec.Template.Spec.Containers[0].Ports, v1.ContainerPort{ + Name: sp.Name, + ContainerPort: sp.Port, + }) + } + } + + reconciler := newDefaultNamespaceReconciler(t, ns, tracesNs) + + tc, err := NewTracesCollector(ns.Name, tracesNs.Name, "", false) + require.NoError(t, err) + + err = tc.CreateOrUpdateDeployment(context.Background(), reconciler.Client) + require.NoError(t, err) + + verifyDeployment(reconciler, tc.objName(), []servicePort{}) + + servicePorts := []servicePort{ + { + Name: "test", + Port: int32(1234), + }, + } + tc.ServicePorts = servicePorts + + err = tc.CreateOrUpdateDeployment(context.Background(), reconciler.Client) + require.NoError(t, err) + + verifyDeployment(reconciler, tc.objName(), servicePorts) + }) +} + +func TestNetworkPolicyUpdate(t *testing.T) { + tracesNs := newNamespace("observability") + ns := newNamespace("my-namespace-dev") + + t.Run("verify network policy is updated in the cluster", func(t *testing.T) { + verifyNetworkPolicy := func(reconciler *NamespaceReconciler, name string, servicePorts []servicePort) { + networkPolicy := &networkingv1.NetworkPolicy{} + + err := reconciler.Client.Get(context.Background(), types.NamespacedName{Namespace: tracesNs.Name, Name: name}, networkPolicy) + require.NoError(t, err) + + if len(servicePorts) > 0 { + for _, sp := range servicePorts { + var found bool + for _, np := range networkPolicy.Spec.Ingress[0].Ports { + if sp.Port != np.Port.IntVal { + continue + } + found = true + } + assert.True(t, found) + } + } + } + + reconciler := newDefaultNamespaceReconciler(t, ns, tracesNs) + + tc, err := NewTracesCollector(ns.Name, tracesNs.Name, "", false) + require.NoError(t, err) + + err = tc.CreateOrUpdateNetworkPolicy(context.Background(), reconciler.Client) + require.NoError(t, err) + + verifyNetworkPolicy(reconciler, tc.objName(), []servicePort{}) + + servicePorts := []servicePort{ + { + Name: "test", + Port: int32(1234), + }, + } + tc.ServicePorts = servicePorts + + err = tc.CreateOrUpdateNetworkPolicy(context.Background(), reconciler.Client) + require.NoError(t, err) + + verifyNetworkPolicy(reconciler, tc.objName(), servicePorts) + }) +} + +func TestVPAUpdate(t *testing.T) { + tracesNs := newNamespace("observability") + ns := newNamespace("my-namespace-dev") + + t.Run("verify VPA is updated in the cluster", func(t *testing.T) { + verifyVPA := func(reconciler *NamespaceReconciler, name string) { + vpa := &vpav1.VerticalPodAutoscalerList{} + + err := reconciler.Client.List(context.Background(), vpa, client.InNamespace(tracesNs.Name)) + require.NoError(t, err) + + require.Len(t, vpa.Items, 1) + require.Equal(t, name, vpa.Items[0].Name) + } + + reconciler := newDefaultNamespaceReconciler(t, ns, tracesNs) + + tc, err := NewTracesCollector(ns.Name, tracesNs.Name, "", true) + require.NoError(t, err) + + err = tc.CreateOrUpdateVPA(context.Background(), reconciler.Client) + require.NoError(t, err) + + verifyVPA(reconciler, tc.objName()) + }) +} diff --git a/pkg/grafanacloud/fluentd_template.conf b/pkg/grafanacloud/fluentd_template.conf new file mode 100644 index 0000000..01644a5 --- /dev/null +++ b/pkg/grafanacloud/fluentd_template.conf @@ -0,0 +1,101 @@ + + @type record_modifier + @id inject_loki_user_environment_dev + + environment "dev" + + + + + @type record_modifier + @id inject_loki_user_environment_pre + + environment "pre" + + + + + @type record_modifier + @id inject_loki_user_environment_pro + + environment "pro" + + + +{{- range $namespace, $creds := .Stacks }} + + @type copy +{{- range $index, $userData := $creds }} + + @type loki + @id loki_loki_{{ $namespace }}_access_log_{{ $index }} + url "{{$userData.URL}}" + username "{{ $userData.UserID }}" + password "#{ENV['LOKI_PASSWORD']}" + buffer_chunk_limit 1m + + flush_interval 60s # default + flush_at_shutdown true # default + retry_timeout 60s # instead of the default 72h + retry_max_times 5 # instead of the default 17 (i.e. 65536 seconds, or 1092 minutes or 18 hours) + retry_max_interval 10 + flush_thread_count 1 # default + overflow_action drop_oldest_chunk + disable_chunk_backup true + + # this instructs loki to send each "fluentd record" as JSON + # i.e. '{"log": "${lineLoggedByUser}", "time": "2021-01-01T00:00", "kubernetes": {"namespace": {"name": "${namespaceName}"}}}' + # removing this line transforms the record in kubernetes={"namespace": {"name": "${namespaceName}"}}} time=2021-01-01T00:00 log=${lineLoggedByUser} + # that is unparsable on the loki query side + line_format json + extra_labels {"cluster": "{{$.Cluster.Name}}","region":"{{$.Cluster.Region}}"} + remove_keys _sumo_metadata,source,category,host + + +{{- end }} + + + + @type copy +{{- range $index, $userData := $creds }} + + @type loki + @id loki_loki_{{ $namespace }}_{{ $index }} + url "{{$userData.URL}}" + username "{{ $userData.UserID }}" + password "#{ENV['LOKI_PASSWORD']}" + buffer_chunk_limit 64m + + flush_interval 60s # default + flush_at_shutdown true # default + retry_timeout 60s # instead of the default 72h + retry_max_times 5 # instead of the default 17 (i.e. 65536 seconds, or 1092 minutes or 18 hours) + retry_max_interval 10 + flush_thread_count 1 # default + overflow_action drop_oldest_chunk + disable_chunk_backup true + + # this instructs loki to send each "fluentd record" as JSON + # i.e. '{"log": "${lineLoggedByUser}", "time": "2021-01-01T00:00", "kubernetes": {"namespace": {"name": "${namespaceName}"}}}' + # removing this line transforms the record in kubernetes={"namespace": {"name": "${namespaceName}"}}} time=2021-01-01T00:00 log=${lineLoggedByUser} + # that is unparsable on the loki query side + line_format json + extra_labels {"cluster": "{{$.Cluster.Name}}","region":"{{$.Cluster.Region}}"} + remove_keys _sumo_metadata,source,category,host + + +{{- end }} + +{{- end }} diff --git a/pkg/grafanacloud/grafana_stack.go b/pkg/grafanacloud/grafana_stack.go new file mode 100644 index 0000000..95a95e9 --- /dev/null +++ b/pkg/grafanacloud/grafana_stack.go @@ -0,0 +1,86 @@ +package grafanacloud + +import ( + "time" + + "github.com/go-logr/logr" + + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "sigs.k8s.io/controller-runtime/pkg/event" +) + +type GrafanaStackReconciler struct { + Log logr.Logger + GrafanaCloudClient GrafanaCloudStackLister + GrafanaStackChangeEvents chan event.GenericEvent + OriginalStacks map[string]struct{} +} + +func (r *GrafanaStackReconciler) WatchGrafanaStacksChange(tick <-chan time.Time) error { + + stacks, err := r.listStacks() + + if err != nil { + r.Log.Error(err, "Failed to list grafana cloud stacks") + return err + } + + r.OriginalStacks = stacks + + go func() { + for range tick { + err := r.reconcile() + if err != nil { + r.Log.Error(err, "Failed to list grafana cloud stacks, it will be retried.") + } + } + }() + return nil +} + +func (r *GrafanaStackReconciler) reconcile() error { + updatedStacks, err := r.listStacks() + if err != nil { + return err + } + for updatedStack := range updatedStacks { + if _, found := r.OriginalStacks[updatedStack]; !found { + r.Log.Info("new stack is found", "stack-name", updatedStack) + r.GrafanaStackChangeEvents <- event.GenericEvent{ + Object: &corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{ + Name: updatedStack, + }, + }, + } + } + } + for originalStack := range r.OriginalStacks { + if _, found := updatedStacks[originalStack]; !found { + r.Log.Info("stack is deleted", "stack-name", originalStack) + r.GrafanaStackChangeEvents <- event.GenericEvent{ + Object: &corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{ + Name: originalStack, + }, + }, + } + } + } + r.OriginalStacks = updatedStacks + return nil +} + +func (r *GrafanaStackReconciler) listStacks() (map[string]struct{}, error) { + stacks, err := r.GrafanaCloudClient.ListStacks() + if err != nil { + r.Log.Error(err, "Failed to list grafana cloud stacks") + return nil, err + } + out := map[string]struct{}{} + for _, stack := range stacks { + out[stack.Slug] = struct{}{} + } + return out, nil +} diff --git a/pkg/grafanacloud/grafana_stack_test.go b/pkg/grafanacloud/grafana_stack_test.go new file mode 100644 index 0000000..8cb2852 --- /dev/null +++ b/pkg/grafanacloud/grafana_stack_test.go @@ -0,0 +1,189 @@ +package grafanacloud + +import ( + "errors" + "fmt" + "sync" + "sync/atomic" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/event" +) + +type MockStackListerFunc struct { + ListStacksCalls int32 + ListStacksFunc func() (Stacks, error) +} + +func (cg *MockStackListerFunc) ListStacks() (Stacks, error) { + atomic.AddInt32(&cg.ListStacksCalls, 1) + if cg.ListStacksFunc != nil && cg.ListStacksCalls == 1 { + return cg.ListStacksFunc() + } + return nil, errors.New("ListStacks not implemented") +} +func TestWatchPeriodicallySyncsGrafanaCloudStacks(t *testing.T) { + grafanaStackChangeEvents := make(chan event.GenericEvent) + gcClient := &MockStackListerFunc{ + ListStacksFunc: func() (Stacks, error) { + fmt.Println("listStacks") + return []Stack{ + {Slug: "adevintaruntime", LogsInstanceID: 9876, LogsURL: "https://logs.grafanacloud.es"}, + }, nil + }, + } + reconciler := &GrafanaStackReconciler{ + Log: ctrl.Log.WithName("controllers").WithName("GrafanaStack"), + GrafanaCloudClient: gcClient, + GrafanaStackChangeEvents: grafanaStackChangeEvents, + OriginalStacks: map[string]struct{}{}, + } + c := make(chan time.Time) + wg := sync.WaitGroup{} + wg.Add(1) + go func() { + assert.NoError(t, reconciler.WatchGrafanaStacksChange(c)) + wg.Done() + }() + c <- time.Now() + close(c) + wg.Wait() + assert.EqualValues(t, 2, gcClient.ListStacksCalls) +} +func TestWatchGrafanaStacksChangeFailsHardWhenInitialListFails(t *testing.T) { + grafanaStackChangeEvents := make(chan event.GenericEvent, 10) + gcClient := &MockStackListerFunc{ + ListStacksFunc: func() (Stacks, error) { + return nil, errors.New("test-error") + }, + } + reconciler := &GrafanaStackReconciler{ + Log: ctrl.Log.WithName("controllers").WithName("GrafanaStack"), + GrafanaCloudClient: gcClient, + GrafanaStackChangeEvents: grafanaStackChangeEvents, + OriginalStacks: map[string]struct{}{}, + } + c := make(chan time.Time) + close(c) + assert.Error(t, reconciler.WatchGrafanaStacksChange(c)) +} +func TestGrafanaStackReconcileReturnsAnErrorWhenClientListFails(t *testing.T) { + grafanaStackChangeEvents := make(chan event.GenericEvent) + gcClient := &MockStackListerFunc{ + ListStacksFunc: func() (Stacks, error) { + return nil, errors.New("test-error") + }, + } + reconciler := &GrafanaStackReconciler{ + Log: ctrl.Log.WithName("controllers").WithName("GrafanaStack"), + GrafanaCloudClient: gcClient, + GrafanaStackChangeEvents: grafanaStackChangeEvents, + OriginalStacks: map[string]struct{}{}, + } + wg := sync.WaitGroup{} + wg.Add(1) + go func() { + for evt := range grafanaStackChangeEvents { + switch evt.Object.GetName() { + default: + assert.Fail(t, "should trigger a reconciliation of grafanacloud stack %s", evt.Object.GetName()) + } + } + wg.Done() + }() + assert.Error(t, reconciler.reconcile()) + assert.EqualValues(t, 1, gcClient.ListStacksCalls) + close(grafanaStackChangeEvents) + assert.Equal(t, map[string]struct{}{}, reconciler.OriginalStacks) + wg.Wait() +} +func TestGrafanaStackReconcileTriggersUpdateForAddedAndDeletedStacks(t *testing.T) { + grafanaStackChangeEvents := make(chan event.GenericEvent) + gcClient := &MockStackListerFunc{ + ListStacksFunc: func() (Stacks, error) { + return []Stack{ + {Slug: "adevintatenant", LogsInstanceID: 1234, LogsURL: "https://logs.grafanacloud.de"}, + {Slug: "adevintaruntime", LogsInstanceID: 9876, LogsURL: "https://logs.grafanacloud.es"}, + {Slug: "adevintanewtenants1", LogsInstanceID: 9878, LogsURL: "https://logs.grafanacloud.fr"}, + }, nil + }, + } + reconciler := &GrafanaStackReconciler{ + Log: ctrl.Log.WithName("controllers").WithName("GrafanaStack"), + GrafanaCloudClient: gcClient, + GrafanaStackChangeEvents: grafanaStackChangeEvents, + OriginalStacks: map[string]struct{}{ + "adevintatenant": {}, + "adevintaothertenant": {}, + "adevintaruntime": {}, + }, + } + wg := sync.WaitGroup{} + wg.Add(1) + go func() { + for evt := range grafanaStackChangeEvents { + switch evt.Object.GetName() { + case "adevintanewtenants1": + case "adevintaothertenant": + default: + assert.Fail(t, "unexpected reconciliation of grafanacloud stack %s", evt.Object.GetName()) + } + } + wg.Done() + }() + require.NoError(t, reconciler.reconcile()) + assert.EqualValues(t, 1, gcClient.ListStacksCalls) + close(grafanaStackChangeEvents) + assert.Equal(t, map[string]struct{}{ + "adevintatenant": {}, + "adevintanewtenants1": {}, + "adevintaruntime": {}, + }, reconciler.OriginalStacks) + wg.Wait() +} +func TestGrafanaStackReconcileStackNoChangesDoesNotPopulateEvents(t *testing.T) { + grafanaStackChangeEvents := make(chan event.GenericEvent) + gcClient := &MockStackListerFunc{ + ListStacksFunc: func() (Stacks, error) { + return []Stack{ + {Slug: "adevintatenant", LogsInstanceID: 1234, LogsURL: "https://logs.grafanacloud.de"}, + {Slug: "adevintaruntime", LogsInstanceID: 9876, LogsURL: "https://logs.grafanacloud.es"}, + {Slug: "adevintaothertenant", LogsInstanceID: 9878, LogsURL: "https://logs.grafanacloud.fr"}, + }, nil + }, + } + reconciler := &GrafanaStackReconciler{ + Log: ctrl.Log.WithName("controllers").WithName("GrafanaStack"), + GrafanaCloudClient: gcClient, + GrafanaStackChangeEvents: grafanaStackChangeEvents, + OriginalStacks: map[string]struct{}{ + "adevintatenant": {}, + "adevintaothertenant": {}, + "adevintaruntime": {}, + }, + } + wg := sync.WaitGroup{} + wg.Add(1) + go func() { + for evt := range grafanaStackChangeEvents { + switch evt.Object.GetName() { + default: + assert.Fail(t, "unexpected reconciliation of grafanacloud stack %s", evt.Object.GetName()) + } + } + wg.Done() + }() + require.NoError(t, reconciler.reconcile()) + assert.EqualValues(t, 1, gcClient.ListStacksCalls) + close(grafanaStackChangeEvents) + assert.Equal(t, reconciler.OriginalStacks, map[string]struct{}{ + "adevintatenant": {}, + "adevintaothertenant": {}, + "adevintaruntime": {}, + }) + wg.Wait() +} diff --git a/pkg/grafanacloud/grafanacloud_cache.go b/pkg/grafanacloud/grafanacloud_cache.go new file mode 100644 index 0000000..07216df --- /dev/null +++ b/pkg/grafanacloud/grafanacloud_cache.go @@ -0,0 +1,128 @@ +package grafanacloud + +import ( + "fmt" + "sync" + "time" + + "github.com/go-logr/logr" +) + +type CacheEntry struct { + stack *Stack + timestamp int64 +} + +func (c CacheEntry) Value() *Stack { + return c.stack +} + +// IsStale checks if the entry is older than the amount passed for +// staleness in seconds. +func (c CacheEntry) IsStale(staleness int) bool { + return time.Now().Unix()-c.timestamp > int64(staleness) +} + +type StackCache struct { + sync.RWMutex + data map[string]CacheEntry + + // Last time we updated all entries + timestamp int64 +} + +func NewStackCache() StackCache { + data := make(map[string]CacheEntry) + return StackCache{data: data} +} + +type CachedClient struct { + Log logr.Logger + + client *Client + cache StackCache +} + +func NewCachedClient(logr logr.Logger, client *Client) *CachedClient { + return &CachedClient{ + Log: logr, + client: client, + cache: NewStackCache(), + } +} + +// GetStack returns a stack definition for the corresponding GrafanaCloud stack +func (c *CachedClient) GetStack(slug string) (*Stack, error) { + c.cache.RLock() + timestamp := c.cache.timestamp + c.cache.RUnlock() + + if timestamp == 0 { + // cache is empty, fill it with the data we have + if err := c.loadCache(600); err != nil { + return nil, fmt.Errorf("failed to update cache: %w", err) + } + } + + c.cache.RLock() + entry, ok := c.cache.data[slug] + c.cache.RUnlock() + + if ok && !entry.IsStale(300) { + // Recent cache entry + return entry.Value(), nil + } + + s, err := c.client.GetStack(slug) + if err != nil { + return nil, err + } + c.cache.Lock() + c.cache.data[slug] = CacheEntry{stack: s, timestamp: time.Now().Unix()} + c.cache.Unlock() + + return s, nil +} + +func (c *CachedClient) GetTracesConnection(stackSlug string) (int, string, error) { + return c.client.GetTracesConnection(stackSlug) +} + +func (c *CachedClient) ListStacks() (Stacks, error) { + if c.cache.timestamp == 0 || time.Now().Unix()-c.cache.timestamp > 600 { + if err := c.loadCache(600); err != nil { + return nil, fmt.Errorf("failed to update cache: %w", err) + } + } + + stacks := []Stack{} + for _, entry := range c.cache.data { + stacks = append(stacks, *entry.Value()) + } + + return stacks, nil +} + +func (c *CachedClient) loadCache(staleness int) error { + c.cache.Lock() + defer c.cache.Unlock() + + if time.Now().Unix()-c.cache.timestamp < int64(staleness) { + // cache was already updated by some other thread + // while we were waiting for the lock + return nil + } + + stacks, err := c.client.ListStacks() + if err != nil { + return err + } + + clear(c.cache.data) + for _, stack := range stacks { + c.cache.data[stack.Slug] = CacheEntry{stack: &stack, timestamp: time.Now().Unix()} + } + + c.cache.timestamp = time.Now().Unix() + return nil +} diff --git a/pkg/grafanacloud/grafanacloud_cache_test.go b/pkg/grafanacloud/grafanacloud_cache_test.go new file mode 100644 index 0000000..43dd85a --- /dev/null +++ b/pkg/grafanacloud/grafanacloud_cache_test.go @@ -0,0 +1,249 @@ +package grafanacloud + +import ( + "bytes" + "fmt" + "io" + "net/http" + "sync" + "testing" + "time" + + "github.com/go-logr/logr" + gcom "github.com/grafana/grafana-com-public-clients/go/gcom" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +const ( + bodyFound = `{"items":[{"hlInstanceId":123,"hmInstancePromId":456,"hmInstancePromUrl":"http://prom-prod.test","hlInstanceUrl":"http://logs-prod.test","id":789,"slug":"dummystack","url":"http://stack-prod.test"}]}` +) + +type httpTransportSpy struct { + Calls int + ResponseFunc func(*http.Request) (*http.Response, error) +} + +func (c *httpTransportSpy) RoundTrip(req *http.Request) (*http.Response, error) { + c.Calls++ + return c.ResponseFunc(req) +} + +func defaultResponseFunc(statusCode int, body string) func(req *http.Request) (*http.Response, error) { + return func(*http.Request) (*http.Response, error) { + resp := http.Response{ + StatusCode: statusCode, + Header: http.Header{ + "Content-Type": []string{"application/json"}, + "Content-Length": []string{fmt.Sprintf("%d", len(body))}, + }, + Body: io.NopCloser(bytes.NewReader([]byte(body))), + } + return &resp, nil + } +} + +func mockedGCOMClient(client *http.Client) *gcom.APIClient { + config := gcom.NewConfiguration() + config.Host = "grafana.com" + config.Scheme = "https" + config.HTTPClient = client + + return gcom.NewAPIClient(config) +} + +func TestGetStackUsesCache(t *testing.T) { + t.Run("when asking for the same stack twice, only one http call is made", func(t *testing.T) { + transportSpy := &httpTransportSpy{ + ResponseFunc: defaultResponseFunc(http.StatusOK, bodyFound), + } + + httpClient := &http.Client{ + Transport: transportSpy, + } + + grafanaClient := NewCachedClient(logr.Logger{}, NewClient( + logr.Logger{}, + mockedGCOMClient(httpClient), + "test-org", + )) + + _, err := grafanaClient.GetStack("dummystack") + require.NoError(t, err) + + _, err = grafanaClient.GetStack("dummystack") + require.NoError(t, err) + + assert.Equal(t, 1, transportSpy.Calls) + }) + + t.Run("when asking for non-existing stacks, all trigger an http call", func(t *testing.T) { + transportSpy := &httpTransportSpy{ + ResponseFunc: defaultResponseFunc(http.StatusNotFound, `{"message":"Stack not found"}`), + } + + httpClient := &http.Client{ + Transport: transportSpy, + } + + grafanaClient := NewCachedClient(logr.Logger{}, NewClient( + logr.Logger{}, + mockedGCOMClient(httpClient), + "test-org", + )) + + _, err := grafanaClient.GetStack("nonexistingstack") + require.Error(t, err) + + _, err = grafanaClient.GetStack("neitherdoesthisone") + require.Error(t, err) + + assert.Equal(t, 2, transportSpy.Calls) + }) +} + +func TestGetStackCacheStaleness(t *testing.T) { + t.Run("when the cache entry is not stale, we do not trigger any http call", func(t *testing.T) { + transportSpy := &httpTransportSpy{ + ResponseFunc: defaultResponseFunc(http.StatusOK, bodyFound), + } + + httpClient := &http.Client{ + Transport: transportSpy, + } + + grafanaClient := NewCachedClient(logr.Logger{}, NewClient( + logr.Logger{}, + mockedGCOMClient(httpClient), + "test-org", + )) + + grafanaClient.cache.timestamp = time.Now().Unix() + + cacheContents := make(map[string]CacheEntry) + cacheContents["dummystack"] = CacheEntry{ + stack: &Stack{}, + timestamp: time.Now().Unix(), + } + + grafanaClient.cache.data = cacheContents + + _, err := grafanaClient.GetStack("dummystack") + + require.NoError(t, err) + + assert.Equal(t, 0, transportSpy.Calls) + }) + t.Run("when the cache entry is stale, we trigger and http call", func(t *testing.T) { + transportSpy := &httpTransportSpy{ + ResponseFunc: defaultResponseFunc(http.StatusOK, bodyFound), + } + + httpClient := &http.Client{ + Transport: transportSpy, + } + + grafanaClient := NewCachedClient(logr.Logger{}, NewClient( + logr.Logger{}, + mockedGCOMClient(httpClient), + "test-org", + )) + + cacheContents := make(map[string]CacheEntry) + cacheContents["dummystack"] = CacheEntry{ + stack: &Stack{}, + timestamp: time.Now().Add(-time.Hour).Unix(), + } + + grafanaClient.cache.data = cacheContents + + _, err := grafanaClient.GetStack("dummystack") + require.NoError(t, err) + + assert.Equal(t, 1, transportSpy.Calls) + }) +} + +func TestConcurrentGetStackCache(t *testing.T) { + t.Run("concurrent access to the cache is safe", func(t *testing.T) { + transportSpy := &httpTransportSpy{ + ResponseFunc: defaultResponseFunc(http.StatusOK, bodyFound), + } + + grafanaClient := NewCachedClient(logr.Logger{}, NewClient( + logr.Logger{}, + mockedGCOMClient(&http.Client{ + Transport: transportSpy, + }), + "test-org", + )) + + var wg sync.WaitGroup + + // We simulate concurrent access to the cache + for range 100 { + wg.Add(1) + go func() { + _, err := grafanaClient.GetStack("dummystack") + require.NoError(t, err) + wg.Done() + }() + } + wg.Wait() + + assert.Equal(t, 1, transportSpy.Calls) + }) +} + +func TestListStackCache(t *testing.T) { + t.Run("Call ListStacks when the cache is empty. Makes one call to the Grafana API, to populate the cache, then uses it to respond the rest of the calls", func(t *testing.T) { + transportSpy := &httpTransportSpy{ + ResponseFunc: defaultResponseFunc(http.StatusOK, bodyFound), + } + + httpClient := &http.Client{ + Transport: transportSpy, + } + + grafanaClient := NewCachedClient(logr.Logger{}, NewClient( + logr.Logger{}, + mockedGCOMClient(httpClient), + "test-org", + )) + + _, err := grafanaClient.ListStacks() + require.NoError(t, err) + + _, err = grafanaClient.ListStacks() + require.NoError(t, err) + + assert.Equal(t, 1, transportSpy.Calls) + }) + + t.Run("Call ListStacks when the cache is stale. Makes one call to the Grafana API, to populate the cache, then uses it to respond the rest of the calls", func(t *testing.T) { + transportSpy := &httpTransportSpy{ + ResponseFunc: defaultResponseFunc(http.StatusOK, bodyFound), + } + + httpClient := &http.Client{ + Transport: transportSpy, + } + + grafanaClient := NewCachedClient(logr.Logger{}, NewClient( + logr.Logger{}, + mockedGCOMClient(httpClient), + "test-org", + )) + + _, err := grafanaClient.ListStacks() + require.NoError(t, err) + + grafanaClient.cache.timestamp = 0 + + _, err = grafanaClient.ListStacks() + require.NoError(t, err) + + assert.Equal(t, 2, transportSpy.Calls) + }) + +} diff --git a/pkg/grafanacloud/grafanacloud_public.go b/pkg/grafanacloud/grafanacloud_public.go new file mode 100644 index 0000000..1461eae --- /dev/null +++ b/pkg/grafanacloud/grafanacloud_public.go @@ -0,0 +1,131 @@ +package grafanacloud + +import ( + "context" + "fmt" + "net/http" + "strconv" + + "github.com/go-logr/logr" + gcom "github.com/grafana/grafana-com-public-clients/go/gcom" +) + +var Config *config = NewConfig("adevinta.com") + +type config struct { + // Destination GrafanaCloud stack selection + stackNameAnnotationKey string + // Namespace feature toggles + logsLabelKey string +} + +func NewConfig(domain string) *config { + return &config{ + stackNameAnnotationKey: "grafanacloud." + domain + "/stack-name", + logsLabelKey: "grafanacloud." + domain + "/logs", + } +} + +// Stack contains all the relevant details of a GrafanaCloud stack +type Stack struct { + LogsInstanceID int `json:"hlInstanceId"` + MetricsInstanceID int `json:"hmInstancePromId"` + PromURL string `json:"hmInstancePromUrl"` + LogsURL string `json:"hlInstanceUrl"` + StackID int `json:"id"` + Slug string `json:"slug" yaml:"slug"` + URL string `json:"url" yaml:"url"` +} + +type Stacks []Stack + +type Client struct { + GComClient *gcom.APIClient + Log logr.Logger + OrgSlug string +} + +func NewClient(logr logr.Logger, gcomClient *gcom.APIClient, org string) *Client { + return &Client{ + GComClient: gcomClient, + Log: logr, + OrgSlug: org, + } +} + +// GetStack returns a stack definition for the corresponding GrafanaCloud stack +func (c *Client) GetStack(slug string) (*Stack, error) { + resp, httpResp, err := c.GComClient.InstancesAPI.GetInstances(context.Background()).OrgSlug(c.OrgSlug).Slug(slug).Execute() + if err != nil { + return nil, fmt.Errorf("failed to get stack %s: %s", slug, err.Error()) + } + if httpResp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("unexpected return code") + } + + if len(resp.GetItems()) == 0 { + err := fmt.Errorf("stack not found: %s", slug) + return nil, err + } + + stack := resp.GetItems()[0] + s := &Stack{ + LogsInstanceID: int(stack.HlInstanceId), + MetricsInstanceID: int(stack.HmInstancePromId), + PromURL: stack.HmInstancePromUrl, + LogsURL: stack.HlInstanceUrl, + StackID: int(stack.Id), + Slug: stack.Slug, + URL: stack.Url, + } + + return s, nil +} + +func (c *Client) GetTracesConnection(stackSlug string) (int, string, error) { + stack, err := c.GetStack(stackSlug) + if err != nil { + return -1, "", err + } + resp, httpResp, err := c.GComClient.InstancesAPI.GetConnections(context.Background(), strconv.Itoa(stack.StackID)).Execute() + if err != nil { + return -1, "", err + } + if httpResp.StatusCode != http.StatusOK { + return -1, "Cannot retrieve the OTLP connection: ", fmt.Errorf("unexpected return code") + } + otlpURL := resp.OtlpHttpUrl + if !otlpURL.IsSet() || otlpURL.Get() == nil { + return -1, "", fmt.Errorf("OTLP URL is not set") + } + return stack.StackID, *otlpURL.Get(), nil +} + +func (c *Client) ListStacks() (Stacks, error) { + resp, httpResp, err := c.GComClient.InstancesAPI.GetInstances(context.Background()).OrgSlug(c.OrgSlug).Execute() + if err != nil { + return nil, fmt.Errorf("failed to get stacks: %s", err.Error()) + } + + if httpResp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("unexpected return code") + } + + stacks := []Stack{} + for _, stack := range resp.Items { + stacks = append( + stacks, + Stack{ + LogsInstanceID: int(stack.HlInstanceId), + MetricsInstanceID: int(stack.HmInstancePromId), + PromURL: stack.HmInstancePromUrl, + LogsURL: stack.HlInstanceUrl, + StackID: int(stack.Id), + Slug: stack.Slug, + URL: stack.Url, + }, + ) + } + + return stacks, nil +} diff --git a/pkg/grafanacloud/grafanacloud_public_test.go b/pkg/grafanacloud/grafanacloud_public_test.go new file mode 100644 index 0000000..a72d0d2 --- /dev/null +++ b/pkg/grafanacloud/grafanacloud_public_test.go @@ -0,0 +1,79 @@ +package grafanacloud_test + +import ( + "os" + "testing" + + "github.com/adevinta/observability-operator/pkg/grafanacloud" + "github.com/go-logr/logr" + "github.com/grafana/grafana-com-public-clients/go/gcom" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func defaultGCOMClient(token string) *gcom.APIClient { + config := gcom.NewConfiguration() + config.AddDefaultHeader("Authorization", "Bearer "+token) + config.Host = "grafana.com" + config.Scheme = "https" + + return gcom.NewAPIClient(config) +} + +func TestGetStack(t *testing.T) { + log := logr.Logger{} + + token, ok := os.LookupEnv("GRAFANA_CLOUD_TOKEN") + if !ok { + t.Skip("Missing GRAFANA_CLOUD_TOKEN") + } + + gcomClient := defaultGCOMClient(token) + + client := grafanacloud.NewClient(log, gcomClient, "adevinta") + + stack, err := client.GetStack("adevintatest") + require.NoError(t, err) + assert.Equal(t, 150026, stack.StackID) + assert.Equal(t, "adevintatest", stack.Slug) + assert.Equal(t, "https://adevintatest.grafana.net", stack.URL) + assert.Equal(t, "https://logs-prod-eu-west-0.grafana.net", stack.LogsURL) + assert.Equal(t, 8302, stack.LogsInstanceID) + assert.Equal(t, "https://prometheus-prod-01-eu-west-0.grafana.net", stack.PromURL) + assert.Equal(t, 18630, stack.MetricsInstanceID) +} + +func TestListStacks(t *testing.T) { + log := logr.Logger{} + + token, ok := os.LookupEnv("GRAFANA_CLOUD_TOKEN") + if !ok { + t.Skip("Missing GRAFANA_CLOUD_TOKEN") + } + + gcomClient := defaultGCOMClient(token) + + client := grafanacloud.NewClient(log, gcomClient, "adevinta") + + stacks, err := client.ListStacks() + require.NoError(t, err) + assert.Greater(t, len(stacks), 0) +} + +func TestGetTracesConnection(t *testing.T) { + log := logr.Logger{} + + token, ok := os.LookupEnv("GRAFANA_CLOUD_TOKEN") + if !ok { + t.Skip("Missing GRAFANA_CLOUD_TOKEN") + } + + gcomClient := defaultGCOMClient(token) + + client := grafanacloud.NewClient(log, gcomClient, "adevinta") + + num, url, err := client.GetTracesConnection("adevintatest") + require.NoError(t, err) + assert.Equal(t, url, "https://otlp-gateway-prod-eu-west-0.grafana.net") + assert.Equal(t, num, 150026) +} diff --git a/pkg/grafanacloud/loki_config.go b/pkg/grafanacloud/loki_config.go new file mode 100644 index 0000000..54105ec --- /dev/null +++ b/pkg/grafanacloud/loki_config.go @@ -0,0 +1,202 @@ +package grafanacloud + +import ( + "bytes" + "context" + _ "embed" + "errors" + "slices" + "strings" + "text/template" + + "github.com/go-logr/logr" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/util/workqueue" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +//go:embed fluentd_template.conf +var lokiFluentDTemplate string + +type GrafanaCloudStackLister interface { + ListStacks() (Stacks, error) +} + +type GrafanaCloudConfigUpdater struct { + client.Client + Log logr.Logger + GrafanaCloudClient GrafanaCloudStackLister + ClusterName string + ClusterRegion string + RateLimiter RateLimitedFunc + + ConfigMapNamespace string + ConfigMapName string + ConfigMapLokiKey string +} + +type RateLimitedFunc struct { + Do func(context.Context) + Queue workqueue.TypedRateLimitingInterface[string] +} + +func (r *RateLimitedFunc) Start() { + for { + item, stop := r.Queue.Get() + if stop { + return + } + r.Do(context.Background()) + r.Queue.Done(item) + } +} + +func (r *RateLimitedFunc) EnsureDone() { + switch r.Queue.Len() { + case 0: + r.Queue.Add("call") + case 1: + r.Queue.AddRateLimited("call") + } +} + +func (r *GrafanaCloudConfigUpdater) Start(queue workqueue.TypedRateLimitingInterface[string]) { + r.RateLimiter = RateLimitedFunc{ + Do: r.createFluentDConfigmap, + Queue: queue, + } + r.RateLimiter.Start() +} + +func (r *GrafanaCloudConfigUpdater) InjectFluentdLokiConfiguration(ctx context.Context) error { + if r.ConfigMapName == "" && r.ConfigMapNamespace == "" && r.ConfigMapLokiKey == "" { + return nil + } + if r.ConfigMapName == "" { + return errors.New("missing loki configmap name") + } + if r.ConfigMapNamespace == "" { + return errors.New("missing loki configmap namespace") + } + if r.ConfigMapLokiKey == "" { + return errors.New("missing loki configmap loki key") + } + r.RateLimiter.EnsureDone() + return nil +} + +func (r *GrafanaCloudConfigUpdater) createFluentDConfigmap(ctx context.Context) { + namespaces := corev1.NamespaceList{} + err := r.Client.List(ctx, &namespaces) + if err != nil { + r.Log.Error(err, "failed to list namespaces") + return + } + + stacks, err := r.GrafanaCloudClient.ListStacks() + if err != nil { + r.Log.Error(err, "failed to list grafanacloud stacks") + return + } + if len(stacks) == 0 { + r.Log.Info("Grafana API does not return any stack, skipping loki configuration injection") + return + } + r.Log.Info("namespaces and stacks", "namespaceCount", len(namespaces.Items), "stackCount", len(stacks)) + + lokiConfigs := map[string][]lokiCredentials{} + for _, namespace := range namespaces.Items { + if value, ok := namespace.Labels[Config.logsLabelKey]; ok && value == "disabled" { + // This namespace does not want logs, move to next one + r.Log.WithValues("namespace", namespace.GetName()).Info("namespace disabled log routing, skipping") + continue + } + + configuredStacks, ok := namespace.Annotations[Config.stackNameAnnotationKey] + if !ok { + r.Log.WithValues("namespace", namespace.GetName()).Info("namespace has no configured destination stack, skipping") + continue + } + + var stackNames []string + for _, part := range strings.Split(configuredStacks, ",") { + stackNames = append(stackNames, strings.TrimSpace(part)) + } + + for _, stack := range stacks { + if slices.IndexFunc(stackNames, func(name string) bool { return name == stack.Slug }) == -1 { + // stack is not present in the list of configured stacks for this namespace + continue + } + if lokiConfigs[namespace.Name] != nil { + // There's more than one destination stack for this namespace + lokiConfigs[namespace.Name] = append( + lokiConfigs[namespace.Name], + lokiCredentials{ + URL: stack.LogsURL, + UserID: stack.LogsInstanceID, + }, + ) + } else { + // This is the first destination stack we have found for this namespace + lokiConfigs[namespace.Name] = []lokiCredentials{ + { + URL: stack.LogsURL, + UserID: stack.LogsInstanceID, + }, + } + } + } + } + r.Log.Info("found loki configurations", "namespaceCount", len(lokiConfigs)) + + tpl := template.New("loki-config") + tpl, err = tpl.Parse(lokiFluentDTemplate) + if err != nil { + r.Log.Error(err, "failed to generate loki configuration") + return + } + b := bytes.Buffer{} + if err := tpl.Execute(&b, lokiOptions{ + Cluster: clusterDetails{ + Name: r.ClusterName, + Region: r.ClusterRegion, + }, + Stacks: lokiConfigs, + }); err != nil { + r.Log.Error(err, "failed to generate loki configuration") + return + } + cm := corev1.ConfigMap{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: r.ConfigMapNamespace, + Name: r.ConfigMapName, + }, + } + if _, err := ctrl.CreateOrUpdate(ctx, r.Client, &cm, func() error { + cm.Data = map[string]string{ + r.ConfigMapLokiKey: b.String(), + } + return nil + }); err != nil { + r.Log.Error(err, "failed to create loki configuration configmap") + return + } + r.Log.Info("injected loki configuration", "namespaceCount", len(lokiConfigs)) +} + +type lokiOptions struct { + Cluster clusterDetails + Stacks map[string][]lokiCredentials +} + +type clusterDetails struct { + Name, Region string +} + +type lokiCredentials struct { + URL string + UserID int +} diff --git a/pkg/grafanacloud/loki_config_test.go b/pkg/grafanacloud/loki_config_test.go new file mode 100644 index 0000000..f6f3cc1 --- /dev/null +++ b/pkg/grafanacloud/loki_config_test.go @@ -0,0 +1,1017 @@ +package grafanacloud + +import ( + "bytes" + "context" + "errors" + "strings" + "testing" + "text/template" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + corev1 "k8s.io/api/core/v1" + k8serrors "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/client-go/util/workqueue" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/client/fake" +) + +type GrafanaCloudClientFunc struct { + ListStacksCalls int + ListStacksFunc func() (Stacks, error) +} + +func (cg *GrafanaCloudClientFunc) ListStacks() (Stacks, error) { + cg.ListStacksCalls++ + if cg.ListStacksFunc != nil { + return cg.ListStacksFunc() + } + return nil, errors.New("ListStacks not implemented") +} + +// Allow to reduce the number functions to write by composing with the interface. +type testK8sLister struct { + client.Client + ListCalls int + ListFunc func(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error + GetCalls int + GetFunc func(ctx context.Context, key client.ObjectKey, obj client.Object, opts ...client.GetOption) error + UpdateCalls int + UpdateFunc func(ctx context.Context, obj client.Object, opts ...client.UpdateOption) error + CreateCalls int + CreateFunc func(ctx context.Context, obj client.Object, opts ...client.CreateOption) error +} + +func (t *testK8sLister) List(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error { + t.ListCalls++ + if t.ListFunc != nil { + return t.ListFunc(ctx, list, opts...) + } + if t.Client != nil { + return t.Client.List(ctx, list, opts...) + } + return errors.New("List not implemented") +} + +func (t *testK8sLister) Get(ctx context.Context, key client.ObjectKey, obj client.Object, opts ...client.GetOption) error { + t.GetCalls++ + if t.GetFunc != nil { + return t.GetFunc(ctx, key, obj, opts...) + } + if t.Client != nil { + return t.Client.Get(ctx, key, obj, opts...) + } + return errors.New("Get not implemented") +} + +func (t *testK8sLister) Update(ctx context.Context, obj client.Object, opts ...client.UpdateOption) error { + t.UpdateCalls++ + if t.UpdateFunc != nil { + return t.UpdateFunc(ctx, obj, opts...) + } + if t.Client != nil { + return t.Client.Update(ctx, obj, opts...) + } + return errors.New("Update not implemented") +} + +func (t *testK8sLister) Create(ctx context.Context, obj client.Object, opts ...client.CreateOption) error { + t.CreateCalls++ + if t.CreateFunc != nil { + return t.CreateFunc(ctx, obj, opts...) + } + if t.Client != nil { + return t.Client.Create(ctx, obj, opts...) + } + return errors.New("Createnot implemented") +} + +func TestFluentdConfigTemplateCorrectness(t *testing.T) { + // This test verifies that changes to the template result in valid, executable templates + tpl := template.New("fluentd-config") + _, err := tpl.Parse(lokiFluentDTemplate) + require.NoError(t, err, "couldn't parse Fluentd configuration template successfully") + + t.Run("when there are no namespaces, fluentd config file generated is syntactically correct", func(t *testing.T) { + config := lokiOptions{ + Cluster: clusterDetails{ + Name: "my-cluster", + Region: "eu-fake-1", + }, + Stacks: map[string][]lokiCredentials{}, + } + var buffer bytes.Buffer + err = tpl.Execute(&buffer, config) + require.NoError(t, err, "couldn't execute Fluentd configuration template successfully") + }) + t.Run("when a namespace has a single stack, fluentd config file generated is syntactically correct", func(t *testing.T) { + namespace := "my-namespace" + config := lokiOptions{ + Cluster: clusterDetails{ + Name: "my-cluster", + Region: "eu-fake-1", + }, + Stacks: map[string][]lokiCredentials{ + namespace: { + { + URL: "http://grafana.net/loki", + UserID: 123, + }, + }, + }, + } + + expectedFluentdconf := ` + @type record_modifier + @id inject_loki_user_environment_dev + + environment "dev" + + + + + @type record_modifier + @id inject_loki_user_environment_pre + + environment "pre" + + + + + @type record_modifier + @id inject_loki_user_environment_pro + + environment "pro" + + + + @type copy + + @type loki + @id loki_loki_my-namespace_access_log_0 + url "http://grafana.net/loki" + username "123" + password "#{ENV['LOKI_PASSWORD']}" + buffer_chunk_limit 1m + + flush_interval 60s # default + flush_at_shutdown true # default + retry_timeout 60s # instead of the default 72h + retry_max_times 5 # instead of the default 17 (i.e. 65536 seconds, or 1092 minutes or 18 hours) + retry_max_interval 10 + flush_thread_count 1 # default + overflow_action drop_oldest_chunk + disable_chunk_backup true + + # this instructs loki to send each "fluentd record" as JSON + # i.e. '{"log": "${lineLoggedByUser}", "time": "2021-01-01T00:00", "kubernetes": {"namespace": {"name": "${namespaceName}"}}}' + # removing this line transforms the record in kubernetes={"namespace": {"name": "${namespaceName}"}}} time=2021-01-01T00:00 log=${lineLoggedByUser} + # that is unparsable on the loki query side + line_format json + extra_labels {"cluster": "my-cluster","region":"eu-fake-1"} + remove_keys _sumo_metadata,source,category,host + + + + + + @type copy + + @type loki + @id loki_loki_my-namespace_0 + url "http://grafana.net/loki" + username "123" + password "#{ENV['LOKI_PASSWORD']}" + buffer_chunk_limit 64m + + flush_interval 60s # default + flush_at_shutdown true # default + retry_timeout 60s # instead of the default 72h + retry_max_times 5 # instead of the default 17 (i.e. 65536 seconds, or 1092 minutes or 18 hours) + retry_max_interval 10 + flush_thread_count 1 # default + overflow_action drop_oldest_chunk + disable_chunk_backup true + + # this instructs loki to send each "fluentd record" as JSON + # i.e. '{"log": "${lineLoggedByUser}", "time": "2021-01-01T00:00", "kubernetes": {"namespace": {"name": "${namespaceName}"}}}' + # removing this line transforms the record in kubernetes={"namespace": {"name": "${namespaceName}"}}} time=2021-01-01T00:00 log=${lineLoggedByUser} + # that is unparsable on the loki query side + line_format json + extra_labels {"cluster": "my-cluster","region":"eu-fake-1"} + remove_keys _sumo_metadata,source,category,host + + + +` + + var buffer bytes.Buffer + err = tpl.Execute(&buffer, config) + require.NoError(t, err, "couldn't execute Fluentd configuration template successfully") + require.Equal(t, expectedFluentdconf, buffer.String()) + }) + t.Run("when a namespace has multiple stacks, fluentd config file generated is syntactically correct", func(t *testing.T) { + config := lokiOptions{ + Cluster: clusterDetails{ + Name: "my-cluster", + Region: "eu-fake-1", + }, + Stacks: map[string][]lokiCredentials{ + "my-namespace": { + { + URL: "http://grafana.net/loki", + UserID: 123, + }, + { + URL: "http://grafana.net/loki", + UserID: 456, + }, + }, + }, + } + + expectedFluentdconf := ` + @type record_modifier + @id inject_loki_user_environment_dev + + environment "dev" + + + + + @type record_modifier + @id inject_loki_user_environment_pre + + environment "pre" + + + + + @type record_modifier + @id inject_loki_user_environment_pro + + environment "pro" + + + + @type copy + + @type loki + @id loki_loki_my-namespace_access_log_0 + url "http://grafana.net/loki" + username "123" + password "#{ENV['LOKI_PASSWORD']}" + buffer_chunk_limit 1m + + flush_interval 60s # default + flush_at_shutdown true # default + retry_timeout 60s # instead of the default 72h + retry_max_times 5 # instead of the default 17 (i.e. 65536 seconds, or 1092 minutes or 18 hours) + retry_max_interval 10 + flush_thread_count 1 # default + overflow_action drop_oldest_chunk + disable_chunk_backup true + + # this instructs loki to send each "fluentd record" as JSON + # i.e. '{"log": "${lineLoggedByUser}", "time": "2021-01-01T00:00", "kubernetes": {"namespace": {"name": "${namespaceName}"}}}' + # removing this line transforms the record in kubernetes={"namespace": {"name": "${namespaceName}"}}} time=2021-01-01T00:00 log=${lineLoggedByUser} + # that is unparsable on the loki query side + line_format json + extra_labels {"cluster": "my-cluster","region":"eu-fake-1"} + remove_keys _sumo_metadata,source,category,host + + + + @type loki + @id loki_loki_my-namespace_access_log_1 + url "http://grafana.net/loki" + username "456" + password "#{ENV['LOKI_PASSWORD']}" + buffer_chunk_limit 1m + + flush_interval 60s # default + flush_at_shutdown true # default + retry_timeout 60s # instead of the default 72h + retry_max_times 5 # instead of the default 17 (i.e. 65536 seconds, or 1092 minutes or 18 hours) + retry_max_interval 10 + flush_thread_count 1 # default + overflow_action drop_oldest_chunk + disable_chunk_backup true + + # this instructs loki to send each "fluentd record" as JSON + # i.e. '{"log": "${lineLoggedByUser}", "time": "2021-01-01T00:00", "kubernetes": {"namespace": {"name": "${namespaceName}"}}}' + # removing this line transforms the record in kubernetes={"namespace": {"name": "${namespaceName}"}}} time=2021-01-01T00:00 log=${lineLoggedByUser} + # that is unparsable on the loki query side + line_format json + extra_labels {"cluster": "my-cluster","region":"eu-fake-1"} + remove_keys _sumo_metadata,source,category,host + + + + + + @type copy + + @type loki + @id loki_loki_my-namespace_0 + url "http://grafana.net/loki" + username "123" + password "#{ENV['LOKI_PASSWORD']}" + buffer_chunk_limit 64m + + flush_interval 60s # default + flush_at_shutdown true # default + retry_timeout 60s # instead of the default 72h + retry_max_times 5 # instead of the default 17 (i.e. 65536 seconds, or 1092 minutes or 18 hours) + retry_max_interval 10 + flush_thread_count 1 # default + overflow_action drop_oldest_chunk + disable_chunk_backup true + + # this instructs loki to send each "fluentd record" as JSON + # i.e. '{"log": "${lineLoggedByUser}", "time": "2021-01-01T00:00", "kubernetes": {"namespace": {"name": "${namespaceName}"}}}' + # removing this line transforms the record in kubernetes={"namespace": {"name": "${namespaceName}"}}} time=2021-01-01T00:00 log=${lineLoggedByUser} + # that is unparsable on the loki query side + line_format json + extra_labels {"cluster": "my-cluster","region":"eu-fake-1"} + remove_keys _sumo_metadata,source,category,host + + + + @type loki + @id loki_loki_my-namespace_1 + url "http://grafana.net/loki" + username "456" + password "#{ENV['LOKI_PASSWORD']}" + buffer_chunk_limit 64m + + flush_interval 60s # default + flush_at_shutdown true # default + retry_timeout 60s # instead of the default 72h + retry_max_times 5 # instead of the default 17 (i.e. 65536 seconds, or 1092 minutes or 18 hours) + retry_max_interval 10 + flush_thread_count 1 # default + overflow_action drop_oldest_chunk + disable_chunk_backup true + + # this instructs loki to send each "fluentd record" as JSON + # i.e. '{"log": "${lineLoggedByUser}", "time": "2021-01-01T00:00", "kubernetes": {"namespace": {"name": "${namespaceName}"}}}' + # removing this line transforms the record in kubernetes={"namespace": {"name": "${namespaceName}"}}} time=2021-01-01T00:00 log=${lineLoggedByUser} + # that is unparsable on the loki query side + line_format json + extra_labels {"cluster": "my-cluster","region":"eu-fake-1"} + remove_keys _sumo_metadata,source,category,host + + + +` + + var buffer bytes.Buffer + err = tpl.Execute(&buffer, config) + require.NoError(t, err, "couldn't execute Fluentd configuration template successfully") + require.Equal(t, expectedFluentdconf, buffer.String()) + }) + t.Run("when we have several namespaces, fluentd config file generated is syntactically correct", func(t *testing.T) { + config := lokiOptions{ + Cluster: clusterDetails{ + Name: "my-cluster", + Region: "eu-fake-1", + }, + Stacks: map[string][]lokiCredentials{ + "my-namespace": { + { + URL: "http://grafana.net/loki", + UserID: 123, + }, + }, + "other-namespace": []lokiCredentials{ + { + URL: "http://grafana.net/loki", + UserID: 456, + }, + }, + }, + } + + expectedFluentdconf := ` + @type record_modifier + @id inject_loki_user_environment_dev + + environment "dev" + + + + + @type record_modifier + @id inject_loki_user_environment_pre + + environment "pre" + + + + + @type record_modifier + @id inject_loki_user_environment_pro + + environment "pro" + + + + @type copy + + @type loki + @id loki_loki_my-namespace_access_log_0 + url "http://grafana.net/loki" + username "123" + password "#{ENV['LOKI_PASSWORD']}" + buffer_chunk_limit 1m + + flush_interval 60s # default + flush_at_shutdown true # default + retry_timeout 60s # instead of the default 72h + retry_max_times 5 # instead of the default 17 (i.e. 65536 seconds, or 1092 minutes or 18 hours) + retry_max_interval 10 + flush_thread_count 1 # default + overflow_action drop_oldest_chunk + disable_chunk_backup true + + # this instructs loki to send each "fluentd record" as JSON + # i.e. '{"log": "${lineLoggedByUser}", "time": "2021-01-01T00:00", "kubernetes": {"namespace": {"name": "${namespaceName}"}}}' + # removing this line transforms the record in kubernetes={"namespace": {"name": "${namespaceName}"}}} time=2021-01-01T00:00 log=${lineLoggedByUser} + # that is unparsable on the loki query side + line_format json + extra_labels {"cluster": "my-cluster","region":"eu-fake-1"} + remove_keys _sumo_metadata,source,category,host + + + + + + @type copy + + @type loki + @id loki_loki_my-namespace_0 + url "http://grafana.net/loki" + username "123" + password "#{ENV['LOKI_PASSWORD']}" + buffer_chunk_limit 64m + + flush_interval 60s # default + flush_at_shutdown true # default + retry_timeout 60s # instead of the default 72h + retry_max_times 5 # instead of the default 17 (i.e. 65536 seconds, or 1092 minutes or 18 hours) + retry_max_interval 10 + flush_thread_count 1 # default + overflow_action drop_oldest_chunk + disable_chunk_backup true + + # this instructs loki to send each "fluentd record" as JSON + # i.e. '{"log": "${lineLoggedByUser}", "time": "2021-01-01T00:00", "kubernetes": {"namespace": {"name": "${namespaceName}"}}}' + # removing this line transforms the record in kubernetes={"namespace": {"name": "${namespaceName}"}}} time=2021-01-01T00:00 log=${lineLoggedByUser} + # that is unparsable on the loki query side + line_format json + extra_labels {"cluster": "my-cluster","region":"eu-fake-1"} + remove_keys _sumo_metadata,source,category,host + + + + + @type copy + + @type loki + @id loki_loki_other-namespace_access_log_0 + url "http://grafana.net/loki" + username "456" + password "#{ENV['LOKI_PASSWORD']}" + buffer_chunk_limit 1m + + flush_interval 60s # default + flush_at_shutdown true # default + retry_timeout 60s # instead of the default 72h + retry_max_times 5 # instead of the default 17 (i.e. 65536 seconds, or 1092 minutes or 18 hours) + retry_max_interval 10 + flush_thread_count 1 # default + overflow_action drop_oldest_chunk + disable_chunk_backup true + + # this instructs loki to send each "fluentd record" as JSON + # i.e. '{"log": "${lineLoggedByUser}", "time": "2021-01-01T00:00", "kubernetes": {"namespace": {"name": "${namespaceName}"}}}' + # removing this line transforms the record in kubernetes={"namespace": {"name": "${namespaceName}"}}} time=2021-01-01T00:00 log=${lineLoggedByUser} + # that is unparsable on the loki query side + line_format json + extra_labels {"cluster": "my-cluster","region":"eu-fake-1"} + remove_keys _sumo_metadata,source,category,host + + + + + + @type copy + + @type loki + @id loki_loki_other-namespace_0 + url "http://grafana.net/loki" + username "456" + password "#{ENV['LOKI_PASSWORD']}" + buffer_chunk_limit 64m + + flush_interval 60s # default + flush_at_shutdown true # default + retry_timeout 60s # instead of the default 72h + retry_max_times 5 # instead of the default 17 (i.e. 65536 seconds, or 1092 minutes or 18 hours) + retry_max_interval 10 + flush_thread_count 1 # default + overflow_action drop_oldest_chunk + disable_chunk_backup true + + # this instructs loki to send each "fluentd record" as JSON + # i.e. '{"log": "${lineLoggedByUser}", "time": "2021-01-01T00:00", "kubernetes": {"namespace": {"name": "${namespaceName}"}}}' + # removing this line transforms the record in kubernetes={"namespace": {"name": "${namespaceName}"}}} time=2021-01-01T00:00 log=${lineLoggedByUser} + # that is unparsable on the loki query side + line_format json + extra_labels {"cluster": "my-cluster","region":"eu-fake-1"} + remove_keys _sumo_metadata,source,category,host + + + +` + + var buffer bytes.Buffer + err = tpl.Execute(&buffer, config) + require.NoError(t, err, "couldn't execute Fluentd configuration template successfully") + require.Equal(t, expectedFluentdconf, buffer.String()) + }) +} + +func TestRateLimiterFunc(t *testing.T) { + calls := 0 + f := RateLimitedFunc{ + Do: func(context.Context) { + calls += 1 + }, + Queue: workqueue.NewTypedRateLimitingQueue(workqueue.NewTypedItemExponentialFailureRateLimiter[string](1*time.Millisecond, 100*time.Millisecond)), + } + go f.Start() + for i := 0; i < 100; i++ { + f.EnsureDone() + } + time.Sleep(400 * time.Millisecond) + assert.InDelta(t, 3, calls, 4) +} + +func TestGrafanaCloudCreateLokiConfigMaps(t *testing.T) { + k8sClient := testK8sLister{ + Client: fake.NewClientBuilder().WithObjects( + &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "tenant-dev", Labels: map[string]string{Config.logsLabelKey: "disabled"}}}, + &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "other-tenant-pro", Annotations: map[string]string{Config.stackNameAnnotationKey: "adevintaothertenant"}}}, + &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "another-tenant-pro", Labels: map[string]string{Config.logsLabelKey: "enabled"}, Annotations: map[string]string{Config.stackNameAnnotationKey: "adevintaanothertenant"}}}, + &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "tenant-without-env-in-name", Annotations: map[string]string{Config.stackNameAnnotationKey: "adevintatenant"}}}, + &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "tenant-not-in-gc-pro"}}, + &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{ + Name: "system", + Annotations: map[string]string{ + Config.stackNameAnnotationKey: "adevintaruntime", + }, + }}, + ).Build(), + CreateFunc: func(ctx context.Context, obj client.Object, opts ...client.CreateOption) error { + if cm, ok := obj.(*corev1.ConfigMap); ok { + assert.Equal(t, "test-platform-services", cm.Namespace) + assert.Equal(t, "test-fluentd-config", cm.Name) + require.Contains(t, cm.Data, "loki") + assert.NotContains(t, cm.Data["loki"], strings.Join([]string{ + ``, + ` @type copy`, + ` `, + ` @type loki`, + ` @id loki_loki_tenant-dev_0`, + ` url "https://logs.grafanacloud.de"`, + ` username "1234"`, + }, + "\n", + )) + assert.Contains(t, cm.Data["loki"], strings.Join([]string{ + ``, + ` @type copy`, + ` `, + ` @type loki`, + ` @id loki_loki_other-tenant-pro_0`, + ` url "https://logs.grafanacloud.com"`, + ` username "5678"`, + }, + "\n", + )) + assert.Contains(t, cm.Data["loki"], strings.Join([]string{ + ``, + ` @type copy`, + ` `, + ` @type loki`, + ` @id loki_loki_another-tenant-pro_0`, + ` url "https://logs.grafanacloud.com"`, + ` username "6789"`, + }, + "\n", + )) + assert.Contains(t, cm.Data["loki"], strings.Join([]string{ + ``, + ` @type copy`, + ` `, + ` @type loki`, + ` @id loki_loki_tenant-without-env-in-name_0`, + ` url "https://logs.grafanacloud.de"`, + ` username "1234"`, + }, + "\n", + )) + assert.NotContains(t, cm.Data["loki"], strings.Join([]string{ + ``, + ` @type copy`, + ` `, + ` @type loki`, + ` @id loki_loki_tenant-dev_0`, + ` url "https://logs.grafanacloud.de"`, + ` username "1234"`, + }, + "\n", + )) + assert.Contains(t, cm.Data["loki"], strings.Join([]string{ + ``, + ` @type copy`, + ` `, + ` @type loki`, + ` @id loki_loki_system_0`, + ` url "https://logs.grafanacloud.es"`, + ` username "9876"`, + }, + "\n", + )) + // ingress access logs + assert.NotContains(t, cm.Data["loki"], strings.Join([]string{ + ``, + ` @type copy`, + ` `, + ` @type loki`, + ` @id loki_loki_tenant-dev_access_log_0`, + ` url "https://logs.grafanacloud.de"`, + ` username "1234"`, + }, + "\n", + )) + assert.Contains(t, cm.Data["loki"], strings.Join([]string{ + ``, + ` @type copy`, + ` `, + ` @type loki`, + ` @id loki_loki_other-tenant-pro_access_log_0`, + ` url "https://logs.grafanacloud.com"`, + ` username "5678"`, + }, + "\n", + )) + assert.Contains(t, cm.Data["loki"], strings.Join([]string{ + ``, + ` @type copy`, + ` `, + ` @type loki`, + ` @id loki_loki_another-tenant-pro_access_log_0`, + ` url "https://logs.grafanacloud.com"`, + ` username "6789"`, + }, + "\n", + )) + assert.Contains(t, cm.Data["loki"], strings.Join([]string{ + ``, + ` @type copy`, + ` `, + ` @type loki`, + ` @id loki_loki_tenant-without-env-in-name_access_log_0`, + ` url "https://logs.grafanacloud.de"`, + ` username "1234"`, + }, + "\n", + )) + assert.NotContains(t, cm.Data["loki"], strings.Join([]string{ + ``, + ` @type copy`, + ` `, + ` @type loki`, + ` @id loki_loki_tenant-dev_access_log_0`, + ` url "https://logs.grafanacloud.de"`, + ` username "1234"`, + }, + "\n", + )) + assert.Contains(t, cm.Data["loki"], strings.Join([]string{ + ``, + ` @type copy`, + ` `, + ` @type loki`, + ` @id loki_loki_system_access_log_0`, + ` url "https://logs.grafanacloud.es"`, + ` username "9876"`, + }, + "\n", + )) + assert.NotContains(t, cm.Data["loki"], "tenant-not-in-gc-pro") + return nil + } + t.Errorf("unexpected object create %T", obj) + return errors.New("unexpected object") + }, + } + gcClient := &GrafanaCloudClientFunc{ + ListStacksFunc: func() (Stacks, error) { + return []Stack{ + {Slug: "adevintatenant", LogsInstanceID: 1234, LogsURL: "https://logs.grafanacloud.de"}, + {Slug: "adevintaothertenant", LogsInstanceID: 5678, LogsURL: "https://logs.grafanacloud.com"}, + {Slug: "adevintaanothertenant", LogsInstanceID: 6789, LogsURL: "https://logs.grafanacloud.com"}, + {Slug: "adevintaruntime", LogsInstanceID: 9876, LogsURL: "https://logs.grafanacloud.es"}, + }, nil + }, + } + updater := &GrafanaCloudConfigUpdater{ + Client: &k8sClient, + Log: ctrl.Log.WithName("controllers").WithName("Namespace"), + GrafanaCloudClient: gcClient, + ClusterName: "test-cluster", + ClusterRegion: "adv-bcn-1", + ConfigMapNamespace: "test-platform-services", + ConfigMapName: "test-fluentd-config", + ConfigMapLokiKey: "loki", + } + go updater.Start(workqueue.NewTypedRateLimitingQueue(workqueue.NewTypedItemExponentialFailureRateLimiter[string](10*time.Microsecond, 1*time.Millisecond))) + time.Sleep(500 * time.Microsecond) + for i := 0; i < 100; i++ { + err := updater.InjectFluentdLokiConfiguration(context.Background()) + require.NoError(t, err) + } + time.Sleep(10 * time.Millisecond) + assert.LessOrEqual(t, k8sClient.GetCalls, 20) + assert.LessOrEqual(t, k8sClient.CreateCalls, 20) + assert.GreaterOrEqual(t, k8sClient.GetCalls, 1) + assert.GreaterOrEqual(t, k8sClient.CreateCalls, 1) +} + +func TestGrafanaCloudCreateLokiConfigMapsForMultipleStacks(t *testing.T) { + k8sClient := testK8sLister{ + Client: fake.NewClientBuilder().WithObjects( + &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "tenant-dev", Annotations: map[string]string{Config.stackNameAnnotationKey: "adevintatenant"}}}, + &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{ + Name: "other-tenant-pro", + Annotations: map[string]string{ + Config.stackNameAnnotationKey: "adevintastack1,adevintastack2", + }, + }}, + &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "tenant-not-in-gc-pro"}}, + &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{ + Name: "system", + Annotations: map[string]string{ + Config.stackNameAnnotationKey: "adevintaruntime", + }, + }}, + ).Build(), + CreateFunc: func(ctx context.Context, obj client.Object, opts ...client.CreateOption) error { + if cm, ok := obj.(*corev1.ConfigMap); ok { + assert.Equal(t, "test-platform-services", cm.Namespace) + assert.Equal(t, "test-fluentd-config", cm.Name) + require.Contains(t, cm.Data, "loki") + assert.Contains(t, cm.Data["loki"], strings.Join([]string{ + ``, + ` @type copy`, + ` `, + ` @type loki`, + ` @id loki_loki_tenant-dev_0`, + ` url "https://logs.grafanacloud.de"`, + ` username "1234"`, + }, + "\n", + )) + assert.Contains(t, cm.Data["loki"], strings.Join([]string{ + ``, + ` @type copy`, + ` `, + ` @type loki`, + ` @id loki_loki_other-tenant-pro_0`, + ` url "https://logs.grafanacloud.com"`, + ` username "5566"`, + }, + "\n", + )) + assert.Contains(t, cm.Data["loki"], strings.Join([]string{ + ` `, + ` @type loki`, + ` @id loki_loki_other-tenant-pro_1`, + ` url "https://logs.grafanacloud.fr"`, + ` username "6655"`, + }, + "\n", + )) + assert.Contains(t, cm.Data["loki"], strings.Join([]string{ + ``, + ` @type copy`, + ` `, + ` @type loki`, + ` @id loki_loki_system_0`, + ` url "https://logs.grafanacloud.es"`, + ` username "9876"`, + }, + "\n", + )) + // ingress access logs + assert.Contains(t, cm.Data["loki"], strings.Join([]string{ + ``, + ` @type copy`, + ` `, + ` @type loki`, + ` @id loki_loki_tenant-dev_access_log_0`, + ` url "https://logs.grafanacloud.de"`, + ` username "1234"`, + }, + "\n", + )) + assert.Contains(t, cm.Data["loki"], strings.Join([]string{ + ``, + ` @type copy`, + ` `, + ` @type loki`, + ` @id loki_loki_other-tenant-pro_access_log_0`, + ` url "https://logs.grafanacloud.com"`, + ` username "5566"`, + }, + "\n", + )) + assert.Contains(t, cm.Data["loki"], strings.Join([]string{ + ` `, + ` @type loki`, + ` @id loki_loki_other-tenant-pro_access_log_1`, + ` url "https://logs.grafanacloud.fr"`, + ` username "6655"`, + }, + "\n", + )) + assert.Contains(t, cm.Data["loki"], strings.Join([]string{ + ``, + ` @type copy`, + ` `, + ` @type loki`, + ` @id loki_loki_system_access_log_0`, + ` url "https://logs.grafanacloud.es"`, + ` username "9876"`, + }, + "\n", + )) + assert.NotContains(t, cm.Data["loki"], "tenant-not-in-gc-pro") + return nil + } + t.Errorf("unexpected object create %T", obj) + return errors.New("unexpected object") + }, + } + gcClient := &GrafanaCloudClientFunc{ + ListStacksFunc: func() (Stacks, error) { + return []Stack{ + {Slug: "adevintatenant", LogsInstanceID: 1234, LogsURL: "https://logs.grafanacloud.de"}, + {Slug: "adevintaothertenant", LogsInstanceID: 5678, LogsURL: "https://logs.grafanacloud.com"}, + {Slug: "adevintaruntime", LogsInstanceID: 9876, LogsURL: "https://logs.grafanacloud.es"}, + {Slug: "adevintastack1", LogsInstanceID: 5566, LogsURL: "https://logs.grafanacloud.com"}, + {Slug: "adevintastack2", LogsInstanceID: 6655, LogsURL: "https://logs.grafanacloud.fr"}, + }, nil + }, + } + updater := &GrafanaCloudConfigUpdater{ + Client: &k8sClient, + Log: ctrl.Log.WithName("controllers").WithName("Namespace"), + GrafanaCloudClient: gcClient, + ClusterName: "test-cluster", + ClusterRegion: "adv-bcn-1", + ConfigMapNamespace: "test-platform-services", + ConfigMapName: "test-fluentd-config", + ConfigMapLokiKey: "loki", + } + go updater.Start(workqueue.NewTypedRateLimitingQueue(workqueue.NewTypedItemExponentialFailureRateLimiter[string](10*time.Microsecond, 1*time.Millisecond))) + time.Sleep(500 * time.Microsecond) + for i := 0; i < 100; i++ { + err := updater.InjectFluentdLokiConfiguration(context.Background()) + require.NoError(t, err) + } + time.Sleep(10 * time.Millisecond) + assert.LessOrEqual(t, k8sClient.GetCalls, 20) + assert.LessOrEqual(t, k8sClient.CreateCalls, 20) + assert.GreaterOrEqual(t, k8sClient.GetCalls, 1) + assert.GreaterOrEqual(t, k8sClient.CreateCalls, 1) +} + +func TestGrafanaCloudEmptyListDoesNotUpdateConfig(t *testing.T) { + k8sClient := testK8sLister{ + GetFunc: func(ctx context.Context, key client.ObjectKey, obj client.Object, opts ...client.GetOption) error { + return k8serrors.NewNotFound(schema.GroupResource{}, "resource") + }, + ListFunc: func(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error { + if namespaces, ok := list.(*corev1.NamespaceList); ok { + namespaces.Items = []corev1.Namespace{ + {ObjectMeta: metav1.ObjectMeta{Name: "tenant-dev"}}, + } + return nil + } + t.Errorf("unexpected list object %T", list) + return errors.New("unexpected object") + }, + CreateFunc: func(ctx context.Context, obj client.Object, opts ...client.CreateOption) error { + if cm, ok := obj.(*corev1.ConfigMap); ok { + assert.Equal(t, "test-platform-services", cm.Namespace) + assert.Equal(t, "test-fluentd-config", cm.Name) + return nil + } + t.Errorf("unexpected object create %T", obj) + return errors.New("unexpected object") + }, + } + gcClient := &GrafanaCloudClientFunc{ + ListStacksFunc: func() (Stacks, error) { + return []Stack{}, nil + }, + } + updater := &GrafanaCloudConfigUpdater{ + Client: &k8sClient, + Log: ctrl.Log.WithName("controllers").WithName("Namespace"), + GrafanaCloudClient: gcClient, + ClusterName: "test-cluster", + ClusterRegion: "adv-bcn-1", + ConfigMapNamespace: "test-platform-services", + ConfigMapName: "test-fluentd-config", + ConfigMapLokiKey: "loki", + } + go updater.Start(workqueue.NewTypedRateLimitingQueue(workqueue.NewTypedItemExponentialFailureRateLimiter[string](10*time.Microsecond, 1*time.Millisecond))) + time.Sleep(500 * time.Microsecond) + for i := 0; i < 100; i++ { + err := updater.InjectFluentdLokiConfiguration(context.Background()) + require.NoError(t, err) + } + time.Sleep(10 * time.Millisecond) + assert.Equal(t, 0, k8sClient.CreateCalls) +} diff --git a/pkg/test_helpers/http.go b/pkg/test_helpers/http.go new file mode 100644 index 0000000..30dac4d --- /dev/null +++ b/pkg/test_helpers/http.go @@ -0,0 +1,32 @@ +package test_helpers + +import ( + "bytes" + "io" + "net/http" +) + +type RoundTripFunc func(req *http.Request) *http.Response + +func (f RoundTripFunc) RoundTrip(req *http.Request) (*http.Response, error) { + return f(req), nil +} +func newTestClient(fn RoundTripFunc) *http.Client { + return &http.Client{ + Transport: RoundTripFunc(fn), + } +} + +func NewHttpMockWithResponse(response string, statusCode int) *http.Client { + return newTestClient(func(req *http.Request) *http.Response { + return &http.Response{ + StatusCode: statusCode, + Body: io.NopCloser(bytes.NewBufferString(response)), + Header: make(http.Header), + } + }) +} + +func NewHttpMockWithFunc(fn func(req *http.Request) *http.Response) *http.Client { + return newTestClient(fn) +} diff --git a/pkg/test_helpers/test_helpers.go b/pkg/test_helpers/test_helpers.go new file mode 100644 index 0000000..245bf14 --- /dev/null +++ b/pkg/test_helpers/test_helpers.go @@ -0,0 +1,26 @@ +package test_helpers + +import ( + "testing" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/kubectl/pkg/scheme" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/client/fake" + + monitoringv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" + "github.com/stretchr/testify/require" + vpav1 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1" +) + +func NewFakeClient(t *testing.T, initialObjects ...runtime.Object) client.Client { + s := runtime.NewScheme() + for gvk := range scheme.Scheme.AllKnownTypes() { + obj, err := scheme.Scheme.New(gvk) + require.NoError(t, err) + s.AddKnownTypes(gvk.GroupVersion(), obj) + } + require.NoError(t, monitoringv1.AddToScheme(s)) + require.NoError(t, vpav1.AddToScheme(s)) + return fake.NewClientBuilder().WithRuntimeObjects(initialObjects...).WithScheme(s).Build() +}