Desplegar aplicación de inicio de sesión en OKE

Descargue el código de GitHub, personalice el código y despliéguelo.

El código de ejemplo está disponible en GitHub.

  1. Vaya a GitHub.
  2. Clone o descargue el repositorio.
  3. Siga las instrucciones del documento README (Léame).

Siga estos pasos para desplegar la aplicación en OKE:

  1. Bifurque y clone el repositorio GitHub.
  2. Cree el archivo Dockerfile y una imagen.
  3. Transferir la imagen de Docker al registro de OCI.
  4. Configure variables de entorno.
  5. Registre la aplicación en el dominio de identidad.
  6. Despliegue de la imagen de Docker en un cluster de OKE.
  7. Pruebe la experiencia de conexión personalizada con la aplicación de ejemplo de trabajo.

Bifurcar y clonar repositorio GitHub

bifurque el repositorio GitHub para crear una copia de un repositorio en la máquina de desarrollo.

A continuación, clone el repositorio bifurcado en la máquina de desarrollo con el siguiente comando.

git clone https://github.com:USERNAME/YOUR-FORKED-REPO

Crear un archivo Dockerfile

Cree un nuevo archivo Dockerfile de nombres de archivo en el repositorio clonado.

La aplicación de conexión personalizada es una aplicación Node JS. El archivo Dockerfile tiene un aspecto similar a cualquier aplicación Node JS.
Utilice el siguiente archivo Dockerfile de ejemplo como punto de partida.
FROM node:alpine

# Create app directory WORKDIR /usr/src/app # Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied where available (npm@5+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm install --only=production
# Bundle app source
COPY . .

EXPOSE 3000# "npm start" is how this would normally be startedCMD [ "npm", "start" ]
Puede utilizar la distribución de Linux permitida en su organización en lugar de alpine.

Creación de una imagen de Docker

Utilice el siguiente comando para crear una imagen de Docker a partir de Dockerfile y proporcionar el nombre de la imagen.

docker build -t $IMAGE_NAME $PATH_TO_DOCKERFILE

Utilice el siguiente comando para mostrar las imágenes para verificar la imagen de Docker.

docker images

Transferencia de la imagen de Docker a OCI Registry

Para transferir la imagen de Docker al registro de OCI, siga estos pasos:

  1. Conéctese a la consola de OCI.
  2. Abra el menú Perfil y haga clic en Configuración de usuario para ver los detalles.
  3. En la página Tokens de autenticación, haga clic en Generar token para crear un nuevo token.

    Atención:

    Copie el token de autenticación y guárdelo en una ubicación segura para recuperarlo más tarde. No puede ver el token de autenticación más adelante en la consola.
  4. Cierre el cuadro de diálogo Generar token.
  5. Ejecute el comando docker login <region-key>.ocir.io para conectarse a OCI Registry (OCIR). Por ejemplo, para la región de Ashburn, ejecute docker login iad.ocir.io.

    Introduzca el nombre de usuario con el token de autenticación en este formato si el usuario está en el dominio por defecto <tenancy-namespace>/<username>.

    Para un usuario de dominio de IAM no por defecto, utilice el formato <tenancy-namespace>/<domain_name>/<username>.

    Cuando se le solicite la contraseña, introduzca el token de autenticación de Oracle Cloud Infrastructure del usuario.

  6. Etiquete y transfiera la imagen de docker creada en el paso anterior a OCIR.

    Puede crear un nuevo repositorio en el registro de contenedores de OCI o utilizar uno existente. El formato de la etiqueta debe ser <region-key>.ocir.io/<tenancy-namespace>/<repo-name>:<version>.

    docker tag idcslogin:latest iad.ocir.io/mytenancy/myrepo/idcslogin:latest docker push iad.ocir.io/mytenancy/myrepo/idcslogin:latest

    El archivo de manifiesto de Kubernetes utilizará esta imagen al desplegar un pod.

  7. También puede seguir estas instrucciones detalladas para empujar la imagen de Docker a OCI Registry.
