Add the MART IP to your org

Your hybrid-enabled org must contain a reference to the MART endpoint that you exposed in a previous step. The org needs this endpoint information so that it can communicate with the runtime plane. This connection allows certain configuration changes you make in the management plane to be updated on the runtime plane. For example, API product data, developer apps, OAuth tokens, and quota counters are all passed to the runtime plan through this MART endpoint.

To add the MART endpoint IP address to your organization:

  1. If you used a fully-qualified domain name (such as foo-test.example.com) for the hostAlias when you exposed the MART endpoint, go to Step 4 below.
  2. If you used '*' for the hostAlias when you exposed the MART endpoint, you need to get the external IP for the apigee-mart-istio-ingressgateway. For example:
    kubectl get services -n your_namespace

    In the output, you will see something like this, where 34.66.4.130 is the external MART endpoint:

    NAME                                   TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)
    apigee-mart-istio-ingressgateway       LoadBalancer   10.43.255.19    34.66.4.130      80:31381/TCP,443:31391
  3. Copy the value of the EXTERNAL-IP.
  4. Call the following management API to update your organization with the MART endpoint:
    curl https://api.enterprise.apigee.com/v1/organizations/your_org_name \
      -H "Content-Type: application/json" -X POST \
      -v -u your_username -d '{
      "name" : "your_org_name",
      "properties" : {
        "property" : [ {
          "name" : "self.service.virtual.host.enabled",
          "value" : "true"
        }, {
          "name" : "features.hybrid.enabled",
          "value" : "true"
        }, {
          "name" : "features.isCpsEnabled",
          "value" : "true"
        }, {
          "name" : "features.isEdgeFunctionsEnabled",
          "value" : "true"
        }, {
          "name" : "features.isHTTPStatusTooManyRequestEnabled",
          "value" : "true"
        } , {
          "name" : "hybrid.mart.server.endpoint",
          "value" : "your_MART_hostAlias"
        } ]
      }
    }'

    The following example uses EXTERNAL-IP as the MART server endpoint:

    curl https://api.enterprise.apigee.com/v1/organizations/my_org \
      -H "Content-Type: application/json" -X POST \
      -v -u your_username -d '{
      "name" : "my_org",
      "properties" : {
        "property" : [ {
          "name" : "self.service.virtual.host.enabled",
          "value" : "true"
        }, {
          "name" : "features.hybrid.enabled",
          "value" : "true"
        }, {
          "name" : "features.isCpsEnabled",
          "value" : "true"
        }, {
          "name" : "features.isEdgeFunctionsEnabled",
          "value" : "true"
        }, {
          "name" : "features.isHTTPStatusTooManyRequestEnabled",
          "value" : "true"
        } , {
          "name" : "hybrid.mart.server.endpoint",
          "value" : "https://35.229.53.162"
        } ]
      }
    }'

    The following example uses the domain name as the MART server endpoint:

    curl https://api.enterprise.apigee.com/v1/organizations/my_org \
      -H "Content-Type: application/json" -X POST \
      -v -u your_username -d '{
      "name" : "my_org",
      "properties" : {
        "property" : [ {
          "name" : "self.service.virtual.host.enabled",
          "value" : "true"
        }, {
          "name" : "features.hybrid.enabled",
          "value" : "true"
        }, {
          "name" : "features.isCpsEnabled",
          "value" : "true"
        }, {
          "name" : "features.isEdgeFunctionsEnabled",
          "value" : "true"
        }, {
          "name" : "features.isHTTPStatusTooManyRequestEnabled",
          "value" : "true"
        } , {
          "name" : "hybrid.mart.server.endpoint",
          "value" : "https://foo-mart.example.com"
        } ]
      }
    }'

Next steps