Compartilhar via


Configurar a Ponte para Kubernetes

Observação

A Microsoft planeja não manter mais ativamente o projeto Bridge to Kubernetes. Nos próximos meses, faremos a transição do projeto para um estado de arquivamento. Enquanto isso, o projeto ainda está disponível para uso e download. Durante esse período, esperamos explorar e recomendar projetos da comunidade que forneçam benefícios semelhantes ao Bridge to Kubernetes para seu uso futuro. Se você tiver dúvidas, entre em contato conosco em nosso quadro de problemas no GitHub.

Você pode configurar o processo local do Bridge to Kubernetes usando dois métodos. Você pode anotar serviços no cluster e fornecer a configuração local.

Configuração do Kubernetes

O arquivo de configuração do Kubernetes (kubeconfig) é armazenado por padrão em ~/.kube/config, mas você pode defini-lo usando a variável de ambiente KUBECONFIG.

Se você estiver usando o Visual Studio, poderá editar o perfil de inicialização do Bridge to Kubernetes no IDE usando a interface do usuário Perfis de inicialização de depuração nas propriedades de Depuração. Consulte Editar perfil de inicialização.

Captura de tela mostrando a opção Abrir a interface do usuário de perfis de inicialização de depuração.

De lá, você pode abrir a tela seguinte, que fornece uma maneira de editar algumas das propriedades de configuração mais comuns.

Captura de tela que mostra a edição de algumas das propriedades de perfil mais comuns do Bridge to Kubernetes.

Impedir que o Bridge to Kubernetes encaminhe portas específicas

Configure o Bridge to Kubernetes para ignorar o mapeamento de portas específicas em um serviço do Kubernetes para seu computador adicionando a anotação bridgetokubernetes/ignore-ports no serviço.

apiVersion: v1
kind: Service
metadata:
  annotations:
    bridgetokubernetes/ignore-ports:445,23

Configuração local usando (KubernetesLocalProcessConfig.yaml)

O arquivo KubernetesLocalProcessConfig.yaml permite replicar variáveis de ambiente e arquivos montados disponíveis para seus pods no cluster. Você pode especificar as seguintes ações em um arquivo KubernetesLocalProcessConfig.yaml:

  • Faça o download de um volume e defina o caminho para esse volume como uma variável de ambiente.
  • Disponibilize uma execução de serviço no seu cluster para processos em execução no seu computador de desenvolvimento.
  • Crie uma variável de ambiente com um valor constante.

Um arquivo padrão KubernetesLocalProcessConfig.yaml não é criado automaticamente, portanto, você deve criar manualmente o arquivo na raiz do seu projeto.

Fazer o download de um volume

Em env, especifique um name e um value para cada volume que você deseja fazer o download. O name é a variável de ambiente que será usada no seu computador de desenvolvimento. O value é o nome do volume e um caminho no seu computador de desenvolvimento. O valor de value assume o formulário $(volumeMounts:VOLUME_NAME)/PATH/TO/FILES.

Por exemplo:

version: 0.1
env:
  - name: ALLOW_LIST_PATH
    value: $(volumeMounts:allow-list)/allow-list

O exemplo acima faz o download do volume lista de permissões do contêiner e define esse local mais o caminho para a variável de ambiente ALLOW_LIST_PATH. O comportamento padrão é fazer o download dos arquivos para o caminho especificado em um diretório temporário em seu computador de desenvolvimento. No exemplo acima, ALLOW_LIST_PATH é definido como /TEMPORARY_DIR/allow-list.

Observação

Fazer o download de um volume irá baixat todo o conteúdo desse volume, independentemente do caminho definido. O caminho é usado apenas para definir a variável de ambiente para uso no computador de desenvolvimento. Adicionar /allow-list ou /path/to/files ao final do token não afeta onde o volume é persistido. A variável de ambiente é apenas uma conveniência no caso de seu aplicativo precisar de uma referência para um arquivo específico dentro desse volume.

Você também tem a opção de especificar um local para fazer o download da montagem de volume no seu computador de desenvolvimento em vez de usar um diretório temporário. Em volumeMounts, especifique um name e localPath para cada local específico. O name é o nome do volume que você deseja corresponder e localPath é o caminho absoluto em seu computador de desenvolvimento. Por exemplo:

version: 0.1
volumeMounts:
  - name: default-token-*
    localPath: /var/run/secrets/kubernetes.io/serviceaccount
env:
  - name: KUBERNETES_IN_CLUSTER_CONFIG_OVERRIDE
    value: $(volumeMounts:default-token-*)

