Skip to main content
Amazon EKS 0.72.3Last updated in version 0.72.1

Gruntwork GitOps "GruntOps"

View Source Release Notes

GitOps is an operational framework that is built around DevOps best practices for a standardized approach to managing the lifecycle of Kubernetes based deployments. GitOps provides a unified approach to the deployment and management of container workloads, with Git being the single source of truth for the state of the container infrastructure. GitOps is a very developer-centric workflow that works best when adopted by individuals and teams that follow a git based development lifecycle. The core principles of GitOps have been at the center of Gruntwork from the beginning!

Getting Started

To use this module, you will need to have a running EKS cluster prior to deploying this module. See the Argo CD Example for an example of how to deploy this module.

This module deploys the Helm Chart version of Argo CD. All available configurations can be found in the repository of the Argo CD Helm Chart. The default configuration of this module will deploy the Argo CD Helm Chart with it's default values. To configure the Helm Chart to meet the needs of your deployment, configure the argocd_chart_additional_values variable in the variables file.

Connecting to the Argo CD UI

Argo CD has a UI component for the ability to interact with the Argo CD application. You can connect to the UI in multiple ways:

  1. Connect via a Load Balancer Service
  2. Connect via Ingress
  3. Connect via Port Forwarding

Please see the Argo CD for detailed information on each of the methods for connecting to the UI.

Exposing Argo CD UI via Ingress

Detailed documentation coming soon...

Reference GitOps Repository

Detailed documentation coming soon...

High Availability (HA) Configuration

Detailed documentation coming soon...

Non-HA Configuration

Detailed documentation coming soon...

Sample Usage

main.tf

# ------------------------------------------------------------------------------------------------------
# DEPLOY GRUNTWORK'S EKS-K8S-ARGOCD MODULE
# ------------------------------------------------------------------------------------------------------

module "eks_k_8_s_argocd" {

source = "git::git@github.com:gruntwork-io/terraform-aws-eks.git//modules/eks-k8s-argocd?ref=v0.72.3"

# ----------------------------------------------------------------------------------------------------
# OPTIONAL VARIABLES
# ----------------------------------------------------------------------------------------------------

# Additional Helm chart values to pass to the argocd Helm chart. See the
# official argocd Helm chart values file and documentation for available
# configuration options.
argocd_chart_additional_values = {}

# Whether or not Helm should create the namespace to deploy the Argo CD chart
# to.
argocd_chart_create_namespace = true

# The Helm chart name for the argocd chart.
argocd_chart_name = "argo-cd"

# The k8s namespace that the argocd Helm chart will be deployed to.
argocd_chart_namespace = "argocd"

# The Helm release name for the Argo CD chart.
argocd_chart_release_name = "argocd"

# The Helm repository to obtain the Argo CD chart from.
argocd_chart_repository = "https://argoproj.github.io/argo-helm"

# Whether or not to skip CRD resource installation.
argocd_chart_skip_crds = false

# The version of the argocd Helm chart.
argocd_chart_version = "5.42.2"

# Whether or not to to wait until resources are in a ready state before
# marking the Helm release as successful.
argocd_chart_wait = false

# ARN of permissions boundary to apply to the Argo CD Fargate IAM role - the
# IAM role created for Argo CD.
argocd_iam_role_permissions_boundary = null

# The AWS partition used for default AWS Resources.
aws_partition = "aws"

# When set to true, create a dedicated Fargate execution role for Argo CD.
# When false, you must provide an existing fargate execution role in the
# variable var.pod_execution_iam_role_arn. Only used if
# var.create_fargate_profile is true.
create_fargate_execution_role = false

# When set to true, create a dedicated Fargate execution profile for the Argo
# CD.
create_fargate_profile = false

# Conditional flag to optionally create resources in this module.
create_resources = true

# Tags to apply to all AWS resources managed by this module.
default_tags = {}

# The name of the EKS Cluster that Argo CD will be deployed to. Required if
# deploying to Fargate.
eks_cluster_name = ""

# A map of custom tags to apply to the Fargate Profile IAM Role if enabled.
# The key is the tag name and the value is the tag value.
fargate_profile_iam_role_tags = {}

# A map of custom tags to apply to the Fargate Profile if enabled. The key is
# the tag name and the value is the tag value.
fargate_profile_tags = {}

# ARN of IAM Role to use as the Pod execution role for Fargate. Set to null
# (default) to create a new one. Only used when var.create_fargate_profile is
# true.
pod_execution_iam_role_arn = null

# A list of the subnets into which the Argo CD pods will be launched. These
# should usually be all private subnets and include one in each AWS
# Availability Zone. Required when var.create_fargate_profile is true.
vpc_worker_subnet_ids = []

}


Reference

Optional

Additional Helm chart values to pass to the argocd Helm chart. See the official argocd Helm chart values file and documentation for available configuration options.

Any types represent complex values of variable type. For details, please consult `variables.tf` in the source repo.
{}

Whether or not Helm should create the namespace to deploy the Argo CD chart to.

true
argocd_chart_namestringoptional

The Helm chart name for the argocd chart.

"argo-cd"

The k8s namespace that the argocd Helm chart will be deployed to.

"argocd"

The Helm release name for the Argo CD chart.

"argocd"

The Helm repository to obtain the Argo CD chart from.

"https://argoproj.github.io/argo-helm"

Whether or not to skip CRD resource installation.

false
argocd_chart_versionstringoptional

The version of the argocd Helm chart.

"5.42.2"
argocd_chart_waitbooloptional

Whether or not to to wait until resources are in a ready state before marking the Helm release as successful.

false

ARN of permissions boundary to apply to the Argo CD Fargate IAM role - the IAM role created for Argo CD.

null
aws_partitionstringoptional

The AWS partition used for default AWS Resources.

"aws"

When set to true, create a dedicated Fargate execution role for Argo CD. When false, you must provide an existing fargate execution role in the variable pod_execution_iam_role_arn. Only used if create_fargate_profile is true.

false

When set to true, create a dedicated Fargate execution profile for the Argo CD.

false
create_resourcesbooloptional

Conditional flag to optionally create resources in this module.

true
default_tagsmap(string)optional

Tags to apply to all AWS resources managed by this module.

{}
eks_cluster_namestringoptional

The name of the EKS Cluster that Argo CD will be deployed to. Required if deploying to Fargate.

""

A map of custom tags to apply to the Fargate Profile IAM Role if enabled. The key is the tag name and the value is the tag value.

{}
fargate_profile_tagsmap(string)optional

A map of custom tags to apply to the Fargate Profile if enabled. The key is the tag name and the value is the tag value.

{}

ARN of IAM Role to use as the Pod execution role for Fargate. Set to null (default) to create a new one. Only used when create_fargate_profile is true.

null
vpc_worker_subnet_idslist(string)optional

A list of the subnets into which the Argo CD pods will be launched. These should usually be all private subnets and include one in each AWS Availability Zone. Required when create_fargate_profile is true.

[]