Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Create a stateless Deployment

Última actualización: Sep 04, 2026

Un Deployment es un tipo común de carga de trabajo de Kubernetes que se utiliza para gestionar aplicaciones sin estado. Garantiza que un número específico de Pods réplica se ejecute siempre en el clúster con el estado definido. Este tema describe cómo crear una aplicación sin estado en un clúster de Container Service for Kubernetes (ACK) mediante la consola de ACK y kubectl.

Antes de empezar

Antes de crear una carga de trabajo, lea Workloads para comprender los conceptos básicos y las consideraciones clave. Este tema se divide en las siguientes secciones:

  • Create a Deployment: Proporciona guías de inicio rápido sobre cómo crear un Deployment mediante la consola y kubectl.

  • Configuration parameters: Explica los parámetros de configuración de la consola y proporciona un archivo YAML de ejemplo para kubectl.

Importante

Los ejemplos de este tema utilizan una imagen pública. Para extraer una imagen pública, el clúster o los nodos deben tener acceso a Internet público. Puede habilitar esto de una de las siguientes maneras:

  • Enable public network access for a cluster (Recomendado): Cree una puerta de enlace NAT para la VPC donde se despliega el clúster. Esto proporciona acceso a Internet público para todos los recursos del clúster.

  • Asigne una static public IP address a un nodo: Los nodos con una dirección IP pública pueden extraer imágenes públicas. Sin embargo, debe asignar una dirección IP pública a cada nodo donde despliegue la carga de trabajo.

Crear un Deployment

Usar la consola

Importante

Los siguientes pasos presentan un proceso simplificado para crear una carga de trabajo. Siga estos pasos para desplegar y verificar rápidamente su aplicación. Una vez que esté familiarizado con las operaciones básicas, consulte Configuration parameters para personalizar su carga de trabajo.

  1. Configure basic application information

    1. Inicie sesión en la consola de ACK y haga clic en Clusters en el panel de navegación izquierdo. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, elija Workloads > Deployments. En la página Deployments, haga clic en Create from Image.

      image

    2. En la página Basic Information, configure los ajustes básicos de la aplicación. Luego, haga clic en Next.

      image

  2. Configure the container

    En la sección Container Configuration, configure el Image Name y el Port. Las demás configuraciones son opcionales y puede mantener los valores predeterminados. A continuación, haga clic en Next para abrir la página del asistente Advanced Settings. La dirección de la imagen es la siguiente.

    Importante

    Para extraer esta imagen, debe habilitar el acceso a Internet público para su clúster. Si mantuvo seleccionada la opción Configure SNAT for VPC al crear el clúster, el acceso a Internet público ya está habilitado. De lo contrario, consulte Enable public network access for a cluster.

    anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

    image

  3. Configure advanced settings

    En la página Advanced, configure el control de acceso, el escalado y la programación. En la sección Access Control, configure cómo exponer los Pods del backend y haga clic en OK. Después, haga clic en Create en la parte inferior de la página.

    Importante

    Este paso crea un Service de tipo LoadBalancer para exponer la carga de trabajo. La instancia de Server Load Balancer (SLB) asociada genera costos. Para obtener más información, consulte Pay-as-you-go. Si ya no necesita la instancia de SLB, libérela de inmediato para evitar cargos innecesarios.

    image

  4. View the application

    Una vez creada la aplicación, aparece la página Complete. En el panel Creation Task Submitted, haga clic en View Details. Haga clic en la pestaña Access Method, busque el Service recién creado (nginx-test-svc) y luego haga clic en el enlace de la columna External Endpoint para acceder a la página de bienvenida de NGINX.image

    image

    Puede View, Edit o Redeploy la carga de trabajo creada.image

Usar kubectl

Importante

