Summary and Next Steps

Congratulations! You have completed the migration workshop. This module recaps what you learned, shows the conversion patterns, and provides links to official documentation.

What you accomplished

  1. Explored the 3scale environment — Products, Backends, Application Plans, APIcast

  2. Explored the Connectivity Link environment — Gateway, HTTPRoute, OIDCPolicy, AuthPolicy, RateLimitPolicy, PlanPolicy, APIProduct

  3. Compared both approaches side by side across authentication, rate limiting, GitOps, and developer experience

  4. Ran the migration template from Developer Hub to generate all Connectivity Link resources automatically

  5. Verified the migrated application works identically to the 3scale original

Mapping Rules to HTTPRoute conversion

3scale MappingRules

mappingRules:
  - httpMethod: GET
    pattern: "/api/v1/customers$"
    metricMethodRef: hits
  - httpMethod: POST
    pattern: "/api/v1/customers$"
    metricMethodRef: hits
  - httpMethod: GET
    pattern: "/q/openapi$"
    metricMethodRef: hits

Equivalent HTTPRoute

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
spec:
  rules:
    - matches:
        - path:
            type: PathPrefix
            value: /api
      backendRefs:
        - name: neuralbank-backend-svc
          port: 8080
    - matches:
        - path:
            type: PathPrefix
            value: /q
      backendRefs:
        - name: neuralbank-backend-svc
          port: 8080

Application Plans to PlanPolicy conversion

3scale Application Plans

applicationPlans:
  basic:
    name: "Basic Plan"
    limits:
      - period: minute
        value: 60
        metricMethodRef:
          systemName: hits
  premium:
    name: "Premium Plan"
    limits:
      - period: minute
        value: 300
        metricMethodRef:
          systemName: hits

Equivalent PlanPolicy

apiVersion: extensions.kuadrant.io/v1alpha1
kind: PlanPolicy
spec:
  plans:
    - tier: basic
      predicate: |
        auth.identity.metadata.annotations["secret.kuadrant.io/plan-id"] == "basic"
      limits:
        daily: 1000
        custom:
          - limit: 60
            window: "1m"
    - tier: pro
      predicate: |
        auth.identity.metadata.annotations["secret.kuadrant.io/plan-id"] == "pro"
      limits:
        daily: 10000
        custom:
          - limit: 300
            window: "1m"

Decommission flow

Once the migration is validated, follow these steps to decommission the 3scale environment:

  1. Disable traffic to 3scale: Update DNS or Routes to point exclusively to the Connectivity Link gateway.

  2. Disable the 3scale Product: Set the Product to "disabled" or remove the public endpoint.

  3. Verify no traffic: Monitor 3scale analytics to confirm zero traffic.

  4. Delete 3scale resources: Remove the Product, Backend, and Application CRDs.

  5. Delete the source namespace: oc delete namespace neuralbank-3scale (or nfl-wallet-3scale).

  6. Remove 3scale Operator (optional): If no other APIs use 3scale, uninstall the operator.

Do not delete the source namespace until you have fully validated the Connectivity Link environment in production.

Repository

The source code, Helm charts, Software Templates, and this workshop documentation are available at:

Thank you

This workshop was created by Maximiliano Pizarro and is powered by Kuadrant and Red Hat Developer Hub.