Browse Source

first examples

master
Nicolas Massé 7 years ago
commit
671b2346fb
  1. 4
      .gitignore
  2. 43
      hello-world/config/apicast.conf
  3. 35
      hello-world/hello-world.yaml
  4. 71
      path-routing/config/apicast.conf
  5. 55
      path-routing/path-routing.yaml
  6. 43
      with-https/config/apicast.conf
  7. 61
      with-https/with-https.yaml

4
.gitignore

@ -0,0 +1,4 @@
*.retry
*.crt
*.csr
*.key

43
hello-world/config/apicast.conf

@ -0,0 +1,43 @@
{
"services": [
{
"id": 1234,
"backend_version": 1,
"proxy": {
"api_backend": "http://127.0.0.1:8081",
"hostname_rewrite": "echo",
"hosts": [
"localhost",
"127.0.0.1"
],
"backend": {
"endpoint": "http://127.0.0.1:8081",
"host": "echo"
},
"policy_chain": [
{ "name": "apicast.policy.apicast" }
],
"proxy_rules": [
{
"http_method": "GET",
"pattern": "/",
"metric_system_name": "hits",
"delta": 1
},
{
"http_method": "POST",
"pattern": "/",
"metric_system_name": "hits",
"delta": 1
},
{
"http_method": "PUT",
"pattern": "/",
"metric_system_name": "hits",
"delta": 1
}
]
}
}
]
}

35
hello-world/hello-world.yaml

@ -0,0 +1,35 @@
---
- name: Deploy an APIcast gateway with the Echo API
gather_facts: no
hosts: localhost
tasks:
- name: Deploy APIcast
docker_container:
name: apicast-hello-world
image: quay.io/3scale/apicast:v3.3.0
volumes:
- '{{ playbook_dir }}/config:/config:ro'
env:
THREESCALE_CONFIG_FILE: /config/apicast.conf
ports:
- 8080:8080
cleanup: yes
detach: yes
state: started
- name: Wait for APIcast to start
pause:
seconds: 5
- name: Ensure the Echo API is working
uri:
url: http://localhost:8080/?user_key=dummy
method: GET
timeout: 5
status_code: 200
- name: Delete APIcast
docker_container:
name: apicast-hello-world
state: absent

71
path-routing/config/apicast.conf

@ -0,0 +1,71 @@
{
"services": [
{
"id": 123,
"backend_version": 1,
"proxy": {
"api_backend": "http://127.0.0.1:8081",
"hostname_rewrite": "echo",
"hosts": [
"localhost"
],
"backend": {
"endpoint": "http://127.0.0.1:8081",
"host": "echo"
},
"policy_chain": [
{ "name": "apicast.policy.apicast" },
{
"name": "apicast.policy.headers",
"configuration": {
"response": [
{ "op": "set", "header": "X-SVC", "value": "svc1" }
]
}
}
],
"proxy_rules": [
{
"http_method": "GET",
"pattern": "/svc1",
"metric_system_name": "hits",
"delta": 1
}
]
}
}, {
"id": 456,
"backend_version": 1,
"proxy": {
"api_backend": "http://127.0.0.1:8081",
"hostname_rewrite": "echo",
"hosts": [
"localhost"
],
"backend": {
"endpoint": "http://127.0.0.1:8081",
"host": "echo"
},
"policy_chain": [
{ "name": "apicast.policy.apicast" },
{
"name": "apicast.policy.headers",
"configuration": {
"response": [
{ "op": "set", "header": "X-SVC", "value": "svc2" }
]
}
}
],
"proxy_rules": [
{
"http_method": "GET",
"pattern": "/svc2",
"metric_system_name": "hits",
"delta": 1
}
]
}
}
]
}

55
path-routing/path-routing.yaml

@ -0,0 +1,55 @@
---
- name: Deploy an APIcast gateway with Path Routing enabled
gather_facts: no
hosts: localhost
tasks:
- name: Deploy APIcast
docker_container:
name: apicast-path-routing
image: quay.io/3scale/apicast:v3.3.0
volumes:
- '{{ playbook_dir }}/config:/config:ro'
env:
THREESCALE_CONFIG_FILE: /config/apicast.conf
APICAST_PATH_ROUTING: 'true'
ports:
- 8080:8080
cleanup: yes
detach: yes
state: started
- name: Wait for APIcast to start
pause:
seconds: 5
- name: Ensure Service1 is working
uri:
url: http://localhost:8080/svc1?user_key=dummy
method: GET
timeout: 5
status_code: 200
register: response
- name: The X-SVC HTTP header must be equal to "svc1"
assert:
that:
- response.x_svc == 'svc1'
- name: Ensure Service2 is working
uri:
url: http://localhost:8080/svc2?user_key=dummy
method: GET
timeout: 5
status_code: 200
register: response
- name: The X-SVC HTTP header must be equal to "svc2"
assert:
that:
- response.x_svc == 'svc2'
- name: Delete APIcast
docker_container:
name: apicast-path-routing
state: absent

43
with-https/config/apicast.conf

@ -0,0 +1,43 @@
{
"services": [
{
"id": 1234,
"backend_version": 1,
"proxy": {
"api_backend": "http://127.0.0.1:8081",
"hostname_rewrite": "echo",
"hosts": [
"localhost",
"127.0.0.1"
],
"backend": {
"endpoint": "http://127.0.0.1:8081",
"host": "echo"
},
"policy_chain": [
{ "name": "apicast.policy.apicast" }
],
"proxy_rules": [
{
"http_method": "GET",
"pattern": "/",
"metric_system_name": "hits",
"delta": 1
},
{
"http_method": "POST",
"pattern": "/",
"metric_system_name": "hits",
"delta": 1
},
{
"http_method": "PUT",
"pattern": "/",
"metric_system_name": "hits",
"delta": 1
}
]
}
}
]
}

61
with-https/with-https.yaml

@ -0,0 +1,61 @@
---
- name: Deploy an APIcast gateway with HTTPS
gather_facts: no
hosts: localhost
tasks:
- name: Generate a private key
openssl_privatekey:
path: '{{ playbook_dir }}/config/tls.key'
size: 1024
state: present
- name: Generate a CSR
openssl_csr:
path: '{{ playbook_dir }}/config/tls.csr'
privatekey_path: '{{ playbook_dir }}/config/tls.key'
common_name: localhost
subject_alt_name: 'DNS:localhost'
state: present
- name: Generate a self-signed certificate
openssl_certificate:
path: '{{ playbook_dir }}/config/tls.crt'
privatekey_path: '{{ playbook_dir }}/config/tls.key'
csr_path: '{{ playbook_dir }}/config/tls.csr'
provider: selfsigned
state: present
- name: Deploy APIcast
docker_container:
name: apicast-https
image: quay.io/3scale/apicast:v3.3.0
volumes:
- '{{ playbook_dir }}/config:/config:ro'
env:
THREESCALE_CONFIG_FILE: /config/apicast.conf
APICAST_HTTPS_PORT: 8443
APICAST_HTTPS_CERTIFICATE: /config/tls.crt
APICAST_HTTPS_CERTIFICATE_KEY: /config/tls.key
ports:
- 8443:8443
cleanup: yes
detach: yes
state: started
- name: Wait for APIcast to start
pause:
seconds: 5
- name: Ensure the Echo API is working
uri:
url: https://localhost:8443/?user_key=dummy
method: GET
timeout: 5
status_code: 200
validate_certs: no
- name: Delete APIcast
docker_container:
name: apicast-https
state: absent
Loading…
Cancel
Save