Apigee Hybrid ์—…๊ทธ๋ ˆ์ด๋“œ

๋ฒ„์ „ 1.2.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ

๋‹ค์Œ ๋‹จ๊ณ„์— ๋”ฐ๋ผ Apigee Hybrid๋ฅผ ๋ฒ„์ „ 1.2.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๋‹ค.

1๋‹จ๊ณ„: Kubernetes ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐ ์ถœ์‹œ ํŒจํ‚ค์ง€ ๋‹ค์šด๋กœ๋“œ

  1. Kubernetes ํ”Œ๋žซํผ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—…๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๋‹ค. ๋„์›€์ด ํ•„์š”ํ•˜๋ฉด ํ”Œ๋žซํผ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
    ํ”Œ๋žซํผ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๋ฒ„์ „
    GKE 1.14.x
    Anthos 1.2
    AKS 1.14.x
  2. ์‚ฌ์šฉ ์ค‘์ธ ์šด์˜์ฒด์ œ์— ํ•ด๋‹นํ•˜๋Š” ์ถœ์‹œ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

    Mac 64๋น„ํŠธ:

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_mac_64.tar.gz

    Linux 64๋น„ํŠธ

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_linux_64.tar.gz

    Mac 32๋น„ํŠธ:

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_mac_32.tar.gz

    Linux 32๋น„ํŠธ

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_linux_32.tar.gz

2๋‹จ๊ณ„: ์„ค์น˜ ๋””๋ ‰ํ„ฐ๋ฆฌ ์žฌ๊ตฌ์„ฑ

  1. Apigee ํ•˜์ด๋ธŒ๋ฆฌ๋“œ๋ฅผ ์ฒ˜์Œ ์„ค์น˜ํ•  ๋•Œ ์ƒ์„ฑ๋œ ๊ธฐ๋ณธ ์„ค์น˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” $APIGEEGTL_HOME ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ ๊ธฐ๋ณธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” /Users/myhome/hybrid์ž…๋‹ˆ๋‹ค.
    echo $APIGEECTL_HOME
    /Users/myhome/hybrid/apigeectl
  2. ๋‹ค์šด๋กœ๋“œํ•œ gzip ํŒŒ์ผ ์ฝ˜ํ…์ธ ๋ฅผ Apigee Hybrid ๊ธฐ๋ณธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

    tar xvzf filename.tar.gz -C path-to-base-directory
  3. cd ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ธฐ๋ณธ์ ์œผ๋กœ tar ์ฝ˜ํ…์ธ ๋Š” ์ด๋ฆ„์— ๋ฒ„์ „๊ณผ ํ”Œ๋žซํผ์ด ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ./apigeectl_1.2.0-f7b96a8_linux_64์ž…๋‹ˆ๋‹ค.

  5. ํ˜„์žฌ apigeectl ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์ด๋ฆ„์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ˜„์žฌ ๋ฒ„์ „์ด 1.1.1์ธ ๊ฒฝ์šฐ apigeectl ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์ด๋ฆ„์„ apigeectl_1.1.1๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
  6. ์ƒˆ๋กœ ์ถ”์ถœ๋œ ์„ค์น˜ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„์„ apigeectl๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ด์ œ $APIGEECTL_HOME ํ™˜๊ฒฝ์ด ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

