Exemples del curs
This commit is contained in:
21
exemples/exemples-inicials/app-configurada.yaml
Normal file
21
exemples/exemples-inicials/app-configurada.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: pod-amb-configuracio
|
||||
spec:
|
||||
containers:
|
||||
- name: el-meu-contenidor
|
||||
image: alpine
|
||||
# Aquesta comanda imprimeix les variables i es queda adormida perquè el Pod no mori
|
||||
command: ["/bin/sh", "-c", "echo El missatge és: $MISSATGE_APP i la clau és: $CLAU_DB; sleep 3600"]
|
||||
env:
|
||||
- name: MISSATGE_APP
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
name: configuracio-web
|
||||
key: MISSATGE
|
||||
- name: CLAU_DB
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: credencials-db
|
||||
key: PASSWORD
|
||||
19
exemples/exemples-inicials/deploy.yaml
Normal file
19
exemples/exemples-inicials/deploy.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: my-nginx
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: my-nginx
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: my-nginx
|
||||
spec:
|
||||
containers:
|
||||
- name: nginx
|
||||
image: nginx
|
||||
ports:
|
||||
- containerPort: 80
|
||||
11
exemples/exemples-inicials/nginx-clusterip.yaml
Normal file
11
exemples/exemples-inicials/nginx-clusterip.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: servei-web-intern
|
||||
spec:
|
||||
type: ClusterIP
|
||||
selector:
|
||||
app: el-meu-web
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: 80
|
||||
19
exemples/exemples-inicials/nginx-deployment.yaml
Normal file
19
exemples/exemples-inicials/nginx-deployment.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: el-meu-web-deployment
|
||||
spec:
|
||||
replicas: 3
|
||||
selector:
|
||||
matchLabels:
|
||||
app: el-meu-web # <--- Això ha de coincidir amb el selector del teu Service
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: el-meu-web # <--- Aquesta és l'etiqueta que busca el Service
|
||||
spec:
|
||||
containers:
|
||||
- name: nginx
|
||||
image: nginx:latest
|
||||
ports:
|
||||
- containerPort: 80
|
||||
20
exemples/exemples-inicials/nginx-ingress.yaml
Normal file
20
exemples/exemples-inicials/nginx-ingress.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: ingress-web
|
||||
annotations:
|
||||
# Per Traefik v2, pots provar d'eliminar-la o deixar-la (sol ignorar-la si no toca).
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: web
|
||||
spec:
|
||||
ingressClassName: traefik # <--- AFEGEIX AIXÒ (si uses k3s/traefik)
|
||||
rules:
|
||||
- host: app.local
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: servei-web-intern
|
||||
port:
|
||||
number: 80
|
||||
12
exemples/exemples-inicials/pod.yaml
Normal file
12
exemples/exemples-inicials/pod.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
apiVersion: v1
|
||||
kind: Pod # Què estem creant? Un Pod
|
||||
metadata:
|
||||
name: el-meu-pod-nginx # El nom únic del Pod
|
||||
labels:
|
||||
app: web # Etiqueta per identificar-lo
|
||||
spec:
|
||||
containers: # Llista de contenidors dins l'apartament
|
||||
- name: nginx-container
|
||||
image: nginx:alpine
|
||||
ports:
|
||||
- containerPort: 80
|
||||
24
exemples/exemples-inicials/redis-deployment.yaml
Normal file
24
exemples/exemples-inicials/redis-deployment.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: redis-deployment
|
||||
spec:
|
||||
replicas: 9 # <--- Aquí defineixes el nombre de rèpliques
|
||||
selector:
|
||||
matchLabels:
|
||||
app: redis
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: redis
|
||||
spec:
|
||||
containers:
|
||||
- name: redis
|
||||
image: redis:alpine
|
||||
volumeMounts:
|
||||
- name: emmagatzematge-redis
|
||||
mountPath: /data
|
||||
volumes:
|
||||
- name: emmagatzematge-redis
|
||||
persistentVolumeClaim:
|
||||
claimName: redis-dades-pvc # Totes les rèpliques comparteixen aquest PVC
|
||||
15
exemples/exemples-inicials/redis-pod.yaml
Normal file
15
exemples/exemples-inicials/redis-pod.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: redis-persistent
|
||||
spec:
|
||||
containers:
|
||||
- name: redis
|
||||
image: redis:alpine
|
||||
volumeMounts:
|
||||
- name: emmagatzematge-redis
|
||||
mountPath: /data
|
||||
volumes:
|
||||
- name: emmagatzematge-redis
|
||||
persistentVolumeClaim:
|
||||
claimName: redis-dades-pvc
|
||||
10
exemples/exemples-inicials/redis-pvc.yaml
Normal file
10
exemples/exemples-inicials/redis-pvc.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: redis-dades-pvc
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
40
exemples/exemples-inicials/redis-stateful-replica.yaml
Normal file
40
exemples/exemples-inicials/redis-stateful-replica.yaml
Normal file
@@ -0,0 +1,40 @@
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: redis
|
||||
spec:
|
||||
serviceName: "redis"
|
||||
replicas: 3
|
||||
selector:
|
||||
matchLabels:
|
||||
app: redis
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: redis
|
||||
spec:
|
||||
containers:
|
||||
- name: redis
|
||||
image: redis:alpine
|
||||
command: ["sh", "-c"]
|
||||
# Aquest script és un exemple molt bàsic:
|
||||
# Si soc el pod 0, soc el mestre.
|
||||
# Si no, em connecto al pod 0 (redis-0.redis) com a rèplica.
|
||||
args:
|
||||
- |
|
||||
if [ "$(hostname)" = "redis-0" ]; then
|
||||
redis-server
|
||||
else
|
||||
redis-server --replicaof redis-0.redis 6379
|
||||
fi
|
||||
volumeMounts:
|
||||
- name: dades
|
||||
mountPath: /data
|
||||
volumeClaimTemplates:
|
||||
- metadata:
|
||||
name: dades
|
||||
spec:
|
||||
accessModes: [ "ReadWriteOnce" ]
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
30
exemples/exemples-inicials/redis-stateful.yaml
Normal file
30
exemples/exemples-inicials/redis-stateful.yaml
Normal file
@@ -0,0 +1,30 @@
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: redis-statefulset
|
||||
spec:
|
||||
serviceName: "redis"
|
||||
replicas: 3 # <--- 3 rèpliques, cadascuna amb el seu propi disc
|
||||
selector:
|
||||
matchLabels:
|
||||
app: redis
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: redis
|
||||
spec:
|
||||
containers:
|
||||
- name: redis
|
||||
image: redis:alpine
|
||||
volumeMounts:
|
||||
- name: emmagatzematge-redis
|
||||
mountPath: /data
|
||||
# En lloc de 'volumes', fem servir això per crear un disc per a cada rèplica:
|
||||
volumeClaimTemplates:
|
||||
- metadata:
|
||||
name: emmagatzematge-redis
|
||||
spec:
|
||||
accessModes: [ "ReadWriteOnce" ]
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
14
exemples/exemples-inicials/service.yaml
Normal file
14
exemples/exemples-inicials/service.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: web-service
|
||||
spec:
|
||||
type: LoadBalancer # Volem accedir des de fora
|
||||
selector:
|
||||
app: web # <--- LA CLAU: Això busca Pods amb l'etiqueta "app: web"
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 80 # El port del Service (el del recepcionista)
|
||||
targetPort: 80 # El port del Pod (on escolta l'aplicació realment)
|
||||
nodePort: 30007 # (Opcional) El port que obrim al PC host
|
||||
|
||||
Reference in New Issue
Block a user