Configuration de l'accès à un cluster

Découvrez les étapes de configuration de l'accès aux clusters que vous créez à l'aide de Kubernetes Engine (OKE). Une fois ces étapes terminées, vous pouvez commencer à utiliser kubectl pour gérer le cluster.

Afin d'accéder à un cluster à l'aide de kubectl, vous devez configurer un fichier de configuration Kubernetes (généralement appelé fichier Kubeconfig) pour le cluster. Le fichier Kubeconfig (nommé config et stocké dans le répertoire $HOME/.kube par défaut) fournit les détails nécessaires pour accéder au cluster. Une fois le fichier Kubeconfig configuré, vous pouvez commencer à utiliser kubectl pour gérer le cluster.

La procédure à suivre lors de la configuration du fichier Kubeconfig dépend de la façon dont vous souhaitez accéder au cluster :

  • Pour accéder au cluster à l'aide de kubectl dans Cloud Shell, exécutez une commande d'interface de ligne de commande Oracle Cloud Infrastructure dans la fenêtre Cloud Shell afin de configurer le fichier Kubeconfig.

    Reportez-vous à Configuration de l'accès de Cloud Shell aux clusters.

  • Pour accéder au cluster à l'aide d'une installation locale de kubectl, procédez comme suit :

    • Générez une paire de clés de signature d'API (si vous n'en avez pas encore).
    • Téléchargez la clé publique de la paire de clés de signature d'API.
    • Installez et configurez l'interface de ligne de commande Oracle Cloud Infrastructure
    • Configurez le fichier Kubeconfig.

    Reportez-vous à Configuration de l'accès local aux clusters.

Configuration de l'accès de Cloud Shell aux clusters

Lorsque l'adresse d'API Kubernetes d'un cluster a une adresse IP publique, vous pouvez accéder au cluster dans Cloud Shell en configurant un fichier kubeconfig.

Remarque

Pour accéder à un cluster avec une adresse d'API Kubernetes privée dans Cloud Shell, vous pouvez configurer un bastion à l'aide du service Oracle Cloud Infrastructure Bastion. Pour plus d'informations, reportez-vous à Configuration d'un bastion pour l'accès au cluster.

Pour configurer le fichier kubeconfig, procédez comme suit :

Etape 1 : configuration du fichier Kubeconfig
  1. Ouvrez le menu de navigation et cliquez sur Services de développeur. Sous Conteneurs et artefacts, cliquez sur Clusters Kubernetes (OKE).
  2. Choisissez un compartiment sur lequel vous êtes autorisé à travailler.
  3. Sur la page Liste des clusters, cliquez sur le nom du cluster auquel vous voulez accéder à l'aide de kubectl. La page Cluster affiche les détails du cluster.
  4. Cliquez sur le bouton Accéder au cluster pour afficher la boîte de dialogue Accéder à votre cluster.
  5. Cliquez sur Accès à Cloud Shell.
  6. Cliquez sur Lancer Cloud Shell pour afficher la fenêtre Cloud Shell. Pour plus d'informations sur Cloud Shell (y compris sur la stratégie IAM requise), reportez-vous à Cloud Shell.
  7. Exécutez la commande de l'interface de ligne de commande Oracle Cloud Infrastructure pour configurer le fichier Kubeconfig et l'enregistrer dans un emplacement accessible à kubectl.

    Par exemple, saisissez la commande suivante (ou copiez-la à partir de la boîte de dialogue Accéder à votre cluster et collez-la) dans la fenêtre Cloud Shell :

    oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.phx.aaaaaaaaae... --file $HOME/.kube/config  --region us-phoenix-1 --token-version 2.0.0 --kube-endpoint PUBLIC_ENDPOINT

    où :

    • ocid1.cluster.oc1.phx.aaaaaaaaae... est l'OCID du cluster en cours. Pour plus de commodité, la commande de la boîte de dialogue Accéder à votre cluster inclut déjà l'OCID du cluster.
    • --kube-endpoint PUBLIC_ENDPOINT indique d'ajouter l'adresse IP publique de l'adresse d'API Kubernetes du cluster au fichier kubeconfig. Pour plus d'informations, reportez-vous à Plan de contrôle de cluster Kubernetes et API Kubernetes.

    Si un fichier Kubeconfig existe déjà à l'emplacement que vous indiquez, les détails du cluster seront ajoutés en tant que nouveau contexte pour le fichier Kubeconfig existant. L'élément current-context: du fichier Kubeconfig sera défini de manière à pointer vers le contexte qui vient d'être ajouté.

    Conseil

    Pour les opérations de presse-papiers dans la fenêtre Cloud Shell, les utilisateurs Windows peuvent utiliser Ctrl+C ou Ctrl+Inser pour effectuer une copie, et Maj+Inser pour effectuer un collage. Pour les utilisateurs Mac OS, utilisez Cmd+C pour copier et Cmd+V pour coller.
  8. Si vous n'enregistrez pas le fichier Kubeconfig dans l'emplacement par défaut ($HOME/.kube) ou avec le nom par défaut (config), définissez la valeur de la variable d'environnement KUBECONFIG de sorte qu'elle pointe vers le nom et l'emplacement du fichier Kubeconfig. Par exemple, entrez la commande suivante dans la fenêtre Cloud Shell :

    export KUBECONFIG=$HOME/.kube/config
