Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 1 addition & 19 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -145,29 +145,11 @@ jobs:
- name: Lint base chart
run: helm lint manifests/charts/base

- name: Lint admin chart
run: helm lint manifests/charts/admin

- name: Lint dubbo-discovery chart
run: helm lint manifests/charts/dubbo-control/dubbo-discovery

- name: Lint nacos chart
run: helm lint manifests/charts/dubbo-control/register-discovery/nacos

- name: Lint zookeeper chart
run: helm lint manifests/charts/dubbo-control/register-discovery/zookeeper

- name: Validate base chart template rendering
run: helm template test-release manifests/charts/base --debug

- name: Validate admin chart template rendering
run: helm template test-release manifests/charts/admin --debug

- name: Validate dubbo-discovery chart template rendering
run: helm template test-release manifests/charts/dubbo-control/dubbo-discovery --debug

- name: Validate nacos chart template rendering
run: helm template test-release manifests/charts/dubbo-control/register-discovery/nacos --debug

- name: Validate zookeeper chart template rendering
run: helm template test-release manifests/charts/dubbo-control/register-discovery/zookeeper --debug
run: helm template test-release manifests/charts/dubbo-control/dubbo-discovery --debug
10 changes: 0 additions & 10 deletions manifests/profiles/default.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,22 +22,12 @@ spec:
components:
base:
enabled: true
register:
nacos:
enabled: false
zookeeper:
enabled: false
discovery:
dubbo:
enabled: true
dashboard:
admin:
enabled: false
values:
global: {}
base: {}
nacos: {}
zookeeper: {}



14 changes: 1 addition & 13 deletions manifests/profiles/demo.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,5 @@ spec:
components:
base:
enabled: true
register:
nacos:
enabled: false
zookeeper:
enabled: true
dashboard:
admin:
enabled: true
values:
profile: demo
nacos:
enabled: false
zookeeper:
enabled: true
profile: demo
10 changes: 2 additions & 8 deletions manifests/profiles/empty.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,6 @@ spec:
components:
base:
enabled: false
register:
nacos:
discovery:
dubbo:
enabled: false
zookeeper:
enabled: false
dashboard:
admin:
enabled: false

