Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set up ArgoCD on Sandbox, Staging and Production Clusters #20

Open
6 tasks
Lusengeri opened this issue Nov 8, 2024 · 0 comments
Open
6 tasks

Set up ArgoCD on Sandbox, Staging and Production Clusters #20

Lusengeri opened this issue Nov 8, 2024 · 0 comments
Assignees
Labels
enhancement New feature or request

Comments

@Lusengeri
Copy link
Contributor

Set Up ArgoCD for Kubernetes Clusters

Overview

This issue outlines the steps and rationale for integrating ArgoCD into our Kubernetes cluster. ArgoCD will enable us to automate and streamline our continuous deployment processes across our environments and across multiple backend and frontend applications.

Justification

ArgoCD is a declarative, GitOps-based continuous delivery tool for Kubernetes. By introducing ArgoCD, we aim to achieve the following:

  • Multiple Application Deployments: ArgoCD will enable a streamlined application deployment flow that supports multiple applications and minimizes the configuration required for each.
  • Automate Deployments: With ArgoCD, we can automate the deployment of applications to our Kubernetes cluster, reducing manual intervention and human error.
  • GitOps Workflow: ArgoCD follows a GitOps model, where the desired application state is defined in a Git repository. This ensures version control, auditability, and traceability of all deployments.
  • Environment Consistency: ArgoCD supports multi-environment deployments (e.g., development, staging, production) from the same repository, ensuring consistency across different stages of the release cycle.
  • Improved Rollbacks: ArgoCD provides easy rollback functionality, allowing us to revert to previous application versions in case of issues.
  • Visibility and Monitoring: ArgoCD’s UI and CLI tools offer real-time visibility into the state of deployed applications, making it easy to identify discrepancies and take corrective action.

Proposed Setup

  1. Install ArgoCD in the Cluster:

    • We will install ArgoCD in our Kubernetes cluster using its Helm chart.
    • The deployment will be done through an appropriate terraform resource
    • We will configure ArgoCD to be accessible internally within the cluster or through an Ingress Controller, depending on our requirements.
  2. Configure ArgoCD Application Definitions:

    • Deploy other required cluster utilities such as Cert-Manager and AutoUpdater using ArgoCD
    • Define ArgoCD applications for all cluster-deployed apps for each environment (development, staging, production) in the Git repository.
    • Configure the Git repository as the source of truth for our applications.
  3. Sync Policies and Automated Deployments:

    • Set up sync policies to either automatically sync applications or require manual approvals based on the environment (e.g., auto-sync for development, manual approval for production).
  4. RBAC Configuration:

    • Configure role-based access control (RBAC) within ArgoCD to limit deployment permissions to authorized users.

Next Steps

  • Install and configure ArgoCD on sandbox and staging.
  • Define and test ArgoCD applications for both environments.
  • Test the GitOps workflow and ensure all sync policies are working as expected.
  • Document the ArgoCD setup and usage guidelines for the team.
  • Set up RBAC and access controls.
  • Setup ArgoCD for production

Additional Information

For more details on ArgoCD, refer to the ArgoCD documentation.


Please comment if you have additional requirements or concerns regarding this setup.

@Lusengeri Lusengeri added the enhancement New feature or request label Nov 8, 2024
@Lusengeri Lusengeri self-assigned this Nov 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant