Skip to content

Commit

Permalink
Merge pull request #7 from justfaas/6-deployment-with-multiple-secret…
Browse files Browse the repository at this point in the history
…s-fails

Fixed secrets and configmaps volume mount
  • Loading branch information
goncalo-oliveira authored Aug 7, 2023
2 parents 316a883 + 1ad1499 commit 83b3add
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 46 deletions.
81 changes: 43 additions & 38 deletions src/V1Alpha1/Functions/Builders/DeploymentBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,58 +13,63 @@ public V1Deployment Build( V1Alpha1Function func, string targetNamespace )

if ( func.Spec.Secrets?.Any() == true )
{
foreach ( var secretName in func.Spec.Secrets )
{
var volumeName = string.Concat( secretName, "-secret-vol" );
var volumeName = string.Concat( func.Name(), "-projected-secrets" );

var volumeMount = new V1VolumeMount
{
Name = volumeName,
MountPath = secretMountPath,
ReadOnlyProperty = true
};
var volumeMount = new V1VolumeMount
{
Name = volumeName,
MountPath = secretMountPath,
ReadOnlyProperty = true
};

var volume = new V1Volume
var volume = new V1Volume
{
Name = volumeName,
Projected = new V1ProjectedVolumeSource
{
Name = volumeName,
Secret = new V1SecretVolumeSource
Sources = func.Spec.Secrets.Select( x => new V1VolumeProjection
{
SecretName = secretName,
Optional = true
}
};
Secret = new V1SecretProjection
{
Name = x
}
} ).ToList()
}
};

volumes.Add( volume );
volumeMounts.Add( volumeMount );
}
volumeMounts.Add( volumeMount );
volumes.Add( volume );
}

if ( func.Spec.ConfigMaps?.Any() == true )
{
foreach ( var configName in func.Spec.ConfigMaps )
{
var volumeName = string.Concat( configName, "-config-vol" );
var volumeName = string.Concat( func.Name(), "-projected-configmap" );

var volumeMount = new V1VolumeMount
{
Name = volumeName,
MountPath = "/var/faas/config",
ReadOnlyProperty = true
};
var volumeMount = new V1VolumeMount
{
Name = volumeName,
MountPath = "/var/faas/config",
ReadOnlyProperty = true
};

var volume = new V1Volume
var volume = new V1Volume
{
Name = volumeName,
Projected = new V1ProjectedVolumeSource
{
Name = volumeName,
ConfigMap = new V1ConfigMapVolumeSource
Sources = func.Spec.ConfigMaps.Select( x => new V1VolumeProjection
{
Name = configName,
Optional = true
}
};
ConfigMap = new V1ConfigMapProjection
{
Name = x,
Optional = true
}
} ).ToList()
}
};

volumes.Add( volume );
volumeMounts.Add( volumeMount );
}
volumeMounts.Add( volumeMount );
volumes.Add( volume );
}

var deployment = new V1Deployment
Expand Down
21 changes: 13 additions & 8 deletions tests/DeploymentBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,15 @@ public void TestSecretsMountPath()

var deployment = new V1Alpha1DeploymentBuilder().Build( function, "test" );

Assert.Single( deployment.Spec.Template.Spec.Volumes );
Assert.Equal( 2, deployment.Spec.Template.Spec.Volumes.Single().Projected.Sources.Count );
Assert.Equal( "secret1", deployment.Spec.Template.Spec.Volumes[0].Projected.Sources[0].Secret.Name );
Assert.Equal( "secret2", deployment.Spec.Template.Spec.Volumes[0].Projected.Sources[1].Secret.Name );

Assert.Single( deployment.Spec.Template.Spec.Containers );
Assert.Equal( 2, deployment.Spec.Template.Spec.Containers.Single().VolumeMounts.Count );
Assert.Equal( "secret1-secret-vol", deployment.Spec.Template.Spec.Containers[0].VolumeMounts[0].Name );
Assert.Equal( "secret2-secret-vol", deployment.Spec.Template.Spec.Containers[0].VolumeMounts[1].Name );
Assert.Single( deployment.Spec.Template.Spec.Containers.Single().VolumeMounts );
Assert.Equal( "/var/faas/secrets", deployment.Spec.Template.Spec.Containers[0].VolumeMounts[0].MountPath );
Assert.Equal( "/var/faas/secrets", deployment.Spec.Template.Spec.Containers[0].VolumeMounts[1].MountPath );


// annotate custom secrets mount path
function.Metadata.Annotations = new Dictionary<string, string>
Expand All @@ -45,11 +48,13 @@ public void TestSecretsMountPath()
// rebuild deployment
deployment = new V1Alpha1DeploymentBuilder().Build( function, "test" );

Assert.Single( deployment.Spec.Template.Spec.Volumes );
Assert.Equal( 2, deployment.Spec.Template.Spec.Volumes.Single().Projected.Sources.Count );
Assert.Equal( "secret1", deployment.Spec.Template.Spec.Volumes[0].Projected.Sources[0].Secret.Name );
Assert.Equal( "secret2", deployment.Spec.Template.Spec.Volumes[0].Projected.Sources[1].Secret.Name );

Assert.Single( deployment.Spec.Template.Spec.Containers );
Assert.Equal( 2, deployment.Spec.Template.Spec.Containers.Single().VolumeMounts.Count );
Assert.Equal( "secret1-secret-vol", deployment.Spec.Template.Spec.Containers[0].VolumeMounts[0].Name );
Assert.Equal( "secret2-secret-vol", deployment.Spec.Template.Spec.Containers[0].VolumeMounts[1].Name );
Assert.Single( deployment.Spec.Template.Spec.Containers.Single().VolumeMounts );
Assert.Equal( "/app/secrets", deployment.Spec.Template.Spec.Containers[0].VolumeMounts[0].MountPath );
Assert.Equal( "/app/secrets", deployment.Spec.Template.Spec.Containers[0].VolumeMounts[1].MountPath );
}
}

0 comments on commit 83b3add

Please sign in to comment.