mirror of
https://github.com/arangodb/kube-arangodb.git
synced 2024-12-14 11:57:37 +00:00
[Feature] [Analytics] Enable TLS and Service (#1662)
This commit is contained in:
parent
67f61991f3
commit
21dde23586
29 changed files with 633 additions and 135 deletions
|
@ -67,6 +67,8 @@ linters-settings:
|
|||
alias: schedulerPodResourcesApiv1alpha1
|
||||
- pkg: github.com/arangodb/kube-arangodb/pkg/apis/shared
|
||||
alias: shared
|
||||
- pkg: github.com/arangodb/kube-arangodb/pkg/handlers/enterprise/analytics/shared
|
||||
alias: analyticsShared
|
||||
- pkg: github.com/arangodb/kube-arangodb/pkg/handlers/enterprise/ml/shared
|
||||
alias: mlShared
|
||||
- pkg: github.com/arangodb/kube-arangodb/pkg/handlers/enterprise/ml/shared/test
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
- (Feature) (ML) Release V1Beta1 API
|
||||
- (Maintenance) Update Go to 1.22.3
|
||||
- (Feature) (Analytics) GAE Integration
|
||||
- (Feature) (Analytics) Enable TLS and Service
|
||||
|
||||
## [1.2.40](https://github.com/arangodb/kube-arangodb/tree/1.2.40) (2024-04-10)
|
||||
- (Feature) Add Core fields to the Scheduler Container Spec
|
||||
|
|
|
@ -28,9 +28,14 @@ rules:
|
|||
- "get"
|
||||
- "list"
|
||||
- "watch"
|
||||
- apiGroups: ["apps"]
|
||||
resources:
|
||||
- "statefulsets"
|
||||
verbs: ["*"]
|
||||
- apiGroups: [ "" ]
|
||||
resources:
|
||||
- "secrets"
|
||||
- "services"
|
||||
verbs: [ "*" ]
|
||||
{{- end }}
|
||||
{{- end }}
|
|
@ -98,7 +98,7 @@ Links:
|
|||
|
||||
### .spec.deployment.gpu
|
||||
|
||||
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_deployment.go#L55)</sup>
|
||||
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_deployment.go#L56)</sup>
|
||||
|
||||
GPU defined if GPU Jobs are enabled.
|
||||
|
||||
|
@ -231,7 +231,7 @@ Links:
|
|||
|
||||
### .spec.deployment.port
|
||||
|
||||
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_deployment.go#L58)</sup>
|
||||
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_deployment.go#L59)</sup>
|
||||
|
||||
Port defines on which port the container will be listening for connections
|
||||
|
||||
|
@ -262,7 +262,7 @@ Links:
|
|||
|
||||
### .spec.deployment.replicas
|
||||
|
||||
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_deployment.go#L39)</sup>
|
||||
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_deployment.go#L40)</sup>
|
||||
|
||||
Replicas defines the number of replicas running specified components. No replicas created if no components are defined.
|
||||
|
||||
|
@ -305,7 +305,7 @@ Links:
|
|||
|
||||
### .spec.deployment.service.type
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_deployment_service.go#L37)</sup>
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_deployment_service.go#L38)</sup>
|
||||
|
||||
Type determines how the Service is exposed
|
||||
|
||||
|
@ -317,6 +317,7 @@ Possible Values:
|
|||
* `"NodePort"` - service will be exposed on one port of every node, in addition to 'ClusterIP' type
|
||||
* `"LoadBalancer"` - service will be exposed via an external load balancer (if the cloud provider supports it), in addition to 'NodePort' type
|
||||
* `"ExternalName"` - service consists of only a reference to an external name that kubedns or equivalent will return as a CNAME record, with no exposing or proxying of any pods involved
|
||||
* `"None"` - service is not created
|
||||
|
||||
***
|
||||
|
||||
|
@ -361,7 +362,7 @@ Links:
|
|||
|
||||
### .spec.deployment.tls.altNames
|
||||
|
||||
Type: `array` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_deployment_tls.go#L28)</sup>
|
||||
Type: `array` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/tls.go#L28)</sup>
|
||||
|
||||
AltNames define TLS AltNames used when TLS on the ArangoDB is enabled
|
||||
|
||||
|
@ -369,7 +370,7 @@ AltNames define TLS AltNames used when TLS on the ArangoDB is enabled
|
|||
|
||||
### .spec.deployment.tls.enabled
|
||||
|
||||
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_deployment_tls.go#L25)</sup>
|
||||
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/tls.go#L25)</sup>
|
||||
|
||||
Enabled define if TLS Should be enabled. If is not set then default is taken from ArangoDeployment settings
|
||||
|
||||
|
|
|
@ -98,7 +98,7 @@ Links:
|
|||
|
||||
### .spec.deployment.gpu
|
||||
|
||||
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1beta1/extension_spec_deployment.go#L55)</sup>
|
||||
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1beta1/extension_spec_deployment.go#L56)</sup>
|
||||
|
||||
GPU defined if GPU Jobs are enabled.
|
||||
|
||||
|
@ -231,7 +231,7 @@ Links:
|
|||
|
||||
### .spec.deployment.port
|
||||
|
||||
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1beta1/extension_spec_deployment.go#L58)</sup>
|
||||
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1beta1/extension_spec_deployment.go#L59)</sup>
|
||||
|
||||
Port defines on which port the container will be listening for connections
|
||||
|
||||
|
@ -262,7 +262,7 @@ Links:
|
|||
|
||||
### .spec.deployment.replicas
|
||||
|
||||
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1beta1/extension_spec_deployment.go#L39)</sup>
|
||||
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1beta1/extension_spec_deployment.go#L40)</sup>
|
||||
|
||||
Replicas defines the number of replicas running specified components. No replicas created if no components are defined.
|
||||
|
||||
|
@ -305,7 +305,7 @@ Links:
|
|||
|
||||
### .spec.deployment.service.type
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1beta1/extension_spec_deployment_service.go#L37)</sup>
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1beta1/extension_spec_deployment_service.go#L38)</sup>
|
||||
|
||||
Type determines how the Service is exposed
|
||||
|
||||
|
@ -317,6 +317,7 @@ Possible Values:
|
|||
* `"NodePort"` - service will be exposed on one port of every node, in addition to 'ClusterIP' type
|
||||
* `"LoadBalancer"` - service will be exposed via an external load balancer (if the cloud provider supports it), in addition to 'NodePort' type
|
||||
* `"ExternalName"` - service consists of only a reference to an external name that kubedns or equivalent will return as a CNAME record, with no exposing or proxying of any pods involved
|
||||
* `"None"` - service is not created
|
||||
|
||||
***
|
||||
|
||||
|
@ -361,7 +362,7 @@ Links:
|
|||
|
||||
### .spec.deployment.tls.altNames
|
||||
|
||||
Type: `array` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1beta1/extension_spec_deployment_tls.go#L28)</sup>
|
||||
Type: `array` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/tls.go#L28)</sup>
|
||||
|
||||
AltNames define TLS AltNames used when TLS on the ArangoDB is enabled
|
||||
|
||||
|
@ -369,7 +370,7 @@ AltNames define TLS AltNames used when TLS on the ArangoDB is enabled
|
|||
|
||||
### .spec.deployment.tls.enabled
|
||||
|
||||
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1beta1/extension_spec_deployment_tls.go#L25)</sup>
|
||||
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/tls.go#L25)</sup>
|
||||
|
||||
Enabled define if TLS Should be enabled. If is not set then default is taken from ArangoDeployment settings
|
||||
|
||||
|
|
|
@ -8,6 +8,48 @@ title: GraphAnalyticsEngine V1Alpha1
|
|||
|
||||
## Spec
|
||||
|
||||
### .spec.deployment.port
|
||||
|
||||
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/analytics/v1alpha1/gae_spec_deployment.go#L42)</sup>
|
||||
|
||||
Port defines on which port the container will be listening for connections
|
||||
|
||||
***
|
||||
|
||||
### .spec.deployment.service.type
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/analytics/v1alpha1/gae_spec_deployment_service.go#L38)</sup>
|
||||
|
||||
Type determines how the Service is exposed
|
||||
|
||||
Links:
|
||||
* [Kubernetes Documentation](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types)
|
||||
|
||||
Possible Values:
|
||||
* `"ClusterIP"` (default) - service will only be accessible inside the cluster, via the cluster IP
|
||||
* `"NodePort"` - service will be exposed on one port of every node, in addition to 'ClusterIP' type
|
||||
* `"LoadBalancer"` - service will be exposed via an external load balancer (if the cloud provider supports it), in addition to 'NodePort' type
|
||||
* `"ExternalName"` - service consists of only a reference to an external name that kubedns or equivalent will return as a CNAME record, with no exposing or proxying of any pods involved
|
||||
* `"None"` - service is not created
|
||||
|
||||
***
|
||||
|
||||
### .spec.deployment.tls.altNames
|
||||
|
||||
Type: `array` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/tls.go#L28)</sup>
|
||||
|
||||
AltNames define TLS AltNames used when TLS on the ArangoDB is enabled
|
||||
|
||||
***
|
||||
|
||||
### .spec.deployment.tls.enabled
|
||||
|
||||
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/tls.go#L25)</sup>
|
||||
|
||||
Enabled define if TLS Should be enabled. If is not set then default is taken from ArangoDeployment settings
|
||||
|
||||
***
|
||||
|
||||
### .spec.deploymentName
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/analytics/v1alpha1/gae_spec.go#L30)</sup>
|
||||
|
@ -16,15 +58,7 @@ DeploymentName define deployment name used in the object. Immutable
|
|||
|
||||
## Status
|
||||
|
||||
### .status.conditions
|
||||
|
||||
Type: `api.Conditions` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/analytics/v1alpha1/gae_status.go#L31)</sup>
|
||||
|
||||
Conditions specific to the entire extension
|
||||
|
||||
***
|
||||
|
||||
### .status.deployment.checksum
|
||||
### .status.arangoDB.deployment.checksum
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61)</sup>
|
||||
|
||||
|
@ -32,7 +66,7 @@ UID keeps the information about object Checksum
|
|||
|
||||
***
|
||||
|
||||
### .status.deployment.name
|
||||
### .status.arangoDB.deployment.name
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52)</sup>
|
||||
|
||||
|
@ -40,7 +74,7 @@ Name of the object
|
|||
|
||||
***
|
||||
|
||||
### .status.deployment.namespace
|
||||
### .status.arangoDB.deployment.namespace
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55)</sup>
|
||||
|
||||
|
@ -48,7 +82,143 @@ Namespace of the object. Should default to the namespace of the parent object
|
|||
|
||||
***
|
||||
|
||||
### .status.deployment.uid
|
||||
### .status.arangoDB.deployment.uid
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58)</sup>
|
||||
|
||||
UID keeps the information about object UID
|
||||
|
||||
***
|
||||
|
||||
### .status.arangoDB.secret.checksum
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61)</sup>
|
||||
|
||||
UID keeps the information about object Checksum
|
||||
|
||||
***
|
||||
|
||||
### .status.arangoDB.secret.name
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52)</sup>
|
||||
|
||||
Name of the object
|
||||
|
||||
***
|
||||
|
||||
### .status.arangoDB.secret.namespace
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55)</sup>
|
||||
|
||||
Namespace of the object. Should default to the namespace of the parent object
|
||||
|
||||
***
|
||||
|
||||
### .status.arangoDB.secret.uid
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58)</sup>
|
||||
|
||||
UID keeps the information about object UID
|
||||
|
||||
***
|
||||
|
||||
### .status.arangoDB.tls.checksum
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61)</sup>
|
||||
|
||||
UID keeps the information about object Checksum
|
||||
|
||||
***
|
||||
|
||||
### .status.arangoDB.tls.name
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52)</sup>
|
||||
|
||||
Name of the object
|
||||
|
||||
***
|
||||
|
||||
### .status.arangoDB.tls.namespace
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55)</sup>
|
||||
|
||||
Namespace of the object. Should default to the namespace of the parent object
|
||||
|
||||
***
|
||||
|
||||
### .status.arangoDB.tls.uid
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58)</sup>
|
||||
|
||||
UID keeps the information about object UID
|
||||
|
||||
***
|
||||
|
||||
### .status.conditions
|
||||
|
||||
Type: `api.Conditions` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/analytics/v1alpha1/gae_status.go#L30)</sup>
|
||||
|
||||
Conditions specific to the entire extension
|
||||
|
||||
***
|
||||
|
||||
### .status.reconciliation.service.checksum
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61)</sup>
|
||||
|
||||
UID keeps the information about object Checksum
|
||||
|
||||
***
|
||||
|
||||
### .status.reconciliation.service.name
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52)</sup>
|
||||
|
||||
Name of the object
|
||||
|
||||
***
|
||||
|
||||
### .status.reconciliation.service.namespace
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55)</sup>
|
||||
|
||||
Namespace of the object. Should default to the namespace of the parent object
|
||||
|
||||
***
|
||||
|
||||
### .status.reconciliation.service.uid
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58)</sup>
|
||||
|
||||
UID keeps the information about object UID
|
||||
|
||||
***
|
||||
|
||||
### .status.reconciliation.statefulSet.checksum
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61)</sup>
|
||||
|
||||
UID keeps the information about object Checksum
|
||||
|
||||
***
|
||||
|
||||
### .status.reconciliation.statefulSet.name
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52)</sup>
|
||||
|
||||
Name of the object
|
||||
|
||||
***
|
||||
|
||||
### .status.reconciliation.statefulSet.namespace
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55)</sup>
|
||||
|
||||
Namespace of the object. Should default to the namespace of the parent object
|
||||
|
||||
***
|
||||
|
||||
### .status.reconciliation.statefulSet.uid
|
||||
|
||||
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58)</sup>
|
||||
|
||||
|
|
|
@ -27,4 +27,6 @@ const (
|
|||
DeploymentFoundCondition api.ConditionType = "DeploymentFound"
|
||||
ReadyCondition api.ConditionType = "Ready"
|
||||
SpecValidCondition api.ConditionType = "SpecValid"
|
||||
StatefulSetReadyCondition api.ConditionType = "StatefulSetReady"
|
||||
TLSEnabledCondition api.ConditionType = "TLSEnabled"
|
||||
)
|
||||
|
|
|
@ -28,6 +28,16 @@ import (
|
|||
type GraphAnalyticsEngineSpec struct {
|
||||
// DeploymentName define deployment name used in the object. Immutable
|
||||
DeploymentName *string `json:"deploymentName,omitempty"`
|
||||
|
||||
// Deployment specifies how the GAE will be deployed into cluster
|
||||
Deployment *GraphAnalyticsEngineSpecDeployment `json:"deployment,omitempty"`
|
||||
}
|
||||
|
||||
func (a *GraphAnalyticsEngineSpec) GetDeployment() *GraphAnalyticsEngineSpecDeployment {
|
||||
if a == nil || a.Deployment == nil {
|
||||
return nil
|
||||
}
|
||||
return a.Deployment
|
||||
}
|
||||
|
||||
func (g *GraphAnalyticsEngineSpec) Validate() error {
|
||||
|
|
74
pkg/apis/analytics/v1alpha1/gae_spec_deployment.go
Normal file
74
pkg/apis/analytics/v1alpha1/gae_spec_deployment.go
Normal file
|
@ -0,0 +1,74 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2024 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
shared "github.com/arangodb/kube-arangodb/pkg/apis/shared"
|
||||
sharedApi "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
GraphAnalyticsEngineSpecDeploymentApi = "api"
|
||||
|
||||
GraphAnalyticsEngineDeploymentComponentDefaultPort = 8502
|
||||
)
|
||||
|
||||
type GraphAnalyticsEngineSpecDeployment struct {
|
||||
// Service defines how components will be exposed
|
||||
Service *GraphAnalyticsEngineSpecDeploymentService `json:"service,omitempty"`
|
||||
|
||||
// TLS defined TLS Settings
|
||||
TLS *sharedApi.TLS `json:"tls,omitempty"`
|
||||
|
||||
// Port defines on which port the container will be listening for connections
|
||||
Port *int32 `json:"port,omitempty"`
|
||||
}
|
||||
|
||||
func (g *GraphAnalyticsEngineSpecDeployment) GetPort(def int32) int32 {
|
||||
if g == nil || g.Port == nil {
|
||||
return def
|
||||
}
|
||||
return *g.Port
|
||||
}
|
||||
|
||||
func (g *GraphAnalyticsEngineSpecDeployment) GetService() *GraphAnalyticsEngineSpecDeploymentService {
|
||||
if g == nil {
|
||||
return nil
|
||||
}
|
||||
return g.Service
|
||||
}
|
||||
|
||||
func (g *GraphAnalyticsEngineSpecDeployment) GetTLS() *sharedApi.TLS {
|
||||
if g == nil {
|
||||
return nil
|
||||
}
|
||||
return g.TLS
|
||||
}
|
||||
|
||||
func (g *GraphAnalyticsEngineSpecDeployment) Validate() error {
|
||||
if g == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return shared.WithErrors(
|
||||
shared.PrefixResourceErrors("service", shared.ValidateOptional(g.GetService(), func(s GraphAnalyticsEngineSpecDeploymentService) error { return s.Validate() })),
|
||||
)
|
||||
}
|
58
pkg/apis/analytics/v1alpha1/gae_spec_deployment_service.go
Normal file
58
pkg/apis/analytics/v1alpha1/gae_spec_deployment_service.go
Normal file
|
@ -0,0 +1,58 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2024 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
core "k8s.io/api/core/v1"
|
||||
|
||||
shared "github.com/arangodb/kube-arangodb/pkg/apis/shared"
|
||||
)
|
||||
|
||||
type GraphAnalyticsEngineSpecDeploymentService struct {
|
||||
// Type determines how the Service is exposed
|
||||
// +doc/enum: ClusterIP|service will only be accessible inside the cluster, via the cluster IP
|
||||
// +doc/enum: NodePort|service will be exposed on one port of every node, in addition to 'ClusterIP' type
|
||||
// +doc/enum: LoadBalancer|service will be exposed via an external load balancer (if the cloud provider supports it), in addition to 'NodePort' type
|
||||
// +doc/enum: ExternalName|service consists of only a reference to an external name that kubedns or equivalent will return as a CNAME record, with no exposing or proxying of any pods involved
|
||||
// +doc/enum: None|service is not created
|
||||
// +doc/default: ClusterIP
|
||||
// +doc/link: Kubernetes Documentation|https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
|
||||
Type *core.ServiceType `json:"type,omitempty"`
|
||||
}
|
||||
|
||||
func (g *GraphAnalyticsEngineSpecDeploymentService) GetType() core.ServiceType {
|
||||
if g == nil || g.Type == nil {
|
||||
return core.ServiceTypeClusterIP
|
||||
}
|
||||
|
||||
return *g.Type
|
||||
}
|
||||
|
||||
func (g *GraphAnalyticsEngineSpecDeploymentService) Validate() error {
|
||||
if g == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
errs := []error{
|
||||
shared.PrefixResourceErrors("type", shared.ValidateServiceType(g.GetType())),
|
||||
}
|
||||
return shared.WithErrors(errs...)
|
||||
}
|
|
@ -22,7 +22,6 @@ package v1alpha1
|
|||
|
||||
import (
|
||||
api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||
sharedApi "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1"
|
||||
)
|
||||
|
||||
type GraphAnalyticsEngineStatus struct {
|
||||
|
@ -30,6 +29,9 @@ type GraphAnalyticsEngineStatus struct {
|
|||
// +doc/type: api.Conditions
|
||||
Conditions api.ConditionList `json:"conditions,omitempty"`
|
||||
|
||||
// Deployment keeps the ArangoDeployment reference
|
||||
Deployment *sharedApi.Object `json:"deployment,omitempty"`
|
||||
// ArangoDB keeps the information about local arangodb reference
|
||||
ArangoDB *GraphAnalyticsEngineStatusArangoDBRef `json:"arangoDB,omitempty"`
|
||||
|
||||
// Reconciliation keeps the information about reconciliation process. For internal use.
|
||||
Reconciliation *GraphAnalyticsEngineStatusReconciliation `json:"reconciliation,omitempty"`
|
||||
}
|
||||
|
|
32
pkg/apis/analytics/v1alpha1/gae_status_arangodb_ref.go
Normal file
32
pkg/apis/analytics/v1alpha1/gae_status_arangodb_ref.go
Normal file
|
@ -0,0 +1,32 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2023-2024 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import sharedApi "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1"
|
||||
|
||||
type GraphAnalyticsEngineStatusArangoDBRef struct {
|
||||
// Secret keeps the information about ArangoDB deployment
|
||||
Secret *sharedApi.Object `json:"secret,omitempty"`
|
||||
// TLS keeps information about TLS Secret rendered from ArangoDB deployment
|
||||
TLS *sharedApi.Object `json:"tls,omitempty"`
|
||||
// Deployment keeps the ArangoDeployment reference
|
||||
Deployment *sharedApi.Object `json:"deployment,omitempty"`
|
||||
}
|
|
@ -20,26 +20,23 @@
|
|||
|
||||
package v1alpha1
|
||||
|
||||
type ArangoMLExtensionSpecDeploymentTLS struct {
|
||||
// Enabled define if TLS Should be enabled. If is not set then default is taken from ArangoDeployment settings
|
||||
Enabled *bool `json:"enabled,omitempty"`
|
||||
import sharedApi "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1"
|
||||
|
||||
// AltNames define TLS AltNames used when TLS on the ArangoDB is enabled
|
||||
AltNames []string `json:"altNames,omitempty"`
|
||||
type GraphAnalyticsEngineStatusReconciliation struct {
|
||||
StatefulSet *sharedApi.Object `json:"statefulSet,omitempty"`
|
||||
Service *sharedApi.Object `json:"service,omitempty"`
|
||||
}
|
||||
|
||||
func (a *ArangoMLExtensionSpecDeploymentTLS) IsEnabled() bool {
|
||||
if a == nil || a.Enabled == nil {
|
||||
return true
|
||||
}
|
||||
|
||||
return *a.Enabled
|
||||
}
|
||||
|
||||
func (a *ArangoMLExtensionSpecDeploymentTLS) GetAltNames() []string {
|
||||
if a == nil || a.AltNames == nil {
|
||||
func (g *GraphAnalyticsEngineStatusReconciliation) GetStatefulSet() *sharedApi.Object {
|
||||
if g == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return a.AltNames
|
||||
return g.StatefulSet
|
||||
}
|
||||
|
||||
func (g *GraphAnalyticsEngineStatusReconciliation) GetService() *sharedApi.Object {
|
||||
if g == nil {
|
||||
return nil
|
||||
}
|
||||
return g.Service
|
||||
}
|
132
pkg/apis/analytics/v1alpha1/zz_generated.deepcopy.go
generated
132
pkg/apis/analytics/v1alpha1/zz_generated.deepcopy.go
generated
|
@ -26,8 +26,9 @@
|
|||
package v1alpha1
|
||||
|
||||
import (
|
||||
v1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||
sharedv1 "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1"
|
||||
deploymentv1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||
v1 "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
|
@ -100,6 +101,11 @@ func (in *GraphAnalyticsEngineSpec) DeepCopyInto(out *GraphAnalyticsEngineSpec)
|
|||
*out = new(string)
|
||||
**out = **in
|
||||
}
|
||||
if in.Deployment != nil {
|
||||
in, out := &in.Deployment, &out.Deployment
|
||||
*out = new(GraphAnalyticsEngineSpecDeployment)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -113,19 +119,76 @@ func (in *GraphAnalyticsEngineSpec) DeepCopy() *GraphAnalyticsEngineSpec {
|
|||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *GraphAnalyticsEngineSpecDeployment) DeepCopyInto(out *GraphAnalyticsEngineSpecDeployment) {
|
||||
*out = *in
|
||||
if in.Service != nil {
|
||||
in, out := &in.Service, &out.Service
|
||||
*out = new(GraphAnalyticsEngineSpecDeploymentService)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
if in.TLS != nil {
|
||||
in, out := &in.TLS, &out.TLS
|
||||
*out = new(v1.TLS)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
if in.Port != nil {
|
||||
in, out := &in.Port, &out.Port
|
||||
*out = new(int32)
|
||||
**out = **in
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GraphAnalyticsEngineSpecDeployment.
|
||||
func (in *GraphAnalyticsEngineSpecDeployment) DeepCopy() *GraphAnalyticsEngineSpecDeployment {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(GraphAnalyticsEngineSpecDeployment)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *GraphAnalyticsEngineSpecDeploymentService) DeepCopyInto(out *GraphAnalyticsEngineSpecDeploymentService) {
|
||||
*out = *in
|
||||
if in.Type != nil {
|
||||
in, out := &in.Type, &out.Type
|
||||
*out = new(corev1.ServiceType)
|
||||
**out = **in
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GraphAnalyticsEngineSpecDeploymentService.
|
||||
func (in *GraphAnalyticsEngineSpecDeploymentService) DeepCopy() *GraphAnalyticsEngineSpecDeploymentService {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(GraphAnalyticsEngineSpecDeploymentService)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *GraphAnalyticsEngineStatus) DeepCopyInto(out *GraphAnalyticsEngineStatus) {
|
||||
*out = *in
|
||||
if in.Conditions != nil {
|
||||
in, out := &in.Conditions, &out.Conditions
|
||||
*out = make(v1.ConditionList, len(*in))
|
||||
*out = make(deploymentv1.ConditionList, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
if in.Deployment != nil {
|
||||
in, out := &in.Deployment, &out.Deployment
|
||||
*out = new(sharedv1.Object)
|
||||
if in.ArangoDB != nil {
|
||||
in, out := &in.ArangoDB, &out.ArangoDB
|
||||
*out = new(GraphAnalyticsEngineStatusArangoDBRef)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
if in.Reconciliation != nil {
|
||||
in, out := &in.Reconciliation, &out.Reconciliation
|
||||
*out = new(GraphAnalyticsEngineStatusReconciliation)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
return
|
||||
|
@ -140,3 +203,60 @@ func (in *GraphAnalyticsEngineStatus) DeepCopy() *GraphAnalyticsEngineStatus {
|
|||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *GraphAnalyticsEngineStatusArangoDBRef) DeepCopyInto(out *GraphAnalyticsEngineStatusArangoDBRef) {
|
||||
*out = *in
|
||||
if in.Secret != nil {
|
||||
in, out := &in.Secret, &out.Secret
|
||||
*out = new(v1.Object)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
if in.TLS != nil {
|
||||
in, out := &in.TLS, &out.TLS
|
||||
*out = new(v1.Object)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
if in.Deployment != nil {
|
||||
in, out := &in.Deployment, &out.Deployment
|
||||
*out = new(v1.Object)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GraphAnalyticsEngineStatusArangoDBRef.
|
||||
func (in *GraphAnalyticsEngineStatusArangoDBRef) DeepCopy() *GraphAnalyticsEngineStatusArangoDBRef {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(GraphAnalyticsEngineStatusArangoDBRef)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *GraphAnalyticsEngineStatusReconciliation) DeepCopyInto(out *GraphAnalyticsEngineStatusReconciliation) {
|
||||
*out = *in
|
||||
if in.StatefulSet != nil {
|
||||
in, out := &in.StatefulSet, &out.StatefulSet
|
||||
*out = new(v1.Object)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
if in.Service != nil {
|
||||
in, out := &in.Service, &out.Service
|
||||
*out = new(v1.Object)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GraphAnalyticsEngineStatusReconciliation.
|
||||
func (in *GraphAnalyticsEngineStatusReconciliation) DeepCopy() *GraphAnalyticsEngineStatusReconciliation {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(GraphAnalyticsEngineStatusReconciliation)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ import (
|
|||
schedulerContainerApiv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/container"
|
||||
schedulerPodApiv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/pod"
|
||||
shared "github.com/arangodb/kube-arangodb/pkg/apis/shared"
|
||||
sharedApi "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/errors"
|
||||
)
|
||||
|
||||
|
@ -42,7 +43,7 @@ type ArangoMLExtensionSpecDeployment struct {
|
|||
Service *ArangoMLExtensionSpecDeploymentService `json:"service,omitempty"`
|
||||
|
||||
// TLS defined TLS Settings for extension
|
||||
TLS *ArangoMLExtensionSpecDeploymentTLS `json:"tls,omitempty"`
|
||||
TLS *sharedApi.TLS `json:"tls,omitempty"`
|
||||
|
||||
// Pod defines base template for pods
|
||||
*schedulerPodApiv1alpha1.Pod
|
||||
|
@ -102,7 +103,7 @@ func (s *ArangoMLExtensionSpecDeployment) GetService() *ArangoMLExtensionSpecDep
|
|||
return s.Service
|
||||
}
|
||||
|
||||
func (s *ArangoMLExtensionSpecDeployment) GetTLS() *ArangoMLExtensionSpecDeploymentTLS {
|
||||
func (s *ArangoMLExtensionSpecDeployment) GetTLS() *sharedApi.TLS {
|
||||
if s == nil {
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2023 ArangoDB GmbH, Cologne, Germany
|
||||
// Copyright 2023-2024 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
@ -32,6 +32,7 @@ type ArangoMLExtensionSpecDeploymentService struct {
|
|||
// +doc/enum: NodePort|service will be exposed on one port of every node, in addition to 'ClusterIP' type
|
||||
// +doc/enum: LoadBalancer|service will be exposed via an external load balancer (if the cloud provider supports it), in addition to 'NodePort' type
|
||||
// +doc/enum: ExternalName|service consists of only a reference to an external name that kubedns or equivalent will return as a CNAME record, with no exposing or proxying of any pods involved
|
||||
// +doc/enum: None|service is not created
|
||||
// +doc/default: ClusterIP
|
||||
// +doc/link: Kubernetes Documentation|https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
|
||||
Type *core.ServiceType `json:"type,omitempty"`
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2023 ArangoDB GmbH, Cologne, Germany
|
||||
// Copyright 2023-2024 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
@ -40,5 +40,5 @@ type ArangoMLExtensionStatus struct {
|
|||
ArangoDB *ArangoMLExtensionStatusArangoDBRef `json:"arangoDB,omitempty"`
|
||||
|
||||
// Reconciliation keeps the information about reconciliation process. For internal use.
|
||||
Reconciliation *ArangoMLExtensionStatusReconciliation `json:"reconciliation"`
|
||||
Reconciliation *ArangoMLExtensionStatusReconciliation `json:"reconciliation,omitempty"`
|
||||
}
|
||||
|
|
28
pkg/apis/ml/v1alpha1/zz_generated.deepcopy.go
generated
28
pkg/apis/ml/v1alpha1/zz_generated.deepcopy.go
generated
|
@ -382,7 +382,7 @@ func (in *ArangoMLExtensionSpecDeployment) DeepCopyInto(out *ArangoMLExtensionSp
|
|||
}
|
||||
if in.TLS != nil {
|
||||
in, out := &in.TLS, &out.TLS
|
||||
*out = new(ArangoMLExtensionSpecDeploymentTLS)
|
||||
*out = new(sharedv1.TLS)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
if in.Pod != nil {
|
||||
|
@ -439,32 +439,6 @@ func (in *ArangoMLExtensionSpecDeploymentService) DeepCopy() *ArangoMLExtensionS
|
|||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ArangoMLExtensionSpecDeploymentTLS) DeepCopyInto(out *ArangoMLExtensionSpecDeploymentTLS) {
|
||||
*out = *in
|
||||
if in.Enabled != nil {
|
||||
in, out := &in.Enabled, &out.Enabled
|
||||
*out = new(bool)
|
||||
**out = **in
|
||||
}
|
||||
if in.AltNames != nil {
|
||||
in, out := &in.AltNames, &out.AltNames
|
||||
*out = make([]string, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoMLExtensionSpecDeploymentTLS.
|
||||
func (in *ArangoMLExtensionSpecDeploymentTLS) DeepCopy() *ArangoMLExtensionSpecDeploymentTLS {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ArangoMLExtensionSpecDeploymentTLS)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ArangoMLExtensionSpecMetadataService) DeepCopyInto(out *ArangoMLExtensionSpecMetadataService) {
|
||||
*out = *in
|
||||
|
|
|
@ -26,13 +26,13 @@ const (
|
|||
ReadyCondition api.ConditionType = "Ready"
|
||||
SpecValidCondition api.ConditionType = "SpecValid"
|
||||
ExtensionFoundCondition api.ConditionType = "ExtensionFound"
|
||||
ExtensionStorageFoundCondition api.ConditionType = "StorageFound"
|
||||
ExtensionDeploymentFoundCondition api.ConditionType = "DeploymentFound"
|
||||
ExtensionBootstrapCompletedCondition api.ConditionType = "BootstrapCompleted"
|
||||
ExtensionMetadataServiceValidCondition api.ConditionType = "MetadataServiceValid"
|
||||
ExtensionServiceAccountReadyCondition api.ConditionType = "ServiceAccountReady"
|
||||
ExtensionStatefulSetReadyCondition api.ConditionType = "ExtensionDeploymentReady"
|
||||
ExtensionTLSEnabledCondition api.ConditionType = "TLSEnabled"
|
||||
StorageFoundCondition api.ConditionType = "StorageFound"
|
||||
DeploymentFoundCondition api.ConditionType = "DeploymentFound"
|
||||
BootstrapCompletedCondition api.ConditionType = "BootstrapCompleted"
|
||||
MetadataServiceValidCondition api.ConditionType = "MetadataServiceValid"
|
||||
ServiceAccountReadyCondition api.ConditionType = "ServiceAccountReady"
|
||||
StatefulSetReadyCondition api.ConditionType = "StatefulSetReady"
|
||||
TLSEnabledCondition api.ConditionType = "TLSEnabled"
|
||||
LicenseValidCondition api.ConditionType = "LicenseValid"
|
||||
CronJobSyncedCondition api.ConditionType = "CronJobSynced"
|
||||
BatchJobSyncedCondition api.ConditionType = "BatchJobSynced"
|
||||
|
|
|
@ -24,6 +24,7 @@ import (
|
|||
schedulerContainerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1/container"
|
||||
schedulerPodApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1/pod"
|
||||
shared "github.com/arangodb/kube-arangodb/pkg/apis/shared"
|
||||
sharedApi "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/errors"
|
||||
)
|
||||
|
||||
|
@ -42,7 +43,7 @@ type ArangoMLExtensionSpecDeployment struct {
|
|||
Service *ArangoMLExtensionSpecDeploymentService `json:"service,omitempty"`
|
||||
|
||||
// TLS defined TLS Settings for extension
|
||||
TLS *ArangoMLExtensionSpecDeploymentTLS `json:"tls,omitempty"`
|
||||
TLS *sharedApi.TLS `json:"tls,omitempty"`
|
||||
|
||||
// Pod defines base template for pods
|
||||
*schedulerPodApi.Pod
|
||||
|
@ -102,7 +103,7 @@ func (s *ArangoMLExtensionSpecDeployment) GetService() *ArangoMLExtensionSpecDep
|
|||
return s.Service
|
||||
}
|
||||
|
||||
func (s *ArangoMLExtensionSpecDeployment) GetTLS() *ArangoMLExtensionSpecDeploymentTLS {
|
||||
func (s *ArangoMLExtensionSpecDeployment) GetTLS() *sharedApi.TLS {
|
||||
if s == nil {
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -32,6 +32,7 @@ type ArangoMLExtensionSpecDeploymentService struct {
|
|||
// +doc/enum: NodePort|service will be exposed on one port of every node, in addition to 'ClusterIP' type
|
||||
// +doc/enum: LoadBalancer|service will be exposed via an external load balancer (if the cloud provider supports it), in addition to 'NodePort' type
|
||||
// +doc/enum: ExternalName|service consists of only a reference to an external name that kubedns or equivalent will return as a CNAME record, with no exposing or proxying of any pods involved
|
||||
// +doc/enum: None|service is not created
|
||||
// +doc/default: ClusterIP
|
||||
// +doc/link: Kubernetes Documentation|https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
|
||||
Type *core.ServiceType `json:"type,omitempty"`
|
||||
|
|
|
@ -40,5 +40,5 @@ type ArangoMLExtensionStatus struct {
|
|||
ArangoDB *ArangoMLExtensionStatusArangoDBRef `json:"arangoDB,omitempty"`
|
||||
|
||||
// Reconciliation keeps the information about reconciliation process. For internal use.
|
||||
Reconciliation *ArangoMLExtensionStatusReconciliation `json:"reconciliation"`
|
||||
Reconciliation *ArangoMLExtensionStatusReconciliation `json:"reconciliation,omitempty"`
|
||||
}
|
||||
|
|
28
pkg/apis/ml/v1beta1/zz_generated.deepcopy.go
generated
28
pkg/apis/ml/v1beta1/zz_generated.deepcopy.go
generated
|
@ -151,7 +151,7 @@ func (in *ArangoMLExtensionSpecDeployment) DeepCopyInto(out *ArangoMLExtensionSp
|
|||
}
|
||||
if in.TLS != nil {
|
||||
in, out := &in.TLS, &out.TLS
|
||||
*out = new(ArangoMLExtensionSpecDeploymentTLS)
|
||||
*out = new(v1.TLS)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
if in.Pod != nil {
|
||||
|
@ -208,32 +208,6 @@ func (in *ArangoMLExtensionSpecDeploymentService) DeepCopy() *ArangoMLExtensionS
|
|||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ArangoMLExtensionSpecDeploymentTLS) DeepCopyInto(out *ArangoMLExtensionSpecDeploymentTLS) {
|
||||
*out = *in
|
||||
if in.Enabled != nil {
|
||||
in, out := &in.Enabled, &out.Enabled
|
||||
*out = new(bool)
|
||||
**out = **in
|
||||
}
|
||||
if in.AltNames != nil {
|
||||
in, out := &in.AltNames, &out.AltNames
|
||||
*out = make([]string, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoMLExtensionSpecDeploymentTLS.
|
||||
func (in *ArangoMLExtensionSpecDeploymentTLS) DeepCopy() *ArangoMLExtensionSpecDeploymentTLS {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ArangoMLExtensionSpecDeploymentTLS)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ArangoMLExtensionSpecMetadataService) DeepCopyInto(out *ArangoMLExtensionSpecMetadataService) {
|
||||
*out = *in
|
||||
|
|
|
@ -18,9 +18,9 @@
|
|||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package v1beta1
|
||||
package v1
|
||||
|
||||
type ArangoMLExtensionSpecDeploymentTLS struct {
|
||||
type TLS struct {
|
||||
// Enabled define if TLS Should be enabled. If is not set then default is taken from ArangoDeployment settings
|
||||
Enabled *bool `json:"enabled,omitempty"`
|
||||
|
||||
|
@ -28,7 +28,7 @@ type ArangoMLExtensionSpecDeploymentTLS struct {
|
|||
AltNames []string `json:"altNames,omitempty"`
|
||||
}
|
||||
|
||||
func (a *ArangoMLExtensionSpecDeploymentTLS) IsEnabled() bool {
|
||||
func (a *TLS) IsEnabled() bool {
|
||||
if a == nil || a.Enabled == nil {
|
||||
return true
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ func (a *ArangoMLExtensionSpecDeploymentTLS) IsEnabled() bool {
|
|||
return *a.Enabled
|
||||
}
|
||||
|
||||
func (a *ArangoMLExtensionSpecDeploymentTLS) GetAltNames() []string {
|
||||
func (a *TLS) GetAltNames() []string {
|
||||
if a == nil || a.AltNames == nil {
|
||||
return nil
|
||||
}
|
26
pkg/apis/shared/v1/zz_generated.deepcopy.go
generated
26
pkg/apis/shared/v1/zz_generated.deepcopy.go
generated
|
@ -136,3 +136,29 @@ func (in *ServiceAccountRole) DeepCopy() *ServiceAccountRole {
|
|||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *TLS) DeepCopyInto(out *TLS) {
|
||||
*out = *in
|
||||
if in.Enabled != nil {
|
||||
in, out := &in.Enabled, &out.Enabled
|
||||
*out = new(bool)
|
||||
**out = **in
|
||||
}
|
||||
if in.AltNames != nil {
|
||||
in, out := &in.AltNames, &out.AltNames
|
||||
*out = make([]string, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLS.
|
||||
func (in *TLS) DeepCopy() *TLS {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(TLS)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
|
|
@ -35,6 +35,10 @@ var (
|
|||
resourceNameRE = regexp.MustCompile(`^([0-9\-\.a-z])+$`)
|
||||
)
|
||||
|
||||
const (
|
||||
ServiceTypeNone core.ServiceType = "None"
|
||||
)
|
||||
|
||||
// ValidateResourceName validates a kubernetes resource name.
|
||||
// If not valid, an error is returned.
|
||||
// See https://kubernetes.io/docs/concepts/overview/working-with-objects/names/
|
||||
|
@ -146,7 +150,8 @@ func ValidateServiceType(st core.ServiceType) error {
|
|||
case core.ServiceTypeClusterIP,
|
||||
core.ServiceTypeNodePort,
|
||||
core.ServiceTypeLoadBalancer,
|
||||
core.ServiceTypeExternalName:
|
||||
core.ServiceTypeExternalName,
|
||||
ServiceTypeNone:
|
||||
return nil
|
||||
}
|
||||
return errors.Errorf("Unsupported service type %s", st)
|
||||
|
|
|
@ -3,6 +3,39 @@ v1alpha1:
|
|||
properties:
|
||||
spec:
|
||||
properties:
|
||||
deployment:
|
||||
description: Deployment specifies how the GAE will be deployed into cluster
|
||||
properties:
|
||||
port:
|
||||
description: Port defines on which port the container will be listening for connections
|
||||
format: int32
|
||||
type: integer
|
||||
service:
|
||||
description: Service defines how components will be exposed
|
||||
properties:
|
||||
type:
|
||||
description: Type determines how the Service is exposed
|
||||
enum:
|
||||
- ClusterIP
|
||||
- NodePort
|
||||
- LoadBalancer
|
||||
- ExternalName
|
||||
- None
|
||||
type: string
|
||||
type: object
|
||||
tls:
|
||||
description: TLS defined TLS Settings
|
||||
properties:
|
||||
altNames:
|
||||
description: AltNames define TLS AltNames used when TLS on the ArangoDB is enabled
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
enabled:
|
||||
description: Enabled define if TLS Should be enabled. If is not set then default is taken from ArangoDeployment settings
|
||||
type: boolean
|
||||
type: object
|
||||
type: object
|
||||
deploymentName:
|
||||
description: DeploymentName define deployment name used in the object. Immutable
|
||||
type: string
|
||||
|
|
|
@ -856,6 +856,7 @@ v1alpha1:
|
|||
- NodePort
|
||||
- LoadBalancer
|
||||
- ExternalName
|
||||
- None
|
||||
type: string
|
||||
type: object
|
||||
serviceAccountName:
|
||||
|
@ -13944,10 +13945,12 @@ v1beta1:
|
|||
tls:
|
||||
properties:
|
||||
altNames:
|
||||
description: AltNames define TLS AltNames used when TLS on the ArangoDB is enabled
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
enabled:
|
||||
description: Enabled define if TLS Should be enabled. If is not set then default is taken from ArangoDeployment settings
|
||||
type: boolean
|
||||
type: object
|
||||
tolerations:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany
|
||||
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
@ -52,10 +52,14 @@ const (
|
|||
LabelValueArangoActive = "true"
|
||||
// LabelKeyArangoMLStatefulSet is the key of the label used to define k8s StatefulSet for ML Extension
|
||||
LabelKeyArangoMLStatefulSet = "ml.arangodb.com/statefulset"
|
||||
// LabelKeyAnalyticsGAEStatefulSet is the key of the label used to define k8s StatefulSet for Analytics GAE
|
||||
LabelKeyAnalyticsGAEStatefulSet = "analytics.arangodb.com/statefulset"
|
||||
// AppName is the value for the "app" label
|
||||
AppName = "arangodb"
|
||||
// AppArangoML is the value for the "app" label
|
||||
AppArangoML = "arangoml"
|
||||
// AppAnalytics is the value for the "app" label
|
||||
AppAnalytics = "analytics"
|
||||
)
|
||||
|
||||
// AddOwnerRefToObject adds given owner reference to given object
|
||||
|
|
Loading…
Reference in a new issue