cert-manager
cert-manager is an automation tool to manage and issue TLS certificates from various issuing resources in a Kubernetes native way. It ensures that certificates are valid and attempts to renew them before expiry.
This package deploys cert-manager to be used with Let's Encrypt as the Certificate Authority.
Requirements
- Kubernetes 1.20->1.25
- Kustomize >= v3.5.3
Image repository and tag
- Cert Manager image: quay.io/jetstack/cert-manager-controller:v1.10.0
- Cert Manager repo: https://github.com/jetstack/cert-manager
- Cert Manager documentation: https://cert-manager.io/docs/
Configuration
cert-manager is deployed with the following configuration:
- The default issuer kind is ClusterIssuer
- The default issuer is letsencrypt
Deployment
To deploy the cert-manager package:
- Add the package to your bases inside the Furyfile.yml:
resources:
  - name: ingress/dual-nginx
    version: "v1.13.1"
  - name: ingress/cert-manager
    version: "v1.13.1"
- 
Execute furyctl vendor -Hto download the packages
- 
Inspect the download packages under ./vendor/katalog/ingress/cert-manager.
- 
Define a kustomization.yamlthat includes the./vendor/katalog/ingress/cert-managerdirectory as resource.
resources:
- ./vendor/katalog/ingress/cert-manager
For the dual-nginx you will need to patch the ClusterIssuer resource with the right ingress class:
---
patchesJson6902:
    - target:
          group: cert-manager.io
          version: v1
          kind: ClusterIssuer
          name: letsencrypt-staging
      path: patches/dual-nginx.yml
    - target:
          group: cert-manager.io
          version: v1
          kind: ClusterIssuer
          name: letsencrypt-prod
      path: patches/dual-nginx.yml
and in the patches/dual-nginx.yml:
---
- op: "replace"
  path: "/spec/acme/solvers/0/http01/ingress/class"
  value: "external"
- Finally, execute the following command to deploy the package:
kustomize build . | kubectl apply -f -