Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding API Gateway #4

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 122 additions & 0 deletions persistent-template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1191,3 +1191,125 @@ objects:
volumeMounts:
- name: alarmprovider-config
mountPath: "/alarmprovider_config"
# START API Gateway
- apiVersion: v1
kind: ConfigMap
metadata:
name: apigateway
data:
apimgmt-init: |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This script isn't referenced by anything. Can we get rid of it? If not, let's remove the redundancy and factor the common stuff into a shared script

# Dynamically determine API gateway host
export TOKEN="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)"
export NAMESPACE="$(cat /run/secrets/kubernetes.io/serviceaccount/namespace)"
export WHISK_API_GATEWAY_HOST=$(wget -q -O - -o /dev/null --ca-certificate='/var/run/secrets/kubernetes.io/serviceaccount/ca.crt' --header="Authorization: Bearer ${TOKEN}" "https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT}/oapi/v1/namespaces/${NAMESPACE}/routes/openwhisk?pretty=true" | grep '"host":' | head -n 1 | awk -F '"' '{print $4}')
export WHISK_API_HOST_NAME="${WHISK_API_GATEWAY_HOST}"
export PUBLIC_GATEWAY_URL="${WHISK_API_GATEWAY_HOST}"
exec /init.sh
apigateway-init: |
# Dynamically determine API gateway host and other environment variables
export TOKEN="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)"
export NAMESPACE="$(cat /run/secrets/kubernetes.io/serviceaccount/namespace)"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be /var/run right?

export WHISK_API_GATEWAY_HOST=$(wget -q -O - -o /dev/null --ca-certificate='/var/run/secrets/kubernetes.io/serviceaccount/ca.crt' --header="Authorization: Bearer ${TOKEN}" "https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT}/oapi/v1/namespaces/${NAMESPACE}/routes/openwhisk?pretty=true" | grep '"host":' | head -n 1 | awk -F '"' '{print $4}')
export WHISK_API_HOST_NAME="${WHISK_API_GATEWAY_HOST}"
export PUBLIC_GATEWAY_URL="http://${WHISK_API_GATEWAY_HOST}"
# with current bug in minishift its not able to resolve short dns names
# https://github.com/minishift/minishift/issues/2070
exec env REDIS_HOST="redis.${NAMESPACE}.svc.cluster.local" /etc/init-container.sh
- apiVersion: v1
kind: Service
metadata:
labels:
app: redis
name: redis
spec:
ports:
- name: redis
port: 6379
selector:
app: redis
- apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
labels:
app: redis
name: redis
spec:
replicas: 1
template:
metadata:
labels:
app: redis
name: redis
spec:
containers:
- image: docker.io/redis:3.2
name: redis
triggers:
- type: ConfigChange
- apiVersion: v1
kind: Service
metadata:
name: apigateway
labels:
app: apigateway
spec:
selector:
app: apigateway
ports:
- port: 8080
name: mgmt
- port: 9000
name: api
- apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
name: apigateway
labels:
app: apigateway
spec:
replicas: 1
template:
metadata:
labels:
app: apigateway
spec:
restartPolicy: Always
serviceAccountName: openwhisk
volumes:
- name: apigateway-config
configMap:
name: apigateway
items:
- key: apigateway-init
path: init
containers:
- name: apigateway
imagePullPolicy: IfNotPresent
image: docker.io/openwhisk/apigateway
command: [ "/bin/bash", "-o", "allexport", "/apigateway-config/init" ]
ports:
- name: mgmt
containerPort: 8080
- name: api
containerPort: 9000
env:
- name: REDIS_PORT
value: "6379"
volumeMounts:
- name: apigateway-config
mountPath: "/apigateway-config"
triggers:
- type: ConfigChange
- apiVersion: route.openshift.io/v1
kind: Route
metadata:
labels:
app: apigateway
name: apigateway
spec:
port:
targetPort: mgmt
to:
kind: Service
name: apigateway
# END API Gateway