Skip to content

Latest commit

 

History

History
148 lines (91 loc) · 7.07 KB

CONTRIBUTING.adoc

File metadata and controls

148 lines (91 loc) · 7.07 KB

Contributing to Atomic Enterprise

The Atomic Enterprise architecture builds upon the flexibility and scalability of Docker and Kubernetes to deliver a powerful new Platform-as-a-Service system. This article explains how to set up a development environment and get involved with this latest version of Atomic Enterprise. Kubernetes is included in this repo for ease of development, and the version we include is periodically updated.

To get started you can either:

Or if you are interested in development, start with:

Download from GitHub

The Atomic Enterprise team periodically publishes binaries to GitHub on the Releases page. These are Linux 64bit binaries. You’ll need Docker installed on your local system (see the installation page if you’ve never installed Docker before).

The tar file for each platform contains a single binary atomic-enterprise which is the all-in-one Atomic Enterprise installation.

  • Use sudo atomic-enterprise start to launch the server. Root access is required to create services due to the need to modify IPTables. See issue: kubernetes/kubernetes#1859.

  • Use oc login <server> …​ to connect to an Atomic Enterprise server

  • Use atomic-enterprise help to see more about the commands in the binary

Atomic Enterprise Development

To get started, fork the atomic-enterprise repo

Develop locally on your host

You can develop Atomic Enterprise on Windows, Mac, or Linux, but you’ll need Docker installed on Linux to actually launch containers.

  • For Atomic Enterprise development, install the Go programming language

  • To launch containers, install the Docker platform

Here’s how to get set up:

  1. For Go, Git and optionally also Docker, follow the links below to get to installation information for these tools:

    • Installing Go. You must install Go 1.4 and NOT use $HOME/go directory for Go installation.

    • Installing Git

    • Installing Docker. NOTE: Atomic Enterprise requires at least Docker 1.6. RPMs for CentOS 7 are not yet available in the default yum repositories. If you’re running CentOS, please see the README for information on where to get Docker 1.6 RPMs for your platform.

  2. Next, create a Go workspace directory:

    $ mkdir $HOME/go
  3. In your .bashrc file or .bash_profile file, set a GOPATH and update your PATH:

    export GOPATH=$HOME/go
    export PATH=$PATH:$GOPATH/bin
  4. Open up a new terminal or source the changes in your current terminal. Then clone this repo:

    $ mkdir -p $GOPATH/src/github.com/projectatomic
    $ cd $GOPATH/src/github.com/projectatomic
    $ git clone git://github.com/<forkid>/atomic-enterprise  # Replace <forkid> with the your github id
    $ cd atomic-enterprise
    $ git remote add upstream git://github.com/projectatomic/atomic-enterprise
  5. From here, you can follow Start Developing from the README.

Develop on virtual machine using Vagrant

To facilitate rapid development we’ve put together a Vagrantfile you can use to stand up a development environment.

  1. Install Vagrant

  2. Install VirtualBox (Ex: yum install VirtualBox from the RPM Fusion repository)

  3. Clone the project and change into the directory:

    $ mkdir -p $GOPATH/src/github.com/projectatomic
    $ cd $GOPATH/src/github.com/projectatomic
    $ git clone git://github.com/<forkid>/atomic-enterprise  # Replace <forkid> with the your github id
    $ cd atomic-enterprise
    $ git remote add upstream git://github.com/projectatomic/atomic-enterprise
  4. Bring up the VM (If you are new to Vagrant, consider Vagrant Docs for help on items like provider selection. Also consider the enablement of your hardware’s virtualization extensions, such as RHEL for example.):

    $ vagrant up
  5. SSH in:

    $ vagrant ssh
  6. Run a build in SSH:

    $ cd /data/src/github.com/projectatomic/atomic-enterprise
    $ make build
  7. Start an Atomic Enterprise all-in-one server in SSH (includes everything you need to try Atomic Enterprise)

    $ sudo systemctl start atomic-enterprise
  8. On your host system, try browsing to: https://localhost:8443/

  9. From here, you can follow Start Developing from the README.

Tip
To ensure you get the latest image. First run vagrant box remove fedora_inst and vagrant box remove fedora_deps.

Ensure virtual box interfaces are not managed by Network Manager

If you are developing on a Linux host, then you need to ensure that Network Manager is ignoring the virtual box interfaces, otherwise they cause issues with multi-vm networking.

Follow these steps to ensure that virtual box interfaces are unmanaged:

  1. Check the status of Network Manager devices:

    $ nmcli d
  2. If any devices whose name start with vboxnet* are not unmanaged, then they need to be added to NetworkManager configuration to be ignored.

    $ cat /etc/NetworkManager/NetworkManager.conf
    [keyfile]
    unmanaged-devices=mac:0a:00:27:00:00:00;mac:0a:00:27:00:00:01;mac:0a:00:27:00:00:02
  3. One can use the following command to help generate the configuration:

    $ ip link list | grep vboxnet  -A 1 | grep link/ether | awk '{print "mac:" $2}' |  paste -sd ";" -
  4. Reload the Network Manager configuration:

    $ sudo nmcli con reload

Development: What’s on the Menu?

Right now you can see what’s happening with Atomic Enterprise development at:

If you are interested in contributing to Kubernetes directly:
Join the Kubernetes community and check out the contributing guide.

Troubleshooting

If you run into difficulties running Project Atomic, start by reading through the troubleshooting guide.