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.
De lá, você pode abrir a tela seguinte, 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 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.