Etape 2 : vérification de l'accès de kubectl au cluster

Vérifiez que kubectl peut se connecter au cluster en saisissant la commande suivante dans la fenêtre Cloud Shell :

$ kubectl get nodes

Les informations relatives aux noeuds du cluster apparaissent.

Vous pouvez maintenant utiliser kubectl pour effectuer des opérations sur le cluster.

Configuration de l'accès local aux clusters

Lorsque l'adresse d'API Kubernetes d'un cluster ne dispose pas d'adresse IP publique, vous pouvez accéder au cluster à partir d'un terminal local si votre réseau est appairé avec le VCN du cluster.

Remarque

Pour accéder à un cluster avec une adresse d'API Kubernetes privée à partir d'un terminal local, vous pouvez également configurer un bastion à l'aide du service Oracle Cloud Infrastructure Bastion. Pour plus d'informations, reportez-vous à Configuration d'un bastion pour l'accès au cluster.

Pour configurer le fichier kubeconfig, procédez comme suit :

Etape 1 : génération d'une paire de clés de signature d'API

Si vous disposez déjà d'une paire de clés de signature d'API, passez directement à l'étape suivante. Sinon :

  1. Utilisez les commandes OpenSSL pour générer la paire de clés au format PEM requis. Si vous utilisez Windows, vous devrez installer Git Bash for Windows et exécuter les commandes avec cet outil. Reportez-vous à Procédure de génération d'une clé de signature d'API.
  2. Copiez le contenu de la clé publique dans le presse-papiers (vous devrez coller sa valeur dans la console par la suite).

Etape 2 : téléchargement de la clé publique de la paire de clés de signature d'API
  1. Dans l'angle supérieur droit de la console, ouvrez le menu Profil, puis cliquez sur Paramètres d'utilisateur pour afficher les détails.

  2. Cliquez sur Ajouter une clé publique.

  3. Collez la valeur de la clé publique dans la fenêtre et cliquez sur Ajouter.

    La clé est téléchargée et son empreinte apparaît (par exemple, d1:b2:32:53:d3:5f:cf:68:2d:6f:8b:5f:77:8f:07:13).

Etape 3 : installation et configuration de l'interface de ligne de commande Oracle Cloud Infrastructure
  1. Installez la version 2.6.4 (ou ultérieure) de l'interface de ligne de commande Oracle Cloud Infrastructure. Reportez-vous à la section Installing the CLI.

  2. Configurez l'interface de ligne de commande Oracle Cloud Infrastructure Reportez-vous à Configuration de l'interface de ligne de commande.
