Déployer l'application de connexion sur OKE

Téléchargez le code à partir de GitHub, personnalisez-le et déployez-le.

L'exemple de code est disponible sur GitHub.

  1. Accédez à GitHub.
  2. Clonez ou téléchargez le référentiel.
  3. Suivez les instructions du document README.

Pour déployer l'application vers OKE, procédez comme suit :

  1. Copie et clone du référentiel GitHub.
  2. Créez le fichier Dockerfile et créez une image.
  3. Propager l'image Docker vers OCI Registry
  4. Configurez des variables d'environnement.
  5. Enregistrez l'application dans votre domaine d'identité.
  6. Déploiement de l'image Docker vers un cluster OKE.
  7. Testez l'expérience de connexion personnalisée avec votre exemple d'application.

Copie et clonage du référentiel GitHub

Déplacez le référentiel GitHub pour créer une copie d'un référentiel sur votre ordinateur de développement.

Clonez ensuite le référentiel fourché sur votre ordinateur de développement à l'aide de la commande suivante.

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

Créer un fichier Dockerfile

Créez un fichier nommé Dockerfile dans le référentiel cloné.

L'application de connexion personnalisée est une application Node JS. Le fichier Dockerfile ressemble à n'importe quelle application Node JS.
Utilisez l'exemple de fichier Dockerfile suivant comme point de départ.
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" ]
Vous pouvez utiliser la distribution Linux autorisée dans votre organisation au lieu de alpine.

Création d'une image Docker

Utilisez la commande suivante pour créer une image Docker à partir du fichier Dockerfile et indiquez le nom de votre image.

docker build -t $IMAGE_NAME $PATH_TO_DOCKERFILE

Utilisez la commande suivante pour répertorier les images afin de vérifier votre image Docker.

docker images

Transmission de l'image Docker vers OCI Registry

Pour propager votre image Docker vers OCI Registry, procédez comme suit :

  1. Connexion à la console OCI.
  2. Ouvrez le menu Profil et cliquez sur Paramètres utilisateur pour afficher les détails.
  3. Sur la page Jetons d'authentification, cliquez sur Générer un jeton pour créer un jeton.

    Attention :

    Copiez le jeton d'authentification et enregistrez-le dans un emplacement sécurisé pour l'extraire ultérieurement. Vous ne pouvez pas voir le jeton d'authentification ultérieurement dans votre console.
  4. Fermez la boîte de dialogue Générer un jeton.
  5. Exécutez la commande docker login <region-key>.ocir.io pour vous connecter à OCI Registry (OCIR). Par exemple, pour la région Ashburn, exécutez docker login iad.ocir.io.

    Entrez le nom utilisateur avec le jeton d'authentification dans ce format si l'utilisateur se trouve dans le domaine par défaut <tenancy-namespace>/<username>.

    Pour un utilisateur de domaine IAM autre que celui par défaut, utilisez le format <tenancy-namespace>/<domain_name>/<username>.

    Lorsque vous êtes invité à saisir un mot de passe, saisissez le jeton d'authentification Oracle Cloud Infrastructure de l'utilisateur.

  6. Balisez et propagez l'image docker créée à l'étape précédente vers OCIR.

    Vous pouvez créer un référentiel dans le registre de conteneurs OCI ou utiliser un référentiel existant. Le format de la balise doit être <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

    Le fichier manifeste Kubernetes utilisera cette image lors du déploiement d'un pod.

  7. Vous pouvez également suivre ces instructions détaillées pour pousser votre image Docker vers OCI Registry.
L'image Docker est extraite vers OCI Registry et prête pour le déploiement.

Configuration des variables d'environnement

  • Obligatoire : IDCS_CLIENT_ID, IDCS_CLIENT_ID et IDCS_SECRET
  • Facultatif : IDCS_SELFREGPROFILES pour transmettre un profil d'auto-inscription à l'application de connexion et DEBUG_LOGIN=true pour activer la journalisation du débogage dans NodeJS
  • Production : NODE_ENV=variable de production

Utilisez les clés secrètes Kubernetes pour stocker ces valeurs et les transmettre dans le fichier manifeste.

Inscrire l'application