3๋‹จ๊ณ„: ์žฌ์ •์˜ ํŒŒ์ผ ์—…๋ฐ์ดํŠธ

  1. ์žฌ์ •์˜ ํŒŒ์ผ์˜ ์‚ฌ๋ณธ์„ ๋งŒ๋“ค๊ณ  ๋‚˜์ค‘์— ๋กค๋ฐฑํ•  ๋•Œ๋ฅผ ๋Œ€๋น„ํ•ด์„œ ์ด์ „ ํŒŒ์ผ์„ ๋ณด๊ด€ํ•ด๋‘ก๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ๋Š” ์žฌ์ •์˜ ํŒŒ์ผ์„ ์›ํ•˜๋Š” ๋Œ€๋กœ ๋ณ€๊ฒฝํ•œ ํ›„ ์ด๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  2. ์•„๋ž˜ ์„ค๋ช…๋œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์žฌ์ •์˜ ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ์€ ์žฌ์ •์˜ ํŒŒ์ผ์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ตฌ์„ฑ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์š”์•ฝํ•ด์„œ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ „์ฒด ์˜ˆ์‹œ๋Š” ์š”์•ฝ ๋‹ค์Œ์˜ ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•˜์„ธ์š”. ๋ณด์‹œ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ envs[] ์†์„ฑ์ด ์ด์ „ ๋ฒ„์ „๊ณผ ํฌ๊ฒŒ ๋‹ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.

    • envs[].hostAlias ์†์„ฑ์ด ์‚ญ์ œ๋˜์—ˆ๊ณ  ์ƒˆ๋กœ์šด virtualhosts.hostAliases[] ์†์„ฑ์œผ๋กœ ๋Œ€์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • ์ƒˆ๋กœ์šด ํ•„์ˆ˜ ๊ตฌ์„ฑ ์†์„ฑ virtualhosts๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • envs[].sslCertPath ๋ฐ envs[].sslKeyPath ์†์„ฑ์„ envs์—์„œ virtualhosts๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • virtualhosts.routingRules ๊ตฌ์„ฑ ์Šคํƒ ์ž๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. virtualhosts.routingRules ์†์„ฑ์€ ์ด์ „ envs[].paths ์†์„ฑ์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ์žฌ์ •์˜ ํŒŒ์ผ์— envs[].paths๊ฐ€ ์žˆ์œผ๋ฉด ์ด๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    ์•„๋ž˜ ํ…Œ์ด๋ธ”์€ 1.1.1 ์žฌ์ •์˜ ํŒŒ์ผ๊ณผ ๋ฒ„์ „ 1.2.0 ํŒŒ์ผ ๊ฐ„์˜ ์ฐจ์ด์ ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ๋Š” ๋ฒ„์ „ 1.2.0์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ณ€๊ฒฝ ์œ ํ˜•์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    v1.1.x ๊ตฌ์„ฑ v1.2.0 ๊ตฌ์„ฑ
    envs:
      - name: test1
        hostAlias: "api.example.com"
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        serviceAccountPaths:
          synchronizer: ./sa/sync.json
          udca: ./sa/udca.json
        paths:
          uri:
            prefixes:
              - /orders
              - /items
      - name: test2
        hostAlias: "api.example.com"
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        serviceAccountPaths:
          synchronizer: ./sa/sync.json
          udca: ./sa/udca.json
        paths:
          uri:
            prefixes:
              - /v0/hello
              - /httpbin
    virtualhosts:
      - name: default
        hostAliases: ["api.example.com"]
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        routingRules:
          - paths:
            - /orders
            - /items
            env: test1
          - paths:
            - /v0/hello
            - /httpbin
            env: test2
    
    envs:
      - name: test1
        serviceAccountPaths:
          synchronizer: ./sa/synchronizer.json
          udca: ./sa/udca.json
      - name: test2
        serviceAccountPaths:
          synchronizer: ./sa/synchronizer.json
          udca: ./sa/udca.json

