add service token to auth methods block for k8

This commit is contained in:
Maidul Islam
2023-04-16 18:40:33 -07:00
parent 5585893cfe
commit df2e0e03ff
5 changed files with 67 additions and 9 deletions

View File

@@ -5,7 +5,14 @@ import (
) )
type Authentication struct { type Authentication struct {
// +kubebuilder:validation:Optional
ServiceAccount ServiceAccountDetails `json:"serviceAccount"` ServiceAccount ServiceAccountDetails `json:"serviceAccount"`
// +kubebuilder:validation:Optional
ServiceToken ServiceTokenDetails `json:"serviceToken"`
}
type ServiceTokenDetails struct {
ServiceTokenSecretReference KubeSecretReference `json:"serviceTokenSecretReference"`
} }
type ServiceAccountDetails struct { type ServiceAccountDetails struct {
@@ -27,10 +34,10 @@ type KubeSecretReference struct {
// InfisicalSecretSpec defines the desired state of InfisicalSecret // InfisicalSecretSpec defines the desired state of InfisicalSecret
type InfisicalSecretSpec struct { type InfisicalSecretSpec struct {
// +kubebuilder:validation:Optional // +kubebuilder:validation:Optional
TokenSecretReference KubeSecretReference `json:"tokenSecretReference,omitempty"` TokenSecretReference KubeSecretReference `json:"tokenSecretReference"`
// +kubebuilder:validation:Optional // +kubebuilder:validation:Optional
Authentication Authentication `json:"authentication,omitempty"` Authentication Authentication `json:"authentication"`
// +kubebuilder:validation:Required // +kubebuilder:validation:Required
ManagedSecretReference KubeSecretReference `json:"managedSecretReference"` ManagedSecretReference KubeSecretReference `json:"managedSecretReference"`

View File

@@ -30,6 +30,7 @@ import (
func (in *Authentication) DeepCopyInto(out *Authentication) { func (in *Authentication) DeepCopyInto(out *Authentication) {
*out = *in *out = *in
out.ServiceAccount = in.ServiceAccount out.ServiceAccount = in.ServiceAccount
out.ServiceToken = in.ServiceToken
} }
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Authentication. // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Authentication.
@@ -171,3 +172,19 @@ func (in *ServiceAccountDetails) DeepCopy() *ServiceAccountDetails {
in.DeepCopyInto(out) in.DeepCopyInto(out)
return out return out
} }
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ServiceTokenDetails) DeepCopyInto(out *ServiceTokenDetails) {
*out = *in
out.ServiceTokenSecretReference = in.ServiceTokenSecretReference
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceTokenDetails.
func (in *ServiceTokenDetails) DeepCopy() *ServiceTokenDetails {
if in == nil {
return nil
}
out := new(ServiceTokenDetails)
in.DeepCopyInto(out)
return out
}

View File

@@ -61,8 +61,24 @@ spec:
- projectId - projectId
- serviceAccountSecretReference - serviceAccountSecretReference
type: object type: object
required: serviceToken:
- serviceAccount properties:
serviceTokenSecretReference:
properties:
secretName:
description: The name of the Kubernetes Secret
type: string
secretNamespace:
description: The name space where the Kubernetes Secret
is located
type: string
required:
- secretName
- secretNamespace
type: object
required:
- serviceTokenSecretReference
type: object
type: object type: object
hostAPI: hostAPI:
description: Infisical host to pull secrets from description: Infisical host to pull secrets from

View File

@@ -4,9 +4,6 @@ metadata:
name: infisicalsecret-sample name: infisicalsecret-sample
spec: spec:
hostAPI: http://localhost:7070/api hostAPI: http://localhost:7070/api
tokenSecretReference:
secretName: service-token
secretNamespace: default
authentication: authentication:
serviceAccount: serviceAccount:
serviceAccountSecretReference: serviceAccountSecretReference:
@@ -14,6 +11,14 @@ spec:
secretNamespace: default secretNamespace: default
projectId: "6439ec224cfbf7ea2a95b651" projectId: "6439ec224cfbf7ea2a95b651"
environmentName: "dev" environmentName: "dev"
serviceToken:
serviceTokenSecretReference:
secretName: service-token
secretNamespace: default
managedSecretReference: managedSecretReference:
secretName: managed-secret secretName: managed-secret
secretNamespace: default secretNamespace: default
# To be depreciated soon
tokenSecretReference:
secretName: service-token
secretNamespace: default

View File

@@ -69,9 +69,22 @@ func (r *InfisicalSecretReconciler) GetKubeSecretByNamespacedName(ctx context.Co
} }
func (r *InfisicalSecretReconciler) GetInfisicalTokenFromKubeSecret(ctx context.Context, infisicalSecret v1alpha1.InfisicalSecret) (string, error) { func (r *InfisicalSecretReconciler) GetInfisicalTokenFromKubeSecret(ctx context.Context, infisicalSecret v1alpha1.InfisicalSecret) (string, error) {
// default to new secret ref structure
secretName := infisicalSecret.Spec.Authentication.ServiceToken.ServiceTokenSecretReference.SecretName
secretNamespace := infisicalSecret.Spec.Authentication.ServiceToken.ServiceTokenSecretReference.SecretNamespace
// fall back to previous secret ref
if secretName == "" {
secretName = infisicalSecret.Spec.TokenSecretReference.SecretName
}
if secretNamespace == "" {
secretNamespace = infisicalSecret.Spec.TokenSecretReference.SecretNamespace
}
tokenSecret, err := r.GetKubeSecretByNamespacedName(ctx, types.NamespacedName{ tokenSecret, err := r.GetKubeSecretByNamespacedName(ctx, types.NamespacedName{
Namespace: infisicalSecret.Spec.TokenSecretReference.SecretNamespace, Namespace: secretNamespace,
Name: infisicalSecret.Spec.TokenSecretReference.SecretName, Name: secretName,
}) })
if errors.IsNotFound(err) { if errors.IsNotFound(err) {