Skip to content

Commit 26b7d1f

Browse files
authored
Merge pull request #187 from rawmind0/v1.1
Updated rke to V1.1
2 parents 458965a + 4ce718b commit 26b7d1f

File tree

1,034 files changed

+170476
-81212
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,034 files changed

+170476
-81212
lines changed

CHANGELOG.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## 1.0.0-rc5 (Unreleased)
1+
## 1.0.0-rc5 (April 3, 2020)
22

33
FEATURES:
44

@@ -10,14 +10,17 @@ FEATURES:
1010
ENHANCEMENTS:
1111

1212
* Updated `hashicorp/terraform-plugin-sdk` go modules and vendor files to v1.8.0
13-
* Updated go modules and vendor files to support [RKE v1.0.6](https://github.com/rancher/rke/releases/tag/v1.0.6)
13+
* Updated go modules and vendor files to support [RKE v1.1.0](https://github.com/rancher/rke/releases/tag/v1.1.0)
14+
* Added `upgrade_strategy` argument to `rke_cluster` resource
15+
* Updated `kubernetes_version` argument to get default and available k8s versions from rke metadata
1416

1517
BUG FIXES:
1618

1719
* Fixed computed fields to avoid inconsistent plan
1820
* Disabled `debug` config option until next rke release (Breaking logs)
1921
* Fixed segmentation fault with deprecated fields
2022
* Fixed `vsphere_cloud_provider` argument to avoid false diff
23+
* Fixed segmentation fault with deprecated fields
2124

2225
## 1.0.0-rc4 (March 13, 2020)
2326

go.mod

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,24 @@ module github.com/rancher/terraform-provider-rke
33
go 1.12
44

55
require (
6+
github.com/aws/aws-sdk-go v1.25.48 // indirect
67
github.com/ghodss/yaml v1.0.0
8+
github.com/go-openapi/strfmt v0.19.2 // indirect
9+
github.com/google/pprof v0.0.0-20190723021845-34ac40c74b70 // indirect
710
github.com/gorilla/websocket v1.4.1 // indirect
8-
github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 // indirect
11+
github.com/hashicorp/go-sockaddr v1.0.2 // indirect
912
github.com/hashicorp/go-version v1.2.0
1013
github.com/hashicorp/terraform-plugin-sdk v1.8.0
11-
github.com/rancher/kontainer-driver-metadata v0.0.0-20200329153031-ee56d7c311b4
12-
github.com/rancher/rke v1.0.6
13-
github.com/rancher/types v0.0.0-20191220141556-ad31d6815bbd
14+
github.com/rancher/rke v1.1.0
15+
github.com/rancher/types v0.0.0-20200326224903-b4612bd96d9b
1416
github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b
1517
github.com/sirupsen/logrus v1.4.2
16-
gopkg.in/ini.v1 v1.48.0 // indirect
17-
gopkg.in/yaml.v2 v2.2.4
18-
k8s.io/api v0.0.0
19-
k8s.io/apimachinery v0.0.0
20-
k8s.io/apiserver v0.0.0
21-
k8s.io/client-go v11.0.1-0.20190805182715-88a2adca7e76+incompatible
18+
github.com/soheilhy/cmux v0.1.4 // indirect
19+
gopkg.in/yaml.v2 v2.2.5
20+
k8s.io/api v0.17.2
21+
k8s.io/apimachinery v0.17.2
22+
k8s.io/apiserver v0.17.2
23+
k8s.io/client-go v12.0.0+incompatible
2224
)
2325

2426
replace (

go.sum

Lines changed: 362 additions & 594 deletions
Large diffs are not rendered by default.

rke/config.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"io"
77
"os"
88

9-
//rkelog "github.com/rancher/rke/log"
109
log "github.com/sirupsen/logrus"
1110
)
1211

rke/resource_rke_cluster_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,10 @@ resource rke_cluster "cluster" {
234234
user = "docker"
235235
role = ["controlplane", "worker", "etcd"]
236236
}
237+
upgrade_strategy {
238+
drain = true
239+
max_unavailable_worker = "20%%"
240+
}
237241
}
238242
`, testAccRKEClusterNodes[0])
239243

@@ -255,6 +259,10 @@ resource rke_cluster "cluster" {
255259
bar = "bar"
256260
}
257261
}
262+
upgrade_strategy {
263+
drain = true
264+
max_unavailable_worker = "20%%"
265+
}
258266
}
259267
`, testAccRKEClusterNodes[0])
260268

@@ -277,6 +285,10 @@ resource rke_cluster "cluster" {
277285
user = "docker"
278286
role = ["worker"]
279287
}
288+
upgrade_strategy {
289+
drain = true
290+
max_unavailable_worker = "20%%"
291+
}
280292
}
281293
`, testAccRKEClusterNodes[0], testAccRKEClusterNodes[1])
282294
}

rke/schema_rke_cluster.go

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package rke
22

33
import (
4+
"context"
45
"fmt"
5-
//"reflect"
66
"sort"
77

88
"github.com/hashicorp/go-version"
99
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
1010
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
11-
"github.com/rancher/kontainer-driver-metadata/rke"
11+
"github.com/rancher/rke/metadata"
1212
)
1313

1414
//Schemas
@@ -167,12 +167,11 @@ func rkeClusterFields() map[string]*schema.Schema {
167167
"kubernetes_version": {
168168
Type: schema.TypeString,
169169
Optional: true,
170-
Computed: true,
171170
Description: "K8s version to deploy (if kubernetes image is specified, image version takes precedence)",
172171
ValidateFunc: validation.StringInSlice(func() []string {
173-
rkeData := rke.DriverData
174-
versions := make([]*version.Version, 0, len(rkeData.K8sVersionRKESystemImages))
175-
for k := range rkeData.K8sVersionRKESystemImages {
172+
metadata.InitMetadata(context.Background())
173+
versions := make([]*version.Version, 0, len(metadata.K8sVersionToRKESystemImages))
174+
for k := range metadata.K8sVersionToRKESystemImages {
176175
v, _ := version.NewVersion(k)
177176
versions = append(versions, v)
178177
}
@@ -183,6 +182,10 @@ func rkeClusterFields() map[string]*schema.Schema {
183182
}
184183
return keys
185184
}(), false),
185+
DefaultFunc: func() (interface{}, error) {
186+
metadata.InitMetadata(context.Background())
187+
return metadata.DefaultK8sVersion, nil
188+
},
186189
},
187190
"monitoring": {
188191
Type: schema.TypeList,
@@ -349,6 +352,15 @@ func rkeClusterFields() map[string]*schema.Schema {
349352
Schema: rkeClusterSystemImagesFields(),
350353
},
351354
},
355+
"upgrade_strategy": {
356+
Type: schema.TypeList,
357+
Description: "RKE k8s cluster upgrade strategy",
358+
MaxItems: 1,
359+
Optional: true,
360+
Elem: &schema.Resource{
361+
Schema: rkeClusterNodeUpgradeStrategyFields(),
362+
},
363+
},
352364
"update_only": {
353365
Type: schema.TypeBool,
354366
Optional: true,

rke/schema_rke_cluster_node.go

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,3 +129,65 @@ func rkeClusterNodeComputedFields() map[string]*schema.Schema {
129129
}
130130
return s
131131
}
132+
133+
func rkeClusterNodeDrainInputFields() map[string]*schema.Schema {
134+
s := map[string]*schema.Schema{
135+
"delete_local_data": {
136+
Type: schema.TypeBool,
137+
Optional: true,
138+
Default: false,
139+
},
140+
"force": {
141+
Type: schema.TypeBool,
142+
Optional: true,
143+
Default: false,
144+
},
145+
"grace_period": {
146+
Type: schema.TypeInt,
147+
Optional: true,
148+
Default: -1,
149+
},
150+
"ignore_daemon_sets": {
151+
Type: schema.TypeBool,
152+
Optional: true,
153+
Default: true,
154+
},
155+
"timeout": {
156+
Type: schema.TypeInt,
157+
Optional: true,
158+
Default: 60,
159+
ValidateFunc: validation.IntBetween(1, 10800),
160+
},
161+
}
162+
return s
163+
}
164+
165+
func rkeClusterNodeUpgradeStrategyFields() map[string]*schema.Schema {
166+
s := map[string]*schema.Schema{
167+
"drain": {
168+
Type: schema.TypeBool,
169+
Optional: true,
170+
Default: false,
171+
},
172+
"drain_input": {
173+
Type: schema.TypeList,
174+
MaxItems: 1,
175+
Optional: true,
176+
Computed: true,
177+
Elem: &schema.Resource{
178+
Schema: rkeClusterNodeDrainInputFields(),
179+
},
180+
},
181+
"max_unavailable_controlplane": {
182+
Type: schema.TypeString,
183+
Optional: true,
184+
Default: "1",
185+
},
186+
"max_unavailable_worker": {
187+
Type: schema.TypeString,
188+
Optional: true,
189+
Default: "10%",
190+
},
191+
}
192+
return s
193+
}

rke/schema_rke_cluster_services_kube_api.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ func rkeClusterServicesKubeAPIAuditLogFields() map[string]*schema.Schema {
106106
"enabled": {
107107
Type: schema.TypeBool,
108108
Optional: true,
109-
Default: false,
109+
Default: true,
110110
},
111111
}
112112
return s

rke/structure_rke_cluster.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,11 @@ func flattenRKECluster(d *schema.ResourceData, in *cluster.Cluster) error {
191191
return err
192192
}
193193

194+
err = d.Set("upgrade_strategy", flattenRKEClusterNodeUpgradeStrategy(in.UpgradeStrategy))
195+
if err != nil {
196+
return err
197+
}
198+
194199
return nil
195200
}
196201

@@ -302,6 +307,10 @@ func expandRKECluster(in *schema.ResourceData) (string, error) {
302307
obj.SystemImages = expandRKEClusterSystemImages(v)
303308
}
304309

310+
if v, ok := in.Get("upgrade_strategy").([]interface{}); ok {
311+
obj.UpgradeStrategy = expandRKEClusterNodeUpgradeStrategy(v)
312+
}
313+
305314
policyJSON := ""
306315
if v, ok := in.Get("services").([]interface{}); ok && len(v) > 0 {
307316
services, err := expandRKEClusterServices(v)

rke/structure_rke_cluster_node.go

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,44 @@ import (
77

88
// Flatteners
99

10+
func flattenRKEClusterNodeDrainInput(in *rancher.NodeDrainInput) []interface{} {
11+
obj := make(map[string]interface{})
12+
if in == nil {
13+
return []interface{}{}
14+
}
15+
16+
obj["delete_local_data"] = in.DeleteLocalData
17+
obj["force"] = in.Force
18+
obj["grace_period"] = in.GracePeriod
19+
obj["ignore_daemon_sets"] = in.IgnoreDaemonSets
20+
obj["timeout"] = in.Timeout
21+
22+
return []interface{}{obj}
23+
}
24+
25+
func flattenRKEClusterNodeUpgradeStrategy(in *rancher.NodeUpgradeStrategy) []interface{} {
26+
obj := make(map[string]interface{})
27+
if in == nil {
28+
return []interface{}{}
29+
}
30+
31+
obj["drain"] = in.Drain
32+
33+
if in.DrainInput != nil {
34+
obj["drain_input"] = flattenRKEClusterNodeDrainInput(in.DrainInput)
35+
}
36+
37+
if len(in.MaxUnavailableControlplane) > 0 {
38+
obj["max_unavailable_controlplane"] = in.MaxUnavailableControlplane
39+
}
40+
41+
if len(in.MaxUnavailableWorker) > 0 {
42+
obj["max_unavailable_worker"] = in.MaxUnavailableWorker
43+
}
44+
45+
return []interface{}{obj}
46+
}
47+
1048
func flattenRKEClusterNodes(p []rancher.RKEConfigNode) []interface{} {
1149
out := []interface{}{}
1250

@@ -99,6 +137,62 @@ func flattenRKEClusterNodesComputed(p []*hosts.Host) []interface{} {
99137

100138
// Expanders
101139

140+
func expandRKEClusterNodeDrainInput(p []interface{}) *rancher.NodeDrainInput {
141+
obj := &rancher.NodeDrainInput{}
142+
if len(p) == 0 || p[0] == nil {
143+
return obj
144+
}
145+
in := p[0].(map[string]interface{})
146+
147+
if v, ok := in["delete_local_data"].(bool); ok {
148+
obj.DeleteLocalData = v
149+
}
150+
151+
if v, ok := in["force"].(bool); ok {
152+
obj.Force = v
153+
}
154+
155+
if v, ok := in["grace_period"].(int); ok {
156+
obj.GracePeriod = v
157+
}
158+
159+
if v, ok := in["ignore_daemon_sets"].(bool); ok {
160+
obj.IgnoreDaemonSets = v
161+
}
162+
163+
if v, ok := in["timeout"].(int); ok {
164+
obj.Timeout = v
165+
}
166+
167+
return obj
168+
}
169+
170+
func expandRKEClusterNodeUpgradeStrategy(p []interface{}) *rancher.NodeUpgradeStrategy {
171+
obj := &rancher.NodeUpgradeStrategy{}
172+
if len(p) == 0 || p[0] == nil {
173+
return obj
174+
}
175+
in := p[0].(map[string]interface{})
176+
177+
if v, ok := in["drain"].(bool); ok {
178+
obj.Drain = v
179+
}
180+
181+
if v, ok := in["drain_input"].([]interface{}); ok {
182+
obj.DrainInput = expandRKEClusterNodeDrainInput(v)
183+
}
184+
185+
if v, ok := in["max_unavailable_controlplane"].(string); ok && len(v) > 0 {
186+
obj.MaxUnavailableControlplane = v
187+
}
188+
189+
if v, ok := in["max_unavailable_worker"].(string); ok && len(v) > 0 {
190+
obj.MaxUnavailableWorker = v
191+
}
192+
193+
return obj
194+
}
195+
102196
func expandRKEClusterNodes(p []interface{}) []rancher.RKEConfigNode {
103197
out := []rancher.RKEConfigNode{}
104198
if len(p) == 0 || p[0] == nil {

0 commit comments

Comments
 (0)