Etape 4 : configuration du fichier Kubeconfig
  1. Ouvrez le menu de navigation et cliquez sur Services de développeur. Sous Conteneurs et artefacts, cliquez sur Clusters Kubernetes (OKE).
  2. Choisissez un compartiment sur lequel vous êtes autorisé à travailler.
  3. Sur la page Liste des clusters, cliquez sur le nom du cluster auquel vous voulez accéder à l'aide de kubectl. La page Cluster affiche les détails du cluster.
  4. Cliquez sur le bouton Accéder au cluster pour afficher la boîte de dialogue Accéder à votre cluster.

  5. Cliquez sur Accès local.
  6. Créez un répertoire destiné à contenir le fichier Kubeconfig. Par défaut, le nom de répertoire attendu est $HOME/.kube.

    Par exemple, sous Linux, saisissez la commande suivante (ou copiez-la à partir de la boîte de dialogue Accéder à votre cluster et collez-la) dans une fenêtre de terminal en local :

    mkdir -p $HOME/.kube
  7. Exécutez la commande de l'interface de ligne de commande Oracle Cloud Infrastructure pour configurer le fichier Kubeconfig et l'enregistrer dans un emplacement accessible à kubectl.

    Par exemple, sous Linux, saisissez la commande suivante (ou copiez-la à partir de la boîte de dialogue Accéder à votre cluster et collez-la) dans une fenêtre de terminal en local :

    oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.phx.aaaaaaaaae... --file $HOME/.kube/config  --region us-phoenix-1 --token-version 2.0.0 --kube-endpoint PRIVATE_ENDPOINT|PUBLIC_ENDPOINT

    où :

    • ocid1.cluster.oc1.phx.aaaaaaaaae... est l'OCID du cluster en cours. Pour plus de commodité, la commande de la boîte de dialogue Accéder à votre cluster inclut déjà l'OCID du cluster.
    • --kube-endpoint PRIVATE_ENDPOINT|PUBLIC_ENDPOINT indique si l'adresse IP privée ou l'adresse IP publique de l'adresse d'API Kubernetes du cluster doit être ajoutée au fichier kubeconfig. Pour plus d'informations, reportez-vous à Plan de contrôle de cluster Kubernetes et API Kubernetes.

    Si un fichier Kubeconfig existe déjà à l'emplacement que vous indiquez, les détails du cluster seront ajoutés en tant que nouveau contexte pour le fichier Kubeconfig existant. L'élément current-context: du fichier Kubeconfig sera défini de manière à pointer vers le contexte qui vient d'être ajouté.

  8. Si vous n'enregistrez pas le fichier Kubeconfig dans l'emplacement par défaut ($HOME/.kube) ou avec le nom par défaut (config), définissez la valeur de la variable d'environnement KUBECONFIG de sorte qu'elle pointe vers le nom et l'emplacement du fichier Kubeconfig. Par exemple, sous Linux, saisissez la commande suivante (ou copiez-la à partir de la boîte de dialogue Accéder à votre cluster et collez-la) dans une fenêtre de terminal en local :

    export KUBECONFIG=$HOME/.kube/config
Etape 5 : vérification de l'accès de kubectl au cluster
  1. Vérifiez que kubectl est disponible en saisissant la commande suivante dans une fenêtre de terminal en local :

    kubectl version

    La réponse affiche les informations suivantes :

    • La version de kubectl installée et exécutée en local.
    • La version de Kubernetes (plus précisément, la version de kube-apiserver) exécutée sur les noeuds de plan de contrôle du cluster.

    La version de kubectl ne doit pas avoir plus d'une version mineure d'écart (antérieure ou ultérieure) avec la version de Kubernetes exécutée sur les noeuds de plan de contrôle. Si la version de kubectl a plus d'une version d'écart, installez une version appropriée de kubectl. Reportez-vous à Version de Kubernetes et stratégie de prise en charge des écarts de version dans la documentation Kubernetes.

    Si la commande renvoie une erreur indiquant que kubectl n'est pas disponible, installez kubectl (reportez-vous à la documentation kubectl) et répétez cette étape.

  2. Vérifiez que kubectl peut se connecter au cluster en saisissant la commande suivante dans une fenêtre de terminal en local :

    kubectl get nodes

    Les informations relatives aux noeuds du cluster apparaissent.

    Vous pouvez maintenant utiliser kubectl pour effectuer des opérations sur le cluster.

Remarques sur les fichiers Kubeconfig

