chore: update Kubernetes resources to v1 API for provider v3 compatibility (#616)

## Description

As part of
https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/guides/v3-upgrade-guide
various resources change from non versioned to versioned. This PR
changes the Coder authored templates to versioned resources.

- Updated kubernetes_persistent_volume_claim to
kubernetes_persistent_volume_claim_v1
- Updated kubernetes_deployment to kubernetes_deployment_v1
- Updated kubernetes_pod to kubernetes_pod_v1
- Updated kubernetes_secret to kubernetes_secret_v1
- Updated all resource references and dependencies

I also had to fix up a couple of templates, i.e. remove `agent_name` as
it wasn't valid usage, `agent_id` remains. The `source` parameter for
jetbrains module in
[registry/coder/templates/kubernetes-envbox/main.tf](https://github.com/coder/registry/pull/616/changes#diff-83996ad9def3fae3b69981faee7d682964acc8716a4d04edfd7c4374f0a1d15c)
also had to be fixed.

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Template Information

**Path:** 

- registry/coder/templates/kubernetes
- registry/coder/templates/kubernetes-devcontainer
- registry/coder/templates/kubernetes-envbox

## Testing & Validation

- [ ] Tests pass (`bun test`)
- [ ] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues
This commit is contained in:
Rowan Smith 2025-12-19 08:11:30 +11:00 committed by GitHub
parent ef5a903edf
commit ac44ad862a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 20 additions and 22 deletions

View File

@ -139,7 +139,7 @@ variable "cache_repo_secret_name" {
type = string type = string
} }
data "kubernetes_secret" "cache_repo_dockerconfig_secret" { data "kubernetes_secret_v1" "cache_repo_dockerconfig_secret" {
count = var.cache_repo_secret_name == "" ? 0 : 1 count = var.cache_repo_secret_name == "" ? 0 : 1
metadata { metadata {
name = var.cache_repo_secret_name name = var.cache_repo_secret_name
@ -166,7 +166,7 @@ locals {
# Use the docker gateway if the access URL is 127.0.0.1 # Use the docker gateway if the access URL is 127.0.0.1
"ENVBUILDER_INIT_SCRIPT" : replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal"), "ENVBUILDER_INIT_SCRIPT" : replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal"),
"ENVBUILDER_FALLBACK_IMAGE" : data.coder_parameter.fallback_image.value, "ENVBUILDER_FALLBACK_IMAGE" : data.coder_parameter.fallback_image.value,
"ENVBUILDER_DOCKER_CONFIG_BASE64" : base64encode(try(data.kubernetes_secret.cache_repo_dockerconfig_secret[0].data[".dockerconfigjson"], "")), "ENVBUILDER_DOCKER_CONFIG_BASE64" : base64encode(try(data.kubernetes_secret_v1.cache_repo_dockerconfig_secret[0].data[".dockerconfigjson"], "")),
"ENVBUILDER_PUSH_IMAGE" : var.cache_repo == "" ? "" : "true" "ENVBUILDER_PUSH_IMAGE" : var.cache_repo == "" ? "" : "true"
# You may need to adjust this if you get an error regarding deleting files when building the workspace. # You may need to adjust this if you get an error regarding deleting files when building the workspace.
# For example, when testing in KinD, it was necessary to set `/product_name` and `/product_uuid` in # For example, when testing in KinD, it was necessary to set `/product_name` and `/product_uuid` in
@ -186,7 +186,7 @@ resource "envbuilder_cached_image" "cached" {
insecure = var.insecure_cache_repo insecure = var.insecure_cache_repo
} }
resource "kubernetes_persistent_volume_claim" "workspaces" { resource "kubernetes_persistent_volume_claim_v1" "workspaces" {
metadata { metadata {
name = "coder-${lower(data.coder_workspace.me.id)}-workspaces" name = "coder-${lower(data.coder_workspace.me.id)}-workspaces"
namespace = var.namespace namespace = var.namespace
@ -217,10 +217,10 @@ resource "kubernetes_persistent_volume_claim" "workspaces" {
} }
} }
resource "kubernetes_deployment" "main" { resource "kubernetes_deployment_v1" "main" {
count = data.coder_workspace.me.start_count count = data.coder_workspace.me.start_count
depends_on = [ depends_on = [
kubernetes_persistent_volume_claim.workspaces kubernetes_persistent_volume_claim_v1.workspaces
] ]
wait_for_rollout = false wait_for_rollout = false
metadata { metadata {
@ -300,7 +300,7 @@ resource "kubernetes_deployment" "main" {
volume { volume {
name = "workspaces" name = "workspaces"
persistent_volume_claim { persistent_volume_claim {
claim_name = kubernetes_persistent_volume_claim.workspaces.metadata.0.name claim_name = kubernetes_persistent_volume_claim_v1.workspaces.metadata.0.name
read_only = false read_only = false
} }
} }

View File

@ -106,22 +106,20 @@ module "code-server" {
# This ensures that the latest non-breaking version of the module gets downloaded, you can also pin the module version to prevent breaking changes in production. # This ensures that the latest non-breaking version of the module gets downloaded, you can also pin the module version to prevent breaking changes in production.
version = "~> 1.0" version = "~> 1.0"
agent_id = coder_agent.main.id agent_id = coder_agent.main.id
agent_name = "main" order = 1
order = 1
} }
# See https://registry.coder.com/modules/coder/jetbrains # See https://registry.coder.com/modules/coder/jetbrains
module "jetbrains" { module "jetbrains" {
count = data.coder_workspace.me.start_count count = data.coder_workspace.me.start_count
source = "registry.coder.com/modules/coder/jetbrains/coder" source = "registry.coder.com/coder/jetbrains/coder"
version = "~> 1.0" version = "~> 1.0"
agent_id = coder_agent.main.id agent_id = coder_agent.main.id
agent_name = "main" folder = "/home/coder"
folder = "/home/coder"
} }
resource "kubernetes_persistent_volume_claim" "home" { resource "kubernetes_persistent_volume_claim_v1" "home" {
metadata { metadata {
name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}-home" name = "coder-${lower(data.coder_workspace_owner.me.name)}-${lower(data.coder_workspace.me.name)}-home"
namespace = var.namespace namespace = var.namespace
@ -137,7 +135,7 @@ resource "kubernetes_persistent_volume_claim" "home" {
} }
} }
resource "kubernetes_pod" "main" { resource "kubernetes_pod_v1" "main" {
count = data.coder_workspace.me.start_count count = data.coder_workspace.me.start_count
metadata { metadata {
@ -284,7 +282,7 @@ resource "kubernetes_pod" "main" {
volume { volume {
name = "home" name = "home"
persistent_volume_claim { persistent_volume_claim {
claim_name = kubernetes_persistent_volume_claim.home.metadata.0.name claim_name = kubernetes_persistent_volume_claim_v1.home.metadata.0.name
read_only = false read_only = false
} }
} }

View File

@ -192,7 +192,7 @@ resource "coder_app" "code-server" {
} }
} }
resource "kubernetes_persistent_volume_claim" "home" { resource "kubernetes_persistent_volume_claim_v1" "home" {
metadata { metadata {
name = "coder-${data.coder_workspace.me.id}-home" name = "coder-${data.coder_workspace.me.id}-home"
namespace = var.namespace namespace = var.namespace
@ -222,10 +222,10 @@ resource "kubernetes_persistent_volume_claim" "home" {
} }
} }
resource "kubernetes_deployment" "main" { resource "kubernetes_deployment_v1" "main" {
count = data.coder_workspace.me.start_count count = data.coder_workspace.me.start_count
depends_on = [ depends_on = [
kubernetes_persistent_volume_claim.home kubernetes_persistent_volume_claim_v1.home
] ]
wait_for_rollout = false wait_for_rollout = false
metadata { metadata {
@ -316,7 +316,7 @@ resource "kubernetes_deployment" "main" {
volume { volume {
name = "home" name = "home"
persistent_volume_claim { persistent_volume_claim {
claim_name = kubernetes_persistent_volume_claim.home.metadata.0.name claim_name = kubernetes_persistent_volume_claim_v1.home.metadata.0.name
read_only = false read_only = false
} }
} }