Primeiros Passos para a Aplicação
- Primeiros Passos
1º - Deployment
- O primeiro passo devemos montaro
deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: voll-med
labels:
app: vollmed # 01 - precisa ser igual
spec:
replicas: 3
selector:
matchLabels:
app: vollmed # 01 - precisa ser igual
template: # O que vai ser executado
metadata:
labels:
app: vollmed # 01 - precisa ser igual
spec:
containers:
- name: vollmedAPI
image: leonardosartorello/vollmed:v8
ports:
- containerPort: 3000 # porta da aplicação
env:
- name: DB_HOST
valueFrom:
configMapKeyRef:
name: dados # Nome do configMap criado
key: DB_HOST
- name: DB_DATABASE
valueFrom:
configMapKeyRef:
name: dados
key: DB_DATABASE
resources:
limits:
memory: "128Mi"
cpu: "500m"
requests:
memory: "64Mi"
cpu: "250m"
info
metadata -> labels spec -> selector -> match -> app template -> metada -> labels -> app
Todos os valores acima precisam ser iguais
2º ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
name: dados
data:
DB_HOST: "db"
DB_DATABASE: "testmed"
NodePort
apiVersion: v1
kind: Service
metadata:
name: nodepor-api
spec:
type: NodePort
selector: # esse service de nodePort vai se prender a aplicação definida no deployment
app: vollmed # deployment -> metadata -> labels -> app
ports:
- port: 3000
targetPort: 3000
nodePort: 30007
Secret (opcional)
apiVersion: v1
kind: Secret
metadata:
name: vollmed-secrets
type: Opaque
stringData:
DB_PASSWORD: c29tZXBhc3N3b3Jk
#data:
#DB_PASSWORD: c29tZXBhc3N3b3Jk
# Este arquivo YAML define um Secret no Kubernetes.
#
# Diferença entre stringData e data:
#
# - stringData: Permite que você forneça dados secretos como strings não codificadas em base64.
# O Kubernetes irá automaticamente converter essas strings para base64 antes de armazená-las.
# Isso é útil para facilitar a leitura e a escrita dos dados secretos.
#
# - data: Permite que você forneça dados secretos já codificados em base64.
# Você deve codificar manualmente os valores em base64 antes de adicioná-los ao arquivo YAML.
# Isso é útil quando você já possui os dados secretos em formato codificado.
HealtCheck - LivenessProbe
apiVersion: apps/v1
kind: Deployment
metadata:
name: voll-med
labels:
app: vollmed # 01 - precisa ser igual
spec:
replicas: 3
selector:
matchLabels:
app: vollmed # 01 - precisa ser igual
template: # O que vai ser executado
metadata:
labels:
app: vollmed # 01 - precisa ser igual
spec:
containers:
- name: vollmedapi
image: leonardosartorello/vollmed:v8
ports:
- containerPort: 3000 # porta da aplicação
env:
- name: DB_HOST
valueFrom:
configMapKeyRef:
name: dados
key: DB_HOST
- name: DB_DATABASE
valueFrom:
configMapKeyRef:
name: dados
key: DB_DATABASE
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: vollmed-secrets
key: DB_PASSWORD
resources:
limits:
memory: "128Mi"
cpu: "500m"
requests:
memory: "64Mi"
cpu: "250m"
livenessProbe:
httpGet:
path: /paciente
port: 3000 # containerPort
initialDelaySeconds: 30
periodSeconds: 10
Primeiros Passos para um banco de dados
Statefulset
apiVersion: apps/v1
kind: StatefulSet # Para banco de dados
metadata:
name: banco-mysql
namespace: default
spec:
selector:
matchLabels:
app: banco-mysql
serviceName: "banco-mysql"
replicas: 1
minReadySeconds: 10
template:
metadata:
labels:
app: banco-mysql
spec:
terminationGracePeriodSeconds: 10
containers:
- name: banco-mysql
image: mysql:8
ports:
- containerPort: 80
name: banco-mysql
env:
- name: MYSQL_DATABASE
valueFrom:
configMapKeyRef:
name: dados
key: DB_DATABASE
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: vollmed-secrets
key: DB_PASSWORD
volumeMounts:
- name: mysql-ps # 1 precisa ser igual
mountPath: /var/lib/mysql
volumes:
- name: mysql-ps # 1 precisa ser igual
persistentVolumeClaim:
claimName: persistentvolume_mysql # PersistentVolumeClaim - metadata -> name
PVC - Persistent Volume Claim
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: persistentvolume_mysql
namespace: default
labels:
app: persistentvolume_mysql
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
storageClassName: csi-hostpath-sc