Docker container orchestration platform

Overview

Helios Circle CI Slack Status Download

Status: Bug-fix only

This project was created when there were no open source container orchestration frameworks. Since the advent of Kubernetes and other tools, we've stopped adding new features to helios and are now switching to other tools like Kubernetes. This project will no longer have new features or accept PRs for new features. We will continue to accept bug fixes, however.

Helios is a Docker orchestration platform for deploying and managing containers across an entire fleet of servers. Helios provides a HTTP API as well as a command-line client to interact with servers running your containers. It also keeps a history of events in your cluster including information such as deploys, restarts and version changes.

Usage Example

# Create an nginx job using the nginx container image, exposing it on the host on port 8080
$ helios create nginx:v1 nginx:1.7.1 -p http=80:8080

# Check that the job is listed
$ helios jobs

# List helios hosts
$ helios hosts

# Deploy the nginx job on one of the hosts
$ helios deploy nginx:v1 <host>

# Check the job status
$ helios status

# Curl the nginx container when it's started running
$ curl <host>:8080

# Undeploy the nginx job
$ helios undeploy -a nginx:v1

# Remove the nginx job
$ helios remove nginx:v1

Getting Started

If you're looking for how to use Helios, see the docs directory. Most probably the User Manual is what you're looking for.

If you're looking for how to download, build, install and run Helios, keep reading.

Prerequisites

The binary release of Helios is built for Ubuntu 14.04.1 LTS, but Helios should be buildable on any platform with at least Java 8 and a recent Maven 3 available.

Other components that are required for a helios installation are:

Install & Run

Quick start for local usage

Use helios-solo to launch a local environment with a Helios master and agent.

First, ensure you have Docker installed locally. Test this by making sure docker info works. Then install helios-solo:

# add the helios apt repository
$ sudo apt-key adv --keyserver hkp://keys.gnupg.net:80 --recv-keys 6F75C6183FF5E93D
$ echo "deb https://dl.bintray.com/spotify/deb trusty main" | sudo tee -a /etc/apt/sources.list.d/helios.list

# install helios-solo on Debian/Ubuntu
$ sudo apt-get update && sudo apt-get install helios-solo

# install helios-solo on OS X
$ brew tap spotify/public && brew install helios-solo

Once you've got it installed, bring up the helios-solo cluster:

# launch a helios cluster in a Docker container
$ helios-up

# check if it worked and the solo agent is registered
$ helios-solo hosts

You can now use helios-solo as your local Helios cluster. If you have issues, see the detailed helios-solo documentation.

Production on Debian, Ubuntu, etc.

Prebuilt Debian packages are available for production use. To install:

# add the helios apt repository
$ sudo apt-key adv --keyserver hkp://keys.gnupg.net:80 --recv-keys 6F75C6183FF5E93D
$ echo "deb https://dl.bintray.com/spotify/deb trusty main" | sudo tee -a /etc/apt/sources.list.d/helios.list

# install Helios command-line tools
$ sudo apt-get install helios

# install Helios master (assumes you have zookeeperd installed)
$ sudo apt-get install helios-master

# install Helios agent (assumes you have Docker installed)
$ sudo apt-get install helios-agent

Note that the Helios master and agent services both try to connect to ZooKeeper at localhost:2181 by default. We recommend reading the Helios configuration & deployment guide before starting a production cluster.

Manual approach

The launcher scripts are in bin/. After you've built Helios following the instructions below, you should be able to start the agent and master:

$ bin/helios-master &
$ bin/helios-agent &

If you see any issues, make sure you have the prerequisites (Docker and Zookeeper) installed.

Build & Test

First, make sure you have Docker installed locally. If you're using OS X, we recommend using docker-machine.

Actually building Helios and running its tests should be a simple matter of running:

$ mvn clean package

For more info on setting up a development environment and an introduction to the source code, see the Developer Guide.

How it all fits together

The helios command line tool connects to your helios master via HTTP. The Helios master is connected to a Zookeeper cluster that is used both as persistent storage and as a communications channel to the agents. The helios agent is a java process that typically lives on the same host as the Docker daemon, connecting to it via a Unix socket or optionally TCP socket.