4๋‹จ๊ณ„: ํด๋Ÿฌ์Šคํ„ฐ์— ์—…๊ทธ๋ ˆ์ด๋“œ ์ ์šฉ

  1. ๋ฒ„์ „ 1.1.1 ์„ค์น˜์— Apigee Connect๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•œ ๊ฒฝ์šฐ ๋ฐฐํฌ๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    1. ๋จผ์ € Apigee ๋ฐฐํฌ๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.
      kubectl -n namespace get ad
    2. Apigee Connect ๋ฐฐํฌ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
      kubectl -n namespace delete ad apigee-connect-name
  2. pod๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.
    kubectl get pods -n namespace
  3. ํด๋Ÿฌ์Šคํ„ฐ์—์„œ apigee-cps-setup pod๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ช…๋ น์–ด๋กœ ๋ฐ˜ํ™˜๋œ ๊ฒƒ์ฒ˜๋Ÿผ ์กฐ์ง ์ด๋ฆ„์ด ํฌํ•จ๋œ pod์˜ ์ „์ฒด ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    kubectl -n namespace delete pod apigee-cps-setup-org
  4. ๋™์ผํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ apigee-cps-create-user pod๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
    kubectl -n namespace delete pod apigee-cps-create-user
  5. ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋Ÿฐํƒ€์ž„ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•ด ์™„๋ฃŒ๋œ ์ž‘์—…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ namespace๋Š” ์žฌ์ •์˜ ํŒŒ์ผ์— ์ง€์ •๋œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค(๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ)์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” apigee์ž…๋‹ˆ๋‹ค.
    kubectl delete job -n namespace \
      $(kubectl get job -n namespace -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  6. apigee-system ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•ด ์™„๋ฃŒ๋œ ์ž‘์—…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
    kubectl delete job -n apigee-system \
      $(kubectl get job -n apigee-system -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  7. istio-system ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•ด ์™„๋ฃŒ๋œ ์ž‘์—…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
    kubectl delete job -n istio-system \
      $(kubectl get job -n istio-system -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  8. cd๋ฅผ ./hybrid-files ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  9. ์ƒˆ ๋ฒ„์ „์— ๋Œ€ํ•ด apigeectl์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
    $APIGEECTL_HOME/apigeectl init -f overrides/overrides-file.yaml
  10. ์ดˆ๊ธฐํ™”๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ํ™•์ธํ•˜์„ธ์š”.
    $APIGEECTL_HOME/apigeectl check-ready -f overrides/overrides-file.yaml
  11. check-ready๊ฐ€ '๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ์ค€๋น„ ์™„๋ฃŒ'๋กœ ์‘๋‹ตํ•˜๋ฉด 'ํ…Œ์ŠคํŠธ ์‹คํ–‰' ์„ค์น˜๋ฅผ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --dry-run=true ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ apply ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์‹คํ–‰์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ ์ „์— ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    $APIGEECTL_HOME/apigeectl apply -f overrides/overrides-file.yaml --dry-run=true
  12. ์˜ค๋ฅ˜๊ฐ€ ์—†์œผ๋ฉด ํด๋Ÿฌ์Šคํ„ฐ์— Apigee ๊ด€๋ จ ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    $APIGEECTL_HOME/apigeectl apply -f overrides/overrides-file.yaml
  13. check-ready๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์—ฌ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋Š” ์‹œ์ ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์—…๊ทธ๋ ˆ์ด๋“œ ๋กค๋ฐฑ

์ด์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๋กค๋ฐฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋Ÿฐํƒ€์ž„ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•ด ์™„๋ฃŒ๋œ ์ž‘์—…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ namespace๋Š” ์žฌ์ •์˜ ํŒŒ์ผ์— ์ง€์ •๋œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค(๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ)์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” apigee์ž…๋‹ˆ๋‹ค.
    kubectl delete job -n namespace \
      $(kubectl get job -n namespace -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  2. apigee-system ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•ด ์™„๋ฃŒ๋œ ์ž‘์—…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
    kubectl delete job -n apigee-system \
      $(kubectl get job -n apigee-system -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  3. istio-system ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•ด ์™„๋ฃŒ๋œ ์ž‘์—…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
    kubectl delete job -n istio-system \
      $(kubectl get job -n istio-system -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  4. Apigee ์—ฐ์‚ฐ์ž ๋ฐฐํฌ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ๋Ÿฐํƒ€์ž„ ํŠธ๋ž˜ํ”ฝ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    kubectl -n apigee-system delete deployment apigee-controller-manager
  5. apigeectl์˜ ์›๋ณธ ๋ฒ„์ „์ด ํฌํ•จ๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก $APIGEECTL_HOME ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    export APIGEECTL_HOME=path-to-original-apigeectl-directory
  6. ๋กค๋ฐฑํ•  ์„ค์น˜์˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ apigeectl init์„ ์‹คํ–‰ํ•œ ๋‹ค์Œ apigeectl apply๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋กค๋ฐฑํ•˜๋ ค๋Š” ๋ฒ„์ „์— ์›๋ž˜ ์žฌ์ •์˜ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      $APIGEECTL_HOME/apigeectl init -f overrides/original-overrides.yaml
      $APIGEECTL_HOME/apigeectl apply -f overrides/original-overrides.yaml