Git Product home page Git Product logo

kalisio / kargo Goto Github PK

View Code? Open in Web Editor NEW
23.0 5.0 6.0 22.5 MB

A K8S based solution to build and operate Geospatial Platforms

Home Page: https://kalisio.github.io/kargo/

License: MIT License

Shell 23.64% JavaScript 17.83% Smarty 46.06% Go 0.69% Mustache 6.63% Dockerfile 5.14%
weacast thredds kano maputnik krawler mapserver tileservergl k2 docker openaq express-gateway mapcache kubernetes helm-charts awc k8s

kargo's Introduction

Kargo

Latest Release Build Status License: MIT

A K8S based solution to build and operate Geospatial Platforms

Caution

The Dowker swarm version is no more supported. The latest available version supporting Docker Swarm is the v0.18.0.

Helm charts management

The chart management scripts (release-dev-chart.sh and release-chart.sh) both require :

  • a valid rclone configuration, ie. containing a remote/alias named kalisio_charts pointing on the object storage bucket path where we backup our charts.
  • an helm command able to push on our OCI-based registry, ie. you need to use helm registry login harbor.portal.kalisio.com/kalisio and enter the required credentials.

HOWTO generate chart dev versions

Use the ./scripts/release-dev-chart.sh. It takes a single parameter, the chart to release. If no parameter is given, it'll release all charts.

The script will package the requested chart(s) then push on our OCI registry and on a backup s3 storage.

HOWTO make a chart release

  1. Prepare the new chart version, update chart version in $CHART/Chart.yaml
  2. Push your changes to the central repository
  3. Use ./scripts/release-chart.sh $CHART where $CHART is the name of the chart to release (mapserver, kano, ...)

The script will package the chart, push on our oci registry and on a backup s3 storage. If everything is ok, it'll make a git tag named $CHART-$VERSION

Docker images management

  • kargo specific container images (tileservergl & friends ...)
    • use a commit message including [build app-name tag]

Best practices

Docker images

  • Prefer -slim images as base and use multi stage builds to reduce image sizes
  • Make your docker image run as unpriviliged user
    • If it's node based, and using a node image as base, there's a 'node' user (uid 1000) already available
      • Copy app's files using COPY --chown node
      • Make your command run as 'node' user
    • If there's no preinstalled user, create one and use it
  • Since it'll run as unpriviliged user, if you need to open ports, make sure they're >= 1024
  • Snippet to install packages with apt and clean afterwards:
RUN \
  DEBIAN_FRONTEND=noninteractive && \
  apt-get update && \
  apt-get --no-install-recommends --yes install \
    openjdk-11-jre-headless \
    ca-certificates \
    gdal-bin && \
  apt-get clean && \
  rm -rf /var/lib/apt/lists/*
  • Snippet to install dependencies with yarn and clean afterwards
RUN \
  yarn global add @weacast/grib2json@${GRIB2JSON_TAG} && \
  chmod a+x /usr/local/share/.config/yarn/global/node_modules/@weacast/grib2json/bin/grib2json && \
  yarn cache clean

Helm charts

  • Define appVersion to the docker image tag it's supposed to pull (no latest in defined charts, latest can be specified using values.yaml in infra definition)
  • Include configurable resource requests & limits
  • Include configurable security context and put sensible defaults in chart's values.yaml
  • If it's being deployed on some preprod infra, then chart version should be at least 1.0.0

License

This project is licensed under the MIT License - see the license file for details

Authors

This project is sponsored by

Kalisio

kargo's People

Contributors

claustres avatar cnouguier avatar dependabot[bot] avatar kalisio-nicolas avatar robinbourianes-kalisio avatar tristan-greffe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

kargo's Issues

Create a build script for Kano

Will allow to change the client configuration, which is fixed at build time, so requires building a new Docker image.

Use cases: change transport, change default locale, etc.

Allow to define a specific extension to a given service

The workspaces allow overriding the default Kargo configuration. Thus, it must be possible to extend a service with a specific file contained in a workspace. It could be done by specifying an environment variable in the .env file such as:
WEACAST_EXTENSION="weacast_extension.yml"

GeoServer deployment in Swarm mode

It is impossiblet to build the image when deploying with docker stack. Indeed deploy stackrequires the images to be on a registry (could be local).
Create a k-geoserver image that can be pulled easily from Kargo

MapProxy version

For now our dockerfile is working with MapProxy 1.10.4. It should be enhanced to work with 1.11.0 and above.

Mapproxy build does not work any more

It seems to be linked to a new release of pyproj

Collecting pyproj
  Downloading https://files.pythonhosted.org/packages/7f/d9/62db3608c734fdd02cb5113a89f377a8b012d14beaee6525afc029b590d4/pyproj-2.1.2.tar.gz (492kB)
  Installing build dependencies: started
  Installing build dependencies: still running...
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'error'
  Complete output from command /usr/local/bin/python /usr/local/lib/python3.5/site-packages/pip/_vendor/pep517/_in_process.py get_requires_for_build_wheel /tmp/tmpy96_da6f:
  ERROR: Minimum supported proj version is 6.0.0, installed version is 5.2.0.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.