Antes de crear una carga de trabajo, conéctese a su clúster de ACK mediante kubectl. Para obtener más información, consulte Obtain the kubeconfig file of a cluster and use kubectl to connect to the cluster.

  1. Copie la siguiente configuración YAML y guárdela en deployment.yaml. Esta configuración define un Deployment y un Service de tipo LoadBalancer para acceso externo.

    apiVersion: apps/v1
    kind: Deployment    # The type of workload.
    metadata:
      name: nginx-test
      namespace: default  # The namespace. Change it based on your requirements.
      labels:
        app: nginx
    spec:
      replicas: 2  # The number of Pod replicas.
      selector:
        matchLabels:
          app: nginx
      template: # The Pod template.
        metadata:
          labels: # The Pod labels.
            app: nginx 
        spec:
          containers:
          - name: nginx  # The container name.
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6  # The NGINX image and its version.
            ports:
            - containerPort: 80  # The port exposed by the container.
              protocol: TCP  # The protocol. You can set it to TCP or UDP. Default value: TCP.
    ---
    # The Service definition.
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-test-svc
      namespace: default  # The namespace. Change it based on your requirements.
      labels:
        app: nginx
    spec:
      selector:
        app: nginx  # Selects Pods with the specified label.
      ports:
        - port: 80           # The port exposed by the Service in the cluster.
          targetPort: 80     # The container port that the traffic is forwarded to.
          protocol: TCP      # The protocol. Default value: TCP.
      type: LoadBalancer     # The type of Service. Default value: ClusterIP (for internal access only).
  2. Ejecute el siguiente comando para crear el Deployment y el Service:

    kubectl apply -f deployment.yaml

    Salida esperada:

    deployment.apps/nginx-test created
    service/nginx-test-svc created
  3. Ejecute el siguiente comando para consultar la dirección IP pública del Service:

    kubectl get svc

    Salida esperada:

    NAME            TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)        AGE
    kubernetes      ClusterIP      172.16.**.***    <none>          443/TCP        4h47m
    nginx-test-svc  LoadBalancer   172.16.**.***    106.14.**.***   80:31130/TCP   1h10m
  4. Introduzca la dirección IP pública de Nginx (106.14.**.***) en un navegador para acceder al contenedor Nginx de la carga de trabajo.

    image

Parámetros de configuración

Parámetros de la consola

Información básica

image

Parámetro

Descripción

Name

Nombre de la carga de trabajo. Los nombres de los Pods se derivan de este valor.

Namespace

Namespace que contiene la carga de trabajo.

Replicas

Número de réplicas del Pod. Valor predeterminado: 2.

Type

Tipo de carga de trabajo. Para obtener más información sobre cómo seleccionar un tipo de carga de trabajo, consulte Create a workload.

Label

Etiquetas de la carga de trabajo.

Annotations

Anotaciones de la carga de trabajo.

Synchronize Timezone

Especifica si el contenedor utiliza la misma zona horaria que su nodo host.

Configuración del contenedor

General

image

Parámetro

Descripción

Image Name

  • Select images

    Haga clic en Select images para elegir una imagen. Puede seleccionar uno de los siguientes tipos de imagen:

    • Container Registry Enterprise Edition: Seleccione una imagen de Enterprise Edition alojada en Alibaba Cloud Container Registry (ACR). Debe especificar la región y la instancia de ACR donde se encuentra la imagen. Para obtener más información sobre ACR, consulte What is ACR?.

    • Container Registry Personal Edition: Seleccione una imagen de Personal Edition alojada en ACR. Debe especificar la región y la instancia de ACR donde se encuentra la imagen.

    • Artifact Center: Imágenes comunes proporcionadas por Alibaba Cloud y la comunidad OpenAnolis. Para usar una imagen de Artifact Center, debe enable public internet access for the cluster. Para obtener más información, consulte Artifact Center.

    Cuando utilice una imagen de otro origen, puede introducir directamente la dirección de la imagen con el formato domainname/namespace/imagename:tag. Si no especifica el domainname, por ejemplo, al introducir nginx:1.7.9, la imagen se extrae de Docker Hub.

  • Select image pull policy

    ACK admite las siguientes políticas de extracción de imágenes (imagePullPolicy):

    • IfNotPresent (predeterminado): Si la imagen ya existe en el nodo, se usa la versión local. De lo contrario, la imagen se extrae del repositorio.

    • Always: La imagen siempre se extrae del repositorio cada vez que se crea un Pod.

    • Never: Solo se utiliza la imagen local. Si la imagen no está presente en el nodo, el Pod no se inicia correctamente.

  • Set image pull Secret

    Cuando use imágenes de ACR o de un repositorio de terceros, es posible que deba configurar un Secret para extraer las imágenes.

    Nota

    Para las instancias de ACR Enterprise Edition, puede usar un componente sin contraseña para extraer imágenes. Para obtener más información, consulte Install and use the password-free component for unmanaged clusters.

