@@ -13,16 +13,19 @@ import (
13
13
"k8s.io/client-go/kubernetes"
14
14
"k8s.io/client-go/rest"
15
15
"k8s.io/client-go/tools/clientcmd"
16
- configv1alpha3 "sigs.k8s.io/kind/pkg/apis/config/v1alpha3 "
16
+ configv1alpha4 "sigs.k8s.io/kind/pkg/apis/config/v1alpha4 "
17
17
"sigs.k8s.io/kind/pkg/cluster"
18
- "sigs.k8s.io/kind/pkg/cluster/create"
19
18
"sigs.k8s.io/kind/pkg/cluster/nodes"
20
19
)
21
20
21
+ const (
22
+ clusterName = "kube-oidc-proxy-e2e"
23
+ )
24
+
22
25
type Kind struct {
23
26
rootPath string
24
27
25
- ctx * cluster.Context
28
+ provider * cluster.Provider
26
29
restConfig * rest.Config
27
30
client * kubernetes.Clientset
28
31
}
@@ -32,50 +35,57 @@ func New(rootPath, nodeImage string, masterNodes, workerNodes int) (*Kind, error
32
35
33
36
k := & Kind {
34
37
rootPath : rootPath ,
35
- ctx : cluster .NewContext ("kube-oidc-proxy-e2e" ),
36
38
}
37
39
38
- conf := new (configv1alpha3 .Cluster )
39
- configv1alpha3 . SetDefaults_Cluster (conf )
40
+ conf := new (configv1alpha4 .Cluster )
41
+ configv1alpha4 . SetDefaultsCluster (conf )
40
42
conf .Nodes = nil
41
43
42
44
// This behviour will be changing soon in later versions of kind.
43
45
if workerNodes == 0 {
44
46
for i := 0 ; i < masterNodes ; i ++ {
45
47
conf .Nodes = append (conf .Nodes ,
46
- configv1alpha3 .Node {
48
+ configv1alpha4 .Node {
47
49
Image : nodeImage ,
48
50
})
49
51
}
50
52
51
53
} else {
52
54
for i := 0 ; i < masterNodes ; i ++ {
53
55
conf .Nodes = append (conf .Nodes ,
54
- configv1alpha3 .Node {
56
+ configv1alpha4 .Node {
55
57
Image : nodeImage ,
56
- Role : configv1alpha3 .ControlPlaneRole ,
58
+ Role : configv1alpha4 .ControlPlaneRole ,
57
59
})
58
60
}
59
61
60
62
for i := 0 ; i < workerNodes ; i ++ {
61
63
conf .Nodes = append (conf .Nodes ,
62
- configv1alpha3 .Node {
64
+ configv1alpha4 .Node {
63
65
Image : nodeImage ,
64
- Role : configv1alpha3 .WorkerRole ,
66
+ Role : configv1alpha4 .WorkerRole ,
65
67
})
66
68
}
67
69
}
68
70
69
71
conf .Networking .ServiceSubnet = "10.0.0.0/16"
70
72
71
73
// create kind cluster
72
- log .Infof ("kind: creating kind cluster %q" , k .ctx .Name ())
73
- if err := k .ctx .Create (create .WithV1Alpha3 (conf )); err != nil {
74
- return nil , fmt .Errorf ("failed to create cluster: %s" , err )
74
+ log .Infof ("kind: creating kind cluster %q" , clusterName )
75
+ k .provider = cluster .NewProvider ()
76
+ if err := k .provider .Create (
77
+ clusterName ,
78
+ cluster .CreateWithV1Alpha4Config (conf ),
79
+ ); err != nil {
80
+ return nil , err
75
81
}
76
82
77
83
// generate rest config to kind cluster
78
- kubeconfig := k .ctx .KubeConfigPath ()
84
+ kubeconfig , err := k .provider .KubeConfig (clusterName , false )
85
+ if err != nil {
86
+ return nil , err
87
+ }
88
+
79
89
restConfig , err := clientcmd .BuildConfigFromFlags ("" , kubeconfig )
80
90
if err != nil {
81
91
return nil , k .errDestroy (fmt .Errorf ("failed to build kind rest client: %s" , err ))
@@ -96,31 +106,29 @@ func New(rootPath, nodeImage string, masterNodes, workerNodes int) (*Kind, error
96
106
return nil , k .errDestroy (fmt .Errorf ("failed to wait for DNS pods to become ready: %s" , err ))
97
107
}
98
108
99
- log .Infof ("kind: cluster ready %q" , k . ctx . Name () )
109
+ log .Infof ("kind: cluster ready %q" , clusterName )
100
110
101
111
return k , nil
102
112
}
103
113
104
114
func DeleteCluster (name string ) error {
105
- ok , err := cluster .IsKnown (name )
115
+ provider := cluster .NewProvider ()
116
+
117
+ kubeconfig , err := provider .KubeConfig (clusterName , false )
106
118
if err != nil {
107
119
return err
108
120
}
109
121
110
- if ! ok {
111
- return fmt .Errorf ("cluster unknown: %q" , name )
112
- }
113
-
114
- return cluster .NewContext (name ).Delete ()
122
+ return provider .Delete (clusterName , kubeconfig )
115
123
}
116
124
117
125
func (k * Kind ) Destroy () error {
118
- log .Infof ("kind: destroying cluster %q" , k . ctx . Name () )
119
- if err := k . ctx . Delete ( ); err != nil {
126
+ log .Infof ("kind: destroying cluster %q" , clusterName )
127
+ if err := DeleteCluster ( clusterName ); err != nil {
120
128
return fmt .Errorf ("failed to delete kind cluster: %s" , err )
121
129
}
122
130
123
- log .Infof ("kind: destroyed cluster %q" , k . ctx . Name () )
131
+ log .Infof ("kind: destroyed cluster %q" , clusterName )
124
132
125
133
return nil
126
134
}
@@ -129,12 +137,12 @@ func (k *Kind) KubeClient() *kubernetes.Clientset {
129
137
return k .client
130
138
}
131
139
132
- func (k * Kind ) KubeConfigPath () string {
133
- return k .ctx . KubeConfigPath ( )
140
+ func (k * Kind ) KubeConfigPath () ( string , error ) {
141
+ return k .provider . KubeConfig ( clusterName , false )
134
142
}
135
143
136
144
func (k * Kind ) Nodes () ([]nodes.Node , error ) {
137
- return k .ctx .ListNodes ()
145
+ return k .provider .ListNodes (clusterName )
138
146
}
139
147
140
148
func (k * Kind ) errDestroy (err error ) error {
0 commit comments