Inscreva-se no feed

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.

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

Navegue por canal

automation icon

Automação

Últimas novidades em automação de TI para empresas de tecnologia, equipes e ambientes

AI icon

Inteligência artificial

Descubra as atualizações nas plataformas que proporcionam aos clientes executar suas cargas de trabalho de IA em qualquer ambiente

open hybrid cloud icon

Nuvem híbrida aberta

Veja como construímos um futuro mais flexível com a nuvem híbrida

security icon

Segurança

Veja as últimas novidades sobre como reduzimos riscos em ambientes e tecnologias

edge icon

Edge computing

Saiba quais são as atualizações nas plataformas que simplificam as operações na borda

Infrastructure icon

Infraestrutura

Saiba o que há de mais recente na plataforma Linux empresarial líder mundial

application development icon

Aplicações

Conheça nossas soluções desenvolvidas para ajudar você a superar os desafios mais complexos de aplicações

Original series icon

Programas originais

Veja as histórias divertidas de criadores e líderes em tecnologia empresarial