Tenez compte des points suivants concernant les fichiers Kubeconfig :

  • Un seul fichier Kubeconfig peut inclure les détails de plusieurs clusters, sous la forme de plusieurs contextes. Le cluster sur lequel les opérations sont exécutées est indiqué par l'élément current-context: du fichier Kubeconfig.
  • Un fichier Kubeconfig inclut une commande d'interface de ligne de commande Oracle Cloud Infrastructure qui génère dynamiquement un jeton d'authentification et l'insère lorsque vous exécutez une commande kubectl. L'interface de ligne de commande Oracle Cloud Infrastructure doit être disponible sur le chemin de l'exécutable du shell (par exemple, $PATH sur Linux).
  • La commande de l'interface de ligne de commande Oracle Cloud Infrastructure dans le fichier Kubeconfig génère des jetons d'authentification à court terme, niveau cluster et propres à chaque utilisateur. Par conséquent, les utilisateurs ne peuvent pas partager des fichiers Kubeconfig pour accéder aux clusters Kubernetes.
  • La commande de l'interface de ligne de commande Oracle Cloud Infrastructure du fichier Kubeconfig utilise votre profil d'interface de ligne de commande en cours lors de la génération d'un jeton d'authentification. Si vous avez défini plusieurs profils dans différentes locations dans le fichier de configuration de l'interface de ligne de commande (par exemple, dans ~/.oci/config), indiquez le profil à utiliser lors de la génération du jeton d'authentification en utilisant une des méthodes suivantes. Dans les deux cas, <profile-name> est le nom du profil défini dans le fichier de configuration de l'interface de ligne de commande :

    • Ajoutez --profile à la section args: du fichier Kubeconfig à l'aide du code suivant :

      user:
        exec:
          apiVersion: client.authentication.k8s.io/v1beta1
          args:
          - ce
          - cluster
          - generate-token
          - --cluster-id
          - <cluster ocid>
          - --profile
          - <profile-name>
          command: oci
          env: []
    • Définissez la variable d'environnement OCI_CLI_PROFILE sur le nom du profil défini dans le fichier de configuration de l'interface de ligne de commande avant d'exécuter les commandes kubectl. Par exemple :

      
      export OCI_CLI_PROFILE=<profile-name>
      
      kubectl get nodes
      
  • Les jetons d'authentification générés par la commande d'interface de ligne de commande Oracle Cloud Infrastructure dans le fichier Kubeconfig permettent d'authentifier les utilisateurs individuels qui accèdent au cluster à l'aide de kubectl. Toutefois, les jetons d'authentification générés ne permettent pas à d'autres processus et outils d'accéder au cluster, comme les outils d'intégration continue et de déploiement continu. Dans ce cas, envisagez de créer un compte de service Kubernetes et d'ajouter le jeton d'authentification qui lui est associé au fichier Kubeconfig. Pour plus d'informations, reportez-vous à Ajout d'un jeton d'authentification de compte de service à un fichier Kubeconfig.
  • Une stratégie IAM peut avoir été définie pour restreindre l'accès au cluster aux seuls utilisateurs qui ont été vérifiés à l'aide de l'authentification à plusieurs facteurs. Si une telle stratégie existe, vous devez ajouter les arguments --profile et --auth au fichier kubeconfig pour permettre à un utilisateur vérifié par l'authentification à plusieurs facteurs d'accéder au cluster à l'aide de kubectl, comme suit. Dans les deux cas, <profile-name> est le nom du profil de l'utilisateur vérifié par l'authentification à plusieurs facteurs défini dans le fichier de configuration de l'interface de ligne de commande Oracle Cloud Infrastructure :

    • Ajoutez les arguments suivants à la section args: du fichier kubeconfig :

      
          - --profile
          - <profile-name>
          - --auth
          - security_token

      Par exemple :

      user:
        exec:
          apiVersion: client.authentication.k8s.io/v1beta1
          args:
          - ce
          - cluster
          - generate-token
          - --cluster-id
          - <cluster ocid>
          - --profile
          - <profile-name>
          - --auth
          - security_token
          command: oci
          env: []
    • Définissez la variable d'environnement OCI_CLI_PROFILE sur le nom du profil de l'utilisateur vérifié par l'authentification à plusieurs facteurs défini dans le fichier de configuration de la CLI avant d'exécuter les commandes kubectl. Par exemple :

      
      export OCI_CLI_PROFILE=<profile-name>
      
      kubectl get nodes
      

    Après la mise à jour du fichier kubeconfig, l'utilisateur que vous utilisez pour accéder au cluster doit être vérifié à l'aide de l'authentification à plusieurs facteurs. Si vous tentez d'accéder au cluster à l'aide d'un utilisateur qui n'a pas été vérifié par l'authentification à plusieurs facteurs, le message error: You must be logged in to the server (Unauthorized) s'affiche.

    Pour plus d'informations sur les utilisateurs vérifiés par l'authentification à plusieurs facteurs, reportez-vous à Gestion de l'authentification à plusieurs facteurs.

Mise à niveau des fichiers Kubeconfig de la version 1.0.0 vers la version 2.0.0

Kubernetes Engine prend actuellement en charge les fichiers kubeconfig version 2.0.0 et ne prend plus en charge les fichiers kubeconfig version 1.0.0.

Les améliorations apportées aux fichiers Kubeconfig de version 2.0.0 fournissent une meilleure sécurité pour votre environnement Kubernetes, notamment des jetons niveau cluster à court terme actualisés automatiquement et la prise en charge des ID d'instance pour l'accès aux clusters Kubernetes. De plus, les jetons d'authentification sont générés à la demande pour chaque cluster. Par conséquent, les fichiers Kubeconfig de version 2.0.0 ne peuvent pas être partagés entre les utilisateurs pour accéder aux clusters Kubernetes (contrairement aux fichiers Kubeconfig de version 1.0.0).

Les fichiers Kubeconfig de version 2.0.0 ne sont pas compatibles avec les versions de kubectl antérieures à la version 1.11.9. Si vous exécutez actuellement kubectl version 1.10.x ou une version antérieure, effectuez une mise à niveau vers la version 1.11.9 ou une version ultérieure. Pour plus d'informations sur la compatibilité entre les différentes versions de Kubernetes et de kubectl, reportez-vous à la documentation Kubernetes.

Suivez les instructions ci-dessous pour déterminer la version en cours des fichiers Kubeconfig et découvrir comment mettre à niveau les fichiers Kubeconfig de version 1.0.0 restants vers la version 2.0.0.

Identification de la version du fichier Kubeconfig

Pour déterminer la version du fichier Kubeconfig d'un cluster, procédez comme suit :

1. Dans une fenêtre de terminal (la fenêtre Cloud Shell ou une fenêtre de terminal en local selon le cas), entrez la commande suivante pour afficher le format du fichier Kubeconfig vers lequel pointe actuellement la variable d'environnement KUBECONFIG :

kubectl config view

2. Si le fichier Kubeconfig est de version 1.0.0, une réponse est affichée au format suivant :

users:
- name: <username>
  user:
    token: <token-value>

Si vous voyez une réponse au format ci-dessus, vous devez mettre à niveau le fichier Kubeconfig. Reportez-vous à Mise à niveau des fichiers Kubeconfig de la version 1.0.0 vers la version 2.0.0.

3. Si le fichier kubeconfig est de version 2.0.0, une réponse est affichée au format suivant :

user:
  exec:
    apiVersion: client.authentication.k8s.io/v1beta1
    args:
    - ce
    - cluster
    - generate-token
    - --cluster-id
    - <cluster ocid>
    command: oci
    env: []

Si vous voyez une réponse au format ci-dessus, aucune autre action n'est nécessaire.

Mise à niveau d'un fichier Kubeconfig de la version 1.0.0 vers la version 2.0.0

Pour mettre à niveau un fichier Kubeconfig de version 1.0.0, procédez comme suit :

  1. Dans le cas d'une installation locale de kubectl, vérifiez que l'interface de ligne de commande Oracle Cloud Infrastructure version 2.6.4 (ou ultérieure) est installée en saisissant ce qui suit :

    oci -version

    Si la version de l'interface de ligne de commande Oracle Cloud Infrastructure est antérieure à la version 2.6.4, mettez à niveau l'interface de ligne de commande vers une version ultérieure. Reportez-vous à Mise à niveau de l'interface de ligne de commande.

  2. Suivez les instructions appropriées pour configurer le fichier Kubeconfig à utiliser dans Cloud Shell ou localement (reportez-vous à Configuration de l'accès de Cloud Shell aux clusters ou à Configuration de l'accès local aux clusters). L'exécution de la commande oci ce cluster create-kubeconfig illustrée dans la boîte de dialogue Accéder à votre cluster met à niveau le fichier Kubeconfig de version 1.0.0 existant. Si vous modifiez le nom ou l'emplacement du fichier Kubeconfig, définissez la variable d'environnement KUBECONFIG de sorte qu'elle pointe vers les nouveaux nom et emplacement du fichier.

  3. Vérifiez que la version du fichier Kubeconfig est désormais 2.0.0 en procédant comme suit :
    1. Dans une fenêtre de terminal (la fenêtre Cloud Shell ou une fenêtre de terminal en local selon le cas), saisissez ce qui suit :

      kubectl config view
    2. Vérifiez que la réponse est au format suivant :

      user:
        exec:
          apiVersion: client.authentication.k8s.io/v1beta1
          args:
          - ce
          - cluster
          - generate-token
          - --cluster-id
          - <cluster ocid>
          command: oci
          env: []