La imagen de Docker se extrae en OCI Registry y está lista para su despliegue.

Configuración de variables de entorno

  • Obligatorio: IDCS_CLIENT_ID, IDCS_CLIENT_ID y IDCS_SECRET
  • Opcional: IDCS_SELFREGPROFILES para transferir un perfil de autorregistro a la aplicación de conexión y DEBUG_LOGIN=true para activar el registro de depuración en NodeJS
  • Production (Producción): NODE_ENV=variable de producción

Utilice los secretos de Kubernetes para almacenar estos valores y transferirlos en el archivo de manifiesto.

Registro de la aplicación

Registre una aplicación de credenciales de cliente en IDCS o dominio de identidad para que la aplicación de conexión personalizada pueda realizar llamadas a la API de REST de autenticación de Oracle Identity Cloud Service y permitir a los usuarios conectarse.

  1. En la consola de Oracle Identity Cloud Service, amplíe Cajón de navegación y, a continuación, haga clic en Aplicaciones.
  2. En la página Aplicaciones, haga clic en Agregar.
  3. En el cuadro de diálogo Agregar aplicación, haga clic en Aplicación de confianza o Aplicación confidencial.
  4. En el panel Detalles, introduzca los siguientes valores:
    • Nombre: Mi aplicación de conexión
    • Descripción: Mi aplicación de conexión
  5. Haga clic en Siguiente.
  6. En el panel Cliente, seleccione Configurar esta aplicación como un cliente ahora y, a continuación, Credenciales de cliente en Tipos de permisos permitidos.
  7. En el panel Cliente, desplácese hacia abajo y haga clic en Agregar después de Otorgar al cliente acceso a las API de administrador de Identity Cloud Service.
  8. En el cuadro de diálogo Agregar rol de aplicación, seleccione Conectar, Verificar correo electrónico, Restablecer contraseña, Olvidó contraseña y Autorregistro en la lista y, a continuación, haga clic en Agregar.
  9. Haga clic en Siguiente en el panel Cliente y en los siguientes paneles hasta que llegue al último panel.
  10. Haga clic en Finalizar.
  11. En el cuadro de diálogo Aplicación agregada, tome nota del ID de cliente y de los valores Secreto de cliente y, a continuación, haga clic en Cerrar.
  12. Para activar la aplicación, haga clic en Activar.
  13. En el cuadro de diálogo ¿Activar aplicación?, haga clic en Activar aplicación.
    Aparece un mensaje que indica que se ha realizado correctamente.

Creación de un cluster de OKE

  1. Siga las instrucciones para crear un cluster de OKE si aún no tiene uno.
  2. Asegúrese de que tiene acceso al nuevo cluster mediante kubectl. Siga los pasos de la sección Inicio rápido para acceder al cluster.

Despliegue de la aplicación en un cluster de OKE

