Nunca viene mal una chuleta cuando se trabaja con Kubernetes. En este caso, es una chuleta especial para el entono de GKE en la plataforma de GCP. En este caso, son el tipo de cargas de trabajo, servicios, etc. que más suelo usar en mi día a día. Espero que os sean de utilidad.
Deployment
apiVersion: apps/v1 kind: Deployment metadata: name: name-deployment namespace: dev labels: app: app-name spec: replicas: 1 selector: matchLabels: app: app-name template: metadata: labels: app: app-name spec: containers: - name: container-name image: container-image:tag ports: - containerPort: 1234 envFrom: - configMapRef: name: configmap-name - secretRef: name: secret-name volumeMounts: - name: name-vol mountPath: /unix/source/route/map volumes: - name: name-vol persistentVolumeClaim: claimName: name-pvc
StatefulSet
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: name-statefulset
namespace: dev
labels:
app: app-name
spec:
serviceName: app-service-name"
replicas: 1
selector:
matchLabels:
app: app-name
template:
metadata:
labels:
app: app-name
spec:
containers:
- name: container-name
image: container-image:tag
ports:
- containerPort: 1234
name: port-name
resources:
limits:
memory: "2000Mi"
requests:
memory: "300Mi"
envFrom:
- configMapRef:
name: configmap-name
- secretRef:
name: secret-name
volumeMounts:
- name: name-vol
mountPath: /unix/source/route/map
volumes:
- name: name-vol
persistentVolumeClaim:
claimName: name-pvc
Cronjob
apiVersion: batch/v1beta1 kind: CronJob metadata: name: name-cronjob namespace: dev spec: schedule: "01 0 * * *" jobTemplate: spec: template: spec: containers: - name: container-name image: container-image:tag args: - /bin/sh - -c - sh /scripts/script.sh restartPolicy: Never
PVC
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: name-pvc namespace: dev spec: accessModes: - ReadWriteOnce resources: requests: storage: 25Gi
ConfigMap
apiVersion: v1 kind: ConfigMap metadata: name: genportal-integration-config namespace: dev data: #Comments VAR_NAME: "value"
Secrets
apiVersion: v1 kind: Secret metadata: name: name-secret namespace: dev type: Opaque data: VAR_NAME: "password_in_base_64"
Service
apiVersion: v1 kind: Service metadata: name: name-service labels: app: app-name namespace: dev spec: ports: - port: 1234 protocol: TCP targetPort: 1234 selector: app: app-name sessionAffinity: None type: LoadBalancer / ClusterIP / NodePort status: loadBalancer: {}
Tipos de servicio en función de su comportamiento:
- ClusterIP: expone el servicio en una IP interna del clúster. Elegir este valor hace que el Servicio solo sea accesible desde dentro del clúster. Este es el ServiceType predeterminado.
- NodePort: expone el servicio en la IP de cada nodo en un puerto estático (el NodePort). Se crea automáticamente un servicio ClusterIP, al que se enruta el servicio NodePort. Podrá ponerse en contacto con el servicio NodePort, desde fuera del clúster, solicitando <NodeIP>: <NodePort>.
- LoadBalancer: expone el servicio de forma externa mediante el equilibrador de carga de un proveedor de nube. Los servicios NodePort y ClusterIP, a los que se enruta el equilibrador de carga externo, se crean automáticamente.
Problema resuelto!
Chuleta de YAML para Kubernetes en GCP