Ativar clientes não SNI e HTTP

Neste tópico, explicamos como ativar clientes não SNI, clientes HTTP e uma combinação de ambos para uso com o Apigee híbrido.

Como configurar um cliente não SNI

Nesta seção, explicamos como ativar o suporte para clientes que não são SNI (Indicação do nome do servidor) na Apigee híbrida. Um cliente não SNI usa a porta 443 e é necessário se você quiser integrar instâncias de ambiente de execução híbrida com o Cloud Load Balancing do Google ou para clientes que não aceitam SNI.
  1. Crie uma definição de recurso personalizada (CRD, na sigla em inglês) do ApigeeRoute. Verifique se enableNonSniClient está definido como true:
    apiVersion: apigee.cloud.google.com/v1alpha1
    kind: ApigeeRoute
    metadata:
      name: ROUTE_NAME
      namespace: APIGEE_NAMESPACE
    spec:
      hostnames:
      - "*"
      ports:
      - number: 443
        protocol: HTTPS
        tls:
          credentialName: CREDENTIAL_NAME
          mode: SIMPLE
          #optional
          minProtocolVersion: TLS_AUTO
      selector:
        app: apigee-ingressgateway
      enableNonSniClient: true

    Em que:

    • ROUTE_NAME é o nome que você atribui ao recurso personalizado (CR).
    • CREDENTIAL_NAME é o nome de um secret do Kubernetes implantado no cluster que contém as credenciais TLS do seu host virtual. Para encontrar o nome da credencial, use o seguinte comando kubectl:
      kubectl -n APIGEE_NAMESPACE get ApigeeRoutes -o=yaml | grep credentialName
    • hostnames precisa ser definido como o caractere curinga "*".
  2. Abra o arquivo de substituição e faça a alteração descrita na próxima etapa.
  3. Para cada grupo de ambiente, adicione o nome do ApigeeRoute à propriedade additionalGateways. Exemplo:
    virtualhosts:
      - name: default
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        additionalGateways: ["ROUTE_NAME"]
  4. Salve o arquivo CRD. Exemplo: ApigeeRoute.yaml
  5. Aplique o CRD ao cluster:
    kubectl apply -f ApigeeRoute.yaml -n APIGEE_NAMESPACE
  6. Aplique a alteração a virtualhosts. Se você tiver definido a variável de ambiente $ENV_GROUP no shell, poderá usá-la nos seguintes comandos:
    helm upgrade $ENV_GROUP apigee-virtualhost/ \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      --set envgroup=$ENV_GROUP \
      -f OVERRIDES_FILE.yaml
    

Observações sobre uso

  • O que acontece se o cluster tiver mais de uma organização?

    Como a entrada está no nível do cluster para uma determinada porta (443) e só pode haver um par de chaves/certificados para o CRD do ApigeeRoute, todas as organizações precisam compartilhar o mesmo par de chaves/certificados.

  • O que acontece quando o cluster tem mais de um grupo de ambientes? Ele funcionará se os hosts virtuais compartilharem o mesmo par de chave/certificado?

    Todos os nomes de host em todos os grupos de ambiente precisam usar o mesmo par de chave/certificado.

  • Por que estamos criando um ApigeeRoute em vez do Gateway?

    O ApigeeRoutes pode ser validado pela Apigee. No entanto, o Gateway (CRD do Istio) não pode. Tecnicamente, até mesmo o Gateway pode funcionar, mas podemos evitar possíveis erros de configuração (por meio de um webhook de validação).

Ativar clientes HTTP

Nesta seção, explicamos o suporte aos clientes HTTP para uso com a Apigee híbrida.

  1. Crie uma definição de recurso personalizada (CRD, na sigla em inglês) do ApigeeRoute. Exemplo:
    apiVersion: apigee.cloud.google.com/v1alpha1
    kind: ApigeeRoute
    metadata:
      name: ROUTE_NAME
      namespace: APIGEE_NAMESPACE
    spec:
      hostnames:
      - "*"
      ports:
      - number: 80
        protocol: HTTP
      selector:
        app: istio-ingressgateway
      enableNonSniClient: true

    Em que:

    • ROUTE_NAME é o nome do CRD;
    • hostnames precisa ser definido como o caractere curinga "*".
  2. Abra o arquivo de substituição e faça a alteração descrita na próxima etapa.
  3. Para cada grupo de ambiente, adicione o nome do ApigeeRoute à propriedade additionalGateways. Exemplo:
    virtualhosts:
      - name: default
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        additionalGateways: ["ROUTE_NAME"]
  4. Salve o arquivo CRD. Exemplo: ApigeeRoute.yaml
  5. Aplique o CRD ao cluster:
    kubectl apply -f ApigeeRoute.yaml -n APIGEE_NAMESPACE
  6. Aplique a alteração a virtualhosts:
    helm upgrade $ENV_GROUP apigee-virtualhost/ \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      --set envgroup=$ENV_GROUP \
      -f OVERRIDES_FILE.yaml
    

Ativar o suporte para clientes não SNI e HTTP

Esta seção explica como ativar tanto clientes não SNI (porta 443) como HTTP (porta 80) para uso com a Apigee híbrida.

  1. Crie uma definição de recurso personalizada (CRD, na sigla em inglês) do ApigeeRoute. Exemplo:
    apiVersion: apigee.cloud.google.com/v1alpha1
    kind: ApigeeRoute
    metadata:
      name: ROUTE_NAME
      namespace: APIGEE_NAMESPACE
    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

    Em que:

    • ROUTE_NAME é o nome do CRD;
    • hostname precisa ser definido como o caractere curinga "*".
    • CREDENTIAL_NAME é o nome de um secret do Kubernetes implantado no cluster que contém as credenciais TLS do seu host virtual. Para encontrar o nome da credencial, use o seguinte comando kubectl:
      kubectl -n APIGEE_NAMESPACE get ApigeeRoutes -o=yaml | grep credentialName
  2. Abra o arquivo de substituição e faça a alteração descrita na próxima etapa.
  3. Para cada grupo de ambiente, adicione o nome do ApigeeRoute à propriedade additionalGateways. Exemplo:
    virtualhosts:
      - name: default
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        additionalGateways: ["ROUTE_NAME"]
  4. Salve o arquivo CRD. Exemplo: ApigeeRoute.yaml
  5. Aplique o CRD ao cluster:
    kubectl apply -f ApigeeRoute.yaml -n APIGEE_NAMESPACE
  6. Aplique a alteração a virtualhosts:
    helm upgrade $ENV_GROUP apigee-virtualhost/ \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      --set envgroup=$ENV_GROUP \
      -f OVERRIDES_FILE.yaml