{"id":21475092,"url":"https://github.com/snapp-incubator/argocd-complementary-operator","last_synced_at":"2025-06-17T09:01:48.311Z","repository":{"id":37449050,"uuid":"492489804","full_name":"snapp-incubator/argocd-complementary-operator","owner":"snapp-incubator","description":"Manage your ArgoCD users and project with ease and some labels!","archived":false,"fork":false,"pushed_at":"2025-05-24T11:03:22.000Z","size":18991,"stargazers_count":22,"open_issues_count":1,"forks_count":5,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-06-12T08:53:00.468Z","etag":null,"topics":["appdelivery","golang","kubernetes","operator","snappcloud"],"latest_commit_sha":null,"homepage":"","language":"Go","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/snapp-incubator.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,"zenodo":null}},"created_at":"2022-05-15T13:07:11.000Z","updated_at":"2025-05-24T11:03:26.000Z","dependencies_parsed_at":"2024-06-19T01:43:27.750Z","dependency_job_id":"8abb39c0-73c3-43f3-87ec-b2ab6792fdec","html_url":"https://github.com/snapp-incubator/argocd-complementary-operator","commit_stats":{"total_commits":92,"total_committers":4,"mean_commits":23.0,"dds":0.6086956521739131,"last_synced_commit":"666de3770ae03bcf122d18f761d2297a6c6251fe"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/snapp-incubator/argocd-complementary-operator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snapp-incubator%2Fargocd-complementary-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snapp-incubator%2Fargocd-complementary-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snapp-incubator%2Fargocd-complementary-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snapp-incubator%2Fargocd-complementary-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snapp-incubator","download_url":"https://codeload.github.com/snapp-incubator/argocd-complementary-operator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snapp-incubator%2Fargocd-complementary-operator/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260326516,"owners_count":22992368,"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":["appdelivery","golang","kubernetes","operator","snappcloud"],"created_at":"2024-11-23T10:37:09.582Z","updated_at":"2025-06-17T09:01:48.238Z","avatar_url":"https://github.com/snapp-incubator.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e \u003ca href=\"https://argo-cd.readthedocs.io/en/stable/\"\u003eArgoCD\u003c/a\u003e Complementary Operator \u003c/h1\u003e\n\u003ch6 align=\"center\"\u003eManage your ArgoCD users and project with ease and some labels!\u003c/h6\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg alt=\"GitHub Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/snapp-incubator/argocd-complementary-operator/ci.yml?logo=github\u0026style=for-the-badge\"\u003e\n    \u003cimg alt=\"GitHub repo size\" src=\"https://img.shields.io/github/repo-size/snapp-incubator/argocd-complementary-operator?logo=github\u0026style=for-the-badge\"\u003e\n    \u003cimg alt=\"GitHub tag (with filter)\" src=\"https://img.shields.io/github/v/tag/snapp-incubator/argocd-complementary-operator?style=for-the-badge\u0026logo=git\"\u003e\n    \u003cimg alt=\"GitHub go.mod Go version (subdirectory of monorepo)\" src=\"https://img.shields.io/github/go-mod/go-version/snapp-incubator/argocd-complementary-operator?style=for-the-badge\u0026logo=go\"\u003e\n\u003c/p\u003e\n\nAdd `ArgocdUser` CRD to be able to create static ArgoCD user for each `ArgocdUser`.\nAlso, it creates [ArgoCD projects](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/) based on\nlabels you have on the namespaces beside the users defined as `ArgocdUser`.\n\n## How it works?\n\n### ArgoCD Project\n\nEach ArgoCD project in Snapp is mapped into a team. For each project you need to have destinations which are namespaces\nthat project can deploy resources on them, using this operator you can label these namespaces as follows:\n\n```yaml\napiVersion: \"v1\"\nkind: \"Namespace\"\nmetadata:\n  labels:\n    argocd.snappcloud.io/appproj: A.B\n```\n\nWhich means ArgoCD projects A and B can deploy resources into namespace NS. Also, there are some cases in which you want\nto create ArgoCD applications by submitting them from CLI instead of using UI. For these cases you can use\n[`ApplicationSet`](https://argo-cd.readthedocs.io/en/stable/user-guide/application-set/) or you can use your team namespace.\nBy default, ArgoCD applications are created in the `user-argocd`\nwhich is the namespace that (in Snapp) we deployed our ArgoCD. For having team namespace instead of `user-argocd` you\nneed to label that namespace as follows:\n\n```yaml\napiVersion: \"v1\"\nkind: \"Namespace\"\nmetadata:\n  labels:\n    argocd.snappcloud.io/appproj: A\n    argocd.snappcloud.io/source: A\n```\n\nPlease note that, because of the current architecture of this operator you need both of these label on the namespace.\n\n### ArgoCD User\n\nHere is the ArgoCD user created using operator:\n\n```yaml\napiVersion: argocd.snappcloud.io/v1alpha1\nkind: ArgocdUser\nmetadata:\n  name: {{argocduserName}}\nspec:\n  admin:\n    ciPass: ******\n    users:\n    - user1\n    - user2\n  view:\n    ciPass: ******\n    users:\n    - user1\n    - user2\n```\n\n## Instructions\n\n### Development\n\n- `make generate` update the generated code for that resource type.\n- `make manifests` Generating CRD manifests.\n- `make test` Run tests.\n\n### Build\n\nExport your image name:\n\n```\nexport IMG=ghcr.io/your-repo-path/image-name:latest\n```\n\n- `make build` builds Golang app locally.\n- `make docker-build` build docker image locally.\n- `make docker-push` push container image to registry.\n\n### Run, Deploy\n\n- `make run` run app locally\n- `make deploy` deploy to k8s.\n\n### Clean up\n\n- `make undeploy` delete resouces in k8s.\n\n## Metrics\n\n|                     Metric                     | Notes                                                                                                                                                                                                                                  |\n| :--------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|      `controller_runtime_active_workers`       | Number of currently used workers per controller                                                                                                                                                                                        |\n| `controller_runtime_max_concurrent_reconciles` | Maximum number of concurrent reconciles per controller                                                                                                                                                                                 |\n|  `controller_runtime_reconcile_errors_total`   | Total number of reconciliation errors per controller                                                                                                                                                                                   |\n|  `controller_runtime_reconcile_time_seconds`   | Length of time per reconciliation per controller                                                                                                                                                                                       |\n|      `controller_runtime_reconcile_total`      | Total number of reconciliations per controller                                                                                                                                                                                         |\n|     `rest_client_request_latency_seconds`      | Request latency in seconds. Broken down by verb and URL.                                                                                                                                                                               |\n|          `rest_client_requests_total`          | Number of HTTP requests, partitioned by status code, method, and host.                                                                                                                                                                 |\n|             `workqueue_adds_total`             | Total number of adds handled by workqueue                                                                                                                                                                                              |\n|               `workqueue_depth`                | Current depth of workqueue                                                                                                                                                                                                             |\n| `workqueue_longest_running_processor_seconds`  | How many seconds has the longest running processor for workqueue been running.                                                                                                                                                         |\n|       `workqueue_queue_duration_seconds`       | How long in seconds an item stays in workqueue before being requested                                                                                                                                                                  |\n|           `workqueue_retries_total`            | Total number of retries handled by workqueue                                                                                                                                                                                           |\n|      `workqueue_unfinished_work_seconds`       | How many seconds of work has been done that is in progress and hasn't been observed by `work_duration`. Large values indicate stuck threads. One can deduce the number of stuck threads by observing the rate at which this increases. |\n|       `workqueue_work_duration_seconds`        | How long in seconds processing an item from workqueue takes.                                                                                                                                                                           |\n\n## Security\n\n### Reporting security vulnerabilities\n\nIf you find a security vulnerability or any security related issues, please DO NOT file a public issue, instead send your report privately to cloud@snapp.cab. Security reports are greatly appreciated and we will publicly thank you for it.\n\n## License\n\nApache-2.0 License, see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnapp-incubator%2Fargocd-complementary-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsnapp-incubator%2Fargocd-complementary-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnapp-incubator%2Fargocd-complementary-operator/lists"}