mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
add service token to auth methods block for k8
This commit is contained in:
@@ -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"`
|
||||||
|
|||||||
@@ -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
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user