Étape 6 : Configurer le cluster

Spécifier des remplacements de configuration

Le programme d'installation d'Apigee hybrid utilise les valeurs par défaut pour de nombreux paramètres. Toutefois, certains paramètres n'ont pas de valeurs par défaut. Vous devez fournir des valeurs pour ces paramètres, comme expliqué ci-dessous.

Avant de commencer

Nous vous recommandons de consulter les scénarios suivants pour déterminer si vous souhaitez configurer votre cluster pour eux. Ces configurations sont facultatives.

Configurer le cluster

Par convention, les remplacements de configuration sont écrits dans un fichier nommé overrides.yaml dans votre répertoire $HYBRID_FILES/overrides.

  1. Créez un fichier nommé overrides.yaml dans votre répertoire $HYBRID_FILES/overrides. Exemple :
    vi $HYBRID_FILES/overrides/overrides.yaml

    Le fichier overrides.yaml fournit la configuration pour votre installation Apigee hybrid unique. Le fichier de remplacement utilisé à cette étape fournit une configuration de base pour une installation d'exécution Apigee hybrid peu encombrante, adaptée pour une première installation.

  2. Dans overrides.yaml, ajoutez les valeurs de propriété requises, indiquées ci-dessous. Vous trouverez ci-dessous une description détaillée de chaque propriété.

    Si vous installez Apigee hybrid sur GKE et que vous prévoyez d'utiliser Workload Identity pour authentifier les composants hybrides, sélectionnez l'onglet GKE – Workload Identity pour configurer votre fichier overrides.yaml.

    Pour toutes les autres installations, sélectionnez l'onglet Hors production pour les environnements hors production ou l'onglet Prod pour les environnements de production, en fonction de votre choix à l'étape 4 : Créer des comptes de service et des identifiants.

    Pour les installations dans des environnements de production, consultez les exigences de stockage de la base de données Cassandra dans la section Configurer Cassandra pour la production.

    GKE – Workload Identity

    Assurez-vous que le fichier overrides.yaml possède la structure et la syntaxe suivantes. Les valeurs de red, bold italics sont des valeurs de propriété que vous devez fournir. Elles sont décrites dans le tableau ci-dessous.

    Si vous installez Apigee hybrid sur GKE, vous pouvez vous authentifier et envoyer des requêtes aux API Google, à savoir Workload Identity. Pour en savoir plus sur Workload Identity, consultez les sections suivantes :

    Pour utiliser Workload Identity avec Apigee hybrid sur GKE, utilisez ce modèle, puis suivez les étapes décrites dans la section Étape 8 : Installer un environnement d'exécution hybride pour créer les comptes de service Kubernetes et les associer aux comptes de service Google que vous avez créés lors de la section Étape 4 : Créer des comptes de service et des identifiants.

    gcp:
      region: ANALYTICS_REGION
      projectID: GCP_PROJECT_ID
      workloadIdentityEnabled: true
    
    k8sCluster:
      name: CLUSTER_NAME
      region: CLUSTER_LOCATION # Must be the closest Google Cloud region to your cluster.
    org: ORG_NAME
    
    instanceID: "UNIQUE_INSTANCE_IDENTIFIER"
      
    ao:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-operators"
        tag: "1.11.2-hotfix.2" # Required for Apigee hybrid v1.11.2
    
    runtime:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-runtime"
        tag: "1.11.2-hotfix.2" # Required for Apigee hybrid v1.11.2 
    
    cassandra:
      hostNetwork: false
        # false for all GKE installations.
        # See Multi-region deployment: Prerequisites
      replicaCount: 3
        # Use 1 for demo installations and multiples of 3 for production.
        # See Configure Cassandra for production for guidelines.
      backup:
        enabled: true
        # Set to true for initial installation.
        # This triggers apigeectl to create the apigee-cassandra-backup Kubernetes service account.
        # See Cassandra backup overview for instructions on using cassandra.backup.
    
    virtualhosts:
    - name: ENVIRONMENT_GROUP_NAME
      selector:
        app: apigee-ingressgateway
        ingress_name: INGRESS_NAME
      sslCertPath: ./certs/CERT_NAME.pem
      sslKeyPath: ./certs/KEY_NAME.key
    
    ingressGateways:
    - name: INGRESS_NAME # maximum 17 characters.
      replicaCountMin: 2
      replicaCountMax: 10
      svcAnnotations:  # optional. If you are on AKS, see Known issue #260772383
        SVC_ANNOTATIONS_KEY: SVC_ANNOTATIONS_VALUE
      svcLoadBalancerIP: SVC_LOAD_BALANCER_IP  # optional
    
    envs:
    - name: ENVIRONMENT_NAME
    
    logger:
      enabled: false # Set to false for all GKE installations.
    
    

    Hors production

    Assurez-vous que le fichier overrides.yaml possède la structure et la syntaxe suivantes. Les valeurs de red, bold italics sont des valeurs de propriété que vous devez fournir. Elles sont décrites dans le tableau ci-dessous.

    Il existe des différences entre les différentes plates-formes pour la région du projet Google Cloud et la région du cluster Kubernetes. Choisissez la plate-forme sur laquelle vous installez Apigee hybrid.

    gcp:
      region: ANALYTICS_REGION
      projectID: GCP_PROJECT_ID
    
    k8sCluster:
      name: CLUSTER_NAME
      region: CLUSTER_LOCATION # Must be the closest Google Cloud region to your cluster.
    org: ORG_NAME
    
    instanceID: "UNIQUE_INSTANCE_IDENTIFIER"
      
    ao:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-operators"
        tag: "1.11.2-hotfix.2" # Required for Apigee hybrid v1.11.2
    
    runtime:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-runtime"
        tag: "1.11.2-hotfix.2" # Required for Apigee hybrid v1.11.2 
    
    cassandra:
      replicaCount: 1
        # Use 1 for non-prod or "demo" installations and multiples of 3 for production.
        # See Configure Cassandra for production for guidelines.
      hostNetwork: false
        # Set to false for single region installations and multi-region installations
        # with connectivity between pods in different clusters, for example GKE installations.
        # Set to true  for multi-region installations with no communication between
        # pods in different clusters, for example GKE On-prem, GKE on AWS, Anthos on bare metal,
        # AKS, EKS, and OpenShift installations.
        # See Multi-region deployment: Prerequisites
    
    virtualhosts:
    - name: ENVIRONMENT_GROUP_NAME
      selector:
        app: apigee-ingressgateway
        ingress_name: INGRESS_NAME
      sslCertPath: ./certs/CERT_NAME.pem
      sslKeyPath: ./certs/KEY_NAME.key
    
    ingressGateways:
    - name: INGRESS_NAME # maximum 17 characters.
      replicaCountMin: 2
      replicaCountMax: 10
      svcAnnotations:  # optional. If you are on AKS, see Known issue #260772383
        SVC_ANNOTATIONS_KEY: SVC_ANNOTATIONS_VALUE
      svcLoadBalancerIP: SVC_LOAD_BALANCER_IP  # optional
    
    envs:
    - name: ENVIRONMENT_NAME
      serviceAccountPaths:
        synchronizer: NON_PROD_SERVICE_ACCOUNT_FILEPATH
          # For example: "./service-accounts/GCP_PROJECT_ID-apigee-non-prod.json"
        udca: NON_PROD_SERVICE_ACCOUNT_FILEPATH
        runtime: NON_PROD_SERVICE_ACCOUNT_FILEPATH
    
    
    mart:
      serviceAccountPath: NON_PROD_SERVICE_ACCOUNT_FILEPATH
    
    connectAgent:
      serviceAccountPath: NON_PROD_SERVICE_ACCOUNT_FILEPATH
    
    metrics:
      serviceAccountPath: NON_PROD_SERVICE_ACCOUNT_FILEPATH
    
    udca:
      serviceAccountPath: NON_PROD_SERVICE_ACCOUNT_FILEPATH
    
    watcher:
      serviceAccountPath: NON_PROD_SERVICE_ACCOUNT_FILEPATH
    
    logger:
      enabled: false
            # Set to false to disable logger for GKE installations.
            # Set to true for all platforms other than GKE.
            # See apigee-logger in Service accounts and roles used by hybrid components.
      serviceAccountPath: NON_PROD_SERVICE_ACCOUNT_FILEPATH
    
    

    Prod

    Assurez-vous que le fichier overrides.yaml possède la structure et la syntaxe suivantes. Les valeurs de red, bold italics sont des valeurs de propriété que vous devez fournir. Elles sont décrites dans le tableau ci-dessous.

    Il existe des différences entre les différentes plates-formes pour la région du projet Google Cloud et la région du cluster Kubernetes. Choisissez la plate-forme sur laquelle vous installez Apigee hybrid.

    gcp:
      region: ANALYTICS_REGION
      projectID: GCP_PROJECT_ID
    
    k8sCluster:
      name: CLUSTER_NAME
      region: CLUSTER_LOCATION # Must be the closest Google Cloud region to your cluster.
    org: ORG_NAME
    
    instanceID: "UNIQUE_INSTANCE_IDENTIFIER"
      
    ao:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-operators"
        tag: "1.11.2-hotfix.2" # Required for Apigee hybrid v1.11.2
    
    runtime:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-runtime"
        tag: "1.11.2-hotfix.2" # Required for Apigee hybrid v1.11.2 
    
    cassandra:
      hostNetwork: false
        # Set to false for single region installations and multi-region installations
        # with connectivity between pods in different clusters, for example GKE installations.
        # Set to true  for multi-region installations with no communication between
        # pods in different clusters, for example GKE On-prem, GKE on AWS, Anthos on bare metal,
        # AKS, EKS, and OpenShift installations.
        # See Multi-region deployment: Prerequisites
      replicaCount: 3
        # Use multiples of 3 for production.
        # See Configure Cassandra for production for guidelines.
      storage:
        capacity: 500Gi
      resources:
        requests:
          cpu: 7
          memory: 15Gi
      maxHeapSize: 8192M
      heapNewSize: 1200M
        # Minimum storage requirements for a production environment.
        # See Configure Cassandra for production.
    
    virtualhosts:
    - name: ENVIRONMENT_GROUP_NAME
      selector:
        app: apigee-ingressgateway
        ingress_name: INGRESS_NAME
      sslCertPath: ./certs/CERT_NAME.pem
      sslKeyPath: ./certs/KEY_NAME.key
    
    ingressGateways:
    - name: INGRESS_NAME # maximum 17 characters.
      replicaCountMin: 2
      replicaCountMax: 10
      svcAnnotations:  # optional. If you are on AKS, see Known issue #260772383
        SVC_ANNOTATIONS_KEY: SVC_ANNOTATIONS_VALUE
    
    envs:
    - name: ENVIRONMENT_NAME
      serviceAccountPaths:
        synchronizer: SYNCHRONIZER_SERVICE_ACCOUNT_FILEPATH
          # For example: "./service-accounts/GCP_PROJECT_ID-apigee-synchronizer.json"
        udca: UDCA_SERVICE_ACCOUNT_FILEPATH
          # For example: "./service-accounts/GCP_PROJECT_ID-apigee-udca.json"
        runtime: RUNTIME_SERVICE_ACCOUNT_FILEPATH
          # For example: "./service-accounts/GCP_PROJECT_ID-apigee-runtime.json"
    
    mart:
      serviceAccountPath: MART_SERVICE_ACCOUNT_FILEPATH
            # For example: "./service-accounts/GCP_PROJECT_ID-apigee-mart.json"
    
    connectAgent:
      serviceAccountPath: MART_SERVICE_ACCOUNT_FILEPATH
            # Use the same service account for mart and connectAgent
    
    metrics:
      serviceAccountPath: METRICS_SERVICE_ACCOUNT_FILEPATH
            # For example: "./service-accounts/GCP_PROJECT_ID-apigee-metrics.json"
    
    udca:
      serviceAccountPath: UDCA_SERVICE_ACCOUNT_FILEPATH
            # For example: "./service-accounts/GCP_PROJECT_ID-apigee-udca.json"
    
    watcher:
      serviceAccountPath: WATCHER_SERVICE_ACCOUNT_FILEPATH
            # For example: "./service-accounts/GCP_PROJECT_ID-apigee-watcher.json"
    
    logger:
      enabled: false
            # Set to false to disable logger for GKE installations.
            # Set to true for all platforms other than GKE.
            # See apigee-logger in Service accounts and roles used by hybrid components.
      serviceAccountPath: LOGGER_SERVICE_ACCOUNT_FILEPATH
            # For example: "./service-accounts/GCP_PROJECT_ID-apigee-logger.json"
    

    Exemple

    L'exemple suivant montre un fichier de remplacement terminé avec des exemples de valeurs de propriété ajoutées :

    gcp:
      region: us-central1
      projectID: hybrid-example
    
    k8sCluster:
      name: apigee-hybrid
      region: us-central1
    
    org: hybrid-example
    
    instanceID: "my_hybrid_example"
      
    ao:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-operators"
        tag: "1.11.2-hotfix.2" # Required for Apigee hybrid v1.11.2
    
    runtime:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-runtime"
        tag: "1.11.2-hotfix.2" # Required for Apigee hybrid v1.11.2 
    
    cassandra:
      hostNetwork: false
      replicaCount: 3
    
    virtualhosts:
    - name: example-env-group
      selector:
        app: apigee-ingressgateway
        ingress_name: my-ingress-1
      sslCertPath: ./certs/keystore.pem
      sslKeyPath: ./certs/keystore.key
    
    ingressGateways:
    - name: my-ingress-1
      replicaCountMin: 2
      replicaCountMax: 10
    
    envs:
    - name: test
      serviceAccountPaths:
        synchronizer: ./service-accounts/my-hybrid-project-apigee-non-prod.json
          # for production environments, my-hybrid-project-apigee-synchronizer.json
        udca: ./service-accounts/my-hybrid-project-apigee-non-prod.json
          # for production environments, my-hybrid-project-apigee-udca.json
        runtime: ./service-accounts/my-hybrid-project-apigee-non-prod.json
          # for production environments, my-hybrid-project-apigee-runtime.json
    
    mart:
      serviceAccountPath: ./service-accounts/my-hybrid-project-apigee-non-prod.json
        # for production environments, my-hybrid-project-apigee-mart.json
    
    connectAgent:
      serviceAccountPath: ./service-accounts/my-hybrid-project-apigee-non-prod.json
        # for production environments, example-hybrid-apigee-mart.json
    
    metrics:
      serviceAccountPath: ./service-accounts/my-hybrid-project-apigee-non-prod.json
        # for production environments, my-hybrid-project-apigee-metrics.json
    
    udca:
      serviceAccountPath: ./service-accounts/my-hybrid-project-apigee-non-prod.json
        # for production environments, my-hybrid-project-apigee-udca.json
    
    watcher:
      serviceAccountPath: ./service-accounts/my-hybrid-project-apigee-non-prod.json
        # for production environments, my-hybrid-project-apigee-watcher.json
    
    logger:
      enabled: false # Set to "false" for GKE. Set to "true" for all other Kubernetes platforms.
      serviceAccountPath: ./service-accounts/my-hybrid-project-apigee-non-prod.json
        # for production environments, LOGGER_SERVICE_ACCOUNT_NAME.json
    
  3. Lorsque vous avez terminé, enregistrez le fichier.

Le tableau suivant décrit chacune des valeurs de propriété que vous devez fournir dans le fichier de remplacement. Pour en savoir plus, consultez la documentation de référence sur les propriétés de configuration.

Variable Description
ANALYTICS_REGION Dans GKE, vous devez définir cette valeur sur la même région que celle où le cluster est exécuté. Sur toutes les autres plates-formes, sélectionnez la région d'analyse la plus proche de votre cluster compatible avec Analytics (consultez le tableau de la Partie 1, Étape 2 : Créer une organisation).

Il s'agit de la valeur que vous avez précédemment attribuée à la variable d'environnement ANALYTICS_REGION.

GCP_PROJECT_ID Identifie le projet Google Cloud dans lequel apigee-logger et apigee-metrics envoient leurs données. Il s'agit de la valeur attribuée à la variable d'environnement PROJECT_ID.
CLUSTER_NAME Le nom de votre cluster Kubernetes. Il s'agit de la valeur attribuée à la variable d'environnement CLUSTER_NAME.
CLUSTER_LOCATION La région dans laquelle le cluster est exécuté. Il s'agit de la région dans laquelle vous avez créé le cluster à l'étape 1 : Créer un cluster.

Il s'agit de la valeur que vous avez précédemment attribuée à la variable d'environnement CLUSTER_LOCATION.

ORG_NAME ID de votre organisation Apigee hybrid. Il s'agit de la valeur attribuée à la variable d'environnement ORG_NAME.
UNIQUE_INSTANCE_IDENTIFIER

Une chaîne unique pour identifier cette instance. Vous pouvez utiliser n'importe quelle combinaison de lettres et de chiffres (jusqu'à 63 caractères).

Vous pouvez créer plusieurs organisations dans le même cluster, mais le instanceID doit être identique pour toutes les organisations du même cluster Kubernetes.

ENVIRONMENT_GROUP_NAME Nom du groupe d'environnements auquel vos environnements sont attribués. Il s'agit du groupe que vous avez créé lors de la configuration du projet et de l'organisation - Étape 3 : Créer un groupe d'environnements. Il s'agit de la valeur attribuée à la variable d'environnement ENV_GROUP.
CERT_NAME
KEY_NAME
Saisissez le nom de la clé TLS autosignée et des fichiers de certificat que vous avez générés précédemment à l'Étape 5 : Créer des certificats TLS. Ces fichiers doivent se trouver dans le répertoire base_directory/hybrid-files/certs. Exemple :
sslCertPath: ./certs/keystore.pem
sslKeyPath: ./certs/keystore.key
INGRESS_NAME Nom de la passerelle d'entrée Apigee de votre déploiement. Il peut s'agir de n'importe quel nom qui répond aux exigences suivantes :
  • ne pas comporter plus de 17 caractères ;
  • ne contenir que des caractères alphanumériques en minuscules et des caractères '-' ou '.' ;
  • commencer par un caractère alphanumérique ;
  • se terminer par un caractère alphanumérique.

