Sample 1: Target Endpoint¶
Let's deploy a backend using Target Endpoint resource on your Kubernetes environment and apply API management.
Prerequisites¶
- Install a Kubernetes cluster and v1.14+ client. Alternatively, you can run Kubernetes locally via Minikube.
 - Install Docker.
 - Install the Kubernetes API Operator.
 - 
Setup Choreo Connect
- 
Download the Choreo Connect v0.9.0 from GitHub release page's assets and extract them to a folder of your choice. We will refer to this folder as the
CHOREO-CONNECT_HOME. - 
Using the kubectl tool, apply Kubernetes configurations for Choreo Connect.
kubectl apply -f <CHOREO-CONNECT_HOME>/k8s-artifacts/choreo-connect 
 - 
 
Step 1: Deploy Sample Backend¶
Let's use the TargetEndpoint custom resource to deploy our sample backend cakebakery/products:v1 in Kubernetes.
cat <<EOF | kubectl apply -f -
apiVersion: wso2.com/v1alpha2
kind: TargetEndpoint
metadata:
  name: products
  labels:
    app: products-backend
spec:
  applicationProtocol: http
  ports:
    - name: prod-ep
      port: 80
      targetPort: 8080
  deploy:
    name: products
    dockerImage: cakebakery/products:v1
    minReplicas: 2
    maxReplicas: 3
    requestCPU: "2m"
    reqMemory: "10Mi"
    cpuLimit: "5m"
    memoryLimit: "20Mi"
  mode: privateJet
EOF
After sometime executing above, you can see there are two pods of the backend running in the cluster.
kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
api-operator-7d86c6bd85-x6trj   1/1     Running   0          2m4s
products-77bd6f448f-j2sqn       1/1     Running   0          100s
products-77bd6f448f-vvnl5       1/1     Running   0          100s
Step 2: Create API for the backend¶
Let's create a k8s Config Map with the swagger definition of the API. We have added the following extensions for the endpoint and base path in the swagger definition.
x-wso2-production-endpoints:
  urls:
    - http://products
  type: http
x-wso2-sandbox-endpoints:
  urls:
    - http://products
  type: http
x-wso2-basePath: /products-api/v1
Create configmap with swagger definition.
k create cm products-cm \
    --from-file https://raw.githubusercontent.com/wso2/k8s-api-operator/v2.0.0/scenarios/scenario-1-target-endpoint/swagger.yaml
Now, let's create the API custom resource.
cat <<EOF | kubectl apply -f -
apiVersion: wso2.com/v1alpha2
kind: API
metadata:
  name: products-api
spec:
  swaggerConfigMapName: products-cm
EOF
Step 3: Invoke the API¶
Let's get a sample token.
TOKEN=$(curl -X POST "https://gw.wso2.com/testkey" \
    -H "Authorization: Basic YWRtaW46YWRtaW4=" -k -v)
Invoke the API with the token.
curl -X GET "https://gw.wso2.com/products-api/v1/products/3" \
    -H "accept: application/json" \
    -H "Authorization:Bearer $TOKEN" -k
You will see the following response.
{"id":3,"name":"ABC Smart TV","category":"Electronics","price":39999}
                
                  
                
              
Top