{"id":25266055,"url":"https://github.com/edenlabllc/rmk","last_synced_at":"2026-04-16T13:01:39.951Z","repository":{"id":241796318,"uuid":"807208378","full_name":"edenlabllc/rmk","owner":"edenlabllc","description":"RMK CLI - Reduced Management for Kubernetes by Edenlab LLC.","archived":false,"fork":false,"pushed_at":"2025-11-27T12:01:34.000Z","size":3313,"stargazers_count":56,"open_issues_count":6,"forks_count":1,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2025-11-30T03:07:56.144Z","etag":null,"topics":["ci-cd","cicd","cli","containers","deployment","devops","fhir","git","gitops","go","golang","helm","helmfile","infrastructure","k8s","kodjin","kubectl","kubernetes","rmk","terraform"],"latest_commit_sha":null,"homepage":"https://edenlabllc.github.io/rmk/latest/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edenlabllc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"docs/CODEOWNERS","security":"docs/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-05-28T16:59:30.000Z","updated_at":"2025-11-27T11:49:52.000Z","dependencies_parsed_at":"2024-10-31T15:25:14.544Z","dependency_job_id":"9efca49c-4173-48b9-a5f6-0ea66940968d","html_url":"https://github.com/edenlabllc/rmk","commit_stats":null,"previous_names":["edenlabllc/rmk"],"tags_count":41,"template":false,"template_full_name":null,"purl":"pkg:github/edenlabllc/rmk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edenlabllc%2Frmk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edenlabllc%2Frmk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edenlabllc%2Frmk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edenlabllc%2Frmk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edenlabllc","download_url":"https://codeload.github.com/edenlabllc/rmk/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edenlabllc%2Frmk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31886937,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T11:36:10.202Z","status":"ssl_error","status_checked_at":"2026-04-16T11:36:09.652Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["ci-cd","cicd","cli","containers","deployment","devops","fhir","git","gitops","go","golang","helm","helmfile","infrastructure","k8s","kodjin","kubectl","kubernetes","rmk","terraform"],"created_at":"2025-02-12T08:32:14.417Z","updated_at":"2026-04-16T13:01:39.936Z","avatar_url":"https://github.com/edenlabllc.png","language":"Go","readme":"# RMK CLI - Reduced Management for Kubernetes\n\n[![Release](https://img.shields.io/github/v/release/edenlabllc/rmk.svg?style=for-the-badge)](https://github.com/edenlabllc/rmk/releases/latest)\n[![Software License](https://img.shields.io/github/license/edenlabllc/rmk.svg?style=for-the-badge)](https://github.com/edenlabllc/rmk/blob/master/LICENSE)\n[![Powered By: Edenlab](https://img.shields.io/badge/powered%20by-edenlab-8A2BE2.svg?style=for-the-badge)](https://edenlab.io)\n\nCommand-line tool for simplified management and provisioning of [Kubernetes](https://kubernetes.io/) clusters and\nenvironments,\n[Helm](https://helm.sh/) secrets and releases, built according to best practices\nin [CI/CD](https://www.redhat.com/en/topics/devops/what-is-ci-cd) and [DevOps](https://www.atlassian.com/devops).\n\nFull documentation is available at https://edenlabllc.github.io/rmk/latest/.\n\n## Overview\n\n**RMK** stands for \"**R**educed **M**anagement for **K**ubernetes\".\n\nThe main goal of the [CLI](https://en.wikipedia.org/wiki/Command-line_interface) tool is to simplify (**reduce**) the\nmanagement of Kubernetes clusters and releases, serving as a \"Swiss knife\" for daily CI/CD and DevOps tasks while\nallowing **efficient control** with a minimal set of CLI commands.\n\nRMK serves as a **wrapper** for various popular CI/CD and DevOps CLI tools, including:\n\n- [Helmfile](https://helmfile.readthedocs.io/en/latest/)\n- [Helm](https://helm.sh/)\n- [kubectl](https://kubernetes.io/docs/reference/kubectl/)\n- [clusterctl](https://cluster-api.sigs.k8s.io/clusterctl/overview)\n- [K3D](https://k3d.io/)\n- [SOPS](https://getsops.io/)\n- [Age](https://age-encryption.org/)\n\nIt leverages [Kubernetes Cluster API](https://cluster-api.sigs.k8s.io/) for cluster provisioning and management across\ndifferent environments, such as **cloud** providers and **on-premise** deployments.\n\nRMK has been designed to be used by **different IT specialists**, among them are DevOps engineers, software developers,\nSREs, cloud architects, system analytics, software testers and even managers with minimal technical background.\n\n## Advantages\n\nRMK **simplifies** the setup and management of Kubernetes-based projects of any complexity due to the following\nadvantages:\n\n- **[Time-proven](#efficiency-in-numbers) CI/CD solution**: Tested and validated across multiple cloud providers and\n  real customers, RMK leverages [Kubernetes Cluster API](https://cluster-api.sigs.k8s.io/) for cluster provisioning\n  and [Helmfile](https://helmfile.readthedocs.io/en/latest/)/[Helm](https://helm.sh/) for efficient release and secrets\n  management.\n- **Seamless integration with [CI/CD](https://www.redhat.com/en/topics/devops/what-is-ci-cd) platforms**: A\n  self-sufficient, portable binary that follows the [12-factor app](https://12factor.net/) methodology and can\n  easily be integrated with any CI/CD solution.\n- **Built-in [versioning](https://en.wikipedia.org/wiki/Software_versioning) for CI/CD pipelines**: Supports static and\n  dynamic tags (e.g., [SemVer2](https://semver.org/)) for project and releases to guarantee stable, well-tested, and\n  predictable deployments.\n- **Transparent [project structure](docs/configuration/project-management/preparation-of-project-repository.md) and\n  [dependency management](docs/configuration/project-management/dependencies-management-and-project-inheritance.md)**:\n  Enables rapid project setup and hierarchical project inheritance, e.g., \"parent-child\" or \"upstream-downstream\"\n  relationships) between sibling projects to enable release configuration reuse.\n- **[Batch secret management](docs/configuration/secrets-management/batch-secrets-management.md#generating-all-secrets-from-scratch)**: \n  Automates templating, generation, and encryption of secrets across all environments in batch mode.\n- **Adheres to the [GitOps](https://www.gitops.tech/) approach**: Uses Git branches as unique identifiers for\n  environments, clusters, configurations, and project management in Kubernetes.\n- **Follows the [GitLab Flow](https://about.gitlab.com/topics/version-control/what-is-gitlab-flow/) model**: Implements\n  a standard branching strategy (`develop`, `staging`, `production`) and ephemeral branches (`feature/*`,\n  `release/*`, `hotfix/*`) for\n  temporary environments.\n- **Aligns with the [DevOps](https://www.atlassian.com/devops) methodology**: Enables multiple teams to develop and\n  release independently while seamlessly integrating their work into a single project.\n- **Directly executes the wrapped [CLI tools](#overview)**: Calls CLI tools as a user would, passing the correct\n  arguments and flags\n  based on the project configuration, ensuring RMK updates remain decoupled from CLI tool updates for continued access\n  to new features and fixes.\n\n## Supported Kubernetes cluster providers\n\n### Provisioned by RMK\n\nRMK currently supports provisioning and management of the following Kubernetes clusters:\n\n- [Amazon Elastic Kubernetes Service (EKS)](https://aws.amazon.com/eks/)\n- [Azure Kubernetes Service (AKS)](https://azure.microsoft.com/en-us/products/kubernetes-service/)\n- [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine)\n- [On-Premise](https://github.com/edenlabllc/on-premise-configurator.operators.infra)\n- Single-machine using [K3D](https://k3d.io/)\n\n\u003e Please see the [Roadmap](#roadmap) section for more details on upcoming features.\n\n### Provisioned using third-party tools and services\n\nBy design, RMK can work with **any existing Kubernetes cluster**, provided it has been provisioned in advance by a third\nparty. The CLI tool simply requires an existing\n[Kubernetes context](https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/)\nto connect to and manage the cluster.\n\n## Edenlab LLC use cases\n\n### Efficiency in numbers\n\nInitially, it has been developed by [Edenlab LLC](https://edenlab.io/) as the main CLI for provisioning and\nmanagement of [Kodjin FHIR Server](https://kodjin.com) on Kubernetes clusters in different environments.\n\n**Since 2021**, RMK has been an **integral part** of the company’s Kubernetes infrastructure, used regularly for\nautomated provisioning and destroying temporary Kubernetes clusters for development and testing purposes, both\nmanually and automatically within CI/CD pipelines.\n\n**:rocket: Proven at scale**:\n\n- **220+** clusters handled **monthly** (based on a 5-day workweek).\n- **2,600+** clusters handled **annually**.\n- **12,000+** clusters orchestrated **since 2021**.\n\nBeyond internal use, RMK is also leveraged by various **external clients** to streamline their CI/CD workflows, ensuring\nfast and\nefficient Kubernetes environment management.\n\n### Managing clusters\n\nAt [Edenlab LLC](https://edenlab.io/), RMK is utilized to deploy the [Kodjin FHIR Server](https://kodjin.com)\nacross various **cloud providers** and **on-premise** environments.\n\nExamples of Kubernetes providers where Kodjin has already been deployed include:\n\n- [Amazon Elastic Kubernetes Service (EKS)](https://aws.amazon.com/eks/)\n- [Azure Kubernetes Service (AKS)](https://azure.microsoft.com/en-us/products/kubernetes-service/)\n- [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine)\n- [Open Telekom Cloud - Cloud Container Engine (CCE)](https://www.open-telekom-cloud.com/en/products-services/core-services/cloud-container-engine)\n- [Rancher Kubernetes Platform](https://www.rancher.com/)\n- [Kubermatic Kubernetes Platform (KKP)](https://www.kubermatic.com/)\n- [On-premise](https://en.wikipedia.org/wiki/On-premises_software)\n- Single-machine using [K3D](https://k3d.io/)\n\nA standard Kodjin-based cluster follows a **4-level inheritance** structure:\n\n- **[cluster-deps](https://github.com/edenlabllc/cluster-deps.bootstrap.infra) (upstream#1)**:\n  Provides [Kubernetes Cluster API](https://cluster-api.sigs.k8s.io/) and essential system components required by RMK\n  for provisioning Kubernetes clusters across various providers.\n- **Dependencies (upstream#2)**:\n  Includes core components such as databases, search engines, caches, load balancers/proxies, and operators.\n  etc., uses [cluster-deps](https://github.com/edenlabllc/cluster-deps.bootstrap.infra) as its primary project\n  dependency.\n- **[Kodjin](https://kodjin.com/) (downstream#1)**:\n  A set of [Rust](https://www.rust-lang.org/) microservices that form the Kodjin FHIR\n  API ([REST](https://en.wikipedia.org/wiki/REST)).\n- **Target project (tenant) (downstream#2)**:\n  Encompasses products built on top of Kodjin, including UI components, user portals, and middleware services, such as\n  the\n  e.g., [Kodjin Demo FHIR Server](https://demo.kodjin.com/)\n\nEach project repository **follows** a\nstandard [GitLab Flow](https://about.gitlab.com/topics/version-control/what-is-gitlab-flow/) branching model.\n\n### Related repositories\n\n#### GitHub\n\n- **[cluster-deps.bootstrap.infra](https://github.com/edenlabllc/cluster-deps.bootstrap.infra)**:\n  [Kubernetes Cluster API](https://cluster-api.sigs.k8s.io/) and system components required for provisioning of\n  Kubernetes clusters for different providers.\n- **[helmfile.hooks.infra](https://github.com/edenlabllc/helmfile.hooks.infra)**:\n  A collection of shell scripts used as [Helmfile hooks](https://helmfile.readthedocs.io/en/latest/#hooks) in\n  dependencies, Kodjin, or any other project,\n  e.g.,\n  check [cluster-deps global configuration](https://github.com/edenlabllc/cluster-deps.bootstrap.infra/blob/develop/etc/deps/develop/globals.yaml.gotmpl#L16).\n- **[aws-iam-provisioner.operators.infra](https://github.com/edenlabllc/aws-iam-provisioner.operators.infra)**:\n  Kubernetes operator for automatic provisioning of IAM roles on the fly for the Kubernetes clusters managed\n  using [Kubernetes Cluster API Provider AWS](https://cluster-api-aws.sigs.k8s.io/getting-started).\n- **[ebs-snapshot-provision.operators.infra](https://github.com/edenlabllc/ebs-snapshot-provision.operators.infra)**:\n  Kubernetes operator for automatic provisioning of Amazon [EBS](https://aws.amazon.com/ebs/) snapshots to be reused\n  in existing Kubernetes clusters.\n- **[ecr-token-refresh.operators.infra](https://github.com/edenlabllc/ecr-token-refresh.operators.infra)**:\n  Kubernetes operator for automatic refresh of the Amazon [ECR](https://aws.amazon.com/ecr/) authorization token\n  before it expires.\n- **[on-premise-configurator.operators.infra](https://github.com/edenlabllc/on-premise-configurator.operators.infra)**:\n  Kubernetes operator for declarative configuration of remote bare-metal or virtual machines over SSH, for both \n  isolated and network-connected environments,\n  a fully compliant [Kubernetes Cluster API](https://cluster-api.sigs.k8s.io/developer/providers/contracts/overview)\n  infrastructure provider.\n- **[secrets-sync.operators.infra](https://github.com/edenlabllc/secrets-sync.operators.infra)**:\n  Kubernetes operator for automatically copying of existing Kubernetes secrets between namespaces.\n\n#### Helm charts\n\n- **[core-charts](https://edenlabllc-core-charts-infra.s3.eu-north-1.amazonaws.com/)**:\n  A publicly accessible, [S3-based](https://aws.amazon.com/s3/)\n  [Helm chart repository](https://helm.sh/docs/topics/chart_repository/) used by Kodjin, or any other project, e.g.,\n  check [cluster-deps Helmfile](https://github.com/edenlabllc/cluster-deps.bootstrap.infra/blob/develop/helmfile.yaml.gotmpl#L49).\n\n## Roadmap\n\n- :construction:\n  **Integration with open-source [AI models](https://en.wikipedia.org/wiki/Generative_artificial_intelligence)\n  for project generation:**  \n  Generate project structure, machine setup, and resource configuration directly from natural-language prompts.\n- :construction:\n  **Enhanced automatic testing of RMK during the [CI/CD](https://github.com/edenlabllc/rmk/actions) pipeline:**\n  Ensure that changes to the RMK codebase\n  do not introduce errors or regressions during the CI/CD across all cluster providers.\n- :construction:\n  **Guidelines for [contributors](https://github.com/edenlabllc/rmk/pulls):**\n  Create comprehensive guidelines and instructions for creating pull requests (PRs).\n- :white_check_mark:\n  _**Implementation of additional cloud [Kubernetes Cluster API](https://cluster-api.sigs.k8s.io/) providers:**\n  Implement support for other popular Kubernetes services such as\n  [GKE](https://cloud.google.com/kubernetes-engine),\n  [AKS](https://azure.microsoft.com/en-us/products/kubernetes-service/), etc._\n- :white_check_mark:\n  _**Implementation of on-premise [Kubernetes Cluster API](https://cluster-api.sigs.k8s.io/) provider:**\n  Implement support for provisioning and destroying remote bare-metal or virtual machine–based Kubernetes clusters._\n- :white_check_mark:\n  _**Integration with Helmfile [Vals](https://github.com/helmfile/vals)**: Integrate RMK with a tool for advanced\n  values and secrets management via third-party backends._\n- :white_check_mark:\n  _**Web documentation generation using [MkDocs](https://www.mkdocs.org/):** Add an HTML documentation generator\n  based on the .md files._\n\n\u003e Please refer to [GitHub issues](https://github.com/edenlabllc/rmk/issues) for more information.\n\n## Development and release\n\nThe guidelines are available at https://edenlabllc.github.io/rmk/latest/development-and-release/.\n\n## License\n\nRMK is open source software (OSS) licensed under\nthe [Apache 2.0 License](https://github.com/edenlabllc/rmk/blob/master/LICENSE).\n\n## Code of Conduct\n\nThis project adheres to the Contributor\nCovenant [Сode of Сonduct](https://github.com/edenlabllc/rmk/blob/master/docs/CODE_OF_CONDUCT.md).\nBy participating, you are expected to uphold this code.\n\nPlease refer to our [Contributing Guidelines](https://github.com/edenlabllc/rmk/blob/master/docs/CONTRIBUTING.md) for\nfurther information.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedenlabllc%2Frmk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedenlabllc%2Frmk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedenlabllc%2Frmk/lists"}