Consultez la section ingressGateways[].name dans la documentation de référence sur les propriétés de configuration.

SVC_ANNOTATIONS_KEY : SVC_ANNOTATIONS_VALUE (Facultatif) Il s'agit d'une paire clé-valeur qui fournit des annotations pour votre service d'entrée par défaut. Les annotations sont utilisées par votre plate-forme cloud pour vous aider à configurer votre installation hybride, par exemple pour définir le type d'équilibreur de charge sur interne ou externe.

Les annotations varient selon les plates-formes. Reportez-vous à la documentation de votre plate-forme pour connaître les annotations requises et celles suggérées.

Mettez en commentaire ou supprimez cette section si vous ne l'utilisez pas.

SVC_LOAD_BALANCER_IP (Facultatif) Une adresse IP que vous avez réservée pour votre équilibreur de charge. Sur les plates-formes compatibles avec la spécification de l'adresse IP de l'équilibreur de charge, celui-ci est créé avec cette adresse IP. Sur les plates-formes qui ne permettent pas de spécifier l'adresse IP de l'équilibreur de charge, cette propriété est ignorée.

Mettez en commentaire ou supprimez cette section si vous ne l'utilisez pas.

ENVIRONMENT_NAME Utilisez le même nom que celui que vous avez utilisé lors de la création d'un environnement dans l'interface utilisateur, comme expliqué à l'étape 3 "Créer un groupe d'environnements" de la configuration du projet et de l'organisation.
*_SERVICE_ACCOUNT_FILEPATH Chemin d'accès et compte de nom de fichier des fichiers JSON du compte de service dans votre répertoire service-accounts/. Les noms doivent inclure le chemin d'accès au fichier de compte de service. Il peut s'agir d'un chemin complet ou du chemin relatif permettant d'accéder à votre répertoire hybrid-files/. Si vous incluez un chemin d'accès relatif, vous devez appeler apigeectl, la commande permettant d'appliquer cette configuration, à partir de votre répertoire hybrid-files/.

