Skip to content

Commit 3685a85

Browse files
committed
Issue certifcates for etcd-operator
This commit will add the capability to issue selfsigned certificates for etcd-operator. Signed-off-by: ArkaSaha30 <[email protected]>
1 parent 340fe74 commit 3685a85

10 files changed

+97
-2
lines changed

api/v1alpha1/etcdcluster_types.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,18 @@ import (
2323
// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
2424
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
2525

26+
type EtcdMember struct {
27+
PeerSecret string `json:"peerSecret"`
28+
ServerSecret string `json:"serverSecret"`
29+
}
30+
31+
// TLSCertificate defines the certificate issued by the certificate provider
32+
type TLSCertificate struct {
33+
Member EtcdMember `json:"member,omitempty"`
34+
OperatorSecret string `json:"operatorSecret"`
35+
Provider string `json:"provider"`
36+
}
37+
2638
// EtcdClusterSpec defines the desired state of EtcdCluster.
2739
type EtcdClusterSpec struct {
2840
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
@@ -31,7 +43,8 @@ type EtcdClusterSpec struct {
3143
// Size is the expected size of the etcd cluster.
3244
Size int `json:"size"`
3345
// Version is the expected version of the etcd container image.
34-
Version string `json:"version"`
46+
Version string `json:"version"`
47+
Tls TLSCertificate `json:"tls,omitempty"`
3548
}
3649

3750
// EtcdClusterStatus defines the observed state of EtcdCluster.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: cert-manager.io/v1
2+
kind: Issuer
3+
metadata:
4+
name: selfsigned
5+
namespace: etcd-operator-system
6+
spec:
7+
selfSigned: {}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: cert-manager.io/v1
2+
kind: Certificate
3+
metadata:
4+
name: etcd-client-certificate
5+
namespace: etcd-operator-system
6+
spec:
7+
secretName: etcd-client-tls
8+
dnsNames:
9+
- etcd.etcd-operator-system
10+
issuerRef:
11+
name: etcd-operator-selfsigned
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: cert-manager.io/v1
2+
kind: Certificate
3+
metadata:
4+
name: etcd-peer-certificate
5+
namespace: etcd-operator-system
6+
spec:
7+
secretName: etcd-peer-tls
8+
dnsNames:
9+
- etcd.etcd-operator-system
10+
issuerRef:
11+
name: etcd-operator-selfsigned
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: cert-manager.io/v1
2+
kind: Certificate
3+
metadata:
4+
name: etcd-server-certificate
5+
namespace: etcd-operator-system
6+
spec:
7+
secretName: etcd-server-tls
8+
dnsNames:
9+
- etcd.etcd-operator-system
10+
issuerRef:
11+
name: etcd-operator-selfsigned

config/certmanager/kustomization.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
resources:
2+
- cert-manager_issuer.yaml
3+
- etcd-peer-cert.yaml
4+
- etcd-server-cert.yaml
5+
- etcd-client-cert.yaml

config/crd/bases/operator.etcd.io_etcdclusters.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,28 @@ spec:
4242
size:
4343
description: Size is the expected size of the etcd cluster.
4444
type: integer
45+
tls:
46+
description: TLSCertificate defines the certificate issued by the
47+
certificate provider
48+
properties:
49+
member:
50+
properties:
51+
peerSecret:
52+
type: string
53+
serverSecret:
54+
type: string
55+
required:
56+
- peerSecret
57+
- serverSecret
58+
type: object
59+
operatorSecret:
60+
type: string
61+
provider:
62+
type: string
63+
required:
64+
- operatorSecret
65+
- provider
66+
type: object
4567
version:
4668
description: Version is the expected version of the etcd container
4769
image.

config/default/kustomization.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ resources:
2222
# crd/kustomization.yaml
2323
#- ../webhook
2424
# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER'. 'WEBHOOK' components are required.
25-
#- ../certmanager
25+
- ../certmanager
2626
# [PROMETHEUS] To enable prometheus monitor, uncomment all sections with 'PROMETHEUS'.
2727
#- ../prometheus
2828
# [METRICS] Expose the controller manager metrics service.

config/manager/kustomization.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,8 @@
11
resources:
22
- manager.yaml
3+
apiVersion: kustomize.config.k8s.io/v1beta1
4+
kind: Kustomization
5+
images:
6+
- name: controller
7+
newName: arkasaha30/etcd-operator
8+
newTag: cert2

config/samples/operator_v1alpha1_etcdcluster.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,12 @@ metadata:
77
name: etcdcluster-sample
88
spec:
99
# TODO(user): Add fields here
10+
size: 4
11+
version: "3.5.17"
12+
tls:
13+
member:
14+
peerSecret: etcd-peer-tls
15+
serverSecret: etcd-server-tls
16+
operatorSecret: etcd-client-tls
17+
provider: cert-manager
18+

0 commit comments

Comments
 (0)