Skip to content
This repository was archived by the owner on Dec 1, 2018. It is now read-only.

Commit bd2bb79

Browse files
authored
Merge pull request #2069 from kawych/release-1.5
Bump Kubernetes version used in integration tests to fix presubmits
2 parents b4b5c7a + 8cfd7ce commit bd2bb79

File tree

7 files changed

+123
-12
lines changed

7 files changed

+123
-12
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ ifeq ($(INTERACTIVE), 1)
3434
TTY=-t
3535
endif
3636

37-
SUPPORTED_KUBE_VERSIONS=1.7.0-beta.2
37+
SUPPORTED_KUBE_VERSIONS=1.9.3
3838
TEST_NAMESPACE=heapster-e2e-tests
3939

4040
HEAPSTER_LDFLAGS=-w -X k8s.io/heapster/version.HeapsterVersion=$(VERSION) -X k8s.io/heapster/version.GitCommit=$(GIT_COMMIT)

deploy/kube-config/standalone-test/heapster-controller.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ spec:
1515
labels:
1616
k8s-app: heapster-test
1717
spec:
18+
serviceAccountName: heapster
1819
containers:
1920
- name: heapster-test
2021
image: gcr.io/google_containers/heapster-amd64:v1.5.3
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
kind: ClusterRoleBinding
2+
apiVersion: rbac.authorization.k8s.io/v1beta1
3+
metadata:
4+
name: heapster
5+
roleRef:
6+
apiGroup: rbac.authorization.k8s.io
7+
kind: ClusterRole
8+
name: system:heapster
9+
subjects:
10+
- kind: ServiceAccount
11+
name: heapster
12+
namespace: heapster-e2e-tests
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
name: heapster
5+
namespace: heapster-e2e-tests

integration/.jenkins.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export GOBIN="$GOPATH/bin"
77
export PATH="$GOBIN:$PATH"
88

99
# Kubernetes version(s) to run the integration tests against.
10-
kube_version="1.7.0-beta.2"
10+
kube_version="1.9.3"
1111

1212
if ! git diff --name-only origin/master | grep -c -E "*.go|*.sh|.*yaml|Makefile" &> /dev/null; then
1313
echo "This PR does not touch files that require integration testing. Skipping integration tests!"

