Versão1.11

Como ativar recursos opcionais no plano de controle no cluster

Nesta página, descrevemos como ativar recursos opcionais em um plano de controle no cluster. Para informações sobre o plano de controle gerenciado pelo Google, consulte Como ativar recursos opcionais no Anthos Service Mesh gerenciado

Quando você instala o Anthos Service Mesh, os recursos que são ativados por padrão diferem por plataforma. Para ativar os recursos opcionais, inclua um arquivo de sobreposição ao instalar (ou fazer upgrade) do Anthos Service Mesh. Um arquivo de sobreposição é um arquivo YAML que contém um recurso personalizado (CR, na sigla em inglês) IstioOperator usado para configurar o plano de controle. É possível substituir a configuração padrão e ativar um recurso opcional ou desativar um recurso padrão em um arquivo de sobreposição. Especifique um recurso por arquivo de sobreposição. É possível usar mais camadas, e cada arquivo de sobreposição substitui a configuração nas camadas anteriores.

.

Sobre os arquivos de sobreposição

Os arquivos de sobreposição nesta página estão no pacote anthos-service-mesh (em inglês) no GitHub. Esses arquivos contêm personalizações comuns da configuração padrão. É possível usar esses arquivos como estão ou fazer outras alterações neles conforme necessário.

  • Ao instalar o Anthos Service Mesh usando o comando istioctl install, especifique um ou mais arquivos de sobreposição com a opção de linha de comando -f. Mesmo que seja possível modificar a configuração especificando parâmetros de configuração na linha de comando usando a opção --set para istioctl install, recomendamos o uso de um arquivo de sobreposição para armazenar o arquivo em seu sistema de controle de versões junto com seus outros arquivos de recursos personalizados. É necessário manter esses arquivos para fazer upgrade do Anthos Service Mesh. Assim, o plano de controle terá a mesma configuração após o upgrade.

  • Ao instalar o Anthos Service Mesh usando o script install_asm fornecido pelo Google, é possível especificar um ou mais arquivos de sobreposição com as opções --option ou --custom_overlay. Caso você não precise fazer mudanças nos arquivos no repositório anthos-service-mesh, use --option, e o script busca o arquivo no GitHub para você. Caso contrário, faça alterações no arquivo de sobreposição e use a opção --custom_overlay para transmiti-lo para o script install_asm.

Não inclua várias respostas automáticas em um arquivo de sobreposição Crie arquivos de sobreposição separados para cada resposta automática
várias respostas automáticas em um yaml arquivos yaml separados para cada resposta automática

Como fazer o download do pacote anthos-service-mesh

Para fazer o download do pacote anthos-service-mesh:

Nas etapas a seguir, kpt é usado para fazer o download do pacote asm no repositório do GitHub. Se preferir, use git clone.

  1. Instale kpt caso ainda não tenha feito isso:

    gcloud components install kpt
    
  2. Faça o download do pacote que contém os arquivos:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.11 asm
    

    Os exemplos a seguir presumem que o pacote asm está no seu diretório de trabalho atual.

Como ativar recursos opcionais

Para ativar um recurso ao instalar o Anthos Service Mesh, o comando exato varia um pouco dependendo da sua plataforma e se você estiver usando o script install_asm ou o comando istioctl install.

Os exemplos a seguir são simplificados para mostrar apenas o uso de sobreposições personalizadas para ativar recursos opcionais. Substitua OTHER_FLAGS pelas opções de linha de comando do guia de instalação que você está seguindo.

Como usar o script install_asm

O script install_asm oferece duas maneiras de ativar um recurso opcional. O método usado depende se você precisa fazer alterações no arquivo de sobreposição.

  • Use --option quando não precisar fazer alterações no arquivo de sobreposição. Com --option, install_asm busca o arquivo do repositório do GitHub para você. Portanto, é necessário ter uma conexão com a Internet.

    ./install_asm \
      OTHER_FLAGS \
      --option OPTION_NAME
    

    Substitua OPTION_NAME pela opção que você quer ativar. Para ver uma lista de opções, consulte o pacote anthos-service-mesh.

  • Use --custom_overlay quando precisar personalizar o arquivo de sobreposição.

    ./install_asm \
      OTHER_FLAGS \
      --custom_overlay PATH_TO_FILE
    

    Substitua PATH_TO_FILE pelo caminho para o arquivo de sobreposição que você quer usar.

Como usar o comando istioctl install

Use o comando istioctl install para instalações de vários projetos no GKE e para plataformas que não estejam no Google Cloud, como clusters do Anthos no VMware.

  • Use -f para incluir o arquivo de sobreposição. Pode ser um arquivo de sobreposição do pacote anthos-service-mesh sem personalizações ou um arquivo de sobreposição personalizado.

    istioctl install  \
     OTHER_FLAGS \
     -f PATH_TO_FILE
    

    Substitua PATH_TO_FILE pelo caminho para o arquivo de sobreposição que você quer usar.

YAML para recursos opcionais

As seções a seguir fornecem o YAML para ativar recursos opcionais e compatíveis.

Modo mTLS STRICT

A configuração global.mtls.enabled foi removida da resposta automática IstioOperator para evitar problemas com upgrades e fornecer uma instalação mais flexível. Para ativar o mTLS STRICT, configure uma política de autenticação de peering.

Envoy direto para stdout

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    accessLogFile: "/dev/stdout"

Para mais informações, consulte Ativar a geração de registros de acesso do Envoy.

Cloud Trace

O Cloud Trace está disponível com instalações do Anthos Service Mesh nas seguintes plataformas:

  • GKE no Google Cloud
  • Clusters do Anthos no local se você instalar com a autoridade de certificação do Anthos Service Mesh (Mesh CA)

Para informações detalhadas de preço do Cloud Trace, consulte esta página.

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
  values:
    global:
      proxy:
        tracer: stackdriver

A taxa de amostragem padrão é de 1%, mas é possível substituir o padrão especificando um valor tracing.sampling. O valor precisa estar no intervalo de 0,0 a 100,0 com uma precisão de 0,01. Por exemplo, para gerar traces de cinco solicitações de cada 10.000, use 0,05.

O exemplo a seguir mostra uma taxa de amostragem de 100%, que é o que você faria apenas para fins de demonstração ou solução de problemas.

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing:
        sampling: 100
  values:
    global:
      proxy:
        tracer: stackdriver

Atualmente, a configuração do rastreador faz parte da configuração de inicialização do proxy. Por isso, cada pod precisa ser reiniciado e reinjetado para coletar a atualização do rastreador. Por exemplo, é possível usar o seguinte comando para reiniciar pods que pertencem a uma implantação:

kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME

Propagação do contexto de trace

Os proxies secundários podem enviar períodos de trace automaticamente, mas eles precisam de algumas dicas para unir todo o trace. Os aplicativos precisam propagar os cabeçalhos HTTP apropriados para que, quando os proxies enviarem informações de período, os períodos possam ser correlacionados corretamente em um único trace.

Para fazer isso, um aplicativo precisa coletar e propagar os cabeçalhos apropriados da solicitação de entrada para qualquer solicitação de saída: A configuração de rastreamento do Anthos Service Mesh Stackdriver aceitará qualquer um dos seguintes formatos de cabeçalho e propagará todos os seguintes formatos:

  • B3 (x-b3-traceid, x-b3-spanid, x-b3parentspanid, x-b3-sampled, x-b3-flags)
  • W3C TraceContext (traceparent)
  • Google Cloud Trace (x-cloud-trace-context)
  • gRPC TraceBin (grpc-trace-bin)

Isso significa que os aplicativos podem usar qualquer um desses formatos para propagar o contexto de rastreamento, e os traces serão gerados e definidos adequadamente para o Stackdriver.

Exemplo

Veja um exemplo de solicitação HTTP-Get com um cabeçalho traceparent na solicitação original. Observe os cabeçalhos adicionais de contexto de trace adicionados pelo proxy.