Pour les environnements hors production, le nom du compte de service unique, GCP_PROJECT_ID-non-prod.json par défaut.

Pour les environnements de production, le nom du fichier de clé de compte de service que vous avez généré à l'aide de l'outil create-service-account à l'Étape 4 : Créer des comptes de service et des identifiants de la configuration de l'environnement d'exécution hybride.

Vous pouvez consulter la liste des fichiers de compte de service dans votre répertoire service-accounts/.

Les noms par défaut des comptes de service de l'environnement de production sont les suivants :

  • Cassandra : GCP_PROJECT_ID-apigee-cassandra.json
  • Logger : GCP_PROJECT_ID-apigee-logger.json
  • MART : GCP_PROJECT_ID-apigee-mart.json
  • Connect agent : GCP_PROJECT_ID-apigee-mart.json
  • Metrics : GCP_PROJECT_ID-apigee-metrics.json
  • Apigee runtime : GCP_PROJECT_ID-
  • Synchronisateur : GCP_PROJECT_ID-apigee-synchronizer.json
  • UDCA : GCP_PROJECT_ID-apigee-udca.json
  • Watcher : GCP_PROJECT_ID-apigee-watcher.json

Résumé

Le fichier de configuration indique à Kubernetes comment déployer les composants hybrides sur un cluster. Vous allez ensuite activer l'accès du synchronisateur pour que les plans d'exécution et de gestion Apigee puissent communiquer.

1 2 3 4 5 6 (SUITE) Étape 7 : Activer l'accès au synchronisateur 8 9 10