Skip to content

Commit b026d0c

Browse files
authored
feat: Operator add feast ui deployment (#4930)
* feat: Operator add feast ui deployment Signed-off-by: Abdul Hameed <[email protected]> * adding tls config for ui Signed-off-by: Abdul Hameed <[email protected]> --------- Signed-off-by: Abdul Hameed <[email protected]>
1 parent 1d086be commit b026d0c

31 files changed

+3570
-2056
lines changed

infra/feast-operator/api/v1alpha1/featurestore_types.go

+15
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ const (
3333
OfflineStoreReadyType = "OfflineStore"
3434
OnlineStoreReadyType = "OnlineStore"
3535
RegistryReadyType = "Registry"
36+
UIReadyType = "UI"
3637
ReadyType = "FeatureStore"
3738
AuthorizationReadyType = "Authorization"
3839

@@ -42,6 +43,7 @@ const (
4243
OfflineStoreFailedReason = "OfflineStoreDeploymentFailed"
4344
OnlineStoreFailedReason = "OnlineStoreDeploymentFailed"
4445
RegistryFailedReason = "RegistryDeploymentFailed"
46+
UIFailedReason = "UIDeploymentFailed"
4547
ClientFailedReason = "ClientDeploymentFailed"
4648
KubernetesAuthzFailedReason = "KubernetesAuthorizationDeploymentFailed"
4749

@@ -50,6 +52,7 @@ const (
5052
OfflineStoreReadyMessage = "Offline Store installation complete"
5153
OnlineStoreReadyMessage = "Online Store installation complete"
5254
RegistryReadyMessage = "Registry installation complete"
55+
UIReadyMessage = "UI installation complete"
5356
ClientReadyMessage = "Client installation complete"
5457
KubernetesAuthzReadyMessage = "Kubernetes authorization installation complete"
5558

@@ -71,6 +74,7 @@ type FeatureStoreServices struct {
7174
OfflineStore *OfflineStore `json:"offlineStore,omitempty"`
7275
OnlineStore *OnlineStore `json:"onlineStore,omitempty"`
7376
Registry *Registry `json:"registry,omitempty"`
77+
UI *UIService `json:"ui,omitempty"`
7478
DeploymentStrategy *appsv1.DeploymentStrategy `json:"deploymentStrategy,omitempty"`
7579
// Disable the 'feast repo initialization' initContainer
7680
DisableInitContainers bool `json:"disableInitContainers,omitempty"`
@@ -278,6 +282,16 @@ type RemoteRegistryConfig struct {
278282
TLS *TlsRemoteRegistryConfigs `json:"tls,omitempty"`
279283
}
280284

285+
// UIService configures the deployed Feast UI service
286+
type UIService struct {
287+
ServiceConfigs `json:",inline"`
288+
TLS *TlsConfigs `json:"tls,omitempty"`
289+
// LogLevel sets the logging level for the UI service
290+
// Allowed values: "debug", "info", "warning", "error", "critical".
291+
// +kubebuilder:validation:Enum=debug;info;warning;error;critical
292+
LogLevel string `json:"logLevel,omitempty"`
293+
}
294+
281295
// FeatureStoreRef defines which existing FeatureStore's registry should be used
282296
type FeatureStoreRef struct {
283297
// Name of the FeatureStore
@@ -386,6 +400,7 @@ type ServiceHostnames struct {
386400
OfflineStore string `json:"offlineStore,omitempty"`
387401
OnlineStore string `json:"onlineStore,omitempty"`
388402
Registry string `json:"registry,omitempty"`
403+
UI string `json:"ui,omitempty"`
389404
}
390405

391406
// +kubebuilder:object:root=true

infra/feast-operator/api/v1alpha1/zz_generated.deepcopy.go

+26
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

infra/feast-operator/cmd/main.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ import (
3838
"sigs.k8s.io/controller-runtime/pkg/webhook"
3939

4040
feastdevv1alpha1 "github.com/feast-dev/feast/infra/feast-operator/api/v1alpha1"
41+
routev1 "github.com/openshift/api/route/v1"
42+
4143
"github.com/feast-dev/feast/infra/feast-operator/internal/controller"
4244
"github.com/feast-dev/feast/infra/feast-operator/internal/controller/services"
4345
// +kubebuilder:scaffold:imports
@@ -50,7 +52,7 @@ var (
5052

5153
func init() {
5254
utilruntime.Must(clientgoscheme.AddToScheme(scheme))
53-
55+
utilruntime.Must(routev1.AddToScheme(scheme))
5456
utilruntime.Must(feastdevv1alpha1.AddToScheme(scheme))
5557
// +kubebuilder:scaffold:scheme
5658
}

infra/feast-operator/config/crd/bases/feast.dev_featurestores.yaml

+1,597-1,005
Large diffs are not rendered by default.

infra/feast-operator/config/rbac/role.yaml

+11
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,14 @@ rules:
7474
- list
7575
- update
7676
- watch
77+
- apiGroups:
78+
- route.openshift.io
79+
resources:
80+
- routes
81+
verbs:
82+
- create
83+
- delete
84+
- get
85+
- list
86+
- update
87+
- watch

infra/feast-operator/config/samples/v1alpha1_featurestore_all_services_default.yaml

+5-6
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@ metadata:
55
spec:
66
feastProject: my_project
77
services:
8-
onlineStore:
9-
image: 'feastdev/feature-server:0.40.0'
10-
offlineStore:
11-
image: 'feastdev/feature-server:0.40.0'
8+
onlineStore: {}
9+
offlineStore: {}
10+
ui: {}
1211
registry:
13-
local:
14-
image: 'feastdev/feature-server:0.40.0'
12+
local: {}
13+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# The "tls.disable = true" setting will disable the creation of TLS for the Feast services in an OpenShift environment.
2+
apiVersion: feast.dev/v1alpha1
3+
kind: FeatureStore
4+
metadata:
5+
name: sample-services-tls-disable
6+
spec:
7+
feastProject: my_project
8+
services:
9+
onlineStore:
10+
tls:
11+
disable : true
12+
offlineStore:
13+
tls:
14+
disable: true
15+
ui:
16+
tls:
17+
disable: true
18+
registry:
19+
local:
20+
tls:
21+
disable: true

infra/feast-operator/config/samples/v1alpha1_featurestore_services_loglevel.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ spec:
99
logLevel: debug
1010
offlineStore:
1111
logLevel: debug
12+
ui:
13+
logLevel: debug
1214
registry:
1315
local:
1416
logLevel: info

0 commit comments

Comments
 (0)