‫O suficiente com os anúncios.
‫Quero chegar a um tópico em que tenho trabalhado e focado no meu Nó. js curso.
‫E isso são variáveis de ambiente, como levantar a mão no bate-papo e, a propósito, no bate-papo, você
‫pode fazer um sinal de cólon dois pontos e, na verdade, ele fará um pequeno aceno com a mão se você estiver lidando com variáveis de ambiente no
‫seu aplicativos e você gostaria de maneiras mais fáceis de não ter exatamente certeza se está fazendo
‫o melhor para variáveis de ambiente.
‫Porque lutei com isso por um bom tempo.
‫Quero dizer, não apenas em contêineres, mas em toda a computação distribuída, garantindo que todos os meus aplicativos
‫tenham pelo menos alguma maneira consistente de executar variáveis de ambiente.
‫Obter informações segredos sobre o servidor que você conhece seus nomes DNS do servidor, você sabe que você nomeia
‫tudo isso em seus contêineres,
‫tudo bem.
‫Parece que alguns de vocês estão interessados neste tópico.
‫Então isso fará parte do meu nó. js curso.
‫E então planejo pegar um pouco disso e descobrir como liberar essas informações para a Web.
‫Existem algumas maneiras de você fazer isso, mas o básico disso vem de 12 aplicativos de fatores.
‫E se você não ouviu falar sobre um aplicativo de fator, ele existe
‫há uma década ou mais e é um conceito sobre 12 fatores que tornam um aplicativo distribuído mais bem-sucedido essencialmente e é de uma
‫empresa que aprendeu desde cedo na nuvem e na Internet como eles precisavam gerenciar todos os
‫pontos diferentes do aplicativo e como precisavam conhecer as diferentes preocupações que tinham em relação às práticas recomendadas essencialmente
‫para escrever aplicativos distribuídos.
‫E, provavelmente, se você tiver um banco de dados em um servidor e uma API por aqui e um site por aqui e
‫um trabalho de trabalhador por lá, mas deixar um aplicativo distribuído certo, há muitas definições para
‫distribuir isso, mas geralmente a maioria de nós hoje se você está preocupado com contêineres e faz parte do
‫seu trabalho e os executa em servidores, provavelmente está lidando com alguns aplicativos distribuídos.
‫Portanto, a parte interessante sobre isso é o estado de configuração.
‫Portanto, se você voltar à rede de pontos com doze fatores paga para lançar isso
‫no bate-papo, definitivamente poderá percorrer esses itens mais tarde e depois mergulhar em cada tópico quando precisar lidar com isso em seu aplicativo.
‫Mas o que eu queria falar hoje foi sobre a configuração e sobre como armazenar as configurações do
‫seu ambiente.
‫Então, à medida que você aprende, se está fazendo o meu cão ou curso de domínio, sabe que nunca deseja que suas imagens
‫ou aplicativos tenham configurações codificadas que seriam diferentes para cada ambiente e o ambiente pode significar que você é como um
‫máquina que o servidor de teste de desenvolvimento ou o servidor intermediário ou o servidor de
‫produção ou se você gosta de muitos de nós, possui vários níveis de produção e várias
‫cópias de produção, como todas essas coisas.
‫Se houver algo que possa mudar lá dentro, pode haver configurações de memória em Java que possam ter senhas
‫diferentes para uma API.
‫Chaves diferentes que podem ser chaves de armazenamento para sua nuvem.
‫Pode ser que qualquer coisa, apenas a palavra de quem está no seu aplicativo, seja um pequeno sinalizador que indica em qual parte do sistema
‫você está e você precisa desse conjunto em uma variável de ambiente pequena e simples.
‫Tudo isso precisa ser retirado do seu aplicativo e uma das regras do fator 12 é se a separação estrita
‫da configuração do código estiver correta.
‫E todos nós vimos que provavelmente o fizemos colocando você saber o valor codificado como o host local,
‫porque seu aplicativo está sempre em execução no mesmo servidor que o seu banco de dados, mas antes dos contêineres,
‫você pode ver um aplicativo codificado com o código local host no código certo.
‫E isso é lamentável, porque isso os torna dados muito rígidos e difíceis de lidar, porque agora você precisa alterar o código
‫apenas em um ambiente alterado para não querer fazer isso.
‫E uma das idéias disso é que os aplicativos de doze fatores e, se você seguir os princípios dos doze fatores,
‫tenderá a ter um tempo muito fácil para transformá-los em contêineres, os aplicativos de doze fatores idealmente usarão tudo
‫através de variáveis de ambiente.
‫O motivo é que todos os sistemas operacionais e todos os sistemas suportam esse direito.
‫Se você tem um aplicativo Java por aqui e não possui GSM por lá, você tem um aplicativo de banco de dados
‫que armazena seus bancos de dados e um MIM armazena em cache todas essas coisas.
‫Cada um deles tem uma maneira diferente de consumir seus valores, de acordo com as variáveis de ambiente.
‫As configurações necessárias para a configuração necessária para iniciar.
‫Tudo isso é diferente.
‫E isso pode ser bastante frustrante.
‫Portanto, a única coisa que é consistente entre todos eles são as variáveis de ambiente.
‫Todo shell suporta isso.
‫Windows Mac Linux, todos eles suportam a mesma funcionalidade.
‫Pode ser um pouco diferente da maneira como você define ou define uma variável de ambiente, mas o valor da chave é
‫o mesmo e todos eles.
‫Certo.
‫Portanto, essa é uma premissa básica e é o que você pode ver em todo o médico e no ecossistema
‫de contêineres, pois todos adotamos isso como nosso padrão.
‫Agora, o que eu quero dizer é que, se você tem, por exemplo, um aplicativo que possui um arquivo
‫de demonstração ou um I e I ou algum outro tipo de arquivo de configuração que os valores precisam obter, é necessário escrever uma
‫camada intermediária entre as variáveis de ambiente e depois para onde eles vão entrar no aplicativo.
‫Certo.
‫E eu tenho um exemplo disso no meu aplicativo BHP não tão completo.
‫Assim, no GitHub, nas imagens do meu aplicativo PSP, mostramos um rápido exemplo literal.
‫E então vamos chegar às suas perguntas.
‫Portanto, aqui o que eu tenho é um arquivo docker e esse sacrifício há muitas coisas,
‫mas o que eu quero focar é neste aplicativo de nível que tenho os padrões que defini no arquivo docker para variáveis
‫de ambiente.
‫Agora, a razão e a maneira como as defino aqui é que eu prefiro que as configurações aqui sejam padrão para trabalhar em um
‫ambiente de produção até você, independentemente de você dizer que olhe esses padrões serão apenas os valores
‫médios de produção ou talvez você possa digamos, ei, esses serão os
‫valores médios dos desenvolvedores. Prefiro que eles deixem um pouco de lado o lado da produção, para que eu possa substituí-los por um arquivo
‫de composição localmente na minha máquina local, não há problema, mas depende de você
‫como você faça isso, mas você definitivamente deseja criar consistentes aqui que façam sentido desde o início.
‫Agora você substituirá muitas delas por outras maneiras de defini-la através do comando docker run
‫ou da implantação de um enxame ou de uma implantação de rede cubana ou no seu arquivo GMO de composição de Ducker que
‫você substituirá.
‫Certo.
‫Você pode até substituí-los no shell antes de executar esses comandos e isso irá sugá-los.
‫Você também pode usar algo como o Docker compor. Você pode definir um arquivo EMV de ponto que, no mundo do PSP,
‫é realmente um padrão no qual ele funcionará de tal forma que na aposta também.
‫Então você pode ver que eu tenho esses aqui, mas obviamente alguns deles vão para o aplicativo, eles podem
‫entrar em arquivos diferentes e vamos voltar um segundo e eu
‫mostrarei a próxima parte.
‫Então, esses são incorporados no arquivo médico quando a imagem é criada no momento.
‫Quando eu quiser olhar para o meu arquivo de composição do médico, isso será usado corretamente nas configurações locais.
‫Quando estou desenvolvendo, posso olhar por aqui e você pode ver que estou definindo todos eles e,
‫talvez, definindo-os de maneira diferente.
‫Não preciso substituí-los se não quiser.
‫Mas, neste caso, estou escolhendo definir exemplos semelhantes como exemplo.
‫Se não precisasse substituir as da imagem, poderia deixar muitas delas em paz.
‫Então tem isso.
‫Tudo certo.
‫Estou definindo-os aqui e agora eles serão usados na inicialização do contêiner.
‫Então, se eu quiser alterá-los, tenho que reiniciar o contêiner.
‫Não preciso excluir o contêiner direito.
‫Eu apenas tive que reiniciar.
‫Então você pode usar o Dr. Composto para fazer isso, o próximo passo talvez seja ver
‫na minha máquina local ou mesmo na produção que eu precise deles em arquivos específicos.
‫Certo.
‫Então, quando meu filho meu aplicativo inicia, essas variáveis de ambiente precisam estar em outro lugar.
‫Eles não podem simplesmente viver em variáveis de ambiente para alguns aplicativos.
‫Eu chamaria esses aplicativos herdados ou aplicativos tradicionais em que eles não estão olhando para variáveis de ambiente por
‫padrão.
‫Agora, se eu estivesse criando um novo aplicativo, meu objetivo seria o de olhar para as variáveis de ambiente e
‫talvez exista algum arquivo de configuração ou algo que o aplicativo use, mas estou substituindo automaticamente as variáveis de
‫ambiente.
‫Portanto, a ideia é que meu aplicativo seja inteligente o suficiente para dizer, ei, se não houver uma variável de
‫ambiente para isso, usarei esse padrão neste arquivo.
‫Mas se já houver um conjunto de variáveis de ambiente, usarei isso.
‫Agora, se você está familiarizado com o enxame e a rede cubana, sabe que, assim
‫que entrarmos em segredos e configurar, podemos começar a sobrescrever esses arquivos inteiros e fornecer senhas e segredos como arquivos individuais.
‫Portanto, você também pode querer que seu aplicativo esteja ciente disso.
‫Mas se o seu aplicativo, se você não estiver criando seu próprio aplicativo personalizado ou se estiver usando talvez coisas do Docker
‫Hub ou de código aberto oficial, o que você precisa observar é fornecer um script de ponto de entrada.
‫Agora, o modo como é executado é na sua imagem, você define o script do ponto de entrada que deseja que seja
‫executado e será executado na inicialização.
‫E o que você pode ver aqui é um exemplo muito simples de eu escrevendo as variáveis violentas e alguns
‫outros dados codificados em um arquivo específico na inicialização, simplesmente usando um script bash.
‫Certo.
‫Tem que ser chique.
‫Você pode usar outros métodos para fazer isso também, mas ele tende a estar nas imagens oficiais do docker.
‫Este aplicativo tende a ser o padrão.
‫Tudo certo.
‫Portanto, neste caso, estou usando variáveis de ambiente que foram definidas no arquivo docker ou
‫no arquivo de composição que substituiu o arquivo Docker de imagem, que levará o Passim até aqui e, então, isso ecoará
‫essas coisas em um arquivo.
‫É sobre imagem.
‫Portanto, isso é para um aplicativo herdado da HP que espera um arquivo de configuração p HP FP M e preciso definir certos valores de
‫configuração para o NPM que são exclusivos para cada ambiente nesse caso.
‫Na verdade, é assim que eu quero que o sistema FGM cresça e quantos subprocessos quero gerar
‫coisas assim.
‫Certo.
‫Então, isso seria diferente no desenvolvimento local versus produção na produção. Quero que cresça
‫muito.
‫Certo.
‫Então, você alteraria essas coisas aqui e é assim que você pega esses aplicativos herdados e os faz funcionar.
‫Agora você pode ver essas coisas nas imagens oficiais, porque é com isso que aprendo muitas das minhas coisas.
‫Então, se eu apenas fui para a minha sequela, você pode ver como eles fizeram isso, exatamente da mesma maneira que a minha
‫sequela precisa das coisas em um arquivo de configuração.
‫Certo.
‫Ele precisa de configurações dinâmicas em tempo de execução.
‫Portanto, se você procurou no arquivo docker a minha sequela oficial e rolou para baixo, verá que sim, ele define algumas variáveis de ambiente aqui, mas também possui
‫um script de ponto de entrada que ele copia e o vincula a um local
‫específico e então, como é o ponto de entrada.
‫Portanto, o comando aqui está vendo o CMB, você realmente não pode vê-lo.
‫O CMB é apenas para minha sequela que o ponto de entrada tecnicamente é executado antes disso e depois passa a execução para
‫o CMT.
‫Uma vez que o script está sendo executado agora, da maneira que eu encontrei esse
‫script aqui, subo um nível e obtenho um hub e clico neste oito pontos para ver uma variável
‫de
‫ambiente e agora temos o shell script que é executado toda vez que minha sequela começa bem.
‫E aqui ele faz coisas como pegar variáveis de ambiente e disponibilizá-las para o aplicativo.
‫De fato, é inteligente o suficiente que, se você adicionar um pequeno arquivo sublinhado no final de uma variável de ambiente,
‫ele pegará o que estiver nesse arquivo e o transformará na variável de ambiente, o que é ótimo para todos os aplicativos que
‫ainda precisam de segredos, chaves de API e todas essas coisas.
‫E se você estiver usando segredos de enxame ou segredos de entidades cubanas, essas coisas são fornecidas, pois podem ser fornecidas
‫como arquivos.
‫Agora você sempre pode usar coisas como cofre e outros sistemas sofisticados que honestamente são baseados em arquivos, mas em
‫contêineres nós tendemos a usar coisas como arquivos e o Linux em geral, então usamos coisas como arquivos.
‫Então você está passando essas coisas como arquivos individuais.
‫E então, este pequeno pedaço de script de shell, de código
‫aberto, significa que você pode copiá-lo e colocá-lo no seu aplicativo. Você pode usá-lo para copiar as variáveis de ambiente do arquivo de
‫texto e colar cada uma delas em uma variável de ambiente chamada apropriadamente e dessa maneira o aplicativo desativado
‫posteriormente pode ter variáveis de ambiente gravadas nos arquivos de configuração do aplicativo e tudo é maravilhoso.
‫Certo.
‫E isso mudaria a cada início do aplicativo, porque as variáveis inerentes podem ser diferentes.
‫E então reescrevia-os e é assim que funciona.
‫Então, esperançosamente, entenda essas etapas.
‫Há muito mais nisso.
‫Na verdade, deixe-me levá-lo bem rápido.
‫Há um ótimo pequeno resumo de como
‫lidar mais com variáveis de ambiente dentro do compor.
‫Sim, isso acabou no site da Riley.
‫E eu fiz um bom artigo para eles.
‫Bem, eu acho legal.
‫Mas você sabe que depende de você nos dizer mentiras.
‫E fala sobre o Dr. Campos, porque muito do que estamos lidando com desenvolvedores,
‫especialmente, é a configuração local.
‫Como eu faço minha configuração específica para mim.
‫E uma dessas coisas é um arquivo de substituição que infelizmente não tenho neste exemplo da HP.
‫Acho que não tenho um arquivo de substituição, mas devo.
‫Isso seria outra coisa a acrescentar aqui.
‫Mas aqui vou colocar isso em cheque.
‫Verifique se o O'Reilly se conecta para falar sobre três coisas diferentes e
‫compor que realmente o ajudarão no seu jogo no gerenciamento da configuração e na redução do modelo correto de peças replicadas significa que
‫você pode adicionar peças específicas no topo do seu arquivo de composição e repetir sem precisar repita essas repetidas
‫vezes, para que você tenha muitas das mesmas variáveis de ambiente, porque você está executando microsserviços
‫e talvez tenha 20 microsserviços em um modelo de arquivo de composição para você.
‫Isso é outra coisa que realmente poupará algum tempo e você pode
‫ter as mesmas partes que precisam ser repetidas várias vezes na
‫parte superior do seu arquivo de composição. você pode inserir isso em cada serviço no momento
‫apropriado.
‫Da maneira que eu faço aqui, há outras coisas aqui também. Convido você a verificar
‫isso, incluindo como usar suas variáveis de ambiente dentro de arquivos compostos, não apenas para definir variáveis de ambiente na
‫imagem, mas também qualquer outra coisa que você queira alterar na sua arquivo de configuração em tempo de execução, então verifique essas
‫coisas.
‫Espero que você goste Michael.
‫O que há, Michael.
‫Michael Ahrens na chamada.
‫Me liga.
‫O que é essa teleconferência aqui.
‫Dr. Capitão.
‫Frequentemente, o que não deve ser incluído nas variáveis de ambiente.
‫Quem você está provocando?
‫A questão.
‫Para ver o que as pessoas inventam.
‫O que não deve entrar em variáveis de ambiente.
‫Bem, a execução dos motivos pelos quais as entidades Docker e Cubana e outras ferramentas criaram essas maneiras de colocar segredos
‫nos arquivos é para que eles não precisem ser variáveis de ambiente.
‫Então, idealmente, se você está criando seus próprios aplicativos para gerenciar seus próprios aplicativos, está mantendo esses segredos
‫fora das variáveis de ambiente, não porque necessariamente as variáveis de ambiente são inerentemente inseguras,
‫é porque nós, com variáveis de ambiente, tendemos a divulgá-las corretamente.
‫Eles tendem a aparecer nos logs porque talvez façamos um despejo de variável de ambiente em algum
‫lugar da nossa configuração ou o fazemos.
‫Se você não gosta de um HP P, há um comando de teste HP PSP EMV ou eu vim mais como alguém que eu tenho
‫certeza de que é alguém aqui, lembre-se e me diga, mas onde isso despejará sua configuração em
‫uma Web página, existem coisas assim e, se houver algum segredo em qualquer variável de ambiente, elas serão expostas
‫lá e você pode não ter a intenção de que elas vazem nos logs ou no sistema de
‫monitoramento de alguma forma e você.
‫Se você tiver erros, às vezes, sabe se já teve aplicativos em que, se você configurá-lo para depuração e
‫erros, isso é verdade no dot net, onde ele coloca muita variação na tela
‫e pode vazar variáveis de ambiente na tela, porque você esqueceu de travá-lo no modo
‫de produção, existem várias maneiras pelas quais as variáveis de ambiente podem acabar nas mãos erradas.
‫Portanto, um bom primeiro passo para não colocar coisas nas variáveis de ambiente seria o segredo
‫e, com enxame e comunidades, você pode mantê-las em arquivos e assim ensinar seu aplicativo a tirá-las
‫dos arquivos.
‫A próxima etapa é você, se você pode obtê-los de seus segredos e arquivos de configuração nos arquivos que o aplicativo
‫precisa.
‫Então, em vez de armazenar uma variável de ambiente que, eventualmente, fica como eu deveria, por exemplo, é gravada em
‫um arquivo que você pode usar, pode figs e armazena o configure e os segredos e arquivos, e então eles vão diretamente para
‫os arquivos que talvez minha sequela ou seu aplicativo precisem .
‫Certo.
‫Portanto, eles nunca entram tecnicamente em variáveis de ambiente.
‫Portanto, pelo menos não no próprio servidor.
‫Certo.
‫Então esse é um ótimo tópico. Fico feliz que você tenha mencionado isso.
‫Mas o problema é que eu provavelmente poderia escrever um curso inteiro sobre variáveis de ambiente de segredos de configuração,
‫mas basicamente tudo que você precisa para um ambiente e como lidar com elas.
‫Certo.
‫E acho que estamos no mesmo nível que você usa coisas como o vault e agora está falando sobre uma API secreta
‫que você está chamando de ainda mais complicada.
‫Então definitivamente há muito o que conversar por lá.
‫E se alguém tiver bons recursos de que gosta, sinta-se à vontade para jogar e conversar ou jogá-los nos
‫comentários do vídeo do YouTube para mais tarde.
‫Tudo bem boa pergunta Michael bom vê-lo.
‫Por que você faria.
‫Stephen diz que o arquivo Ducker não estaria no controle de origem, embora eu não seja a favor de ter cliques de
‫produção, como senha de nome de usuário e controle de origem.
‫É por isso que esses valores são apenas padrões dentro dos arquivos do seu médico Steven.
‫Você não colocaria segredos reais nesse arquivo.
‫Certo.
‫Como você pode ver no meu exemplo, é aqui que tudo no arquivo do punhal é apenas exemplos ou
‫amostras.
‫Agora, se é um número simples ou algo que apenas precisa ser definido e existe um padrão, um tipo de padrão razoável como
‫este aqui aqui p p p. m. as configurações devem ser colocadas nas de
‫produção que você preferir e, em seguida, substituí-las conforme necessário.
‫Dessa forma, você não precisa defini-los todas as vezes manualmente.
‫Mas sim, se você se deparar com algum desses que são exclusivos de um aplicativo específico ou de um ambiente
‫específico, estou colocando valores fictícios aqui.
‫Definitivamente, não recomendo isso dentro do seu repositório de códigos.
‫Você coloca seus segredos e seus URLs e ambiente, conhece as configurações de nome de domínio e coisas
‫assim.
‫Tudo certo.
‫Concordo, mas seu próprio arquivo Ducker estaria com seu aplicativo.
‫Sim, é onde você deseja mantê-lo.
‫Tudo certo.
‫Boa pergunta.
‫Boa pergunta, sim.
‫Quero dizer, a menos que estejam criptografados corretamente, você pode fazer hash neles se o aplicativo aceitar esse tipo de
‫coisa.
‫Mas eu ainda não os mantinha lá.
‫Não guardo as configurações do ambiente em outro lugar, mas você precisa de padrões.
‫E o que costumo fazer em um arquivo de composição com o Docker composite é que defino os padrões que funcionam com
‫um desenvolvedor local imediatamente.
‫Então a composição do Docker funcionaria para eles.
‫Agora, isso pode significar que eles precisam obter um ponto no arquivo V de outro lugar, talvez uma loja segura onde
‫você tenha algum tipo de segredo do desenvolvedor, esse tipo de coisa.
‫Mas eu realmente trabalho duro para não incluir isso como idealmente, se você é desenvolvedor local, tem tudo o
‫que precisa localmente.
‫Você não precisa de API remota como coisas remotas e, esperançosamente, possui dados de amostra e coisas que podem estar
‫apenas em sua máquina local e não precisa de muitos segredos com os quais precisa se preocupar,
‫apenas valores fictícios para tudo e você pode simplesmente comprar localmente.
‫Obviamente, nem todos os nossos aplicativos podem fazer isso como uma espécie de utopia.
‫Então, você encontrará uma maneira diferente de armazenar esses
‫segredos, e é por isso que existem muitas maneiras de definir variáveis de ambiente em
‫tempo de execução, para que você possa mantê-las em outro lugar e depois colocá-las no último segundo no ambiente. variáveis todas boas perguntas sobre verbos ambientais.
‫Estou feliz por termos este tópico hoje.
‫Vamos
‫ver qual é a maneira mais simples de implementar o arquivo E e V.
‫Também mostrei o exemplo do aplicativo my sequel corretamente.
‫E aqui eles pegam esse script e não há arquivo EMV.
‫O objetivo disso é que você use segredos ou configurações.
‫Portanto, se você estiver usando os segredos nativos e os recursos de configuração do enxame do Docker ou
‫mapas e segredos de configuração nas comunidades, talvez você use isso como uma maneira de obter essas informações desses arquivos, especificamente os
‫segredos realmente, e colocá-los em variáveis de ambiente.
‫Se você precisar delas corretamente, pode não ser necessário colocá-las em variáveis de ambiente, mas se você precisar,
‫poderá usar esse pequeno script de shell para fazer isso.
‫Espero que isso responda à sua pergunta, mas não o faria.
‫Não há necessidade de criar um arquivo específico.
‫Exatamente.
‫Se você está falando sobre como criar segredos de enxame, porque os arquivos criam arquivos para você, consulte
‫meu curso de domínio do Docker no URL.
‫Brett Fisher ponto com barra talker que está na descrição.
‫Eu falei sobre isso lá também no meu curso de enxame.