https://github.com/darshan-raul/accio
Platform to manage common cloud resources in 3 cloud providers in a gitops fashion
https://github.com/darshan-raul/accio
argocd crossplane fiber golang gorm k8s postgresql
Last synced: 8 months ago
JSON representation
Platform to manage common cloud resources in 3 cloud providers in a gitops fashion
- Host: GitHub
- URL: https://github.com/darshan-raul/accio
- Owner: darshan-raul
- License: other
- Created: 2023-03-27T17:35:19.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-10T12:59:35.000Z (about 1 year ago)
- Last Synced: 2024-11-15T01:35:51.594Z (11 months ago)
- Topics: argocd, crossplane, fiber, golang, gorm, k8s, postgresql
- Language: Go
- Homepage:
- Size: 25.2 MB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Roadmap: Roadmap.md
Awesome Lists containing this project
README
# accio
Cli based tool to create and manage multi cloud resources in a gitops fashion [ArgoCD] managed directly as k8s custom resources [Crossplane].
## Architecture

## Workflow
### Prerequisites
- You will need to create following credentials with appropriate access to them
- Cloud provider credentials
- Git provider creds
### Concepts- Project:
- This will be a complete git repo which will contain all your stacks.
- This should be mapped to each product or a set of products- Stack:
- This will be a logical collection of resources
- The resources can be in any of the 3 cloud providers
- The patterns in which you can create this is another topic which will be covered in detail in topics below- Template:
- These will be stacks with recommended patterns which adhere to best practices
- You can choose one of these if they fit your usecase
- Its completely optional.
- You can also update these templates once you select them- Resources:
- These are the smallest unit being managed
- This can be a whole kubernetes cluster or a s3 bucket or a small azure key vault secret
- Resources can be one of:
- Network
- Subnet
- Security
- RDBMS
- Nosql db
- CDN
- DNS
- Cloud function- This will be created in an opiniated fashion, If you wish to modify the properties to suit your needs, then crossplane related knowledge will be required
### Init
- `accio project init`
- This will prompt for:
- Project name
- Tags to be given
- note: you can change any of the settings from the config file later
- This will create a repo in your github
- If you dont want to give this right, then alternatively you can create such a repo and provide the name
- Once the project is created, we are free to create as many stacks in it
- `accio stack init`
- This will prompt for:
- Stack name
- Tags to be given
- Cloud providers that will be used
- You will be prompted for the credentials to be stored in our system
- note: you can change any of the settings from the config file later
- This will create a new branch and push it to your remote repo### Create
- `accio stack create`
- This will prompt for:
- What kind of stack you want to create
- Which cloud provider you want it for
- Note: There are only some patterns where resources from multiple cloud providers can be used together
- It will create the required template file, push a commit in the branch and a PR will be raised and ask you to review the template
- If you want to do any kind of customization, ie any custom fields specific to your requirement or the cloud provider, you can do so during the review
- Once you approve, the PR will be merged into the main branch and our Gitops pipeline will detect and create the infra in your account### Update
### Delete
## How to start
## Installation steps:
- Install the cobra package:
`go install github.com/spf13/cobra-cli@latest`
-## Roadmap
phase 1:
- Create a simple api which will get request from cli client
- Create simple cli which will interact with the cli
- Add APIsix and then add the authentication logic (keycloak) in it and test using cli
- Generate all the paths needed in the api and add needed commands in the cli
- Understand crossplane and create abstractions for following (start with AWS):
- VPC
- DB
- EC2
- S3
- Now create workflows so that those abstractions can be created using cli
- Add argocd to the mix and make sure that Gitops is maintainedphase 2:
- Add another cloud provider to the mix
- Use database to store metadata
-