• Stars
    star
    304
  • Rank 132,098 (Top 3 %)
  • Language Mustache
  • License
    Apache License 2.0
  • Created over 9 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The Mesosphere Universe package repository.

Mesosphere Universe

Build Status
CI Build Status
Universe Server Build Status

Mesosphere Universe registry of packages made available for DC/OS Clusters.

Table of Contents

Universe Purpose

You can publish and store packages in the Universe repository. The packages can then be consumed by DC/OS. This git repo facilitates these three necessary functions - to publish, store and consume packages. You can publish and store packages in the Universe repository. The packages can then be consumed by DC/OS. If you are new to Universe and Packages, this Get Started Guide is highly recommended.

Library dependencies

  • jq is installed in your environment.
  • python3 is installed in your environment (minimum python3.5).
  • Docker is installed in your environment.

Publish a Package

To publish a package to Universe, fork this repo and open a Pull Request. A set of automated builds will be run against the Pull Request to ensure the modifications made in the PR leave the Universe well formed. See Creating a Package for details.

Registry of Packages

The registry of published packages is maintained as the contents of this repo in the repo/packages directory. As of repository version 3.0 multiple packaging versions are allowed to co-exist in the same repository. Validation of packages are coordinated based on the packaging version defined in package.json.

Repository Consumption

In order for published packages to be consumed and installed in a DC/OS Cluster the Universe Server needs to be built and run in a location accessible by the DC/OS Cluster. See Universe Server for details on building the Universe artifacts and Server.

Publish a Package

Creating a Package

Each package has its own directory, with one subdirectory for each package revision. Each package revision directory contains the set of files necessary to create a consumable package that can be used by a DC/OS Cluster to install the package.

โ””โ”€โ”€ repo/package/F/foo
 ย ย  โ”œโ”€โ”€ 0
 ย ย  โ”‚ย ย  โ”œโ”€โ”€ command.json
 ย ย  โ”‚ย ย  โ”œโ”€โ”€ config.json
 ย ย  โ”‚ย ย  โ”œโ”€โ”€ marathon.json.mustache
 ย ย  โ”‚ย ย  โ”œโ”€โ”€ resource.json
 ย ย  โ”‚ย ย  โ””โ”€โ”€ package.json
 ย ย  โ”œโ”€โ”€ 1
 ย ย  โ”‚ย ย  โ”œโ”€โ”€ command.json
 ย ย  โ”‚ย ย  โ”œโ”€โ”€ config.json
 ย ย  โ”‚ย ย  โ”œโ”€โ”€ marathon.json.mustache
 ย ย  โ”‚ย ย  โ”œโ”€โ”€ resource.json
 ย ย  โ”‚ย ย  โ””โ”€โ”€ package.json
 ย ย  โ””โ”€โ”€ ...

package.json

Packaging Version
2.0 required
3.0 required
4.0 required

Every package in Universe must have a package.json file which specifies the high level metadata about the package.

Currently, a package can specify one of three values for .packagingVersion either 2.0 or 3.0 or 4.0; which version is declared will dictate which other files are required for the complete package as well as the schema(s) all the files must adhere to. Below is a snippet that represents a version 4.0 package.

See repo/meta/schema/package-schema.json for the full json schema outlining what properties are available for each corresponding version of a package.

{
  "packagingVersion": "4.0",
  "name": "foo",
  "version": "1.2.3",
  "tags": ["mesosphere", "framework"],
  "maintainer": "[email protected]",
  "description": "Does baz.",
  "scm": "https://github.com/bar/foo.git",
  "website": "http://bar.io/foo",
  "framework": true,
  "upgradesFrom": ["1.2.2"],
  "downgradesTo": ["1.2.2"],
  "minDcosReleaseVersion": "1.10",
  "postInstallNotes": "Have fun foo-ing and baz-ing!",
  "licenses": [{"name": "My license", "url": "http://example.com/license_url"}]
}

