Definitions API's
K8splugin artifacts start in the form of Definitions. These are nothing but Helm Charts wrapped with some metadata about the chart itself.
...
Code Block |
---|
|
> cd vagrant/tests/vnfs/testrb/helm
> find vault-consul-dev
vault-consul-dev
vault-consul-dev/Chart.yaml
vault-consul-dev/values.yaml
vault-consul-dev/templates
vault-consul-dev/templates/service.yaml
vault-consul-dev/templates/deployment.yaml
vault-consul-dev/charts
vault-consul-dev/charts/common/values.yaml
vault-consul-dev/charts/common/templates/_service.tpl
vault-consul-dev/charts/common/templates/_repository.tpl
vault-consul-dev/charts/common/templates/_name.tpl
vault-consul-dev/charts/common/templates/_namespace.tpl
vault-consul-dev/charts/common/templates
vault-consul-dev/charts/common/Chart.yaml
vault-consul-dev/charts/common
#Create a tar.gz for upload
> tar -cf vault-consul-dev.tar vault-consul-dev
> gzip vault-consul-dev.tar |
Managing Definitions
The following curl commands can be used to upload a definition and the helm chart for that definition.
...
Code Block |
---|
language | js |
---|
linenumbers | true |
---|
|
{
"rbname": "test-rbdef",
"rbversion": "v1",
"chart-name": "vault-consul-dev",
"description": "testing resource bundle definition api",
"service-type": "firewall"
"labels": {
}
} |
Command to create (POST) Definition:
Code Block |
---|
|
curl -i -d @create_rbdefinition.json -X POST http://localhost:8081/v1/rb/definition |
Command to UPLOAD artifact for Definition Created:
Code Block |
---|
|
curl -i --data-binary @vault-consul-dev.tar.gz -X POST http://localhost:8081/v1/rb/definition/test-rbdef/v1/content |
Command to GET Definitions:
Code Block |
---|
|
# Get all Definitions
curl -i http://localhost:8081/v1/rb/definition/
# Get one Definition
curl -i http://localhost:8081/v1/rb/definition/test-rbdef/v1 |
Command to DELETE Definitions:
Code Block |
---|
|
curl -i -X DELETE http://localhost:8081/v1/rb/definition/test-rbdef |
Profiles API's
Once the Definitions are created, we are ready to create some profiles so that we can customize that definition and instantiate it in Kubernetes.
...
Code Block |
---|
language | js |
---|
title | Profile JSON Body |
---|
|
{
"profile-name": "p1",
"release-name": "r1",
"namespace": "testnamespace1",
"kubernetesversion": "1.12.3"
} |
Command to create (POST) Profile
Code Block |
---|
|
curl -i -d @create_rbprofile.json -X POST http://localhost:8081/v1/rb/definition/test-rbdef/v1/profile |
Command to UPLOAD artifact for Profile
Code Block |
---|
|
curl -i --data-binary @profile.tar.gz -X POST http://localhost:8081/v1/rb/definition/test-rbdef/v1/profile/p1/content |
Command to GET Profiles
Code Block |
---|
|
# Get all Profiles
curl -i http://localhost:8081/v1/rb/definition/test-rbdef/v1/profile
# Get one Profile
curl -i http://localhost:8081/v1/rb/definition/test-rbdef/v1/profile/p1 |
Command to DELETE Profile
Code Block |
---|
|
curl -i -X DELETE http://localhost:8081/v1/rb/definition/test-rbdef/v1/profile/p1 |
Instantiation API's
Instantiate the created Profile via the following REST api
...
Code Block |
---|
|
{
"vnf_id":"3c13",
"cloud_region_id":"krd",
"namespace":"testnamespace1",
"vnf_components": {
"deployment":["krd-testnamespace1-3c13-test-rbprofile-vault-consul-dev"],
"service":["krd-testnamespace1-3c13-aaf-sms-db"]
}
} |
Delete Instantiated Kubernetes resources
The vnf_id field from the returned JSON can be used to DELETE the resources created in the previous step
...
Code Block |
---|
language | bash |
---|
title | Command to Instantiate a Profile |
---|
|
curl -X DELETE http://localhost:8081/v1/vnf_instances/krd/testnamespace1/3c13 |
Configuration API's
Day 2 Configurations for applications are applied using K8S kinds (typically CRDs) implemented by application specific operators. For a given application, type of configuration is similar (but not the values), therefore configuration templates are created by applications. These templates are for each application and are expected to be created even before Day 2 configuration is applied. Once the templates are created, configuration can be applied by choosing the right template. Day 2 configuration is applied by users as and when new configuration is required. As a user, he/she should select the template and supply values to apply new configuration.
Configuration Template API's
Command to POST (create) Template:
curl -i -d @create_config_template.json -X POST http: //localhost :8081 /v1/rb/definition/ {name}/{version} /profile/ {name} /config-template/
|
...
1 2 3 4 | {
"name" : "kafka_token"
"description" : "testing Kafka Day 2 config configuration" ,
}
|
Command to UPLOAD Template:
curl -i --data-binary @kafka-config. tar .gz -X POST http: //localhost :8081 /v1/rb/definition/ {name}/{version} /profile/ {name} /config-template/ {name}
|
Command to GET Templates:
curl -i http: //localhost :8081 /v1/rb/definition/ {name}/{version} /profile/ {name} /config-template
curl -i http: //localhost :8081 /v1/rb/definition/ {name}/{version} /profile/ {name} /config-template/ {name}
|
Command to DELETE Templates:
curl -i -X DELETE http: //localhost :8081 /rb/definition/ {name}/{version} /profile/ {name} /config-template/ {name}
|
Example
Example Contents of Tar File
> cd demo /vnfs/DAaaS
> find kafka-config
kafka-config /values .yaml
kafka-config /Chart .yaml
kafka-config /templates
kafka-config /templates/topic .yaml
> tar -cf kafka-config. tar kafka-config
> gzip kafka-config. tar
|
Configuration Values API's
In Day 2 apply configuration API each instance of configuration is identified by rb_name, rb_version and profile_name. The body of the API contains set of parameter and value list.
Command to POST (create) Configuration Values
curl -i -d @values.json -X POST http: //localhost :8081 /v1/rb/definition/ {name}/{version} /profile/ {name} /config
|
...
curl -i http: //localhost :8081 /v1/rb/definition/ {name}/{version} /profile/ {name} /config
curl -i http: //localhost :8081 /v1/rb/definition/ {name}/{version} /profile/ {name} /config/ {name}
|
Command to DELETE Configuration Values
curl -i -X DELETE http: //localhost :8081 /v1/rb/definition/ {name}/{version} /profile/ {name} /config/ {name}
|
Command to PUT (Modify) Configuration Values
curl -i -d @values.json -X PUT http: //localhost :8081 /v1/rb/definition/ {name}/{version} /profile/ {name} /config/ {name}
|
...
{
"rb-name" : "kafka" ,
"rb-version" : "kafka-config-1" ,
"profile-name" : "1234567890" ,
"template-name" : "kafka-token"
"config-name" : "kafka_token_1"
"config-version" : "3"
}
}
|
Command to TAG configuration Values
This will add the tag name to the current config version
...
With the following JSON content (values.json )
Command to ROLLBACK configuration Values
Rollbacks configuration to a config version or a tag.
...
{
"anyOf" : [
{
"config-version" : "<value>"
},
{
"config-tag" : "<tag name>"
}
]
}
|
Reachability/Connectivity Info API's
API to support Reachability for Kubernetes Cloud
...