Skip to content

defenseunicorns/uds-package-mattermost

Repository files navigation

🏭 UDS Mattermost Package

Made for UDS Latest Release Build Status OpenSSF Scorecard

This package is designed for use as part of a UDS Software Factory bundle deployed on UDS Core.

Important

The arm64 package includes amd64 images due to lack of availability of arm64 images from upstream projects at this time. This means you can deploy the arm64 package on an arm64 kubernetes cluster, but some of the images contained in the package will require emulation (e.g., qemu or rosetta) to run properly.

Tip

To add additional environment variables to Mattermost you can do so by overriding the extraEnv key in the uds-mattermost-config chart.

overrides:
  mattermost:
    uds-mattermost-config:
      values:
        - path: "extraEnv"
          value:
            MY_ENV_VAR: "an env var value"

Prerequisites

Mattermost requires two dependencies, postgres and s3 compatible object storage. Wiring Mattermost to your dependencies is done primarily via helm values, which will require the use of a bundle created with uds-cli.

Postgres

Postgres configuration is setup in the uds-mattermost-config chart and should be done via bundle overrides (variables or values) like the below:

    overrides:
      mattermost:
        uds-mattermost-config:
          values:
            - path: "postgres.host"
              value: "postgresql.dev-postgres.svc.cluster.local"

The full list of override config can be found in the values under postgres here. In addition a zarf var is exposed for DB_PASSWORD for convenience if using import/exports in your bundle.

S3 Compatible Object Storage

Object storage configuration is setup in the uds-mattermost-config chart and should be done via bundle overrides (variables or values) like the below:

    overrides:
      mattermost:
        uds-mattermost-config:
          values:
            - path: "objectStorage.endpoint"
              value: "minio.dev-minio.svc.cluster.local:9000"

The full list of override config can be found in the values under objectStorage here. In addition zarf vars are exposed for ACCESS_KEY and SECRET_KEY for convenience if using import/exports in your bundle.

To use IRSA make sure to NOT set the two key variables and add the appropriate role ARN annotation to the service account via an override to serviceAccount.annotations. As an example:

    overrides:
      mattermost:
        mattermost-enterprise-edition:
          values:
            - path: "serviceAccount.annotations.irsa/role-arn"
              value: "arn:aws:iam::123456789:role/mattermost-role"

Monitoring

Important

Mattermost supports emitting metrics to feed into Prometheus, but only if you have a license. This package configures the necessary service monitor to enable metrics, but only when a license has been provided via the MM_LICENSE var. By default (no license), it does not provision the Service Monitor as it will show unhealthy because metrics is not enabled via the license.

Flavors

Flavor Description Example Creation
upstream Uses upstream images within the package. zarf package create . -f upstream
registry1 Uses images from registry1.dso.mil within the package. zarf package create . -f registry1

Releases

The released packages can be found in ghcr.

UDS Tasks (for local dev and CI)

*For local dev, this requires you install uds-cli

Tip: To get a list of tasks to run you can use uds run --list!

Contributing

Please see the CONTRIBUTING.md

Development

When developing this package it is ideal to utilize the json schemas for UDS Bundles, Zarf Packages and Maru Tasks. This involves configuring your IDE to provide schema validation for the respective files used by each application. For guidance on how to set up this schema validation, please refer to the guide in uds-common.