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.