cert-manager
This component creates a Helm release for cert-manager on a Kubernetes cluster. cert-manager is a Kubernetes addon that provisions X.509 certificates.
Usage
Stack Level: Regional
Once the catalog file is created, the file can be imported as follows.
import:
- catalog/eks/cert-manager
...
The default catalog values e.g. stacks/catalog/eks/cert-manager.yaml
enabled: true
name: cert-manager
kubernetes_namespace: cert-manager
# `helm_manifest_experiment_enabled` does not work with cert-manager or any Helm chart that uses CRDs
helm_manifest_experiment_enabled: false
# Use the cert-manager as a private CA (Certificate Authority)
# to issue certificates for use within the Kubernetes cluster.
# Something like this is required for the ALB Ingress Controller.
cert_manager_issuer_selfsigned_enabled: true
# Use Let's Encrypt to issue certificates for use outside the Kubernetes cluster,
# ones that will be trusted by browsers.
# These do not (yet) work with the ALB Ingress Controller,
# which require ACM certificates, so we have no use for them.
letsencrypt_enabled: true
# cert_manager_issuer_support_email_template is only used if letsencrypt_enabled is true.
# If it were true, we would want to set it at the organization level.
cert_manager_issuer_support_email_template: "aws+%s@acme.com"
cert_manager_repository: https://charts.jetstack.io
cert_manager_chart: cert-manager
cert_manager_chart_version: v1.5.4
# use a local chart to provision Certificate Issuers
cert_manager_issuer_chart: ./cert-manager-issuer/
cert_manager_resources:
limits:
cpu: 200m
memory: 256Mi
requests:
cpu: 100m
memory: 128Mi
Variables
Required Variables
cert_manager_issuer_support_email_template
(string
) requiredThe support email template format.
region
(string
) requiredAWS Region
Optional Variables
atomic
(bool
) optionalIf
true
, if any part of the installation process fails, all parts are treated as failed. Highly recommended to prevent cert-manager from getting into a wedged state. The wait flag will be set automatically if atomic is used.Default value:
true
cart_manager_rbac_enabled
(bool
) optionalService Account for pods.
Default value:
true
cert_manager_chart
(string
) optionalChart name to be installed. The chart name can be local path, a URL to a chart, or the name of the chart if
repository
is specified. It is also possible to use the<repository>/<chart>
format here if you are running Terraform on a system that the repository has been added to withhelm repo add
but this is not recommended.Default value:
"cert-manager"
cert_manager_chart_version
(string
) optionalSpecify the exact chart version to install. If this is not specified, the latest version is installed.
Default value:
null
cert_manager_description
(string
) optionalSet release description attribute (visible in the history).
Default value:
null
cert_manager_issuer_chart
(string
) optionalChart name to be installed. The chart name can be local path, a URL to a chart, or the name of the chart if
repository
is specified. It is also possible to use the<repository>/<chart>
format here if you are running Terraform on a system that the repository has been added to withhelm repo add
but this is not recommended.Default value:
"./cert-manager-issuer/"
cert_manager_issuer_chart_version
(string
) optionalSpecify the exact chart version to install. If this is not specified, the latest version is installed.
Default value:
null
cert_manager_issuer_description
(string
) optionalSet release description attribute (visible in the history).
Default value:
null
cert_manager_issuer_repository
(string
) optionalRepository URL where to locate the requested chart.
Default value:
null
cert_manager_issuer_selfsigned_enabled
(bool
) optionalWhether or not to use selfsigned issuer.
Default value:
true
cert_manager_issuer_values
(any
) optionalAdditional values to yamlencode as
helm_release
values for cert-manager-issuer.Default value:
{ }
cert_manager_metrics_enabled
(bool
) optionalWhether or not to enable metrics for cert-manager.
Default value:
false
cert_manager_repository
(string
) optionalRepository URL where to locate the requested chart.
Default value:
"https://charts.jetstack.io"
cert_manager_resources
optionalThe cpu and memory of the cert manager's limits and requests.
Type:
object({
limits = object({
cpu = string
memory = string
})
requests = object({
cpu = string
memory = string
})
})Default value:
{
"limits": {
"cpu": "200m",
"memory": "256Mi"
},
"requests": {
"cpu": "100m",
"memory": "128Mi"
}
}cert_manager_values
(any
) optionalAdditional values to yamlencode as
helm_release
values for cert-manager.Default value:
{ }
cleanup_on_fail
(bool
) optionalIf
true
, resources created in this deploy will be deleted when deploy fails. Highly recommended to prevent cert-manager from getting into a wedeged state.Default value:
true
create_namespace
(bool
) optionalCreate the namespace if it does not yet exist. Defaults to
true
.Default value:
true
dns_gbl_delegated_environment_name
(string
) optionalThe name of the environment where global
dns_delegated
is provisionedDefault value:
"gbl"
eks_component_name
(string
) optionalThe name of the eks component
Default value:
"eks/cluster"
helm_manifest_experiment_enabled
(bool
) optionalEnable storing of the rendered manifest for helm_release so the full diff of what is changing can been seen in the plan
Default value:
false
kube_data_auth_enabled
(bool
) optionalIf
true
, use anaws_eks_cluster_auth
data source to authenticate to the EKS cluster.
Disabled bykubeconfig_file_enabled
orkube_exec_auth_enabled
.Default value:
false
kube_exec_auth_aws_profile
(string
) optionalThe AWS config profile for
aws eks get-token
to useDefault value:
""
kube_exec_auth_aws_profile_enabled
(bool
) optionalIf
true
, passkube_exec_auth_aws_profile
as theprofile
toaws eks get-token
Default value:
false
kube_exec_auth_enabled
(bool
) optionalIf
true
, use the Kubernetes providerexec
feature to executeaws eks get-token
to authenticate to the EKS cluster.
Disabled bykubeconfig_file_enabled
, overrideskube_data_auth_enabled
.Default value:
true
kube_exec_auth_role_arn
(string
) optionalThe role ARN for
aws eks get-token
to useDefault value:
""
kube_exec_auth_role_arn_enabled
(bool
) optionalIf
true
, passkube_exec_auth_role_arn
as the role ARN toaws eks get-token
Default value:
true
kubeconfig_context
(string
) optionalContext to choose from the Kubernetes config file.
If supplied,kubeconfig_context_format
will be ignored.Default value:
""
kubeconfig_context_format
(string
) optionalA format string to use for creating the
kubectl
context name when
kubeconfig_file_enabled
istrue
andkubeconfig_context
is not supplied.
Must include a single%s
which will be replaced with the cluster name.Default value:
""
kubeconfig_exec_auth_api_version
(string
) optionalThe Kubernetes API version of the credentials returned by the
exec
auth pluginDefault value:
"client.authentication.k8s.io/v1beta1"
kubeconfig_file
(string
) optionalThe Kubernetes provider
config_path
setting to use whenkubeconfig_file_enabled
istrue
Default value:
""
kubeconfig_file_enabled
(bool
) optionalIf
true
, configure the Kubernetes provider withkubeconfig_file
and use that kubeconfig file for authenticating to the EKS clusterDefault value:
false
kubernetes_namespace
(string
) optionalThe namespace to install the release into.
Default value:
"cert-manager"
letsencrypt_enabled
(bool
) optionalWhether or not to use letsencrypt issuer and manager. If this is enabled, it will also provision an IAM role.
Default value:
false
timeout
(number
) optionalTime in seconds to wait for any individual kubernetes operation (like Jobs for hooks). Defaults to
300
secondsDefault value:
null
wait
(bool
) optionalSet
true
to wait until all resources are in a ready state before marking the release as successful. Ignored if provisioning Issuers. It will wait for as long astimeout
. Defaults totrue
.Default value:
true
Context Variables
The following variables are defined in the context.tf
file of this module and part of the terraform-null-label pattern.
context.tf
file of this module and part of the terraform-null-label pattern.Outputs
cert_manager_issuer_metadata
Block status of the deployed release
cert_manager_metadata
Block status of the deployed release
Dependencies
Requirements
terraform
, version:>= 1.0.0
aws
, version:>= 4.9.0
helm
, version:>= 2.0
kubernetes
, version:>= 2.14.0, != 2.21.0
Providers
aws
, version:>= 4.9.0
Modules
Name | Version | Source | Description |
---|---|---|---|
cert_manager | 0.10.1 | cloudposse/helm-release/aws | n/a |
cert_manager_issuer | 0.10.1 | cloudposse/helm-release/aws | n/a |
dns_gbl_delegated | 1.8.0 | cloudposse/stack-config/yaml//modules/remote-state | n/a |
eks | 1.8.0 | cloudposse/stack-config/yaml//modules/remote-state | n/a |
iam_roles | latest | ../../account-map/modules/iam-roles | n/a |
this | 0.25.0 | cloudposse/label/null | n/a |
Resources
The following resources are used by this module:
Data Sources
The following data sources are used by this module:
aws_eks_cluster_auth.eks
(data source)aws_partition.current
(data source)