1430 lines
69 KiB
YAML
1430 lines
69 KiB
YAML
apiVersion: v1
|
|
kind: ServiceAccount
|
|
metadata:
|
|
name: kubeslice-install-crds
|
|
namespace: kubeslice-system
|
|
labels:
|
|
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
|
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
|
annotations:
|
|
"helm.sh/hook": pre-install,pre-upgrade,pre-rollback
|
|
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
|
"helm.sh/hook-weight": "1"
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRoleBinding
|
|
metadata:
|
|
name: kubeslice-install-crds
|
|
annotations:
|
|
"helm.sh/hook": pre-install,pre-upgrade,pre-rollback
|
|
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
|
"helm.sh/hook-weight": "1"
|
|
labels:
|
|
app.kubernetes.io/name: kubeslice
|
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
|
roleRef:
|
|
apiGroup: rbac.authorization.k8s.io
|
|
kind: ClusterRole
|
|
name: kubeslice-install-crds
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: kubeslice-install-crds
|
|
namespace: kubeslice-system
|
|
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRole
|
|
metadata:
|
|
name: kubeslice-install-crds
|
|
annotations:
|
|
"helm.sh/hook": pre-install,pre-upgrade,pre-rollback
|
|
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
|
"helm.sh/hook-weight": "1"
|
|
labels:
|
|
app.kubernetes.io/name: kubeslice
|
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
|
rules:
|
|
- apiGroups:
|
|
- "apiextensions.k8s.io"
|
|
resources:
|
|
- customresourcedefinitions
|
|
verbs:
|
|
- get
|
|
- list
|
|
- patch
|
|
- update
|
|
- create
|
|
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: kubeslice-install-crds
|
|
annotations:
|
|
"helm.sh/hook": pre-install,pre-upgrade,pre-rollback
|
|
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
|
"helm.sh/hook-weight": "1"
|
|
labels:
|
|
app.kubernetes.io/name: kubeslice
|
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
|
data:
|
|
crds.yaml: |
|
|
---
|
|
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
annotations:
|
|
controller-gen.kubebuilder.io/version: v0.7.0
|
|
creationTimestamp: null
|
|
name: sliceresourcequotas.networking.kubeslice.io
|
|
spec:
|
|
group: networking.kubeslice.io
|
|
names:
|
|
kind: SliceResourceQuota
|
|
listKind: SliceResourceQuotaList
|
|
plural: sliceresourcequotas
|
|
singular: sliceresourcequota
|
|
scope: Namespaced
|
|
versions:
|
|
- name: v1alpha1
|
|
schema:
|
|
openAPIV3Schema:
|
|
description: SliceResourceQuota is the Schema for the sliceresourcequota API
|
|
properties:
|
|
apiVersion:
|
|
description: 'APIVersion defines the versioned schema of this representation
|
|
of an object. Servers should convert recognized schemas to the latest
|
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
type: string
|
|
kind:
|
|
description: 'Kind is a string value representing the REST resource this
|
|
object represents. Servers may infer this from the endpoint the client
|
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
spec:
|
|
type: object
|
|
status:
|
|
properties:
|
|
clusterName:
|
|
description: ClusterName defines the name of the cluster for the ResourceQuota
|
|
type: string
|
|
configUpdatedOn:
|
|
format: int64
|
|
type: integer
|
|
resourceQuotaProfile:
|
|
description: ResourceQuotaProfile defines the resource quota profile
|
|
for the slice
|
|
properties:
|
|
clusterQuota:
|
|
description: ClusterQuota defines the configuration for cluster
|
|
quota of a resource quota
|
|
properties:
|
|
namespaceQuota:
|
|
description: NamespaceQuota defines the configuration for
|
|
namespace quota of a ClusterQuota
|
|
items:
|
|
description: NamespaceQuota defines the configuration for
|
|
namespace quota of a ClusterQuota
|
|
properties:
|
|
enforceQuota:
|
|
default: false
|
|
description: EnforceQuota defines the enforceQuota status
|
|
flag for NamespaceQuota
|
|
type: boolean
|
|
namespace:
|
|
description: Namespace defines the namespace of the
|
|
NamespaceQuota
|
|
type: string
|
|
resources:
|
|
description: Resources defines the configuration for
|
|
resources for NamespaceQuota
|
|
properties:
|
|
defaultLimitPerContainer:
|
|
description: DefaultResourcePerContainerList is
|
|
a set of (resource name, quantity) pairs.
|
|
properties:
|
|
cpu:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: CPU in cores. (500m = .5 cores)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
ephemeralStorage:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: EphemeralStorage Local ephemeral
|
|
storage, in bytes. (500Gi = 500GiB = 500 *
|
|
1024 * 1024 * 1024) The resource name for
|
|
EphemeralStorage is alpha, and it can change
|
|
across releases.
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
memory:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: Memory in bytes. (500Gi = 500GiB
|
|
= 500 * 1024 * 1024 * 1024)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
type: object
|
|
defaultRequestPerContainer:
|
|
description: DefaultRequestPerContainer is a set
|
|
of (resource name, quantity) pairs.
|
|
properties:
|
|
cpu:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: CPU in cores. (500m = .5 cores)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
ephemeralStorage:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: EphemeralStorage LoNamespaceResourceQuotaStatuscal
|
|
ephemeral storage, in bytes. (500Gi = 500GiB
|
|
= 500 * 1024 * 1024 * 1024) The resource name
|
|
for EphemeralStorage is alpha, and it can
|
|
change across releases.
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
memory:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: Memory in bytes. (500Gi = 500GiB
|
|
= 500 * 1024 * 1024 * 1024)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
type: object
|
|
limit:
|
|
properties:
|
|
cpu:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: CPU in cores. (500m = .5 cores)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
ephemeralStorage:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: EphemeralStorage Local ephemeral
|
|
storage, in bytes. (500Gi = 500GiB = 500 *
|
|
1024 * 1024 * 1024) The resource name for
|
|
EphemeralStorage is alpha, and it can change
|
|
across releases.
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
memory:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: Memory in bytes. (500Gi = 500GiB
|
|
= 500 * 1024 * 1024 * 1024)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
podCount:
|
|
description: PodCount in number.
|
|
format: int64
|
|
type: integer
|
|
type: object
|
|
request:
|
|
description: RequestResourceList is a set of (resource
|
|
name, quantity) pairs.
|
|
properties:
|
|
cpu:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: CPU in cores. (500m = .5 cores)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
ephemeralStorage:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: EphemeralStorage Local ephemeral
|
|
storage, in bytes. (500Gi = 500GiB = 500 *
|
|
1024 * 1024 * 1024) The resource name for
|
|
EphemeralStorage is alpha, and it can change
|
|
across releases.
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
memory:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: Memory in bytes. (500Gi = 500GiB
|
|
= 500 * 1024 * 1024 * 1024)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
type: object
|
|
type: object
|
|
type: object
|
|
type: array
|
|
resources:
|
|
description: Resources defines the configuration for resources
|
|
for ClusterQuota
|
|
properties:
|
|
limit:
|
|
properties:
|
|
cpu:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: CPU in cores. (500m = .5 cores)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
ephemeralStorage:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: EphemeralStorage Local ephemeral storage,
|
|
in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 *
|
|
1024) The resource name for EphemeralStorage is
|
|
alpha, and it can change across releases.
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
memory:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: Memory in bytes. (500Gi = 500GiB = 500
|
|
* 1024 * 1024 * 1024)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
podCount:
|
|
description: PodCount in number.
|
|
format: int64
|
|
type: integer
|
|
type: object
|
|
request:
|
|
description: RequestResourceList is a set of (resource
|
|
name, quantity) pairs.
|
|
properties:
|
|
cpu:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: CPU in cores. (500m = .5 cores)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
ephemeralStorage:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: EphemeralStorage Local ephemeral storage,
|
|
in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 *
|
|
1024) The resource name for EphemeralStorage is
|
|
alpha, and it can change across releases.
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
memory:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: Memory in bytes. (500Gi = 500GiB = 500
|
|
* 1024 * 1024 * 1024)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
type: object
|
|
type: object
|
|
type: object
|
|
sliceQuota:
|
|
description: SliceQuota defines the configuration for slice quota
|
|
of a resource quota
|
|
properties:
|
|
resources:
|
|
description: Resources defines the configuration for resources
|
|
for SliceQuota
|
|
properties:
|
|
defaultRequestPerContainer:
|
|
description: DefaultRequestPerContainer is a set of (resource
|
|
name, quantity) pairs.
|
|
properties:
|
|
cpu:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: CPU in cores. (500m = .5 cores)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
ephemeralStorage:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: EphemeralStorage LoNamespaceResourceQuotaStatuscal
|
|
ephemeral storage, in bytes. (500Gi = 500GiB = 500
|
|
* 1024 * 1024 * 1024) The resource name for EphemeralStorage
|
|
is alpha, and it can change across releases.
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
memory:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: Memory in bytes. (500Gi = 500GiB = 500
|
|
* 1024 * 1024 * 1024)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
type: object
|
|
limit:
|
|
properties:
|
|
cpu:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: CPU in cores. (500m = .5 cores)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
ephemeralStorage:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: EphemeralStorage Local ephemeral storage,
|
|
in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 *
|
|
1024) The resource name for EphemeralStorage is
|
|
alpha, and it can change across releases.
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
memory:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: Memory in bytes. (500Gi = 500GiB = 500
|
|
* 1024 * 1024 * 1024)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
podCount:
|
|
description: PodCount in number.
|
|
format: int64
|
|
type: integer
|
|
type: object
|
|
request:
|
|
description: RequestResourceList is a set of (resource
|
|
name, quantity) pairs.
|
|
properties:
|
|
cpu:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: CPU in cores. (500m = .5 cores)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
ephemeralStorage:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: EphemeralStorage Local ephemeral storage,
|
|
in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 *
|
|
1024) The resource name for EphemeralStorage is
|
|
alpha, and it can change across releases.
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
memory:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: Memory in bytes. (500Gi = 500GiB = 500
|
|
* 1024 * 1024 * 1024)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
type: object
|
|
type: object
|
|
type: object
|
|
type: object
|
|
sliceName:
|
|
description: SliceName defines the name of the slice for the ResourceQuota
|
|
type: string
|
|
sliceResourceQuotaStatus:
|
|
description: WorkerSliceResourceQuotaStatus defines the observed state
|
|
of WorkerSliceResourceQuota
|
|
properties:
|
|
clusterResourceQuotaStatus:
|
|
properties:
|
|
namespaceResourceQuotaStatus:
|
|
items:
|
|
properties:
|
|
namespace:
|
|
type: string
|
|
requestResourceUsage:
|
|
description: RequestResourceList is a set of (resource
|
|
name, quantity) pairs.
|
|
properties:
|
|
cpu:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: CPU in cores. (500m = .5 cores)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
ephemeralStorage:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: EphemeralStorage Local ephemeral storage,
|
|
in bytes. (500Gi = 500GiB = 500 * 1024 * 1024
|
|
* 1024) The resource name for EphemeralStorage
|
|
is alpha, and it can change across releases.
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
memory:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: Memory in bytes. (500Gi = 500GiB =
|
|
500 * 1024 * 1024 * 1024)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
type: object
|
|
resourceUsage:
|
|
properties:
|
|
cpu:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: CPU in cores. (500m = .5 cores)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
ephemeralStorage:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: EphemeralStorage Local ephemeral storage,
|
|
in bytes. (500Gi = 500GiB = 500 * 1024 * 1024
|
|
* 1024) The resource name for EphemeralStorage
|
|
is alpha, and it can change across releases.
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
memory:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: Memory in bytes. (500Gi = 500GiB =
|
|
500 * 1024 * 1024 * 1024)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
podCount:
|
|
description: PodCount in number.
|
|
format: int64
|
|
type: integer
|
|
type: object
|
|
type: object
|
|
type: array
|
|
requestResourceUsage:
|
|
description: RequestResourceList is a set of (resource name,
|
|
quantity) pairs.
|
|
properties:
|
|
cpu:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: CPU in cores. (500m = .5 cores)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
ephemeralStorage:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: EphemeralStorage Local ephemeral storage,
|
|
in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
|
|
The resource name for EphemeralStorage is alpha, and
|
|
it can change across releases.
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
memory:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: Memory in bytes. (500Gi = 500GiB = 500 *
|
|
1024 * 1024 * 1024)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
type: object
|
|
resourceUsage:
|
|
properties:
|
|
cpu:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: CPU in cores. (500m = .5 cores)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
ephemeralStorage:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: EphemeralStorage Local ephemeral storage,
|
|
in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
|
|
The resource name for EphemeralStorage is alpha, and
|
|
it can change across releases.
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
memory:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: Memory in bytes. (500Gi = 500GiB = 500 *
|
|
1024 * 1024 * 1024)
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
podCount:
|
|
description: PodCount in number.
|
|
format: int64
|
|
type: integer
|
|
type: object
|
|
type: object
|
|
type: object
|
|
type: object
|
|
type: object
|
|
served: true
|
|
storage: true
|
|
subresources:
|
|
status: {}
|
|
status:
|
|
acceptedNames:
|
|
kind: ""
|
|
plural: ""
|
|
conditions: []
|
|
storedVersions: []
|
|
|
|
---
|
|
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
annotations:
|
|
controller-gen.kubebuilder.io/version: v0.7.0
|
|
creationTimestamp: null
|
|
name: serviceexports.networking.kubeslice.io
|
|
spec:
|
|
group: networking.kubeslice.io
|
|
names:
|
|
kind: ServiceExport
|
|
listKind: ServiceExportList
|
|
plural: serviceexports
|
|
shortNames:
|
|
- svcex
|
|
singular: serviceexport
|
|
scope: Namespaced
|
|
versions:
|
|
- additionalPrinterColumns:
|
|
- jsonPath: .spec.slice
|
|
name: Slice
|
|
type: string
|
|
- jsonPath: .spec.ingressEnabled
|
|
name: Ingress
|
|
type: boolean
|
|
- jsonPath: .status.exposedPorts
|
|
name: Port(s)
|
|
type: string
|
|
- jsonPath: .status.availableEndpoints
|
|
name: Endpoints
|
|
type: integer
|
|
- jsonPath: .status.exportStatus
|
|
name: Status
|
|
type: string
|
|
- jsonPath: .spec.aliases
|
|
name: Alias
|
|
type: string
|
|
name: v1beta1
|
|
schema:
|
|
openAPIV3Schema:
|
|
description: ServiceExport is the Schema for the serviceexports API
|
|
properties:
|
|
apiVersion:
|
|
description: 'APIVersion defines the versioned schema of this representation
|
|
of an object. Servers should convert recognized schemas to the latest
|
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
type: string
|
|
kind:
|
|
description: 'Kind is a string value representing the REST resource this
|
|
object represents. Servers may infer this from the endpoint the client
|
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
spec:
|
|
description: ServiceExportSpec defines the desired state of ServiceExport
|
|
properties:
|
|
aliases:
|
|
description: Alias names for the exported service. The service could
|
|
be addressed by the alias names in addition to the slice.local name.
|
|
items:
|
|
type: string
|
|
type: array
|
|
ingressEnabled:
|
|
description: IngressEnabled denotes whether the traffic should be
|
|
proxied through an ingress gateway
|
|
type: boolean
|
|
ports:
|
|
description: Ports which should be exposed through the service
|
|
items:
|
|
description: ServicePort is the port exposed by ServicePod
|
|
properties:
|
|
containerPort:
|
|
description: Port number exposed from the container
|
|
format: int32
|
|
type: integer
|
|
name:
|
|
description: Name of the port
|
|
type: string
|
|
protocol:
|
|
default: TCP
|
|
description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults
|
|
to "TCP".
|
|
type: string
|
|
required:
|
|
- containerPort
|
|
type: object
|
|
type: array
|
|
selector:
|
|
description: Selector is a label query over pods that should be exposed
|
|
as a service
|
|
properties:
|
|
matchExpressions:
|
|
description: matchExpressions is a list of label selector requirements.
|
|
The requirements are ANDed.
|
|
items:
|
|
description: A label selector requirement is a selector that
|
|
contains values, a key, and an operator that relates the key
|
|
and values.
|
|
properties:
|
|
key:
|
|
description: key is the label key that the selector applies
|
|
to.
|
|
type: string
|
|
operator:
|
|
description: operator represents a key's relationship to
|
|
a set of values. Valid operators are In, NotIn, Exists
|
|
and DoesNotExist.
|
|
type: string
|
|
values:
|
|
description: values is an array of string values. If the
|
|
operator is In or NotIn, the values array must be non-empty.
|
|
If the operator is Exists or DoesNotExist, the values
|
|
array must be empty. This array is replaced during a strategic
|
|
merge patch.
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- key
|
|
- operator
|
|
type: object
|
|
type: array
|
|
matchLabels:
|
|
additionalProperties:
|
|
type: string
|
|
description: matchLabels is a map of {key,value} pairs. A single
|
|
{key,value} in the matchLabels map is equivalent to an element
|
|
of matchExpressions, whose key field is "key", the operator
|
|
is "In", and the values array contains only "value". The requirements
|
|
are ANDed.
|
|
type: object
|
|
type: object
|
|
slice:
|
|
description: Slice denotes the slice which the app is part of
|
|
type: string
|
|
required:
|
|
- ports
|
|
- selector
|
|
- slice
|
|
type: object
|
|
status:
|
|
description: ServiceExportStatus defines the observed state of ServiceExport
|
|
properties:
|
|
aliases:
|
|
description: Alias names for the exported service. The service could
|
|
be addressed by the alias names in addition to the slice.local name.
|
|
items:
|
|
type: string
|
|
type: array
|
|
availableEndpoints:
|
|
description: AvailableEndpoints shows the number of available endpoints
|
|
type: integer
|
|
dnsName:
|
|
description: DNSName is the FQDN to reach the service
|
|
type: string
|
|
exportStatus:
|
|
description: ExportStatus denotes the export status of the service
|
|
type: string
|
|
exposedPorts:
|
|
description: ExposedPorts shows a one line representation of ports
|
|
and protocols exposed only used to show as a printercolumn
|
|
type: string
|
|
ingressGwEnabled:
|
|
description: IngressGwEnabled denotes ingress gw is enabled for the
|
|
serviceexport
|
|
type: boolean
|
|
ingressGwPod:
|
|
description: IngressGwPod contains ingress gateway pod info
|
|
properties:
|
|
name:
|
|
description: Name of the pod
|
|
type: string
|
|
nsmIp:
|
|
description: NsmIP of the pod which is reachable within slice
|
|
type: string
|
|
required:
|
|
- name
|
|
type: object
|
|
lastSync:
|
|
description: Last sync time with backend
|
|
format: int64
|
|
type: integer
|
|
pods:
|
|
description: Pods denotes the service endpoint pods
|
|
items:
|
|
description: ServicePod contains pod information which offers a
|
|
service
|
|
properties:
|
|
dnsName:
|
|
description: DNSName is the dns A record name for the pod
|
|
type: string
|
|
name:
|
|
description: Name of the pod
|
|
type: string
|
|
nsmIp:
|
|
description: NsmIP of the pod which is reachable within slice
|
|
type: string
|
|
podIp:
|
|
description: PodIp of the pod which is reachable within cluster
|
|
type: string
|
|
required:
|
|
- dnsName
|
|
- name
|
|
- podIp
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
served: true
|
|
storage: true
|
|
subresources:
|
|
status: {}
|
|
status:
|
|
acceptedNames:
|
|
kind: ""
|
|
plural: ""
|
|
conditions: []
|
|
storedVersions: []
|
|
|
|
---
|
|
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
annotations:
|
|
controller-gen.kubebuilder.io/version: v0.7.0
|
|
creationTimestamp: null
|
|
name: serviceimports.networking.kubeslice.io
|
|
spec:
|
|
group: networking.kubeslice.io
|
|
names:
|
|
kind: ServiceImport
|
|
listKind: ServiceImportList
|
|
plural: serviceimports
|
|
shortNames:
|
|
- svcim
|
|
singular: serviceimport
|
|
scope: Namespaced
|
|
versions:
|
|
- additionalPrinterColumns:
|
|
- jsonPath: .spec.slice
|
|
name: Slice
|
|
type: string
|
|
- jsonPath: .status.exposedPorts
|
|
name: Port(s)
|
|
type: string
|
|
- jsonPath: .status.availableEndpoints
|
|
name: Endpoints
|
|
type: integer
|
|
- jsonPath: .status.importStatus
|
|
name: Status
|
|
type: string
|
|
- jsonPath: .spec.aliases
|
|
name: Alias
|
|
type: string
|
|
name: v1beta1
|
|
schema:
|
|
openAPIV3Schema:
|
|
description: ServiceImport is the Schema for the serviceimports API
|
|
properties:
|
|
apiVersion:
|
|
description: 'APIVersion defines the versioned schema of this representation
|
|
of an object. Servers should convert recognized schemas to the latest
|
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
type: string
|
|
kind:
|
|
description: 'Kind is a string value representing the REST resource this
|
|
object represents. Servers may infer this from the endpoint the client
|
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
spec:
|
|
description: ServiceImportSpec defines the desired state of ServiceImport
|
|
properties:
|
|
aliases:
|
|
description: Alias names for the exported service. The service could
|
|
be addressed by the alias names in addition to the slice.local name.
|
|
items:
|
|
type: string
|
|
type: array
|
|
dnsName:
|
|
description: DNSName shows the FQDN to reach the service
|
|
type: string
|
|
ports:
|
|
description: Ports which should be exposed through the service
|
|
items:
|
|
description: ServicePort is the port exposed by ServicePod
|
|
properties:
|
|
containerPort:
|
|
description: Port number exposed from the container
|
|
format: int32
|
|
type: integer
|
|
name:
|
|
description: Name of the port
|
|
type: string
|
|
protocol:
|
|
default: TCP
|
|
description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults
|
|
to "TCP".
|
|
type: string
|
|
required:
|
|
- containerPort
|
|
type: object
|
|
type: array
|
|
slice:
|
|
description: Slice denotes the slice which the app is part of
|
|
type: string
|
|
required:
|
|
- dnsName
|
|
- ports
|
|
- slice
|
|
type: object
|
|
status:
|
|
description: ServiceImportStatus defines the observed state of ServiceImport
|
|
properties:
|
|
availableEndpoints:
|
|
description: AvailableEndpoints shows the number of available endpoints
|
|
type: integer
|
|
endpoints:
|
|
description: Endpoints which provide the service
|
|
items:
|
|
description: ServiceEndpoint contains details of a single endpoint
|
|
which offers a particular service
|
|
properties:
|
|
clusterId:
|
|
description: ClusterID which the endpoint belongs to
|
|
type: string
|
|
dnsName:
|
|
description: DNSName
|
|
type: string
|
|
ip:
|
|
description: IP of the pod which is reachable within slice
|
|
type: string
|
|
name:
|
|
description: Name of the endpoint
|
|
type: string
|
|
port:
|
|
description: Port to reach the endpoint
|
|
format: int32
|
|
type: integer
|
|
required:
|
|
- clusterId
|
|
- dnsName
|
|
- ip
|
|
- port
|
|
type: object
|
|
type: array
|
|
exposedPorts:
|
|
description: ExposedPorts shows a one line representation of ports
|
|
and protocols exposed only used to show as a printercolumn
|
|
type: string
|
|
importStatus:
|
|
description: ImportStatus denotes the status of the imported service
|
|
type: string
|
|
lastSync:
|
|
description: Last sync time with backend
|
|
format: int64
|
|
type: integer
|
|
updatedOn:
|
|
description: Used to match if the service is updated from backend
|
|
format: int64
|
|
type: integer
|
|
type: object
|
|
type: object
|
|
served: true
|
|
storage: true
|
|
subresources:
|
|
status: {}
|
|
status:
|
|
acceptedNames:
|
|
kind: ""
|
|
plural: ""
|
|
conditions: []
|
|
storedVersions: []
|
|
|
|
---
|
|
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
annotations:
|
|
controller-gen.kubebuilder.io/version: v0.7.0
|
|
creationTimestamp: null
|
|
name: slicegateways.networking.kubeslice.io
|
|
spec:
|
|
group: networking.kubeslice.io
|
|
names:
|
|
kind: SliceGateway
|
|
listKind: SliceGatewayList
|
|
plural: slicegateways
|
|
shortNames:
|
|
- gw
|
|
- slicegw
|
|
singular: slicegateway
|
|
scope: Namespaced
|
|
versions:
|
|
- additionalPrinterColumns:
|
|
- jsonPath: .status.config.sliceGatewaySubnet
|
|
name: Subnet
|
|
type: string
|
|
- jsonPath: .status.config.sliceGatewayRemoteSubnet
|
|
name: Remote Subnet
|
|
type: string
|
|
- jsonPath: .status.config.sliceGatewayRemoteClusterId
|
|
name: Remote Cluster
|
|
type: string
|
|
- jsonPath: .status.config.sliceGatewayStatus
|
|
name: GW Status
|
|
type: string
|
|
name: v1beta1
|
|
schema:
|
|
openAPIV3Schema:
|
|
description: SliceGateway is the Schema for the slicegateways API
|
|
properties:
|
|
apiVersion:
|
|
description: 'APIVersion defines the versioned schema of this representation
|
|
of an object. Servers should convert recognized schemas to the latest
|
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
type: string
|
|
kind:
|
|
description: 'Kind is a string value representing the REST resource this
|
|
object represents. Servers may infer this from the endpoint the client
|
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
spec:
|
|
description: SliceGatewaySpec defines the desired state of SliceGateway
|
|
properties:
|
|
siteName:
|
|
description: SiteName is site name
|
|
type: string
|
|
sliceName:
|
|
description: SliceName is the Name of the slice this gateway is attached
|
|
into
|
|
type: string
|
|
type: object
|
|
status:
|
|
description: SliceGatewayStatus defines the observed state of SliceGateway
|
|
properties:
|
|
config:
|
|
description: SliceGatewayConfig defines the config received from backend
|
|
properties:
|
|
sliceGatewayHostType:
|
|
description: 'Host Type : server or client'
|
|
type: string
|
|
sliceGatewayId:
|
|
description: UUID of the slice gateway.
|
|
type: string
|
|
sliceGatewayLocalVpnIp:
|
|
description: Local VPN IP
|
|
type: string
|
|
sliceGatewayName:
|
|
description: Slice Gateway Name
|
|
type: string
|
|
sliceGatewayNodePorts:
|
|
description: Node port
|
|
items:
|
|
type: integer
|
|
type: array
|
|
sliceGatewayRemoteClusterId:
|
|
description: Remote Cluster ID
|
|
type: string
|
|
sliceGatewayRemoteGatewayId:
|
|
description: Remote Gateway ID
|
|
type: string
|
|
sliceGatewayRemoteNodeIps:
|
|
description: Remote Node IPs
|
|
items:
|
|
type: string
|
|
type: array
|
|
sliceGatewayRemoteNodePorts:
|
|
description: Remote Node Port
|
|
items:
|
|
type: integer
|
|
type: array
|
|
sliceGatewayRemoteSubnet:
|
|
description: Remote Node Subnet
|
|
type: string
|
|
sliceGatewayRemoteVpnIp:
|
|
description: Remote VPN IP
|
|
type: string
|
|
sliceGatewayStatus:
|
|
description: SliceGateway status
|
|
type: string
|
|
sliceGatewaySubnet:
|
|
description: Slice gateway subnet range.
|
|
type: string
|
|
sliceName:
|
|
description: Name of the slice.
|
|
type: string
|
|
sliceSiteName:
|
|
description: Slice gateway subnet range.
|
|
type: string
|
|
type: object
|
|
configUpdatedOn:
|
|
description: ConfigUpdatedOn is the time when Config updated from
|
|
backend
|
|
format: int64
|
|
type: integer
|
|
connectionContextUpdatedOn:
|
|
description: ConnectionContextUpdated is the time when context updated
|
|
in pod
|
|
format: int64
|
|
type: integer
|
|
gatewayPodStatus:
|
|
description: gatewayPodStatus is a list that consists of status of
|
|
individual gatewaypods
|
|
items:
|
|
properties:
|
|
localNsmIP:
|
|
type: string
|
|
peerPodName:
|
|
type: string
|
|
podIP:
|
|
type: string
|
|
podName:
|
|
type: string
|
|
routeRemoved:
|
|
format: int32
|
|
type: integer
|
|
tunnelStatus:
|
|
properties:
|
|
IntfName:
|
|
type: string
|
|
Latency:
|
|
format: int64
|
|
type: integer
|
|
LocalIP:
|
|
type: string
|
|
PacketLoss:
|
|
format: int64
|
|
type: integer
|
|
RemoteIP:
|
|
type: string
|
|
RxRate:
|
|
format: int64
|
|
type: integer
|
|
Status:
|
|
format: int32
|
|
type: integer
|
|
TxRate:
|
|
format: int64
|
|
type: integer
|
|
type: object
|
|
type: object
|
|
type: array
|
|
peerIp:
|
|
description: PeerIP is the gateway tunnel peer ip
|
|
type: string
|
|
podIps:
|
|
description: PodIPs is the list of Ip of the gateway pods running
|
|
in cluster
|
|
items:
|
|
type: string
|
|
type: array
|
|
podName:
|
|
description: Deprecated PodName is the name of the gateway pod running
|
|
in cluster
|
|
type: string
|
|
podNames:
|
|
description: PodNames is the list of names of the gateway pods running
|
|
in cluster
|
|
items:
|
|
type: string
|
|
type: array
|
|
podStatus:
|
|
description: PodStatus shows whether gateway pod is healthy
|
|
type: string
|
|
type: object
|
|
type: object
|
|
served: true
|
|
storage: true
|
|
subresources:
|
|
status: {}
|
|
status:
|
|
acceptedNames:
|
|
kind: ""
|
|
plural: ""
|
|
conditions: []
|
|
storedVersions: []
|
|
|
|
---
|
|
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
annotations:
|
|
controller-gen.kubebuilder.io/version: v0.7.0
|
|
creationTimestamp: null
|
|
name: slices.networking.kubeslice.io
|
|
spec:
|
|
group: networking.kubeslice.io
|
|
names:
|
|
kind: Slice
|
|
listKind: SliceList
|
|
plural: slices
|
|
singular: slice
|
|
scope: Namespaced
|
|
versions:
|
|
- name: v1beta1
|
|
schema:
|
|
openAPIV3Schema:
|
|
description: Slice is the Schema for the slices API
|
|
properties:
|
|
apiVersion:
|
|
description: 'APIVersion defines the versioned schema of this representation
|
|
of an object. Servers should convert recognized schemas to the latest
|
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
type: string
|
|
kind:
|
|
description: 'Kind is a string value representing the REST resource this
|
|
object represents. Servers may infer this from the endpoint the client
|
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
spec:
|
|
description: SliceSpec defines the desired state of Slice
|
|
type: object
|
|
status:
|
|
description: SliceStatus defines the observed state of Slice
|
|
properties:
|
|
allowedNamespaces:
|
|
description: Slice Allowed Namespace list
|
|
items:
|
|
type: string
|
|
type: array
|
|
appPods:
|
|
description: AppPods contains the list of app pods connected to the
|
|
slice
|
|
items:
|
|
description: AppPod defines the app pods connected to slice
|
|
properties:
|
|
nsmInterface:
|
|
description: NsmInterface is the nsm interface of App
|
|
type: string
|
|
nsmIp:
|
|
description: NsmIP is the nsm ip of App
|
|
type: string
|
|
nsmPeerIp:
|
|
description: PeerIp is the nsm peer ip of gateway
|
|
type: string
|
|
podIp:
|
|
description: PodIP is App Pod IP
|
|
type: string
|
|
podName:
|
|
description: PodName is App Pod Name
|
|
type: string
|
|
podNamespace:
|
|
description: PodNamespace is App Pod Namespace
|
|
type: string
|
|
type: object
|
|
type: array
|
|
appPodsUpdatedOn:
|
|
description: AppPodsUpdatedOn is the time when app pods list was updated
|
|
format: int64
|
|
type: integer
|
|
applicationNamespaces:
|
|
description: Slice Application Namespace list
|
|
items:
|
|
type: string
|
|
type: array
|
|
dnsIP:
|
|
description: DNSIP is the IP of Coredns server
|
|
type: string
|
|
networkPoliciesInstalled:
|
|
default: false
|
|
description: NetworkPoliciesInstalled defines whether the netpol are
|
|
installed in atleast one applicationNamespace
|
|
type: boolean
|
|
sliceConfig:
|
|
description: SliceConfig is the spec for slice received from hub cluster
|
|
properties:
|
|
clusterSubnetCIDR:
|
|
description: ClusterSubnetCIDR is the subnet to be used by the
|
|
current cluster
|
|
type: string
|
|
externalGatewayConfig:
|
|
description: ExternalGatewayConfig determines istio ingress/egress
|
|
configuration
|
|
properties:
|
|
egress:
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
type: object
|
|
gatewayType:
|
|
type: string
|
|
ingress:
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
type: object
|
|
nsIngress:
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
type: object
|
|
type: object
|
|
namespaceIsolationProfile:
|
|
description: Namespace Isolation profile contains fields related
|
|
to namespace binding to slice
|
|
properties:
|
|
allowedNamespaces:
|
|
description: Allowed namespaces is a list of namespaces that
|
|
can send and receive traffic to app namespaces
|
|
items:
|
|
type: string
|
|
type: array
|
|
applicationNamespaces:
|
|
description: Application namespaces is a list of namespaces
|
|
that are bound to the slice
|
|
items:
|
|
type: string
|
|
type: array
|
|
isolationEnabled:
|
|
default: false
|
|
description: Enable Namespace Isolation in the slice
|
|
type: boolean
|
|
type: object
|
|
qosProfileDetails:
|
|
description: QOS profile details
|
|
properties:
|
|
bandwidthCeilingKbps:
|
|
description: Bandwidth Ceiling eg:5000
|
|
type: integer
|
|
bandwidthGuaranteedKbps:
|
|
description: Bandwidth Guaranteed eg:4000
|
|
type: integer
|
|
dscpClass:
|
|
description: DSCP code for inter cluster traffic
|
|
type: string
|
|
priority:
|
|
description: Priority 0-3
|
|
type: integer
|
|
queueType:
|
|
description: Queue Type
|
|
type: string
|
|
tcType:
|
|
description: TC type
|
|
type: string
|
|
type: object
|
|
sliceDisplayName:
|
|
description: display name of the slice.
|
|
type: string
|
|
sliceId:
|
|
description: UUID of the slice.
|
|
type: string
|
|
sliceIpam:
|
|
description: IPAM configuration for the slice
|
|
properties:
|
|
ipamClusterOctet:
|
|
description: Cluster specific octet for IPAM root subnet
|
|
type: integer
|
|
sliceIpamType:
|
|
description: IPAM Type for slice
|
|
type: string
|
|
required:
|
|
- sliceIpamType
|
|
type: object
|
|
sliceSubnet:
|
|
description: IP subnet range of the slice.
|
|
type: string
|
|
sliceType:
|
|
description: Type of the slice.
|
|
type: string
|
|
required:
|
|
- qosProfileDetails
|
|
- sliceDisplayName
|
|
- sliceId
|
|
- sliceIpam
|
|
- sliceSubnet
|
|
- sliceType
|
|
type: object
|
|
type: object
|
|
type: object
|
|
served: true
|
|
storage: true
|
|
subresources:
|
|
status: {}
|
|
status:
|
|
acceptedNames:
|
|
kind: ""
|
|
plural: ""
|
|
conditions: []
|
|
storedVersions: []
|
|
|
|
---
|
|
apiVersion: batch/v1
|
|
kind: Job
|
|
metadata:
|
|
name: kubeslice-install-crds
|
|
namespace: kubeslice-system
|
|
annotations:
|
|
"helm.sh/hook": pre-install,pre-upgrade,pre-rollback
|
|
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
|
"helm.sh/hook-weight": "2"
|
|
labels:
|
|
app.kubernetes.io/name: kubeslice
|
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
|
spec:
|
|
backoffLimit: 3
|
|
template:
|
|
metadata:
|
|
name: kubeslice-install-crds
|
|
spec:
|
|
serviceAccountName: kubeslice-install-crds
|
|
containers:
|
|
- name: kubectl
|
|
image: "alpine/k8s:1.22.9"
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- kubectl apply -f /tmp/crds.yaml
|
|
volumeMounts:
|
|
- mountPath: /tmp
|
|
name: crds
|
|
volumes:
|
|
- name: crds
|
|
configMap:
|
|
name: kubeslice-install-crds
|
|
items:
|
|
- key: "crds.yaml"
|
|
path: "crds.yaml"
|
|
restartPolicy: OnFailure
|