Managing APIs in Kubernetes¶
ESB API Controller (apictl) allows you to manage APIs in Kubernetes with the use of ESB API Operator. This approach uses the Kubernetes native way to deploy the APIs into a running Microgateway cluster from the command line.
Prerequisites
-
- Minimum CPU : 2vCPU
- Minimum Memory : 2GB
Info
Before you begin
-
First download the Microgateway distribution from the github release page and extract that to a folder of your choice.
-
Make sure the apictl is downloaded and initialized, if not follow the steps in Download and initialize the apictl.
-
Ensure that the API Operator is deployed in the Kubernetes cluster. Please refer API Operator documentation for detailed steps.
-
Then deploy Microgateway in Kubernetes cluster. Please refer Steps for deploying Microgateway in Kubernetes.
Add an API to Kubernetes cluster¶
-
Run the following command to add an API to the Kubernetes cluster using either a swagger file, zip file, or an API project folder. When you add the API to the Kubernetes cluster, the API operator successfully deploys the project zip to the ESB Microgateway Adapter component.
-
Command
apictl k8s add api -n <API Name> -f <Location of the swagger file, zip file or API project folder>Info
Flags:
- Required :
--nameor-n: Name of the API--fileor-f: Location of the swagger file, zip file or the API project folder
Example
apictl k8s add api -n PizzaShackAPI -f swagger.yamlapictl k8s add api -n PizzaShackAPI -f PizzaShackAPI_1.0.0.zipapictl k8s add api -n PizzaShackAPI -f PizzaShackAPI-1.0.0 - Required :
-
Response
creating configmap with swagger definition configmap/pizzashackapi-swagger created creating API definition api.wso2.com/pizzashackapi created
-
Update an API in Kubernetes cluster¶
-
Run the following command to update an API in the Kubernetes cluster using either a swagger file, zip file, or an API project folder. When you update the API in the Kubernetes cluster, the API operator successfully deploys the updated project zip to the ESB Microgateway Adapter component.
-
Command
apictl k8s update api -n <API Name> -f <Location of the swagger file, zip file or API project folder>Info
Flags:
- Required :
--nameor-n: Name of the API--fileor-f: Location of the swagger file, zip file or the API project folder
Example
apictl k8s update api -n PizzaShackAPI -f swagger.yamlapictl k8s update api -n PizzaShackAPI -f PizzaShackAPI_1.0.0.zipapictl k8s update api -n PizzaShackAPI -f PizzaShackAPI-1.0.0 - Required :
-
Response
creating configmap with swagger definition configmap/pizzashackapi-swagger-1614042541 created creating API definition api.wso2.com/pizzashackapi configured configmap "pizzashackapi-swagger" deleted
-
Delete an API in Kubernetes cluster¶
-
Run the following command to delete an API in the Kubernetes cluster.
-
Command
apictl k8s delete api -n <API Name>Info
Flags:
- Required :
--nameor-n: Name of the API
Example
apictl k8s delete api -n PizzaShackAPI - Required :
-
Response
api.wso2.com "pizzashackapi" deleted
-
Generate Deployment Directory for Kubernetes¶
-
Run the following command to generate a sample directory with all the contents to use as the deployment directory when performing CI/CD pipeline tasks in Kubernetes.
-
Command
apictl k8s gen deployment-dir -s <Path of Source directory> -d <Path of Destination directory>Info
Flags:
- Required :
--sourceor-s: Path of the source directory to be used when generating the directory. Source can be a API project folder or a zipped API project. - Optional :
--destinationor-d: Path of the destination directory where the directory should be generated.
Example
apictl k8s gen deployment-dir -s PizzaShackAPI-1.0.0apictl k8s gen deployment-dir -s PizzaShackAPI-1.0.0 -d Deployment-Directory - Required :
-
Response
The deployment directory for PizzaShackAPI-1.0.0 file is generated at Deployment-Directory
A project folder with the following default structure will be created in the given directory.
<API_Name>-<API_Version> ├── api_crd.yaml ├── api_meta.yaml (api_product_meta.yaml for API Products) ├── certificates └── <API_Name>-params.yamlSub Directory/File Description API_Name-params.yamlThe config map of params.yamlwhich is the specification of the environment specific configurations.api_meta.yaml/api_product_meta.yamlThe meta-information file of the source artifact (This includes the name and the version of the source). certificates Contains the client certificates for Mutual SSL enabled APIs/API Products and endpoint certificates for endpoint security enabled APIs. api_crd.yamlThe Custom Resource Definition of the API. -
-
You can add kustomization.yaml, kustomize-config.yaml and project zip file (Eg: PizzaShackAPI_1.0.0.zip).
-
Run the following command to generate the related configuration maps.
-
Command
kubectl kustomize
-