rancher-partner-charts/charts/avesha/kubeslice-controller/templates/kubeslice-controller.yaml

1764 lines
51 KiB
YAML
Raw Normal View History

---
{{- if and .Values.imagePullSecrets .Values.imagePullSecrets.repository .Values.imagePullSecrets.username .Values.imagePullSecrets.password }}
apiVersion: v1
data:
.dockerconfigjson: {{
printf "{\"auths\":{\"%s\":{\"username\":\"%s\",\"password\":\"%s\",\"email\":\"%s\",\"auth\":\"%s\"}}}"
.Values.imagePullSecrets.repository
.Values.imagePullSecrets.username
.Values.imagePullSecrets.password
.Values.imagePullSecrets.email
(printf "%s:%s" .Values.imagePullSecrets.username .Values.imagePullSecrets.password | b64enc)
| b64enc
}}
kind: Secret
metadata:
name: kubeslice-image-pull-secret
namespace: kubeslice-controller
type: kubernetes.io/dockerconfigjson
{{- end }}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
cert-manager.io/inject-ca-from: kubeslice-controller/kubeslice-controller-serving-cert
controller-gen.kubebuilder.io/version: v0.7.0
name: clusters.controller.kubeslice.io
spec:
conversion:
strategy: Webhook
webhook:
clientConfig:
service:
name: kubeslice-controller-webhook-service
namespace: kubeslice-controller
path: /convert
conversionReviewVersions:
- v1
group: controller.kubeslice.io
names:
kind: Cluster
listKind: ClusterList
plural: clusters
singular: cluster
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: Cluster is the Schema for the clusters 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: ClusterSpec defines the desired state of Cluster
properties:
clusterProperty:
description: put in an object
properties:
geoLocation:
description: GeoLocation contains information regarding Geographical Location of the Cluster
properties:
cloudProvider:
description: CloudProvider is the cloud service provider
type: string
cloudRegion:
description: CloudRegion is the region of the cloud
type: string
latitude:
description: Latitude is the latitude of the cluster
type: string
longitude:
description: Longitude is the longitude of the cluster
type: string
type: object
monitoring:
description: Monitoring contains the Kubernetes Monitoring Dashboard
properties:
kubernetesDashboard:
description: KubernetesDashboard contains the information regarding Kubernetes Monitoring Dashboard
properties:
accessToken:
description: AccessToken is the Access Token to access the KubernetesDashboard
type: string
enabled:
description: Enabled is the enable status of the KubernetesDashboard
type: boolean
endpoint:
description: Endpoint is the base endpoint to access the kubernetes dashboard
type: string
ingressPrefix:
description: IngressPrefix is the prefix of ingress gateway for KubernetesDashboard
type: string
type: object
type: object
telemetry:
description: Telemetry contains Telemetry information
properties:
enabled:
description: Enabled is the enable status of the Telemetry
type: boolean
endpoint:
description: Endpoint is the Telemetry Endpoint
type: string
telemetryProvider:
description: TelemetryProvider is the Telemetry Provider information
type: string
type: object
type: object
networkInterface:
description: NetworkInterface is the network interface attached with the cluster.
type: string
nodeIP:
description: NodeIP is the IP address of the Node
type: string
type: object
status:
description: ClusterStatus defines the observed state of Cluster
properties:
cniSubnet:
description: CniSubnet is the podip and service ip subnet of CNI
items:
type: string
type: array
namespaces:
description: Namespaces present in cluster
items:
properties:
name:
type: string
sliceName:
type: string
type: object
type: array
secretName:
description: SecretName is the name of the secret for the worker cluster.
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:
cert-manager.io/inject-ca-from: kubeslice-controller/kubeslice-controller-serving-cert
controller-gen.kubebuilder.io/version: v0.7.0
name: projects.controller.kubeslice.io
spec:
conversion:
strategy: Webhook
webhook:
clientConfig:
service:
name: kubeslice-controller-webhook-service
namespace: kubeslice-controller
path: /convert
conversionReviewVersions:
- v1
group: controller.kubeslice.io
names:
kind: Project
listKind: ProjectList
plural: projects
singular: project
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: Project is the Schema for the projects 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: ProjectSpec defines the desired state of Project
properties:
serviceAccount:
description: ServiceAccount is a field of Project. Edit project_types.go to remove/update
properties:
readOnly:
items:
type: string
type: array
readWrite:
items:
type: string
type: array
type: object
type: object
status:
description: ProjectStatus defines the observed state of Project
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: serviceexportconfigs.controller.kubeslice.io
spec:
group: controller.kubeslice.io
names:
kind: ServiceExportConfig
listKind: ServiceExportConfigList
plural: serviceexportconfigs
singular: serviceexportconfig
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: ServiceExportConfig is the Schema for the serviceexportconfigs 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: ServiceExportConfigSpec defines the desired state of ServiceExportConfig
properties:
serviceDiscoveryEndpoints:
description: the service discovery endpoint array
items:
properties:
cluster:
description: The ID of the cluster.
type: string
dnsName:
description: the dns_name of the service
type: string
nsmIp:
description: The NSM IP address.
type: string
podName:
description: The name of the pod.
type: string
port:
description: port of the service
format: int32
type: integer
type: object
type: array
serviceDiscoveryPorts:
description: The ports for the given service.
items:
properties:
name:
description: The name of the port.
type: string
port:
description: The port number.
format: int32
type: integer
protocol:
description: The protocol.
type: string
type: object
type: array
serviceName:
description: ServiceName is the name of the service
type: string
serviceNamespace:
type: string
sliceName:
description: The name of the slice.
type: string
sourceCluster:
description: clusterId is the id of the cluster where the service is available.
type: string
required:
- serviceName
- sliceName
- sourceCluster
type: object
status:
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:
cert-manager.io/inject-ca-from: kubeslice-controller/kubeslice-controller-serving-cert
controller-gen.kubebuilder.io/version: v0.7.0
name: sliceconfigs.controller.kubeslice.io
spec:
conversion:
strategy: Webhook
webhook:
clientConfig:
service:
name: kubeslice-controller-webhook-service
namespace: kubeslice-controller
path: /convert
conversionReviewVersions:
- v1
group: controller.kubeslice.io
names:
kind: SliceConfig
listKind: SliceConfigList
plural: sliceconfigs
singular: sliceconfig
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: SliceConfig is the Schema for the sliceconfig 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: SliceConfigSpec defines the desired state of SliceConfig
properties:
clusters:
items:
type: string
type: array
externalGatewayConfig:
items:
description: ExternalGatewayConfig is the configuration for external gateways like 'istio', etc/
properties:
clusters:
items:
type: string
type: array
egress:
properties:
enabled:
type: boolean
type: object
gatewayType:
enum:
- none
- istio
type: string
ingress:
properties:
enabled:
type: boolean
type: object
nsIngress:
properties:
enabled:
type: boolean
type: object
type: object
type: array
namespaceIsolationProfile:
properties:
allowedNamespaces:
items:
properties:
clusters:
items:
type: string
type: array
namespace:
type: string
type: object
type: array
applicationNamespaces:
items:
properties:
clusters:
items:
type: string
type: array
namespace:
type: string
type: object
type: array
isolationEnabled:
default: false
type: boolean
type: object
qosProfileDetails:
description: The custom QOS Profile Details
properties:
bandwidthCeilingKbps:
type: integer
bandwidthGuaranteedKbps:
type: integer
dscpClass:
enum:
- Default
- AF11
- AF12
- AF13
- AF21
- AF22
- AF23
- AF31
- AF32
- AF33
- AF41
- AF42
- AF43
- EF
type: string
priority:
type: integer
queueType:
default: HTB
type: string
tcType:
default: BANDWIDTH_CONTROL
type: string
required:
- bandwidthCeilingKbps
- bandwidthGuaranteedKbps
- dscpClass
- priority
- queueType
- tcType
type: object
sliceGatewayProvider:
description: WorkerSliceGatewayProvider defines the configuration for slicegateway
properties:
sliceCaType:
default: Local
type: string
sliceGatewayType:
default: OpenVPN
type: string
required:
- sliceCaType
- sliceGatewayType
type: object
sliceIpamType:
default: Local
type: string
sliceSubnet:
type: string
sliceType:
default: Application
type: string
standardQosProfileName:
type: string
required:
- sliceGatewayProvider
type: object
status:
description: SliceConfigStatus defines the observed state of SliceConfig
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: sliceqosconfigs.controller.kubeslice.io
spec:
group: controller.kubeslice.io
names:
kind: SliceQoSConfig
listKind: SliceQoSConfigList
plural: sliceqosconfigs
singular: sliceqosconfig
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: SliceQoSConfig is the Schema for the sliceqosconfigs 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: SliceQoSConfigSpec defines the desired state of SliceQoSConfig
properties:
bandwidthCeilingKbps:
type: integer
bandwidthGuaranteedKbps:
type: integer
dscpClass:
enum:
- Default
- AF11
- AF12
- AF13
- AF21
- AF22
- AF23
- AF31
- AF32
- AF33
- AF41
- AF42
- AF43
- EF
type: string
priority:
type: integer
queueType:
enum:
- HTB
type: string
tcType:
enum:
- BANDWIDTH_CONTROL
type: string
required:
- bandwidthCeilingKbps
- bandwidthGuaranteedKbps
- dscpClass
- priority
- queueType
- tcType
type: object
status:
description: SliceQoSConfigStatus defines the observed state of SliceQoSConfig
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: workerserviceimports.worker.kubeslice.io
spec:
group: worker.kubeslice.io
names:
kind: WorkerServiceImport
listKind: WorkerServiceImportList
plural: workerserviceimports
singular: workerserviceimport
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: WorkerServiceImport is the Schema for the workerserviceimport 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: WorkerServiceImportSpec defines the desired state of WorkerServiceImport
properties:
serviceDiscoveryEndpoints:
description: the service discovery endpoint array
items:
properties:
cluster:
description: The ID of the cluster.
type: string
dnsName:
description: the dns_name of the service
type: string
nsmIp:
description: The NSM IP address.
type: string
podName:
description: The name of the pod.
type: string
port:
description: port of the service
format: int32
type: integer
type: object
type: array
serviceDiscoveryPorts:
description: The ports for the given service.
items:
properties:
name:
description: The name of the port.
type: string
port:
description: The port number.
format: int32
type: integer
protocol:
description: The protocol.
type: string
type: object
type: array
serviceName:
description: ServiceName is the name of the service
type: string
serviceNamespace:
description: ServiceNamespace is the namespace of the service
type: string
sliceName:
description: The name of the slice.
type: string
sourceClusters:
description: clusterId is the id of the cluster where the service is available.
items:
type: string
type: array
type: object
status:
description: WorkerServiceImportStatus defines the observed state of WorkerServiceImport
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: workersliceconfigs.worker.kubeslice.io
spec:
group: worker.kubeslice.io
names:
kind: WorkerSliceConfig
listKind: WorkerSliceConfigList
plural: workersliceconfigs
singular: workersliceconfig
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: WorkerSliceConfig is the Schema for the slice 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: WorkerSliceConfigSpec defines the desired state of Slice
properties:
externalGatewayConfig:
properties:
egress:
properties:
enabled:
type: boolean
type: object
gatewayType:
enum:
- none
- istio
type: string
ingress:
properties:
enabled:
type: boolean
type: object
nsIngress:
properties:
enabled:
type: boolean
type: object
type: object
ipamClusterOctet:
type: integer
namespaceIsolationProfile:
properties:
allowedNamespaces:
items:
type: string
type: array
applicationNamespaces:
items:
type: string
type: array
isolationEnabled:
default: false
type: boolean
type: object
qosProfileDetails:
description: QOSProfile is the QOS Profile configuration from backend
properties:
bandwidthCeilingKbps:
type: integer
bandwidthGuaranteedKbps:
type: integer
dscpClass:
enum:
- Default
- AF11
- AF12
- AF13
- AF21
- AF22
- AF23
- AF31
- AF32
- AF33
- AF41
- AF42
- AF43
- EF
type: string
priority:
type: integer
queueType:
default: HTB
type: string
tcType:
type: string
type: object
sliceGatewayProvider:
description: WorkerSliceGatewayProvider defines the configuration for slicegateway
properties:
sliceCaType:
default: Local
type: string
sliceGatewayType:
default: OpenVPN
type: string
type: object
sliceIpamType:
default: Local
type: string
sliceName:
type: string
sliceSubnet:
type: string
sliceType:
default: Application
type: string
type: object
status:
description: WorkerSliceConfigStatus defines the observed state of Slice
properties:
connectedAppPods:
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
onboardedAppNamespaces:
items:
properties:
name:
type: string
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: workerslicegateways.worker.kubeslice.io
spec:
group: worker.kubeslice.io
names:
kind: WorkerSliceGateway
listKind: WorkerSliceGatewayList
plural: workerslicegateways
singular: workerslicegateway
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: WorkerSliceGateway 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: WorkerSliceGatewaySpec defines the desired state of WorkerSliceGateway
properties:
gatewayCredentials:
properties:
secretName:
type: string
type: object
gatewayHostType:
enum:
- Client
- Server
type: string
gatewayNumber:
type: integer
gatewayType:
default: OpenVPN
type: string
localGatewayConfig:
properties:
clusterName:
type: string
gatewayName:
type: string
gatewaySubnet:
type: string
nodeIp:
type: string
nodePort:
type: integer
vpnIp:
type: string
type: object
remoteGatewayConfig:
properties:
clusterName:
type: string
gatewayName:
type: string
gatewaySubnet:
type: string
nodeIp:
type: string
nodePort:
type: integer
vpnIp:
type: string
type: object
sliceName:
type: string
type: object
status:
description: WorkerSliceGatewayStatus defines the observed state of WorkerSliceGateway
properties:
clusterInsertionIndex:
type: integer
gatewayNumber:
type: integer
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: kubeslice-controller-controller-manager
namespace: kubeslice-controller
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: kubeslice-controller-ovpn-manager
namespace: kubeslice-controller
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: kubeslice-controller-leader-election-role
namespace: kubeslice-controller
rules:
- apiGroups:
- ""
resources:
- configmaps
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- ""
resources:
- events
verbs:
- create
- patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
creationTimestamp: null
name: kubeslice-controller-controller-role
rules:
- apiGroups:
- ""
resources:
- events
verbs:
- create
- escalate
- get
- list
- patch
- update
- watch
- apiGroups:
- ""
resources:
- namespaces
verbs:
- create
- delete
- escalate
- get
- list
- patch
- update
- watch
- apiGroups:
- ""
resources:
- secrets
verbs:
- create
- delete
- escalate
- get
- list
- patch
- update
- watch
- apiGroups:
- ""
resources:
- serviceaccounts
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- batch
resources:
- jobs
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- controller.kubeslice.io
resources:
- clusters
- projects
- serviceexportconfigs
- sliceconfigs
- sliceqosconfigs
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- controller.kubeslice.io
resources:
- clusters/finalizers
- projects/finalizers
- serviceexportconfigs/finalizers
- sliceconfigs/finalizers
- sliceqosconfigs/finalizers
verbs:
- update
- apiGroups:
- controller.kubeslice.io
resources:
- clusters/status
- projects/status
- serviceexportconfigs/status
- sliceconfigs/status
- sliceqosconfigs/status
verbs:
- get
- patch
- update
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterroles
- rolebindings
- roles
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- worker.kubeslice.io
resources:
- workerserviceimports
- workersliceconfigs
- workerslicegateways
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- worker.kubeslice.io
resources:
- workerserviceimports/finalizers
- workersliceconfigs/finalizers
- workerslicegateways/
verbs:
- update
- apiGroups:
- worker.kubeslice.io
resources:
- workerserviceimports/status
- workersliceconfigs/status
- workerslicegateways/status
verbs:
- get
- patch
- update
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: kubeslice-controller-metrics-reader
rules:
- nonResourceURLs:
- /metrics
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: kubeslice-controller-ovpn-editor-role
rules:
- apiGroups:
- worker.kubeslice.io
resources:
- workerslicegateways
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- ""
resources:
- namespaces
verbs:
- escalate
- get
- list
- patch
- update
- watch
- apiGroups:
- ""
resources:
- secrets
verbs:
- escalate
- get
- list
- watch
- update
- patch
- create
- apiGroups:
- worker.kubeslice.io
resources:
- workerslicegateways/status
verbs:
- get
- patch
- update
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: kubeslice-controller-proxy-role
rules:
- apiGroups:
- authentication.k8s.io
resources:
- tokenreviews
verbs:
- create
- apiGroups:
- authorization.k8s.io
resources:
- subjectaccessreviews
verbs:
- create
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: kubeslice-controller-leader-election-rolebinding
namespace: kubeslice-controller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: kubeslice-controller-leader-election-role
subjects:
- kind: ServiceAccount
name: kubeslice-controller-controller-manager
namespace: kubeslice-controller
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kubeslice-controller-controller-rolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kubeslice-controller-controller-role
subjects:
- kind: ServiceAccount
name: kubeslice-controller-controller-manager
namespace: kubeslice-controller
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kubeslice-controller-ovpn-controller-rolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kubeslice-controller-ovpn-editor-role
subjects:
- kind: ServiceAccount
name: kubeslice-controller-ovpn-manager
namespace: kubeslice-controller
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kubeslice-controller-proxy-rolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kubeslice-controller-proxy-role
subjects:
- kind: ServiceAccount
name: kubeslice-controller-controller-manager
namespace: kubeslice-controller
---
apiVersion: v1
data:
controller_manager_config.yaml: |
apiVersion: controller-runtime.sigs.k8s.io/v1alpha1
kind: ControllerManagerConfig
health:
healthProbeBindAddress: :8081
metrics:
bindAddress: 127.0.0.1:8080
webhook:
port: 9443
leaderElection:
leaderElect: true
resourceName: d7f43c17.kubeslice.io
kind: ConfigMap
metadata:
name: kubeslice-controller-manager-config
namespace: kubeslice-controller
---
apiVersion: v1
kind: Service
metadata:
labels:
control-plane: controller-manager
name: kubeslice-controller-controller-manager-metrics-service
namespace: kubeslice-controller
spec:
ports:
- name: https
port: 8443
protocol: TCP
targetPort: https
selector:
control-plane: controller-manager
---
apiVersion: v1
kind: Service
metadata:
name: kubeslice-controller-webhook-service
namespace: kubeslice-controller
spec:
ports:
- port: 443
protocol: TCP
targetPort: 9443
selector:
control-plane: controller-manager
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
control-plane: controller-manager
name: kubeslice-controller-manager
namespace: kubeslice-controller
spec:
replicas: 1
selector:
matchLabels:
control-plane: controller-manager
template:
metadata:
annotations:
kubectl.kubernetes.io/default-container: manager
labels:
control-plane: controller-manager
spec:
containers:
- args:
- --secure-listen-address=0.0.0.0:8443
- --upstream=http://127.0.0.1:8080/
- --logtostderr=true
- --v=10
image: '{{ .Values.kubeslice.rbacproxy.image }}:{{ .Values.kubeslice.rbacproxy.tag }}'
name: kube-rbac-proxy
ports:
- containerPort: 8443
name: https
protocol: TCP
- args:
- --health-probe-bind-address=:8081
- --metrics-bind-address=127.0.0.1:8080
- --leader-elect
- --log-level={{ required "A valid value is required!" .Values.kubeslice.controller.logLevel }}
- --rbac-resource-prefix={{ required "A valid value is required!" .Values.kubeslice.controller.rbacResourcePrefix }}
- --project-namespace-prefix={{ required "A valid value is required!" .Values.kubeslice.controller.projectnsPrefix }}
- --controller-end-point={{ required "A valid value is required!" .Values.kubeslice.controller.endpoint }}
- --ovpn-job-image={{ .Values.kubeslice.ovpnJob.image }}:{{ .Values.kubeslice.ovpnJob.tag }}
command:
- /manager
env:
- name: KUBESLICE_CONTROLLER_MANAGER_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: '{{ .Values.kubeslice.controller.image }}:{{ .Values.kubeslice.controller.tag }}'
imagePullPolicy: '{{ .Values.kubeslice.controller.pullPolicy }}'
livenessProbe:
httpGet:
path: /healthz
port: 8081
initialDelaySeconds: 15
periodSeconds: 20
name: manager
ports:
- containerPort: 9443
name: webhook-server
protocol: TCP
readinessProbe:
httpGet:
path: /readyz
port: 8081
initialDelaySeconds: 5
periodSeconds: 10
resources:
limits:
cpu: 500m
memory: 128Mi
requests:
cpu: 10m
memory: 64Mi
securityContext:
allowPrivilegeEscalation: false
volumeMounts:
- mountPath: /tmp/k8s-webhook-server/serving-certs
name: cert
readOnly: true
securityContext:
runAsNonRoot: true
serviceAccountName: kubeslice-controller-controller-manager
terminationGracePeriodSeconds: 10
volumes:
- name: cert
secret:
defaultMode: 420
secretName: webhook-server-cert
{{- if and .Values.imagePullSecrets .Values.imagePullSecrets.repository .Values.imagePullSecrets.username .Values.imagePullSecrets.password }}
imagePullSecrets:
- name: kubeslice-image-pull-secret
{{- end }}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: kubeslice-controller-serving-cert
namespace: kubeslice-controller
spec:
dnsNames:
- kubeslice-controller-webhook-service.kubeslice-controller.svc
- kubeslice-controller-webhook-service.kubeslice-controller.svc.cluster.local
issuerRef:
kind: Issuer
name: kubeslice-controller-selfsigned-issuer
secretName: webhook-server-cert
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: kubeslice-controller-selfsigned-issuer
namespace: kubeslice-controller
spec:
selfSigned: {}
---
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
annotations:
cert-manager.io/inject-ca-from: kubeslice-controller/kubeslice-controller-serving-cert
name: kubeslice-controller-mutating-webhook-configuration
webhooks:
- admissionReviewVersions:
- v1
clientConfig:
service:
name: kubeslice-controller-webhook-service
namespace: kubeslice-controller
path: /mutate-controller-kubeslice-io-v1alpha1-cluster
failurePolicy: Fail
name: mcluster.kb.io
rules:
- apiGroups:
- controller.kubeslice.io
apiVersions:
- v1alpha1
operations:
- CREATE
- UPDATE
resources:
- clusters
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: kubeslice-controller-webhook-service
namespace: kubeslice-controller
path: /mutate-controller-kubeslice-io-v1alpha1-project
failurePolicy: Fail
name: mproject.kb.io
rules:
- apiGroups:
- controller.kubeslice.io
apiVersions:
- v1alpha1
operations:
- CREATE
- UPDATE
resources:
- projects
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: kubeslice-controller-webhook-service
namespace: kubeslice-controller
path: /mutate-controller-kubeslice-io-v1alpha1-serviceexportconfig
failurePolicy: Fail
name: mserviceexportconfig.kb.io
rules:
- apiGroups:
- controller.kubeslice.io
apiVersions:
- v1alpha1
operations:
- CREATE
- UPDATE
resources:
- serviceexportconfigs
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: kubeslice-controller-webhook-service
namespace: kubeslice-controller
path: /mutate-controller-kubeslice-io-v1alpha1-sliceconfig
failurePolicy: Fail
name: msliceconfig.kb.io
rules:
- apiGroups:
- controller.kubeslice.io
apiVersions:
- v1alpha1
operations:
- CREATE
- UPDATE
resources:
- sliceconfigs
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: kubeslice-controller-webhook-service
namespace: kubeslice-controller
path: /mutate-controller-kubeslice-io-v1alpha1-sliceqosconfig
failurePolicy: Fail
name: msliceqosconfig.kb.io
rules:
- apiGroups:
- controller.kubeslice.io
apiVersions:
- v1alpha1
operations:
- CREATE
- UPDATE
resources:
- sliceqosconfigs
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: kubeslice-controller-webhook-service
namespace: kubeslice-controller
path: /mutate-worker-kubeslice-io-v1alpha1-workersliceconfig
failurePolicy: Fail
name: mworkersliceconfig.kb.io
rules:
- apiGroups:
- worker.kubeslice.io
apiVersions:
- v1alpha1
operations:
- CREATE
- UPDATE
resources:
- workersliceconfigs
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: kubeslice-controller-webhook-service
namespace: kubeslice-controller
path: /mutate-worker-kubeslice-io-v1alpha1-workerslicegateway
failurePolicy: Fail
name: mworkerslicegateway.kb.io
rules:
- apiGroups:
- worker.kubeslice.io
apiVersions:
- v1alpha1
operations:
- CREATE
- UPDATE
resources:
- workerslicegateways
sideEffects: None
---
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
annotations:
cert-manager.io/inject-ca-from: kubeslice-controller/kubeslice-controller-serving-cert
name: kubeslice-controller-validating-webhook-configuration
webhooks:
- admissionReviewVersions:
- v1
clientConfig:
service:
name: kubeslice-controller-webhook-service
namespace: kubeslice-controller
path: /validate-controller-kubeslice-io-v1alpha1-cluster
failurePolicy: Fail
name: vcluster.kb.io
rules:
- apiGroups:
- controller.kubeslice.io
apiVersions:
- v1alpha1
operations:
- CREATE
- UPDATE
- DELETE
resources:
- clusters
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: kubeslice-controller-webhook-service
namespace: kubeslice-controller
path: /validate-controller-kubeslice-io-v1alpha1-project
failurePolicy: Fail
name: vproject.kb.io
rules:
- apiGroups:
- controller.kubeslice.io
apiVersions:
- v1alpha1
operations:
- CREATE
- UPDATE
- DELETE
resources:
- projects
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: kubeslice-controller-webhook-service
namespace: kubeslice-controller
path: /validate-controller-kubeslice-io-v1alpha1-serviceexportconfig
failurePolicy: Fail
name: vserviceexportconfig.kb.io
rules:
- apiGroups:
- controller.kubeslice.io
apiVersions:
- v1alpha1
operations:
- CREATE
- UPDATE
resources:
- serviceexportconfigs
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: kubeslice-controller-webhook-service
namespace: kubeslice-controller
path: /validate-controller-kubeslice-io-v1alpha1-sliceconfig
failurePolicy: Fail
name: vsliceconfig.kb.io
rules:
- apiGroups:
- controller.kubeslice.io
apiVersions:
- v1alpha1
operations:
- CREATE
- UPDATE
- DELETE
resources:
- sliceconfigs
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: kubeslice-controller-webhook-service
namespace: kubeslice-controller
path: /validate-controller-kubeslice-io-v1alpha1-sliceqosconfig
failurePolicy: Fail
name: vsliceqosconfig.kb.io
rules:
- apiGroups:
- controller.kubeslice.io
apiVersions:
- v1alpha1
operations:
- CREATE
- UPDATE
- DELETE
resources:
- sliceqosconfigs
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: kubeslice-controller-webhook-service
namespace: kubeslice-controller
path: /validate-worker-kubeslice-io-v1alpha1-workersliceconfig
failurePolicy: Fail
name: vworkersliceconfig.kb.io
rules:
- apiGroups:
- worker.kubeslice.io
apiVersions:
- v1alpha1
operations:
- CREATE
- UPDATE
resources:
- workersliceconfigs
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: kubeslice-controller-webhook-service
namespace: kubeslice-controller
path: /validate-worker-kubeslice-io-v1alpha1-workerslicegateway
failurePolicy: Fail
name: vworkerslicegateway.kb.io
rules:
- apiGroups:
- worker.kubeslice.io
apiVersions:
- v1alpha1
operations:
- CREATE
- UPDATE
resources:
- workerslicegateways
sideEffects: None