Dados confidenciais não devem ser armazenados no Git. Isso apresenta um dilema para o GitOps, porque você precisa de segredos no Git, mas não quer expor esses dados confidenciais! Para resolver esse problema, você pode armazenar segredos em uma ferramenta como o HashiCorp Vault e, depois, recuperar e injetar esses dados no Red Hat OpenShift.
Este artigo é um guia para implantar o OpenShift GitOps com o plugin Argo CD Vault para recuperar segredos de uma instância do Hashicorp Vault e injetá-los em recursos do Kubernetes. Este guia baseia-se em trabalhos como este blog da Red Hat de 2021, e foi atualizado para usar a abordagem mais moderna sidecar de plugin personalizado.
Pré-requisitos
Para este artigo, presumo que você esteja executando o OpenShift 4.10, ou superior, com privilégios administrativos nesse cluster. Estou executando um cluster do Red Hat OpenShift on AWS 4.13 provisionado pelo sistema de demonstração da Red Hat.
Além disso, verifique se você está conectado ao cluster em um ambiente de terminal com os binários oc
e helm
disponíveis antes de prosseguir com qualquer uma das etapas a seguir. Use os comandos a seguir para confirmar esses binários.
Primeiro, verifique os pré-requisitos. Você deverá ver um output semelhante a este:
$ oc version && helm version Client Version: 4.11.13 Kustomize Version: v4.5.4 Kubernetes Version: v1.27.4 version.BuildInfo{Version:"v3.10.1", GitCommit:"9f88ccb6aee40b9a0535fcc7efea6055e1ef72c9", GitTreeState:"clean", GoVersion:"go1.18.7"}
1. Implante o Vault
Para este artigo, estou usando o Vault no modo dev
, que não é adequado para produção. Você pode ignorar essa etapa se já tiver uma instância do Vault em execução. Implantar uma instância do Hashicorp Vault:
$ helm upgrade --install vault vault \ --repo https://helm.releases.hashicorp.com \ --namespace vault \ --create-namespace \ --set "global.openshift=true" \ --set "server.dev.enabled=true" \ --set "injector.enabled=false"
2. Configure o Vault
Após implantar uma instância do Vault, execute um script de shell no pod do Vault para configurá-lo rapidamente para esta demo usando a excelente interface de linha de comando (CLI) do vault
.
O script de configuração define o método de autenticação do Kubernetes para o Vault, habilita um armazenamento de segredos kv-v2
, cria um segredo de teste e uma política de acesso para esse segredo.
Clone a fonte:
$ git clone https://github.com/jmhbnz/openshift-gitops-vault-plugin
Copie seu script de configuração para o pod do Vault:
$ oc --namespace vault cp 1-vault/configure-vault.sh vault-0:/tmp/configure-vault.sh
Em seguida, execute o script remotamente no pod do Vault:
$ oc --namespace vault exec vault-0 -t -- sh -c 'cd /tmp && ./configure-vault.sh'
3. Configure argocd-vault-plugin-auth para o Vault
Após implantar e configurar o Vault, é necessário ativar o Argo CD Vault Plugin, que será implantado em breve, para autenticar no Vault usando uma conta de serviço Kubernetes.
Crie um namespace para o ArgoCD:
$ oc new-project vplugindemo
Crie uma conta de serviço para a autenticação do plugin do Argo Vault:
$ oc create serviceaccount vplugin
Crie uma função no Vault para vincular sua conta de serviço à política:
$ oc --namespace vault exec vault-0 -- vault write auth/kubernetes/role/vplugin \ bound_service_account_names=vplugin \ bound_service_account_namespaces=vplugindemo \ policies=vplugin \ ttl=1h
Por fim, crie um segredo para o plugin do Argo Vault usar ao configurar a conexão do Vault.
$ oc --namespace vplugindemo create \ -f 2-argocd/secret-vault-configuration.yaml
4. Configure o processamento do argocd-vault-plugin
Com a autenticação configurada, agora você precisa definir para qual fim o sidecar do Argo CD Vault Plugin será usado. Esse é um processo de duas etapas. Primeiro, você deve especificar um comando de descoberta e, depois, um comando de geração. Consulte estes exemplos documentados, incluindo cenários para aplicativos baseados em helm
ou kustomize
. Meu exemplo usa a abordagem mais básica de descobrir arquivos que contêm uma anotação e, em seguida, usa argocd-vault-plugin generate .
para modelar os arquivos.
$ oc --namespace vplugindemo create \ -f 2-argocd/configmap-plugin.yaml
5. Implante o OpenShift GitOps
Com o Vault implantado e configurado e o argocd-vault-plugin configurado, implante o operador OpenShift GitOps:
$ oc --namespace openshift-operators create -f 2-argocd/subscription-gitops.yaml
Após instalar o operador com êxito, crie sua instância do Argo CD usando o recurso personalizado:
$ oc --namespace vplugindemo create \ -f 2-argocd/crd-argocd.yaml
6. Crie uma aplicação Argo CD
Depois que o Argo CD estiver em execução, crie esse aplicação de amostra de linha de base. Isso cria um recurso de segredo no cluster que tem os valores do espaço reservado padrão substituídos por valores provenientes do Vault.
$ oc --namespace vplugindemo create \ -f 2-argocd/application-example.yaml
Resumo
Ao usar o Hashicorp Vault, com o Red Hat OpenShift GitOps e o Argo CD Vault Plugin sendo executado como um sidecar, você usou com êxito valores de espaço reservado dentro de um segredo no Git. Esse é um ótimo método para proteger dados confidenciais.
Sobre o autor
James Blair is a Specialist Architect at Red Hat. James is a vivid open source advocate and hands-on engineer. He has a deep technical background in automation, DevSecOps and cloud-native platform engineering across several sectors and is passionate about growing cloud-native in Aotearoa, New Zealand.
Mais como este
Navegue por canal
Automação
Últimas novidades em automação de TI para empresas de tecnologia, equipes e ambientes
Inteligência artificial
Descubra as atualizações nas plataformas que proporcionam aos clientes executar suas cargas de trabalho de IA em qualquer ambiente
Nuvem híbrida aberta
Veja como construímos um futuro mais flexível com a nuvem híbrida
Segurança
Veja as últimas novidades sobre como reduzimos riscos em ambientes e tecnologias
Edge computing
Saiba quais são as atualizações nas plataformas que simplificam as operações na borda
Infraestrutura
Saiba o que há de mais recente na plataforma Linux empresarial líder mundial
Aplicações
Conheça nossas soluções desenvolvidas para ajudar você a superar os desafios mais complexos de aplicações
Programas originais
Veja as histórias divertidas de criadores e líderes em tecnologia empresarial
Produtos
- Red Hat Enterprise Linux
- Red Hat OpenShift
- Red Hat Ansible Automation Platform
- Red Hat Cloud Services
- Veja todos os produtos
Ferramentas
- Treinamento e certificação
- Minha conta
- Suporte ao cliente
- Recursos para desenvolvedores
- Encontre um parceiro
- Red Hat Ecosystem Catalog
- Calculadora de valor Red Hat
- Documentação
Experimente, compre, venda
Comunicação
- Contate o setor de vendas
- Fale com o Atendimento ao Cliente
- Contate o setor de treinamento
- Redes sociais
Sobre a Red Hat
A Red Hat é a líder mundial em soluções empresariais open source como Linux, nuvem, containers e Kubernetes. Fornecemos soluções robustas que facilitam o trabalho em diversas plataformas e ambientes, do datacenter principal até a borda da rede.
Selecione um idioma
Red Hat legal and privacy links
- Sobre a Red Hat
- Oportunidades de emprego
- Eventos
- Escritórios
- Fale com a Red Hat
- Blog da Red Hat
- Diversidade, equidade e inclusão
- Cool Stuff Store
- Red Hat Summit