mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-09-02 06:08:39 +00:00
Implement registries for Kubernetes backend (#4092)
According to [the documentation](https://woodpecker-ci.org/docs/administration/backends/kubernetes#images-from-private-registries), per-organization and per-pipeline registries are currently unsupported for the Kubernetes backend. This patch implements this missing functionality by creating and deleting a matching secret for each pod with a matched registry, using the same name, labels, and annotations as the pod, and appending it to its `imagePullSecrets` list. This patch adds tests for the new functionality, and has been manually end-to-end-tested in KinD by using a private image hosted in the matching gitea instance. This will require updating the matching helm charts to add the create/delete permissions to the agent role, which **is already done**. close #2987
This commit is contained in:
@@ -163,6 +163,14 @@ func podSpec(step *types.Step, config *config, options BackendOptions, nsp nativ
|
||||
|
||||
log.Trace().Msgf("using the image pull secrets: %v", config.ImagePullSecretNames)
|
||||
spec.ImagePullSecrets = secretsReferences(config.ImagePullSecretNames)
|
||||
if needsRegistrySecret(step) {
|
||||
log.Trace().Msgf("using an image pull secret from registries")
|
||||
name, err := registrySecretName(step)
|
||||
if err != nil {
|
||||
return spec, err
|
||||
}
|
||||
spec.ImagePullSecrets = append(spec.ImagePullSecrets, secretReference(name))
|
||||
}
|
||||
|
||||
spec.Volumes = append(spec.Volumes, nsp.volumes...)
|
||||
|
||||
@@ -514,6 +522,7 @@ func stopPod(ctx context.Context, engine *kube, step *types.Step, deleteOpts met
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Trace().Str("name", podName).Msg("deleting pod")
|
||||
|
||||
err = engine.client.CoreV1().Pods(engine.config.Namespace).Delete(ctx, podName, deleteOpts)
|
||||
|
Reference in New Issue
Block a user