$ kubectl exec -it sleep-557747455f-n6flv -- curl "httpbin:8000/anything?freeform=" -H "accept: application/json" -H "Traceparent: 00-7543d15e09e5d61801d4f74cde1269b8-604ef051d35c5b3f-01" -vv
*   Trying 10.12.3.52:8000...
* Connected to httpbin (10.12.3.52) port 8000 (#0)
> GET /anything?freeform= HTTP/1.1
> Host: httpbin:8000
> User-Agent: curl/7.80.0-DEV
> accept: application/json
> Traceparent: 00-7543d15e09e5d61801d4f74cde1269b8-604ef051d35c5b3f-01
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< server: envoy
< date: Wed, 10 Nov 2021 20:36:04 GMT
< content-type: application/json
< content-length: 1032
< access-control-allow-origin: *
< access-control-allow-credentials: true
< x-envoy-upstream-service-time: 5
<
{
  "args": {
    "freeform": ""
  },
  "data": "",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "application/json",
    "Grpc-Trace-Bin": "AAB1Q9FeCeXWGAHU90zeEmm4AaDHmGRtdM7wAgE",
    "Host": "httpbin:8000",
    "Traceparent": "00-7543d15e09e5d61801d4f74cde1269b8-a0c798646d74cef0-01",
    "User-Agent": "curl/7.80.0-DEV",
    "X-B3-Sampled": "1",
    "X-B3-Spanid": "a0c798646d74cef0",
    "X-B3-Traceid": "7543d15e09e5d61801d4f74cde1269b8",
    "X-Cloud-Trace-Context": "7543d15e09e5d61801d4f74cde1269b8/11585396123534413552;o=1",
    "X-Envoy-Attempt-Count": "1",
    "X-Forwarded-Client-Cert": "<REDACTED>"
  },
  "json": null,
  "method": "GET",
  "origin": "127.0.0.6",
  "url": "http://httpbin:8000/anything?freeform="
}

No conjunto retornado de cabeçalhos de solicitação, o conjunto completo de cabeçalhos de contexto de trace está presente.

Para mais exemplos de propagação dos cabeçalhos, consulte Rastrear a propagação de contexto.

Criar um trace do cliente com um ID personalizado.

Para criar um trace de um cliente com um ID personalizado, use o comando curl para criar uma solicitação com um cliente externo e forçá-lo a mostrar um trace. Exemplo:

curl $URL --header "x-client-trace-id: 105445aa7843bc8bf206b12000100000"

Para mais informações sobre x-client-trace-id, consulte a documentação do Envoy (em inglês).

Interface de rede de contêiner do Istio

A forma como você ativa a interface de rede de contêiner do Istio (CNI, na sigla em inglês) depende do ambiente em que o Anthos Service Mesh está instalado.

  1. Ative uma política de rede.

  2. Escolha o arquivo de sobreposição que corresponde à plataforma.

Ativar a CNI no GKE

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    cni:
      enabled: true
      namespace: kube-system
  values:
    cni:
      cniBinDir: /home/kubernetes/bin
      excludeNamespaces:
        - istio-system
        - kube-system

Ativar CNI no local

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    cni:
      enabled: true
      namespace: kube-system
  values:
    cni:
      cniBinDir: /opt/cni/bin
      excludeNamespaces:
        - istio-system
        - kube-system
        - gke-system

Ativar um balanceador de carga interno

Para instalações no GKE, é possível ativar um balanceador de carga interno para o gateway de entrada do Istio.

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    ingressGateways:
      - name: istio-ingressgateway
        enabled: true
        k8s:
          serviceAnnotations:
            cloud.google.com/load-balancer-type: "internal"
          service:
            ports:
              - name: status-port
                port: 15020
              - name: http2
                port: 80
                targetPort: 8080
              - name: https
                port: 443
                targetPort: 8443

Gerenciamento de certificados externos no gateway de entrada

Para informações sobre como ativar o gerenciamento de certificados externos no gateway de entrada usando o Envoy SDS, consulte Gateways seguros.