For the first version of the package, add this line to the beginning of preInstallNotes: This DC/OS Service is currently in preview. There may be bugs, incomplete features, incorrect documentation, or other discrepancies. Preview packages should never be used in production! It will be removed once the package has been tested and used by the community.

.minDcosReleaseVersion
Packaging Version
2.0 not supported
3.0 optional
4.0 optional

Introduced in packagingVersion 3.0, .minDcosReleaseVersion can be specified as a property of package.json. When .minDcosReleaseVersion is specified the package will only be made available to DC/OS clusters with a DC/OS Release Version greater than or equal to (>=) the value specified.

For example, "minDcosReleaseVersion" : "1.8" will prevent the package from being installed on clusters older than DC/OS 1.8.

.upgradesFrom
Packaging Version
2.0 not supported
3.0 not supported
4.0 optional

Introduced in packagingVersion 4.0, .upgradesFrom can be specified as a property of package.json. When .upgradesFrom is specified this indicates to users that the package is able to upgrade from any of the versions listed in the property. It is the resposibility of the package creator to make sure that this is indeed the case.

.downgradesTo
Packaging Version
2.0 not supported
3.0 not supported
4.0 optional

Introduced in packagingVersion 4.0, .downgradesTo can be specified as a property of package.json. When .downgradesTo is specified this indicates to users that the package is able to downgrade to any of the versions listed in the property. It is the resposibility of the package creator to make sure that this is indeed the case.

config.json

Packaging Version
2.0 optional
3.0 optional
4.0 optional

This file describes the configuration properties supported by the package, represented as a json-schema. Each property can specify whether or not it is required, a default value, as well as some basic validation.

Users can then override specific values at installation time by passing an options file to the DC/OS CLI or by setting config values through the DC/OS UI (since DC/OS 1.7).

{
  "type": "object",
  "properties": {
    "foo": {
      "type": "object",
      "properties": {
        "baz": {
          "type": "integer",
          "description": "How many times to do baz.",
          "minimum": 0,
          "maximum": 16,
          "required": false,
          "default": 4
        }
      },
      "required": ["baz"]
    }
  },
  "required": ["foo"]
}

marathon.json.mustache

Packaging Version
2.0 required
3.0 optional
4.0 optional

This file is a mustache template that when rendered will create a Marathon app definition capable of running your service.

Variables in the mustache template will be evaluated from a union object created by merging three objects in the following order:

  1. Defaults specified in config.json

  2. User supplied options from either the DC/OS CLI or the DC/OS UI

  3. The contents of resource.json

{
  "id": "foo",
  "cpus": 1.0,
  "mem": 1024,
  "instances": 1,
  "args": ["{{{foo.baz}}}"],
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "{{resource.assets.container.docker.foo23b1cfe8e04a}}",
      "network": "BRIDGE",
      "portMappings": [
        {
          "containerPort": 8080,
          "hostPort": 0,
          "servicePort": 0,
          "protocol": "tcp"
        }
      ]
    }
  }
}

See the Marathon API Documentation for more detailed instruction on app definitions.

command.json

Packaging Version
2.0 optional
3.0 optional [Deprecated]
4.0 not supported

As of packagingVersion 3.0, command.json is deprecated in favor of the .cli property of resource.json. See CLI Resources for details.

Describes how to install the package's CLI via pip, the Python package manager. This document represents the format of a Pip requirements file where each element in the array is a line in the requirements file.

{
  "pip": [
    "https://pypi.python.org/packages/source/f/foo/foo-1.2.3.tar.gz"
  ]
}

Packaging version 4.0 does not support command.json. The presence of command.json in the directory will fail the universe validation.

resource.json

Packaging Version
2.0 optional
3.0 optional
4.0 optional

This file contains all of the externally hosted resources (E.g. Docker images, HTTP objects and images) needed to install the application.

