In the Wetty terminal, create a new project.
oc new-project gochat-s2i-userYOUR#
Create a new build for the Golang S2I builder image
cd ~
oc new-build golang-s2i/ --to=golang-s2i
Start the new build for the Golang S2I builder image
oc start-build golang-s2i --from-dir=golang-s2i/
In the OpenShift WebUI, on the catalog page, seclect Import YAML/JSON
Select the project to which you want to import the template
gochat-s2i-userYOUR#
Copy and paste the following YAML in to the text box.
apiVersion: v1
kind: Template
labels:
template: golang
metadata:
annotations:
description: A basic builder for Golang applications
iconClass: icon-go-gopher
openshift.io/display-name: Golang
openshift.io/long-description: This template defines resources needed to develop
a Golang application, including a build configuration, application deployment
configuration, and database deployment configuration.
openshift.io/provider-display-name: Community
template.openshift.io/bindable: "false"
tags: golang
creationTimestamp: null
name: golang
objects:
- apiVersion: v1
kind: ImageStream
metadata:
annotations:
description: Keeps track of changes in the application image
name: ${APPLICATION_NAME}
- apiVersion: v1
kind: BuildConfig
metadata:
annotations:
description: Defines how to build the application
name: ${APPLICATION_NAME}
spec:
output:
to:
kind: ImageStreamTag
name: ${APPLICATION_NAME}:latest
source:
contextDir: ${APP_CONTEXT_DIR}
git:
ref: ${APP_SOURCE_REPOSITORY_REF}
uri: ${APP_SOURCE_REPOSITORY_URL}
type: Git
strategy:
sourceStrategy:
from:
kind: ImageStreamTag
name: golang-s2i:latest
type: Source
triggers:
- type: ImageChange
- type: ConfigChange
- github:
secret: ${APP_GITHUB_WEBHOOK_SECRET}
type: GitHub
- apiVersion: v1
kind: DeploymentConfig
metadata:
annotations:
description: Defines how to deploy the application server
name: ${APPLICATION_NAME}
spec:
replicas: 1
selector:
name: ${APPLICATION_NAME}
strategy:
type: Rolling
template:
metadata:
labels:
name: ${APPLICATION_NAME}
name: ${APPLICATION_NAME}
spec:
containers:
- env:
- name: ARGS
value: ${APP_ARGS}
image: ${APPLICATION_NAME}
name: ${APPLICATION_NAME}
ports:
- containerPort: 8080
triggers:
- imageChangeParams:
automatic: true
containerNames:
- ${APPLICATION_NAME}
from:
kind: ImageStreamTag
name: ${APPLICATION_NAME}:latest
type: ImageChange
- type: ConfigChange
- apiVersion: v1
kind: Service
metadata:
annotations:
description: Exposes and load balances the application pods
name: ${APPLICATION_NAME}
spec:
ports:
- name: web
port: 8080
targetPort: 8080
selector:
name: ${APPLICATION_NAME}
- apiVersion: v1
id: ${APPLICATION_NAME}
kind: Route
metadata:
annotations:
description: Route for application's http service.
labels:
application: ${APPLICATION_NAME}
name: ${APPLICATION_NAME}
spec:
host: ${APPLICATION_DOMAIN}
to:
name: ${APPLICATION_NAME}
parameters:
- description: The URL of the repository with your Golang application code
name: APP_SOURCE_REPOSITORY_URL
displayName: Application Source URL
- description: Set this to a branch name, tag or other ref of your repository if you
are not using the default branch
name: APP_SOURCE_REPOSITORY_REF
displayName: Application Source Branch
- description: Set this to the relative path to your project if it is not in the root
of your repository
name: APP_CONTEXT_DIR
displayName: Application Source Directory
- description: A secret string used to configure the GitHub webhook for the app repo
from: '[a-zA-Z0-9]{40}'
generate: expression
name: APP_GITHUB_WEBHOOK_SECRET
displayName: Application GitHub Web Hook Secret
- description: The name for the application.
name: APPLICATION_NAME
required: true
value: golang-app
displayName: Application Name
- description: 'Custom hostname for service routes. Leave blank for default hostname,
e.g.: <application-name>.<project>.<default-domain-suffix>'
name: APPLICATION_DOMAIN
displayName: Application Domain
- description: Command line arguments to provide to the Golang application
name: APP_ARGS
displayName: Application Command Line Arguments
Ensure your configuration looks similar to the following. If so, click Create.
Uncheck Process the template
Check Save template
Click Add.
On the next screen click Close.
From the Catalog page, click Select from Project.
On the next screen, choose your gochat-s2i-{{USERNAME}} project, then the golang-s2i template.
Click Next to get to the Information screen.
Click Next again to get to the Configuration screen.
In the Add to Project field, select your gochat-s2i-userYOUR# project.
In the Application Source URL field, enter https://github.com/kevensen/openshift-gochat-client.git
In the Application Name field, enter gochat-client
In the Application Command Line Arguments field, enter the following:
-host :8080 -chatServer gochat-server.gochat-server.svc.cluster.local:8080 -templatePath /opt/app-root/gopath/src/github.com/kevensen/openshift-gochat-client/templates -logtostderr -insecure
Click Create
As in the previous lab, we must annotate the service account for the Gochat Client to communicate to the OpenShift API for user credential verification.
oc annotate sa/default serviceaccounts.openshift.io/oauth-redirectreference.1='{"kind":"OAuthRedirectReference","apiVersion":"v1","reference":{"kind":"Route","name":"gochat-client"}}' --overwrite
oc annotate sa/default serviceaccounts.openshift.io/oauth-redirecturi.1=auth/callback/openshift --overwrite
Click the blue “Login” button.
Log in to the app with your OpenShift credentials. The workshop moderator will provide you with the URL, your username, and password.Send a message and chat with friends!