Skip to content

docs: add a how-to set up production integrations guide - #2835

Merged
tromai merged 11 commits into
canonical:mainfrom
tromai:set-up-production-integrations
Nov 9, 2026
Merged

tromai merged 11 commits into
canonical:mainfrom
tromai:set-up-production-integrations

Conversation

@tromai

@tromai tromai commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

The Charm maturity explanation page says that charms need to integrate well with the ecosystem. This PR adds a new page that extends it. It covers next steps for making a charm production-ready by supporting common integrations.

It is a summary of common topics, and links to external documentation where possible:

  • Ingress: ingress
  • Observability (COS):
    • k8s: prometheus_scrape, grafana_dashboard, loki_push_api
    • machine: cos_agent
  • Databases: postgresql_client, mysql_client, mongodb_client
  • TLS certificates: tls-certificates
  • Object storage: s3
  • Identity: oauth, ldap, saml

For each topic, it covers:

  • The interface name.
  • The role the charm takes (requires or provides).
  • The supporting library to use.
  • Links to the relevant materials (charmlib specifications, the provider charm docs).
  • Examples where real charms setup these integrations.

The charm maturity page now cross-references this guide.

Preview

@tromai
tromai force-pushed the set-up-production-integrations branch from e455dde to 3760a85 Compare October 20, 2026 06:12
See more: [MLflow](https://github.com/canonical/mlflow-operator/blob/main/src/charm.py), [Valkey](https://github.com/canonical/valkey-operator/blob/9/edge/src/events/backup.py).

(set-up-production-integrations-identity)=
## Identity

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tonyandrewmeyer I might need some help with this section. This is a new topic for me, and I tried my best to match their documentation with the structure of this page.

Is Canonical Identity the one to go for if someone want to setup production-grade identity solution for their charm ? And whether I select the right one provider charms in the table 😓 .

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I think Canonical Identity is the right place to send people. As far as I can tell it covers two stacks: the Identity Platform (Hydra, Kratos, GLAuth) and Authentik. The providers you have are right (I checked the hydra, authentik-server, authentik-ldap-outpost and saml-integrator endpoints on Charmhub). I'd add glauth-k8s for ldap, since that's the Identity Platform's LDAP provider. Their Choosing an identity solution page might be a useful link too. It's worth getting someone from the Identity team to look over this section, though, since I'm not an expert here either.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the response and help!

I'd add glauth-k8s for ldap ...

I agree, I have added glauth-k8s for ldap and the Choosing an identity solution page.

I also contacted the Identity team (Alessandro), and am now waiting for their response.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(from Identity team): Overall lgtm, except that IMO it is a little misleading listing the saml-integrator in there. The charm does not really provide saml functionality, it simply simply allows the user to provide saml configurations. All the other charms actually provide the functionality.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nsklikas Thank you for the review. I included saml-integrator here because this charm provides the saml endpoint, similar to other charms.

I agree that it can be confusing listing together with other charms that provide functionality. I will add a small sentence to clarify.

@tromai
tromai marked this pull request as ready for review October 20, 2026 06:16
Comment thread docs/howto/index.md Resolved
See more: [MLflow](https://github.com/canonical/mlflow-operator/blob/main/src/charm.py), [Valkey](https://github.com/canonical/valkey-operator/blob/9/edge/src/events/backup.py).

(set-up-production-integrations-identity)=
## Identity

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I think Canonical Identity is the right place to send people. As far as I can tell it covers two stacks: the Identity Platform (Hydra, Kratos, GLAuth) and Authentik. The providers you have are right (I checked the hydra, authentik-server, authentik-ldap-outpost and saml-integrator endpoints on Charmhub). I'd add glauth-k8s for ldap, since that's the Identity Platform's LDAP provider. Their Choosing an identity solution page might be a useful link too. It's worth getting someone from the Identity team to look over this section, though, since I'm not an expert here either.

@tonyandrewmeyer

Copy link
Copy Markdown
Collaborator

Oops, forgot to write in the summary box, sorry! Nice page, thanks! I like that we're linking to providing charms but also to examples of charms that do each of these. A few small comments, mostly about the Istio sentence and the examples, and I've answered your Identity question (somewhat) on that thread. Nit: "setup" -> "set up" in the PR title, since it'll be the changelog line. Thanks!

@tromai tromai changed the title docs: add a how-to setup production integrations guide docs: add a how-to set up production integrations guide Oct 21, 2026
- Reword the intro and page description.
- Rename the best-practices anchor.
- Point 12-factor charm users to the custom integration guide.
- Drop Jenkins from the observability examples, and link to the charm tracing guide.
- Add `glauth-k8s` as an LDAP provider and link "Choosing an identity solution".
- Remove the Istio ingress example.
- Add the page to the how-to index and the Publishing row in `docs/index.md`.
- Reorder the hidden toctree to match.
@tromai

tromai commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor Author

@tonyandrewmeyer Thanks for the review. I have addressed most of the points, except:

@dwilding dwilding left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a great new doc - very clear! Don't be put off by the number of comments. Most are minor nits 🙂

Comment thread docs/howto/index.md Resolved
Comment thread docs/howto/index.md Resolved

@benhoyt benhoyt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work on this. Looks pretty good to me -- I've read over it, though have not tested it.

@tonyandrewmeyer tonyandrewmeyer left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!


Integrate your charm with an object storage provider when your workload needs S3-compatible storage. Your charm declares a `requires` endpoint that uses the `s3` interface, and receives the endpoint, bucket, and credentials from the provider.

The main provider is [S3 Integrator](https://github.com/canonical/object-storage-integrator/blob/main/s3/README.md), which you configure with the details of an S3-compatible service. Its documentation explains how to set it up and which charm library to use.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The other sections name the library, and the README and charmlibs listing both recommend object-storage-charmlib, so maybe this should too?

@tromai tromai Nov 9, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank for pointing it out. I agree. I updated the provider Charmhub link, consistent with other sections and showed the object-storage-charmlib library name explicitly.

@tromai
tromai merged commit e418a78 into canonical:main Nov 9, 2026
61 checks passed
@tromai
tromai deleted the set-up-production-integrations branch November 9, 2026 06:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants