Browse Source

add doc + setup

master
Nicolas Massé 7 years ago
parent
commit
c8c298c4d5
  1. 19
      README.md
  2. 162
      testcase-05/setup.yaml

19
README.md

@ -1,5 +1,10 @@
# API Lifecycle Mockup
## Pre-requisites
- OpenShift Cluster
- Linux or Mac Workstation
## Setup
Create an OpenShift project to hold all your artefacts:
@ -62,13 +67,13 @@ oc create route edge apicast-wildcard-production --service=apicast-production --
## Usecases
| # | Format | Security | Target | Policies |
| # | Format | Security | Target | Notes |
|--------------------|--------|----------|----------------------------------|---------------------|
| [01](testcase-01/) | YAML | API Key | SaaS | - |
| [02](testcase-02/) | JSON | Open | Self-Managed, on-premises | URL rewriting |
| [03](testcase-03/) | JSON | OIDC | Self-Managed, on-premises | URL rewriting |
| [04](testcase-04/) | YAML | API Key | 3 envs on 1 tenant, Self-managed | - |
| [05](testcase-05/) | JSON | OIDC | 3 envs on 3 tenants, on-premises | - |
| [04](testcase-04/) | YAML | API Key | 3 envs on 1 tenant, self-managed | - |
| [05](testcase-05/) | YAML | API Key | 3 envs on 1 tenant, self-managed | Semantic Versioning |
### Usecase 01: Deploy a simple API on 3scale SaaS
@ -96,8 +101,14 @@ oc process -f testcase-03/setup.yaml -p DEVELOPER_ACCOUNT_ID=2445582535751 -p PR
oc process -f testcase-03/setup.yaml -p DEVELOPER_ACCOUNT_ID=5 -p PRIVATE_BASE_URL=http://beer-catalog.app.itix.fr -p TARGET_INSTANCE=3scale-onprem -p PUBLIC_STAGING_WILDCARD_DOMAIN=onprem-staging.app.itix.fr -p PUBLIC_PRODUCTION_WILDCARD_DOMAIN=onprem-production.app.itix.fr -p DISABLE_TLS_VALIDATION=yes -p OIDC_ISSUER_ENDPOINT=https://$CLIENT_ID:$CLIENT_SECRET@$SSO_HOSTNAME/auth/realms/$REALM |oc create -f -
```
### Usecase 03: Deploy an API in three environments, all in one tenant
### Usecase 04: Deploy an API in three environments, all in one tenant
```sh
oc process -f testcase-04/setup.yaml -p DEVELOPER_ACCOUNT_ID=2445582535751 -p PRIVATE_BASE_URL=http://event-api.app.itix.fr -p PUBLIC_STAGING_WILDCARD_DOMAIN=nmasse-redhat-staging.app.itix.fr -p PUBLIC_PRODUCTION_WILDCARD_DOMAIN=nmasse-redhat-production.app.itix.fr |oc create -f -
```
### Usecase 05: Deploy four versions of an API in three environments, all in one tenant
```sh
oc process -f testcase-05/setup.yaml -p DEVELOPER_ACCOUNT_ID=2445582535751 -p PRIVATE_BASE_URL=http://event-api.app.itix.fr -p PUBLIC_STAGING_WILDCARD_DOMAIN=nmasse-redhat-staging.app.itix.fr -p PUBLIC_PRODUCTION_WILDCARD_DOMAIN=nmasse-redhat-production.app.itix.fr -p OIDC_ISSUER_ENDPOINT=https://$CLIENT_ID:$CLIENT_SECRET@$SSO_HOSTNAME/auth/realms/$REALM |oc create -f -
```

162
testcase-05/setup.yaml

@ -0,0 +1,162 @@
apiVersion: v1
kind: Template
metadata:
name: testcase-05
objects:
- kind: "BuildConfig"
apiVersion: "v1"
metadata:
name: "testcase-05-${TARGET_INSTANCE}-v0.9"
namespace: ${NAMESPACE}
spec:
source:
git:
uri: ${GIT_REPO}
strategy:
type: "JenkinsPipeline"
jenkinsPipelineStrategy:
jenkinsfilePath: testcase-05/Jenkinsfile
env:
- name: SECRET_NAME
value: ${SECRET_NAME}
- name: NAMESPACE
value: ${NAMESPACE}
- name: TARGET_INSTANCE
value: ${TARGET_INSTANCE}
- name: PUBLIC_STAGING_WILDCARD_DOMAIN
value: ${PUBLIC_STAGING_WILDCARD_DOMAIN}
- name: PUBLIC_PRODUCTION_WILDCARD_DOMAIN
value: ${PUBLIC_PRODUCTION_WILDCARD_DOMAIN}
- name: DEVELOPER_ACCOUNT_ID
value: ${DEVELOPER_ACCOUNT_ID}
- name: PRIVATE_BASE_URL
value: ${PRIVATE_BASE_URL}
- name: OIDC_ISSUER_ENDPOINT
value: ${OIDC_ISSUER_ENDPOINT}
- name: DISABLE_TLS_VALIDATION
value: ${DISABLE_TLS_VALIDATION}
- name: OPENAPI_SPECIFICATION_FILE
value: openapi-spec-v0.9.yaml
- kind: "BuildConfig"
apiVersion: "v1"
metadata:
name: "testcase-05-${TARGET_INSTANCE}-v1.0"
namespace: ${NAMESPACE}
spec:
source:
git:
uri: ${GIT_REPO}
strategy:
type: "JenkinsPipeline"
jenkinsPipelineStrategy:
jenkinsfilePath: testcase-05/Jenkinsfile
env:
- name: SECRET_NAME
value: ${SECRET_NAME}
- name: NAMESPACE
value: ${NAMESPACE}
- name: TARGET_INSTANCE
value: ${TARGET_INSTANCE}
- name: PUBLIC_STAGING_WILDCARD_DOMAIN
value: ${PUBLIC_STAGING_WILDCARD_DOMAIN}
- name: PUBLIC_PRODUCTION_WILDCARD_DOMAIN
value: ${PUBLIC_PRODUCTION_WILDCARD_DOMAIN}
- name: DEVELOPER_ACCOUNT_ID
value: ${DEVELOPER_ACCOUNT_ID}
- name: PRIVATE_BASE_URL
value: ${PRIVATE_BASE_URL}
- name: OIDC_ISSUER_ENDPOINT
value: ${OIDC_ISSUER_ENDPOINT}
- name: DISABLE_TLS_VALIDATION
value: ${DISABLE_TLS_VALIDATION}
- name: OPENAPI_SPECIFICATION_FILE
value: openapi-spec-v1.0.yaml
- kind: "BuildConfig"
apiVersion: "v1"
metadata:
name: "testcase-05-${TARGET_INSTANCE}-v1.1"
namespace: ${NAMESPACE}
spec:
source:
git:
uri: ${GIT_REPO}
strategy:
type: "JenkinsPipeline"
jenkinsPipelineStrategy:
jenkinsfilePath: testcase-05/Jenkinsfile
env:
- name: SECRET_NAME
value: ${SECRET_NAME}
- name: NAMESPACE
value: ${NAMESPACE}
- name: TARGET_INSTANCE
value: ${TARGET_INSTANCE}
- name: PUBLIC_STAGING_WILDCARD_DOMAIN
value: ${PUBLIC_STAGING_WILDCARD_DOMAIN}
- name: PUBLIC_PRODUCTION_WILDCARD_DOMAIN
value: ${PUBLIC_PRODUCTION_WILDCARD_DOMAIN}
- name: DEVELOPER_ACCOUNT_ID
value: ${DEVELOPER_ACCOUNT_ID}
- name: PRIVATE_BASE_URL
value: ${PRIVATE_BASE_URL}
- name: OIDC_ISSUER_ENDPOINT
value: ${OIDC_ISSUER_ENDPOINT}
- name: DISABLE_TLS_VALIDATION
value: ${DISABLE_TLS_VALIDATION}
- name: OPENAPI_SPECIFICATION_FILE
value: openapi-spec-v1.1.yaml
- kind: "BuildConfig"
apiVersion: "v1"
metadata:
name: "testcase-05-${TARGET_INSTANCE}-v2.0"
namespace: ${NAMESPACE}
spec:
source:
git:
uri: ${GIT_REPO}
strategy:
type: "JenkinsPipeline"
jenkinsPipelineStrategy:
jenkinsfilePath: testcase-05/Jenkinsfile
env:
- name: SECRET_NAME
value: ${SECRET_NAME}
- name: NAMESPACE
value: ${NAMESPACE}
- name: TARGET_INSTANCE
value: ${TARGET_INSTANCE}
- name: PUBLIC_STAGING_WILDCARD_DOMAIN
value: ${PUBLIC_STAGING_WILDCARD_DOMAIN}
- name: PUBLIC_PRODUCTION_WILDCARD_DOMAIN
value: ${PUBLIC_PRODUCTION_WILDCARD_DOMAIN}
- name: DEVELOPER_ACCOUNT_ID
value: ${DEVELOPER_ACCOUNT_ID}
- name: PRIVATE_BASE_URL
value: ${PRIVATE_BASE_URL}
- name: OIDC_ISSUER_ENDPOINT
value: ${OIDC_ISSUER_ENDPOINT}
- name: DISABLE_TLS_VALIDATION
value: ${DISABLE_TLS_VALIDATION}
- name: OPENAPI_SPECIFICATION_FILE
value: openapi-spec-v2.0.yaml
parameters:
- name: SECRET_NAME
value: 3scale-toolbox
- name: NAMESPACE
value: api-lifecycle
- name: TARGET_INSTANCE
value: 3scale-saas
- name: GIT_REPO
value: https://github.com/nmasse-itix/API-Lifecycle-Mockup.git
- name: PUBLIC_STAGING_WILDCARD_DOMAIN
required: false
- name: PUBLIC_PRODUCTION_WILDCARD_DOMAIN
required: false
- name: DEVELOPER_ACCOUNT_ID
required: true
- name: PRIVATE_BASE_URL
required: true
- name: DISABLE_TLS_VALIDATION
value: "no"
- name: OIDC_ISSUER_ENDPOINT
required: true
Loading…
Cancel
Save