The APISource Custom Resource (CR) allows you to define mocks and importers in Microcks. This resources allows
you to define the artifacts to be imported or some importers to be used to import them and keep them synchronized.
APISource Custom Resource Definition is currently defined using the microcks.io/v1alpha1 API version. To access
the full schema definition you may want to check the
apisources.microcks.io-v1.yml file.
The APISource is a Microcks-dependent resource as it needs to have a Microcks
instance to be managed by the operator first.
At a higher level, a APISource resource is organized using the following structure:
apiVersion: microcks.io/v1alpha1
kind: APISource
metadata:
name: tests-artifacts
annotations:
microcks.io/instance: microcks
spec:
artifacts:
- <artifact-specification-details>
- <artifact-specification-details>
importers:
- <importer-specification-details>
- <importer-specification-details>spec.artifactscontains one or more artifact specification details.spec.importerscontains one or more importer specification details.
Once created in your namespace, you can easily list the existing secret sources using:
$ kubectl get apisources -n m2
NAME AGE
tests-artifacts 1dand get access to a specific instance details using kubectl get apisources/tests-artifacts -n m2 -o yaml.
The operator tracks the status of the reconciliation using the following structure in the status field
of the resource:
kind: APISource
metadata:
annotations:
microcks.io/instance: microcks
spec:
[...]
status:
conditions:
- lastTransitionTime: "2024-10-31T22:11:14Z"
message: API Pastry - 2.0:2.0.0
status: READY
type: https://raw.githubusercontent.com/microcks/microcks/master/samples/APIPastry-openapi.yaml
- lastTransitionTime: "2024-10-31T22:11:15Z"
message: io.github.microcks.grpc.hello.v1.HelloService:v1
status: READY
type: https://raw.githubusercontent.com/microcks/microcks/master/samples/hello-v1.proto
- lastTransitionTime: "2024-10-31T22:11:15Z"
message: io.github.microcks.grpc.hello.v1.HelloService:v1
status: READY
type: https://raw.githubusercontent.com/microcks/microcks/master/samples/HelloService.metadata.yml
- lastTransitionTime: "2024-10-31T22:11:16Z"
message: io.github.microcks.grpc.hello.v1.HelloService:v1
status: READY
type: https://raw.githubusercontent.com/microcks/microcks/master/samples/HelloService.postman.json
- lastTransitionTime: "2024-10-31T22:11:16Z"
message: Movie Graph API:1.0
status: READY
type: https://raw.githubusercontent.com/microcks/microcks/master/samples/films.graphql
- lastTransitionTime: "2024-10-31T22:11:16Z"
message: Movie Graph API:1.0
status: READY
type: https://raw.githubusercontent.com/microcks/microcks/master/samples/films-metadata.yml
- lastTransitionTime: "2024-10-31T22:11:16Z"
message: Movie Graph API:1.0
status: READY
type: https://raw.githubusercontent.com/microcks/microcks/master/samples/films-postman.json
- lastTransitionTime: "2024-10-31T22:11:17Z"
message: 67240085de8ad417f5cb4318
status: READY
type: https://raw.githubusercontent.com/microcks/microcks/master/samples/HelloService-soapui-project.xml
observedGeneration: 0
status: READYBasically, one condition is created per artifact and importer specification to track the reconciliation result and
the global status is made available via the status.status field. The type field of the condition represents the
artifact url in Microcks instance and the message field represents the API or importer unique identifier.
importers and Mock API discovered from aritfacts imported in Microcks are -by default- deleted when the custom resource
is deleted. This behavior can be changed by setting the keepAPIOnDelete property to true in the spec section.
Direct artifact declaration specification:
| Property | Description |
|---|---|
url |
Mandatory. The URL of artifact to import into Microcks instance. |
mainArtifact |
Optional. Whether this artifact should be considered as a main/primary one oar as a secondary one. See Multi-artifacts explanations. Default is true. |
secretRef |
Optional. An optional Secret that can be used to fetch the artifact URL. See SecretSource custom resource and Microcks Secrets explanations. |
Importer declaration specification:
| Property | Description |
|---|---|
mainArtifact |
Optional. Whether this artifact should be considered as a main/primary one oar as a secondary one. See Multi-artifacts explanations. Default is true. |
active |
Optional. Whether this importer should be immediately activated. Default is true. |
repository.url |
Mandatory. The URL of artifact to import into Microcks instance. |
repository.disableSSLValidation |
Optional. Default is false. |
repository.secretRef |
Optional. An optional Secret that can be used to fetch the artifact URL. See SecretSource custom resource and Microcks Secrets explanations. |
labels |
Optional. A map of labels to set on created importer. |
Here is a full example below:
apiVersion: microcks.io/v1alpha1
kind: APISource
metadata:
name: tests-artifacts
annotations:
microcks.io/instance: microcks
spec:
keepAPIOnDelete: false
artifacts:
- url: https://raw.githubusercontent.com/microcks/microcks/master/samples/APIPastry-openapi.yaml
mainArtifact: true
- url: https://raw.githubusercontent.com/microcks/microcks/master/samples/hello-v1.proto
mainArtifact: true
- url: https://raw.githubusercontent.com/microcks/microcks/master/samples/HelloService.metadata.yml
mainArtifact: false
- url: https://raw.githubusercontent.com/microcks/microcks/master/samples/HelloService.postman.json
mainArtifact: false
importers:
- name: Hello Soap Service
mainArtifact: true
active: false
repository:
url: https://raw.githubusercontent.com/microcks/microcks/master/samples/HelloService-soapui-project.xml
labels:
domain: authentication
status: GA
team: Team A