Helios is designed for high availability, with execution state being confined to a potentially highly available Zookeeper cluster. This means that several helios-master services can respond to HTTP requests concurrently, removing any single point of failure in the helios setup using straight forward HTTP load balancing strategies.

Production Readiness

We at Spotify are running Helios in production (as of October 2015) with dozens of critical backend services, so we trust it. Whether you should trust it to not cause smoking holes in your infrastructure is up to you.

Why Helios?

There are a number of Docker orchestration systems, why should you choose Helios?

  • Helios is pragmatic. We're not trying to solve everything today, but what we have, we try hard to ensure is rock-solid. So we don't have things like resource limits or dynamic scheduling yet. Today, for us, it has been more important to get the CI/CD use cases, and surrounding tooling solid first. That said, we eventually want to do dynamic scheduling, composite jobs, etc. (see below for more). But what we provide, we use (i.e. we eat our own dogfood), so you can have reasonable assurances that anything that's been in the codebase for more than a week or two is pretty solid as we release frequently (usually, at least weekly) into production here at Spotify.

  • Helios should be able to fit in the way you already do ops. Of the popular Docker orchestration frameworks, Helios is the only one we're aware of that doesn't have anything much in the way of system dependencies. That is, we don't require that you run in AWS or GCE, etc. We don't require a specific network topology. We don't require you run a specific operating system. We don't require that you're using Mesos. Our only requirement is that you have a ZooKeeper cluster somewhere and a JVM on the machines which Helios runs on. So if you're using Puppet, Chef, etc., to manage the rest of the OS install and configuration, you can still continue to do so with whatever Linux OS you're using.

  • Don't have to drink all the Kool-Aid. Generally, we try to make it so you only have to take the features you want to use, and should be able to ignore the rest. For example, Helios doesn't prescribe a discovery service: we happen to provide a plugin for SkyDNS, and we hear that someone else is working on one for another service, but if you don't want to even use a discovery service, you don't have to.

  • Scalability. We're already at hundreds of machines in production, but we're nowhere near the limit before the existing architecture would need to be revisited. Helios can also scale down well in that you can run a single machine instance if you want to run it all locally.

Other Software You Might Want To Consider

Here are a few other things you probably want to consider using alongside Helios:

  • docker-gc Garbage collects dead containers and removes unused images.
  • helios-skydns Makes it so you can auto register services in SkyDNS. If you use leading underscores in your SRV record names, let us know, we have a patch for etcd which disables the "hidden" node feature which makes this use case break.
  • skygc When using SkyDNS, especially if you're using the Helios Testing Framework, can leave garbage in the skydns tree within etcd. This will clean out dead stuff.
  • docker-maven-plugin Simplifies the building of Docker containers if you're using Maven (and most likely Java).

Findbugs

To run findbugs on the helios codebase, do mvn clean compile site. This will build helios and then run an analysis, emitting reports in helios-*/target/site/findbugs.html.

To silence an irrelevant warning, add a filter match along with a justification in findbugs-exclude.xml.

The Nickel Tour

The sources for the Helios master and agent are under helios-services. The CLI source is under helios-tools. The Helios Java client is under helios-client.

The main meat of the Helios agent is in Supervisor.java, which revolves around the lifecycle of managing individual running Docker containers.

For the master, the HTTP response handlers are in src/main/java/com/spotify/helios/master/resources.

Interactions with ZooKeeper for the agent and master are mainly in ZookeeperAgentModel.java and ZooKeeperMasterModel.java, respectively.

The Helios services use Dropwizard which is a bundle of Jetty, Jersey, Jackson, Yammer Metrics, Guava, Logback and other Java libraries.

Community Ideas

