Skip to content

Commit

Permalink
Allow customize default install namespace from flag (#195)
Browse files Browse the repository at this point in the history
Signed-off-by: Jian Qiu <[email protected]>
  • Loading branch information
qiujian16 authored May 20, 2024
1 parent 7ca42b7 commit 261e725
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 15 deletions.
7 changes: 0 additions & 7 deletions charts/cluster-proxy/templates/addondeploymentconfig.yaml

This file was deleted.

3 changes: 0 additions & 3 deletions charts/cluster-proxy/templates/clustermanagementaddon.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@ spec:
name: cluster-proxy
- group: addon.open-cluster-management.io
resource: addondeploymentconfigs
defaultConfig:
name: cluster-proxy-agent-deploy-config
namespace: {{ .Release.Namespace }}
{{- if .Values.installByPlacement.placementName }}
installStrategy:
type: Placements
Expand Down
2 changes: 2 additions & 0 deletions cmd/addon-manager/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,8 @@ func main() {
"Configure the install strategy of agent on managed clusters. "+
"Enabling this will automatically install agent on all managed cluster.")
flag.BoolVar(&enableKubeApiProxy, "enable-kube-api-proxy", true, "Enable proxy to agent kube-apiserver")
flag.StringVar(&config.DefaultAddonInstallNamespace, "agent-install-namespace", config.DefaultAddonInstallNamespace,
"The default namespace to install the addon agents.")

flag.Parse()

Expand Down
2 changes: 1 addition & 1 deletion pkg/config/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import (
// Can be override via "--agent-image-name" on the hub addon manager.
var AgentImageName string

const DefaultAddonInstallNamespace = "open-cluster-management-cluster-proxy"
var DefaultAddonInstallNamespace = "open-cluster-management-cluster-proxy"

func GetParsedAgentImage(defaultAgentImageName string) (string, string, string, error) {
if len(AgentImageName) == 0 {
Expand Down
19 changes: 16 additions & 3 deletions pkg/proxyagent/agent/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,13 +145,26 @@ func NewAgentAddon(
toAgentAddOnChartValues(caCertData),
),
).
WithAgentInstallNamespace(utils.AgentInstallNamespaceFromDeploymentConfigFunc(
utils.NewAddOnDeploymentConfigGetter(addonClient),
))
WithAgentInstallNamespace(agentInstallNamespaceFunc(utils.NewAddOnDeploymentConfigGetter(addonClient)))

return agentFactory.BuildHelmAgentAddon()
}

// agentInstallNamespaceFunc returns namespace from AddonDeploymentConfig, and config.DefaultAddonInstallNamespace if
// AddonDeploymentConfig is not set.
func agentInstallNamespaceFunc(getter utils.AddOnDeploymentConfigGetter) func(*addonv1alpha1.ManagedClusterAddOn) (string, error) {
return func(addon *addonv1alpha1.ManagedClusterAddOn) (string, error) {
ns, err := utils.AgentInstallNamespaceFromDeploymentConfigFunc(getter)(addon)
if err != nil {
return config.DefaultAddonInstallNamespace, err
}
if len(ns) == 0 {
return config.DefaultAddonInstallNamespace, nil
}
return ns, nil
}
}

func GetClusterProxyValueFunc(
runtimeClient client.Client,
nativeClient kubernetes.Interface,
Expand Down
28 changes: 27 additions & 1 deletion pkg/proxyagent/agent/agent_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ func TestAgentAddonRegistrationOption(t *testing.T) {
}

func TestNewAgentAddon(t *testing.T) {
addOnName := "addon"
addOnName := "open-cluster-management-cluster-proxy"
clusterName := "cluster"

managedProxyConfigName := "cluster-proxy"
Expand Down Expand Up @@ -733,6 +733,32 @@ func TestNewAgentAddon(t *testing.T) {
assert.Equal(t, 1, count)
},
},
{
name: "with addon deployment config including install namespace",
cluster: newCluster(clusterName, true),
addon: func() *addonv1alpha1.ManagedClusterAddOn {
addOn := newAddOn(addOnName, clusterName)
addOn.Status.ConfigReferences = []addonv1alpha1.ConfigReference{
newManagedProxyConfigReference(managedProxyConfigName),
newAddOndDeploymentConfigReference(addOndDeployConfigName, clusterName),
}
return addOn
}(),
managedProxyConfigs: []runtimeclient.Object{newManagedProxyConfig(managedProxyConfigName, proxyv1alpha1.EntryPointTypePortForward)},
addOndDeploymentConfigs: []runtime.Object{
func() *addonv1alpha1.AddOnDeploymentConfig {
config := newAddOnDeploymentConfig(addOndDeployConfigName, clusterName)
config.Spec.AgentInstallNamespace = "addon-test"
return config
}()},
v1CSRSupported: true,
enableKubeApiProxy: true,
verifyManifests: func(t *testing.T, manifests []runtime.Object) {
assert.Len(t, manifests, len(expectedManifestNames))
expectedManifestNames[5] = "addon-test"
assert.ElementsMatch(t, expectedManifestNames, manifestNames(manifests))
},
},
}

for _, c := range cases {
Expand Down

0 comments on commit 261e725

Please sign in to comment.