@@ -25,12 +25,32 @@ import (
2525)
2626
2727const (
28- certificateOrgName = "cnoe.io"
28+ certificateOrgName = "cnoe.io"
29+ certificateValidLength = time .Hour * 8766
30+ argocdTLSSecretName = "argocd-server-tls"
2931)
3032
31- var (
32- certificateValidLength = time .Hour * 8766 // one year
33- )
33+ func createCertificateAndKeySecret (ctx context.Context , kubeClient client.Client , name , namespace string , cert , key []byte ) error {
34+ secret := & corev1.Secret {
35+ ObjectMeta : metav1.ObjectMeta {
36+ Name : name ,
37+ Namespace : namespace ,
38+ },
39+ Type : corev1 .SecretTypeTLS ,
40+ Data : map [string ][]byte {
41+ corev1 .TLSCertKey : cert ,
42+ corev1 .TLSPrivateKeyKey : key ,
43+ },
44+ }
45+ err := kubeClient .Create (ctx , secret )
46+ if err != nil {
47+ if k8serrors .IsAlreadyExists (err ) {
48+ return nil
49+ }
50+ return err
51+ }
52+ return nil
53+ }
3454
3555func createIngressCertificateSecret (ctx context.Context , kubeClient client.Client , cert []byte ) error {
3656 secret := & corev1.Secret {
@@ -86,20 +106,9 @@ func getOrCreateIngressCertificateAndKey(ctx context.Context, kubeClient client.
86106 return nil , nil , cErr
87107 }
88108
89- secret := & corev1.Secret {
90- ObjectMeta : metav1.ObjectMeta {
91- Name : name ,
92- Namespace : namespace ,
93- },
94- Type : corev1 .SecretTypeTLS ,
95- StringData : map [string ]string {
96- corev1 .TLSPrivateKeyKey : string (privateKey ),
97- corev1 .TLSCertKey : string (cert ),
98- },
99- }
100- cErr = kubeClient .Create (ctx , secret )
109+ cErr = createCertificateAndKeySecret (ctx , kubeClient , name , namespace , cert , privateKey )
101110 if cErr != nil {
102- return nil , nil , fmt .Errorf ("creating secret %s: %w" , secret . Name , err )
111+ return nil , nil , fmt .Errorf ("creating secret %s: %w" , name , err )
103112 }
104113 return cert , privateKey , nil
105114 } else {
@@ -178,6 +187,10 @@ func setupSelfSignedCertificate(ctx context.Context, logger logr.Logger, kubecli
178187 return nil , err
179188 }
180189
190+ if err := k8s .EnsureNamespace (ctx , kubeclient , globals .ArgoCDNamespace ); err != nil {
191+ return nil , err
192+ }
193+
181194 sans := []string {
182195 globals .DefaultHostName ,
183196 globals .DefaultSANWildcard ,
@@ -190,7 +203,7 @@ func setupSelfSignedCertificate(ctx context.Context, logger logr.Logger, kubecli
190203 }
191204
192205 logger .V (1 ).Info ("Creating/getting certificate" , "host" , config .Host , "sans" , sans )
193- cert , _ , err := getOrCreateIngressCertificateAndKey (ctx , kubeclient , globals .SelfSignedCertSecretName , globals .NginxNamespace , sans )
206+ cert , privateKey , err := getOrCreateIngressCertificateAndKey (ctx , kubeclient , globals .SelfSignedCertSecretName , globals .NginxNamespace , sans )
194207 if err != nil {
195208 return nil , err
196209 }
@@ -200,5 +213,11 @@ func setupSelfSignedCertificate(ctx context.Context, logger logr.Logger, kubecli
200213 if err != nil {
201214 return nil , err
202215 }
216+
217+ logger .V (1 ).Info ("Creating secret for ArgoCD server" , "host" , config .Host )
218+ err = createCertificateAndKeySecret (ctx , kubeclient , argocdTLSSecretName , globals .ArgoCDNamespace , cert , privateKey )
219+ if err != nil {
220+ return nil , err
221+ }
203222 return cert , nil
204223}
0 commit comments