Versions Compared

Key

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

...

  1. A node in namespace ABC. The deployment policy has "cluster_namespace":"ABC". The edge service is deployed to the node.
  2. A node in namespace ABC. The deployment policy has no "cluster_namespace". The edge service is deployed to the node.
  3. A node in namespace ABC. The deployment policy has no "cluster_namespace". The deployment policy has a constraint expression openhorizon.kubernetesNamespace=XYZ. The edge service is NOT deployed to the node.
  4. A node in namespace ABC. The deployment policy has "cluster_namespace":"ABC". The deployment policy has a constraint expression openhorizon.kubernetesNamespace=XYZ. The edge service is NOT deployed to the node. The user received a warning when publishing the policy that the policy might result in no service deployments.

Note: The node owner is always free to configure a deployment constraint expression that limits the namespace

...

Pattern:

A new field is added to the schema of a pattern (as a top level field in the schema), indicating the target namespace for the pattern's deployment.

 "cluster_namespace": <string>

The "cluster_namespace" field is optional and ignored for patterns deployed to a device. Namespace scoped nodes not in the specified namespace are not eligible to deploy the pattern. Cluster scoped nodes only deploy patterns that have an empty "cluster_namespace" field. A pattern with an empty "cluster_namespace" MUST NOT be deployed to a devicenamespace scoped node.

A namespace specified in the pattern overrides any namespace defined in the operator definition of all services in the pattern.

A pattern is in error if it attempts to deploy services to a namespace scoped node where the collection of services in the pattern are NOT deployable to the same namespace. Clearly this can only happen when the "cluster_namespace" is NOT specified in the pattern definition but is contained within the operator and one of the services contains an embedded namespace definition.

User Experience

...

  • a semantic conflict if the deployer specifies a "cluster_namespace" and uses openhorizon.kubernetesNamespace in a constraint expression
  • deployment target selection (or not) in the absence of the "cluster_namespace" field, and a namespace definition embedded in the operator definition
  • deployment target selection (or not) in the presence of the "cluster_namespace" field, and a namespace definition embedded in the operator definition
  • correct deployment target selection as defined in the Deployment section above


hzn exchange service publish

If the service definition contains an embedded namespace definition, provide a warning to the user that due to the use that of an embedded namespace definition they are not following best practices and therefore the service might not be deployable. Use the hzn deploycheck command before this service is deployed to ensure that the policy will select nodes as expected.


hzn exchange pattern

External Components

<Describe any new or changed interactions with components that are not the agent or the management hub.>

...