Kubernetes con Cloud Shell: despliegue de una aplicación de Flask de Python

En este tutorial, utilizará una cuenta de Oracle Cloud Infrastructure para configurar un cluster de Kubernetes. A continuación, crea una aplicación de Python con un marco de Flask. Por último, despliegue la aplicación en el cluster con Cloud Shell.

Las tareas clave incluyen cómo:

  • Crear un compartimento.
  • Configurar un cluster de Kubernetes en OCI.
  • Crear una aplicación Python en un marco de Flask.
  • Crear una imagen de Docker.
  • Transfiera la imagen a OCI Container Registry.
  • Utilizar Cloud Shell para desplegar la aplicación de Docker en el cluster.
  • Conectarse a su aplicación desde Internet.
Diagrama de los componentes necesarios para ejecutar una aplicación de Python, en un marco de Flask, en Oracle Cloud Infrastructure Kubernetes Engine mediante Cloud Shell.

Para obtener información adicional, consulte:

Antes de empezar

Para realizar correctamente este tutorial, debe tener lo siguiente:

Requisitos
  • Una cuenta de Oracle Cloud Infrastructure de pago. Consulte Registro en Oracle Cloud Infrastructure.
  • Cloud Shell proporciona las siguientes aplicaciones:
    • JDK 8+
    • Python 3.6.8+
    • Kubectl 1.18.10+
    • Apache Maven 3.5+
    • Docker 19.0.11+
Nota

La ventaja de utilizar Cloud Shell es que todas las herramientas necesarias para gestionar la aplicación ya están instaladas y listas para usarse.

1. Preparación

Prepare su entorno para crear y desplegar la aplicación.

Comprobación de los límites de servicio
  1. Conéctese a la consola de Oracle Cloud Infrastructure.
  2. Abra el menú de navegación y haga clic en Gobernanza y administración. En Gobernanza, haga clic en Límites, cuotas y uso.
  3. Busque el límite de servicio para Regiones:
    • Filtre las siguientes opciones:
      • Servicio: regiones
      • Ámbito: Arrendamiento
      • Recurso: recuento de regiones suscritas
      • Compartimento: <tenancy-name> (root)
    • Busque el límite de servicio:
      • Nombre de límite: subscribed-region-count
      • Límite de servicio: como mínimo 2
  4. Busque el recuento de núcleos informáticos disponibles para la unidad VM.Standard.E3.Flex:
    • Filtre las siguientes opciones:
      • Servicio: Recursos informáticos
      • Alcance: <first-availability-domain>. Ejemplo: EMlr:US-ASHBURN-AD-1
      • Recurso: núcleos para instancias Standard.E3.Flex y BM.Standard.E3.128
      • Compartimento: <tenancy-name> (root)
    • Busque el recuento de núcleos disponibles:
      • Nombre de límite: standard-e3-core-ad-count
      • Disponible: como mínimo 1
    • Repita el procedimiento para Ámbito: <second-availability-domain> y <third-availability-domain>. Cada región debe tener al menos un núcleo disponible para esta unidad.
  5. Averigüe si tiene 50 GB de volumen en bloque disponibles:
    • Filtre las siguientes opciones:
      • Service: Block Volume
      • Alcance: <first-availability-domain>. Ejemplo: EMlr:US-ASHBURN-AD-1
      • Recurso: Tamaño de volumen (GB)
      • Compartimento: <tenancy-name> (root)
    • Busque el recuento de núcleos disponibles:
      • Nombre de límite: total-storage-gb
      • Disponible: mínimo 50
    • Repita el procedimiento para Ámbito: <second-availability-domain> y <third-availability-domain>. Cada región debe tener al menos 50 GB de volumen en bloque disponibles.
  6. Descubra cuántos equilibradores de carga flexibles tiene disponibles:
    • Filtre las siguientes opciones:
      • Servicio: LbaaS
      • Alcance: <your-region>. Ejemplo: us-ashburn-1
      • Recurso: <blank>
      • Compartimento: <tenancy-name> (root)
    • Busque el recuento de las siguientes unidades
      • Nombre de límite: lb-flexible-bandwidth-count
      • Disponible: como mínimo 1
Nota

Con este tutorial se crean tres instancias informáticas con una unidad VM.Standard.E2.1 para los nodos de cluster. Para utilizar otra unidad, filtre por su recuento de núcleos. Por ejemplo, para VM.Standard2.4, filtre por Núcleos para instancias de máquina virtual y dedicadas basadas en Standard2 y obtenga el recuento.

