{"id":15789941,"url":"https://github.com/nonblocking/microfrontend-platform-kubernetes","last_synced_at":"2025-07-20T09:37:00.371Z","repository":{"id":43218101,"uuid":"236972534","full_name":"nonblocking/microfrontend-platform-kubernetes","owner":"nonblocking","description":"Setup Guide for a Microfrontend Platform on Kubernetes. Contains scripts for GKE to setup the outline Platform within minutes.","archived":false,"fork":false,"pushed_at":"2024-07-08T13:51:17.000Z","size":10550,"stargazers_count":10,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-05T22:04:13.810Z","etag":null,"topics":["kubernetes","microfrontends"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nonblocking.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-29T12:02:23.000Z","updated_at":"2024-07-08T13:51:21.000Z","dependencies_parsed_at":"2024-01-10T09:45:50.511Z","dependency_job_id":"648bd853-672a-4602-99e5-f9e28504cd2e","html_url":"https://github.com/nonblocking/microfrontend-platform-kubernetes","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonblocking%2Fmicrofrontend-platform-kubernetes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonblocking%2Fmicrofrontend-platform-kubernetes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonblocking%2Fmicrofrontend-platform-kubernetes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonblocking%2Fmicrofrontend-platform-kubernetes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nonblocking","download_url":"https://codeload.github.com/nonblocking/microfrontend-platform-kubernetes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252964424,"owners_count":21832691,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kubernetes","microfrontends"],"created_at":"2024-10-04T22:04:16.387Z","updated_at":"2025-05-07T22:29:20.255Z","avatar_url":"https://github.com/nonblocking.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Creating a Microfrontend Platform with Mashroom Portal on Kubernetes\n\nThis document describes a production ready concept for a Microfrontend platform based\non [Mashroom Portal](https://mashroom-server.com) and [Kubernetes](https://kubernetes.io).\n\nThis repo contains scripts to set up the complete platform within minutes on [k3d](https://k3d.io).\nBut it can of course be deployed on every Kubernetes cluster similarly.\n\n## The platform\n\n### Features\n\nThe platform allows it to deploy each Microfrontend separately and to make it **automatically** available in the Portal,\nso it can be placed on arbitrary pages.\n\nHighlights:\n\n * Automatic discovery of newly deployed (Mashroom Portal compliant) Microfrontends\n * High Availability: All building blocks are stateless and can be scaled horizontally\n * Support for server side messaging: The Microfrontends can not only use the *MessageBus* to exchange messages on the same page\n   but also with other users and 3rd party systems\n * Extensive metrics exposed in Prometheus format\n\n### Building blocks\n\n![The platform](./images/platform.png)\n\nThe outlined platform consists of:\n\n * A *Kubernetes* cluster\n * A bunch of common services that can be used by the Portal and the Microfrontends\n     * [Keycloak](https://www.keycloak.org) Identity Provider for authentication and authorization\n     * A database for Keycloak, e.g [PostgreSQL](https://www.postgresql.org)\n     * [Redis](https://redis.io) cluster for Portal session storage\n     * [MongoDB](https://www.mongodb.com) for the Portal configuration\n * A [Mashroom Portal](https://mashroom-server.com) for the Microfrontend integration with the following plugins:\n     * @mashroom/mashroom-storage-provider-mongodb\n     * @mashroom/mashroom-memory-cache (Memory cache for the MongoDB storage)\n     * @mashroom/mashroom-memory-cache-provider-redis\n     * @mashroom/mashroom-security-provider-openid-connect\n     * @mashroom/mashroom-portal-remote-app-registry-k8s (Microfrontend discovery)\n     * @mashroom/mashroom-session-provider-redis\n     * @mashroom/mashroom-websocket\n     * @mashroom/mashroom-messaging\n     * @mashroom/mashroom-messaging-external-provider-redis\n     * @mashroom/mashroom-monitoring-metrics-collector\n     * @mashroom/mashroom-monitoring-prometheus-exporter\n * A bunch *Mashroom Portal* compliant Microfrontends\n\n## Setup Guides\n\n * [k3d Setup](SETUP_K3D.md)\n * [Manual Setup Guide for Kubernetes](SETUP_K8S_MANUAL.md)\n * [Local Development Setup](SETUP_LOCAL_DEV.md)\n\n## Professional Support\n\nIf you need help to set up your fancy Microfrontend Platform\ncontact us for [professional support](mailto:mashroom@nonblocking.at)!\n\n## Notes\n\n * The k3d demo setup is not production ready. Most notably the IDP (Keycloak) runs in dev mode with TLS disabled.\n   Furthermore, most common services (like MongoDB) are not replicated and not highly available\n * You should put every Microfrontend in a separate repo and use different namespaces per team.\n   The Portal will automatically pick up new namespaces if they have specific labels (see *Mashroom Portal Remote App Kubernetes Background Job* config).\n * To build a Microfrontend platform outlined here you can use the same tools and approaches as for a Microservice platform.\n   For example [Argo CD](https://argoproj.github.io/cd), [Spinnaker](https://www.spinnaker.io) or [JenkinsX](https://jenkins-x.io).\n * You should also deploy [Prometheus](https://prometheus.io/) and [Grafana](https://grafana.com/) for monitoring the Portal.\n   [Here](https://github.com/nonblocking/mashroom/blob/master/packages/plugin-packages/mashroom-monitoring-prometheus-exporter/test/grafana-test/grafana/provisioning/dashboards/Mashroom%20Dashboard.json) you can find an example Dashboard configuration.\n   And [this article](https://medium.com/mashroom-server/connecting-mashroom-to-the-grafana-observability-stack-4cd6a2520515) describes how to add tracing in the Portal.\n * Checkout this article how to debug Microfrontend running on K8S locally with Telepresence:\n   https://medium.com/mashroom-server/debug-microfrontends-on-a-kubernetes-cluster-with-telepresence-d709333ee1b7\n * Our [Youtube Channel](https://www.youtube.com/@mashroomserver) contains videos that cover setup and deployment of Mashroom Portal\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnonblocking%2Fmicrofrontend-platform-kubernetes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnonblocking%2Fmicrofrontend-platform-kubernetes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnonblocking%2Fmicrofrontend-platform-kubernetes/lists"}