Para crear un archivo de manifiesto de despliegue de Kubernetes y desplegar la aplicación en OKE, siga estos pasos:

  1. Cree un Kubernetes Secret para que todos los parámetros de configuración estén disponibles para el cluster de OKE.
    1. Configurar los parámetros de configuración de OCI IAM.
      $ kubectl create secret generic idcs_config --from-literal=url=https://<domain instanceid>.identity.oraclecloud.com --from-literal=client-id=<client_id_of_sign_in_app> --from-literal=client-secret=<client_secret_of_sign_in_app>
    2. Crear un token de registro de OCI.
      $ kubectl create secret generic idcs_config --from-literal=url=https://<domain instanceid>.identity.oraclecloud.com --from-literal=client-id=<client_id_of_sign_in_app> --from-literal=client-secret=<client_secret_of_sign_in_app>
    3. La clave y el certificado SSL del servicio del equilibrador de carga son necesarios para configurar un punto final HTTPS para acceder a la aplicación personalizada mediante el equilibrador de carga. Cree un nuevo par de claves para el equilibrador de carga.
    4. Cree un secreto de Kubernetes para que esté disponible para el cluster de OKE.
      $ kubectl create secret tls ssl-certificate-secret --key your.key --cert your.crt

      Note:

      Oracle recomienda configurar el servicio del equilibrador de carga con el puerto SSL, a menos que se realice con fines de desarrollo o prueba rápida.
  2. Cree un archivo de manifiesto de despliegue de Kubernetes.

    El archivo contiene una especificación de pod para la aplicación personalizada y una especificación de servicio para el equilibrador de carga.

    Los parámetros de configuración, como el token OCIR y la configuración de OCI IAM, se transfieren como variables de entorno y los valores se seleccionan del secreto de Kubernetes que ha creado en los pasos anteriores.

    La ruta de la imagen de contenedor de Docker de la aplicación debe ser la ruta de acceso OCIR a la imagen.

    A continuación, se muestra un archivo YAML de ejemplo denominado customlogin.yaml.
    apiVersion: v1
    kind: Pod
    metadata:
      name: login-app
      labels:
        app: customlogin
    spec:
      containers:
        - name: idcslogin
          image: iad.ocir.io/<tenancy namespace>/idcslogin:latest
          imagePullPolicy: Always
          ports:
          - name: httpport
            containerPort: 3000
            protocol: TCP
          env:
          - name: IDCS_URL
            valueFrom:
              secretKeyRef:
                name: idcs-config
                key: url
          - name: IDCS_CLIENT_ID
            valueFrom:
              secretKeyRef:
                name: idcs-config
                key: client-id
          - name: IDCS_CLIENT_SECRET
            valueFrom:
              secretKeyRef:
                name: idcs-config
                key: client-secret
    
      imagePullSecrets:
        - name: ocirsecret
    ---
    
    apiVersion: v1
    kind: Service
    metadata:
      name:
     loginlb
      annotations:
        service.beta.kubernetes.io/oci-load-balancer-ssl-ports: "443"
        service.beta.kubernetes.io/oci-load-balancer-tls-secret: ssl-certificate-secret
      labels:
        app: loginlb
    spec:
      selector:
        app: customlogin
      type: LoadBalancer
      ports:
      - name: http
        port: 80
        protocol: TCP
        targetPort: 3000
      - name: https
        port: 443
        protocol: TCP
        targetPort: 3000

    Note:

    Para obtener más información sobre el espacio de nombres del arrendamiento actual, abra el menú Profile y haga clic en Tenancy:. El espacio de nombres de arrendamiento se muestra en el campo Espacio de nombres de almacenamiento de objetos.
  3. Despliegue el pod de aplicación personalizado y el servicio de equilibrador de carga en el cluster de OKE.
    $ kubectl apply -f ./customlogin.yaml
    $ kubectl get all
    Nombre Preparado Estado Reiniciar Duración
    pod/login-app 1/1 Running 0 12d
    Nombre Tipo IP de cluster IP externa Puerto o puertos Duración
    service/kubernetes ClusterIP 10.96.0.1 None 443/TCP 109d
    service/loginlb LoadBalancer 10.96.45.133 10.1.1.1 80:31420/TCP, 443:30563/TCP 12d

Probar experiencia de conexión personalizada

Siga estos pasos para probar la experiencia de conexión mediante la aplicación de ejemplo de trabajo que ha preparado para la prueba:

  1. Actualice la aplicación de ejemplo para utilizar la URL del equilibrador de carga de la aplicación personalizada recién desplegada.
  2. En la aplicación de ejemplo, introduzca la URL del equilibrador de carga en el campo URL de conexión personalizada. Esta URL puede ser la dirección IP pública del equilibrador de carga o el FQDN según la entrada de DNS.
  3. Acceda a la URL de la aplicación de ejemplo en el explorador.

    Debe acceder a la página de aplicación de inicio de sesión personalizada.