Abilita client non SNI e HTTP

Questo argomento spiega come abilitare i client non SNI e HTTP, nonché una combinazione di entrambi per l'utilizzo con Apigee hybrid.

Come configurare un client non SNI

Questa sezione spiega come attivare il supporto per i client non SNI (Server Name Indication) in Apigee hybrid. Un client non SNI utilizza la porta 443 ed è necessario se vuoi integrare istanze di runtime ibride con Google Cloud Load Balancing o per client che non supportano SNI.
  1. Creare una definizione di risorsa personalizzata (CRD) ApigeeRoute. Assicurati che enableNonSniClient sia impostato su true:
    apiVersion: apigee.cloud.google.com/v1alpha1
    kind: ApigeeRoute
    metadata:
      name: route_name
      namespace: apigee
    spec:
      hostnames:
      - "*"
      ports:
      - number: 443
        protocol: HTTPS
        tls:
          credentialName: credential_name
          mode: SIMPLE
          #optional
          minProtocolVersion: TLS_AUTO
      selector:
        app: istio-ingressgateway
      enableNonSniClient: true
    

    Dove:

    • route_name è il nome che assegni alla CRD.
    • credential_name è il nome di un secret di Kubernetes di cui è stato eseguito il deployment nel cluster che contiene le credenziali TLS per il tuo host virtuale. Puoi trovare il nome della credenziale con il seguente comando kubectl:
      kubectl -n apigee get ApigeeRoutes -o=yaml | grep credentialName
    • hostnames deve essere impostato sul carattere jolly "*".
  2. Apri il file delle sostituzioni e apporta la modifica descritta nel passaggio successivo.
  3. Per ogni gruppo di ambienti, aggiungi il nome ApigeeRoute alla proprietà additionalGateways. Ad esempio:
    virtualhosts:
      - name: default
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        additionalGateways: ["route_name"]
  4. Salva il file CRD. Ad esempio: ApigeeRoute.yaml
  5. Applica il CRD al cluster:
    kubectl apply -f ApigeeRoute.yaml -n apigee
  6. Applica la modifica a virtualhosts:
    $APIGEECTL_HOME/apigeectl apply -f overrides.yaml --settings virtualhosts --env $ENVIRONMENT

Note sull'utilizzo

  • Cosa succede se il cluster ha più di un'organizzazione?

    Dato che il traffico in entrata è a livello di cluster per una determinata porta (443) e può esistere una sola coppia chiave/certificato per il CRD ApigeeRoute, tutte le organizzazioni devono condividere la stessa coppia chiave/certificato.

  • Cosa succede se il cluster ha più di un gruppo di ambienti. Funzionerà se gli host virtuali condividono la stessa coppia di chiavi/certi?

    Tutti i nomi host di tutti i gruppi di ambienti devono utilizzare la stessa coppia di chiavi/certi.

  • Perché stiamo creando un ApigeeRoute invece di un Gateway?

    ApigeeRoutes può essere convalidato da Apigee, ma non il Gateway (il CRD Istio). Tecnicamente, anche Gateway può funzionare, ma possiamo impedire potenziali errori di configurazione (mediante un webhook di convalida).

Abilita client HTTP

Questa sezione spiega il supporto per i client HTTP da utilizzare con Apigee hybrid.

  1. Creare una definizione di risorsa personalizzata (CRD) ApigeeRoute. Ad esempio:
    apiVersion: apigee.cloud.google.com/v1alpha1
    kind: ApigeeRoute
    metadata:
      name: route_name
      namespace: apigee
    spec:
      hostnames:
      - "*"
      ports:
      - number: 80
        protocol: HTTP
      selector:
        app: istio-ingressgateway
      enableNonSniClient: true

    Dove:

    • route_name è il nome che assegni alla CRD.
    • hostnames deve essere impostato sul carattere jolly "*".
  2. Apri il file delle sostituzioni e apporta la modifica descritta nel passaggio successivo.
  3. Per ogni gruppo di ambienti, aggiungi il nome ApigeeRoute alla proprietà additionalGateways. Ad esempio:
    virtualhosts:
      - name: default
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        additionalGateways: ["route_name"]
  4. Salva il file CRD. Ad esempio: ApigeeRoute.yaml
  5. Applica il CRD al cluster:
    kubectl apply -f ApigeeRoute.yaml -n apigee
  6. Applica la modifica a virtualhosts:
    $APIGEECTL_HOME/apigeectl apply -f overrides.yaml --settings virtualhosts --env $ENVIRONMENT

Attiva il supporto per client non SNI e HTTP

Questa sezione spiega come abilitare sia i client non SNI (porta 443) sia HTTP (porta 80) da utilizzare con Apigee hybrid.

  1. Creare una definizione di risorsa personalizzata (CRD) ApigeeRoute. Ad esempio:
    apiVersion: apigee.cloud.google.com/v1alpha1
    kind: ApigeeRoute
    metadata:
      name: route_name
      namespace: apigee
    spec:
      hostnames:
      - "*"
      ports:
      - number: 443
        protocol: HTTPS
        tls:
          credentialName: credential_name
          mode: SIMPLE
          #optional
          minProtocolVersion: TLS_AUTO
      - number: 80
        protocol: HTTP
      selector:
        app: istio-ingressgateway
      enableNonSniClient: true

    Dove:

    • route_name è il nome che assegni alla CRD.
    • hostname deve essere impostato sul carattere jolly "*".
    • credential_name è il nome di un secret di Kubernetes di cui è stato eseguito il deployment nel cluster che contiene le credenziali TLS per il tuo host virtuale. Puoi trovare il nome della credenziale con il seguente comando kubectl:
      kubectl -n apigee get ApigeeRoutes -o=yaml | grep credentialName
  2. Apri il file delle sostituzioni e apporta la modifica descritta nel passaggio successivo.
  3. Per ogni gruppo di ambienti, aggiungi il nome ApigeeRoute alla proprietà additionalGateways. Ad esempio:
    virtualhosts:
      - name: default
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        additionalGateways: ["route_name"]
  4. Salva il file CRD. Ad esempio: ApigeeRoute.yaml
  5. Applica il CRD al cluster:
    kubectl apply -f ApigeeRoute.yaml -n apigee
  6. Applica la modifica a virtualhosts:
    $APIGEECTL_HOME/apigeectl apply -f overrides.yaml --settings virtualhosts --env $ENVIRONMENT