Refactor
This commit is contained in:
parent
4004c87e40
commit
492e06f2af
|
@ -1,3 +1,4 @@
|
||||||
.venv
|
.venv
|
||||||
old-helm
|
old-helm
|
||||||
old
|
old
|
||||||
|
consignas.txt
|
|
@ -0,0 +1,49 @@
|
||||||
|
Todas las variables que se repiten y que, en un principio, no tendría sentido cambiarlas para este chart se marcaron con default.
|
||||||
|
|
||||||
|
Por ejemplo, busque los default de service.yaml. Verá que `type` es por defecto "ClusterIP" y que `targetPort` es por defecto `$port`.
|
||||||
|
|
||||||
|
Esto tiene dos beneficios:
|
||||||
|
|
||||||
|
1) Elimina redundancia en values.yaml
|
||||||
|
2) Da libertad para que en un futuro se pueda simplemente modificarlo en `values.yaml`. Por ejemplo, supongamos que queremos cambiar el `type` a "NodePort" en el servicio de `api`, basta con hacer el siguiente cambio:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
services:
|
||||||
|
- api:
|
||||||
|
name: "api"
|
||||||
|
tier: "backend"
|
||||||
|
port: 5000
|
||||||
|
type: "NodePort"
|
||||||
|
```
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
En `ingress` se repite el `host` por dos razones:
|
||||||
|
|
||||||
|
1) Si quisieran que la api esté en otro dominio se pueda hacer fácilmente mediante:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
ingress:
|
||||||
|
annotations:
|
||||||
|
nginx.ingress.kubernetes.io/ssl-redirect: "true"
|
||||||
|
hosts:
|
||||||
|
- host: kube.slc.ar
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
name: "client"
|
||||||
|
port: 8080
|
||||||
|
pathType: "Prefix"
|
||||||
|
- host: api.kube.slc.ar
|
||||||
|
- path: /
|
||||||
|
name: "api"
|
||||||
|
port: 5000
|
||||||
|
pathType: "Prefix"
|
||||||
|
tls:
|
||||||
|
- secretName: exam-crt
|
||||||
|
hosts:
|
||||||
|
- kube.slc.ar
|
||||||
|
- api.kube.slc.ar
|
||||||
|
```
|
||||||
|
2) No se pueden reutilizar variables en YAML. Existe la posibilidad de usar YAML anchors pero en la [documentación](https://helm.sh/docs/chart_template_guide/yaml_techniques/#yaml-anchors) no lo recomiendan: "Because Helm and Kubernetes often read, modify, and then rewrite YAML files, the anchors will be lost."
|
||||||
|
|
||||||
|
TODO: probar igual los anchors
|
|
@ -8,7 +8,7 @@ metadata:
|
||||||
app: {{ .name }}
|
app: {{ .name }}
|
||||||
{{- include "exam.labels" $ | nindent 4 }}
|
{{- include "exam.labels" $ | nindent 4 }}
|
||||||
spec:
|
spec:
|
||||||
replicas: {{ .replicas }}
|
replicas: {{ default "1" .replicas }}
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app: {{ .name }}
|
app: {{ .name }}
|
||||||
|
@ -32,19 +32,22 @@ spec:
|
||||||
{{- if .env }}
|
{{- if .env }}
|
||||||
env:
|
env:
|
||||||
{{- with .env }}
|
{{- with .env }}
|
||||||
{{- range $key, $val := .nonsecrets }}
|
{{- range $key, $val := . }}
|
||||||
{{- $envKey := $key | upper | replace "-" "_" }}
|
{{- if ne "secrets" $key }}
|
||||||
- name: {{ $envKey }}
|
{{- $envKey := $key | upper | replace "-" "_" }}
|
||||||
value: {{ quote $val }}
|
- name: {{ $envKey }}
|
||||||
|
value: {{ quote $val }}
|
||||||
|
{{- else }}
|
||||||
|
{{- range $key, $val := $val }}
|
||||||
|
{{- $envKey := $key | upper | replace "-" "_" }}
|
||||||
|
- name: {{ $envKey }}
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
# TODO
|
||||||
|
name: {{ include "exam.fullname" $ }}-secrets
|
||||||
|
key: {{ $val }}
|
||||||
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- range $key, $val := .secrets }}
|
|
||||||
{{- $envKey := $key | upper | replace "-" "_" }}
|
|
||||||
- name: {{ $envKey }}
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
# TODO
|
|
||||||
name: {{ include "exam.fullname" $ }}-secrets
|
|
||||||
key: {{ $val }}
|
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
|
@ -41,8 +41,8 @@ spec:
|
||||||
paths:
|
paths:
|
||||||
{{- range .paths }}
|
{{- range .paths }}
|
||||||
- path: {{ .path }}
|
- path: {{ .path }}
|
||||||
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
|
{{- if semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||||
pathType: {{ .pathType }}
|
pathType: {{ default "ImplementationSpecific" .pathType }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
backend:
|
backend:
|
||||||
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||||
|
|
|
@ -8,10 +8,10 @@ metadata:
|
||||||
app: {{ $service.name }}
|
app: {{ $service.name }}
|
||||||
{{- include "exam.labels" $ | nindent 4 }}
|
{{- include "exam.labels" $ | nindent 4 }}
|
||||||
spec:
|
spec:
|
||||||
type: {{ $service.type }}
|
type: {{ default "ClusterIP" $service.type }}
|
||||||
ports:
|
ports:
|
||||||
- port: {{ $service.port }}
|
- port: {{ $service.port }}
|
||||||
targetPort: {{ $service.target }}
|
targetPort: {{ default $service.port $service.target }}
|
||||||
selector:
|
selector:
|
||||||
app: {{ $service.name }}
|
app: {{ $service.name }}
|
||||||
tier: {{ $service.tier }}
|
tier: {{ $service.tier }}
|
||||||
|
|
|
@ -3,7 +3,6 @@ tls:
|
||||||
host: kube.slc.ar
|
host: kube.slc.ar
|
||||||
|
|
||||||
ingress:
|
ingress:
|
||||||
className: ""
|
|
||||||
annotations:
|
annotations:
|
||||||
nginx.ingress.kubernetes.io/rewrite-target: /$2
|
nginx.ingress.kubernetes.io/rewrite-target: /$2
|
||||||
nginx.ingress.kubernetes.io/ssl-redirect: "true"
|
nginx.ingress.kubernetes.io/ssl-redirect: "true"
|
||||||
|
@ -12,11 +11,9 @@ ingress:
|
||||||
- host: kube.slc.ar
|
- host: kube.slc.ar
|
||||||
paths:
|
paths:
|
||||||
- path: /()(.*)
|
- path: /()(.*)
|
||||||
pathType: ImplementationSpecific
|
|
||||||
name: "client"
|
name: "client"
|
||||||
port: 8080
|
port: 8080
|
||||||
- path: /api(/|$)(.*)
|
- path: /api(/|$)(.*)
|
||||||
pathType: ImplementationSpecific
|
|
||||||
name: "api"
|
name: "api"
|
||||||
port: 5000
|
port: 5000
|
||||||
tls:
|
tls:
|
||||||
|
@ -29,21 +26,17 @@ services:
|
||||||
name: "api"
|
name: "api"
|
||||||
tier: "backend"
|
tier: "backend"
|
||||||
port: 5000
|
port: 5000
|
||||||
target: 0
|
|
||||||
type: ClusterIP
|
|
||||||
- postgres:
|
|
||||||
name: "db"
|
|
||||||
tier: "backend"
|
|
||||||
port: 5432
|
|
||||||
target: 0
|
|
||||||
type: ClusterIP
|
|
||||||
- client:
|
- client:
|
||||||
name: "client"
|
name: "client"
|
||||||
tier: "frontend"
|
tier: "frontend"
|
||||||
port: 8080
|
port: 8080
|
||||||
target: 80
|
target: 80
|
||||||
type: ClusterIP
|
- postgres:
|
||||||
|
name: "db"
|
||||||
|
tier: "backend"
|
||||||
|
port: 5432
|
||||||
|
|
||||||
|
# secrets.yaml
|
||||||
secrets:
|
secrets:
|
||||||
username: "username"
|
username: "username"
|
||||||
password: "password1234"
|
password: "password1234"
|
||||||
|
@ -58,16 +51,14 @@ deployments:
|
||||||
name: "api"
|
name: "api"
|
||||||
tier: "backend"
|
tier: "backend"
|
||||||
env:
|
env:
|
||||||
nonsecrets:
|
app-settings: src.config.ProductionConfig
|
||||||
app-settings: src.config.ProductionConfig
|
port: "5000"
|
||||||
port: "5000"
|
|
||||||
secrets:
|
secrets:
|
||||||
database-url: database-url
|
database-url: database-url
|
||||||
image:
|
image:
|
||||||
repository: api
|
repository: api
|
||||||
tag: prod
|
tag: prod
|
||||||
port: 5000
|
port: 5000
|
||||||
replicas: 1
|
|
||||||
- client:
|
- client:
|
||||||
tier: "frontend"
|
tier: "frontend"
|
||||||
name: "client"
|
name: "client"
|
||||||
|
@ -75,13 +66,12 @@ deployments:
|
||||||
repository: client
|
repository: client
|
||||||
tag: prod
|
tag: prod
|
||||||
port: 8080
|
port: 8080
|
||||||
replicas: 1
|
replicas: 3
|
||||||
- db:
|
- db:
|
||||||
tier: "backend"
|
tier: "backend"
|
||||||
name: "db"
|
name: "db"
|
||||||
env:
|
env:
|
||||||
nonsecrets:
|
pgdata: /var/lib/postgresql/data/pgdata
|
||||||
pgdata: /var/lib/postgresql/data/pgdata
|
|
||||||
secrets:
|
secrets:
|
||||||
postgres-password: password
|
postgres-password: password
|
||||||
postgres-user: username
|
postgres-user: username
|
||||||
|
@ -89,6 +79,5 @@ deployments:
|
||||||
repository: db
|
repository: db
|
||||||
tag: 13.3
|
tag: 13.3
|
||||||
port: 5432
|
port: 5432
|
||||||
replicas: 1
|
|
||||||
mountPath: /var/lib/postgresql/data
|
mountPath: /var/lib/postgresql/data
|
||||||
storage: postgres-pv-storage
|
storage: postgres-pv-storage
|
||||||
|
|
Loading…
Reference in New Issue