...

Source file src/edge-infra.dev/pkg/edge/k8objectsutils/externalsecrets.go

Documentation: edge-infra.dev/pkg/edge/k8objectsutils

     1  package k8objectsutils
     2  
     3  import (
     4  	"time"
     5  
     6  	goext "github.com/external-secrets/external-secrets/apis/externalsecrets/v1beta1"
     7  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     8  
     9  	"edge-infra.dev/pkg/edge/constants"
    10  )
    11  
    12  func BuildExternalSecret(projectID, smSecretName, namespace, secretName, secretKey string) *goext.ExternalSecret {
    13  	es := buildExternalSecretNoData(projectID, namespace, secretName)
    14  	es.Spec.Data = []goext.ExternalSecretData{
    15  		{
    16  			SecretKey: secretKey,
    17  			RemoteRef: goext.ExternalSecretDataRemoteRef{
    18  				Key: smSecretName,
    19  			},
    20  		},
    21  	}
    22  	return es
    23  }
    24  
    25  func BuildExternalSecretWithMultiKeys(projectID, smSecretName, namespace, secretName string, keyMapping map[string]string) *goext.ExternalSecret {
    26  	es := buildExternalSecretNoData(projectID, namespace, secretName)
    27  	numKeys := len(keyMapping)
    28  	data := make([]goext.ExternalSecretData, numKeys)
    29  	i := 0
    30  	for remoteKey, secretKey := range keyMapping {
    31  		data[i] = goext.ExternalSecretData{
    32  			SecretKey: secretKey,
    33  			RemoteRef: goext.ExternalSecretDataRemoteRef{
    34  				Key:      smSecretName,
    35  				Property: remoteKey,
    36  			},
    37  		}
    38  		i++
    39  	}
    40  	es.Spec.Data = data
    41  	return es
    42  }
    43  
    44  func buildExternalSecretNoData(projectID, namespace, secretName string) *goext.ExternalSecret {
    45  	return &goext.ExternalSecret{
    46  		TypeMeta: metav1.TypeMeta{
    47  			APIVersion: goext.SchemeGroupVersion.String(),
    48  			Kind:       goext.ExtSecretKind,
    49  		},
    50  		ObjectMeta: metav1.ObjectMeta{
    51  			Name:      secretName,
    52  			Namespace: namespace,
    53  			Labels: map[string]string{
    54  				constants.Tenant: projectID,
    55  			},
    56  		},
    57  		Spec: goext.ExternalSecretSpec{
    58  			SecretStoreRef: goext.SecretStoreRef{
    59  				Name: "gcp-provider",
    60  				Kind: "ClusterSecretStore",
    61  			},
    62  			Target: goext.ExternalSecretTarget{
    63  				Name:           secretName,
    64  				CreationPolicy: goext.CreatePolicyOwner,
    65  			},
    66  			RefreshInterval: &metav1.Duration{
    67  				Duration: time.Minute,
    68  			},
    69  		},
    70  	}
    71  }
    72  

View as plain text