feat: ghcr external secret generator
This commit is contained in:
parent
85e0a700cb
commit
caee4f8a01
|
|
@ -76,6 +76,60 @@ func CheckExternalSecretCRD() error {
|
||||||
return nil
|
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.
|
// CreateDockerHubExternalSecret generates and applies the ExternalSecret for Docker Hub.
|
||||||
func CreateDockerHubExternalSecret() error {
|
func CreateDockerHubExternalSecret() error {
|
||||||
fmt.Println("[INFO] Creating ExternalSecret for Docker Hub in 'flux-system' namespace...")
|
fmt.Println("[INFO] Creating ExternalSecret for Docker Hub in 'flux-system' namespace...")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue