Microservice Builder Components
Deployment
Type
ucf.k8s.app.deployment
Description:
Used for specifying the Kubernetes workload deployment type (e.g Deployment
/ StatefulSet
/ DaemonSet
etc.).
Should be the first component in a spec
section of the manifest.
Parameters
Field |
Type |
Description |
---|---|---|
apptype |
string (enum) (Mandatory)
Allowed values:
statefull (StatefulSet)stateless (Deployment)job (Job)cronjob (CronJob)daemonset (DaemonSet)replicaset (ReplicaSet)static-pod (Pod) |
Pod Deployment Type |
extraSpecs |
Object |
Used for setting extra fields for deployment that are not explicitly supported |
Examples
---
spec:
- name: deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
extraSpecs:
revisionHistoryLimit: 4
To combine multiple workload types in a microservice, create seperate spec
sections in separate YAML docs:
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
- name: backend-container
type: ucf.k8s.container
...
---
- name: frontend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
- name: frontend-container
type: ucf.k8s.container
...
Container
Type
ucf.k8s.container
Description:
Used for adding a container to the deployment workload.
Parameters
Field |
Type |
Description |
---|---|---|
image |
object (Mandatory) |
Container image details |
|
string |
Container image repository address |
|
string |
Container image tag |
|
string |
Path to container builder configuration file |
|
string(enum)
Allowed values:
Always Never IfNotPresent |
Container image pull policy |
workload |
string |
Name reference to a workload component ( |
command |
list of strings |
Array of command line strings to be executed |
args |
list of strings |
List of arguments to the entrypoint |
env |
list |
Array of environment variables to be set |
|
string |
Name of the environment variable |
|
string |
Value for the environment variable |
livenessProbe |
object |
Liveness probe for the container. Refer to Probe |
readinessProbe |
object |
Readiness probe for the container. Refer to Probe |
startupProbe |
object |
Startup probe for the container. Refer to Probe |
ports |
list |
List of container ports to be exposed |
|
object |
Details on container port to expose. Refer to ContainerPort |
resources |
object |
Container resource requirements. For more information, refer to Container Resource Management |
|
object |
Maximum amount of compute resources allowed, mentioned as key-value pairs. |
|
object |
Minimum amount of compute resources required, mentioned as key-value pairs. |
volumeMounts |
list |
List of volumes to mount in the container. |
|
object |
Details on the volume to mount. Refer to VolumeMount |
securityContext |
object |
Security configuration for the container. Refer to SecurityContext |
Examples
# ``name`` of the component is set as the container name
- name: server
type: ucf.k8s.container
parameters:
image:
repository: nvcr.io/nvidia/pytorch
tag: 22.04-py3
command: [sh, -c]
args: ["python -m http.server 8080"]
ports:
- containerPort: 8080
name: http
volumeMounts:
- name: localvol
mountPath: /localvol
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 512Mi
nvidia.com/gpu: 1
livenessProbe:
httpGet:
port: http
readinessProbe:
httpGet:
port: http
securityContext:
runAsNonRoot: true
Init Container
Type
ucf.k8s.initcontainer
Description:
Used for adding a init container to the deployment workload.
Parameters
Field |
Type |
Description |
---|---|---|
image |
string (Mandatory) |
Container image name |
imagePullPolicy |
string(enum)
Allowed values:
Always Never IfNotPresent |
Container image pull policy |
command |
list of strings |
Array of command line strings to be executed |
args |
list of strings |
List of arguments to the entrypoint |
env |
list |
Array of environment variables to be set |
|
string |
Name of the environment variable |
|
string |
Value for the environment variable |
resources |
object |
Container resource requirements. For more information, refer to Container Resource Management |
|
object |
Maximum amount of compute resources allowed, mentioned as key-value pairs. |
|
object |
Minimum amount of compute resources required, mentioned as key-value pairs. |
volumeMounts |
list |
List of volumes to mount in the container. |
|
object |
Details on the volume to mount. Refer to VolumeMount |
securityContext |
object |
Security configuration for the container. Refer to SecurityContext |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
# ``name`` of the component is set as the initcontainer name
- name: server
type: ucf.k8s.initcontainer
parameters:
image: nvcr.io/nvidia/pytorch:22.04-py3
command: [sh, -c]
args: ["python -m http.server 8080"]
volumeMounts:
- name: localvol
mountPath: /localvol
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 512Mi
nvidia.com/gpu: 1
securityContext:
runAsNonRoot: true
Volume
Type
ucf.k8s.volume
Description:
Used for adding a volume to the deployment workload.
Parameters
Refer to Volume
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
# ``name`` of the component is set as the volume name
# ``name`` will be required to mount the volume in a container
- name: configmap-volume
type: ucf.k8s.volume
parameters:
configMap:
name: my-app-config
- name: data
type: ucf.k8s.pvc
parameters:
annotations:
helm.sh/resource-policy: "keep"
spec:
storageClassName: mdx-local-path # omit this line to use default StorageClass provisioner
accessModes: [ReadWriteOnce]
resources:
requests:
storage: 50Mi
- name: data-volume
type: ucf.k8s.volume
parameters:
persistentVolumeClaim:
claimName: ${CHART_NAME}-data # substitue ${CHART_NAME} with manifest.yaml's chartName value
- name: my-container
type: ucf.k8s.container
parameters:
...
volumeMounts:
- name: configmap-volume
mountPath: /tmp/app-configs
- name: data-volume
mountPath: /data
Volume Claim Template
Type
ucf.k8s.volumeClaimTemplate
Description:
Used for adding a volume claim template for Stateful workload.
Parameters
Field |
Type |
Description |
---|---|---|
spec |
object (Mandatory) |
Persistent Volume Claim specification |
|
string |
Storage class for the PVC |
|
string |
Volume name for the PVC |
|
list of strings
Allowed Values:
ReadWriteOnce ReadOnlyMany ReadWriteMany ReadWriteOncePod |
Access mode of the storage requested. Refer to Access Modes |
|
object |
Storage resource requirements |
|
object |
Storage resource requests |
|
string |
Minimum storage requirement |
|
object |
Storage resource limits |
|
string |
Minimum storage requirement |
annotations |
object |
Annotations to add on the PVC resource as key-value pairs |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: statefull
statefulSetServiceName: myservice
# ``name`` of the component is set as the volume name
# ``name`` will be required to mount the volume in a container
- name: data-storage
type: ucf.k8s.volumeClaimTemplate
parameters:
annotations:
helm.sh/resource-policy: "keep"
spec:
accessModes: [ReadWriteOnce]
storageClassName: mdx-local-path # omit this line to use default StorageClass provisioner
resources:
requests:
storage: 1Gi
- name: my-container
type: ucf.k8s.container
parameters:
...
volumeMounts:
- name: data-storage
mountPath: /data
- name: myservice
type: ucf.k8s.service
parameters:
ports:
- port: 1000
name: http-api
Default Volume Mount
Type
ucf.appspec.defaultVolumeMount
Description:
Used for adding a volumeMount to all containers / initcontainers in the deployment workload
Parameters
Refer to VolumeMount
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
# Volume ``data-volume`` will be mounted at ``/data`` in all
# containers / init-containers in the deployment
# (my-container & my-init-container in this example)
- name: data-volume-mount
type: ucf.appspec.defaultVolumeMount
parameters:
name: data-volume
mountPath: /data
- name: data
type: ucf.k8s.pvc
parameters:
annotations:
helm.sh/resource-policy: "keep"
spec:
storageClassName: mdx-local-path
accessModes: [ReadWriteOnce]
resources:
requests:
storage: 50Mi
- name: data-volume
type: ucf.k8s.volume
parameters:
persistentVolumeClaim:
claimName: ${CHART_NAME}-data # substitue ${CHART_NAME} with manifest.yaml's chartName value
- name: my-container
type: ucf.k8s.container
parameters:
...
- name: my-init-container
type: ucf.k8s.initcontainer
parameters:
...
Persistent Volume Claim
Type
ucf.k8s.pvc
Description:
Used for adding a Persistent Volume Claim to the microservice
Parameters
Field |
Type |
Description |
---|---|---|
spec |
object (Mandatory) |
Persistent Volume Claim specification |
|
string |
Storage class for the PVC |
|
string |
Volume name for the PVC |
|
list of strings
Allowed Values:
ReadWriteOnce ReadOnlyMany ReadWriteMany ReadWriteOncePod |
Access mode of the storage requested. Refer to Access Modes |
|
object |
Storage resource requirements |
|
object |
Storage resource requests |
|
string |
Minimum storage requirement |
|
object |
Storage resource limits |
|
string |
Minimum storage requirement |
annotations |
object |
Annotations to add on the PVC resource as key-value pairs |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
# ``name`` of the component is set as PVC Name
# ``name`` will be required to add the PVC as volume to the pod
- name: data
type: ucf.k8s.pvc
parameters:
annotations:
helm.sh/resource-policy: "keep"
spec:
storageClassName: mdx-local-path # omit this line to use default StorageClass provisioner
accessModes: [ReadWriteOnce]
resources:
requests:
storage: 50Mi
- name: data-volume
type: ucf.k8s.volume
parameters:
persistentVolumeClaim:
claimName: ${CHART_NAME}-data # substitue ${CHART_NAME} with manifes.yaml's chartName value
- name: my-container
type: ucf.k8s.container
parameters:
...
volumeMounts:
- name: data-volume
mountPath: /data
Service
Type
ucf.k8s.service
Description:
Adds a service resource to the microservice and associate it with the deployment workload. Creates a Kubernetes service resource.
Parameters
Field |
Type |
Description |
---|---|---|
ports |
list (Mandatory) |
List of ports to expose in the service |
|
integer (Mandatory) |
Port of the service to expose |
|
string (Mandatory) |
Name for service port (this is used as endpoint name) |
|
string or integer |
Number or name for target container port |
|
integer |
Port number of the node to expose this port |
|
integer |
Range of ports. 0-<range - 1> will be added added to port/targetPort/nodePort |
type |
string (enum)
Allowed Values:
ClusterIP NodePort LoadBalancer ExternalName |
Service type |
externalTrafficPolicy |
string (enum)
Allowed values:
Cluster Local |
Route external traffic to node-local or cluster-wide endpoints |
clusterIP |
string |
Cluster IP address for the service |
nameOverride |
boolean |
Enable to set service name as set as <appname>-<service-name> |
fullNameOverride |
boolean |
Enable to set service name as set as <service-name> |
annotations |
object |
Annotations to set on the service as key(string)-value(string) pairs |
labels |
object |
Labels to set on the service as key(string)-value(string) pairs |
extraSpecs |
object |
Used for setting extra fields for the service that are not explicitly supported |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
- name: "backend-container"
type: ucf.k8s.container
parameters:
image:
repository: nvcr.io/nvidia/pytorch
tag: 22.04-py3
command: [sh, -c]
args: ["python -m http.server 8080"]
ports:
- containerPort: 8080
name: http
- name: backend-service
type: ucf.k8s.service
parameters:
annotations:
some-annotation: annotation-value
labels:
some-label: label-value
ports:
- port: http # Must match a container port in the workload
name: http-api
type: NodePort
Image Pull Secret
Type
ucf.k8s.imagepullsecret
Description:
Used for adding a imagepullsecret for pulling container images used in the Pod. Ideally this should not be a part of the microservice since where / who deploys the microservice may not be known during microservice development. Instead, it can be set from the application.
Parameters
Field |
Type |
Description |
---|---|---|
name |
string (Mandatory) |
Image pull secret name |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
- name: ngc-image-pull-secret
type: ucf.k8s.imagepullsecret
parameters:
name: ngc-docker-reg-secret
ConfigMap
Type
ucf.k8s.configmap
Description:
Used for adding a ConfigMap to the microservice
Parameters
Field |
Type |
Description |
---|---|---|
name |
string (Mandatory) |
Name for the configmap resource |
data |
object (Mandatory) |
Data to add in the configmap as key(string)-value(string) pairs |
annotations |
object (Mandatory) |
Annotations to add on the configmap resource as key(string)-value(string) pairs |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
# ``config.json`` will be mounted at ``/tmp/app-configs/config.json`` in the container
- name: my-app-config
type: ucf.k8s.configmap
parameters:
name: my-app-config
data:
config.json: |
{
"log-level": "DEBUG"
}
- name: configmap-volume
type: ucf.k8s.volume
parameters:
configMap:
name: my-app-config
- name: my-container
type: ucf.k8s.container
parameters:
...
volumeMounts:
- name: configmap-volume
mountPath: /tmp/app-configs
Pod Annotations
Type
ucf.k8s.podAnnotations
Description:
Used for adding annotations to pods belonging to a deployment workload
Parameters
Field |
Type |
Description |
---|---|---|
annotations |
object (Mandatory) |
Annotations to add on the pods as key(string)-value(string) pairs |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
- name: pod-annotations
type: ucf.k8s.podAnnotations
parameters:
kubernetes.io/description: Description of the pod behavior
Pod Labels
Type
ucf.k8s.podLabels
Description:
Used for adding labels to pods belonging to a deployment workload
Parameters
Field |
Type |
Description |
---|---|---|
labels |
object (Mandatory) |
Labels to add on the pods as key(string)-value(string) pairs |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
- name: pod-labels
type: ucf.k8s.podLabels
parameters:
pod-type: "backend-pod"
Pod Security Context
Type
ucf.k8s.podSecurityContext
Description:
Used for setting the security configuration at the pod level
Parameters
Refer to Pod Security Context
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
- name: podSecurityContext
type: ucf.k8s.podSecurityContext
parameters:
runAsGroup: 1000
runAsUser: 1000
Container Restart Policy
Type
ucf.k8s.restartPolicy
Description:
Used for setting the container restart policy for all containers in the pod
Parameters
Field |
Type |
Description |
---|---|---|
policy |
string(enum) (Mandatory)
Allowed Values:
Always Never OnFailure |
Container Restart Policy. Only certain values are allowed based on the workload type. |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
- name: restartPolicy
type: ucf.k8s.restartPolicy
parameters:
policy: Always
Pod DNS Policy
Type
ucf.k8s.dnsPolicy
Description:
Used for setting the DNS policy for the pod. Refer to Pod’s DNS Policy.
Parameters
Field |
Type |
Description |
---|---|---|
policy |
string(enum) (Mandatory)
Allowed Values:
Default ClusterFirst ClusterFirstWithHostNet None |
Pod DNS Policy |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
- name: dnsPolicy
type: ucf.k8s.dnsPolicy
parameters:
policy: ClusterFirst
PVC Retention Policy
Type
ucf.k8s.persistentVolumeClaimRetentionPolicy
Description:
Used for setting the retention policy for PVCs created using volumeClaimTemplates of a statefulset. Needs Kubernetes 1.27+
Parameters
Field |
Type |
Description |
---|---|---|
whenDeleted |
string(enum)
Allowed Values:
Retain (Keep the PVC)Delete (Delete the PVC) |
PVC retention policy when StatefulSet resource is deleted |
whenScaled |
string(enum)
Allowed Values:
Retain (Keep the PVC)Delete (Delete the PVC) |
PVC retention policy when StatefulSet resource is scaled down |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: statefull
- name: pvc-retention-policy
type: ucf.k8s.persistentVolumeClaimRetentionPolicy
parameters:
whenDeleted: Delete
whenScaled: Retain
Pod Management Policy
Type
ucf.k8s.persistentVolumeClaimRetentionPolicy
Description:
Used for setting the pod replica ordering policy for a StatefulSet. Refer to Pod Management Policies
Parameters
Field |
Type |
Description |
---|---|---|
policy |
string(enum)
Allowed Values:
OrderedReady (Launch Pod replicas Sequentially)Parallel (Launch Pod replicas Parallelly) |
Pod replica management policy |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: statefull
- name: pvc-management-policy
type: ucf.k8s.podManagementPolicy
parameters:
policy: Parallel
Job Options
Type
ucf.k8s.app.job.jobOptions
Description:
Used for setting various parameters for a Job workload. Refer to Job Spec
Parameters
Field |
Type |
Description |
---|---|---|
backoffLimit |
integer |
Number of retries before marking job as failed |
completionMode |
string(enum)
Allowed Values:
NonIndexed Indexed |
Method to track completion of pods |
completions |
integer |
Number of successfully finished pods this job should be run with |
manualSelector |
boolean |
Enable user specified selectors |
parallelism |
integer |
Maximum number of pods that run at any time |
selector |
object |
Labels to query. Should match job count |
suspend |
boolean |
Wether the job controller should create pods |
ttlSecondsAfterFinished |
integer |
Time after job completion after which pods will be deleted |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: job
- name: job-options
type: ucf.k8s.app.job.jobOptions
parameters:
completionMode: Indexed
parallelism: 3
Job Deadline
Type
ucf.k8s.app.job.activeDeadlineSeconds
Description:
Used for setting maximum duration that a pod should execute for a Job workload.
Parameters
Field |
Type |
Description |
---|---|---|
seconds |
integer |
Deadline for the job in seconds |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: job
- name: job-deadline
type: ucf.k8s.app.job.activeDeadlineSeconds
parameters:
seconds: 100
CronJob Schedule
Type
ucf.k8s.app.cronjob.schedule
Description:
Used for setting cron schedule for pods of CronJob workload.
Parameters
Field |
Type |
Description |
---|---|---|
schedule |
string |
Cronjob schedule string |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: cronjob
# Execute daily at 1:00 am
- name: cronjob-schedule
type: ucf.k8s.app.cronjob.schedule
parameters:
schedule: "1 0 * * *"
Restart Pod On Config Changes
Type
ucf.appspec.restartPodOnConfigChanges
Description:
Used for restarting pods when any configmaps associated with the microservice are updated. Only supported for Deployment, StatefulSet, and DaemonSet workload types. Refer to Restarting Pods on Config Changes.
Parameters
Field |
Type |
Description |
---|---|---|
addAll |
boolean |
Add dependency on all configmaps found in the microservice |
addDefault |
boolean |
Add dependency on default configmaps added to the microservice viz. - scripts, configs, workload-configs, external-files |
configMaps |
list of strings |
List of names of configmaps to add dependency on |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
- name: cm-dependencies
type: ucf.appspec.restartPodOnConfigChanges
parameters:
# Add dependency on all configmaps detected in the microservice
addAll: true
# Add dependency on default configmaps for scripts, configs and workload configs
# addDefault: true
# Add dependency on individual configmaps using the configmap names
# configMaps:
# - http-server-configs-cm
Ingress
Type
ucf.appspec.ingress
Description:
Add an Ingress resource for the microservice.
Parameters
Field |
Type |
Description |
---|---|---|
enabled |
boolean (Mandatory) |
Ingress controller state (enabled/disabled) |
className |
string |
Ingress controller class name |
annotations |
object (Mandatory) |
Annotations to set on the ingress resource as key(string)-value(string) pairs |
rules |
list (Mandatory) |
List of Ingress Rules. Refer to IngressRule |
Examples
---
spec:
- name: backend
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
- name: backend-container
type: ucf.k8s.container
parameters:
...
ports:
- containerPort: 5000
name: http
- name: backend-svc
type: ucf.k8s.service
parameters:
ports:
- port: 5000
targetPort: http
protocol: TCP
name: http
type: ClusterIP
# Route HTTP calls with /api prefix to the backend service
- name: ingress
type: ucf.appspec.ingress
parameters:
enabled: true
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "0"
rules:
- http:
paths:
- path: /api(/|$)(.*)
pathType: Prefix
backend:
service:
name: backend-backend-svc
port:
number: 5000
Application Workload
Type
ucf.appspec.app.workload
Description:
Used to associate an application workload with a container. Fields added to a workload component will be set on the container that is associated with the workload.
Parameters
Field |
Type |
Description |
---|---|---|
wl_units |
integer |
Workload units. This translates to replica count in Deployments and StatefulSets |
wl_resources: Workload resource requirements |
||
|
object |
Workload minimum resource requirements mentioned as key-value pairs |
|
object |
Workload maximum limits for resources mentioned as key-value pairs |
wl_data |
string |
Workload data. This is a free-form text section that will be mounted as /opt/workload-config/<workload-name> available to containers at run-time |
wl_env |
list |
Workload additional environment variables |
|
string |
Name of the environment variable |
|
string |
Value for the environment variable |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
- name: backend-workload
type: ucf.appspec.app.workload
parameters:
wl_units: 1
wl_resources:
limits:
nvidia.com/gpu: 1
wl_data: |
inputFile: /root/video.mp4
wl_env:
- name: WORKLOAD_NAME
env: backend-workload
- name: backend-container
type: ucf.k8s.container
parameters:
...
workload: backend-workload
UCX Configuration
Type
ucf.k8s.ucx-config
Description:
Add configuration for UCX components used in the microservice. UCS Tools will add a container
to replace the $egress
placeholders with the secondary network interface IP address for UCX interface.
Refer to UCX support in UCS Tools.
Parameters
Field |
Type |
Description |
---|---|---|
name |
string |
Name to create the configmap with |
data |
string |
Configuration data as a string |
annotations |
object |
Annotations for the configmap as key(string)-value(string) pairs |
updaterImage |
string |
Container image to update the config file with update placeholder params |
Examples
Refer to UCX support in UCS Tools
Custom Metadata
Type
ucf.metadata.custom
Description:
Used for adding user specified custom metadata for the microservice to it’s UCS MS Specification.
Parameters
No schema is enforced. User can add any metadata as required in YAML format.
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
# Data in this component will be added to MS spec under ``metadata`` field.
- name: custom-data
type: ucf.metadata.custom
parameters:
param1: value1
param2: value2
Pod Scheduling Specification
Type
ucf.k8s.scheduling
Description:
Used for specifying the pod scheduling control parameters
Parameters
Field |
Type |
Description |
---|---|---|
nodeSelector |
object |
k8s node selector definition (Refer to scheduling). |
tolerations |
array |
k8s toleration list (Refer to scheduling). |
affinity |
object |
k8s affinity definition (Refer to scheduling). |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
- name: my-service-scheduling
type: ucf.k8s.scheduling
parameters:
nodeSelector:
kubernetes.io/os: linux
tolerations:
- key: key1
operator: Exists
effect: NoSchedule
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: some-key-1
operator: In
values: [some-value-1, some-value-2]
- matchFields:
- key: status.phase
operator: In
values:
- Running
Service Account Specification
Type
ucf.k8s.serviceAccount
Description:
Used for specifying serviceAccount for a Pod
Parameters
Field |
Type |
Description |
---|---|---|
name |
string |
name of the service account |
clusterRole |
string |
the cluster role which the service account binds |
create |
boolean |
option to create the service account |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
- name: my-service-sa
type: ucf.k8s.serviceAccount
parameters:
name: my-sa
clusterRole: edit
create: true
Pod Monitor Custom Resource Definition
Type
ucf.crd.podMonitor
Description:
To create a pod monitor
Parameters
Field |
Type |
Description |
---|---|---|
portName |
string |
Name of the container port for the metrics endpoint |
path |
string |
HTTP path where the metrics will be availabl |
Examples
---
spec:
- name: backend-deployment
type: ucf.k8s.app.deployment
parameters:
apptype: stateless
- name: "abcd-container"
type: ucf.k8s.container
parameters:
image:
repository: ubuntu
tag: "latest"
ports:
- containerPort: 1000 # <PORT>
name: http
- containerPort: 10002 # <PORT>
name: ms-metrics
- name: ms-metrics
type: ucf.crd.podMonitor
parameters:
portName: ms-metrics
path: /metrics