Skip to content

Commit

Permalink
Add HPA support for DeploymentConfig
Browse files Browse the repository at this point in the history
This commit makes the HorizontalPodAutoscaler controller
use the DelegatingScaleNamespacer so that it can reach both
Kubernetes objects with Scale subresources, as well as
Origin DeploymentConfigs.
  • Loading branch information
DirectXMan12 committed Nov 2, 2015
1 parent 75075af commit d0860f3
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 5 deletions.
40 changes: 39 additions & 1 deletion pkg/cmd/server/bootstrappolicy/policy.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ func GetBootstrapClusterRoles() []authorizationapi.ClusterRole {
{
Verbs: sets.NewString(authorizationapi.VerbAll),
Resources: sets.NewString(authorizationapi.ResourceAll),
APIGroups: []string{authorizationapi.APIGroupAll},
},
{
Verbs: sets.NewString(authorizationapi.VerbAll),
Expand Down Expand Up @@ -396,7 +397,44 @@ func GetBootstrapClusterRoles() []authorizationapi.ClusterRole {
ObjectMeta: kapi.ObjectMeta{
Name: HPAControllerRoleName,
},
Rules: []authorizationapi.PolicyRule{},
Rules: []authorizationapi.PolicyRule{
// HPA Controller
{
APIGroups: []string{authorizationapi.APIGroupExtensions},
Verbs: sets.NewString("get", "list"),
Resources: sets.NewString("horizontalpodautoscalers"),
},
{
APIGroups: []string{authorizationapi.APIGroupExtensions},
Verbs: sets.NewString("update"),
Resources: sets.NewString("horizontalpodautoscalers/status"),
},
{
APIGroups: []string{authorizationapi.APIGroupExtensions},
Verbs: sets.NewString("get", "update"),
Resources: sets.NewString("replicationcontrollers/scale"),
},
{
Verbs: sets.NewString("get", "update"),
Resources: sets.NewString("deploymentconfigs/scale"),
},
{
Verbs: sets.NewString("create", "update", "patch"),
Resources: sets.NewString("events"),
},
// Heapster MetricsClient
{
Verbs: sets.NewString("list"),
Resources: sets.NewString("pods"),
},
{
// TODO: fix MetricsClient to no longer require root proxy access
// TODO: restrict this to the appropriate namespace
Verbs: sets.NewString("proxy"),
Resources: sets.NewString("services"),
ResourceNames: sets.NewString("heapster"),
},
},
},
{
ObjectMeta: kapi.ObjectMeta{
Expand Down
9 changes: 7 additions & 2 deletions pkg/cmd/server/kubernetes/master.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (

kapi "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client/record"
osclient "github.com/openshift/origin/pkg/client"
client "k8s.io/kubernetes/pkg/client/unversioned"
endpointcontroller "k8s.io/kubernetes/pkg/controller/endpoint"
jobcontroller "k8s.io/kubernetes/pkg/controller/job"
Expand All @@ -19,6 +20,8 @@ import (
volumeclaimbinder "k8s.io/kubernetes/pkg/controller/persistentvolume"
replicationcontroller "k8s.io/kubernetes/pkg/controller/replication"
resourcequotacontroller "k8s.io/kubernetes/pkg/controller/resourcequota"
podautoscalercontroller "k8s.io/kubernetes/pkg/controller/podautoscaler"
"k8s.io/kubernetes/pkg/controller/podautoscaler/metrics"
"k8s.io/kubernetes/pkg/master"
"k8s.io/kubernetes/pkg/util"
"k8s.io/kubernetes/pkg/volume"
Expand Down Expand Up @@ -113,8 +116,10 @@ func (c *MasterConfig) RunJobController(client *client.Client) {
}

// RunHPAController starts the Kubernetes hpa controller sync loop
func (c *MasterConfig) RunHPAController(client *client.Client) {
// TDO fix stub
func (c *MasterConfig) RunHPAController(oc *osclient.Client, kc *client.Client, heapsterNamespace string) {
delegScaleNamespacer := osclient.NewDelegatingScaleNamespacer(oc, kc)
podautoscaler := podautoscalercontroller.NewHorizontalController(kc, delegScaleNamespacer, kc, metrics.NewHeapsterMetricsClient(kc, heapsterNamespace, "heapster"))
podautoscaler.Run(c.ControllerManager.HorizontalPodAutoscalerSyncPeriod)
}

// RunEndpointController starts the Kubernetes replication controller sync loop
Expand Down
4 changes: 2 additions & 2 deletions pkg/cmd/server/start/start_master.go
Original file line number Diff line number Diff line change
Expand Up @@ -534,7 +534,7 @@ func startControllers(oc *origin.MasterConfig, kc *kubernetes.MasterConfig) erro
if err != nil {
glog.Fatalf("Could not get client for job controller: %v", err)
}
_, hpaKClient, err := oc.GetServiceAccountClients(oc.HPAControllerServiceAccount)
hpaOClient, hpaKClient, err := oc.GetServiceAccountClients(oc.HPAControllerServiceAccount)
if err != nil {
glog.Fatalf("Could not get client for HPA controller: %v", err)
}
Expand All @@ -547,7 +547,7 @@ func startControllers(oc *origin.MasterConfig, kc *kubernetes.MasterConfig) erro
kc.RunScheduler()
kc.RunReplicationController(rcClient)
kc.RunJobController(jobClient)
kc.RunHPAController(hpaKClient)
kc.RunHPAController(hpaOClient, hpaKClient, oc.Options.PolicyConfig.OpenShiftInfrastructureNamespace)
kc.RunEndpointController()
kc.RunNamespaceController()
kc.RunPersistentVolumeClaimBinder()
Expand Down

0 comments on commit d0860f3

Please sign in to comment.