{"id":13826478,"url":"https://github.com/nearform/initium-platform","last_synced_at":"2025-08-09T13:07:08.515Z","repository":{"id":65293778,"uuid":"587335803","full_name":"nearform/initium-platform","owner":"nearform","description":"A set of Kubernetes add-ons with optimal configuration and test coverage to create a day zero platform for your code","archived":false,"fork":false,"pushed_at":"2024-10-29T20:41:07.000Z","size":20943,"stargazers_count":16,"open_issues_count":53,"forks_count":3,"subscribers_count":8,"default_branch":"main","last_synced_at":"2024-10-29T22:50:41.365Z","etag":null,"topics":["devops"],"latest_commit_sha":null,"homepage":"https://initium.nearform.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nearform.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","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":"2023-01-10T14:14:49.000Z","updated_at":"2024-08-20T16:02:54.000Z","dependencies_parsed_at":"2023-10-16T09:04:03.833Z","dependency_job_id":"2c15da7a-c1b7-4417-a4b8-7f5e7e250414","html_url":"https://github.com/nearform/initium-platform","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nearform%2Finitium-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nearform%2Finitium-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nearform%2Finitium-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nearform%2Finitium-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nearform","download_url":"https://codeload.github.com/nearform/initium-platform/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225476383,"owners_count":17480215,"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":["devops"],"created_at":"2024-08-04T09:01:38.614Z","updated_at":"2024-11-20T05:30:47.769Z","avatar_url":"https://github.com/nearform.png","language":"Go","readme":"# initium-platform\n\nThis repository is a tentative approach to offer a set of add-ons that will provide a day-0 platform ready to be used in a matter of hours instead of weeks.\n\nTo accomplish that, it uses the ArgoCD [app of apps concept](https://argo-cd.readthedocs.io/en/stable/operator-manual/cluster-bootstrapping/#app-of-apps-pattern).\n\nTherefore, ArgoCD is the main requirement to run this project on your cluster.\n\n\u003e **PLEASE NOTE:** This project is currently WIP and NOT stable. Use at your own risk!\n\n## Install on your own cluster\n\n\n\u003e **HINT** This project uses `tilt` to bring up environment, but there are 2 executables named `tilt`. If you already have it on your system, make sure that you are using [tilt.dev](https://tilt.dev/) instead of [Ruby tilt](https://github.com/rtomayko/tilt)\n\n\n![Quick Start](docs/img/quick-start/k8s-addons-quick-start.png)\n\nIf you dont have `argocd` on your cluster, the following command will install it with required configuration. Make sure that you are using the correct Kubernetes context before run.\n\n```bash\n$ make argocd\n```\n\nIf you already have `argocd` (if installed with helm, the name of the chart should be argocd) deployed in your cluster to make deployment successful and all addons synced it is required to verify if following configuration is part of your ArgoCD configuration: [argocd/values.yaml](https://github.com/nearform/initium-platform/blob/main/addons/argocd/values.yaml#L23).\nYou can check it by describing argo-cd config map:\n\n```\nkubectl describe cm argocd-cm -n argocd\n```\n\nDon't apply changes directly to the Config Map, but apply them the in your installation scripts/helm chart values.\n\nNext, you can download the provided `app-of-apps.yaml` in our [latest stable release](https://github.com/nearform/initium-platform/releases/latest) and then apply that manifest using this command:\n\n```bash\nkubectl apply -f app-of-apps.yaml\n```\n\nFull list of the addons that the manifest is installing and additional information for each of them can be found in the [docs/ADDONS.md](docs/ADDONS.md) file.\n\n### Pass your own values to the addons\n\nYou can pass your own values or override default values to the addons by modifying the `app-of-apps.yaml` manifest, you can get more details here [docs/ADDONS.md](docs/ADDONS.md#override-values)\n\n### Supported Setups\n\nBelow there is a matrix with the cloud providers \u0026 Kubernetes versions our setup has been tested with.\n\n| Cloud Provider   | Kubernetes Version |\n|------------------|:------------------:|\n| AWS              | 1.27               |\n| GCP              | 1.27               |\n| Azure            | 1.27               |\n\n\n## Run locally\n\n### Pre-requisites\n\nYou need Docker installed (or similar solutions) to run this project.\n\nHere you can find a list of possible candidates:\n\n- [Docker](https://docs.docker.com/engine/install/) ( cross-platform, paid solution )\n- [Rancher Desktop](https://rancherdesktop.io/) ( cross-platform, FOSS )\n- [lima](https://github.com/lima-vm/lima) + [nerdctl](https://github.com/containerd/nerdctl) ( macOS only )\n\nRemember that to run this solution you also need at least:\n\n- 4 CPU cores\n- 8 GB RAM - Maybe is necessary to increase Docker limits to use more RAM or Swap to run all components with 8GB RAM.\n- 16 GB Disk space\n\nThose numbers are not written in stone so your mileage may vary depending on which components you choose to install.\n\n\u003e **HINT:** To run everything on Windows machine is recommended to use [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) and install Docker inside this subsystem.\n\n### Bootstrap\n\n\u003e **HINT:** If you want to remove the automatically installed dependencies via asdf once you're done with this project, you can run `make asdf_uninstall`.\n\nTo continue with the deployment, you need a set of tools installed first. You can either install them manually (see [.tool-versions](.tool-versions) ), or you can install them automatically by following these steps:\n\n1. Install [`asdf-vm`](https://asdf-vm.com/)\n2. Run the following command: `make asdf_install`\n\n### Deploy\n\n\u003e **HINT:** If you want to know which commands are available you can always run `make help` on this project.\n\n#### CLI\n\n![Inner workings of make](docs/img/inner-workings/k8s-addons-internals.png)\nMake sure you've followed the [bootstrap steps](#bootstrap), then:\n\n```bash\n$ make ci\n```\n\nOnce completed, you're ready to interact with the cluster using `kubectl` as usual.\n\nThe current Kubernetes version that will run locally in the project is defined in the `.envrc` file, using the variable `K8S_VERSION`. If you want to run a different local k8s version, please change this value.\n\nGithub runners are using a matrix strategy to run unit and integration tests on three different k8s versions.\nTake a look at the `.github/workflows/integration.yaml` or `.github/workflows/preview.yaml` for an example.\n\n#### GUI\n\nMake sure you've followed the [bootstrap steps](#bootstrap), then:\n\n1. Deploy the local environment:\n\n   ```bash\n   # Deploy the cluster and run tilt visually\n   $ make\n   ```\n\n   You can access the Kind K8s cluster using any kubernetes client like kubectl or Lens.\u003cbr\u003e\n   [Accessing Argocd UI](https://argo-cd.readthedocs.io/en/stable/getting_started/#3-access-the-argo-cd-api-server)\n\n2. (Optional) Run the two following resources in tilt to portforward argocd and get the default admin password\n\n   ```\n   - argocd-portforward\n   - argocd-password\n   ```\n\n   \u003e **PLEASE NOTE:** The port forwarding sometimes seems to drop, so re-run the tilt resource to get the connection up and running again.\n\n3. (Optional) Test app-of-apps values changes using the override feature of the bootstrap app, following the instructions in the `./manifests/bootstrap/overrides.local.yaml.tmpl` file.\n\n#### Cleanup\n\n\u003e **IMPORTANT:** Make sure to run this command while tilt is NOT running.\n\nIn order to cleanup the solution from your own local environment you can run:\n\n```bash\n$ make clean\n```\n\n### Tests\n\n#### Unit tests\n\nAll the tests are inside the `tests` folder. This folder contains tests written in golang to check if the charts\nconfigurations are valid. To create the tests, we use [terratest](https://terratest.gruntwork.io/).\nTerratest provides a variety of [helper functions](https://github.com/gruntwork-io/terratest) created by Gruntwork,\nTo make the infrastructure test setup easier.\n\nBefore running tests make sure you've followed the [bootstrap steps](#bootstrap).\n\nOnce ready, you can use this simple set of commands:\n\n```bash\n# Create the cluster\n$ INITIUM_DEPLOY_MINIMAL=true make ci\n# Run the unit tests\n$ make unit-test\n```\n\n#### Integration tests\n\nAs unit tests, we also use [terratest](https://terratest.gruntwork.io/). The main difference is that each test is encapsulated by its goal.\nSee the [examples/sample-app](examples/sample-app) as an example.\n\nBefore running tests make sure you've followed the [bootstrap steps](#bootstrap).\n\nOnce ready, you can use this simple set of commands:\n\n```bash\n# Create the cluster and all the required dependencies\n$ make ci\n# Run the unit tests\n$ make integration-test\n```\n\n## Contribute\n\nIf you desire to contribute to this project, please make sure you have read the [CONTRIBUTING.md](CONTRIBUTING.md) file first.\n\nOnce you feel ready for it, remember to [fork this repository](https://github.com/nearform/initium-platform/fork).\n\nClone your fork into your own local workstation, then finally run the following command to install the project dependencies using [asdf-vm](https://asdf-vm.com/) and [precommit](https://pre-commit.com/) hooks:\n\n```bash\ncd path/to/initium-platform\nmake bootstrap\n```\n\nYou're now ready to contribute!\n\n## CI Process\n\nAfter deploying the cluster, you may wish to integrate it with a CI tool of choice.\nFor more information on this subject, consult [CI Service Account Readme](manifests/ci-service-account/README.md)\n","funding_links":[],"categories":["Go"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnearform%2Finitium-platform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnearform%2Finitium-platform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnearform%2Finitium-platform/lists"}