jueves, 4 de febrero de 2021

Usar un secreto para acceder desde OpenShift a un GIT privado con app DotNet Core en Azure Pipelines.

 En esta prueba de concepto haremos funcionar una aplicación API en dotnet core que tenemos en nuestro GIT privado.

Para esta prueba suponemos que ya tenemos OpenShift correctamente funcionando sobre nuestro Azure como un recurso y tenemos acceso al SaaS de OpenShift.

También suponemos que dominamos el uso de Azure Pipelines con el modelo de release pipelines.

Para levantar la aplicación nos basaremos en la documentación que provee OpenShift para levantar .net core a partir de una imagen base sacada de RHEL:

USING .NET CORE 3.1 ON RED HAT OPENSHIFT CONTAINER PLATFORM

El misterio, por tanto, está en cómo utilizar un secreto para acceder a nuestro GIT privado.

El aspecto final de nuestra pipeline con comandos oc, que a continuación detallaremos, es el siguiente:


Pasos:

  1. Primero necesitamos un token de acceso para GIT, de forma que nuestra build de OpenShift sea capaz de acceder a nuestro código fuente. En este ejemplo lo haremos con un PAT (Personal Access Token) de Azure. En un ejemplo productivo no deberíamos de depender de un PAT y deberíamos generarnos un token para una managed identity o un service principal. Este token lo podríamos generar con PowerShell o de cualquier otra forma aceptada. 
    Generar un token para una Identidad de Azure


  2. El primer paso que realizaremos con OpenShift será el de poner el token como una variable oculta y con ella, generar un secreto de tipo Basic dentro de OpenShift con:

    oc create secret generic amcdsecret --from-literal=password=$(amcdpat) --type=kubernetes.io/basic-auth

    Donde amcdpat es la variable de pipeline y amcdsecret el secreto creado dentro de OpenShift


  3. El siguiente paso es hacer que la build de OpenShift pueda utilizar el secreto, de modo que tendremos que asignárselo con:

    oc secrets link builder amcdsecret


  4. Nos metemos en el contexto del proyecto actual con

    oc project security-ci-cd


  5. Creamos la aplicación con un new-app, al cual le pasamos la ruta de GIT, el secreto y las variables de entorno que necesitemos.

    oc new-app  --name=amcdapp 'dotnet:3.1~https://<git_path>'  --source-secret=amcdsecret --build-env DOTNET_STARTUP_PROJECT=<Startup_Path>


  6. Finalmente en los dos últimos pasos exponemos la app y mostramos la ruta de acceso con expose y get route

    oc expose svc/amcdapp 
    oc get routes


Etiquetas: