es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para leer los valores de USERNAME y PASSWORD desde el volumen montado dentro de un pod de Kubernetes usando Spring Boot, puedes crear un objeto Secret de Kubernetes que contenga esta información y luego leerlo utilizando la API de Kubernetes desde tu aplicación Spring Boot.

    Primero, crea el objeto Secret ejecutando el siguiente comando:

    kubectl create secret generic my-git-secrets --from-file=git-token=/mnt/secrets-store/git-token
    

    Esto crea un objeto Secret llamado my-git-secrets y almacena el contenido del archivo git-token en las claves USERNAME y PASSWORD.

    A continuación, agrega la dependencia kubernetes-client al archivo pom.xml de tu aplicación Spring Boot:

    <dependency>
        <groupid>io.fabric8</groupid>
        <artifactid>kubernetes-client</artifactid>
        <version>5.10.0</version>
    </dependency>
    

    Luego, crea un bean SecretsClient para interactuar con la API de Kubernetes:

    import io.fabric8.kubernetes.api.model.Secret;
    import io.fabric8.kubernetes.client.KubernetesClient;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class KubernetesConfig {
    
        @Autowired
        private KubernetesClient kubernetesClient;
    
        @Bean
        public SecretsClient secretsClient() {
            return kubernetesClient.secrets().inNamespace("default");
        }
    }
    

    Esto crea un bean SecretsClient que se puede utilizar para interactuar con la API de Kubernetes y obtener el Secret my-git-secrets.

    Finalmente, en el código de tu aplicación Spring Boot, puedes leer los valores de USERNAME y PASSWORD del Secret my-git-secrets llamando al método get en el SecretsClient de la siguiente manera:

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class MyController {
    
        @Autowired
        private SecretsClient secretsClient;
    
        @GetMapping("/secrets")
        public String getSecrets() {
            Secret secret = secretsClient.withName("my-git-secrets").get();
            byte[] decodedUsername = Base64.getDecoder().decode(secret.getData().get("USERNAME"));
            String username = new String(decodedUsername);
            byte[] decodedPassword = Base64.getDecoder().decode(secret.getData().get("PASSWORD"));
            String password = new String(decodedPassword);
            return "Username: " + username + " Password: " + password;
        }
    }
    

    Este código obtiene el Secret my-git-secrets utilizando el secretsClient, decodifica los valores de USERNAME y PASSWORD desde cadenas codificadas en Base64 y los devuelve en una respuesta del controlador Spring MVC.

Comments are closed.