Para obtener una lista de todas las unidades, consulte Unidades VM Standard.

Nota

Con este tutorial se crean tres instancias informáticas con una unidad VM.Standard.E3.Flex para los nodos de cluster. Para utilizar otra unidad, filtre por su recuento de núcleos. Por ejemplo, para VM.Standard2.4, filtre por Núcleos para instancias de máquina virtual y dedicadas basadas en Standard2 y obtenga el recuento.

Para obtener una lista de todas las unidades, consulte Unidades VM Standard.

Nota

En este tutorial se utiliza un flujo de trabajo de creación rápida para crear un cluster con una subred regional pública que aloja un equilibrador de carga flexible. Para utilizar un equilibrador de carga diferente, puede utilizar un flujo de trabajo personalizado para especificar explícitamente los recursos de red existentes que utilizar, incluidas las subredes existentes en las que crear los equilibradores de carga.

Para utilizar otro ancho de banda, filtre por su recuento, por ejemplo ancho de banda de 100 Mbps o ancho de banda de 400 Mbps.

Creación de un token de autorización
  1. En la barra de navegación, seleccione el menú Perfil y, a continuación, seleccione Configuración de usuario o Mi perfil, según la opción que vea.
  2. Haga clic en Tokens de autenticación.
  3. Haga clic en Generar token.
  4. Asígnele una descripción.
  5. Haga clic enGenerar token.
  6. Copie el token y guárdelo.
  7. Haga clic en Cerrar.
Nota

Asegúrese de guardar el token justo después de crearlo. No tendrá acceso a él más adelante.
Recopilación de la información necesaria
  1. Recopile la siguiente información de credenciales de la consola de Oracle Cloud Infrastructure.
    • Nombre de arrendamiento: <tenancy-name>
      • En la barra de navegación, seleccione el menú Profile y, a continuación, seleccione Tenancy: <your_tenancy_name>.
    • Espacio de nombre de arrendamiento: <tenancy-namespace>
      • En la barra de navegación, seleccione el menú Profile y, a continuación, seleccione Tenancy: <your_tenancy_name>.
      • Copie el valor para Espacio de nombres de almacenamiento de objetos.
      Nota

      En algunas cuentas, el nombre de arrendamiento y el espacio de nombres son diferentes. Asegúrese de utilizar el espacio de nombres en este tutorial.
    • OCID de arrendamiento: <tenancy-ocid>
      • En la barra de navegación, seleccione el menú Perfil y, a continuación, seleccione Configuración de usuario o Mi perfil, según la opción que vea.
      • Copiar OCID.
    • Nombre de usuario: <user-name>
      • En la barra de navegación, seleccione el menú Perfil y, a continuación, seleccione Configuración de usuario o Mi perfil, según la opción que vea.
    • OCID de usuario: <user-ocid>
      • En la barra de navegación, seleccione el menú Perfil y, a continuación, seleccione Configuración de usuario o Mi perfil, según la opción que vea.
      • Copiar OCID.
  2. Busque la información de su región.
    • Región: <region-identifier>
      • En la barra de navegación superior de la consola, busque la región. Ejemplo: Este de EE. UU. (Ashburn).
      • Busque el identificador de región en la tabla de Regiones y dominios de disponibilidad.
      • Ejemplo: us-ashburn-1.
    • clave de región: <region-key>
  3. Copie el token de autenticación de la sección Crear un token de autenticación.
    • Token de autenticación: <auth-token>

2. Configuración de un cluster

Instale y configure las opciones de gestión para el cluster de Kubernetes. Posteriormente, despliegue la aplicación en este cluster.

Adición de una política de compartimento

Si su nombre de usuario está en el grupo Administradores, omita esta sección. De lo contrario, haga que el administrador agregue la siguiente política a su arrendamiento:

allow group <the-group-your-username-belongs> to manage compartments in tenancy

Con este privilegio, puede crear un compartimento para todos los recursos del tutorial.