These are things we want, but haven't gotten to. If you feel inspired, we'd love to talk to you about these (in no particular order):

  • Host groups
  • ACLs - on jobs, hosts, and deployments
  • Composite jobs -- be able to deploy related containers as a unit on a machine
  • Run once jobs -- for batch jobs
  • Resource specification and enforcement -- That is: restrict my container to X MB of RAM, X CPUs, and X MB disk and perhaps other things like IOPs, network bandwidth, etc.
  • Dynamic scheduling of jobs -- either within Helios itself or as a layer on top
  • Packaging/Config for other Linux distributions such as RedHat, CoreOS, etc.
Comments
  • Agent re-registration now preserves jobs deployed on the replaced host

    Agent re-registration now preserves jobs deployed on the replaced host

    I.e. if agent A has job J deployed to it, and is then replaced by agent B under the same name the B will also automatically get J deployed to it.

    Previously, the automatic re-registration would fail if there were any deployed jobs on the host being replaced -- which was the case almost all of the time. With this in place, the automatic re-registration should actually work. (History of any existing jobs will also be preserved.)

    opened by gimaker 23
  • Doesn't run in 250 MB RAM

    Doesn't run in 250 MB RAM

    Hi,

    I tried your mvn clean test and ran into a "There is insufficient memory for the Java Runtime Environment to continue." issue, not sure why you need more than 250MB to build helios, doesn't seem too big of an application.

    Best Regards,

    opened by ramonck 22
  • Support resolution of namespaced agent names in Helios Solo.

    Support resolution of namespaced agent names in Helios Solo.

    @spotify/helios-team

    Hopefully this PR is reaching its final form. It:

    • Fixes the helios solo container's start.sh such that namespaced Helios agent names (i.e. mynamespace.solo.local) are resolvable by SkyDNS.
    • Tweaks the namespaced Helios agent names to end in .local for compatibility with our SkyDNS setup.
    • Supports specifying arbitrary env vars to be set inside the HeliosSoloDeployment container.
    • Supports reading said env vars from helios.conf
    • Updates an existing service discovery integration test to use a HeliosSoloDeployment.

    The culmination of the above should mean we can specify our whacky Spotify SRV record format as an env var in spotify-helios-testing's helios.conf and leave our defaults sane for everyone else. That will look something like:

    helios.solo.profile : "local"
    helios.solo.profiles : {
      local : {
        env : {
            REGISTRAR_HOST_FORMAT: "_spotify-${service}._${protocol}.services.${domain}"
        }
      }
    }
    
    opened by negz 19
  • Helios web front-end??

    Helios web front-end??

    Hi do not know if this is place to ask. Helios has a restful API for interacting with helios-master as does helios cli. I would like to contribute to the project, creating a front-end to manage helios via web.

    I hope to help this project grow. Thanks for everything.

    help wanted 
    opened by alejandrojnm 19
  • Add support for specifying resources for a container

    Add support for specifying resources for a container

    Hi!

    This PR makes it possible to specify runtime constraints for a container, such as memory and cpu usage. Currently it's not exposed in the cli, but you can set the parameters if you create a job from a json file.

    Example:

    python-hello.json:

    {
      "image" : "google/python-hello:2.7",
      "resources" : {
        "cpuShares" : 512,
        "cpuset" : "0",
        "memory" : 104857600,
        "memorySwap" : 1024
      }
    }
    

    helios create -f python-hello.json python-hello:v1 docker inspect on the running container will then return something like this:

    [
      {
        "Config": {
          "Cpuset": "0",
          "CpuShares": 512,
          "Memory": 104857600,
          "MemorySwap": 1024,
          "..."
        },
      }
    ]
    
    enhancement 
    opened by carlanton 19
  • Helios Testing broken with Docker for Mac (beta)

    Helios Testing broken with Docker for Mac (beta)

    The Docker for Mac beta ships a Docker setup packaged and well running on top of xhyve. Though the docker CLI is smart enough to find it (it knows where the socket is) other tools that look for the docker daemon need the DOCKER_HOST environment variable to be set. In this case, it should point at unix:///var/tmp/docker.sock.

    Unfortunately setting DOCKER_HOST seems to break the TemporaryJobs.builder() as that contains a fair amount of glue to try and figure out where the heck Docker went. This results in the following stack trace:

    [main] WARN com.spotify.helios.client.Endpoints - Unable to resolve hostname null into IP address
    java.net.UnknownHostException: null: unknown error
        at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
        at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
        at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
        at java.net.InetAddress.getAllByName0(InetAddress.java:1276)
        at java.net.InetAddress.getAllByName(InetAddress.java:1192)
        at java.net.InetAddress.getAllByName(InetAddress.java:1126)
        at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45)
        at com.spotify.helios.client.Endpoints.of(Endpoints.java:92)
        at com.spotify.helios.client.Endpoints.of(Endpoints.java:79)
        at com.spotify.helios.client.HeliosClient$Builder.setEndpoints(HeliosClient.java:532)
        at com.spotify.helios.client.HeliosClient$Builder.setEndpointStrings(HeliosClient.java:548)
        at com.spotify.helios.testing.TemporaryJobs$Builder.endpointStrings(TemporaryJobs.java:663)
        at com.spotify.helios.testing.TemporaryJobs$Builder.endpoints(TemporaryJobs.java:658)
        at com.spotify.helios.testing.TemporaryJobs$Builder.configureWithEnv(TemporaryJobs.java:602)
        at com.spotify.helios.testing.TemporaryJobs$Builder.<init>(TemporaryJobs.java:562)
        at com.spotify.helios.testing.TemporaryJobs.builder(TemporaryJobs.java:507)
        at com.spotify.helios.testing.TemporaryJobs.builder(TemporaryJobs.java:502)
        at com.spotify.helios.testing.TemporaryJobs.builder(TemporaryJobs.java:494)
        at com.spotify.helios.testing.TemporaryJobs.builder(TemporaryJobs.java:490)
        at com.spotify.podservice.client.HttpPodserviceClientIT.<clinit>(HttpPodserviceClientIT.java:23)
        at sun.misc.Unsafe.ensureClassInitialized(Native Method)
        at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)
        at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:142)
        at java.lang.reflect.Field.acquireFieldAccessor(Field.java:1088)
        at java.lang.reflect.Field.getFieldAccessor(Field.java:1069)
        at java.lang.reflect.Field.get(Field.java:393)
        at org.junit.runners.model.FrameworkField.get(FrameworkField.java:73)
        at org.junit.runners.model.TestClass.getAnnotatedFieldValues(TestClass.java:230)
        at org.junit.runners.ParentRunner.classRules(ParentRunner.java:255)
        at org.junit.runners.ParentRunner.withClassRules(ParentRunner.java:244)
        at org.junit.runners.ParentRunner.classBlock(ParentRunner.java:194)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:362)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:344)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:269)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:240)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:184)
        at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:286)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:240)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
    

    I believe that this is caused by the following code path: https://github.com/spotify/helios/blob/83bb315662db0b1eede2385a178e2afe48d633e2/helios-testing/src/main/java/com/spotify/helios/testing/TemporaryJobs.java#L565-607

    We end up hitting L596 and because DOCKER_HOST is set and will now try to parse unix:///var/tmp/docker.sock as a URI and call getHost() on it, which will return null. Because of the string concat and not explicitly checking for that null it means we end up adding an endpoint of http://null:5801.

    This in turn causes the eventual java.net.UnknownHostException: null: unknown error when we try to do the DNS lookup for the host part of the endpoint.

    opened by daenney 16
  • client: Use ssh-agent identity for TLS client auth

    client: Use ssh-agent identity for TLS client auth

    Use the local SSH agent identity to generate a self-signed certificate for TLS client authentication, and sign the handshake hash with ssh-agent.

    This lets the client setup a secure SSL connection and prove ownership of its SSH public key. It is up to the server to verify the public key against a known-good list (like in LDAP).

    opened by rohansingh 16
  • Introduce a 'rolling operation' concept.

    Introduce a 'rolling operation' concept.

    The target job ID and rollout options of a rolling update are associated with the rolling operation - not the deployment group itself. Each rolling operation is associated with a deployment group. The 'reason' for a rolling update (i.e. manual or 'hosts changed') is a property of the rolling operation.

    Deployment groups may now have state 'stable' or 'unstable'. Stable deployment groups are known to be running the same job across all agents. Unstable groups are known to have some containers down, or to be running different jobs across agents. Rolling operations model the states previously associated with deployment groups (ROLLING_OUT, DONE, FAILED).

    Some hacks (i.e. the DeploymentGroupResponse) have been put in place in order to avoid breaking the existing REST and CLI APIs.

    This change means:

    • A failed rolling update will no longer require human intervention to unblock future automatic (i.e. 'hosts changed') rolling updates.
    • Rolling restarts could be implemented as a variant of a rolling operation - perhaps as a rolling operation with a null jobId?
    • We could expose an audit trail of a deployment group's rolling updates.
    opened by negz 15
  • Undeployment of containers takes around 2 minutes

    Undeployment of containers takes around 2 minutes

    Hi guys,

    We are trying helios for docker management. Everything is fine except of docker undeployment. I takes around 2 minutes to undeploy the docker containers. Deployment is very fast but undeployment takes time. Can you give me a hint what might be wrong?

    i have checked the verbose logs and there is no errors within this 2 minutes.

    Any help would be appreciated.

    Ivan

    opened by vanomashey 15
  • add rolling-update --ignore-failures, skip over AWAIT_RUNNING

    add rolling-update --ignore-failures, skip over AWAIT_RUNNING

    Internally at Spotify we have a use case where a deployment group with hundreds of hosts in the group frequently has trouble completing a rolling-update command successfully to deploy a new version of a job because of various issues with individual hosts out of the hundreds (and sometimes thousands) of hosts in the group that prevent a new job from successfully running. Issues we have seen have to do with unhealthy dockerd instances, etc.

    This deployment group represents a critical service where the service owners want to ensure that the deploymentGroup's status is never FAILED, as it is necessary for SLA reasons to make sure that new/auto-scaled instances get the job assigned to the deployment group deployed to it.

    To that end we have decided to add a --ignore-failures flag to the helios rolling-update command that should cause the rollout of the new image to continue to all hosts in the deployment group even if the deployment/rollout fails on any single host in the group. We picture that very few services will ever want to use this flag besides this particular use case.

    This PR is one possible way that we could implement this behavior in the heliosmaster: by completely removing the RolloutTask.Action.AWAIT_RUNNING step from the list of rollout tasks when the rollout plan is generated (see RollingUpdatePlanner).

    This would mean in practice that a helios rolling-update --ignore-failures quickly rolls through every host in the group, undeploying the previous job and deploying the new job, without waiting for any host to even start the image pull / container creation / etc process.

    There are probably other ways we could implement this beyond removing RolloutTask.Action.AWAIT_RUNNING from the list of rollout tasks; I'd be happy to discuss and review various other options.

    opened by mattnworb 14
  • WIP: helios-testing: refactor with breaking changes

    WIP: helios-testing: refactor with breaking changes

    This PR makes the following changes in order:

    • Make TemporaryJobs instead of the user manage HeliosSoloDeployment
    • Make HeliosSoloDeployment package local
    • Make helios-solo container have logic to clean up and kill itself to prevent leaked containers even when TemporaryJobs is SIGKILLed
    • one HeliosSoloDeployment per JVM process per test run
    • split TemporaryJobs into two classes - one that implements AutoCloseable and another that implements JUnit's Rule

    TODOs:

    • update docs
    • delete other stuff?
    opened by davidxia 14
  • Bump google-oauth-client from 1.27.0 to 1.32.1

    Bump google-oauth-client from 1.27.0 to 1.32.1

    Bumps google-oauth-client from 1.27.0 to 1.32.1.

    Release notes

    Sourced from google-oauth-client's releases.

    google-oauth-java-client v1.32.1

    Features

    • add gcf-owl-bot[bot] to ignoreAuthors (#690) (2786401)
    • Add HMAC-SHA256 signature method for OAuth 1.0 (#711) (c070f5f)

    Bug Fixes

    • release scripts from issuing overlapping phases (#664) (60fec2b)
    • Revert "chore(deps): update dependency com.google.googlejavaformat:google-java-format to v1.10.0" to fix linter (#713) (bbc9ea2)
    • Update dependencies.sh to not break on mac (#706) (39c2777)

    google-oauth-java-client v1.32.0

    Features

    • add gcf-owl-bot[bot] to ignoreAuthors (#690) (2786401)
    • Add HMAC-SHA256 signature method for OAuth 1.0 (#711) (c070f5f)

    Bug Fixes

    • release scripts from issuing overlapping phases (#664) (60fec2b)
    • Revert "chore(deps): update dependency com.google.googlejavaformat:google-java-format to v1.10.0" to fix linter (#713) (bbc9ea2)
    • Update dependencies.sh to not break on mac (#706) (39c2777)

    v1.31.5

    Bug Fixes

    • don't swallow exceptions in LocalServerReceiver (#595) (f39faec)
    • oauth1 signing for url encoded content (#538) (d9507e4)
    • remove Jackson from assembly (#605) (a482000)
    • switch to GSON per security team advice (#586) (58a1828)

    Dependencies

    • update appengine packages to v1.9.84 (#577) (3fbd4d5)

    v1.31.4-sp.1

    Features

    ... (truncated)

    Changelog

    Sourced from google-oauth-client's changelog.

    1.32.1 (2021-08-12)

    Features

    • add gcf-owl-bot[bot] to ignoreAuthors (#690) (2786401)
    • Add HMAC-SHA256 signature method for OAuth 1.0 (#711) (c070f5f)

    Bug Fixes

    • release scripts from issuing overlapping phases (#664) (60fec2b)
    • Revert "chore(deps): update dependency com.google.googlejavaformat:google-java-format to v1.10.0" to fix linter (#713) (bbc9ea2)
    • Update dependencies.sh to not break on mac (#706) (39c2777)

    1.32.0 (2021-08-11)

    Features

    • add gcf-owl-bot[bot] to ignoreAuthors (#690) (2786401)
    • Add HMAC-SHA256 signature method for OAuth 1.0 (#711) (c070f5f)

    Bug Fixes

    • release scripts from issuing overlapping phases (#664) (60fec2b)
    • Revert "chore(deps): update dependency com.google.googlejavaformat:google-java-format to v1.10.0" to fix linter (#713) (bbc9ea2)
    • Update dependencies.sh to not break on mac (#706) (39c2777)

    1.31.5 (2021-04-09)

    Bug Fixes

    • don't swallow exceptions in LocalServerReceiver (#595) (f39faec)
    • oauth1 signing for url encoded content (#538) (d9507e4)
    • remove Jackson from assembly (#605) (a482000)
    • switch to GSON per security team advice (#586) (58a1828)

    Dependencies

    • update appengine packages to v1.9.84 (#577) (3fbd4d5)

    1.31.4 (2021-01-05)

    Dependencies

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump httpclient from 4.5.5 to 4.5.13

    Bump httpclient from 4.5.5 to 4.5.13

    Bumps httpclient from 4.5.5 to 4.5.13.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump commons-io from 2.5 to 2.7

    Bump commons-io from 2.5 to 2.7

    Bumps commons-io from 2.5 to 2.7.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump jackson-databind from 2.9.10 to 2.9.10.7

    Bump jackson-databind from 2.9.10 to 2.9.10.7

    Bumps jackson-databind from 2.9.10 to 2.9.10.7.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Docs improvement for `rolloutOptions`

    Docs improvement for `rolloutOptions`

    Hi!

    Have a look here: https://github.com/spotify/helios/blob/master/docs/user_manual.md#rolloutoptions

    I would like to know details about these rolloutOptions fields:

    • migrate: what does this do?
    • parallelism: number of nodes that will be updated in parallel I assume, pretty certain about this one
    • timeout: is this in seconds? Is it per node or for the whole rollout job?
    • overlap: what does this do?
    • token: where is this token used? why is it "insecure"?
    • ignoreFailures: what happens on failures with this on? Is the rollout marked as success in spite of the failures?
    opened by walles 1
Releases(0.9.282)
Owner
Spotify
Spotify
Testcontainers is a Java library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.

Testcontainers Testcontainers is a Java library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium we

null 6.7k Jan 9, 2023
Temporal is a microservice orchestration platform which enables developers to build scalable applications

Temporal is a microservice orchestration platform which enables developers to build scalable applications without sacrificing productivity or reliability. Temporal server executes units of application logic, Workflows, in a resilient manner that automatically handles intermittent failures, and retries failed operations.

temporal.io 5.9k Jan 1, 2023
8INF138-TP3-SECURITY-DOCKER - Le docker du tp3 du cours 8INF138 de l'UQAC

?? TP3 - 8INF138 Ceci est le TP3 du module 8INF138 de l'Universite du Quebec a Chicoutimi Le rapport ce situe dans le depot Le travail visuel n'a pas

Aurelien Marc 2 May 30, 2022
消息推送平台 - 所使用的技术栈包括:SpringBoot、SpringDataJPA、MySQL、Docker、docker-compose、Kafka、Redis、Apollo、prometheus、Grafana、GrayLog等等

项目介绍 austin项目核心功能:发送消息 项目出现意义:只要公司内有发送消息的需求,都应该要有类似austin的项目,对各类消息进行统一发送处理。这有利于对功能的收拢,以及提高业务需求开发的效率 系统项目架构 austin项目核心流程:austin-api接收到发送消息请求,直接将请求进MQ。a

Java3y 2.9k Dec 31, 2022
Project on End to End CI/CD pipeline for java based application using Git,Github,Jenkins,Maven,Sonarqube,Nexus,Slack,Docker and Kuberenets with ECR as private docker registry and Zero Downtime Deployment

Project on End to End CI/CD pipeline for java based application using Git,Github,Jenkins,Maven,Sonarqube,Nexus,Slack,Docker and Kuberenets with ECR as private docker registry and Zero Downtime Deployment.

NITHIN JOHN GEORGE 10 Nov 22, 2022
Deploying Spring Boot and MongoDB as Containers Using Docker and Docker Compose

springboot-mongodb-docker Deploying Spring Boot and MongoDB as Containers Using Docker and Docker Compose Steps & Commands pull mongo image from docke

Java Techie 9 Nov 25, 2022
A sub module of EdgeGallery MECM which responsible for the app orchestration.

mecm-appo Description Application orchestrator is the core module responsible for orchestrating life cycle maintenance operation of application. Compi

EdgeGallery 25 Dec 25, 2021
Cadence is a distributed, scalable, durable, and highly available orchestration engine to execute asynchronous long-running business logic in a scalable and resilient way.

Cadence This repo contains the source code of the Cadence server and other tooling including CLI, schema tools, bench and canary. You can implement yo

Uber Open Source 6.5k Jan 4, 2023
An assistance platform made using Spring framework that analyses your code, and helps you either to start a devops project, or to turn an existing project into a devops project using open source software (Git, Docker, Jenkins..)

DevOpsify Description An assistance platform made using Spring framework that analyses your code, and helps you either to start a devops project, or t

obaydah bouifadene 14 Nov 8, 2022
Concourse is a container-based continuous thing-doer written in Go and Elm.

Concourse: the continuous thing-doer. Concourse is an automation system written in Go. It is most commonly used for CI/CD, and is built to scale to an

Concourse 6.7k Jan 7, 2023
Eclipse Jetty® - Web Container & Clients - supports HTTP/2, HTTP/1.1, HTTP/1.0, websocket, servlets, and more

Eclipse Jetty Canonical Repository This is the canonical repository for the Jetty project, feel free to fork and contribute now! Submitting a patch or

Eclipse Foundation 3.5k Dec 28, 2022
Melnica Server is a custom basic Servlet Container application which depends on Socket Programming.

Melnica Server Melnica Server is a custom basic Servlet Container application which depends on Socket Programming. The Description of Project Melnica

Batuhan Düzgün 18 Jun 26, 2022
ESA Cabin is a lightweight class isolation container for Java applications.

Cabin Cabin是一款Java类隔离框架,用于隔离各个模块之间、模块和业务之间使用的第三方依赖库。使用Cabin后,模块SDK将只是用自己指定 版本的三方依赖,不会被业务引入的依赖所影响,保证业务正常运行,提高业务的开发效率,减少中间件同学此类重复的支持工作。 概述 ESA Cabin用于解决

ESA Stack 22 Dec 1, 2022
🏗 Build container images for your Java applications.

Jib ☑️ Jib User Survey What do you like best about Jib? What needs to be improved? Please tell us by taking a one-minute survey. Your responses will h

null 12.4k Jan 9, 2023
A little container and simulator for Complex Adaptive Systems (CAS)

Complex Adaptive Systems Description This is a little container and simulator for Complex Adaptive Systems (CAS). CAS are typically living Complex Sys

Pietro Dondi 1 Feb 13, 2022
Isolated MinIO container management for Java code testing

TestContainers for MinIO MinIO support for the test containers project. Installation Unfortunately, TestContainers for MinIO is not available in any p

Olsi Qose 3 Sep 30, 2022
mall-swarm是一套微服务商城系统,采用了 Spring Cloud Hoxton & Alibaba、Spring Boot 2.3、Oauth2、MyBatis、Docker、Elasticsearch、Kubernetes等核心技术,同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm在电商业务的基础集成了注册中心、配置中心、监控中心、网关等系统功能。文档齐全,附带全套Spring Cloud教程。

mall-swarm 友情提示 快速体验项目:在线访问地址。 全套学习教程:《mall学习教程》。 Spring Cloud全套教程:《SpringCloud学习教程》。 专属学习路线:学习不走弯路,整理了套非常不错的《mall专属学习路线》。 项目交流:想要加群交流项目的朋友,可以加入mall项目

macro 9.7k Jan 3, 2023
:herb: 基于springboot的快速学习示例,整合自己遇到的开源框架,如:rabbitmq(延迟队列)、Kafka、jpa、redies、oauth2、swagger、jsp、docker、spring-batch、异常处理、日志输出、多模块开发、多环境打包、缓存cache、爬虫、jwt、GraphQL、dubbo、zookeeper和Async等等:pushpin:

欢迎大家留言和PR~ Tip: 技术更新换代太快,本仓库仅做参考,自己的项目具体使用哪个版本还需谨慎思考~(不推荐使用最新的版本,推荐使用(最新-1|2)的版本,会比较稳定) spring-boot-quick 前言   自己很早就想搞一个总的仓库就是将自己平时遇到的和学习到的东西整合在一起,方便后

wangxc 2.1k Jan 2, 2023
以教学为目的的电商系统。包含ToB复杂业务、互联网高并发业务、缓存应用;DDD、微服务指导。模型驱动、数据驱动。了解大型服务进化路线,编码技巧、学习Linux,性能调优。Docker/k8s助力、监控、日志收集、中间件学习。前端技术、后端实践等。主要技术:SpringBoot+JPA+Mybatis-plus+Antd+Vue3。

简介 bcMall 是一个以教学为目的的电商系统。bcMall将为你展现一个典型的系统演进过程,所使用的主流技术完全开放。 它包含ToB复杂业务、互联网高并发业务、缓存应用;DDD、微服务指导。模型驱动、数据驱动。了解大型服务进化路线,编码技巧、学习Linux,性能调优。Docker/k8s助力、监

xjjdog 411 Jan 3, 2023
企业级 Spring Cloud Alibaba 微服务脚手架,nacos 配置中心、Oauth2认证与鉴权、Docker 容器化部署,开发环境一键式脚本安装,10分钟即可构建

云龙 Cloud Dragon 适合于企业级别的微服务开发脚手架,功能齐全,开箱即用,部署快捷 目前项目处于开发阶段,部分功能已经可以使用,后续会逐步完成其他规划内容,并完善项目文档,如果你在使用过程中遇到任何问题,可以通过 QQ 群聊联系我,请戳这里 加入群聊。 ?? 项目介绍 Cloud Dra

chenxiaolong 17 Dec 19, 2022