O exemplo acima usa a entrada no env para fazer o download de um volume correspondente a default-token-*, como default-token-1111 ou default-token-1234-5678-90abcdef. Nos casos em que vários volumes correspondem, o primeiro volume correspondente é usado. Todos os arquivos são baixados para /var/run/secrets/kubernetes.io/serviceaccount no seu computador de desenvolvimento usando a entrada em volumeMounts. A variável de ambiente KUBERNETES_IN_CLUSTER_CONFIG_OVERRIDE é definida como /var/run/secrets/kubernetes.io/serviceaccount.

Disponibilizar um serviço

Em env, especifique um name e um value para cada serviço que você deseja disponibilizar em seu computador de desenvolvimento. O name é a variável de ambiente que será usada no seu computador de desenvolvimento. O value é o nome do serviço do seu cluster e um caminho. O valor de value usa o formulário $(services:SERVICE_NAME)/PATH.

Por exemplo:

version: 0.1
env:
  - name: MYAPP1_SERVICE_HOST
    value: $(services:myapp1)/api/v1/

O exemplo acima disponibiliza o serviço myapp1 para seu computador de desenvolvimento e a variável de ambiente MYAPP1_SERVICE_HOST é definida como o endereço IP local do serviço myapp1 com o caminho /api/v1 (ou seja, 127.1.1.4/api/v1). O serviço myapp1 é acessível usando a variável de ambiente, myapp1 ou myapp1.svc.cluster.local.

Observação

Disponibilizar um serviço no seu computador de desenvolvimento disponibilizará todo o serviço, independentemente do caminho definido. O caminho é usado apenas para definir a variável de ambiente para uso no computador de desenvolvimento. Você também pode disponibilizar um serviço de um namespace específico do Kubernetes usando $(services:SERVICE_NAME.NAMESPACE_NAME). Por exemplo:

version: 0.1
env:
  - name: MYAPP2_SERVICE_HOST
    value: $(services:myapp2.mynamespace)

O exemplo acima disponibiliza o myapp2 do namespace mynamespace no seu computador de desenvolvimento e define a variável de ambiente MYAPP2_SERVICE_HOST para o endereço IP local do myapp2 do namespace mynamespace.

Crie uma variável de ambiente com um valor constante

Em env, especifique um name e um value para cada variável de ambiente que você deseja criar no seu computador de desenvolvimento. O name é a variável de ambiente que será usada no seu computador de desenvolvimento e o value é o valor. Por exemplo:

version: 0.1
env:
  - name: DEBUG_MODE
    value: "true"

O exemplo acima cria uma variável de ambiente chamada DEBUG_MODE com um valor de true.

Adicionar uma dependência de serviço

Você pode especificar uma dependência de serviço, como um banco de dados ou cache, usando um campo de dependências genéricas, semelhante à forma como os serviços são declarados. Especifique uma dependência aqui quando o serviço que você está depurando precisar se conectar aos recursos que não estão em execução no cluster. Declare uma dependência como no exemplo a seguir:

version: 0.1
volumeMounts:
env:
  - name: DB_HOST
    value: $(externalendpoints:server-bridgetest123.database.windows.net:1433)

Forneça o nome DNS do host (server-bridgetest13.database.windows.net no exemplo) e a porta (1433 no exemplo) para sua dependência.

Quando você especifica dependências como bancos de dados, os modelos de autenticação de redirecionamento não funcionarão. Por exemplo, para Banco de Dados SQL do Azure, você deve definir a política de conexão como "Proxy" (em vez de "Redirecionar" ou "Padrão").

Example KubernetesLocalProcessConfig.yaml

Aqui está um exemplo de um arquivo KubernetesLocalProcessConfig.yaml completo:

version: 0.1
volumeMounts:
  - name: default-token-*
    localPath: /var/run/secrets/kubernetes.io/serviceaccount
env:
  - name: KUBERNETES_IN_CLUSTER_CONFIG_OVERRIDE
    value: $(volumeMounts:default-token-*)
  - name: ALLOW_LIST_PATH
    value: $(volumeMounts:allow-list)/allow-list
  - name: MYAPP1_SERVICE_HOST
    value: $(services:myapp1)/api/v1/
  - name: MYAPP2_SERVICE_HOST
    value: $(services:myapp2.mynamespace)
  - name: DEBUG_MODE 
    value: "true"

Próximas etapas

Para começar a usar o Bridge to Kubernetes para conectar seu computador de desenvolvimento local ao cluster, consulte Usar Bridge to Kubernetes com Visual Studio Code e Usar Bridge to Kubernetes com o Visual Studio.