Skip to content

Commit d7f4b65

Browse files
committed
Add trust-manager plugin for TLS certificate infrastructure
Deploys trust-manager v0.20.0 via Helm chart from charts.jetstack.io and a self-signed CA ClusterIssuer into the cert-manager namespace, providing reusable TLS certificate infrastructure for plugins that require it. Pre-validation checks cert-manager CRD and controller are present and running before deployment. Requires cert-manager to be installed. OSAC-218
1 parent c799666 commit d7f4b65

4 files changed

Lines changed: 123 additions & 0 deletions

File tree

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Self-signed issuer for creating the CA certificate
2+
---
3+
apiVersion: cert-manager.io/v1
4+
kind: Issuer
5+
metadata:
6+
name: selfsigned-issuer
7+
namespace: cert-manager
8+
spec:
9+
selfSigned: {}
10+
11+
---
12+
# CA Certificate that will be used by the ClusterIssuer
13+
apiVersion: cert-manager.io/v1
14+
kind: Certificate
15+
metadata:
16+
name: default-ca-cert
17+
namespace: cert-manager
18+
spec:
19+
isCA: true
20+
commonName: default-ca
21+
secretName: default-ca
22+
privateKey:
23+
algorithm: RSA
24+
size: 4096
25+
issuerRef:
26+
name: selfsigned-issuer
27+
kind: Issuer
28+
29+
---
30+
# ClusterIssuer that uses the CA certificate
31+
apiVersion: cert-manager.io/v1
32+
kind: ClusterIssuer
33+
metadata:
34+
name: default-ca
35+
spec:
36+
ca:
37+
secretName: default-ca

plugins/trust-manager/plugin.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
name: trust-manager
3+
type: addon
4+
order: 100
5+
6+
helm:
7+
- release: trust-manager
8+
repo: https://charts.jetstack.io
9+
chart: trust-manager
10+
version: v0.20.0
11+
namespace: cert-manager
12+
createNamespace: false
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
---
2+
- name: Wait for Bundle CRD to be established
3+
kubernetes.core.k8s_info:
4+
api_version: apiextensions.k8s.io/v1
5+
kind: CustomResourceDefinition
6+
name: bundles.trust.cert-manager.io
7+
register: __r_bundle_crd
8+
retries: 30
9+
delay: 10
10+
until:
11+
- __r_bundle_crd.resources | length > 0
12+
- __r_bundle_crd.resources[0].status.conditions
13+
| default([])
14+
| selectattr('type', 'equalto', 'Established')
15+
| selectattr('status', 'equalto', 'True')
16+
| list
17+
| length > 0
18+
19+
- name: Debug trust-manager status
20+
ansible.builtin.debug:
21+
msg: "trust-manager deployment is ready in cert-manager namespace"
22+
23+
- name: Apply CA issuer manifests
24+
kubernetes.core.k8s:
25+
state: present
26+
definition: "{{ item }}"
27+
loop: "{{ lookup('file', plugin_dir ~ '/files/ca-issuer.yaml') | from_yaml_all | list }}"
28+
register: __r_ca_issuer
29+
retries: "{{ k8s_retries }}"
30+
delay: "{{ k8s_delay }}"
31+
until: __r_ca_issuer is success
32+
33+
- name: Wait for ClusterIssuer to be ready
34+
kubernetes.core.k8s_info:
35+
api_version: cert-manager.io/v1
36+
kind: ClusterIssuer
37+
name: default-ca
38+
register: __r_cluster_issuer
39+
retries: 30
40+
delay: 10
41+
until:
42+
- __r_cluster_issuer.resources | length > 0
43+
- __r_cluster_issuer.resources[0].status.conditions | default([]) | selectattr('type', 'equalto', 'Ready') | selectattr('status', 'equalto', 'True') | list | length > 0
44+
45+
- name: Debug CA issuer status
46+
ansible.builtin.debug:
47+
msg: "ClusterIssuer default-ca is ready"
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
- name: Check cert-manager CRD exists
3+
kubernetes.core.k8s_info:
4+
api_version: apiextensions.k8s.io/v1
5+
kind: CustomResourceDefinition
6+
name: certificates.cert-manager.io
7+
register: __r_cert_manager_crd
8+
9+
- name: Fail if cert-manager CRD is not installed
10+
ansible.builtin.fail:
11+
msg: "certificates.cert-manager.io CRD not found. cert-manager must be installed before trust-manager."
12+
when: __r_cert_manager_crd.resources | length == 0
13+
14+
- name: Check cert-manager controller is running
15+
kubernetes.core.k8s_info:
16+
api_version: apps/v1
17+
kind: Deployment
18+
name: cert-manager
19+
namespace: cert-manager
20+
register: __r_cert_manager_deploy
21+
22+
- name: Fail if cert-manager controller is not running
23+
ansible.builtin.fail:
24+
msg: "cert-manager controller deployment is not available. cert-manager must be running before trust-manager."
25+
when: >
26+
__r_cert_manager_deploy.resources | length == 0 or
27+
__r_cert_manager_deploy.resources[0].status.availableReplicas | default(0) | int == 0

0 commit comments

Comments
 (0)