integration/framework.go

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ import (
3131
kclient "k8s.io/client-go/kubernetes"
3232
"k8s.io/client-go/pkg/api"
3333
"k8s.io/client-go/pkg/api/v1"
34+
_ "k8s.io/client-go/pkg/apis/rbac/install"
35+
rbacv1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1"
3436
kclientcmd "k8s.io/client-go/tools/clientcmd"
3537
kclientcmdapi "k8s.io/client-go/tools/clientcmd/api"
3638
)
@@ -45,12 +47,24 @@ type kubeFramework interface {
4547
// Parses and Returns a service object contained in 'filePath'
4648
ParseService(filePath string) (*v1.Service, error)
4749

50+
// Parses and Returns a RBAC object contained in 'filePath'
51+
ParseRBAC(filePath string) (*rbacv1beta1.ClusterRoleBinding, error)
52+
53+
// Parses and Returns a ServiceAccount object contained in 'filePath'
54+
ParseServiceAccount(filePath string) (*v1.ServiceAccount, error)
55+
4856
// Creates a kube service.
4957
CreateService(ns string, service *v1.Service) (*v1.Service, error)
5058

5159
// Creates a namespace.
5260
CreateNs(ns *v1.Namespace) (*v1.Namespace, error)
5361

62+
// Creates a RBAC.
63+
CreateRBAC(crb *rbacv1beta1.ClusterRoleBinding) error
64+
65+
// Creates a ServiceAccount.
66+
CreateServiceAccount(sa *v1.ServiceAccount) error
67+
5468
// Creates a kube replication controller.
5569
CreateRC(ns string, rc *v1.ReplicationController) (*v1.ReplicationController, error)
5670

@@ -371,6 +385,54 @@ func (self *realKubeFramework) ParseRC(filePath string) (*v1.ReplicationControll
371385
return rc, nil
372386
}
373387

388+
// Parses and Returns a RBAC object contained in 'filePath'
389+
func (self *realKubeFramework) ParseRBAC(filePath string) (*rbacv1beta1.ClusterRoleBinding, error) {
390+
obj, err := self.loadRBACObject(filePath)
391+
if err != nil {
392+
return nil, err
393+
}
394+
rbac, ok := obj.(*rbacv1beta1.ClusterRoleBinding)
395+
if !ok {
396+
return nil, fmt.Errorf("Failed to cast clusterrolebinding: %v", obj)
397+
}
398+
return rbac, nil
399+
}
400+
401+
func (self *realKubeFramework) loadRBACObject(filePath string) (runtime.Object, error) {
402+
data, err := ioutil.ReadFile(filePath)
403+
if err != nil {
404+
return nil, fmt.Errorf("failed to read object: %v", err)
405+
}
406+
obj, _, err := api.Codecs.UniversalDecoder(rbacv1beta1.SchemeGroupVersion).Decode(data, nil, nil)
407+
return obj, err
408+
}
409+
410+
// CreateRBAC creates the RBAC object
411+
func (self *realKubeFramework) CreateRBAC(rbac *rbacv1beta1.ClusterRoleBinding) error {
412+
_, err := self.kubeClient.RbacV1beta1().ClusterRoleBindings().Create(rbac)
413+
return err
414+
}
415+
416+
// Parses and Returns a ServiceAccount object contained in 'filePath'
417+
func (self *realKubeFramework) ParseServiceAccount(filePath string) (*v1.ServiceAccount, error) {
418+
obj, err := self.loadObject(filePath)
419+
if err != nil {
420+
return nil, err
421+
}
422+
423+
sa, ok := obj.(*v1.ServiceAccount)
424+
if !ok {
425+
return nil, fmt.Errorf("Failed to cast serviceaccount: %v", obj)
426+
}
427+
return sa, nil
428+
}
429+
430+
// CreateServiceAccount creates the ServiceAccount object
431+
func (self *realKubeFramework) CreateServiceAccount(sa *v1.ServiceAccount) error {
432+
_, err := self.kubeClient.CoreV1().ServiceAccounts(sa.Namespace).Create(sa)
433+
return err
434+
}
435+
374436
func (self *realKubeFramework) ParseService(filePath string) (*v1.Service, error) {
375437
obj, err := self.loadObject(filePath)
376438
if err != nil {

integration/heapster_api_test.go

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,18 @@ const (
4242
)
4343

4444
var (
45-
testZone = flag.String("test_zone", "us-central1-b", "GCE zone where the test will be executed")
46-
kubeVersions = flag.String("kube_versions", "", "Comma separated list of kube versions to test against. By default will run the test against an existing cluster")
47-
heapsterControllerFile = flag.String("heapster_controller", "../deploy/kube-config/standalone-test/heapster-controller.yaml", "Path to heapster replication controller file.")
48-
heapsterServiceFile = flag.String("heapster_service", "../deploy/kube-config/standalone-test/heapster-service.yaml", "Path to heapster service file.")
49-
heapsterImage = flag.String("heapster_image", "heapster:e2e_test", "heapster docker image that needs to be tested.")
50-
avoidBuild = flag.Bool("nobuild", false, "When true, a new heapster docker image will not be created and pushed to test cluster nodes.")
51-
namespace = flag.String("namespace", "heapster-e2e-tests", "namespace to be used for testing, it will be deleted at the beginning of the test if exists")
52-
maxRetries = flag.Int("retries", 20, "Number of attempts before failing this test.")
53-
runForever = flag.Bool("run_forever", false, "If true, the tests are run in a loop forever.")
54-
testUser = flag.String("test_user", "", "GCE user when copy file to host")
45+
testZone = flag.String("test_zone", "us-central1-b", "GCE zone where the test will be executed")
46+
kubeVersions = flag.String("kube_versions", "", "Comma separated list of kube versions to test against. By default will run the test against an existing cluster")
47+
heapsterControllerFile = flag.String("heapster_controller", "../deploy/kube-config/standalone-test/heapster-controller.yaml", "Path to heapster replication controller file.")
48+
heapsterServiceFile = flag.String("heapster_service", "../deploy/kube-config/standalone-test/heapster-service.yaml", "Path to heapster service file.")
49+
heapsterRBACFile = flag.String("heapster_rbac", "../deploy/kube-config/standalone-test/heapster-rbac.yaml", "Path to heapster rbac file.")
50+
heapsterServiceAccountFile = flag.String("heapster_service_account", "../deploy/kube-config/standalone-test/heapster-service-account.yaml", "Path to heapster service account file.")
51+
heapsterImage = flag.String("heapster_image", "heapster:e2e_test", "heapster docker image that needs to be tested.")
52+
avoidBuild = flag.Bool("nobuild", false, "When true, a new heapster docker image will not be created and pushed to test cluster nodes.")
53+
namespace = flag.String("namespace", "heapster-e2e-tests", "namespace to be used for testing, it will be deleted at the beginning of the test if exists")
54+
maxRetries = flag.Int("retries", 20, "Number of attempts before failing this test.")
55+
runForever = flag.Bool("run_forever", false, "If true, the tests are run in a loop forever.")
56+
testUser = flag.String("test_user", "", "GCE user when copy file to host")
5557
)
5658

5759
func deleteAll(fm kubeFramework, ns string, service *kube_v1.Service, rc *kube_v1.ReplicationController) error {
@@ -164,6 +166,33 @@ func getHeapsterRcAndSvc(fm kubeFramework) (*kube_v1.Service, *kube_v1.Replicati
164166
return svc, rc, nil
165167
}
166168

169+
func setupHeapsterServiceAccount(fm kubeFramework) error {
170+
sa, err := fm.ParseServiceAccount(*heapsterServiceAccountFile)
171+
if err != nil {
172+
return fmt.Errorf("failed to parse heapster serviceaccount - %v", err)
173+
}
174+
175+
glog.V(2).Infof("Creating serviceaccount %s/%s...", (*sa).Namespace, (*sa).Name)
176+
if err := fm.CreateServiceAccount(sa); err != nil {
177+
glog.V(2).Infof("Failed to create serviceaccount: %v", err)
178+
return err
179+
}
180+
return nil
181+
}
182+
183+
func setupHeapsterRBAC(fm kubeFramework) error {
184+
rbac, err := fm.ParseRBAC(*heapsterRBACFile)
185+
if err != nil {
186+
return fmt.Errorf("failed to parse heapster rbac - %v", err)
187+
}
188+
glog.V(2).Infof("Creating rbac %s...", (*rbac).Name)
189+
if err := fm.CreateRBAC(rbac); err != nil {
190+
glog.V(2).Infof("Failed to create rbac: %v", err)
191+
return err
192+
}
193+
return nil
194+
}
195+
167196
func buildAndPushDockerImages(fm kubeFramework, zone string) error {
168197
if *avoidBuild {
169198
return nil
@@ -1013,6 +1042,8 @@ func apiTest(kubeVersion string, zone string) error {
10131042
if err := createAll(fm, ns, &svc, &rc); err != nil {
10141043
return err
10151044
}
1045+
setupHeapsterServiceAccount(fm)
1046+
setupHeapsterRBAC(fm)
10161047
if err := fm.WaitUntilPodRunning(ns, rc.Spec.Template.Labels, time.Minute); err != nil {
10171048
return err
10181049
}

0 commit comments

Comments
 (0)