Inscrivez une application d'informations d'identification client dans IDCS ou le domaine d'identité afin que l'application de connexion personnalisée puisse effectuer des appels vers l'API REST d'authentification Oracle Identity Cloud Service et permettre aux utilisateurs de se connecter.

  1. Dans la console Oracle Identity Cloud Service, développez le volet de navigation, puis cliquez sur Applications.
  2. Sur la page Demandes, cliquez sur Ajouter.
  3. Dans la boîte de dialogue Ajouter une application, cliquez sur Application sécurisée ou Application confidentielle.
  4. Dans le panneau Détails, entrez les valeurs suivantes :
    • Nom : Mon application de connexion
    • Description : Mon application de connexion
  5. Cliquez sur Suivant.
  6. Dans le panneau Client, sélectionnez Configurer cette application comme client maintenant, puis Informations d'identification client dans Types d'octroi autorisés.
  7. Dans le panneau Client, faites défiler vers le bas et cliquez sur Ajouter après accorder au client l'accès aux API d'administration d'Identity Cloud Service.
  8. Dans la boîte de dialogue Ajouter un rôle d'application, sélectionnez Connexion, Vérifier l'adresse électronique, Réinitialiser le mot de passe, Mot de passe oublié et Inscription personnelle dans la liste, puis cliquez sur Ajouter.
  9. Cliquez sur Suivant dans le panneau Client et dans les panneaux suivants jusqu'à atteindre le dernier panneau.
  10. Cliquez sur Terminer.
  11. Dans la boîte de dialogue Application ajoutée, prenez note de l'ID client et des valeurs de clé secrète client, puis cliquez sur Fermer.
  12. Pour activer l'application, cliquez sur Activer.
  13. Dans la boîte de dialogue Activer l'application ?, cliquez sur Activer l'application.
    Un message de succès s'affiche.

Création d'un cluster OKE

  1. Suivez les instructions pour créer un cluster OKE si vous n'en avez pas déjà un.
  2. Assurez-vous que vous avez accès au nouveau cluster à l'aide de kubectl. Suivez les étapes de la section Démarrage rapide pour accéder au cluster.

Déployer l'application vers le cluster OKE

Pour créer un fichier manifeste de déploiement Kubernetes et déployer l'application sur OKE, procédez comme suit :

  1. Créez un fichier Kubernetes Secret pour rendre tous les paramètres de configuration disponibles pour votre cluster OKE.
    1. Configurez les paramètres de configuration 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. Créez un jeton de registre 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. Le certificat et la clé SSL du service d'équilibreur de charge sont requis pour configurer une adresse HTTPS afin d'accéder à l'application personnalisée à l'aide de l'équilibreur de charge. Créez une paire de clés pour votre équilibreur de charge.
    4. Créez une clé secrète Kubernetes pour la mettre à la disposition de votre cluster OKE.
      $ kubectl create secret tls ssl-certificate-secret --key your.key --cert your.crt

      Remarques :

      Oracle vous recommande de configurer le service d'équilibreur de charge avec le port SSL, sauf à des fins de développement ou de test rapide.
  2. Créez un fichier manifeste de déploiement Kubernetes.

    Le fichier contient une spécification de pod pour l'application personnalisée et une spécification de service pour l'équilibreur de charge.

    Les paramètres de configuration tels que le jeton OCIR et la configuration OCI IAM sont transmis en tant que variables d'environnement et les valeurs sont extraites de la clé secrète Kubernetes que vous avez créée au cours des étapes précédentes.

    Le chemin de l'image de conteneur Docker de l'application doit être le chemin OCIR de l'image.

    Voici un exemple de fichier YAML nommé 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

    Remarques :

    Pour trouver l'espace de noms de la location en cours, ouvrez le menu Profil et cliquez sur Location :. L'espace de noms de location est affiché dans le champ Espace de noms Object Storage.
  3. Déployez le pod d'application personnalisé et le service d'équilibreur de charge sur votre cluster OKE.
    $ kubectl apply -f ./customlogin.yaml
    $ kubectl get all
    Nom Prêt Etat Redémarre Age
    pod/login-app 1/1 Running 0 12d
    Nom Type Cluster-IP Adresse IP externe Port(s) Age
    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

Tester l'expérience de connexion personnalisée

Pour tester l'expérience de connexion à l'aide de l'exemple d'application que vous avez préparé pour le test, procédez comme suit :

  1. Mettez à jour l'exemple d'application pour utiliser l'URL d'équilibreur de charge de l'application personnalisée nouvellement déployée.
  2. Dans votre exemple d'application, entrez l'URL de l'équilibreur de charge dans le champ URL de connexion personnalisée. Cette URL peut être l'adresse IP publique de l'équilibreur de charge ou le nom de domaine qualifié complet en fonction de votre entrée DNS.
  3. Accédez à l'exemple d'URL d'application dans le navigateur.

    Vous devez accéder à la page de l'application de connexion personnalisée.