Estudio de CKAD – Día 20

La prueba de hoy es crear secretos. Normalmente estos hacen mas sentido por imperativo asi qe solo voy con ese formato


Crea un Secret genérico llamado db-secret con clave password=“s3cr3t”. Modifica el Deployment frontend para que consuma esa contraseña como variable de entorno (envFrom o env).


❯ kubectl create secret generic db-secret --from-literal=db-secret=s3cr3t -n exam-ns

Aplicarlo hay de varias formas , tambien generarlo, pero aca va mi archivo de configracion

# En el namespace exam-ns, 
# crea un Deployment llamado frontend con 3 réplicas 
# usando la imagen nginx:stable, 
# y expónlo con un Service de tipo ClusterIP al puerto 80. / NodePort
---
apiVersion: v1
kind: Namespace
metadata:
  name: exam-ns
  labels:
    app: frontend
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
  labels:
    app: frontend
  namespace: exam-ns
data:
  LOG_LEVEL: "debug"
---
apiVersion: v1
kind: Secret
metadata:
  name: db-secret2
  namespace: exam-ns
stringData:
  db-secret: s3cr3t
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
  namespace: exam-ns
spec:
  replicas: 3
  selector:
    matchLabels:
      app: frontend
  template:
    metadata:
      labels:
        app: frontend
    spec:
      containers:
      - name: frontend
        env:
        - name: LOG_LEVEL
          valueFrom:
            configMapKeyRef:
              name: app-config
              key: LOG_LEVEL
        - name: DB_SECRET
          valueFrom:
            secretKeyRef:
              name: db-secret2
              key: db-secret
        image: nginx:1.21-alpine
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: frontendsvc
  namespace: exam-ns
spec:
  type: NodePort
  selector:
    app: frontend   # ¿Asi busco los pods?
  ports:
  - port: 80        # Este es el puerto del cluster
    targetPort: 80  # este es el puerto del contenedor
    nodePort: 30080 # Este es el puerto externo - Dice que es opcional

# Para hacer funcionar esto hay que hacer un tunel de mi host a minikube, es algo propio de minikube
# minikube service frontendsvc -n exam-ns

Pero por comando seria algo asi

kubectl set env --from=secret/mysecret deployment/myapp

Y eso es todo, hay varios temas que habia olvidado, como que los secret en data deben ser en b64, pero en stringData pueden ir en claro.