See repo/meta/schema/v2-resource-schema.json and repo/meta/schema/v3-resource-schema.json for the full json schema outlining what properties are available for each corresponding version of a package.

{
  "images": {
    "icon-small": "http://some.org/foo/small.png",
    "icon-medium": "http://some.org/foo/medium.png",
    "icon-large": "http://some.org/foo/large.png",
    "screenshots": [
      "http://some.org/foo/screen-1.png",
      "http://some.org/foo/screen-2.png"
    ]
  },
  "assets": {
    "uris": {
      "log4j-properties": "http://some.org/foo/log4j.properties"
    },
    "container": {
      "docker": {
        "23b1cfe8e04a": "some-org/foo:1.0.0"
      }
    }
  }
}
Docker Images

For the Docker image, please use the image ID for the referenced image. You can find this by pulling the image locally and running docker images some-org/foo:1.0.0.

Images

While images is an optional field, it is highly recommended you include icons and screenshots in resource.json and update the path definitions accordingly. Specifications are as follows:

  • icon-small: 48px (w) x 48px (h)
  • icon-medium: 96px (w) x 96px (h)
  • icon-large: 256px (w) x 256px (h)
  • screenshots[...]: 1200px (w) x 675px (h)

NOTE: To ensure your service icons look beautiful on retina-ready displays, please supply 2x versions of all icons. No changes are needed to resource.json - simply supply an additional icon file with the text @2x in the name before the file extension. For example, the icon icon-cassandra-small.png would have a retina-ready alternate image named [email protected].

CLI Resources
Packaging Version
2.0 not supported
3.0 optional
4.0 optional

The new .cli property allows for a package to configure native CLI subcommands for several platforms and architectures.

{
  "cli":{
    "binaries":{
      "darwin":{
        "x86-64":{
          "contentHash":[
            { "algo": "sha256", "value": "..." }
          ],
          "kind": "executable",
          "url":"https://some.org/foo/1.0.0/cli/darwin/dcos-foo"
        }
      },
      "linux":{
        "x86-64":{
          "contentHash":[
            { "algo":"sha256", "value":"..." }
          ],
          "kind":"executable",
          "url":"https://some.org/foo/1.0.0/cli/linux/dcos-foo"
        }
      },
      "windows":{
        "x86-64":{
          "contentHash":[
            { "algo":"sha256", "value":"..." }
          ],
          "kind":"executable",
          "url":"https://some.org/foo/1.0.0/cli/windows/dcos-foo"
        }
      }
    }
  }
}

Submit your Package

Developers are invited to publish a package containing their DC/OS Service by submitting a Pull Request targeted at the version-3.x branch of this repo.

Full Instructions:

  1. Fork this repo and clone the fork:
git clone https://github.com/<user>/universe.git /path/to/universe
  1. Run the verification and build script:
scripts/build.sh
  1. Verify all build steps completed successfully

  2. Ensure the license field in package.json is completed. Without a license attribution we cannot accept pull requests.

  3. Submit a pull request against the version-3.x branch with your changes. Every pull request opened will have a set of automated verifications run against it. These automated verification are reported against the pull request using the GitHub status API. All verifications must pass in order for a pull request to be eligible for merge.

  4. Respond to manual review feedback provided by the DC/OS Community.

  • Each Pull Request to Universe will also be manually reviewed by a member of the DC/OS Community. To ensure your package is able to be made available to users as quickly as possible be sure to respond to the feedback provided.
  1. Add a getting started example of how to install and use the DC/OS package. To add the example, fork the examples repo and send in a pull request. Re-use the format from the existing examples there.

Repository Consumption

In order for Universe to be consumed by DC/OS the build process needs to be run to create the Universe Server. This section describes how to test a package before releasing it to public Universe. See Local Universe for running universe server on air-gapped clusters.

Universe Server