Resource limit

Los resources.limits del contenedor. Para obtener más información, consulte Requests and Limits.

Resource requests

Las solicitudes (resources.requests) de recursos del contenedor. Para obtener más información, consulte Requests and Limits.

Container start parameter

  • stdin: Indica que la entrada estándar está habilitada para el contenedor.

  • tty: Asigna una terminal virtual al contenedor para que pueda enviar señales al mismo.

Estas dos opciones suelen usarse juntas para conectar una terminal (tty) a la entrada estándar del contenedor (stdin). Por ejemplo, un programa interactivo recibe la entrada estándar del usuario y la muestra en la terminal.

Privileged container

  • Si selecciona esta casilla, privileged se establece en true para habilitar el modo privilegiado.

  • Si no selecciona esta casilla, privileged se establece en false para deshabilitar el modo privilegiado.

El modo privilegiado otorga a un contenedor casi el mismo nivel de acceso al sistema operativo del host que los procesos que se ejecutan en él. Esto incluye acceso a dispositivos de hardware y la capacidad de montar sistemas de archivos.

Init containers

Seleccione esta opción para crear un contenedor de inicialización.

Los contenedores de inicialización se ejecutan y finalizan antes de que comiencen los contenedores principales de la aplicación. Se pueden usar para retrasar el inicio de los contenedores de la aplicación hasta que se cumplan ciertas condiciones previas, como esperar a que un servicio dependiente esté disponible. Los contenedores de inicialización también pueden contener herramientas de utilidad o scripts de configuración que no están presentes en la imagen de la aplicación para inicializar el entorno de ejecución, como establecer parámetros del kernel o generar archivos de configuración. Para obtener más información, consulte Init Containers en la documentación de Kubernetes.

Ports

image

Parámetro

Descripción

Name

Nombre del puerto del contenedor. Tiene fines únicamente de identificación y no tiene impacto funcional.

Container Port

Puerto que expone el contenedor. El valor debe ser un número entero entre 1 y 65535. Un contenedor debe exponer un puerto para ser accesible desde fuera del Pod y permitir la comunicación con otros contenedores en el mismo Pod.

Todos los contenedores en un Pod comparten el mismo namespace de red, por lo que los números de puerto deben ser únicos dentro de un Pod.

Protocol

Protocolo de capa 4 utilizado por el puerto del contenedor. Valores válidos: TCP y UDP.

Environment variables

image

Parámetro

Descripción

Type

Método utilizado para establecer variables de entorno. Se admiten los siguientes tipos:

  • Custom

    Puede usar env para codificar directamente variables de entorno en una carga de trabajo.

  • ConfigMaps

    Use envFrom para recuperar datos de configuración no sensibles de un ConfigMap.

  • Secrets

    Puede usar envFrom para recuperar información sensible almacenada en un Secret, como contraseñas y claves de API.

  • Value/ValueFrom

    Use value/valueFrom para recuperar otras variables de entorno o valores predefinidos.

  • ResourceFieldRef

    Use resourceFieldRef para obtener información sobre los recursos del nodo donde se ejecuta el Pod.

