OpenShift
oc import-image
====== Resources ======
[[https://docs.docker.com/develop/develop-images/dockerfile_best-practices|Dockerfile Best Practices]] \\
[[https://www.clouda.ca/blog/general/openshift-on-centos-7-quick-installation|OpenShift on CentOS 7]] \\
[[https://github.com/openshift/origin#getting-started|OpenShift ''Getting Started'' on GitHub]] \\
[[https://blog.openshift.com/create-s2i-builder-image|Create builder images with S2I]] \\
[[https://developers.redhat.com/blog/2015/11/19/dns-your-openshift-v3-cluster|DNS for OpenShift v3 cluster]] \\
[[https://docs.openshift.org/3.6/install_config/master_node_configuration.html|OpenShift 3.6 Master Node config]] \\
[[http://sudhaker.com/10/install-the-latest-openshift-v3-on-centos-7-1|Sudhaker's blog]] \\
* Packages needed:
* ''yum install go''
* Install ''S2I'' from: [[https://github.com/openshift/source-to-image/releases]]
* ?
=== 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 accountoc 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 repodocker login -u yourlogin -p $(oc whoami -t) 172.30.1.1:5000
* Build, tag, and push JMeter imagecd ~/src/bluejay/s2ijm ; make
docker tag 172.30.1.1:5000/bluejay/jmeter
docker push 172.30.1.1:5000/bluejay/jmeter
* Build, tag, and push Locust imagecd ~/src/bluejay/s2iloc ; make
docker tag 172.30.1.1:5000/bluejay/locust
docker push 172.30.1.1:5000/bluejay/locust
* Build, tag, and push Maven imagecd ~/src/bluejay/s2imvn ; make
docker tag 172.30.1.1:5000/bluejay/maven
docker push 172.30.1.1:5000/bluejay/maven
* Build, tag, and push Gatling imagecd ~/src/bluejay/s2igat ; make
docker tag 172.30.1.1:5000/bluejay/gatling
docker push 172.30.1.1:5000/bluejay/gatling
* Create image streamscd ~/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 ... ====
http://www.testautomationguru.com/jmeter-distributed-load-testing-using-docker/ \\
https://hub.docker.com/_/openjdk/ \\
https://eleanordare.com/blog/2018/5/3/using-a-jenkins-pipeline-to-run-jmeter-tests-in-openshift-bkba6 \\
https://eleanordare.com/blog/2017/6/14/using-a-jenkins-pipeline-to-run-jmeter-tests-in-openshift \\
https://blog.openshift.com/remotely-push-pull-container-images-openshift \\
https://docs.openshift.org/latest/dev_guide/jobs.html \\
https://docs.openshift.com/enterprise/3.0/architecture/core_concepts/builds_and_image_streams.html \\
https://blog.openshift.com/running-any-docker-image-on-openshift-origin/ \\
https://docs.openshift.com/online/architecture/core_concepts/builds_and_image_streams.html#pipeline-build \\
https://docs.openshift.com/online/dev_guide/application_lifecycle/new_app.html#dev-guide-new-app \\
https://docs.openshift.com/online/dev_guide/index.html \\
https://docs.openshift.com/online/dev_guide/builds/build_inputs.html#image-source \\
https://docs.openshift.com/online/dev_guide/application_lifecycle/new_app.html \\
https://blog.openshift.com/getting-any-docker-image-running-in-your-own-openshift-cluster/ \\
https://blog.openshift.com/openshift-jobs \\
https://docs.openshift.com/online/rest_api/apis-batch/v1.Job.html \\
==== 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 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 ====
* [[https://hub.docker.com/r/jdeathe/centos-ssh]]
\\
//Links ... [[tech:start|Tech]] ... [[tech:linux:start|Linux]] // \\