User Tools

Site Tools


tech:openshift:start

OpenShift

oc import-image <NAME OF STREAM>

Resources

Generate Docker Image

# Gen image via s2i ... using python container
IMGBASE=s2i-python-container
mkdir s2iloadgen
s2i create ${IMGBASE} s2iloadgen

Docker Cheat-Sheet

  • List all Bluejay-related images:
    docker images | grep -i bluejay
  • Start container:
    docker run -d -P --name loadgen001 bluejay-loadgen
  • Show port mapping:
    docker port loadgen001 22
  • Stop container:
    docker container stop loadgen001
  • Remove container:
    docker container rm loadgen001
  • Remove image:
    docker image rm bluejay-loadgen

Example: Resurrect Bluejay in OpenShift

  • Set up OpenShift cluster, and start with rc.openshift start
    • The rc.openshift wrapper calls oc cluster up with args
  • Initialize service account
    oc create serviceaccount bluejay
    oc policy add-role-to-user system:image-builder -z bluejay
    oc policy add-role-to-user admin -z bluejay
    oc sa get-token bluejay
    • Populate the token into ~bluejay/.bluejayrc
  • Ensure access to OpenShift docker repo
    docker login -u yourlogin -p $(oc whoami -t) 172.30.1.1:5000
  • Build, tag, and push JMeter image
    cd ~/src/bluejay/s2ijm ; make
    docker tag <newimage> 172.30.1.1:5000/bluejay/jmeter
    docker push 172.30.1.1:5000/bluejay/jmeter
  • Build, tag, and push Locust image
    cd ~/src/bluejay/s2iloc ; make
    docker tag <newimage> 172.30.1.1:5000/bluejay/locust
    docker push 172.30.1.1:5000/bluejay/locust
  • Build, tag, and push Maven image
    cd ~/src/bluejay/s2imvn ; make
    docker tag <newimage> 172.30.1.1:5000/bluejay/maven
    docker push 172.30.1.1:5000/bluejay/maven
  • Build, tag, and push Gatling image
    cd ~/src/bluejay/s2igat ; make
    docker tag <newimage> 172.30.1.1:5000/bluejay/gatling
    docker push 172.30.1.1:5000/bluejay/gatling
  • Create image streams
    cd ~/src/bluejay/etc
    oc create -f loadctl.json
    oc create -f loadloc.json
    oc create -f loadmvn.json
    oc create -f loadgat.json
  • Create load-gen build configs
    Remember to set LDAP credentials in YAML files
    cd ~/src/bluejay/etc
    oc create -f bld-loadctl.yaml
    oc create -f bld-loadloc.yaml
    oc create -f bld-loadmvn.yaml
    oc create -f bld-loadgat.yaml
  • Verify build completions and image streams
  • Add OAPT storage
    Remember to make it “shared”, use name like oaptpubrpt201
  • Add OAPT application
    • Add OAPT storage at mount path /opt/app-root/pub

Trivia

Installation: Docker & OC CLI

  • In /etc/yum.repos.d/docker.repo
    [dockerrepo]
    name=Docker Repository
    baseurl=https://yum.dockerproject.org/repo/main/centos/7
    enabled=1
    gpgcheck=1
    gpgkey=https://yum.dockerproject.org/gpg
  • yum install docker-engine
  • usermod -aG docker msamud1
  • chkconfig docker on
  • Install S2I: download and extract to /usr/local/bin …
    wget https://github.com/openshift/source-to-image/releases/download/v1.1.10/source-to-image-v1.1.10-27f0729d-linux-amd64.tar.gz
  • OpenShift CLI client (oc):
    • Requires active RHEL subscription to download
    • Once downloaded, extract “oc” from archive into /usr/local/bin

PoC/Exploration Notes

Some URLs researched ...

Initial PoC at Optum's OpenShift

  • Ensure that docker-engine is installed on Linux XaaS VM
  • Log in to DTR (Docker Trusted Registry)
    docker login docker.optum.com
  • Pull existing repository (previously created in web GUI)
    docker pull docker.optum.com/msamud1/bluejay-jmeter
  • Build new image using S2I (S2I build is another topic)
  • Tag new image in local registry
    docker tag <newimageid> docker.optum.com/msamud1/bluejay-jmeter
  • Push to DTR
    docker push docker.optum.com/msamud1/bluejay-jmeter

NOTE: these commands assume being run from $HOME/src/bluejay …

  • Log in to Optum's OpenShift (this is elk river non-prod)
    oc login https://ocp-elr-core-nonprod.optum.com
  • Create image stream for base JMeter builder image
    oc create -f ./etc/jmeter.yaml
  • Create image stream for app-specific load controller
    oc create -f ./etc/timbrado.json
  • Create image stream for load generator(s)
    oc create -f ./etc/loadgen.json
  • Create BuildConfig for app-specific load controller
    oc create -f ./etc/bld-timbrado.json
  • Create BuildConfig for load generator(s)
    oc create -f ./etc/bld-loadgen.json
  • Run a job:
    oc create -f ./etc/job-launch.yaml

Misc ...

Container DNS

In order for containers to be able to resolve external names, change the dnsIP value in /var/lib/origin/openshift.local.config/node-localhost/node-config.yaml to the real LAN's DNS nameserver

SSH Key Initialization

/usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
/usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
/usr/bin/ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
/usr/bin/ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''
/usr/bin/ssh-keygen -A

Interesting Resources

tech/openshift/start.txt · Last modified: 2019/01/05 16:52 by rk4n3