Puede hacer referencia a todos los pares clave-valor de un ConfigMap o Secret. Por ejemplo, para hacer referencia a todos los datos de un Secret, seleccione el tipo Secrets y luego seleccione el Secret de destino sin especificar una clave.Variables de entorno

El YAML correspondiente también hace referencia a todo el Secret.yaml

Para seleccionar una referencia de recurso, puede usar el parámetro resourceFieldRef. Este parámetro hace referencia a los valores de recursos declarados para un contenedor en la especificación del Pod y pasa estos valores al contenedor como variables de entorno. El YAML correspondiente es el siguiente:

image

Variable Key

Nombre de la variable de entorno dentro del Pod.

Value/ValueFrom

Valor de la variable de entorno o una referencia a un valor de otro origen.

Health checks

image

Parámetro

Descripción

Liveness probe: Una sonda de actividad comprueba si un contenedor se está ejecutando. Si la sonda falla varias veces, kubelet reinicia el contenedor. Esto ayuda a resolver problemas como bloqueos donde el contenedor se ejecuta pero no puede avanzar.

Tipo de solicitud: Solicitud HTTP

Envía una solicitud HTTP al contenedor para comprobar periódicamente su estado.

  • Protocol: HTTP o HTTPS.

  • Path: Ruta de acceso en el servidor HTTP.

  • Port: Puerto o nombre del puerto expuesto por el contenedor. El número de puerto debe ser un entero entre 1 y 65535.

  • HTTP Headers: Encabezados personalizados para establecer en la solicitud HTTP. Puede especificar varios encabezados con la misma clave.

  • Initial Delay (segundos): Número de segundos que se deben esperar después de que se inicia un contenedor antes de realizar la primera sonda. Corresponde al parámetro initialDelaySeconds. El valor predeterminado es 3 segundos.

  • Probe interval (segundos): Intervalo para realizar una sonda, especificado por el parámetro periodSeconds. El valor predeterminado es 10 segundos y el valor mínimo es 1 segundo.

  • Timeout (segundos): Periodo de tiempo de espera para una sonda, especificado por el parámetro timeoutSeconds. El valor predeterminado es 1 segundo y el valor mínimo es 1 segundo.

  • Healthy threshold: Número mínimo de sondas exitosas consecutivas necesarias para marcar el contenedor como saludable después de un fallo. Valor predeterminado: 1. Valor mínimo: 1. Para una sonda de actividad, este valor debe ser 1.

  • Unhealthy threshold: Número mínimo de sondas fallidas consecutivas necesarias para marcar el contenedor como no saludable. Valor predeterminado: 3. Valor mínimo: 1.

Tipo de solicitud: Conexión TCP

Kubelet intenta abrir un socket TCP en el puerto especificado. Si se establece la conexión, el contenedor se considera saludable. De lo contrario, se considera que ha fallado.

  • Port: Puerto o nombre del puerto expuesto por el contenedor. El número de puerto debe ser un entero entre 1 y 65535.

  • Initial delay (segundos): Valor del parámetro initialDelaySeconds. Es el número de segundos que se deben esperar después de que se inicia un contenedor antes de realizar la primera sonda. El valor predeterminado es 15 segundos.

  • Probe frequency (segundos): Intervalo para realizar la sonda, especificado por el parámetro periodSeconds. El valor predeterminado es 10 segundos y el valor mínimo es 1 segundo.

  • Timeout (segundos): Periodo de tiempo de espera para una sonda. Corresponde al parámetro timeoutSeconds. El valor predeterminado es 1 segundo y el valor mínimo es 1 segundo.

  • Healthy threshold: Número mínimo de sondas exitosas consecutivas necesarias para marcar el contenedor como saludable después de un fallo. Valor predeterminado: 1. Valor mínimo: 1. Para una sonda de actividad, este valor debe ser 1.

  • Unhealthy threshold: Número mínimo de sondas fallidas consecutivas necesarias para marcar el contenedor como no saludable. Valor predeterminado: 3. Valor mínimo: 1.

Tipo de solicitud: Línea de comandos

Ejecuta un comando dentro del contenedor para determinar su estado de salud.

  • Command: Comando utilizado para sondear la salud del contenedor.

  • Initial delay (segundos): Valor de initialDelaySeconds, que es el número de segundos que se deben esperar después de que se inicia un contenedor antes de realizar la primera sonda. El valor predeterminado es 5 segundos.

  • Probe Interval (segundos): Intervalo de tiempo para realizar una sonda. Corresponde al parámetro periodSeconds. El valor predeterminado es 10 segundos y el valor mínimo es 1 segundo.

  • Timeout (segundos): Parámetro timeoutSeconds, que especifica el periodo de tiempo de espera para una sonda. El valor predeterminado es 1 segundo. El valor mínimo es 1 segundo.

  • Healthy threshold: Número mínimo de sondas exitosas consecutivas necesarias para marcar el contenedor como saludable después de un fallo. Valor predeterminado: 1. Valor mínimo: 1. Para una sonda de actividad, este valor debe ser 1.

  • Unhealthy threshold: Número mínimo de sondas fallidas consecutivas necesarias para marcar el contenedor como no saludable. Valor predeterminado: 3. Valor mínimo: 1.

Readiness probe: Una sonda de preparación comprueba si un contenedor está listo para aceptar tráfico. Un Pod se agrega como backend a un Service solo después de que su sonda de preparación tenga éxito.

Startup Probes: Estas sondas se ejecutan solo cuando un contenedor se inicia para comprobar si lo ha hecho correctamente. Las Liveness Probes y las Readiness Probes se ejecutan solo después de que la sonda de inicio tenga éxito.

Nota

Las sondas de inicio solo son compatibles con clústeres de Kubernetes que ejecutan la versión 1.18 o posterior.

Lifecycle

image

Parámetro

Descripción

Start

Establece el comando y los argumentos de inicio para el contenedor. Estos definen las operaciones que se realizan cuando se inicia el contenedor y se utilizan para inicializar el servicio de la aplicación. Es adecuado para despliegues de aplicaciones que requieren variables de entorno específicas, puntos de montaje o asignaciones de puertos.

Post Start

Establece un comando que se ejecuta inmediatamente después de crear un contenedor. Es útil para realizar tareas como inicializar configuraciones o ejecutar scripts antes de que comience el proceso principal.

Pre Stop

Establece un comando que se ejecuta inmediatamente antes de finalizar un contenedor. Es útil para detener correctamente el proceso de la aplicación y garantizar la consistencia de los datos, así como para evitar la pérdida de datos o anomalías en el servicio.

Puede configurar controladores de inicio, post-inicio y pre-parada para el ciclo de vida de un contenedor. Para obtener más información, consulte Attach Handlers to Container Lifecycle Events en la documentación de Kubernetes.

Volumes

Parámetro

Descripción

Add Local Storage

Monta un volumen de almacenamiento local del nodo host en el Pod. Los datos en un volumen de almacenamiento local se guardan en el nodo y se pierden si el nodo se apaga. El almacenamiento local también permite montar Secrets, ConfigMaps y otros tipos de volúmenes efímeros. Antes de usar volúmenes de almacenamiento, lea Storage para comprender los conceptos básicos de almacenamiento en ACK.

Add PVC (PersistentVolumeClaim)

Monta un volumen de almacenamiento en la nube en el Pod para conservar datos importantes. Un volumen de almacenamiento en la nube es un servicio de almacenamiento remoto independiente de los nodos worker y no se ve afectado por cambios en los nodos. ACK admite varios servicios de almacenamiento de Alibaba Cloud, como discos en la nube, Apsara File Storage NAS y Object Storage Service (OSS). Antes de usar volúmenes de almacenamiento, lea Storage para comprender los conceptos básicos de almacenamiento en ACK.

Log

Collection configuration

  • Log Service: Se crea un Logstore en el proyecto de Log Service asociado con el clúster para almacenar los registros recopilados. Antes de usar registros, lea Log Management para comprender los conceptos básicos de registro en ACK.

  • Ruta del registro en el contenedor. Establézcalo en Stdout para recopilar los registros de salida estándar del contenedor.

Custom Tag

Después de establecer una etiqueta personalizada, la etiqueta se recopila junto con la salida de registro del contenedor. Esto facilita el análisis, como estadísticas y filtrado de registros.

Configuración avanzada

Tarjeta de configuración

Parámetro

Descripción

Access Control

Services

Un Service proporciona un endpoint estable y unificado de capa 4 (capa de transporte) para un grupo de Pods. Es un recurso obligatorio para exponer una carga de trabajo. Los Services admiten varios tipos, incluidos Cluster IP, Node Port y Load Balancer. Antes de configurar un Service, consulte Service management para comprender los conceptos básicos.

Ingresses

Un Ingress proporciona un punto de entrada de capa 7 (capa de aplicación) para múltiples Services en un clúster y reenvía solicitudes a diferentes Services según la coincidencia de nombres de dominio. Antes de usar un Ingress, debe instalar un controlador de Ingress. ACK ofrece varias opciones para diferentes escenarios. Para obtener más información, consulte Comparison of NGINX Ingress Controller, ALB Ingress Controller, and MSE Ingress gateways.

Scaling

Horizontal Pod Autoscaler (HPA)

Horizontal Pod Autoscaler (HPA) escala automáticamente el número de Pods según las métricas de rendimiento del contenedor. Esto le ayuda a ajustar los recursos totales utilizados por su carga de trabajo en respuesta a fluctuaciones en la carga de negocio, escalando horizontalmente para manejar cargas altas y reduciendo la escala para ahorrar recursos durante cargas bajas. Para obtener más información, consulte Use a HorizontalPodAutoscaler to automatically scale Pods.

Cron Horizontal Pod Autoscaler (CronHPA)

Cron Horizontal Pod Autoscaler (CronHPA) escala las cargas de trabajo en horarios programados. Es adecuado para escenarios con cambios cíclicos predecibles en la carga de negocio, como los picos de tráfico en plataformas de redes sociales después del almuerzo y la cena. Para obtener más información, consulte Use a CronHPA to automatically scale Pods.

Scheduling

Upgrade strategy

Estrategia utilizada para reemplazar Pods antiguos por nuevos cuando cambia la configuración del Pod.

  • rolling update: Reemplaza los Pods uno por uno o en lotes. El siguiente reemplazo comienza solo después de que los nuevos Pods se ejecuten correctamente. Este método garantiza la continuidad del servicio, pero los clientes pueden acceder a diferentes versiones de Pods simultáneamente durante la actualización.

  • recreate: Finaliza todos los Pods existentes a la vez antes de crear nuevos. Esto puede causar una interrupción del servicio, pero garantiza que todos los Pods ejecuten la misma versión después de la actualización.

  • Node affinity

  • Pod affinity

  • Pod anti-affinity

  • Tolerations

La afinidad, antiafinidad y tolerancias se utilizan para controlar cómo se programan los Pods en los nodos. Estas operaciones son complejas y requieren planificación previa. Para obtener más información, consulte Scheduling.

Labels and annotations

Pod labels

Agregue una etiqueta a cada Pod que pertenezca a la carga de trabajo. En un clúster, recursos como cargas de trabajo y Services usan etiquetas para coincidir con los Pods. De forma predeterminada, ACK agrega una etiqueta con el formato app:(nombre de la aplicación) a los Pods.

Pod annotations