Pasos para agregar la política
  1. En la barra de navegación, seleccione el menú Perfil y, a continuación, seleccione Configuración de usuario o Mi perfil, según la opción que vea.
  2. En el panel de la izquierda, haga clic en Grupos.
  3. En un bloc de notas, copie el nombre de grupo al que pertenece el nombre de usuario.
  4. Abra el menú de navegación y haga clic en Identidad y seguridad. En Identidad, haga clic en Políticas.
  5. Haga clic en Crear política.
  6. Rellene la siguiente información:
    • Nombre: manage-compartments
    • Descripción: Allow the group <the-group-your-username-belongs> to list, create, update, delete and recover compartments in the tenancy.
    • Compartimento: <your-tenancy>(root)
  7. En Creador de política, haga clic en Mostrar editor manual.
  8. Pegue la siguiente política:
    allow group <the-group-your-username-belongs> to manage compartments in tenancy
  9. Haga clic en Crear.

De referencia

Tipo de recurso compartments en Combinaciones de verbos + tipo de recurso para IAM

Creación de un compartimento

Cree un compartimento para los recursos que cree en este tutorial.

  1. Conéctese a la consola de Oracle Cloud Infrastructure.
  2. Abra el menú de navegación y haga clic en Identidad y seguridad. En Identidad, haga clic en Compartimentos.
  3. Haga clic en Crear compartimento.
  4. Rellene la siguiente información:
    • Nombre: <your-compartment-name>
    • Descripción: Compartment for <your-description>.
    • Compartimento principal: <your-tenancy>(root)
  5. Haga clic en Crear compartimento.

Referencia: Creación de un compartimento

Adición de una política de recursos

Si su nombre de usuario está en el grupo Administradores, omita esta sección. De lo contrario, haga que el administrador agregue la siguiente política a su arrendamiento:

allow group <the-group-your-username-belongs> to manage all-resources in compartment <your-compartment-name>

Con este privilegio, puede gestionar todos los recursos en el compartimento, otorgándole esencialmente derechos administrativos en ese compartimento.

Pasos para agregar la política
  1. Abra el menú de navegación y haga clic en Identidad y seguridad. En Identidad, haga clic en Políticas.
  2. Seleccione el compartimento en la lista Compartimento.
  3. Haga clic en Crear política.
  4. Rellene la siguiente información:
    • Nombre: manage-<your-compartment-name>-resources
    • Descripción: Allow users to list, create, update, and delete resources in <your-compartment-name>.
    • Compartimento: <your-tenancy>(root)
  5. Para Creador de política, seleccione las siguientes opciones:
    • Casos de uso de política: Compartment Management
    • Plantillas de políticas comunes: Let compartment admins manage the compartment
    • Grupos: <the-group-your-username-belongs>
    • Ubicación: <your-tenancy>(root)
  6. Haga clic en Crear.

De referencia

Políticas comunes

Creación de un cluster con 'Creación rápida'

Cree un cluster con la configuración por defecto y los nuevos recursos de red mediante el flujo de trabajo 'Creación rápida'.

  1. Conéctese a la consola de Oracle Cloud Infrastructure.
  2. Abra el menú de navegación y haga clic en Servicios para desarrolladores. En Contenedores y artefactos, haga clic en Clusters de Kubernetes (OKE).
  3. Haga clic en Crear cluster.
  4. Seleccione Creación rápida.
  5. Haga clic en Iniciar flujo de trabajo.

    Se muestra el cuadro de diálogo Creación rápida de cluster.

  6. Rellene la siguiente información.
    • Nombre: <your-cluster-name>
    • Compartimento: <your-compartment-name>
    • Versión de Kubernetes: <take-default>
    • Punto final público de API de Kubernetes:

      El cluster de Kubernetes se aloja en una subred pública con una dirección IP pública asignada automáticamente.

    • Nodos de trabajo de Kubernetes: Trabajo privado

      Los nodos de trabajo de Kubernetes se alojan en una subred privada.

    • Unidad: VM.Standard.E3.Flex
    • Seleccione el número de OCPU: 1
    • Cantidad de memoria (GB): 16
    • Número de nodos: 3
    • Ancho de banda de red: 1.0 (este valor se calcula por recuento de OCPU).
    • Total máximo de VNIC: 2 (este valor se calcula por recuento de OCPU).
  7. Haga clic en Mostrar Opciones Avanzadas.

    Mantenga los valores por defecto.

    • Especifique un tamaño de volumen de inicio: desactive la casilla de control.
    • Verificación de imagen: desactive la casilla de control.
    • Agregar una clave SSH: no hay ninguna clave SSH
  8. Haga clic en Siguiente.

    Se muestran todas las opciones. Revíselas para asegurarse de que todo está configurado correctamente.

  9. Haga clic en Crear cluster.

    Se muestran los servicios configurados para el cluster.

  10. Haga clic en Cerrar.
  11. Hágase un café. El cluster tarda unos minutos en crearse.
