Skip to content

SUSE/uaa-fissile-release

Repository files navigation

Table of Contents

UAA fissile release

This repository contains the files necessary to run a standalone UAA using fissile. It is roughly equivalent to doing the same with BOSH.

Prerequisites

A Kubernetes cluster

scf.git has sample instructions for setting one up locally via hyperkube; other methods of deploying Kubernetes should work as well.

docker

Docker is required for fissile to build images. You may also need access to a docker registry unless you're testing against a vagrant box or minikube. In the case of minikube, reusing the minikube docker daemon may be useful.

fissile

fissile is required to build the docker images and configuration.

direnv

direnv is recommended, but manually sourcing the .envrc should work just as well.

Ruby

Ruby 2.3 is needed to install some of the releases. Using rbenv with ruby-build should work, but if you have issues ruby-install is also an option.

BOSH cli

The Ruby version of the BOSH cli is required as of writing, as fissile is not yet compatible with the golang BOSH v2.

stampy

Used to write timing information to a file. This information can be used to identify slow parts of the process when trying to make things faster.

Requires golang.

go get -d github.com/SUSE/stampy
cd $GOPATH/src/github.com/SUSE/stampy
make
cp build/linux-amd64/stampy $GOBIN/stampy

Building

  1. Get all submodules:
  git submodule update --init --recursive
  1. Load needed environment variables (optional, only if you don't use direnv):

      . .envrc
  2. Generate the SSL certificates required:

      make certs
  3. Get the opensuse stemcell:

      docker pull $FISSILE_STEMCELL
  4. Create a directory to write the release tarball into:

      mkdir -p output/splatform
  5. Build fissile images:

    STEMCELL=splatform/fissile-stemcell-opensuse:42.2-0.g58a22c9-28.16
    fissile build packages --stemcell ${STEMCELL}
    fissile build images   --stemcell ${STEMCELL}

Or, more convenient

```sh
make images
```

Note, the specified stemcell is an example. Change it to suit. The alternative command uses the definition of FISSILE_STEMCELL in .envrc for this.

Running

The default configurations are designed for the scf vagrant box; see instructions there.

  1. If necessary, push the images to your Kubernetes nodes (or publish them in a way that they get fetch the images).
  2. Build Kubernetes configs. This will create the files in a directory named kube:
    fissile build kube -k kube/ --use-memory-limits=false \
        -D $(echo env/*.env | tr ' ' ',')
    
    If you are not building the images directly on the Kubernetes cluster (or if you have multiple nodes), you will also need to specify --docker-registry=docker.registry:123456 (and possibly --docker-organization) so that the images can be pulled.
  3. If you're not building directly on a single Kubernetes node that you will deploy to, you will need to publish to the specified docker registry:
    fissile show image | xargs -i@ docker tag @ "${FISSILE_DOCKER_REGISTRY}/@"
    fissile show image | xargs -i@ docker push "${FISSILE_DOCKER_REGISTRY}/@"
  4. Deploy to Kubernetes
    # The following is a sample for hyperkube/minikube/vagrant
    kubectl create -f kube-test/storage-class-host-path.yml
    
    kubectl create namespace uaa
    
    kubectl create -n uaa -f kube/bosh/

Development FAQ

How do I bump the various releases?

You can find the releases in container-host-files/etc/scf/config/role-manifest.yml. These are final releases and to bump them you only have to change the relevant lines in that file (url, version, sha1).