Configurar a Ponte para Kubernetes
Nota
O Bridge to Kubernetes será encerrado em 30 de abril de 2025. Para obter detalhes sobre as alternativas de aposentadoria e código aberto, consulte o problema do GitHub.
Você pode configurar o processo de Ponte local para Kubernetes usando dois métodos. Você pode anotar serviços em seu cluster e fornecer configuração local.
Configuração do Kubernetes
O arquivo de configuração do Kubernetes (kubeconfig) é armazenado 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 de perfis de inicialização de depuração nas propriedades de Depuração. Confira Editar perfil de inicialização.
A partir daí, você pode abrir a tela a seguir, que fornece uma maneira de editar algumas das propriedades de configuração mais comuns.
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 o 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 de KubernetesLocalProcessConfig.yaml
:
- Baixe um volume e defina o caminho para esse volume como uma variável de ambiente.
- Disponibilize um serviço em execução no cluster para processos em execução no computador de desenvolvimento.
- Crie uma variável de ambiente com um valor constante.
Um arquivo de KubernetesLocalProcessConfig.yaml
padrão não é criado automaticamente, portanto, você deve criar manualmente o arquivo na raiz do projeto.
Fazer o download de um volume
Em env, especifique um nome e um valor para cada volume que você deseja baixar. O nome é a variável de ambiente que será usada no 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 é baixar os 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
.
Nota
Baixar um volume baixará 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 a 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 , especifique um nome e um valor para cada serviço que você deseja disponibilizar no seu computador de desenvolvimento. O nome é a variável de ambiente que será usada no 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 torna o serviço myapp1 disponível para o seu computador de desenvolvimento, e a variável de ambiente MYAPP1_SERVICE_HOST é ajustada para 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.
Nota
Disponibilizar um serviço em 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 torna o myapp2 do namespace mynamespace disponível 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.
Criar 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 nome é a variável de ambiente que será usada no computador de desenvolvimento e o valor é 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 verdadeiro.
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érico, 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 o 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 de 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 o seu computador de desenvolvimento local ao cluster, consulte Use Bridge to Kubernetes com o Visual Studio Code e Use Bridge to Kubernetes com o Visual Studio.