Deprecate kubeconfig field and add stackit_ske_kubeconfig resource (#256)

* Implement kubeconfig resource

* Update acc test, skip get credentials

* Update acc test

* Add warning on Create

* Add option to refresh

* Fix lint

* Add comment, generate docs

* Update stackit/internal/services/ske/cluster/resource.go

Co-authored-by: João Palet <joao.palet@outlook.com>

* Update stackit/internal/services/ske/kubeconfig/resource.go

Co-authored-by: João Palet <joao.palet@outlook.com>

* Changes after review

* Fix schema

* Gen docs

* Rename

* Credentials handling in datasource, update acc test

* Fix datasource

* Update descriptions

---------

Co-authored-by: João Palet <joao.palet@outlook.com>
This commit is contained in:
Vicente Pinto 2024-02-09 10:17:04 +00:00 committed by GitHub
parent 91b2c42a19
commit bde1fc55e4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 618 additions and 39 deletions

View file

@ -25,16 +25,15 @@ var clusterResource = map[string]string{
"project_id": testutil.ProjectId,
"name": fmt.Sprintf("cl-%s", acctest.RandStringFromCharSet(5, acctest.CharSetAlphaNum)),
"name_min": fmt.Sprintf("cl-min-%s", acctest.RandStringFromCharSet(3, acctest.CharSetAlphaNum)),
"kubernetes_version": "1.24",
"kubernetes_version_used": "1.24.17",
"kubernetes_version_new": "1.25",
"kubernetes_version_used_new": "1.25.15",
"allowPrivilegedContainers": "true",
"kubernetes_version": "1.25",
"kubernetes_version_used": "1.25.16",
"kubernetes_version_new": "1.26",
"kubernetes_version_used_new": "1.26.13",
"nodepool_name": "np-acc-test",
"nodepool_name_min": "np-acc-min-test",
"nodepool_machine_type": "b1.2",
"nodepool_os_version": "3602.2.1",
"nodepool_os_version_min": "3602.2.1",
"nodepool_os_version": "3602.2.2",
"nodepool_os_version_min": "3602.2.2",
"nodepool_os_name": "flatcar",
"nodepool_minimum": "2",
"nodepool_maximum": "3",
@ -61,17 +60,10 @@ var clusterResource = map[string]string{
"maintenance_start": "01:23:45Z",
"maintenance_end": "05:00:00+02:00",
"maintenance_end_new": "03:03:03+00:00",
"kubeconfig_expiration": "3600",
}
func getConfig(version string, apc *bool, maintenanceEnd *string) string {
apcConfig := ""
if apc != nil {
if *apc {
apcConfig = "allow_privileged_containers = true"
} else {
apcConfig = "allow_privileged_containers = false"
}
}
func getConfig(version string, maintenanceEnd *string) string {
maintenanceEndTF := clusterResource["maintenance_end"]
if maintenanceEnd != nil {
maintenanceEndTF = *maintenanceEnd
@ -87,7 +79,6 @@ func getConfig(version string, apc *bool, maintenanceEnd *string) string {
project_id = stackit_ske_project.project.project_id
name = "%s"
kubernetes_version = "%s"
%s
node_pools = [{
name = "%s"
machine_type = "%s"
@ -133,6 +124,12 @@ func getConfig(version string, apc *bool, maintenanceEnd *string) string {
}
}
resource "stackit_ske_kubeconfig" "kubeconfig" {
project_id = stackit_ske_project.project.project_id
cluster_name = stackit_ske_cluster.cluster.name
expiration = "%s"
}
resource "stackit_ske_cluster" "cluster_min" {
project_id = stackit_ske_project.project.project_id
name = "%s"
@ -157,7 +154,6 @@ func getConfig(version string, apc *bool, maintenanceEnd *string) string {
projectResource["project_id"],
clusterResource["name"],
version,
apcConfig,
clusterResource["nodepool_name"],
clusterResource["nodepool_machine_type"],
clusterResource["nodepool_minimum"],
@ -187,6 +183,9 @@ func getConfig(version string, apc *bool, maintenanceEnd *string) string {
clusterResource["maintenance_start"],
maintenanceEndTF,
// Kubeconfig
clusterResource["kubeconfig_expiration"],
// Minimal
clusterResource["name_min"],
clusterResource["kubernetes_version_new"],
@ -211,7 +210,7 @@ func TestAccSKE(t *testing.T) {
// 1) Creation
{
Config: getConfig(clusterResource["kubernetes_version"], utils.Ptr(true), nil),
Config: getConfig(clusterResource["kubernetes_version"], nil),
Check: resource.ComposeAggregateTestCheckFunc(
// project data
resource.TestCheckResourceAttr("stackit_ske_project.project", "project_id", projectResource["project_id"]),
@ -223,7 +222,6 @@ func TestAccSKE(t *testing.T) {
resource.TestCheckResourceAttr("stackit_ske_cluster.cluster", "name", clusterResource["name"]),
resource.TestCheckResourceAttr("stackit_ske_cluster.cluster", "kubernetes_version", clusterResource["kubernetes_version"]),
resource.TestCheckResourceAttr("stackit_ske_cluster.cluster", "kubernetes_version_used", clusterResource["kubernetes_version_used"]),
resource.TestCheckResourceAttr("stackit_ske_cluster.cluster", "allow_privileged_containers", clusterResource["allowPrivilegedContainers"]),
resource.TestCheckResourceAttr("stackit_ske_cluster.cluster", "node_pools.0.name", clusterResource["nodepool_name"]),
resource.TestCheckResourceAttr("stackit_ske_cluster.cluster", "node_pools.0.availability_zones.#", "1"),
resource.TestCheckResourceAttr("stackit_ske_cluster.cluster", "node_pools.0.availability_zones.0", clusterResource["nodepool_zone"]),
@ -255,9 +253,22 @@ func TestAccSKE(t *testing.T) {
resource.TestCheckResourceAttr("stackit_ske_cluster.cluster", "maintenance.enable_machine_image_version_updates", clusterResource["maintenance_enable_machine_image_version_updates"]),
resource.TestCheckResourceAttr("stackit_ske_cluster.cluster", "maintenance.start", clusterResource["maintenance_start"]),
resource.TestCheckResourceAttr("stackit_ske_cluster.cluster", "maintenance.end", clusterResource["maintenance_end"]),
resource.TestCheckResourceAttrSet("stackit_ske_cluster.cluster", "kube_config"),
// Kubeconfig
resource.TestCheckResourceAttrPair(
"stackit_ske_kubeconfig.kubeconfig", "project_id",
"stackit_ske_cluster.cluster", "project_id",
),
resource.TestCheckResourceAttrPair(
"stackit_ske_kubeconfig.kubeconfig", "cluster_name",
"stackit_ske_cluster.cluster", "name",
),
resource.TestCheckResourceAttr("stackit_ske_kubeconfig.kubeconfig", "expiration", clusterResource["kubeconfig_expiration"]),
resource.TestCheckResourceAttrSet("stackit_ske_kubeconfig.kubeconfig", "kube_config"),
resource.TestCheckResourceAttrSet("stackit_ske_kubeconfig.kubeconfig", "expires_at"),
// Minimal cluster
resource.TestCheckResourceAttrPair(
"stackit_ske_project.project", "project_id",
@ -314,7 +325,7 @@ func TestAccSKE(t *testing.T) {
}
`,
getConfig(clusterResource["kubernetes_version"], utils.Ptr(true), nil),
getConfig(clusterResource["kubernetes_version"], nil),
projectResource["project_id"],
clusterResource["project_id"],
clusterResource["name"],
@ -334,7 +345,6 @@ func TestAccSKE(t *testing.T) {
resource.TestCheckResourceAttr("data.stackit_ske_cluster.cluster", "name", clusterResource["name"]),
resource.TestCheckResourceAttr("data.stackit_ske_cluster.cluster", "kubernetes_version", clusterResource["kubernetes_version"]),
resource.TestCheckResourceAttr("data.stackit_ske_cluster.cluster", "kubernetes_version_used", clusterResource["kubernetes_version_used"]),
resource.TestCheckResourceAttr("data.stackit_ske_cluster.cluster", "allow_privileged_containers", clusterResource["allowPrivilegedContainers"]),
resource.TestCheckResourceAttr("data.stackit_ske_cluster.cluster", "node_pools.0.name", clusterResource["nodepool_name"]),
resource.TestCheckResourceAttr("data.stackit_ske_cluster.cluster", "node_pools.0.availability_zones.#", "1"),
resource.TestCheckResourceAttr("data.stackit_ske_cluster.cluster", "node_pools.0.availability_zones.0", clusterResource["nodepool_zone"]),
@ -366,7 +376,7 @@ func TestAccSKE(t *testing.T) {
resource.TestCheckResourceAttr("data.stackit_ske_cluster.cluster", "maintenance.start", clusterResource["maintenance_start"]),
resource.TestCheckResourceAttr("data.stackit_ske_cluster.cluster", "maintenance.end", clusterResource["maintenance_end"]),
resource.TestCheckResourceAttrSet("data.stackit_ske_cluster.cluster", "kube_config"),
resource.TestCheckNoResourceAttr("data.stackit_ske_cluster.cluster", "kube_config"), // when using the kubeconfig resource, the kubeconfig field becomes null
// Minimal cluster
resource.TestCheckResourceAttr("data.stackit_ske_cluster.cluster_min", "name", clusterResource["name_min"]),
@ -457,7 +467,7 @@ func TestAccSKE(t *testing.T) {
},
// 6) Update kubernetes version and maximum
{
Config: getConfig(clusterResource["kubernetes_version_new"], nil, utils.Ptr(clusterResource["maintenance_end_new"])),
Config: getConfig(clusterResource["kubernetes_version_new"], utils.Ptr(clusterResource["maintenance_end_new"])),
Check: resource.ComposeAggregateTestCheckFunc(
// cluster data
resource.TestCheckResourceAttr("stackit_ske_cluster.cluster", "project_id", clusterResource["project_id"]),