Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
2
respostas

[Projeto] Resultado do exercício

Eu entendi que o que foi proposto é apenas a unificação dos 3 arquivos em um arquivão chamado deployments.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: gateway
  labels:
    {{- include "alura-foods-app.labels" . | nindent 4 }}
    app: gateway
spec:
  replicas: {{ .Values.gateway.replicaCount }}
  selector:
    matchLabels:
      app: gateway
  template:
    metadata:
      labels:
        app: gateway
    spec:
      containers:
      - name: gateway
        image: {{ .Values.gateway.image }}
        ports:
        - containerPort: {{ .Values.gateway.port }}
        env:
        - name: SERVER_HOST
          valueFrom:
            configMapKeyRef:
              name: {{ .Values.configMap.name }}
              key: SERVER_HOST
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: pagamentos
  labels:
    {{- include "alura-foods-app.labels" . | nindent 4 }}
    app: pagamentos
spec:
  replicas: {{ .Values.pagamentos.replicaCount }}
  selector:
    matchLabels:
      app: pagamentos
  template:
    metadata:
      labels:
        app: pagamentos
    spec:
      hostname: pagamentos-ms
      containers:
      - name: pagamentos
        image: {{ .Values.pagamentos.image }}
        ports:
        - containerPort: {{ .Values.pagamentos.port }}
        env:
        - name: SERVER_HOST
          valueFrom:
            configMapKeyRef:
              name: {{ .Values.configMap.name }}
              key: SERVER_HOST
        - name: DB_HOST
          valueFrom:
            configMapKeyRef:
              name: {{ .Values.configMap.name }}
              key: DB_HOST
        - name: DB_USER
          valueFrom:
            secretKeyRef:
              name: {{ .Values.secret.name }}
              key: DB_USER
        - name: DB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: senhas
              key: DB_PASSWORD
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: pedidos
  labels:
    {{- include "alura-foods-app.labels" . | nindent 4 }}
    app: pedidos
spec:
  replicas: {{ .Values.pedidos.replicaCount }}
  selector:
    matchLabels:
      app: pedidos
  template:
    metadata:
      labels:
        app: pedidos
    spec:
      hostname: pedidos-ms
      containers:
      - name: pedidos
        image: {{ .Values.pedidos.image }}
        ports:
        - containerPort: {{ .Values.pedidos.port }}
        env:
        - name: SERVER_HOST
          valueFrom:
            configMapKeyRef:
              name: {{ .Values.configMap.name }}
              key: SERVER_HOST
        - name: DB_HOST
          valueFrom:
            configMapKeyRef:
              name: {{ .Values.configMap.name }}
              key: DB_HOST
        - name: DB_USER
          valueFrom:
            secretKeyRef:
              name: senhas
              key: DB_USER
        - name: DB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: senhas
              key: DB_PASSWORD

O arquivo values.yaml já existe, vou utilizar o que foi criado em aula.

Agora o grande problema é testar se isso aí faz sendito. Ainda não sei "rodar", não chegamos nessa parte do curso. Não foi exemplificado como que o heml aplica as mudanças no cluster. Então eu não consigo testar este exercício. Mas ta aí, espero que esteja minimamente coerente.

2 respostas
solução!

Olá Eduardo, tudo bem?

Obrigada por compartilhar sua solução no fórum! E a sua leitura do exercício está certa: unificar os três Deployments em um único arquivo deployments.yaml, separados por ---, é exatamente o que foi pedido. O arquivo ficou bem estruturado e a parametrização com .Values está consistente em todos os blocos.

Uma observação que vale notar: no Deployment de pagamentos, a referência ao secret de DB_PASSWORD usa o nome fixo senhas em vez de {{ .Values.secret.name }}. Isso quebra a consistência com o restante do template, onde o nome do secret vem do values.yaml. Vale alinhar para que fique:

secretKeyRef:
  name: {{ .Values.secret.name }}
  key: DB_PASSWORD

Quanto ao teste, faz todo sentido a sua dúvida. O comando para aplicar um chart Helm no cluster é o helm install (ou helm upgrade --install para reaplicar). Quando chegar nessa parte do curso você vai conseguir validar tudo isso na prática, e o que você montou aqui vai funcionar bem.

Conte com a Alura para evoluir seus estudos. Em caso de dúvidas, fico à disposição.

Bons estudos!

Sucesso

Imagem da comunidade

Muito obrigado pelo feedback! =D