Skip to content

devxp-tech/gitops

Repository files navigation

main Quality Gate Status App Status GitHub last commit GitHub top language GitHub issues GitHub Twitter Follow

βš™οΈ GitOps

GitOps is a set of best practices where the entire code delivery process is controlled via Git, including infrastructure and application definition as code and automation to complete updates and rollbacks.

The core idea of GitOps is to have a git repository that contains declarative descriptions of the desired infrastructure in the production environment and has an automated process to make the production environment match the state described in that repository.

Now that we know the central idea, let's go back a little bit to the acronym GitOps and let's understand the role of git, the role of ops and how they meet.

The Key GitOps Principles:

  • The entire system (infrastructure and applications) is described declaratively.
  • The canonical desired system state is versioned in Git.
  • Changes approved are automated and applied to the system.
  • Software agents ensure correctness and alert on divergence.

New users to GitOps and Argo CD are not often sure how they should structure their repos, add applications, promote apps across environments, and manage the Argo CD installation itself using GitOps.

Example:

argocd-autopilot app create argo-events --app github.com/argoproj/argo-events/blob/master/manifests/namespace-install.yaml -p ops --wait-timeout 2m

Argo CD automates the deployment of the desired application states in the specified target environments. Application deployments can track updates to branches, tags, or pinned to a specific version of manifests at a Git commit. See tracking strategies for additional details about the different tracking strategies available.

Argo Events is an event-driven workflow automation framework for Kubernetes which helps you trigger K8s objects, Argo Workflows, Serverless workloads, etc. on events from a variety of sources like webhooks, S3, schedules, messaging queues, gcp pubsub, sns, sqs, etc.

Argo Rollouts is a Kubernetes controller and set of CRDs which provide advanced deployment capabilities such as blue-green, canary, canary analysis, experimentation, and progressive delivery features to Kubernetes.

Argo Rollouts (optionally) integrates with ingress controllers and service meshes, leveraging their traffic shaping abilities to gradually shift traffic to the new version during an update. Additionally, Rollouts can query and interpret metrics from various providers to verify key KPIs and drive automated promotion or rollback during an update.

Argo Workflows is an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes. Argo Workflows is implemented as a Kubernetes CRD (Custom Resource Definition).

πŸ”© Tooling

Tools Version Repo Status
argo-rollouts 2.35.1 https://argoproj.github.io/argo-helm βœ…
argo-workflows 0.41.1 https://argoproj.github.io/argo-helm βœ…
base 1.21.0 https://istio-release.storage.googleapis.com/charts βœ…
cert-manager v1.14.4 https://charts.jetstack.io βœ…
cilium 1.15.4 https://helm.cilium.io βœ…
cost-analyzer 2.2.1 https://kubecost.github.io/cost-analyzer βœ…
devxp-app 0.2.38 https://devxp-tech.github.io/helm-charts βœ…
dex 0.17.1 https://charts.dexidp.io βœ…
external-dns 7.1.2 https://charts.bitnami.com/bitnami βœ…
gateway 1.21.0 https://istio-release.storage.googleapis.com/charts βœ…
grafana 7.3.8 https://grafana.github.io/helm-charts βœ…
jaeger 2.1.0 https://jaegertracing.github.io/helm-charts βœ…
karpenter v0.33.4 oci://public.ecr.aws/karpenter βœ…
kiali-operator 1.82.0 https://kiali.org/helm-charts βœ…
kube-downscaler 0.7.4 https://charts.deliveryhero.io/ βœ…
kube-prometheus-stack 58.1.1 https://prometheus-community.github.io/helm-charts βœ…
kubeclarity v2.23.1 https://openclarity.github.io/kubeclarity βœ…
kyverno 3.1.4 https://kyverno.github.io/kyverno βœ…
loki 5.47.2 https://grafana.github.io/helm-charts βœ…
metrics-server 3.12.1 https://kubernetes-sigs.github.io/metrics-server/ βœ…
mimir-distributed 5.3.0 https://grafana.github.io/helm-charts βœ…
nexus-repository-manager 64.2.0 https://sonatype.github.io/helm3-charts βœ…
opentelemetry-operator 0.53.2 https://open-telemetry.github.io/opentelemetry-helm-charts βœ…
promtail 6.15.5 https://grafana.github.io/helm-charts βœ…
sealed-secrets 2.15.3 https://bitnami-labs.github.io/sealed-secrets βœ…
sonarqube 10.5.0+2748 https://SonarSource.github.io/helm-chart-sonarqube βœ…
tempo 1.7.2 https://grafana.github.io/helm-charts βœ…
wordpress 22.2.0 https://charts.bitnami.com/bitnami βœ…

πŸ”¨ To Do

Issue Description Status
wordpress Fix kustomize βœ…
argo-worflows Fix Build ❌
yaml-validate Fix CI Workflow ❌

πŸ› οΈ Required Tools

Tools Version
argocd v2.8.4
argocd-autopilot v0.4.17
helm v3.13.3
kubectl v1.29.0
kustomize v5.0.4-0

🌳 Project Structure

.
β”œβ”€β”€ apps
β”‚Β Β  β”œβ”€β”€ argo-rollouts
β”‚Β Β  β”œβ”€β”€ backstage
β”‚Β Β  β”œβ”€β”€ cert-manager
β”‚Β Β  β”œβ”€β”€ crossplane
β”‚Β Β  β”œβ”€β”€ grafana
β”‚Β Β  β”œβ”€β”€ istio-base
β”‚Β Β  β”œβ”€β”€ istio-ingress
β”‚Β Β  β”œβ”€β”€ istiod
β”‚Β Β  β”œβ”€β”€ jaeger
β”‚Β Β  β”œβ”€β”€ kiali-operator
β”‚Β Β  β”œβ”€β”€ kubernetes-dashboard
β”‚Β Β  β”œβ”€β”€ loki
β”‚Β Β  β”œβ”€β”€ metrics-server
β”‚Β Β  β”œβ”€β”€ prometheus
β”‚Β Β  β”œβ”€β”€ promtail
β”‚Β Β  β”œβ”€β”€ rollout-demo
β”‚Β Β  β”œβ”€β”€ sealed-secrets
β”‚Β Β  β”œβ”€β”€ sonarqube
β”‚Β Β  └── wordpress
β”œβ”€β”€ bootstrap
β”‚Β Β  β”œβ”€β”€ argo-cd
β”‚Β Β  └── cluster-resources
β”œβ”€β”€ infra
β”‚Β Β  └── networking
β”œβ”€β”€ projects
└── secrets

πŸ–ŠοΈ Code of Conduct

See CODE-OF-CONDUCT.md.

πŸ”’ Security

See SECURITY.md.

✨ Contributions

We ❀️ contributions big or small. See our guide on how to get started.

Thanks to all our contributors!