Universe Server is a new component introduce alongside packagingVersion 3.0. In order for Universe to be able to provide packages for many versions of DC/OS at the same time, it is necessary for a server to be responsible for serving the correct set of packages to a cluster based on the cluster's version.

All Pull Requests opened for Universe and the version-3.x branch will have their Docker image built and published to the DockerHub image mesosphere/universe-server. In the artifacts tab of the build results you can find docker/server/marathon.json which can be used to run the Universe Server for testing in your DC/OS cluster. For each Pull Request, click the details link of the "Universe Server Docker image" status report to view the build results.

Build Universe Server locally

  1. Validate and build the Universe artifacts
scripts/build.sh
  1. Build the Universe Server Docker image
DOCKER_IMAGE="my-org/my-image" DOCKER_TAG="my-package" docker/server/build.bash

This will create a Docker image universe-server:my-package and docker/server/target/marathon.json on your local machine

  1. If you would like to publish the built Docker image, run
DOCKER_IMAGE="my-org/my-image" DOCKER_TAG="my-package" docker/server/build.bash publish

Run Universe Server

Using the marathon.json that is created when building Universe Server we can run a Universe Server in our DC/OS Cluster which can then be used to install packages.

Run the following commands to configure DC/OS to use the custom Universe Server (DC/OS 1.8+):

dcos marathon app add marathon.json
dcos package repo add --index=0 dev-universe http://universe.marathon.mesos:8085/repo

For DC/OS 1.7, a different URL must be used:

dcos marathon app add marathon.json
dcos package repo add --index=0 dev-universe http://universe.marathon.mesos:8085/repo-1.7

Consumption Protocol

A DC/OS Cluster can be configured to point to multiple Universe Servers; each Universe Server will be fetched via HTTPS or HTTP. When a DC/OS Cluster attempts to fetch the package set from a Universe Server, the Universe Server will provide ONLY those packages which can be run on the cluster.

For example: A DC/OS 1.6.1 Cluster will only receive packages with a minDcosReleaseVersion less than or equal to (<=) 1.6.1 in the format the DC/OS Cluster expects.

 +----------------------+   +-----------------------+
 โ”‚public universe serverโ”‚   โ”‚private universe serverโ”‚
 +----------------------+   +-----------------------+
                http \         / http
                      \       /
                       \     /
                       +-----+           +--------+
                       โ”‚DC/OSโ”‚-----------โ”‚Marathonโ”‚
                       +-----+    http   +--------+

Supported DC/OS Versions

Currently Universe Server provides support for the following versions of DC/OS

DC/OS Release Version Support Level
1.6.1 Deprecated
1.7 Deprecated
1.8 Full Support
1.9 Full Support
1.10 Full Support
1.11 Full Support
1.12 Full Support
1.13 Full Support
2.0 Full Support

More Repositories

1

marathon

Deploy and manage containers (including Docker) on top of Apache Mesos at scale.
Scala
4,068
star
2

kubernetes-mesos

A Kubernetes Framework for Apache Mesos
641
star
3

cloudkeeper

Resoto creates an inventory of your cloud, provides deep visibility, and reacts to changes in your infrastructure. โšก๏ธ
Python
637
star
4

mesos-dns

DNS-based service discovery for Mesos.
Go
483
star
5

marathon-lb

Marathon-lb is a service discovery & load balancing tool for DC/OS
Python
449
star
6

playa-mesos

Quickly build Mesos sandbox environments using Vagrant. Run apps on top!
Shell
441
star
7

chaos

A lightweight framework for writing REST services in Scala.
Scala
251
star
8

RENDLER

A rendering web crawler for Apache Mesos.
Python
246
star
9

marathon-ui