Agrega anotaciones a cada Pod en esta carga de trabajo. Algunas funciones en ACK utilizan anotaciones, que puede agregar o modificar según sea necesario al usar esas funciones.

YAML de carga de trabajo de ejemplo

apiVersion: apps/v1
kind: Deployment    # The type of workload.
metadata:
  name: nginx-test
  namespace: default  # The namespace. Change it based on your requirements.
  labels:
    app: nginx
spec:
  replicas: 2  # The number of Pod replicas.
  selector:
    matchLabels:
      app: nginx
  template: # The Pod template.
    metadata:
      labels: # The Pod labels.
        app: nginx 
      annotations: # The Pod annotations.
        description: "This is an application deployment"
    spec:
      containers:
      - name: nginx  # The container name.
        image: nginx:1.7.9  # The NGINX image and its version.
        ports:
        - name: nginx  # The port name.
          containerPort: 80  # The port exposed by the container.
          protocol: TCP  # The protocol. You can set it to TCP or UDP. Default value: TCP.
        command: ["/bin/sh"]  # The entrypoint of the container.
        args: [ "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY) && exec nginx -g 'daemon off;'"] # Prints variables and starts NGINX.
        stdin: true  # Enables standard input.
        tty: true    # Allocates a pseudo-TTY.
        env:
          - name: SPECIAL_LEVEL_KEY
            valueFrom:
              configMapKeyRef:
                name: special-config  # The name of the ConfigMap.
                key: SPECIAL_LEVEL    # The key in the ConfigMap.
        securityContext:
          privileged: true  # Enables privileged mode if set to true. Default value: false.
        resources:
          limits:
            cpu: "500m"               # The maximum amount of CPU, 500 millicores.
            memory: "256Mi"           # The maximum amount of memory, 256 MiB.
            ephemeral-storage: "1Gi"  # The maximum amount of ephemeral storage, 1 GiB.
          requests:
            cpu: "200m"               # The minimum requested amount of CPU, 200 millicores.
            memory: "128Mi"           # The minimum requested amount of memory, 128 MiB.
            ephemeral-storage: "500Mi" # The minimum requested amount of ephemeral storage, 500 MiB.
        livenessProbe:  # The configuration of the liveness probe.
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:  # The configuration of the readiness probe.
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 5
          periodSeconds: 10
        volumeMounts:
        - name: tz-config
          mountPath: /etc/localtime
          readOnly: true
      volumes:
      - name: tz-config
        hostPath:
          path: /etc/localtime  # Mounts the /etc/localtime file from the host to the same path in the container.
---
# The Service definition.
apiVersion: v1
kind: Service
metadata:
  name: nginx-test-svc
  namespace: default  # The namespace. Change it based on your requirements.
  labels:
    app: nginx
spec:
  selector:
    app: nginx  # Selects Pods with the specified label.
  ports:
    - port: 80           # The port exposed by the Service in the cluster.
      targetPort: 80     # The container port that the traffic is forwarded to.
      protocol: TCP      # The protocol. Default value: TCP.
  type: ClusterIP        # The type of Service. Default value: ClusterIP (for internal access only).
---
# The Ingress definition.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  namespace: default  # The namespace. Change it based on your requirements.
  annotations:
    kubernetes.io/ingress.class: "nginx"  # Specifies the Ingress controller.
    # If you use an Alibaba Cloud SLB Ingress controller, you can add the following annotations:
    # service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "lb-xxxxxxxxxx"
    # service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: "slb.spec.s1.small"
spec:
  rules:
    - host: foo.bar.com  # Replace with your domain name.
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: nginx-test-svc # The name of the backend Service.
                port:
                  number: 80         # The port of the backend Service.
  tls:  # Optional. Used to enable HTTPS.
    - hosts:
        - foo.bar.com  # Replace with your domain name.
      secretName: tls-secret  # The name of the Secret that contains the TLS certificate.

Referencia