feat: ghcr external secret generator
This commit is contained in:
parent
85e0a700cb
commit
caee4f8a01
|
|
@ -76,6 +76,60 @@ func CheckExternalSecretCRD() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// CreateGhcrExternalSecret generates and applies the ExternalSecret for GHCR.
|
||||
func CreateGhcrExternalSecret() error {
|
||||
fmt.Println("[INFO] Creating ExternalSecret for GHCR in 'flux-system' namespace...")
|
||||
|
||||
externalSecret := ExternalSecret{
|
||||
ApiVersion: "external-secrets.io/v1",
|
||||
Kind: "ExternalSecret",
|
||||
Metadata: Metadata{
|
||||
Name: "ghcr-auth",
|
||||
Namespace: "flux-system",
|
||||
},
|
||||
Spec: ExternalSecretSpec{
|
||||
SecretStoreRef: SecretStoreRef{
|
||||
Name: "vault-backend",
|
||||
Kind: "ClusterSecretStore",
|
||||
},
|
||||
Target: ExternalSecretTarget{
|
||||
Name: "ghcr-auth",
|
||||
CreationPolicy: "Owner",
|
||||
Template: ExternalSecretTemplate{
|
||||
Type: "kubernetes.io/dockerconfigjson",
|
||||
Data: map[string]string{
|
||||
".dockerconfigjson": `{{ index . ".dockerconfigjson" | toString }}`,
|
||||
},
|
||||
},
|
||||
},
|
||||
Data: []ExternalSecretData{
|
||||
{
|
||||
SecretKey: ".dockerconfigjson",
|
||||
RemoteRef: ExternalSecretDataRemoteRef{
|
||||
Key: vault.GhcrSecretPath,
|
||||
Property: vault.DockerConfigJSONKey,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
yamlData, err := yaml.Marshal(&externalSecret)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to marshal ExternalSecret to YAML: %w", err)
|
||||
}
|
||||
|
||||
cmd := exec.Command("kubectl", "apply", "-f", "-")
|
||||
cmd.Stdin = bytes.NewReader(yamlData)
|
||||
output, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to apply ExternalSecret: %s\n%w", string(output), err)
|
||||
}
|
||||
|
||||
fmt.Printf("[SUCCESS] Applied ExternalSecret 'ghcr-auth' in 'flux-system' namespace.\n")
|
||||
return nil
|
||||
}
|
||||
|
||||
// CreateDockerHubExternalSecret generates and applies the ExternalSecret for Docker Hub.
|
||||
func CreateDockerHubExternalSecret() error {
|
||||
fmt.Println("[INFO] Creating ExternalSecret for Docker Hub in 'flux-system' namespace...")
|
||||
|
|
|
|||
Loading…
Reference in a new issue