32 changes: 2 additions & 30 deletions operator/pkg/apis/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,6 @@ type DubboOperatorSpec struct {
// Path or name for the profile.
// default profile is used if this field is unset.
Profile string `json:"profile,omitempty"`
// For admin dashboard.
Dashboard *DubboDashboardSpec `json:"dashboard,omitempty"`
// enablement and component-specific settings that are not internal to the component.
Components *DubboComponentSpec `json:"components,omitempty"`
// Overrides for default `values.yaml`. This is a validated pass-through to Helm templates.
Expand All @@ -54,23 +52,10 @@ type DubboOperatorSpec struct {
type DubboComponentSpec struct {
// Used for Dubbo resources.
Base *BaseComponentSpec `json:"base,omitempty"`
// Using Zookeeper and Nacos as the registration plane.
Register *RegisterSpec `json:"register,omitempty"`
// Using Dubbo as the control plane.
Discovery *DiscoverySpec `json:"discovery,omitempty"`
}

type DubboDashboardSpec struct {
Admin *DashboardComponentSpec `json:"admin,omitempty"`
}

type RegisterSpec struct {
// Nacos component.
Nacos *RegisterComponentSpec `json:"nacos,omitempty"`
// Zookeeper component.
Zookeeper *RegisterComponentSpec `json:"zookeeper,omitempty"`
}

type DiscoverySpec struct {
// Dubbo component
Dubbo *DiscoveryComponentSpec `json:"dubbo,omitempty"`
Expand All @@ -81,21 +66,12 @@ type BaseComponentSpec struct {
Enabled *BoolValue `json:"enabled,omitempty"`
}

type DashboardComponentSpec struct {
// Selects whether this component is installed.
Enabled *BoolValue `json:"enabled,omitempty"`
}

type RegisterComponentSpec struct {
type DiscoveryComponentSpec struct {
// Selects whether this component is installed.
Enabled *BoolValue `json:"enabled,omitempty"`
// Namespace for the component.
Namespace string `json:"namespace,omitempty"`
// Raw is the raw inputs. This allows distinguishing unset vs zero-values for KubernetesResources
Raw map[string]any `json:"-"`
}

type DiscoveryComponentSpec struct {
type DefaultCompSpec struct {
// Selects whether this component is installed.
Enabled *BoolValue `json:"enabled,omitempty"`
// Namespace for the component.
Expand All @@ -104,10 +80,6 @@ type DiscoveryComponentSpec struct {
Raw map[string]any `json:"-"`
}

type DefaultCompSpec struct {
RegisterComponentSpec
}

type BoolValue struct {
bool
}
Expand Down
100 changes: 7 additions & 93 deletions operator/pkg/component/component.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,8 @@ import (
type Name string

const (
BaseComponentName Name = "Base"
NacosRegisterComponentName Name = "Nacos"
ZookeeperRegisterComponentName Name = "Zookeeper"
DubboDiscoveryComponentName Name = "Dubbo-Discovery"
BaseComponentName Name = "Base"
DubboDiscoveryComponentName Name = "Dubbod"
)

type Component struct {
Expand Down Expand Up @@ -59,15 +57,6 @@ var AllComponents = []Component{
HelmSubDir: "base",
HelmValuesTreeRoot: "global",
},
{
UserFacingName: AdminComponentName,
SpecName: "admin",
ResourceType: "Deployment",
ContainerName: "dashboard",
Default: true,
HelmSubDir: "admin",
HelmValuesTreeRoot: "admin",
},
{
UserFacingName: DubboDiscoveryComponentName,
SpecName: "dubbo",
Expand All @@ -76,65 +65,30 @@ var AllComponents = []Component{
ContainerName: "dubbo-discovery",
Default: true,
HelmSubDir: "dubbo-control/dubbo-discovery",
HelmValuesTreeRoot: "dubbo-discovery",
},
{
UserFacingName: NacosRegisterComponentName,
SpecName: "nacos",
ResourceType: "StatefulSet",
ResourceName: "register",
ContainerName: "register-discovery",
Default: true,
HelmSubDir: "dubbo-control/register-discovery/nacos",
HelmValuesTreeRoot: "nacos",
},
{
UserFacingName: ZookeeperRegisterComponentName,
SpecName: "zookeeper",
ResourceType: "StatefulSet",
ResourceName: "register",
ContainerName: "register-discovery",
Default: true,
HelmSubDir: "dubbo-control/register-discovery/zookeeper",
HelmValuesTreeRoot: "zookeeper",
HelmValuesTreeRoot: "global",
},
}

var (
userFacingCompNames = map[Name]string{
BaseComponentName: "Dubbo Resource Core",
DubboDiscoveryComponentName: "Dubbo Control Plane",
NacosRegisterComponentName: "Nacos Register Plane",
ZookeeperRegisterComponentName: "Zookeeper Register Plane",
AdminComponentName: "Admin Dashboard",
BaseComponentName: "Dubbo Resource Core",
DubboDiscoveryComponentName: "Dubbo Control Plane",
}

Icons = map[Name]string{
BaseComponentName: "🔮",
NacosRegisterComponentName: "🔨",
ZookeeperRegisterComponentName: "🔧️",
AdminComponentName: "🔭",
DubboDiscoveryComponentName: "🪐",
BaseComponentName: "🔮",
DubboDiscoveryComponentName: "🪐",
}
)

func (c Component) Get(merged values.Map) ([]apis.DefaultCompSpec, error) {
defaultNamespace := merged.GetPathString("metadata.namespace")
var defaultResp []apis.DefaultCompSpec
def := c.Default
if def {
defaultResp = []apis.DefaultCompSpec{{
RegisterComponentSpec: apis.RegisterComponentSpec{
Namespace: defaultNamespace,
}},
}
}
buildSpec := func(m values.Map) (apis.DefaultCompSpec, error) {
spec, err := values.ConvertMap[apis.DefaultCompSpec](m)
if err != nil {
return apis.DefaultCompSpec{}, fmt.Errorf("fail to convert %v: %v", c.SpecName, err)
}

if spec.Namespace == "" {
spec.Namespace = defaultNamespace
}
Expand All @@ -144,46 +98,6 @@ func (c Component) Get(merged values.Map) ([]apis.DefaultCompSpec, error) {
spec.Raw = m
return spec, nil
}
// List of components
if c.ContainerName == "dashboard" {
s, ok := merged.GetPathMap("spec.dashboard." + c.SpecName)
if !ok {
return defaultResp, nil
}
spec, err := buildSpec(s)
if err != nil {
return nil, err
}
if !(spec.Enabled.GetValueOrTrue()) {
return nil, nil
}
}
if c.ContainerName == "register-discovery" {
s, ok := merged.GetPathMap("spec.components.register." + c.SpecName)
if !ok {
return defaultResp, nil
}
spec, err := buildSpec(s)
if err != nil {
return nil, err
}
if !(spec.Enabled.GetValueOrTrue()) {
return nil, nil
}
}
if c.ContainerName == "dubbo-discovery" {
s, ok := merged.GetPathMap("spec.components.discovery." + c.SpecName)
if !ok {
return defaultResp, nil
}
spec, err := buildSpec(s)
if err != nil {
return nil, err
}
if !(spec.Enabled.GetValueOrTrue()) {
return nil, nil
}
}
// Single component
s, ok := merged.GetPathMap("spec.components." + c.SpecName)
if !ok {
Expand Down
9 changes: 1 addition & 8 deletions operator/pkg/install/installer.go
Original file line number Diff line number Diff line change
Expand Up @@ -253,17 +253,10 @@ func (i Installer) prune(manifests []manifest.ManifestSet) error {
}

var componentDependencies = map[component.Name][]component.Name{
component.DubboDiscoveryComponentName: {
component.AdminComponentName,
},
component.NacosRegisterComponentName: {},
component.ZookeeperRegisterComponentName: {},
component.DubboDiscoveryComponentName: {},
component.BaseComponentName: {
component.DubboDiscoveryComponentName,
component.NacosRegisterComponentName,
component.ZookeeperRegisterComponentName,
},
component.AdminComponentName: {},
}

func dependenciesChannels() map[component.Name]chan struct{} {
Expand Down
Loading