The web-ui for Marathon (https://github.com/mesosphere/marathon)
JavaScript
223
star
10

traefik-forward-auth

Go
205
star
11

mesos-docker

Project has been superseded by native docker support in Mesos
Python
177
star
12

dcos-kubernetes-quickstart

Quickstart guide for Kubernetes on DC/OS
HCL
168
star
13

dcos-commons

DC/OS SDK is a collection of tools, libraries, and documentation for easy integration of technologies such as Kafka, Cassandra, HDFS, Spark, and TensorFlow with DC/OS.
Java
157
star
14

reactjs-components

๐ŸŽจ A library of reusable React components
JavaScript
136
star
15

marathon-autoscale

Simple Proof-of-Concept for Scaling Application running on Marathon based on Utilization
Python
110
star
16

dcos-jenkins-service

Jenkins on DC/OS
Python
73
star
17

serenity

Intel:Mesosphere oversubscription technologies for Apache Mesos
C++
71
star
18

tweeter

A tiny Twitter clone for DC/OS
CSS
68
star
19

mesosaurus

Mesos task load simulator framework for (cluster and Mesos) performance analysis
Scala
59
star
20

reactive-graphql

A GraphQL implementation based around RxJS, very well suited for client side only GraphQL usage
TypeScript
57
star
21

net-modules

Apache Mesos modules for network isolation.
Python
55
star
22

konvoy-training

55
star
23

dcos-vagrant-box

Vagrant box packer for building boxes for dcos-vagrant
Shell
54
star
24

csilvm

A LVM2 CSI plugin
Go
53
star
25

spark-build

Used to build the mesosphere/spark docker image and the DC/OS Spark package
Python
53
star
26

docker-mesos-marathon-screencast

The scripts used in the Docker Clustering on Mesos with Marathon screencast.
Shell
51
star
27

dcos-docs-site

D2iQ Product Documentation and Docs Website Code
SCSS
51
star
28

mindthegap

Easily create and use bundles for air-gapped environments
Go
45
star
29

mesos-rxjava

RxJava client for Apache Mesos HTTP APIs
Java
42
star
30

letsencrypt-dcos

Let's Encrypt DC/OS!
Python
39
star
31

cd-demo

A continuous delivery demo using Jenkins on DC/OS.
Python
36
star
32

etcd-top

etcd realtime workload analyzer
Go
34
star
33

exelixi

Exelixi is a distributed framework for running genetic algorithms at scale. The framework is based on Apache Mesos and the code is mostly implemented in Python using gevent.
Python
34
star
34

tachyon-mesos

A Mesos Framework for Tachyon, a memory-centric distributed file system.
Scala
32
star
35

dcos-kafka-service

Open source Apache Kafka running on DC/OS
Python
32
star
36

kubernetes-security-benchmark

A simple way to evaluate the security of your Kubernetes deployment against sets of best practices defined by various community sources
Go
29
star
37

coreos-setup

Deprecated. See DCOS Community Edition for how to currently deploy Mesos on CoreOS
28
star
38

cnvs

CNVS (pronounced "Canvas") is a system of user interface elements and components built for use across Mesosphere sites and products. CNVS defines stylistic guidelines for the design and structure of digital interfaces in an effort to ensure consistency in brand and interaction.
CSS
28
star
39

mesos-utils

Utilities for building distributed systems on top of mesos
Scala
24
star
40

scala-sbt-mesos-framework.g8

Scala
23
star
41

marathon-example-plugins

Example Plugins for Marathon Plugin Interface
Scala
22
star
42

star

Test program for network policies.
Rust
19
star
43

charts

D2IQ Helm Chart Repository
Mustache
17
star
44

marathon-client

Java Integration Library for Mesosphere Marathon
Java
17
star
45

marathon-pkg

Packaging utilities for Marathon.
17
star
46

mesos-dns-pkg

Packaging utilities for Mesos-DNS
Makefile
16
star
47

konvoy-image-builder

Go
15
star
48

mom

Mesos on Mesos
Go
15
star
49

dcos-openvpn

14
star
50

sample_mesos_executor

Sample mesos executor
Scala
13
star
51

dklb

Expose Kubernetes services and ingresses through EdgeLB.
Go
12
star
52

kommander-applications

Go
12
star
53

usi

Deploy and manage containers (including Docker) on top of Apache Mesos at scale.
Scala
12
star
54

dcos-flink-service

Shell
11
star
55

edgerouter

DCOS edgerouter
Python
11
star
56

dcosdev

Python
10
star
57

kubernetes-base-addons

Kubernetes Addon Repository for KSphere
Go
10
star
58

kudo-spark-operator

KUDO Spark Operator
Shell
10
star
59

jackson-case-class-module

Deserialization support for Scala case classes, including proper handling of default values.
Scala
10
star
60

kudo-cassandra-operator

KUDO Cassandra Operator
Go
10
star
61

mesos-http-adapter

Java
8
star
62

exhibitor-dcos

Exhibitor on DCOS
Shell
8
star
63

ANAGRAMMER

An anagram finder for Apache Mesos
Python
8
star
64

field-notes

7
star
65

cake-builder

Cake Docker Builder
Go
7
star
66

kubeaddons-kommander

Kommander Addon Repository
Go
7
star
67

d2iq-daggers

Collection of tasks and utilities to manage ci-cd pipelines
Go
7
star
68

dcos-helloworld

DCOS HelloWorld subcommand.
Python
6
star
69

mesos-tracing

JavaScript
6
star
70

docker-screencasts

Shell
6
star
71

chronos-pkg

Makefile
5
star
72

mesos-website-container

Scripts for building docker image for generating mesos.apache.org from sources
Shell
5
star
73

ip_vs_conn

Erlang
5
star
74

docker-mac-network

Shell
5
star
75

d2iq-engineering-blog

Just a techblog test repo for showcasing
SCSS
5
star
76

bun

Command-line program which detects the most common problems in a DC/OS cluster by analyzing its diagnostics bundle
Go
4
star
77

marathon-storage-tool

Marathon Storage Tool
Scala
4
star
78

kubeaddons-enterprise

Enterprise Addon Repository
Python
4
star
79

kubernetes-keygen

Scripts for generating RSA keys and SSL certificates/authorities for use by Kubernetes cluster deployments
Shell
4
star
80

dispatch-catalog

Dispatch Official Catalog
Python
3
star
81

aurora_tutorial

Shell
3
star
82

health-checks-scale-tests

Marathon and Mesos-native health checks testing rig
Python
3
star
83

kubeaddons-kaptain

Kubeflow Addons
3
star
84

golang-repository-template

Go
3
star
85

terraform-provider-dcos

a Terraform (http://terraform.io) provider for interacting with Mesosphere DC/OS
Go
3
star
86

marathon-ui-example-plugin

JavaScript
3
star
87

dcos-sdk-service-diagnostics

Fetches "SDK Service"-related diagnostics artifacts. Owned by the Data Services and Orchestration teams.
Python
2
star
88

mesosphere-zookeeper

Makefile
2
star
89

mesos-build-images

Shell
2
star
90

dkp-catalog-applications

Makefile
2
star
91

kubernetes-sre-addons

Go
2
star
92

marathon-demo

Resources for Marathon demos
Shell
2
star
93

kubeaddons-community

Community Addon Repository
2
star
94

marathon-integration-tests

A collection of Gatling simulations for Marathon.
Scala
2
star
95

marathon-perf-measurement

2
star
96

marathon-ui-plugin-sdk

2
star
97

dcos-perf-test-driver

๐Ÿ’ช The DC/OS Performance and Scale Test Driver
Python
2
star
98

mesos-state-backed-collections

Persistent collection types backed by implementations of the Mesos state API.
Scala
2
star
99

dynamic-credential-provider

Simplifies using the Kubelet image credential provider feature with multiple cloud infrastructures
Go
1
star
100

kubeaddons-tests

tests for kubeaddons-enterprise catalog addons
Shell
1
star