Ha creado correctamente un cluster de Kubernetes.
Configuración de Cloud Shell para acceder al cluster

Después de crear un cluster de Kubernetes, configure Cloud Shell para acceder al cluster.

  1. Conéctese a la consola de Oracle Cloud Infrastructure.
  2. Abra el menú de navegación y haga clic en Servicios para desarrolladores. En Contenedores y artefactos, haga clic en Clusters de Kubernetes (OKE).
  3. Haga clic en el enlace a <your-cluster>.

    Aparece la información sobre su cluster.

  4. Haga clic en Acceder al cluster.
  5. Haga clic en Acceso a Cloud Shell. Realice los pasos del cuadro de diálogo. Se proporcionan los siguientes pasos para su referencia.
  6. Haga clic en Iniciar Cloud Shell. También puede, en el menú principal, hacer clic en el icono de Cloud Shell (icono-de-cloud-shell) e iniciar una sesión.
  7. Compruebe la versión de la CLI de oci y verifique que Cloud Shell esté funcionando.
    oci -v
  8. Cree el archivo kubeconfig para su configuración. Utilice la información del cuadro de diálogo Acceso a su cluster.
    oci ce cluster create-kubeconfig <use data from dialog>
    Aparece un mensaje que indica lo siguiente:
    New config written to the Kubeconfig file <your-home-directory>/.kube/config
    Nota

    Si el archivo config no se almacena en su ubicación por defecto (~/.kube/config, debe exportar la variable de entorno KUBECONFIG para que apunte a la ubicación.
    export KUBECONFIG=$HOME/<new-location>/config
    Nota

    Al trabajar con más de un cluster, especifique un archivo de configuración específico en la línea de comandos. Ejemplo:
    kubectl --kubeconfig=</path/to/config/file> <some-command>
  9. Pruebe la configuración del cluster con el siguiente comando.

    Muestre los clusters:

    kubectl get service

Con su configuración de acceso al cluster, ya puede preparar la aplicación para su despliegue.

3. Creación de la aplicación de Docker

A continuación, configure el marco de Flask en Cloud Shell. A continuación, cree y ejecute una aplicación de Python.

Creación de una aplicación local

Cree su aplicación de Flask.

  1. Instale Flask.
    pip3 install --user Flask
  2. Cree un directorio para la aplicación.
    mkdir python-hello-app
  3. Cambie al directorio python-hello-app.
    cd python-hello-app
  4. Cree una aplicación "Hello, World!".

    Cree el archivo:

    vi hello.py

    En el archivo, introduzca el siguiente texto:

    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/')
    def hello_world():
        return '<h1>Hello World from Flask!</h1>'
    
    if __name__ == "__main__":
        app.run(host="0.0.0.0", port=int("5000"), debug=True)
  5. Guarde el archivo.
Ejecución de la aplicación local

Ejecute la aplicación de Flask.

  1. Ejecute el programa de Python.
    export FLASK_APP=hello.py
    export FLASK_ENV=development
    python3 hello.py

    Produce la siguiente salida:

    * Serving Flask app 'hello' (lazy loading)
    * Environment: development
    * Debug mode: on
    * Running on all addresses.
    WARNING: This is a development server. Do not use it in a production deployment.
    * Running on http://x.x.x.x:5000/ (Press CTRL+C to quit)
    * Restarting with stat
    * Debugger is active!
    * Debugger PIN: xxx-xxx-xxx                    
  2. Mueva la aplicación al segundo plano.
    • Pulse Ctrl z.
    • Introduzca el siguiente comando: bg
  3. Pruebe la aplicación con curl.
    En el terminal de Cloud Shell, introduzca el siguiente código:
    curl -X GET http://localhost:5000

    Salida:

    <h1>Hello World from Flask!</h1>
  4. Pare la aplicación que se está ejecutando.
    • Cuando termine las pruebas, obtenga el ID de proceso para la aplicación.
      ps -ef
    • Pare el proceso.
      kill <your-pid>

Ha creado correctamente una aplicación de Python local con el marco de Flask.

Referencias:

Para obtener más información sobre Flask, consulte la documentación de Flask.

Creación de una imagen de Docker

A continuación, cree una imagen de Docker para la aplicación de Flask.

  1. En primer lugar, asegúrese de que está en el directorio python-hello-app.
  2. Cree un archivo denominado Dockerfile:

    Cree el archivo:

    vi Dockerfile

    En el archivo, introduzca el siguiente texto y guarde el archivo:

    FROM python:3.9-slim-buster
    ADD hello.py /
    COPY . /app
    WORKDIR /app
    RUN pip3 install Flask
    EXPOSE 5000
    CMD [ "python3", "./hello.py" ]
  3. Cree una imagen de Docker:
    docker build -t python-hello-app .

    Aparece un mensaje que indica que se ha realizado correctamente.

    [INFO] BUILD SUCCESS
    Successfully tagged python-hello-app:latest
  4. Ejecute la imagen de Docker:
    docker run --rm -p 5000:5000 python-hello-app:latest &
  5. Pruebe la aplicación con el comando curl:
    curl -X GET http://localhost:5000
    Si obtiene <h1>Hello World from Flask!</h1>, la imagen de Docker se está ejecutando. Ahora puede transferir la imagen a Container Registry.
  6. Pare la aplicación que se está ejecutando.
    • Cuando termine las pruebas, obtenga el ID de proceso para la aplicación.
      ps -ef
    • Pare el proceso.
      kill <your-pid>
¡Enhorabuena! Ha creado correctamente una imagen de Docker de Flask de Python.

4. Despliegue de su imagen de Docker

Con la imagen de Python creada, ahora puede desplegarla.

Creación de un repositorio de Docker
  1. Abra el menú de navegación y haga clic en Servicios para desarrolladores. En Contenedores y artefactos, haga clic en Container Registry.
  2. En la navegación situada en la parte izquierda, seleccione <your-compartment-name>.
  3. Haga clic en Crear repositorio.
  4. Cree un repositorio privado con el nombre de repositorio seleccionado:
    <repo-name> = <image-path-name>/<image-name>

    Ejemplo: flask-apps/python-hello-app

    Ahora está listo para transferir su imagen local a Container Registry.
    Nota

    Antes de poder transferir una imagen de Docker a un repositorio de Registry, el repositorio debe existir en el compartimento. Si el repositorio no existe, el comando push de Docker no funciona correctamente.
    Nota

    La barra diagonal en un nombre de repositorio no representa una estructura de directorio jerárquica. El valor opcional <image-path-name> facilita la organización de los repositorios.
Transferencia de la imagen local

Con la imagen de Docker local creada, transfiera la imagen al repositorio de Container Registry.

Siga estos pasos.

  1. Abra una ventana de terminal.
  2. Conéctese a Container Registry:
    docker login <region-key>.ocir.io

    Se le solicita su nombre de inicio de sesión y contraseña.

    • Nombre de usuario: <tenancy-namespace>/<user-name>
    • Contraseña: <auth-token>
  3. Muestre las imágenes de Docker locales:
    docker images

    Se muestran las imágenes de Docker en el sistema. Identifique la imagen creada en la última sección: python-hello-app

  4. Etiquete la imagen local con la URL para el registro más el nombre de repositorio, para que pueda transferirla a ese repositorio.
    docker tag <your-local-image> <repo-url>/<repo-name>
    • Cambie <repo-url> por:
      <region-key>.ocir.io/<tenancy-namespace>/
    • Cambie <repo-name> por:

      <image-folder-name>/<image-name> de la sección Creación de un repositorio de Docker.

    • Este es un ejemplo después de combinar ambos:
      docker tag python-hello-app iad.ocir.io/my-namespace/flask-apps/python-hello-app

      En este ejemplo, los componentes son:

      • URL de repositorio: iad.ocir.io/my-namespace/
      • Nombre de repositorio: flask-apps/python-hello-app
    Nota

    OCI Container Registry ahora soporta la creación de un repositorio de registro en cualquier compartimento en lugar de solo en el compartimento raíz (arrendamiento). Para transferir la imagen al repositorio creado, combine la URL del registro con el nombre de repositorio exacto. OCI Container Registry busca la coincidencia del nombre de repositorio único y transfiere la imagen.
  5. Compruebe las imágenes de Docker para ver si la imagen se ha copiado.
    docker images
    • La imagen etiquetada o la imagen copiada tiene el mismo ID de imagen que la imagen local.
    • El nombre de imagen copiada es:
      <region-key>.ocir.io/<tenancy-namespace>/<image-folder-name>/<image-name>
  6. Transfiera la imagen a Container Registry.
    docker push <copied-image-name>:latest
    Ejemplo:
    docker push iad.ocir.io/my-namespace/flask-apps/python-hello-app:latest
  7. Abra el menú de navegación y haga clic en Servicios para desarrolladores. En Contenedores y artefactos, haga clic en Container Registry.

Busque la imagen en Container Registry una vez que se haya completado el comando push.

Despliegue de la imagen
Con su imagen en Container Registry, ahora puede desplegar la imagen y la aplicación.
  1. Cree un secreto de registro para la aplicación. Este secreto autentica la imagen al desplegarla en el cluster.

    Para crear el secreto, rellene la información de esta plantilla.

    kubectl create secret docker-registry ocirsecret --docker-server=<region-key>.ocir.io  --docker-username='<tenancy-namespace>/<user-name>' --docker-password='<auth-token>'  --docker-email='<email-address>'

    Después de ejecutar el comando, aparece un mensaje similar a: secret/ocirsecret created.

  2. Verifique que se haya creado el secreto. Ejecute el siguiente comando:
    kubectl get secret ocirsecret --output=yaml

    La salida incluye información sobre el secreto en formato yaml.

  3. Determine la URL de host de la imagen de registro mediante la siguiente plantilla:
    <region-code>.ocir.io/<tenancy-namespace>/<repo-name>/<image-name>:<tag>
    Ejemplo:
    iad.ocir.io/my-namespace/flask-apps/python-hello-app:latest
  4. En el sistema, cree un archivo denominado app.yaml con el siguiente texto:
    Sustituya los siguientes marcadores de posición:
    • <your-image-url>
    • <your-secret-name>
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: app
    spec:
      selector:
        matchLabels:
          app: app
      replicas: 3
      template:
        metadata:
          labels:
            app: app
        spec:
          containers:
          - name: app
            image: <your-image-url>
            imagePullPolicy: Always
            ports:
            - name: app
              containerPort: 5000
              protocol: TCP
          imagePullSecrets:
            - name: <your-secret-name>
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: app-lb
      labels:
        app: app
      annotations:
        service.beta.kubernetes.io/oci-load-balancer-shape: "flexible"
        service.beta.kubernetes.io/oci-load-balancer-shape-flex-min: "10"
        service.beta.kubernetes.io/oci-load-balancer-shape-flex-max: "100"
    spec:
      type: LoadBalancer
      ports:
      - port: 5000
      selector:
        app: app
  5. Despliegue la aplicación con el siguiente comando.
    kubectl create -f app.yaml
    Salida:
    deployment.apps/app created
    Nota

    En el archivo app.yaml, el código después de los guiones agrega un equilibrador de carga flexible.
Prueba de su aplicación
Después de desplegar la aplicación, el equilibrador de carga puede tardar unos segundos en cargarse.
  1. Compruebe si el equilibrador de carga está activo:
    kubectl get service

    Repita el comando hasta que se asigne una dirección IP al equilibrador de carga.

    Nota

    Mientras espera el despliegue del equilibrador de carga, puede comprobar el estado del cluster con estos comandos:
    • Obtenga cada uno de los estados de pods: kubectl get pods
    • Obtenga el estado de la aplicación: kubectl get deployment
  2. Utilice la dirección IP del equilibrador de carga para conectarse a la aplicación en un explorador:
    http://<load-balancer-IP-address>:5000

    El explorador muestra: <h1>Hello World from Flask!</h1>

  3. Anule el despliegue de la aplicación del cluster. (Opcional) Para eliminar la aplicación, ejecute este comando:
    kubectl delete -f app.yaml
    Salida:
    deployment.apps/python-hello-app deleted
    service "python-hello-app-lb" deleted

    La aplicación ahora se ha eliminado del cluster.

Siguiente paso

Ha creado correctamente una aplicación Hello World de Python, la ha desplegado en un cluster de Kubernetes y la ha publicado en Internet mediante el marco de Flask.

Consulte estos sitios para obtener más información sobre el desarrollo con productos Oracle: