@@ -3,6 +3,9 @@ package kind
33
44import (
55 "fmt"
6+ "io/ioutil"
7+ "os"
8+ "path/filepath"
69 "strings"
710 "time"
811
@@ -13,16 +16,19 @@ import (
1316 "k8s.io/client-go/kubernetes"
1417 "k8s.io/client-go/rest"
1518 "k8s.io/client-go/tools/clientcmd"
16- configv1alpha3 "sigs.k8s.io/kind/pkg/apis/config/v1alpha3 "
19+ configv1alpha4 "sigs.k8s.io/kind/pkg/apis/config/v1alpha4 "
1720 "sigs.k8s.io/kind/pkg/cluster"
18- "sigs.k8s.io/kind/pkg/cluster/create"
1921 "sigs.k8s.io/kind/pkg/cluster/nodes"
2022)
2123
24+ const (
25+ clusterName = "kube-oidc-proxy-e2e"
26+ )
27+
2228type Kind struct {
2329 rootPath string
2430
25- ctx * cluster.Context
31+ provider * cluster.Provider
2632 restConfig * rest.Config
2733 client * kubernetes.Clientset
2834}
@@ -32,51 +38,62 @@ func New(rootPath, nodeImage string, masterNodes, workerNodes int) (*Kind, error
3238
3339 k := & Kind {
3440 rootPath : rootPath ,
35- ctx : cluster .NewContext ("kube-oidc-proxy-e2e" ),
3641 }
3742
38- conf := new (configv1alpha3 .Cluster )
39- configv1alpha3 . SetDefaults_Cluster (conf )
43+ conf := new (configv1alpha4 .Cluster )
44+ configv1alpha4 . SetDefaultsCluster (conf )
4045 conf .Nodes = nil
4146
4247 // This behviour will be changing soon in later versions of kind.
4348 if workerNodes == 0 {
4449 for i := 0 ; i < masterNodes ; i ++ {
4550 conf .Nodes = append (conf .Nodes ,
46- configv1alpha3 .Node {
51+ configv1alpha4 .Node {
4752 Image : nodeImage ,
4853 })
4954 }
5055
5156 } else {
5257 for i := 0 ; i < masterNodes ; i ++ {
5358 conf .Nodes = append (conf .Nodes ,
54- configv1alpha3 .Node {
59+ configv1alpha4 .Node {
5560 Image : nodeImage ,
56- Role : configv1alpha3 .ControlPlaneRole ,
61+ Role : configv1alpha4 .ControlPlaneRole ,
5762 })
5863 }
5964
6065 for i := 0 ; i < workerNodes ; i ++ {
6166 conf .Nodes = append (conf .Nodes ,
62- configv1alpha3 .Node {
67+ configv1alpha4 .Node {
6368 Image : nodeImage ,
64- Role : configv1alpha3 .WorkerRole ,
69+ Role : configv1alpha4 .WorkerRole ,
6570 })
6671 }
6772 }
6873
6974 conf .Networking .ServiceSubnet = "10.0.0.0/16"
7075
7176 // 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 )
77+ log .Infof ("kind: creating kind cluster %q" , clusterName )
78+ k .provider = cluster .NewProvider ()
79+ if err := k .provider .Create (
80+ clusterName ,
81+ cluster .CreateWithV1Alpha4Config (conf ),
82+ ); err != nil {
83+ return nil , err
7584 }
7685
7786 // generate rest config to kind cluster
78- kubeconfig := k .ctx .KubeConfigPath ()
79- restConfig , err := clientcmd .BuildConfigFromFlags ("" , kubeconfig )
87+ kubeconfigData , err := k .provider .KubeConfig (clusterName , false )
88+ if err != nil {
89+ return nil , err
90+ }
91+
92+ if err := ioutil .WriteFile (k .KubeConfigPath (), []byte (kubeconfigData ), 0600 ); err != nil {
93+ return nil , err
94+ }
95+
96+ restConfig , err := clientcmd .BuildConfigFromFlags ("" , k .KubeConfigPath ())
8097 if err != nil {
8198 return nil , k .errDestroy (fmt .Errorf ("failed to build kind rest client: %s" , err ))
8299 }
@@ -96,31 +113,33 @@ func New(rootPath, nodeImage string, masterNodes, workerNodes int) (*Kind, error
96113 return nil , k .errDestroy (fmt .Errorf ("failed to wait for DNS pods to become ready: %s" , err ))
97114 }
98115
99- log .Infof ("kind: cluster ready %q" , k . ctx . Name () )
116+ log .Infof ("kind: cluster ready %q" , clusterName )
100117
101118 return k , nil
102119}
103120
104121func DeleteCluster (name string ) error {
105- ok , err := cluster .IsKnown (name )
122+ provider := cluster .NewProvider ()
123+
124+ kubeconfig , err := provider .KubeConfig (clusterName , false )
106125 if err != nil {
107126 return err
108127 }
109128
110- if ! ok {
111- return fmt .Errorf ("cluster unknown: %q" , name )
112- }
113-
114- return cluster .NewContext (name ).Delete ()
129+ return provider .Delete (clusterName , kubeconfig )
115130}
116131
117132func (k * Kind ) Destroy () error {
118- log .Infof ("kind: destroying cluster %q" , k . ctx . Name () )
119- if err := k . ctx . Delete ( ); err != nil {
133+ log .Infof ("kind: destroying cluster %q" , clusterName )
134+ if err := DeleteCluster ( clusterName ); err != nil {
120135 return fmt .Errorf ("failed to delete kind cluster: %s" , err )
121136 }
122137
123- log .Infof ("kind: destroyed cluster %q" , k .ctx .Name ())
138+ if err := os .Remove (k .KubeConfigPath ()); err != nil {
139+ return fmt .Errorf ("failed to delete kubeconfig file: %s" , err )
140+ }
141+
142+ log .Infof ("kind: destroyed cluster %q" , clusterName )
124143
125144 return nil
126145}
@@ -130,11 +149,11 @@ func (k *Kind) KubeClient() *kubernetes.Clientset {
130149}
131150
132151func (k * Kind ) KubeConfigPath () string {
133- return k . ctx . KubeConfigPath ( )
152+ return filepath . Join ( os . TempDir (), "kube-oidc-proxy-e2e" )
134153}
135154
136155func (k * Kind ) Nodes () ([]nodes.Node , error ) {
137- return k .ctx .ListNodes ()
156+ return k .provider .ListNodes (clusterName )
138157}
139158
140159func (k * Kind ) errDestroy (err error ) error {
0 commit comments