Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

A cartridge is a container for a framework, load balancer or data management system. You can add a cartridge in a platform as a service A cartridge is a container for a framework, load balancer or data management system. You can add a cartridge in a platform as a service (PaaS) for scalability.  A sample cartridge definition, together with information on all the properties that can be added in a cartridge definition JSON are as follows:

...

Excerpt
Code Block
 {
  "type": "php",
  "provider": "apache",
  "category": "data",
  "host": "php.stratos.org",
  "displayName": "php",
  "description": "php Cartridge",
  "version": "7",
  "multiTenant": "false",
  "portMapping": [
    {
	  "name": "http-80",
      "protocol": "http",
      "port": "80",
      "proxyPort": "8280"
	  "kubernetesPortType": "NodePort"
    },
    {
      "name": "http-22",
      "protocol": "tcp",
      "port": "22",
      "proxyPort": "8222"
	  "kubernetesPortType": "NodePort"
    }
  ],
  "deployment": {
    
  },
  "iaasProvider": [
    {
      "type": "mock",
      "imageId": "RegionOne/b4ca55e3-58ab-4937-82ce-817ebd10240e",
      "networkInterfaces": [
        {
          "name": "network-non-routable",
          "networkUuid": "b55f009a-1cc6-4b17-924f-4ae0ee18db5e"
        },
      ],
      "property": [
        {
          "name": "instanceType",
          "value": "RegionOne/aa5f45a2-c6d6-419d-917a-9dd2e3888594"
        },
        {
          "name": "keyPair",
          "value": "reka"
        },
        {
          "name": "securityGroups",
          "value": "default"
        }
      ]
    },
	{
			"type": "kubernetes",
			"imageId": "ap-southeast-1/ami­-70326522",
			"property": [],
			"networkInterfaces": []
	}
  ]
}

...

Property definitions

All the properties that correspond to the cartridge parameter resource are explained as follows: 

...

PropertyWRUDescriptionMDVData
Type 
Example
JSONUI
Anchor
protocol
protocol
protocol
Protocol The protocol that is used to map the portsYesN/AString

http

Anchor
port
port
port
Port The port to which the cartridge is mappedYesN/AInt80
Anchor
proxyPort
proxyPort
proxyPort
Proxy Port The proxy port to which the cartridge is mappedYesN/AInt8280

Anchor
kubernetesPortType
kubernetesPortType
kubernetesPortType

Kubernetes Port Type 

The Kubernetes port type to which the cartridge is mapped

Info

The following can be assigned for the Kubernetes port type:

  • NodePort
  • ClusterIP

    can be assigned for the Kubernetes port type:

    • NodePort -  If this value is used, it will create a service which can be accessed from the outside with port range of 30,000 to 32,767.
    • ClusterIP - If this value is used, the service that gets created will not be exposed to the outside. This is useful if you don't want to expose a service to outside, but need to maintain internal communication within Docker containers.

    Access URLs are generated only for the NodePort service type.

    NoN/AStringNodePort

    ...

    Property NameRelevant IaaS  DescriptionDefault ValueExample Values
    associatePublicIpAddressXWhen using virtual private cloud (VPC) this property needs to be assigned to true, so that your cartridge instance will be assigned a public IP.truetrue, false
    autoAssignIpThis is used to determine whether your cartridge will be assigned a public IP or private IP. If this property, is true a public IP will be assigned to your cartridge. If this property is false the IP will be assigned manually.truetrue, false
    availabilityZone

    The name of the availability zone.

    Note

    If you are using more than one partition, define the availability zone only in the cartridge definition and make sure not to define the availability zone in the cloud-controller.xml. This will enable the Autoscaler to dynamically select availability zone based on the partition.

    N/Aap-southeast-1a
    blockUntilRunningX

    This will determine whether or not the instance spawning call to the IaaS will be blocked, in order to retrieve IP addresses. If you wish to auto assign IPs, the instance spawning call should be blocking, but if you wish to assign IPs manually, it can be non-blocking.

    falsetrue, false
    defaultFloatingIpPool X If the floating IPs have not been pre-allocated for the respective tenant, when launching a cartridge, the floating IP allocation will fail. This property is used to specify the name of the floating IP pool that needs to be used.N/APublicPool1

    instanceType

    The type of instance that determines the instance size, which needs to be used. In OpenStack this is referred to as flavor.

    Note

    The instance type value needs to be specified differently based on the IaaS.
    For example:

    IaaSValue Format
    EC2N/A
    OpenStack<REGION>/<ID>
    N/A

    EC2

    m1.small

    OpenStack

    RegionOne/2

    keyPairThe name of the private key that corresponds to the key pair used to connect to the instance.N/Aapache-stratos-key1
    securityGroupIds When defining a security group in a VPC scenario, this property should be used instead of the securityGroups property.N/Asg-c999f7a6
    securityGroupsThe name of the security group that is used to define the IP filter rules for the instance.N/Asg-c999f7a6
    shellType X X The type of shell scripting language being used in the cartridge. This property is used to identify the correct customization script to use when passing the payload to the cartridge.N/Abash, sh, cmd
    subnetId X ID used to identify the virtual private cloud (VPC). For more information, go to Amazon VPC.N/Asubnet-3b8a7d2g
    tag X

    A tag is a name value pair used to filter instances. For more information, go to Using Tags.
    For example: <property name="tag.a" value="x" />

    N/Aa
    tags X Defines the names of multiple tags. For example: <property name="tags" value="a,b,c,d" /> N/Aa,b,c,d

    ...