Deploy an application from Git using launcher from the catalog

In this tutorial you will learn how to deploy an application hosted in a git repository with a launcher application from the catalog. This method is a variation of the Deploy from catalog functionality.

What is a launcher?

The Playground catalog offers a set of launcher applications that contain predefined application stacks according to the target language that allow you to automatically launch an application from a git repository.

Launcher apps

At the top level, the launching an application in this way involves:

  1. Cloning the git repository
  2. Building the code
  3. Running the application

Notice that this method does not generate any container image, so while it may require a little more time to boot up, it is a good method to iterate and test applications directly from the repository without the need to publish a container image in a registry.

Each launcher type has a predefined workflow in which the steps to follow when deploying an application are specified. These workflows contain default instructions to build and run applications in Python, Golang and NodeJS, and instructions to server static web content. When the launcher clones the target repository it will try locating a workflow.yaml file with the custom workflow. If none is present the default workflow will be used. Check how to customize your workflow if you need to add or remove steps.


Deploy a python application

For the purpose of the tutorial, let’s deploy an example python application available at https://github.com/Carmendelope/python-launcher-example that it is loosely based on the tokenizers tutorial.

The default python workflow will install the requirements in the build step, and run the program in the exec, but in this case the program requires to download the required data to be processed before launching the application. To accomplish that, a custom workflow has been defined in which the steps to install other dependencies and download data are included. Those steps will be merged with the default python workflow before proceeding.

To deploy the application with the launcher, Open the catalog by clicking Deploy app and locate the deploy-python-app application. Select the latest version and click the Deploy app button. Then, copy the following parameters to launch the application.

components:
    - name: deploy-python-comp
      type: webservice
      properties:
        image: napptive/playground-launcher-python:3.10-v1.0.0
        cpu: "500m" 
        memory: 1024Mi
        # (Optional) if the application exposes a port
        # If you need to expose your application to Internet, use napptive-ingress trait
        # https://docs.napptive.com/oam_definitions/traits/napptive-ingress.html
        ports:
          - port: 5000
            expose: true
        env:
            # GitHub repo url
            - name: LAUNCHER_TARGET_REPO
              value: https://github.com/Carmendelope/python-launcher-example.git
            - name: LAUNCHER_MAIN_FILE_PATH
              value: "main.py"
            - name: LAUNCHER_EXEC_ARGS
              value: ""
            # (Optional) required if the GitHub repository is private
            # GitHub username
            # If you prefer to keep it a secret, use a storage trait
            # https://docs.napptive.com/oam_definitions/traits/storage.html
            - name: LAUNCHER_REPOSITORY_USER
              value: ""
            # (Optional) required if the GitHub repository is private
            # GitHub PAT
            # If you prefer to keep it a secret, use a storage trait
            # https://docs.napptive.com/oam_definitions/traits/storage.html
            - name: LAUNCHER_REPOSITORY_ACCESS_TOKEN
              value: ""
      traits: # Trait section
        - type: napptive-ingress
          properties:
            port: 5000
            path: /

When the application is running, open the endpoint and check the message Before processing value. The message changes to indicate the application status. After a few minutes (whatever it takes to run the program) the text of the endpoint should change to Post processing value.

Access the application logs to check the running steps.


Deploying from a private git repository

If you need to deploy an application from a private git repository, make sure to fill the following variables in the parameters

  • LAUNCHER_REPOSITORY_USER the user cloning the repository.
  • LAUNCHER_REPOSITORY_ACCESS_TOKEN with your GitHub user and Access token respectively