Rechercher

19.6. Utilisation du mode manuel avec GCP Workload Identity

download PDF

Le mode manuel avec l'identité de charge de travail GCP est pris en charge pour Google Cloud Platform (GCP).

Note

Cette stratégie d'informations d'identification n'est prise en charge que pour les nouveaux clusters OpenShift Container Platform et doit être configurée lors de l'installation. Vous ne pouvez pas reconfigurer un cluster existant qui utilise une stratégie d'informations d'identification différente pour utiliser cette fonctionnalité.

En mode manuel avec GCP Workload Identity, les composants individuels du cluster OpenShift Container Platform peuvent se faire passer pour des comptes de service IAM à l'aide d'informations d'identification à court terme et à privilèges limités.

Les demandes d'informations d'identification nouvelles et actualisées sont automatisées en utilisant un fournisseur d'identité OpenID Connect (OIDC) configuré de manière appropriée, associé à des comptes de service IAM. OpenShift Container Platform signe des jetons de compte de service qui sont approuvés par GCP, et peuvent être projetés dans un pod et utilisés pour l'authentification. Par défaut, les jetons sont actualisés au bout d'une heure.

L'utilisation du mode manuel avec GCP Workload Identity modifie le contenu des informations d'identification GCP fournies aux composants individuels d'OpenShift Container Platform.

Format du secret des BPC

apiVersion: v1
kind: Secret
metadata:
  namespace: <target_namespace> 1
  name: <target_secret_name> 2
data:
  service_account.json: <service_account> 3

1
L'espace de noms du composant.
2
Le nom du composant secret.
3
Le compte de service encodé en Base64.

Contenu du fichier service_account.json encodé en Base64 à l'aide d'informations d'identification à long terme

{
   "type": "service_account", 1
   "project_id": "<project_id>",
   "private_key_id": "<private_key_id>",
   "private_key": "<private_key>", 2
   "client_email": "<client_email_address>",
   "client_id": "<client_id>",
   "auth_uri": "https://accounts.google.com/o/oauth2/auth",
   "token_uri": "https://oauth2.googleapis.com/token",
   "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
   "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/<client_email_address>"
}

1
Le type de certificat est service_account.
2
La clé RSA privée qui est utilisée pour s'authentifier auprès du GCP. Cette clé doit être conservée en toute sécurité et ne fait pas l'objet d'une rotation.

Contenu du fichier service_account.json encodé en Base64 à l'aide de l'identité de la charge de travail GCP

{
   "type": "external_account", 1
   "audience": "//iam.googleapis.com/projects/123456789/locations/global/workloadIdentityPools/test-pool/providers/test-provider", 2
   "subject_token_type": "urn:ietf:params:oauth:token-type:jwt",
   "token_url": "https://sts.googleapis.com/v1/token",
   "service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/<client_email_address>:generateAccessToken", 3
   "credential_source": {
      "file": "<path_to_token>", 4
      "format": {
         "type": "text"
      }
   }
}

1
Le type de certificat est external_account.
2
Le public cible est le fournisseur d'identité de charge de travail GCP.
3
L'URL de la ressource du compte de service qui peut être associé à ces informations d'identification.
4
Le chemin d'accès au jeton du compte de service dans le pod. Par convention, il s'agit de /var/run/secrets/openshift/serviceaccount/token pour les composants de OpenShift Container Platform.

19.6.1. Installation d'un cluster OpenShift Container Platform configuré en mode manuel avec GCP Workload Identity

Pour installer un cluster configuré pour utiliser le Cloud Credential Operator (CCO) en mode manuel avec GCP Workload Identity :

Note

Comme le cluster fonctionne en mode manuel lors de l'utilisation de GCP Workload Identity, il n'est pas en mesure de créer de nouvelles informations d'identification pour les composants avec les autorisations dont ils ont besoin. Lors de la mise à niveau vers une version mineure différente d'OpenShift Container Platform, il y a souvent de nouvelles exigences en matière d'autorisations GCP. Avant de mettre à niveau un cluster qui utilise GCP Workload Identity, l'administrateur du cluster doit s'assurer manuellement que les autorisations GCP sont suffisantes pour les composants existants et disponibles pour tous les nouveaux composants.

19.6.1.1. Configuration de l'utilitaire Cloud Credential Operator

Pour créer et gérer des informations d'identification du nuage depuis l'extérieur du cluster lorsque le Cloud Credential Operator (CCO) fonctionne en mode manuel, extrayez et préparez le binaire de l'utilitaire CCO (ccoctl).

Note

L'utilitaire ccoctl est un binaire Linux qui doit être exécuté dans un environnement Linux.

Conditions préalables

  • Vous avez accès à un compte OpenShift Container Platform avec un accès administrateur de cluster.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Obtenez l'image de la version d'OpenShift Container Platform en exécutant la commande suivante :

    $ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
  2. Obtenez l'image du conteneur CCO à partir de l'image de la version d'OpenShift Container Platform en exécutant la commande suivante :

    $ CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret)
    Note

    Veillez à ce que l'architecture de $RELEASE_IMAGE corresponde à l'architecture de l'environnement dans lequel vous utiliserez l'outil ccoctl.

  3. Extrayez le binaire ccoctl de l'image du conteneur CCO dans l'image de la version d'OpenShift Container Platform en exécutant la commande suivante :

    $ oc image extract $CCO_IMAGE --file="/usr/bin/ccoctl" -a ~/.pull-secret
  4. Modifiez les autorisations pour rendre ccoctl exécutable en exécutant la commande suivante :

    $ chmod 775 ccoctl

Vérification

  • Pour vérifier que ccoctl est prêt à être utilisé, affichez le fichier d'aide en exécutant la commande suivante :

    $ ccoctl --help

    Sortie de ccoctl --help:

    OpenShift credentials provisioning tool
    
    Usage:
      ccoctl [command]
    
    Available Commands:
      alibabacloud Manage credentials objects for alibaba cloud
      aws          Manage credentials objects for AWS cloud
      gcp          Manage credentials objects for Google cloud
      help         Help about any command
      ibmcloud     Manage credentials objects for IBM Cloud
      nutanix      Manage credentials objects for Nutanix
    
    Flags:
      -h, --help   help for ccoctl
    
    Use "ccoctl [command] --help" for more information about a command.

19.6.1.2. Création de ressources GCP avec l'utilitaire Cloud Credential Operator

Vous pouvez utiliser la commande ccoctl gcp create-all pour automatiser la création de ressources GCP.

Note

Par défaut, ccoctl crée les objets dans le répertoire dans lequel les commandes sont exécutées. Pour créer les objets dans un autre répertoire, utilisez l'option --output-dir. Cette procédure utilise <path_to_ccoctl_output_dir> pour faire référence à ce répertoire.

Conditions préalables

Vous devez avoir :

  • Extraction et préparation du binaire ccoctl.

Procédure

  1. Extrayez la liste des objets CredentialsRequest de l'image de la version d'OpenShift Container Platform en exécutant la commande suivante :

    $ oc adm release extract \
    --credentials-requests \
    --cloud=gcp \
    --to=<path_to_directory_with_list_of_credentials_requests>/credrequests \ 1
    quay.io/<path_to>/ocp-release:<version>
    1
    credrequests est le répertoire dans lequel la liste des objets CredentialsRequest est stockée. Cette commande crée le répertoire s'il n'existe pas.
    Note

    L'exécution de cette commande peut prendre quelques instants.

  2. Si votre cluster utilise les capacités du cluster pour désactiver un ou plusieurs composants optionnels, supprimez les ressources personnalisées CredentialsRequest pour tous les composants désactivés.

    Exemple credrequests contenu du répertoire pour OpenShift Container Platform 4.12 sur GCP

    0000_26_cloud-controller-manager-operator_16_credentialsrequest-gcp.yaml 1
    0000_30_machine-api-operator_00_credentials-request.yaml 2
    0000_50_cloud-credential-operator_05-gcp-ro-credentialsrequest.yaml 3
    0000_50_cluster-image-registry-operator_01-registry-credentials-request-gcs.yaml 4
    0000_50_cluster-ingress-operator_00-ingress-credentials-request.yaml 5
    0000_50_cluster-network-operator_02-cncc-credentials.yaml 6
    0000_50_cluster-storage-operator_03_credentials_request_gcp.yaml 7

    1
    Le contrôleur de nuages Manager Operator CR est requis.
    2
    Le certificat de conducteur de machine API est exigé.
    3
    Le certificat d'opérateur de titres de créance en nuage est requis.
    4
    Le certificat d'opérateur de registre d'images est requis.
    5
    Le CR de l'opérateur d'entrée est requis.
    6
    Le certificat d'opérateur de réseau est requis.
    7
    Le Storage Operator CR est un composant optionnel et peut être désactivé dans votre cluster.
  3. Utilisez l'outil ccoctl pour traiter tous les objets CredentialsRequest dans le répertoire credrequests:

    $ ccoctl gcp create-all \
    --name=<name> \
    --region=<gcp_region> \
    --project=<gcp_project_id> \
    --credentials-requests-dir=<path_to_directory_with_list_of_credentials_requests>/credrequests

    où :

    • <name> est le nom défini par l'utilisateur pour toutes les ressources GCP créées et utilisées pour le suivi.
    • <gcp_region> est la région du GCP dans laquelle les ressources en nuage seront créées.
    • <gcp_project_id> est l'identifiant du projet GCP dans lequel les ressources en nuage seront créées.
    • <path_to_directory_with_list_of_credentials_requests>/credrequests est le répertoire contenant les fichiers des manifestes CredentialsRequest pour créer les comptes de service GCP.
    Note

    Si votre cluster utilise des fonctionnalités d'aperçu technologique activées par l'ensemble de fonctionnalités TechPreviewNoUpgrade, vous devez inclure le paramètre --enable-tech-preview.

Vérification

  • Pour vérifier que les secrets d'OpenShift Container Platform sont créés, listez les fichiers dans le répertoire <path_to_ccoctl_output_dir>/manifests:

    $ ls <path_to_ccoctl_output_dir>/manifests

Vous pouvez vérifier que les comptes de service IAM sont créés en interrogeant GCP. Pour plus d'informations, reportez-vous à la documentation GCP sur l'établissement de la liste des comptes de service IAM.

19.6.1.3. Exécution du programme d'installation

Conditions préalables

  • Configurez un compte auprès de la plateforme cloud qui héberge votre cluster.
  • Obtenir l'image de la version d'OpenShift Container Platform.

Procédure

  1. Allez dans le répertoire qui contient le programme d'installation et créez le fichier install-config.yaml:

    openshift-install create install-config --dir <installation_directory>

    <installation_directory> est le répertoire dans lequel le programme d'installation crée les fichiers.

  2. Modifiez le fichier de configuration install-config.yaml de manière à ce qu'il contienne le paramètre credentialsMode fixé à Manual.

    Exemple install-config.yaml fichier de configuration

    apiVersion: v1
    baseDomain: cluster1.example.com
    credentialsMode: Manual 1
    compute:
    - architecture: amd64
      hyperthreading: Enabled

    1
    Cette ligne est ajoutée pour fixer le paramètre credentialsMode à Manual.
  3. Créez les manifestes d'installation requis pour OpenShift Container Platform :

    $ openshift-install create manifests
  4. Copiez les manifestes générés par ccoctl dans le répertoire manifests créé par le programme d'installation :

    $ cp /<path_to_ccoctl_output_dir>/manifests/* ./manifests/
  5. Copiez la clé privée générée par ccoctl dans le répertoire tls dans le répertoire d'installation :

    $ cp -a /<path_to_ccoctl_output_dir>/tls .
  6. Exécutez le programme d'installation d'OpenShift Container Platform :

    $ ./openshift-install create cluster

19.6.1.4. Vérification de l'installation

  1. Connectez-vous au cluster OpenShift Container Platform.
  2. Vérifiez que le cluster n'a pas d'identifiants root:

    $ oc get secrets -n kube-system gcp-credentials

    Le résultat devrait ressembler à ce qui suit :

    Error from server (NotFound): secrets "gcp-credentials" not found
  3. Vérifiez que les composants utilisent les comptes de service spécifiés dans les manifestes secrets, au lieu d'utiliser les informations d'identification créées par l'OCC :

    Exemple de commande avec l'opérateur de registre d'images

    $ oc get secrets -n openshift-image-registry installer-cloud-credentials -o json | jq -r '.data."service_account.json"' | base64 -d

    Le résultat doit indiquer le rôle et le jeton d'identité Web utilisés par le composant et ressembler à ce qui suit :

    Exemple de sortie avec l'opérateur de registre d'images

    {
       "type": "external_account", 1
       "audience": "//iam.googleapis.com/projects/123456789/locations/global/workloadIdentityPools/test-pool/providers/test-provider",
       "subject_token_type": "urn:ietf:params:oauth:token-type:jwt",
       "token_url": "https://sts.googleapis.com/v1/token",
       "service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/<client-email-address>:generateAccessToken", 2
       "credential_source": {
          "file": "/var/run/secrets/openshift/serviceaccount/token",
          "format": {
             "type": "text"
          }
       }
    }

    1
    Le type de certificat est external_account.
    2
    L'URL de la ressource du compte de service utilisé par l'opérateur du registre des images.

19.6.2. Ressources complémentaires

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.