
As depicted below, a kubernetes API server is at the heart of any kyma/k8s cluster. The API server exposes an HTTP API for pretty much every single k8s cluster object Whether using kubectl command line interface or a kubernetes client library, the communication is passing through the kubernetes API server |
![]() |
Any Kyma/k8s API server can output the current APIs definitions via the /openapi/v2 endpoint.That's pretty convenient as the swagger OpenAPI specification will only contain the API definitions supported by this very cluster's kubernetes version. |
$ curl -k --header "Authorization: Bearer <token>" https://api.<cluster ID>.kyma.shoot.live.k8s-hana.ondemand.com/openapi/v2 > <cluster ID>-swagger.json
kubectl get --raw /openapi/v2 --kubeconfig ~/.kube/kubeconfig--shoot--kyma--<cluster ID>.yaml > <cluster ID>-swagger.json
$ kubectl proxy --port=8080 --kubeconfig ~/.kube/kubeconfig--shoot--kyma--<cluster ID>.yaml
Starting to serve on 127.0.0.1:8080
$ curl http://localhost:8080/openapi/v2 > <cluster ID>-swagger.json
http://localhost:8080/version
{
"major": "1",
"minor": "25",
"gitVersion": "v1.25.6",
"gitCommit": "ff2c119726cc1f8926fb0585c74b25921e866a28",
"gitTreeState": "clean",
"buildDate": "2023-01-18T19:15:26Z",
"goVersion": "go1.19.5",
"compiler": "gc",
"platform": "linux/amd64"
}
$ docker run --rm -p 80:8080 -e BASE_URL=/swagger -e SWAGGER_JSON=/<cluster ID>-swagger.json -v $(pwd)/<cluster ID>-swagger.json:/<cluster ID>-swagger.json swaggerapi/swagger-ui
$ docker pull swaggerapi/swagger-converter
Using default tag: latest
latest: Pulling from swaggerapi/swagger-converter
Digest: sha256:a4f05c2df58d4168019fe28ef3fc9d6494e077e2fd1f8d714cd8501e41a0ed6e
Status: Image is up to date for swaggerapi/swagger-converter:latest
docker.io/swaggerapi/swagger-converter:latest
$ docker run -d -p 8080:8080 --name swagger-converter swaggerapi/swagger-converter
openapi: 3.0.1
info:
title: api.123456.kyma.ondemand.com
x-targetEndpoint: 'https://api.123456.kyma.ondemand.com'
version: 1.0.0
servers:
- url: >-
https://<BTP zoneid>-trial.integrationsuitetrial-apim.eu10.hana.ondemand.com:443/k8s-123456
paths: {}
sapapim.accessToken
variable with the value of the bearer access token coming from your kyma cluster, for instance:context.setVariable("sapapim.accessToken" , bearer_kyma_default);
<!-- This policy can be used to create or modify the standard HTTP request and response messages -->
<AssignMessage async="false" continueOnError="false" enabled="true" xmlns='http://www.sap.com/apimgmt'>
<Set>
<Headers>
<Header name="Accept-Encoding">gzip,deflate</Header>
<Header name="Content-Type">application/json</Header>
<Header name="Accept">application/json</Header>
<Header name="Authorization">Bearer {sapapim.accessToken}</Header>
</Headers>
</Set>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<AssignTo createNew="false" type="request">request</AssignTo>
</AssignMessage>
<AssignMessage async="false" continueOnError="false" enabled="true" xmlns='http://www.sap.com/apimgmt'>
<Add>
<Headers>
<Header name="Access-Control-Allow-Origin">*</Header>
<Header name="Access-Control-Allow-Headers">set-cookie, origin, accept, maxdataserviceversion, x-csrf-token, apikey, dataserviceversion, accept-language, x-http-method,content-type,X-Requested-With, Authorization</Header>
<Header name="Access-Control-Max-Age">3628800</Header>
<Header name="Access-Control-Allow-Methods">GET, PUT, POST, DELETE</Header>
<Header name="Access-Control-Expose-Headers">set-cookie, x-csrf-token, x-http-method</Header>
</Headers>
</Add>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<AssignTo createNew="false" type="response">response</AssignTo>
</AssignMessage>
Pre-requisistes:
Other resources:
|
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
45 | |
43 | |
20 | |
9 | |
8 | |
8 | |
7 | |
7 | |
6 | |
6 |