Skip to content

Conversation

zebot
Copy link
Contributor

@zebot zebot commented Aug 11, 2023

[2023-08-11] (Chart Release 4.36.0)

Release notes

  • federation only Introduce background-worker

    This release introduces a new component: background-worker. This is currently
    only used to federation-related tasks. Enabling federation in
    the wire-server helm chart automatically installs this component.

    When federation is enabled, wire-server will require running RabbitMQ. The helm
    chart in rabbitmq can be used to install RabbitMQ. Please refer to the
    documentation at https://docs.wire.com to install RabbitMQ in Kubernetes. These
    new configurations are required:

    brig:
      config:
        rabbitmq:
          host: rabbitmq
          port: 5672
          vHost: /
      secrets:
        rabbitmq:
          username: <YOUR_USERNAME>
          password: <YOUR_PASSWORD>
    galley:
      config:
        rabbitmq:
          host: rabbitmq
          port: 5672
          vHost: /
      secrets:
        rabbitmq:
          username: <YOUR_USERNAME>
          password: <YOUR_PASSWORD>
    background-worker:
      config:
        rabbitmq:
          host: rabbitmq
          port: 5672
          vHost: /
          adminPort: 15672
      secrets:
        rabbitmq:
          username: <YOUR_USERNAME>
          password: <YOUR_PASSWORD>

    The above are the default values (except for secrets, which do not have
    defaults), if they work they are not required to be configured.
    ([FS-1940] Start sending backend notifications through rabbitMQ and consuming them #3276, brig: Make RabbitMQ config optional #3314, galley: Send on-user-deleted-conversations backend notification through RabbitMQ #3333, backend-notification-pusher: Dynamically discover remote domains #3366, background-worker: Add status endpoint  #3383, background-worker: Add metrics #3391)

  • Federation only A few helm values related to federation have been renamed, no action is required if federation was disabled.
    If federation was enabled these values must be renamed in the wire-server chart:

    • tags.federator -> tags.federation
    • brig.enableFederator -> brig.enableFederation
    • galley.enableFederator -> galley.enableFederation
    • cargohold.enableFederator -> galley.enableFederation

    So, an old config which looked like this:

    tags:
      federator: true
    brig:
      enableFederator: true
    galley:
      enableFederator: true
    cargohold:
      enableFederator: true

    would now look like this:

    tags:
      federation: true
    brig:
      enableFederation: true
    galley:
      enableFederation: true
    cargohold:
      enableFederation: true

    ([FS-1845] Deploy RabbitMQ on k8s for CI #3236)

  • Federation only From this release on, remote connections can be configured via an
    internal REST API; the remote connections configured in the
    values.yaml file(s) will be honored for a transition period, but will
    be ignored starting in some future release.

    YOU NEED TO UPDATE YOUR BRIG HELM VALUES BEFORE DEPLOYING THIS RELEASE.

    Add the following to brig:

    brig:
      config:
        optSettings:
          setFederationStrategy: allowNone # [allowAll | allowDynamic | allowNone]
          setFederationDomainConfigsUpdateFreq: 10 # seconds
    

    allowNone is equivalent to allowList with empty list; allowAll
    remains the same as before; allowDynamic is allowList, but the
    list is now stored in cassandra, not the config file.

    If your federator config values contain something like this:

        federationStrategy:
          allowedDomains:
          - red.example.com
          - blue.example.com
    

    you need to make sure that the following lines are part of your brig
    config (after the upgrade and until you have loaded the data into
    casssandra, federation with those domains won't possible if you forget
    this):

    brig:
      config:
        optSettings:
          setFederationDomainConfigs:
          - domain: red.example.com
            search_policy: full_search
          - domain: blue.example.com
            search_policy: no_search
    

    The search policy for a remote backend can be:

    • no_search: No users are returned by federated searches. default.
    • exact_handle_search: Only users where the handle exactly matches are returned.
    • full_search: Additionally to exact_handle_search, users are found by a freetext search on handle and display name.

    Once the new release is deployed, you need to copy all the data from
    the config files into brig.federation_remotes in cassandra internal
    CRUD
    API
    ;
    look for /i/federation/remotes).

    Once the upgrade has been deployed and cassandra has been filled
    with the temporary contents of
    brig.config.optSettings.setFederationDomainConfigs, it is safe to
    remove the latter and the above lines from the federator config.

    See also. (Dynamic federator remotes #3260, Tweak changelog. #3384, Remove dead code from cannon. #3389)

  • Upgrade team-settings version to 4.15.0-v0.31.16-0-8138d2e (Update team-settings version in Helm chart [skip ci] #2180)

  • Upgrade webapp version to 2023-07-13-production.0-v0.31.16-0-a9b67c6 (Update webapp version in Helm chart [skip ci] #2302)

  • Update email templates from https://github.com/wireapp/wire-emails (chore: update emails templates #3386)

  • Removed brig configuration value from gundeck. (Removing domain sync threads where not currently used. #3404)

API changes

Features

Bug fixes and other updates

Documentation

Internal changes

arthurwolf and others added 30 commits March 19, 2023 20:02
Master->Develop after release
Also fixed header level for other how-tos.
Co-authored-by: fisx <[email protected]>
Co-authored-by: Sven Tennie <[email protected]>
[FS-1844] Deploy RabbitMQ for development (docker-compose)
* http2-manager: Allow accepting a certificate without a trailing dot

* federator: Use http2-manager to communicate with remotes
* Renew certificates for e2e integration tests

* Document how to renew e2e integration test certs

Co-authored-by: Igor Ranieri <[email protected]>
…-default-null

FS-1879 Backend Docs: Change default. Add explanation of acmeDiscoveryUrl.
Using load balancer could work also, but requires additional annotations that are environment-specific. This is a fix to a previous PR which was first tested, then refactored without properly being tested, which is why the intended type: Nodeport line was missing.
* Remove dead code.

* Fix hlint.sh
We run `helm dep update` right before running the helmfile command, so this
shouldn't be required.
julialongtin and others added 21 commits August 1, 2023 15:18
add section about having more than 500 users
* WPB-3266: Adding metrics to federator.

Adding the existing metrics into federator, and extending the
RoutesToPaths instances with the Endpath type that Federator uses.

Metrics are added to both the internal and external servers, as there
were already status endpoints on both.

* WPB-3266: Adding federator integration tests in the new suite.

* WPB-3266: Changelog

* WPB-3266: PR feedback

Changing how services are iterated for local testing. Removing the two
Federator service entries from the Bounded instance as they were causing
problems with config loading. This new method also has problems, but
hopefully less than before.

* WPB-3266: Changing how federator tests call the server due to its ports

* ...

* ...

---------

Co-authored-by: Matthias Fischmann <[email protected]>
* When defederating, don't crash on already-deleted conversations.
* Migrate from Haskell2010 to GHC2021.

* Format

* Formating

* Enable DeepSubsumption instead of explicit lambda
…backends when creating a Proteus conversation (#3479)

* Rename to FederationUnreachableDomainOld

- this is in preparation to make the data constructor go away and to
introduce a separate newtype under the same name

* Extend ConversationResponse: unreachable backends

* Simplify mocking unreachable backends

* Fixing integration tests

* Fix an integration test with invalid domain

- The new logic should be that no conversation is created when a user
from an invalid domain is attempted to be added to a new conversation

* Fix a remote member deleting test

- The test relies on the conversation creation endpoint, but that one
wasn't properly mocked

* Add a changelog

* fixup! Extend ConversationResponse: unreachable backends
* integration: Produce non-zero exitcode on failures

* charts/integration: Also mount all the missing configs

* docker-images: Set LANG and LOCALE_ARCHIVE

* integration: Stop assuming domains, read them from config

* integration-image: Add binaries for all the service

* integration: Special case starting nginx in K8s

* charts/integration: Fail if any of the init scripts fail

* integration/scripts: No need to run `aws configure`

Running `aws configure` doesn't work because the image is setup to be run as
`nobody` which cannot write to its `$HOME` at `/var/empty`. However, running
`aws configure` is unnecessary given we expect the scripts to run when
`$AWS_ACCESS_KEY_ID`, `$AWS_SECRET_ACCESS_KEY` and `$AWS_REGION` are already
set.

* integration-dynamic-backends-s3.sh: Create bucket only if it doesn't exist

* integration: Don't hardcode names of RabbitMq vhosts

* charts/integration: Make federation work for dynamic backends

Create services and ingresses so they discoverable and routable.

* integration: Set log level correctly for spar

* integration: Delete a test which cannot be tested in K8s

The test expects a DNS failure, this happens locally because the local coredns
service doesn't know how to recurse when it doesn't know about a domain. This is
not true in K8s.

* integration: Setup creds for fake aws services correctly

For local environment it relies on .envrc
For K8s it relies on environment variables set from the helm chart

* integration: Add HasCallStack in couple of places
This makes it easier to separate BUND releases from development work.

Co-authored-by: Sven Tennie <[email protected]>
@CLAassistant
Copy link

CLAassistant commented Aug 11, 2023

CLA assistant check
All committers have signed the CLA.

@zebot zebot added the ok-to-test Approved for running tests in CI, overrides not-ok-to-test if both labels exist label Aug 11, 2023
@fisx fisx merged commit 8686e30 into master Aug 11, 2023
@fisx fisx deleted the release_2023-08-11_09_14 branch August 11, 2023 12:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ok-to-test Approved for running tests in CI, overrides not-ok-to-test if both labels exist
Projects
None yet
Development

Successfully merging this pull request may close these issues.