├── .changelog
├── 1519.txt
├── 1638.txt
├── 1752.txt
├── 1802.txt
├── 1805.txt
├── 1831.txt
├── 1833.txt
├── 1838.txt
├── 1846.txt
├── 1849.txt
├── 1853.txt
├── 1856.txt
├── 1869.txt
├── 1883.txt
├── 1889.txt
├── 1892.txt
├── 1895.txt
├── 1898.txt
├── 1899.txt
├── 1902.txt
├── 1914.txt
├── 1915.txt
├── 1919.txt
├── 1921.txt
├── 1935.txt
├── 1936.txt
├── 1947.txt
├── 1967.txt
├── 1971.txt
├── 1972.txt
├── 1983.txt
├── 1989.txt
├── 1997.txt
├── 1999.txt
├── 2006.txt
├── 2008.txt
├── 2018.txt
├── 2024.txt
├── 2026.txt
├── 2028.txt
├── 2046.txt
├── 2054.txt
├── 2055.txt
├── 2061.txt
├── 2067.txt
├── 2077.txt
├── 2080.txt
├── 2085.txt
├── 2086.txt
├── 2099.txt
├── 2118.txt
├── 2119.txt
├── 2131.txt
├── 2141.txt
├── 2163.txt
├── 2164.txt
├── 2173.txt
├── 2183.txt
├── 2199.txt
├── 2200.txt
├── 2208.txt
├── 2221.txt
├── 2230.txt
├── 2246.txt
├── 2287.txt
├── 2290.txt
├── 2296.txt
├── 2306.txt
├── 2319.txt
├── 2333.txt
├── 2337.txt
├── 2344.txt
├── 2345.txt
├── 2347.txt
├── 2353.txt
├── 2362.txt
├── 2372.txt
├── 2384.txt
├── 2387.txt
├── 2394.txt
├── 2395.txt
├── 2402.txt
├── 2404.txt
├── 2417.txt
├── 2421.txt
├── 2428.txt
├── 2429.txt
├── 2437.txt
├── 2461.txt
├── 2464.txt
├── 2470.txt
├── 2485.txt
├── 2488.txt
├── 2493.txt
├── 2494.txt
├── 2510.txt
├── 2559.txt
├── 2570.txt
├── 2573.txt
├── 2577.txt
├── 2592.txt
├── 2595.txt
├── 2596.txt
├── 2604.txt
├── 2612.txt
├── 2622.txt
├── 2628.txt
├── 2630.txt
├── 2650.txt
├── 2653.txt
├── 2692.txt
├── 2699.txt
├── 2721.txt
├── 2733.txt
├── 2737.txt
├── changelog.tmpl
└── note.tmpl
├── .copywrite.hcl
├── .github
├── CODEOWNERS
├── ISSUE_TEMPLATE
│ ├── bug-report.md
│ ├── feature-request.md
│ └── question.md
├── config
│ ├── acceptance_tests_kind_config.yaml
│ └── seccomp-profiles
│ │ └── audit.json
├── labeler-issue-triage.yml
├── labeler-pull-request-triage.yml
├── pull_request_template.md
├── tf.png
└── workflows
│ ├── acceptance_test_dfa.yaml
│ ├── acceptance_tests_aks.yaml
│ ├── acceptance_tests_eks.yaml
│ ├── acceptance_tests_gke.yaml
│ ├── acceptance_tests_kind.yaml
│ ├── build.yml
│ ├── changelog-checker.yml
│ ├── check_examples.yaml
│ ├── checkers-and-linters.yml
│ ├── codeql-analysis.yml
│ ├── documentation-check.yaml
│ ├── golangci-lint.yaml
│ ├── hc-copywrite.yml
│ ├── issue-comment-created.yml
│ ├── issue-opened.yml
│ ├── jira_issues.yaml
│ ├── jira_pr.yaml
│ ├── lock.yml
│ ├── manifest_acc.yaml
│ ├── manifest_unit.yaml
│ ├── markdown-link-check.yaml
│ ├── markdown.links.config.json
│ ├── provider_functions_unit.yaml
│ ├── prune_stale_issues.yml
│ ├── pull-request.yml
│ └── unit-tests.yml
├── .gitignore
├── .golangci.yml
├── .markdownlinkcheck.json
├── .markdownlint.yml
├── .release
├── ci.hcl
├── release-metadata.hcl
├── security-scan.hcl
└── terraform-provider-kubernetes-artifacts.hcl
├── CHANGELOG.md
├── CHANGELOG_GUIDE.md
├── GNUmakefile
├── LICENSE
├── META.d
├── _summary.yaml
└── links.yaml
├── README.md
├── RELEASING.md
├── _about
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── FAQ.md
├── ISSUES.md
├── PULL_REQUESTS.md
└── SUPPORT.md
├── _examples
├── aks
│ ├── README.md
│ ├── aks-cluster
│ │ ├── main.tf
│ │ └── variables.tf
│ ├── kubernetes-config
│ │ ├── main.tf
│ │ └── variables.tf
│ ├── main.tf
│ ├── outputs.tf
│ └── variables.tf
├── certificate-signing-request
│ ├── README.md
│ ├── main.tf
│ └── variables.tf
├── cross-cluster
│ ├── README.md
│ └── main.tf
├── deferred-actions
│ ├── cluster.tf
│ ├── crd.tf
│ └── workspace.tf
├── eks
│ ├── README.md
│ ├── eks-cluster
│ │ ├── cluster.tf
│ │ ├── iam.tf
│ │ ├── variables.tf
│ │ ├── version.tf
│ │ └── vpc.tf
│ ├── eks-oidc
│ │ ├── README.md
│ │ └── main.tf
│ ├── kubernetes-config
│ │ ├── kubeconfig.tpl
│ │ ├── main.tf
│ │ ├── output.tf
│ │ ├── variables.tf
│ │ └── version.tf
│ ├── output.tf
│ └── variables.tf
├── gke
│ ├── README.md
│ ├── gke-cluster
│ │ ├── main.tf
│ │ ├── output.tf
│ │ └── variables.tf
│ ├── gke-oidc
│ │ ├── README.md
│ │ ├── gke.tf
│ │ ├── k8s.tf
│ │ ├── outputs.tf
│ │ └── variables.tf
│ ├── kubeconfig-template.yaml
│ ├── kubernetes-config
│ │ ├── main.tf
│ │ └── variables.tf
│ ├── main.tf
│ ├── outputs.tf
│ └── variables.tf
├── google-gke-nfs-filestore
│ ├── README.md
│ ├── kubeconfig-template.yaml
│ └── main.tf
├── in-cluster
│ ├── README.md
│ ├── namespace.tf
│ ├── pod.tf
│ └── provider.tf
├── ingress
│ ├── README.md
│ └── main.tf
├── job
│ ├── README.md
│ └── main.tf
├── kubernetes_manifest
│ ├── bigcrd
│ │ └── bigcrd.tf
│ ├── cluster-with-resources
│ │ ├── .skip_checks
│ │ ├── README.md
│ │ ├── cluster
│ │ │ └── test.tf
│ │ ├── main.tf
│ │ └── manifests
│ │ │ └── test.tf
│ ├── configmap
│ │ └── main.tf
│ ├── crd
│ │ └── main.tf
│ ├── deployment
│ │ └── deployment.tf
│ ├── ingress
│ │ └── ingress.tf
│ ├── namespace
│ │ └── namespace.tf
│ ├── pod
│ │ └── pod.tf
│ ├── role
│ │ └── role.tf
│ ├── service
│ │ └── service.tf
│ ├── terraform-operator
│ │ ├── .skip_checks
│ │ ├── README.md
│ │ ├── api-token-secret.tf
│ │ ├── namespace.tf
│ │ ├── sync-workspace-role.tf
│ │ ├── sync-workspace-rolebinding.tf
│ │ ├── sync-workspace-secret.tf
│ │ ├── sync-workspace-serviceaccount.tf
│ │ ├── sync-workspaces-deployment.tf
│ │ ├── variables.tf
│ │ └── workspaces.app.terraform.io.tf
│ ├── vault
│ │ ├── configmap.tf
│ │ ├── headless.tf
│ │ ├── injector.tf
│ │ ├── main.tf
│ │ ├── server.tf
│ │ ├── variables.tf
│ │ └── webhook.tf
│ └── wait
│ │ └── main.tf
└── wordpress-mysql-gce-pv
│ ├── README.md
│ ├── gce-volumes.tf
│ ├── graph.png
│ ├── mysql.tf
│ └── wordpress.tf
├── docs
├── data-sources
│ ├── all_namespaces.md
│ ├── config_map.md
│ ├── config_map_v1.md
│ ├── endpoints_v1.md
│ ├── ingress.md
│ ├── ingress_v1.md
│ ├── mutating_webhook_configuration_v1.md
│ ├── namespace.md
│ ├── namespace_v1.md
│ ├── nodes.md
│ ├── persistent_volume_claim.md
│ ├── persistent_volume_claim_v1.md
│ ├── persistent_volume_v1.md
│ ├── pod.md
│ ├── pod_v1.md
│ ├── resource.md
│ ├── resources.md
│ ├── secret.md
│ ├── secret_v1.md
│ ├── server_version.md
│ ├── service.md
│ ├── service_account.md
│ ├── service_account_v1.md
│ ├── service_v1.md
│ ├── storage_class.md
│ └── storage_class_v1.md
├── ephemeral-resources
│ ├── kubernetes_certificate_signing_request_v1.md
│ └── kubernetes_token_request_v1.md
├── functions
│ ├── manifest_decode.md
│ ├── manifest_decode_multi.md
│ └── manifest_encode.md
├── guides
│ ├── alpha-manifest-migration-guide.md
│ ├── getting-started.html.md
│ ├── v2-upgrade-guide.md
│ └── versioned-resources.md
├── index.md
└── resources
│ ├── annotations.md
│ ├── api_service.md
│ ├── api_service_v1.md
│ ├── certificate_signing_request.md
│ ├── certificate_signing_request_v1.md
│ ├── cluster_role.md
│ ├── cluster_role_binding.md
│ ├── cluster_role_binding_v1.md
│ ├── cluster_role_v1.md
│ ├── config_map.md
│ ├── config_map_v1.md
│ ├── config_map_v1_data.md
│ ├── cron_job.md
│ ├── cron_job_v1.md
│ ├── csi_driver.md
│ ├── csi_driver_v1.md
│ ├── daemon_set_v1.md
│ ├── daemonset.md
│ ├── default_service_account.md
│ ├── default_service_account_v1.md
│ ├── deployment.md
│ ├── deployment_v1.md
│ ├── endpoint_slice_v1.md
│ ├── endpoints.md
│ ├── endpoints_v1.md
│ ├── env.md
│ ├── horizontal_pod_autoscaler.md
│ ├── horizontal_pod_autoscaler_v1.md
│ ├── horizontal_pod_autoscaler_v2.md
│ ├── horizontal_pod_autoscaler_v2beta2.md
│ ├── ingress.md
│ ├── ingress_class.md
│ ├── ingress_class_v1.md
│ ├── ingress_v1.md
│ ├── job.md
│ ├── job_v1.md
│ ├── labels.md
│ ├── limit_range.md
│ ├── limit_range_v1.md
│ ├── manifest.md
│ ├── mutating_webhook_configuration.md
│ ├── mutating_webhook_configuration_v1.md
│ ├── namespace.md
│ ├── namespace_v1.md
│ ├── network_policy.md
│ ├── network_policy_v1.md
│ ├── node_taint.md
│ ├── persistent_volume.md
│ ├── persistent_volume_claim.md
│ ├── persistent_volume_claim_v1.md
│ ├── persistent_volume_v1.md
│ ├── pod.md
│ ├── pod_disruption_budget.md
│ ├── pod_disruption_budget_v1.md
│ ├── pod_security_policy.md
│ ├── pod_security_policy_v1beta1.md
│ ├── pod_v1.md
│ ├── priority_class.md
│ ├── priority_class_v1.md
│ ├── replication_controller.md
│ ├── replication_controller_v1.md
│ ├── resource_quota.md
│ ├── resource_quota_v1.md
│ ├── role.md
│ ├── role_binding.md
│ ├── role_binding_v1.md
│ ├── role_v1.md
│ ├── runtime_class_v1.md
│ ├── secret.md
│ ├── secret_v1.md
│ ├── secret_v1_data.md
│ ├── service.md
│ ├── service_account.md
│ ├── service_account_v1.md
│ ├── service_v1.md
│ ├── stateful_set.md
│ ├── stateful_set_v1.md
│ ├── storage_class.md
│ ├── storage_class_v1.md
│ ├── token_request_v1.md
│ ├── validating_webhook_configuration.md
│ └── validating_webhook_configuration_v1.md
├── examples
├── data-sources
│ ├── all_namespaces
│ │ ├── example_1.tf
│ │ └── example_2.tf
│ ├── config_map
│ │ ├── example_1.tf
│ │ └── example_2.tf
│ ├── config_map_v1
│ │ ├── example_1.tf
│ │ └── example_2.tf
│ ├── endpoints_v1
│ │ ├── example_1.tf
│ │ └── example_2.tf
│ ├── ingress
│ │ ├── example_1.tf
│ │ └── example_2.tf
│ ├── ingress_v1
│ │ ├── example_1.tf
│ │ └── example_2.tf
│ ├── mutating_webhook_configuration_v1
│ │ ├── example_1.tf
│ │ └── example_2.tf
│ ├── namespace
│ │ ├── example_1.tf
│ │ └── example_2.tf
│ ├── namespace_v1
│ │ ├── example_1.tf
│ │ └── example_2.tf
│ ├── nodes
│ │ ├── example_1.tf
│ │ ├── example_2.tf
│ │ ├── example_3.tf
│ │ ├── example_4.tf
│ │ ├── example_5.tf
│ │ └── example_6.tf
│ ├── persistent_volume_claim
│ │ ├── example_1.tf
│ │ └── example_2.tf
│ ├── persistent_volume_claim_v1
│ │ ├── example_1.tf
│ │ └── example_2.tf
│ ├── persistent_volume_v1
│ │ ├── example_1.tf
│ │ └── example_2.tf
│ ├── pod
│ │ ├── example_1.tf
│ │ └── example_2.tf
│ ├── pod_v1
│ │ ├── example_1.tf
│ │ └── example_2.tf
│ ├── resource
│ │ ├── example_1.tf
│ │ └── example_2.tf
│ ├── resources
│ │ ├── example_1.tf
│ │ ├── example_2.tf
│ │ ├── example_3.tf
│ │ └── example_4.tf
│ ├── secret
│ │ ├── example_1.tf
│ │ ├── example_2.tf
│ │ ├── example_3.tf
│ │ └── example_4.tf
│ ├── secret_v1
│ │ ├── example_1.tf
│ │ ├── example_2.tf
│ │ ├── example_3.tf
│ │ └── example_4.tf
│ ├── service
│ │ ├── example_1.tf
│ │ └── example_2.tf
│ ├── service_account
│ │ ├── example_1.tf
│ │ └── example_2.tf
│ ├── service_account_v1
│ │ ├── example_1.tf
│ │ └── example_2.tf
│ └── service_v1
│ │ ├── example_1.tf
│ │ └── example_2.tf
├── example_1.tf
├── example_2.tf
├── example_3.tf
├── example_4.tf
├── example_5.tf
├── example_6.tf
├── example_7.tf
├── example_8.tf
├── functions
│ ├── manifest_decode
│ │ └── example_1.tf
│ ├── manifest_decode_multi
│ │ └── example_1.tf
│ └── manifest_encode
│ │ └── example_1.tf
└── resources
│ ├── annotations
│ ├── example_1.tf
│ └── example_2.tf
│ ├── api_service
│ └── example_1.tf
│ ├── api_service_v1
│ └── example_1.tf
│ ├── certificate_signing_request
│ └── example_1.tf
│ ├── certificate_signing_request_v1
│ └── example_1.tf
│ ├── cluster_role
│ ├── example_1.tf
│ └── example_2.tf
│ ├── cluster_role_binding
│ └── example_1.tf
│ ├── cluster_role_binding_v1
│ └── example_1.tf
│ ├── cluster_role_v1
│ ├── example_1.tf
│ └── example_2.tf
│ ├── config_map
│ └── example_1.tf
│ ├── config_map_v1
│ └── example_1.tf
│ ├── config_map_v1_data
│ └── example_1.tf
│ ├── cron_job
│ └── example_1.tf
│ ├── cron_job_v1
│ └── example_1.tf
│ ├── csi_driver
│ └── example_1.tf
│ ├── csi_driver_v1
│ └── example_1.tf
│ ├── daemon_set_v1
│ ├── example_1.tf
│ └── example_2.tf
│ ├── daemonset
│ ├── example_1.tf
│ └── example_2.tf
│ ├── default_service_account
│ └── example_1.tf
│ ├── default_service_account_v1
│ └── example_1.tf
│ ├── deployment
│ ├── example_1.tf
│ └── example_2.tf
│ ├── deployment_v1
│ ├── example_1.tf
│ └── example_2.tf
│ ├── endpoint_slice_v1
│ └── example_1.tf
│ ├── endpoints
│ └── example_1.tf
│ ├── endpoints_v1
│ └── example_1.tf
│ ├── env
│ └── example_1.tf
│ ├── horizontal_pod_autoscaler
│ ├── example_1.tf
│ ├── example_2.tf
│ └── example_3.tf
│ ├── horizontal_pod_autoscaler_v1
│ └── example_1.tf
│ ├── horizontal_pod_autoscaler_v2
│ ├── example_1.tf
│ └── example_2.tf
│ ├── horizontal_pod_autoscaler_v2beta2
│ ├── example_1.tf
│ └── example_2.tf
│ ├── ingress
│ ├── example_1.tf
│ └── example_2.tf
│ ├── ingress_class
│ └── example_1.tf
│ ├── ingress_class_v1
│ └── example_1.tf
│ ├── ingress_v1
│ ├── example_1.tf
│ └── example_2.tf
│ ├── job
│ ├── example_1.tf
│ └── example_2.tf
│ ├── job_v1
│ ├── example_1.tf
│ └── example_2.tf
│ ├── labels
│ └── example_1.tf
│ ├── limit_range
│ └── example_1.tf
│ ├── limit_range_v1
│ └── example_1.tf
│ ├── manifest
│ ├── example_1.tf
│ ├── example_2.tf
│ ├── example_3.tf
│ ├── example_4.tf
│ ├── example_5.tf
│ └── example_6.tf
│ ├── mutating_webhook_configuration
│ └── example_1.tf
│ ├── mutating_webhook_configuration_v1
│ └── example_1.tf
│ ├── namespace
│ └── example_1.tf
│ ├── namespace_v1
│ └── example_1.tf
│ ├── network_policy
│ └── example_1.tf
│ ├── network_policy_v1
│ └── example_1.tf
│ ├── node_taint
│ └── example_1.tf
│ ├── persistent_volume
│ ├── example_1.tf
│ └── example_2.tf
│ ├── persistent_volume_claim
│ └── example_1.tf
│ ├── persistent_volume_claim_v1
│ └── example_1.tf
│ ├── persistent_volume_v1
│ ├── example_1.tf
│ └── example_2.tf
│ ├── pod
│ ├── example_1.tf
│ ├── example_2.tf
│ ├── example_3.tf
│ └── example_4.tf
│ ├── pod_disruption_budget
│ └── example_1.tf
│ ├── pod_disruption_budget_v1
│ └── example_1.tf
│ ├── pod_security_policy
│ └── example_1.tf
│ ├── pod_security_policy_v1beta1
│ └── example_1.tf
│ ├── pod_v1
│ ├── example_1.tf
│ ├── example_2.tf
│ ├── example_3.tf
│ └── example_4.tf
│ ├── priority_class
│ └── example_1.tf
│ ├── priority_class_v1
│ └── example_1.tf
│ ├── replication_controller
│ └── example_1.tf
│ ├── replication_controller_v1
│ └── example_1.tf
│ ├── resource_quota
│ └── example_1.tf
│ ├── resource_quota_v1
│ └── example_1.tf
│ ├── role
│ └── example_1.tf
│ ├── role_binding
│ └── example_1.tf
│ ├── role_binding_v1
│ └── example_1.tf
│ ├── role_v1
│ └── example_1.tf
│ ├── runtime_class_v1
│ └── example_1.tf
│ ├── secret
│ ├── example_1.tf
│ ├── example_2.tf
│ ├── example_3.tf
│ └── example_4.tf
│ ├── secret_v1
│ ├── example_1.tf
│ ├── example_2.tf
│ ├── example_3.tf
│ └── example_4.tf
│ ├── service
│ ├── example_1.tf
│ └── example_2.tf
│ ├── service_account
│ └── example_1.tf
│ ├── service_account_v1
│ └── example_1.tf
│ ├── service_v1
│ ├── example_1.tf
│ └── example_2.tf
│ ├── stateful_set
│ └── example_1.tf
│ ├── stateful_set_v1
│ └── example_1.tf
│ ├── storage_class
│ └── example_1.tf
│ ├── storage_class_v1
│ └── example_1.tf
│ ├── token_request_v1
│ └── example_1.tf
│ ├── validating_webhook_configuration
│ └── example_1.tf
│ └── validating_webhook_configuration_v1
│ └── example_1.tf
├── go.mod
├── go.sum
├── internal
├── framework
│ └── provider
│ │ ├── authenticationv1
│ │ ├── authenticationv1_test.go
│ │ ├── ephemeral_token_request_v1.go
│ │ └── ephemeral_token_request_v1_test.go
│ │ ├── certificatesv1
│ │ ├── certificatesv1_test.go
│ │ ├── ephemeral_certificate_signing_request_v1.go
│ │ └── ephemeral_certificate_signing_request_v1_test.go
│ │ ├── functions
│ │ ├── decode.go
│ │ ├── encode.go
│ │ ├── functions_test.go
│ │ ├── manifest_decode.go
│ │ ├── manifest_decode_multi.go
│ │ ├── manifest_decode_multi_test.go
│ │ ├── manifest_decode_test.go
│ │ ├── manifest_encode.go
│ │ ├── manifest_encode_test.go
│ │ └── testdata
│ │ │ ├── decode_manifest_invalid.yaml
│ │ │ ├── decode_manifest_invalid_syntax.yaml
│ │ │ ├── decode_multi.yaml
│ │ │ └── decode_single.yaml
│ │ ├── provider.go
│ │ └── provider_configure.go
└── mux
│ └── mux.go
├── kubernetes
├── data_source_kubernetes_all_namespaces.go
├── data_source_kubernetes_all_namespaces_test.go
├── data_source_kubernetes_config_map_v1.go
├── data_source_kubernetes_config_map_v1_test.go
├── data_source_kubernetes_endpoints_v1.go
├── data_source_kubernetes_endpoints_v1_test.go
├── data_source_kubernetes_ingress.go
├── data_source_kubernetes_ingress_test.go
├── data_source_kubernetes_ingress_v1.go
├── data_source_kubernetes_ingress_v1_test.go
├── data_source_kubernetes_mutating_webhook_configuration_v1.go
├── data_source_kubernetes_mutating_webhook_configuration_v1_test.go
├── data_source_kubernetes_namespace_v1.go
├── data_source_kubernetes_namespace_v1_test.go
├── data_source_kubernetes_nodes.go
├── data_source_kubernetes_nodes_test.go
├── data_source_kubernetes_persistent_volume_claim_v1.go
├── data_source_kubernetes_persistent_volume_claim_v1_test.go
├── data_source_kubernetes_persistent_volume_v1.go
├── data_source_kubernetes_persistent_volume_v1_test.go
├── data_source_kubernetes_pod_v1.go
├── data_source_kubernetes_pod_v1_test.go
├── data_source_kubernetes_secret_v1.go
├── data_source_kubernetes_secret_v1_test.go
├── data_source_kubernetes_server_version.go
├── data_source_kubernetes_server_version_test.go
├── data_source_kubernetes_service_account_v1.go
├── data_source_kubernetes_service_account_v1_test.go
├── data_source_kubernetes_service_v1.go
├── data_source_kubernetes_service_v1_test.go
├── data_source_kubernetes_storage_class_v1.go
├── data_source_kubernetes_storage_class_v1_test.go
├── diff_supress_funcs.go
├── event_helpers.go
├── options_helpers.go
├── patch_operations.go
├── patch_operations_test.go
├── provider.go
├── provider_ignore_metadata_test.go
├── provider_test.go
├── resource_kubernetes_annotations.go
├── resource_kubernetes_annotations_test.go
├── resource_kubernetes_api_service_v1.go
├── resource_kubernetes_api_service_v1_test.go
├── resource_kubernetes_certificate_signing_request.go
├── resource_kubernetes_certificate_signing_request_test.go
├── resource_kubernetes_certificate_signing_request_v1.go
├── resource_kubernetes_certificate_signing_request_v1_test.go
├── resource_kubernetes_cluster_role_binding_v1.go
├── resource_kubernetes_cluster_role_binding_v1_test.go
├── resource_kubernetes_cluster_role_v1.go
├── resource_kubernetes_cluster_role_v1_test.go
├── resource_kubernetes_config_map_v1.go
├── resource_kubernetes_config_map_v1_data.go
├── resource_kubernetes_config_map_v1_data_test.go
├── resource_kubernetes_config_map_v1_test.go
├── resource_kubernetes_cron_job_migrate.go
├── resource_kubernetes_cron_job_v1.go
├── resource_kubernetes_cron_job_v1_test.go
├── resource_kubernetes_cron_job_v1beta1.go
├── resource_kubernetes_cron_job_v1beta1_test.go
├── resource_kubernetes_csi_driver_v1.go
├── resource_kubernetes_csi_driver_v1_test.go
├── resource_kubernetes_csi_driver_v1beta1.go
├── resource_kubernetes_csi_driver_v1beta1_test.go
├── resource_kubernetes_daemon_set_v1.go
├── resource_kubernetes_daemon_set_v1_test.go
├── resource_kubernetes_daemonset_migrate.go
├── resource_kubernetes_default_service_account_v1.go
├── resource_kubernetes_default_service_account_v1_test.go
├── resource_kubernetes_deployment_migrate.go
├── resource_kubernetes_deployment_v1.go
├── resource_kubernetes_deployment_v1_test.go
├── resource_kubernetes_endpoints_v1.go
├── resource_kubernetes_endpoints_v1_test.go
├── resource_kubernetes_endpointslice_v1.go
├── resource_kubernetes_endpointslice_v1_test.go
├── resource_kubernetes_env.go
├── resource_kubernetes_env_test.go
├── resource_kubernetes_horizontal_pod_autoscaler.go
├── resource_kubernetes_horizontal_pod_autoscaler_test.go
├── resource_kubernetes_horizontal_pod_autoscaler_v1.go
├── resource_kubernetes_horizontal_pod_autoscaler_v1_test.go
├── resource_kubernetes_horizontal_pod_autoscaler_v2.go
├── resource_kubernetes_horizontal_pod_autoscaler_v2_test.go
├── resource_kubernetes_horizontal_pod_autoscaler_v2beta2.go
├── resource_kubernetes_horizontal_pod_autoscaler_v2beta2_test.go
├── resource_kubernetes_ingress_class_v1.go
├── resource_kubernetes_ingress_class_v1_test.go
├── resource_kubernetes_ingress_migrate.go
├── resource_kubernetes_ingress_v1.go
├── resource_kubernetes_ingress_v1_test.go
├── resource_kubernetes_ingress_v1beta1.go
├── resource_kubernetes_ingress_v1beta1_test.go
├── resource_kubernetes_job_migrate.go
├── resource_kubernetes_job_v1.go
├── resource_kubernetes_job_v1_test.go
├── resource_kubernetes_labels.go
├── resource_kubernetes_labels_test.go
├── resource_kubernetes_limit_range_v1.go
├── resource_kubernetes_limit_range_v1_test.go
├── resource_kubernetes_mutating_webhook_configuration.go
├── resource_kubernetes_mutating_webhook_configuration_test.go
├── resource_kubernetes_mutating_webhook_configuration_v1.go
├── resource_kubernetes_mutating_webhook_configuration_v1_test.go
├── resource_kubernetes_namespace_v1.go
├── resource_kubernetes_namespace_v1_test.go
├── resource_kubernetes_network_policy_v1.go
├── resource_kubernetes_network_policy_v1_test.go
├── resource_kubernetes_node_taint.go
├── resource_kubernetes_node_taint_test.go
├── resource_kubernetes_persistent_volume_claim_v1.go
├── resource_kubernetes_persistent_volume_claim_v1_test.go
├── resource_kubernetes_persistent_volume_v1.go
├── resource_kubernetes_persistent_volume_v1_test.go
├── resource_kubernetes_pod_disruption_budget.go
├── resource_kubernetes_pod_disruption_budget_test.go
├── resource_kubernetes_pod_disruption_budget_v1.go
├── resource_kubernetes_pod_disruption_budget_v1_test.go
├── resource_kubernetes_pod_migrate.go
├── resource_kubernetes_pod_security_policy_v1beta1.go
├── resource_kubernetes_pod_security_policy_v1beta1_test.go
├── resource_kubernetes_pod_v1.go
├── resource_kubernetes_pod_v1_affinity_test.go
├── resource_kubernetes_pod_v1_test.go
├── resource_kubernetes_priority_class_v1.go
├── resource_kubernetes_priority_class_v1_test.go
├── resource_kubernetes_replication_controller_migrate.go
├── resource_kubernetes_replication_controller_v1.go
├── resource_kubernetes_replication_controller_v1_test.go
├── resource_kubernetes_resource_quota_v1.go
├── resource_kubernetes_resource_quota_v1_test.go
├── resource_kubernetes_role_binding_v1.go
├── resource_kubernetes_role_binding_v1_test.go
├── resource_kubernetes_role_v1.go
├── resource_kubernetes_role_v1_test.go
├── resource_kubernetes_runtime_class_v1.go
├── resource_kubernetes_runtime_class_v1_test.go
├── resource_kubernetes_secret_v1.go
├── resource_kubernetes_secret_v1_data.go
├── resource_kubernetes_secret_v1_data_test.go
├── resource_kubernetes_secret_v1_test.go
├── resource_kubernetes_service_account_v1.go
├── resource_kubernetes_service_account_v1_test.go
├── resource_kubernetes_service_migrate.go
├── resource_kubernetes_service_v1.go
├── resource_kubernetes_service_v1_test.go
├── resource_kubernetes_stateful_set_migrate.go
├── resource_kubernetes_stateful_set_v1.go
├── resource_kubernetes_stateful_set_v1_test.go
├── resource_kubernetes_stateful_set_v1_with_volume_device_test.go
├── resource_kubernetes_storage_class_v1.go
├── resource_kubernetes_storage_class_v1_test.go
├── resource_kubernetes_tokenrequest_v1.go
├── resource_kubernetes_tokenrequest_v1_test.go
├── resource_kubernetes_validating_webhook_configuration_v1.go
├── resource_kubernetes_validating_webhook_configuration_v1_test.go
├── resource_kubernetes_validating_webhook_configuration_v1beta1.go
├── resource_kubernetes_validating_webhook_configuration_v1beta1_test.go
├── schema_affinity_spec.go
├── schema_backend_spec.go
├── schema_backend_spec_v1.go
├── schema_container.go
├── schema_cron_job_spec_v1.go
├── schema_cron_job_spec_v1beta1.go
├── schema_endpoints.go
├── schema_endpointslice.go
├── schema_helpers.go
├── schema_horizontal_pod_autoscaler.go
├── schema_job_spec.go
├── schema_label_selector.go
├── schema_metadata.go
├── schema_node_selector_term.go
├── schema_node_spec.go
├── schema_persistent_volume_claim.go
├── schema_pod_spec.go
├── schema_pod_template.go
├── schema_rbac.go
├── schema_resources_migrate.go
├── schema_resources_migrate_test.go
├── schema_rule_with_operations.go
├── schema_stateful_set_spec.go
├── schema_token_request.go
├── schema_volume_source.go
├── schema_webhook_client_config.go
├── structure_api_service_spec.go
├── structure_cron_job_v1.go
├── structure_cron_job_v1beta1.go
├── structure_csi_driver.go
├── structure_csi_driver_v1.go
├── structure_endpoints.go
├── structure_endpoints_test.go
├── structure_endpointslice.go
├── structure_horizontal_pod_autoscaler.go
├── structure_horizontal_pod_autoscaler_v2.go
├── structure_horizontal_pod_autoscaler_v2beta2.go
├── structure_hostalias.go
├── structure_ingress_spec.go
├── structure_ingress_spec_test.go
├── structure_ingress_spec_v1.go
├── structure_ingress_spec_v1_test.go
├── structure_job.go
├── structure_label_selector.go
├── structure_label_selector_test.go
├── structure_mutating_webhook_configuration.go
├── structure_network_policy.go
├── structure_network_policy_test.go
├── structure_persistent_volume_claim.go
├── structure_persistent_volume_spec.go
├── structure_persistent_volume_spec_test.go
├── structure_pod_disruption_budget.go
├── structure_pod_disruption_budget_v1.go
├── structure_pod_security_policy_spec.go
├── structure_service_spec.go
├── structure_validating_webhook_configuration.go
├── structures.go
├── structures_admissionregistration.go
├── structures_affinity.go
├── structures_certificate_signing_request.go
├── structures_certificate_signing_request_v1.go
├── structures_container.go
├── structures_container_test.go
├── structures_daemonset.go
├── structures_deployment.go
├── structures_env.go
├── structures_node.go
├── structures_pod.go
├── structures_pod_test.go
├── structures_rbac.go
├── structures_rbac_test.go
├── structures_replication_controller.go
├── structures_stateful_set.go
├── structures_storage_class.go
├── structures_test.go
├── structures_tokenrequest.go
├── test-dfa
│ ├── config-basic
│ │ ├── cluster.tf
│ │ ├── crd.tf
│ │ └── workspace.tf
│ └── deferred_actions_test.go
├── test-fixtures
│ ├── binary.data
│ ├── binary2.data
│ ├── kube-config-secondary.yaml
│ └── kube-config.yaml
├── test-infra
│ ├── README.md
│ ├── aks
│ │ ├── README.md
│ │ ├── main.tf
│ │ ├── outputs.tf
│ │ ├── terraform.tf
│ │ └── variables.tf
│ ├── aws-ebs-csi-driver
│ │ ├── README.md
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ └── versions.tf
│ ├── eks
│ │ ├── README.md
│ │ ├── main.tf
│ │ ├── terraform.tf
│ │ └── variables.tf
│ ├── gke
│ │ ├── README.md
│ │ ├── main.tf
│ │ ├── outputs.tf
│ │ ├── terraform.tf
│ │ └── variables.tf
│ ├── tfproviderdocs
│ │ └── main.tf
│ └── typhoon-aws
│ │ ├── README.md
│ │ ├── main.tf
│ │ ├── module_1_19.tf
│ │ ├── module_1_20.tf
│ │ ├── variables.tf
│ │ └── versions.tf
├── validators.go
└── validators_test.go
├── main.go
├── manifest
├── .gitignore
├── GNUmakefile
├── const.go
├── morph
│ ├── morph.go
│ ├── morph_test.go
│ ├── scaffold.go
│ └── scaffold_test.go
├── openapi
│ ├── foundry_v2.go
│ ├── foundry_v2_test.go
│ ├── foundry_v3.go
│ ├── foundry_v3_test.go
│ ├── schema.go
│ ├── schema_test.go
│ └── testdata
│ │ └── k8s-swagger.json
├── payload
│ ├── from_value.go
│ ├── from_value_test.go
│ ├── to_value.go
│ └── to_value_test.go
├── provider
│ ├── apply.go
│ ├── cache.go
│ ├── clients.go
│ ├── configure.go
│ ├── datasource.go
│ ├── diagnostics.go
│ ├── getproviderschema.go
│ ├── import.go
│ ├── plan.go
│ ├── plugin.go
│ ├── provider.go
│ ├── provider_config.go
│ ├── read.go
│ ├── resource.go
│ ├── resource_test.go
│ ├── resourceidentity.go
│ ├── server.go
│ ├── upgrade_state.go
│ ├── validate.go
│ └── waiter.go
├── scripts
│ └── check_examples.sh
└── test
│ ├── acceptance
│ ├── acceptance_test.go
│ ├── certmanager_test.go
│ ├── computed_attr_test.go
│ ├── configmap_test.go
│ ├── cronjob_test.go
│ ├── customresource_multiversion_test.go
│ ├── customresource_test.go
│ ├── customresource_x_preserve_unknown_fields_test.go
│ ├── customresourcedefinition_oapi3_metadata_test.go
│ ├── customresourcedefinition_oapi3_test.go
│ ├── customresourcedefinition_test.go
│ ├── daemonset_test.go
│ ├── datasource_resource_status_test.go
│ ├── datasource_resources_test.go
│ ├── datasource_test.go
│ ├── delete_not_found_test.go
│ ├── deployment_test.go
│ ├── empty_block_test.go
│ ├── exists_test.go
│ ├── fieldmanager_test.go
│ ├── fix_list_attribute_update_test.go
│ ├── hpa_test.go
│ ├── import_test.go
│ ├── job_test.go
│ ├── namespace_test.go
│ ├── nonstructuredcustomresource_test.go
│ ├── secret_test.go
│ ├── service_cluster_ip_test.go
│ ├── service_external_name_test.go
│ ├── service_load_balancer_test.go
│ ├── service_node_port_test.go
│ ├── service_test.go
│ ├── statefulset_test.go
│ ├── testdata
│ │ ├── CertManager
│ │ │ ├── certmanager.tf
│ │ │ └── variables.tf
│ │ ├── ComputedFields
│ │ │ ├── computed.tf
│ │ │ ├── variables.tf
│ │ │ └── webhook
│ │ │ │ ├── Dockerfile
│ │ │ │ ├── deploy
│ │ │ │ ├── variables.tf
│ │ │ │ └── webhook.tf
│ │ │ │ ├── go.mod
│ │ │ │ ├── go.sum
│ │ │ │ └── main.go
│ │ ├── ConfigMap
│ │ │ ├── configmap.tf
│ │ │ ├── configmap_modified.tf
│ │ │ └── variables.tf
│ │ ├── CronJob
│ │ │ ├── cronjob.tf
│ │ │ └── variables.tf
│ │ ├── CustomResource
│ │ │ ├── custom_resource.tf
│ │ │ └── variables.tf
│ │ ├── CustomResourceDefinition-multiversion
│ │ │ ├── customresourcedefinition.tf
│ │ │ └── variables.tf
│ │ ├── CustomResourceDefinition
│ │ │ ├── customresourcedefinition.tf
│ │ │ └── variables.tf
│ │ ├── CustomResourceOAPI3-metadata
│ │ │ ├── custom_resource.tf
│ │ │ ├── custom_resource_definition.tf
│ │ │ └── variables.tf
│ │ ├── CustomResourceOAPI3
│ │ │ ├── custom_resource.tf
│ │ │ ├── custom_resource_definition.tf
│ │ │ └── variables.tf
│ │ ├── DaemonSet
│ │ │ ├── daemonset.tf
│ │ │ └── variables.tf
│ │ ├── DataSourceResources
│ │ │ └── pods_data_source.tf
│ │ ├── DeleteNotFoundTest
│ │ │ ├── resource.tf
│ │ │ └── variables.tf
│ │ ├── Deployment
│ │ │ ├── deployment.tf
│ │ │ └── variables.tf
│ │ ├── EmptyBlock
│ │ │ ├── step1.tf
│ │ │ ├── step2.tf
│ │ │ └── variables.tf
│ │ ├── FieldManager
│ │ │ ├── field_manager.tf
│ │ │ └── variables.tf
│ │ ├── FixListAttributeUpdate
│ │ │ ├── step1.tf
│ │ │ ├── step2.tf
│ │ │ └── variables.tf
│ │ ├── HPA
│ │ │ ├── hpa.tf
│ │ │ ├── hpa_modified.tf
│ │ │ └── variables.tf
│ │ ├── Import
│ │ │ ├── import.tf
│ │ │ └── variables.tf
│ │ ├── Job
│ │ │ ├── job.tf
│ │ │ └── variables.tf
│ │ ├── Namespace
│ │ │ ├── namespace.tf
│ │ │ ├── namespace_modified.tf
│ │ │ └── variables.tf
│ │ ├── NonStructuredCustomResource
│ │ │ ├── custom_resource.tf
│ │ │ └── variables.tf
│ │ ├── NonStructuredCustomResourceDefinition
│ │ │ ├── customresourcedefinition.tf
│ │ │ └── variables.tf
│ │ ├── Secret
│ │ │ ├── secret.tf
│ │ │ └── variables.tf
│ │ ├── Service
│ │ │ ├── service.tf
│ │ │ ├── service_modified.tf
│ │ │ ├── test
│ │ │ │ ├── service.tf
│ │ │ │ └── variables.tf
│ │ │ └── variables.tf
│ │ ├── Service_ClusterIP
│ │ │ ├── service.tf
│ │ │ ├── service_modified.tf
│ │ │ └── variables.tf
│ │ ├── Service_ExternalName
│ │ │ ├── service.tf
│ │ │ ├── service_modified.tf
│ │ │ └── variables.tf
│ │ ├── Service_LoadBalancer
│ │ │ ├── service.tf
│ │ │ ├── service_modified.tf
│ │ │ └── variables.tf
│ │ ├── Service_NodePort
│ │ │ ├── service.tf
│ │ │ ├── service_modified.tf
│ │ │ └── variables.tf
│ │ ├── StatefulSet
│ │ │ ├── statefulset.tf
│ │ │ └── variables.tf
│ │ ├── Wait
│ │ │ ├── variables.tf
│ │ │ ├── wait_for_condition_invalid.tf
│ │ │ ├── wait_for_conditions.tf
│ │ │ ├── wait_for_fields_annotations.tf
│ │ │ ├── wait_for_fields_pod.tf
│ │ │ └── wait_for_rollout.tf
│ │ ├── WaitFor
│ │ │ ├── variables.tf
│ │ │ └── wait_for_fields_pod.tf
│ │ ├── alreadyExists
│ │ │ ├── configmap.tf
│ │ │ └── variables.tf
│ │ ├── datasource-resource-status
│ │ │ ├── step1.tf
│ │ │ ├── step2.tf
│ │ │ └── variables.tf
│ │ ├── datasource
│ │ │ ├── step1.tf
│ │ │ ├── step2.tf
│ │ │ └── variables.tf
│ │ ├── datasource_plural
│ │ │ ├── step1.tf
│ │ │ └── step2.tf
│ │ └── x-kubernetes-preserve-unknown-fields
│ │ │ ├── crd
│ │ │ ├── test.tf
│ │ │ └── variables.tf
│ │ │ ├── test-cr-1.tf
│ │ │ ├── test-cr-2.tf
│ │ │ ├── test-cr-3.tf
│ │ │ ├── test-cr-4.tf
│ │ │ └── variables.tf
│ ├── wait_for_test.go
│ └── wait_test.go
│ ├── helper
│ ├── kubernetes
│ │ └── kubernetes_helper.go
│ └── state
│ │ └── state_helper.go
│ ├── logging
│ ├── context.go
│ ├── context_test.go
│ ├── environment_variables.go
│ ├── helper_resource.go
│ ├── helper_resource_test.go
│ ├── helper_schema.go
│ ├── helper_schema_test.go
│ └── keys.go
│ └── plugintest
│ ├── config.go
│ ├── doc.go
│ ├── environment_variables.go
│ ├── guard.go
│ ├── helper.go
│ ├── util.go
│ ├── working_dir.go
│ └── working_dir_json_test.go
├── renovate.json
├── scripts
├── build.sh
├── changelog-links.sh
├── errcheck.sh
├── errcheck_excludes.txt
├── fmt-examples.sh
├── gofmtcheck.sh
├── gogetcookie.sh
└── markdown-link-check.sh
├── templates
├── data-sources
│ ├── all_namespaces.md.tmpl
│ ├── config_map.md.tmpl
│ ├── config_map_v1.md.tmpl
│ ├── endpoints_v1.md.tmpl
│ ├── ingress.md.tmpl
│ ├── ingress_v1.md.tmpl
│ ├── mutating_webhook_configuration_v1.md.tmpl
│ ├── namespace.md.tmpl
│ ├── namespace_v1.md.tmpl
│ ├── nodes.md.tmpl
│ ├── persistent_volume_claim.md.tmpl
│ ├── persistent_volume_claim_v1.md.tmpl
│ ├── persistent_volume_v1.md.tmpl
│ ├── pod.md.tmpl
│ ├── pod_v1.md.tmpl
│ ├── resource.md.tmpl
│ ├── resources.md.tmpl
│ ├── secret.md.tmpl
│ ├── secret_v1.md.tmpl
│ ├── server_version.md.tmpl
│ ├── service.md.tmpl
│ ├── service_account.md.tmpl
│ ├── service_account_v1.md.tmpl
│ ├── service_v1.md.tmpl
│ ├── storage_class.md.tmpl
│ └── storage_class_v1.md.tmpl
├── functions
│ ├── manifest_decode.md.tmpl
│ ├── manifest_decode_multi.md.tmpl
│ └── manifest_encode.md.tmpl
├── guides
│ ├── alpha-manifest-migration-guide.markdown
│ ├── getting-started.html.markdown
│ ├── v2-upgrade-guide.markdown
│ └── versioned-resources.markdown
├── index.md.tmpl
└── resources
│ ├── annotations.md.tmpl
│ ├── api_service.md.tmpl
│ ├── api_service_v1.md.tmpl
│ ├── certificate_signing_request.md.tmpl
│ ├── certificate_signing_request_v1.md.tmpl
│ ├── cluster_role.md.tmpl
│ ├── cluster_role_binding.md.tmpl
│ ├── cluster_role_binding_v1.md.tmpl
│ ├── cluster_role_v1.md.tmpl
│ ├── config_map.md.tmpl
│ ├── config_map_v1.md.tmpl
│ ├── config_map_v1_data.md.tmpl
│ ├── cron_job.md.tmpl
│ ├── cron_job_v1.md.tmpl
│ ├── csi_driver.md.tmpl
│ ├── csi_driver_v1.md.tmpl
│ ├── daemon_set_v1.md.tmpl
│ ├── daemonset.md.tmpl
│ ├── default_service_account.md.tmpl
│ ├── default_service_account_v1.md.tmpl
│ ├── deployment.md.tmpl
│ ├── deployment_v1.md.tmpl
│ ├── endpoint_slice_v1.md.tmpl
│ ├── endpoints.md.tmpl
│ ├── endpoints_v1.md.tmpl
│ ├── env.md.tmpl
│ ├── horizontal_pod_autoscaler.md.tmpl
│ ├── horizontal_pod_autoscaler_v1.md.tmpl
│ ├── horizontal_pod_autoscaler_v2.md.tmpl
│ ├── horizontal_pod_autoscaler_v2beta2.md.tmpl
│ ├── ingress.md.tmpl
│ ├── ingress_class.md.tmpl
│ ├── ingress_class_v1.md.tmpl
│ ├── ingress_v1.md.tmpl
│ ├── job.md.tmpl
│ ├── job_v1.md.tmpl
│ ├── labels.md.tmpl
│ ├── limit_range.md.tmpl
│ ├── limit_range_v1.md.tmpl
│ ├── manifest.md.tmpl
│ ├── mutating_webhook_configuration.md.tmpl
│ ├── mutating_webhook_configuration_v1.md.tmpl
│ ├── namespace.md.tmpl
│ ├── namespace_v1.md.tmpl
│ ├── network_policy.md.tmpl
│ ├── network_policy_v1.md.tmpl
│ ├── node_taint.md.tmpl
│ ├── persistent_volume.md.tmpl
│ ├── persistent_volume_claim.md.tmpl
│ ├── persistent_volume_claim_v1.md.tmpl
│ ├── persistent_volume_v1.md.tmpl
│ ├── pod.md.tmpl
│ ├── pod_disruption_budget.md.tmpl
│ ├── pod_disruption_budget_v1.md.tmpl
│ ├── pod_security_policy.md.tmpl
│ ├── pod_security_policy_v1beta1.md.tmpl
│ ├── pod_v1.md.tmpl
│ ├── priority_class.md.tmpl
│ ├── priority_class_v1.md.tmpl
│ ├── replication_controller.md.tmpl
│ ├── replication_controller_v1.md.tmpl
│ ├── resource_quota.md.tmpl
│ ├── resource_quota_v1.md.tmpl
│ ├── role.md.tmpl
│ ├── role_binding.md.tmpl
│ ├── role_binding_v1.md.tmpl
│ ├── role_v1.md.tmpl
│ ├── runtime_class_v1.md.tmpl
│ ├── secret.md.tmpl
│ ├── secret_v1.md.tmpl
│ ├── service.md.tmpl
│ ├── service_account.md.tmpl
│ ├── service_account_v1.md.tmpl
│ ├── service_v1.md.tmpl
│ ├── stateful_set.md.tmpl
│ ├── stateful_set_v1.md.tmpl
│ ├── storage_class.md.tmpl
│ ├── storage_class_v1.md.tmpl
│ ├── token_request_v1.md.tmpl
│ ├── validating_webhook_configuration.md.tmpl
│ └── validating_webhook_configuration_v1.md.tmpl
├── terraform-registry-manifest.json
├── tools
└── tools.go
├── util
├── util.go
└── util_test.go
└── version
└── VERSION
/.changelog/1519.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `resource/kubernetes_storage_class`: Fix an issue when changing the value of the attribute `allow_volume_expansion` does not alter Kubernetes resource.
3 | ```
4 |
5 | ```release-note:bug
6 | `resource/kubernetes_storage_class_v1`: Fix an issue when changing the value of the attribute `allow_volume_expansion` does not alter Kubernetes resource.
7 | ```
8 |
--------------------------------------------------------------------------------
/.changelog/1638.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `kubernetes/provider.go`: Add `tls_server_name` kubernetes provider options.
3 | ```
--------------------------------------------------------------------------------
/.changelog/1752.txt:
--------------------------------------------------------------------------------
1 | ```release-note:note
2 | * Add tfplugindocs for autogenerating documentation
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/1802.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | The kubernetes status field is now available in the `kubernetes_resource` datasource
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/1805.txt:
--------------------------------------------------------------------------------
1 | ```release-note:feature
2 | New data source: `kubernetes_endpoints_v1`
3 | ```
--------------------------------------------------------------------------------
/.changelog/1831.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | Add "field_manager" attribute to kubernetes_labels, kubernetes_annotations, kubernetes_config_map_v1_data
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/1833.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | resource/kubernetes_secret: Add a new attribute `wait_for_service_account_token` and corresponding `create` timeout
3 | resource/kubernetes_secret_v1: Add a new attribute `wait_for_service_account_token` and corresponding `create` timeout
4 | ```
5 |
--------------------------------------------------------------------------------
/.changelog/1838.txt:
--------------------------------------------------------------------------------
1 | ```release-note:new-resource
2 | Add resource_kubernetes_env.go
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/1846.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | Added "preemption_policy" attribute to the priority_class resource.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/1849.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | new attribute: Add immutable attribute to resource_config_map
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/1856.txt:
--------------------------------------------------------------------------------
1 | ```release-note:doc
2 | r/kubernetes_service: make `spec.port` block optional
3 | ```
4 |
5 | ```release-note:doc
6 | r/kubernetes_service_v1: make `spec.port` block optional
7 | ```
8 |
--------------------------------------------------------------------------------
/.changelog/1869.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | Add Support for CronJobs in resource_kubernetes_env
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/1883.txt:
--------------------------------------------------------------------------------
1 | ```release-note:doc
2 | `resource/kubernetes_service_account`: mark attribute `default_secret_name` as deprecated
3 | ```
4 |
5 | ```release-note:doc
6 | `resource/kubernetes_service_account_v1`: mark attribute `default_secret_name` as deprecated
7 | ```
8 |
--------------------------------------------------------------------------------
/.changelog/1892.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | Add fs_group_change_policy to security_context
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/1895.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | Add a new optional attribute `runtime_class_name` to `pod.spec`. That affects all resources and data sources that use `pod.spec` directly or as a template.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/1898.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | Make kubernetes_namespace delete idempotent
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/1902.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | Fix an issue with timeouts for `StatefulSet`, `Deployment`, and `DaemonSet` resources when in some cases changes of `Update` or `Create` timeout doesn't affect related actions.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/1915.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | Add a new optional attribute `grpc` to `pod.spec.container.liveness_probe`, `pod.spec.container.readiness_probe`, and `pod.spec.container.startup_probe`. That affects all resources and data sources that use mentioned `pod.spec.container` probes directly or as a template.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/1919.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | Add additional validation on the delete operation to make it idempotent. That affects the following resources:
3 | - kubernetes_priority_class
4 | - kubernetes_replication_controller
5 | - kubernetes_resource_quota
6 | - kubernetes_role
7 | - kubernetes_role_binding
8 | - kubernetes_secret
9 | - kubernetes_service
10 | - kubernetes_service_account
11 | - kubernetes_stateful_set
12 | - kubernetes_storage_class
13 | - kubernetes_validating_webhook_configuration
14 | - kubernetes_validating_webhook_configuration_v1
15 | ```
16 |
--------------------------------------------------------------------------------
/.changelog/1921.txt:
--------------------------------------------------------------------------------
1 | ```release-note:feature
2 | New data source: `kubernetes_nodes`.
3 | ```
4 |
5 | ```release-note:feature
6 | New resource: `kubernetes_node_taint`.
7 | ```
8 |
9 | ```release-note:doc
10 | New data source: `kubernetes_nodes`.
11 | ```
12 |
13 | ```release-note:doc
14 | New resource: `kubernetes_node_taint`.
15 | ```
16 |
--------------------------------------------------------------------------------
/.changelog/1935.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `resource/kubernetes_persistent_volume`: add additional validation on the delete operation to make it idempotent
3 | ```
4 |
5 | ```release-note:enhancement
6 | `resource/kubernetes_persistent_volume_v1`: add additional validation on the delete operation to make it idempotent
7 | ```
8 |
--------------------------------------------------------------------------------
/.changelog/1936.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `resource/kubernetes_ingress_v1`: add create and delete timeouts
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/1947.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `resource/kubernetes_ingress_v1`: make the attribute `spec.ingress_class_name` computed
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/1967.txt:
--------------------------------------------------------------------------------
1 | ```release-note:feature
2 | New data source: `kubernetes_resources`.
3 | ```
4 |
5 | ```release-note:doc
6 | New data source: `kubernetes_resources`.
7 | ```
8 |
--------------------------------------------------------------------------------
/.changelog/1971.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `resource/resource_kubernetes_cron_job_v1`: Add a new attribute `spec.timezone`.
3 | ```
4 |
5 | ```release-note:doc
6 | `resource/resource_kubernetes_cron_job_v1`: Add a new attribute `spec.timezone`.
7 | ```
8 |
--------------------------------------------------------------------------------
/.changelog/1972.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `resource/kubernetes_annotations`: Add a new attribute `template_annotations` that allows adding annotations to resources with pod templates.
3 | ```
4 |
5 | ```release-note:doc
6 | `resource/kubernetes_annotations`: Add a new attribute `template_annotations`.
7 | ```
8 |
--------------------------------------------------------------------------------
/.changelog/1983.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `resource/kubernetes_cron_job_v1`: Fix annotation logic to prevent internalkeys from being removed in templates
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/1989.txt:
--------------------------------------------------------------------------------
1 | ```release-note:doc
2 | `provider`: Add a note regarding the `KUBECONFIG` environment variable.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/1997.txt:
--------------------------------------------------------------------------------
1 | ```release-note:doc
2 | `resource/kubernetes_job`: Add documentation for the attribute `spec.completion_mode`.
3 | ```
4 |
5 | ```release-note:doc
6 | `resource/kubernetes_job_v1`: Add documentation for the attribute `spec.completion_mode`.
7 | ```
8 |
--------------------------------------------------------------------------------
/.changelog/1999.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `resource/kubernetes_network_policy`: Fix an issue when the delete operation may not be idempotent.
3 | ```
4 |
5 | ```release-note:bug
6 | `resource/kubernetes_network_policy_v1`: Fix an issue when the delete operation may not be idempotent.
7 | ```
8 |
9 | ```release-note:bug
10 | `resource/kubernetes_mutating_webhook_configuration`: Fix an issue when the delete operation may not be idempotent.
11 | ```
12 |
13 | ```release-note:bug
14 | `resource/kubernetes_persistent_volume_claim`: Fix an issue when the delete operation may not be idempotent.
15 | ```
16 |
17 | ```release-note:bug
18 | `resource/kubernetes_persistent_volume_claim_v1`: Fix an issue when the delete operation may not be idempotent.
19 | ```
20 |
--------------------------------------------------------------------------------
/.changelog/2006.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `kubernetes/schema_pod_spec.go`: Fix unexpected volumes appearing on plan
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2008.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | kubernetes_manifest: fix crash when waiting on conditions that are not yet present
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2018.txt:
--------------------------------------------------------------------------------
1 | ```release-note:note
2 | manifest/morph.go: Add Diagnostic message when determining a type fails
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2024.txt:
--------------------------------------------------------------------------------
1 | ```release-note:new-resource
2 | `kubernetes/resource_kubernetes_tokenrequest.go`: Add `kubernetes_token_request_v1` resource
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2026.txt:
--------------------------------------------------------------------------------
1 | ```release-note
2 | `kubernetes/schema_pod_spec.go`: Add `scheduler_name` attribute
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2028.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `data_source/kubernetes_secret`: Fix an issue where data_source cannot read secret created with generate_name.
3 | ```
4 |
5 | ```release-note:bug
6 | `data_source/kubernetes_secret_v1`: Fix an issue where data_source cannot read secret created with generate_name.
7 | ```
--------------------------------------------------------------------------------
/.changelog/2046.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `kubernetes/resource_kubernetes_node_taint.go`: Remove MaxItems from taint attribute
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2054.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `resource/kubernetes_manifest`: Fix a panic when constructing the diagnostic message about incompatible attribute types
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2055.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `resource/kubernetes_manifest`: Fix crash when manifest config contains unknown values of unknown type (DynamicPseudoType)
3 | ```
--------------------------------------------------------------------------------
/.changelog/2061.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | Fix diff after import when importing resources containing volume_mount
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2067.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `kubernetes/resource_kubernetes_env.go`: add support for initContainers
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2077.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `resource/kubernetes_node_taint`: Fix an issue when updating taint does not update the ID in the state file.
3 |
4 | ```
5 |
--------------------------------------------------------------------------------
/.changelog/2080.txt:
--------------------------------------------------------------------------------
1 | ```release-note:new-resource
2 | `resource/kubernetes_runtime_class_v1`: Add a new resource `kubernetes_runtime_class_v1`.
3 | ```
--------------------------------------------------------------------------------
/.changelog/2085.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `kubernetes/resource_kubernetes_service_account.go`: Remove `default_secret_name` warning
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2086.txt:
--------------------------------------------------------------------------------
1 | ```release-note:new-resource
2 | `kubernetes/resource_kubernetes_endpointslice.go`: Add kubernetes_endpoint_slice resource
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2099.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `resource/kubernetes_node_taint`: Don't fail when there is a taint in the state file for a node that no longer exists.
3 |
4 | ```
5 |
--------------------------------------------------------------------------------
/.changelog/2118.txt:
--------------------------------------------------------------------------------
1 | ```release-note:feature
2 | `kubernetes/data_source_kubernetes_persistent_volume.go`: Add data source for Kubernetes Persistent Volume Resource
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2119.txt:
--------------------------------------------------------------------------------
1 | ```release-note:feature
2 | `kubernetes/resource_kubernetes_namespace.go`: Add attribute `wait_for_default_service_account` to namespaces which will force Terraform to wait until the default service account has been created by Kubernetes on namespace creation.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2131.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | Revert add "conflictsWith" to provider block schema
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2141.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `kubernetes/resource_kubernetes_pod.go`: Add `legacy_lifecycle_states` attribute
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2163.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `manifest/provider/apply.go`: update flow in `wait` block to fix timeout bug within tf apply where the resource is created and appears in Kubernetes but does not appear in TF state file after deadline. The fix would ensure that the resource has been created in the state file while also tainting the resource requiring the user to make the necessary changes in order for their to not be another timeout error.
3 | ```
--------------------------------------------------------------------------------
/.changelog/2164.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `resource/kubernetes_manifest`: fix an issue in the `kubernetes_manifest` resource when it panics if tuple attributes within an object have a different number of elements. This leads to the situation when all types of end tuples are getting the same type.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2173.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `resource/kubernetes_manifest`: fix an issue with the `kubernetes_manifest` resource, where an object fails to update correctly when employing wait conditions and thus some attributes are not available for the reference after creation.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2183.txt:
--------------------------------------------------------------------------------
1 | ```release-note:feature
2 | `kubernetes/resource_kubernetes_pod.go`: add `ephemeral` volume type to pod specification [GH-2032]
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2200.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `resource/kubernetes_pod`: add a new attribute `target_state` to specify the Pod phase(s) that indicate whether it was successfully created.
3 | ```
4 |
5 | ```release-note:enhancement
6 | `resource/kubernetes_pod_v1`: add a new attribute `target_state` to specify the Pod phase(s) that indicate whether it was successfully created.
7 | ```
8 |
--------------------------------------------------------------------------------
/.changelog/2208.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `resource/kubernetes_endpoint_slice_v1`: make attribute `endpoint.condition` optional. If you had previously included an empty block `condition {}` in your configuration, we request you to remove it. Doing so will prevent receiving continuous _"update in-place"_ messages while performing the plan and apply operations.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2221.txt:
--------------------------------------------------------------------------------
1 | ```release-note:doc
2 | Fix external broken links in the documentation.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2230.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `resource/kubernetes_config_map_v1_data`: improve error handling while validating the existence of the target ConfigMap.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2246.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `resource/kubernetes_labels`: Add ["f:metadata"] check in kubernetes_labels to prevent crash with kubernetes_node_taints
3 | ```
--------------------------------------------------------------------------------
/.changelog/2287.txt:
--------------------------------------------------------------------------------
1 | ```release-note:doc
2 | Add example module for configuring OIDC authentication on EKS
3 | ```release-note:doc
4 |
--------------------------------------------------------------------------------
/.changelog/2290.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `kubernetes/schema_pod_spec.go`: Add `os` to podSpecFields
3 | ```
--------------------------------------------------------------------------------
/.changelog/2296.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `kubernetes/schema_affinity_spec.go`: Add `match_fields` to nodeAffinity
3 | ```
--------------------------------------------------------------------------------
/.changelog/2306.txt:
--------------------------------------------------------------------------------
1 | ```release-note:feature
2 | New data source: `kubernetes_server_version`
3 | ```
--------------------------------------------------------------------------------
/.changelog/2319.txt:
--------------------------------------------------------------------------------
1 | ```release-note:doc
2 | Add example module for configuring OIDC authentication on GKE
3 | ```
--------------------------------------------------------------------------------
/.changelog/2333.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `kubernetes/schema_stateful_set_spec.go`: Add `spec.persistentVolumeClaimRetentionPolicy` in `kubernetes_stateful_set`
3 | ```
--------------------------------------------------------------------------------
/.changelog/2337.txt:
--------------------------------------------------------------------------------
1 | ```release-note:note
2 | Bump Kubernetes dependencies from x.25.11 to x.27.7.
3 | ```
4 |
5 | ```release-note:note
6 | Bump Go version from 1.20 to 1.21.
7 | ```
8 |
--------------------------------------------------------------------------------
/.changelog/2344.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `resource/kubernetes_ingress`: Fix an issue where the empty `tls` attribute in the configuration does not generate the corresponding Ingress object without any TLS configuration.
3 | ```
4 |
5 | ```release-note:bug
6 | `resource/kubernetes_ingress_v1`: Fix an issue where the empty `tls` attribute in the configuration does not generate the corresponding Ingress object without any TLS configuration.
7 | ```
8 |
--------------------------------------------------------------------------------
/.changelog/2345.txt:
--------------------------------------------------------------------------------
1 | ```release-note:note
2 | We have updated the logic of data sources and now the provider will return all annotations and labels attached to the object, regardless of the `ignore_annotations` and `ignore_labels` provider settings. In addition to that, a list of ignored labels when they are attached to `kubernetes_job(_v1)` and `kubernetes_cron_job(_v1)` resources were extended with labels `batch.kubernetes.io/controller-uid` and `batch.kubernetes.io/job-name` since they aim to replace `controller-uid` and `job-name` in the future Kubernetes releases.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2347.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | Add terraform-plugin-framework provider
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2362.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `resource/kubernetes_cron_job_v1`: Change the schema to include a namespace in `jobTemplate`
3 | `resource/kubernetes_stateful_set_v1`: Change the schema to include a namespace in `template`
4 | ```
5 |
--------------------------------------------------------------------------------
/.changelog/2372.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `data_source/kubernetes_resources`: fix an issue where the provider exit with an error when the data source `kubernetes_resources` receives multiple Kubernetes objects containing tuples with different numbers of elements.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2384.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `kubernetes_manifest`: Implement response for GetMetadata protocol function
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2394.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `resource/kubernetes_job_v1`: add new attribute `spec.pod_failure_policy` to job spec
3 | ```
--------------------------------------------------------------------------------
/.changelog/2395.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `kubernetes/kubernetes_deployment_v1`: Add support for `HugePages` in `emptyDir.medium`
3 | ```
--------------------------------------------------------------------------------
/.changelog/2402.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `resource/kubernetes_node_taint`: Fix the error check for nonexistant nodes so that terraform does not fail if there is a taint in the state file for a node that has been deleted.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2404.txt:
--------------------------------------------------------------------------------
1 | ```release-note:note
2 | Bump Kubernetes dependencies from x.27.8 to x.28.6.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2417.txt:
--------------------------------------------------------------------------------
1 | `persistent_volume_v1`: Support PersistentVolumeLastPhaseTransitionTime feature gate in persistent volume status.
--------------------------------------------------------------------------------
/.changelog/2421.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | Add `backoff_per_limit_index` and `max_failed_indexes` fields in `structure_job.go`
3 | ```
--------------------------------------------------------------------------------
/.changelog/2428.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | Add provider defined functions: `manifest_encode`, `manifest_decode`, `manifest_decode_multi`
3 | ```
--------------------------------------------------------------------------------
/.changelog/2429.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `resource/kubernetes_pod_v1`: add missing `topology_spread_constraints`: `node_affinity_policy`, `node_taints_policy`, `match_label_keys`, `min_domains`
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2437.txt:
--------------------------------------------------------------------------------
1 | ```release-note
2 | `kubernetes_manifest`: add TypeCheck for `x-kubernetes-preserve-unknown-fields` to prevent unnecessary replacement
3 | ```
--------------------------------------------------------------------------------
/.changelog/2461.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `manifest_decode()`: fix handling of manifests containing null values
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2464.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | data-sources: revert a recently introduced deviation on datasources where querying a non-existent resource would cause an error (#2434).
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2470.txt:
--------------------------------------------------------------------------------
1 | ```release-note:doc
2 | Migrate legacy structure to new tfplugindocs template structure
3 | ```
--------------------------------------------------------------------------------
/.changelog/2485.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `kubernetes_manifest`: fix issue preventing KUBE_PROXY_URL environment variable from being used in client configuration (#1733)
3 | ```
--------------------------------------------------------------------------------
/.changelog/2488.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `resource/kubernetes_persistent_volume_v1`: support `ReadWriteOncePod` access mode for PVs
3 | ```
--------------------------------------------------------------------------------
/.changelog/2493.txt:
--------------------------------------------------------------------------------
1 | ```release-note:improvement
2 | resource/resource_kubernetes_stateful_set_v1: Add support for `min_ready_seconds`
3 | ```
--------------------------------------------------------------------------------
/.changelog/2494.txt:
--------------------------------------------------------------------------------
1 | ```release-note:improvement
2 | `resource/resource_kubernetes_network_policy_v1`: add support for `end_port`
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2510.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | Add support for Terraform's experimental deferred actions
3 | ```
--------------------------------------------------------------------------------
/.changelog/2559.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `resource/kubernetes_certificate_signing_request_v1`: Add argument `spec.expiration_seconds`
3 | ```
--------------------------------------------------------------------------------
/.changelog/2570.txt:
--------------------------------------------------------------------------------
1 | ```release-note:improvement
2 | deferred actions: return unknown value instead of nil when requesting deferral of a planned resource change.
3 | ```
--------------------------------------------------------------------------------
/.changelog/2573.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `schema_container.go`: Add VolumeDevices
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2577.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | Added support for `namespace_selector` field in `PodAffinityTerm` to enhance pod affinity and anti-affinity rules, allowing selection of namespaces based on label selectors.
3 | ```
--------------------------------------------------------------------------------
/.changelog/2592.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `kubernetes_manifest` - handling "404 Not Found" errors during the deletion of Kubernetes resources, particularly in cases where the resource may have already been deleted by an operator managing the CRD before Terraform attempts to delete it.
3 | ```
--------------------------------------------------------------------------------
/.changelog/2595.txt:
--------------------------------------------------------------------------------
1 | ```release-note:improvement
2 | resource/kubernetes_deployment_v1: Fix validation of `restart_policy` values
3 | ```
--------------------------------------------------------------------------------
/.changelog/2596.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | Properly handle Kubernetes Jobs with ttl_seconds_after_finished = 0 to prevent unnecessary recreation.
3 | ```
--------------------------------------------------------------------------------
/.changelog/2604.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | Adding the `kubernetes_secret_v1_data` resource to the kubernetes provider. This resource will allow users to manage kubernetes secrets
3 | ```
--------------------------------------------------------------------------------
/.changelog/2612.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | Added `conditions` attribute to `kubernetes_nodes` data source, which will provide detailed node health and status information
3 | ```
--------------------------------------------------------------------------------
/.changelog/2622.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | Add `sub_path_expr` to volume mount options pod spec
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2628.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | FEATURES:
3 | * New ephemeral resource: `kubernetes_certificate_signing_request_v1`
4 | * New ephemeral resource: `kubernetes_token_request_v1`
5 | ```
6 |
--------------------------------------------------------------------------------
/.changelog/2630.txt:
--------------------------------------------------------------------------------
1 | ```release-note:feature
2 | `resources_kubernetes_daemon_set_v1` : Added `max_surge` argument for to `rolling_update` block.
3 | ```
--------------------------------------------------------------------------------
/.changelog/2650.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | Revert "Handle Jobs with ttl_seconds_after_finished = 0 correctly"
3 | ```
--------------------------------------------------------------------------------
/.changelog/2653.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | `kubernetes_daemon_set_v1`: fix issue where fields `spec.strategy.rolling_update.max_surge` and `spec.strategy.rolling_update.max_unavailable` were not being validated correctly.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2692.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `resource/kubernetes_secret_v1`: Add support for write only attributes for `data_wo` and `binary_data_wo`.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2699.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | Fixed goroutine-safety in the CRD and metadata cache, resulting in far fewer provider metadata requests.
3 | ```
--------------------------------------------------------------------------------
/.changelog/2721.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | `kubernetes_config_map_v1`: Add support for ResourceIdentity
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/2733.txt:
--------------------------------------------------------------------------------
1 | ```release-note:bug
2 | Fixes issue #2732 where the provider would fail when used with Terraform >= v1.12.1 due to missing `GetResourceIdentitySchemas` implementation.
3 | ```
--------------------------------------------------------------------------------
/.changelog/2737.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | Add ResourceIdentity support to kubernetes_manifest
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/note.tmpl:
--------------------------------------------------------------------------------
1 | {{- define "note" -}}
2 | {{.Body}}{{if not (stringHasPrefix .Issue "_")}} [[GH-{{- .Issue -}}](https://github.com/hashicorp/terraform-provider-kubernetes/issues/{{- .Issue -}})]{{end}}
3 | {{- end -}}
4 |
--------------------------------------------------------------------------------
/.copywrite.hcl:
--------------------------------------------------------------------------------
1 | schema_version = 1
2 |
3 | project {
4 | license = "MPL-2.0"
5 | copyright_year = 2017
6 | header_ignore = [
7 | ".changelog/**",
8 | ".github/**",
9 | ".golangci.yml",
10 | ".goreleaser.yml",
11 | ".markdownlint.yml",
12 | ".release/**",
13 | "vendor/**",
14 | "examples/**"
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @hashicorp/tf-eco-hybrid-cloud
2 |
--------------------------------------------------------------------------------
/.github/config/acceptance_tests_kind_config.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kind.x-k8s.io/v1alpha4
2 | kind: Cluster
3 | nodes:
4 | - role: control-plane
5 | extraMounts:
6 | - hostPath: "./.github/config/seccomp-profiles"
7 | containerPath: "/var/lib/kubelet/seccomp/profiles"
--------------------------------------------------------------------------------
/.github/config/seccomp-profiles/audit.json:
--------------------------------------------------------------------------------
1 | {
2 | "defaultAction": "SCMP_ACT_LOG"
3 | }
--------------------------------------------------------------------------------
/.github/labeler-issue-triage.yml:
--------------------------------------------------------------------------------
1 | bug:
2 | - 'panic:'
3 | crash:
4 | - 'panic:'
5 |
--------------------------------------------------------------------------------
/.github/labeler-pull-request-triage.yml:
--------------------------------------------------------------------------------
1 | Dependencies:
2 | - changed-files:
3 | - any-glob-to-any-file: 'vendor/*'
4 | Documentation:
5 | - changed-files:
6 | - any-glob-to-any-file: 'docs/*'
7 |
--------------------------------------------------------------------------------
/.github/tf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hashicorp/terraform-provider-kubernetes/299de2f546e9d8478cdc653de19a5607bd2fe1ff/.github/tf.png
--------------------------------------------------------------------------------
/.github/workflows/hc-copywrite.yml:
--------------------------------------------------------------------------------
1 | name: HashiCorp Copywrite
2 |
3 | on:
4 | schedule:
5 | - cron: '30 2 * * *'
6 | pull_request:
7 | branches:
8 | - main
9 | push:
10 | branches:
11 | - main
12 | workflow_dispatch:
13 |
14 | jobs:
15 | copywrite:
16 | runs-on: ubuntu-latest
17 | steps:
18 | - name: Checkout repository
19 | uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4
20 |
21 | - name: Install copywrite
22 | uses: hashicorp/setup-copywrite@32638da2d4e81d56a0764aa1547882fc4d209636 # v1.1.3
23 |
24 | - name: Validate Header Compliance
25 | run: copywrite headers --plan
26 |
--------------------------------------------------------------------------------
/.github/workflows/issue-comment-created.yml:
--------------------------------------------------------------------------------
1 | name: Issue Comment Created Triage
2 |
3 | on:
4 | issue_comment:
5 | types: [created]
6 |
7 | jobs:
8 | issue_comment_triage:
9 | runs-on: ubuntu-latest
10 | steps:
11 | - uses: actions-ecosystem/action-remove-labels@2ce5d41b4b6aa8503e285553f75ed56e0a40bae0 # v1.3.0
12 | with:
13 | labels: |
14 | stale
15 | waiting-response
16 |
--------------------------------------------------------------------------------
/.github/workflows/unit-tests.yml:
--------------------------------------------------------------------------------
1 | name: Unit Tests
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 | - v3-major-release
8 | pull_request:
9 | branches:
10 | - main
11 | - v3-major-release
12 | paths:
13 | - 'kubernetes/*.go'
14 | workflow_dispatch:
15 |
16 | jobs:
17 | unit_test:
18 | runs-on: ubuntu-latest
19 | steps:
20 | - name: Checkout code
21 | uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4
22 | - name: Set up Go
23 | uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
24 | with:
25 | go-version-file: 'go.mod'
26 | - name: Run unit tests
27 | env:
28 | TESTARGS: -count 1
29 | run: |
30 | make test
31 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.dll
2 | *.exe
3 | .DS_Store
4 | example.tf
5 | kubeconfig
6 | terraform.tfplan
7 | terraform.tfstate
8 | .terraform.tfstate.lock.info
9 | bin/
10 | modules-dev/
11 | /pkg/
12 | website/.vagrant
13 | website/.bundle
14 | website/build
15 | website/node_modules
16 | .vagrant/
17 | *.backup
18 | ./*.tfstate
19 | .terraform/
20 | *.log
21 | *.bak
22 | *~
23 | .*.swp
24 | .idea
25 | .vscode/
26 | *.iml
27 | *.test
28 | *.iml
29 | .terraform.lock.hcl
30 | website/vendor
31 |
32 | # Test exclusions
33 | !command/test-fixtures/**/*.tfstate
34 | !command/test-fixtures/**/.terraform/
35 |
36 | # output binary
37 | terraform-provider-kubernetes
38 | __debug_bin
39 |
--------------------------------------------------------------------------------
/.markdownlint.yml:
--------------------------------------------------------------------------------
1 | # Configuration for markdownlint
2 | # https://github.com/DavidAnson/markdownlint#configuration
3 |
4 | default: true
5 | MD007:
6 | indent: 4
7 |
8 | # Disabled Rules
9 | # https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md
10 |
11 | MD001: false
12 | MD004: false
13 | MD006: false
14 | MD009: false
15 | MD010: false
16 | MD012: false
17 | MD013: false
18 | MD014: false
19 | MD018: false
20 | MD022: false
21 | MD024: false
22 | MD029: false
23 | MD032: false
24 | MD033: false
25 | MD034: false
26 | MD037: false
27 | MD038: false
28 | MD040: false
29 | MD046: false
30 | MD047: false
31 |
--------------------------------------------------------------------------------
/.release/release-metadata.hcl:
--------------------------------------------------------------------------------
1 | url_source_repository = "https://github.com/hashicorp/terraform-provider-kubernetes"
2 | url_project_website = "https://registry.terraform.io/providers/hashicorp/kubernetes"
3 | url_license = "https://github.com/hashicorp/terraform-provider-kubernetes/blob/main/LICENSE"
4 | url_release_notes = "https://github.com/hashicorp/terraform-provider-kubernetes/blob/main/CHANGELOG.md"
5 |
--------------------------------------------------------------------------------
/.release/security-scan.hcl:
--------------------------------------------------------------------------------
1 | binary {
2 | secrets {
3 | all = true
4 | }
5 | go_modules = true
6 | osv = true
7 | oss_index = false
8 | nvd = false
9 |
10 | triage {
11 | suppress {
12 | vulnerabilities = [
13 | "GO",
14 | "GHSA"
15 | ]
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/META.d/_summary.yaml:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | ---
5 |
6 | schema: 1.1
7 |
8 | partition: tf-ecosystem
9 |
10 | summary:
11 | owner: team-tf-hybrid-cloud
12 | description: |
13 | The Kubernetes provider for Terraform is a plugin that enables full lifecycle management of Kubernetes resources.
14 |
15 | visibility: external
16 |
--------------------------------------------------------------------------------
/META.d/links.yaml:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | runbooks: []
5 | #- name:
6 | # link:
7 |
8 | other_links: []
9 | #- name:
10 | # link:
--------------------------------------------------------------------------------
/_about/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Code of Conduct
2 |
3 | HashiCorp Community Guidelines apply to you when interacting with the community here on GitHub and contributing code.
4 |
5 | Please read the full text at https://www.hashicorp.com/community-guidelines
6 |
--------------------------------------------------------------------------------
/_about/SUPPORT.md:
--------------------------------------------------------------------------------
1 | # Support
2 |
3 | Terraform is a mature project with a growing community. There are active, dedicated people willing to help you through various mediums.
4 |
5 | Take a look at those mediums listed at https://www.terraform.io/community.html
6 |
--------------------------------------------------------------------------------
/_examples/aks/aks-cluster/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | variable "kubernetes_version" {
5 | default = "1.18"
6 | }
7 |
8 | variable "workers_count" {
9 | default = "3"
10 | }
11 |
12 | variable "cluster_name" {
13 | type = string
14 | }
15 |
16 | variable "location" {
17 | type = string
18 | }
19 |
--------------------------------------------------------------------------------
/_examples/aks/kubernetes-config/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | variable "cluster_name" {
5 | type = string
6 | }
7 |
8 | variable "kubeconfig" {
9 | type = string
10 | }
11 |
--------------------------------------------------------------------------------
/_examples/aks/outputs.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | output "kubeconfig_path" {
5 | value = abspath("${path.root}/kubeconfig")
6 | }
7 |
8 | output "cluster_name" {
9 | value = local.cluster_name
10 | }
11 |
--------------------------------------------------------------------------------
/_examples/aks/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | variable "location" {
5 | type = string
6 | default = "westus2"
7 | }
8 |
9 | resource "random_id" "cluster_name" {
10 | byte_length = 5
11 | }
12 |
13 | locals {
14 | cluster_name = "tf-k8s-${random_id.cluster_name.hex}"
15 | }
16 |
--------------------------------------------------------------------------------
/_examples/certificate-signing-request/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | variable "example_user" {
5 | default = "admin"
6 | }
7 |
8 | variable "example_org" {
9 | default = "example cluster"
10 | }
11 |
--------------------------------------------------------------------------------
/_examples/deferred-actions/cluster.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | terraform {
5 | required_providers {
6 | kind = {
7 | source = "tehcyx/kind"
8 | }
9 | kubernetes = {}
10 | }
11 | }
12 |
13 | resource "kind_cluster" "demo" {
14 | name = "demo-cluster"
15 | }
16 |
17 | provider "kubernetes" {
18 | host = kind_cluster.demo.endpoint
19 | cluster_ca_certificate = kind_cluster.demo.cluster_ca_certificate
20 | client_certificate = kind_cluster.demo.client_certificate
21 | client_key = kind_cluster.demo.client_key
22 | }
23 |
--------------------------------------------------------------------------------
/_examples/eks/eks-cluster/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | variable "cluster_name" {
5 | type = string
6 | }
7 |
8 | variable "kubernetes_version" {
9 | type = string
10 | default = "1.27"
11 | }
12 |
--------------------------------------------------------------------------------
/_examples/eks/eks-cluster/version.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | terraform {
5 | required_providers {
6 | aws = {
7 | source = "hashicorp/aws"
8 | version = "~> 5.0"
9 | }
10 | }
11 | }
12 |
13 |
14 |
--------------------------------------------------------------------------------
/_examples/eks/kubernetes-config/kubeconfig.tpl:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | preferences: {}
3 | kind: Config
4 |
5 | clusters:
6 | - cluster:
7 | server: ${endpoint}
8 | certificate-authority-data: ${clusterca}
9 | name: ${cluster_name}
10 |
11 | contexts:
12 | - context:
13 | cluster: ${cluster_name}
14 | user: ${cluster_name}
15 | name: ${cluster_name}
16 |
17 | current-context: ${cluster_name}
18 |
19 | users:
20 | - name: ${cluster_name}
21 | user:
22 | exec:
23 | apiVersion: client.authentication.k8s.io/v1alpha1
24 | command: aws-iam-authenticator
25 | args:
26 | - token
27 | - --cluster-id
28 | - ${cluster_name}
29 |
--------------------------------------------------------------------------------
/_examples/eks/kubernetes-config/output.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | output "kubeconfig" {
5 | value = abspath("${path.root}/${local_file.kubeconfig.filename}")
6 | }
7 |
--------------------------------------------------------------------------------
/_examples/eks/kubernetes-config/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | variable "cluster_name" {
5 | type = string
6 | }
7 |
--------------------------------------------------------------------------------
/_examples/eks/kubernetes-config/version.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | terraform {
5 | required_providers {
6 | kubernetes = {
7 | source = "hashicorp/kubernetes"
8 | version = "~> 2.1.0"
9 | }
10 | aws = {
11 | source = "hashicorp/aws"
12 | version = "~> 3.39.0"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/_examples/eks/output.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | output "cluster_name" {
5 | value = local.cluster_name
6 | }
7 |
--------------------------------------------------------------------------------
/_examples/eks/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "random_id" "cluster_name" {
5 | byte_length = 2
6 | prefix = "k8s-acc-"
7 | }
8 |
9 | locals {
10 | cluster_name = random_id.cluster_name.hex
11 | }
12 |
--------------------------------------------------------------------------------
/_examples/gke/gke-cluster/output.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | output "node_version" {
5 | value = google_container_cluster.default.node_version
6 | }
7 |
8 | output "google_zone" {
9 | value = local.google_zone
10 | }
11 |
--------------------------------------------------------------------------------
/_examples/gke/gke-cluster/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | variable "kubernetes_version" {
5 | default = "1.27"
6 | }
7 |
8 | variable "workers_count" {
9 | default = "3"
10 | }
11 |
12 | variable "cluster_name" {
13 | type = string
14 | }
15 |
16 | variable "idp_enabled" {
17 | type = bool
18 | default = false
19 | }
20 |
--------------------------------------------------------------------------------
/_examples/gke/gke-oidc/gke.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | data "google_container_cluster" "upstream" {
5 | provider = google-beta
6 | name = var.cluster_name
7 | location = var.gke_location
8 | }
9 |
10 | data "google_client_config" "provider" {
11 | provider = google-beta
12 | }
13 |
--------------------------------------------------------------------------------
/_examples/gke/gke-oidc/outputs.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | output "config_manifest" {
5 | value = kubernetes_manifest.oidc_conf.object
6 | }
7 |
--------------------------------------------------------------------------------
/_examples/gke/kubeconfig-template.yaml:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | apiVersion: v1
5 | clusters:
6 | - cluster:
7 | certificate-authority-data: ${cluster_ca}
8 | server: ${endpoint}
9 | name: ${cluster_name}
10 | contexts:
11 | - context:
12 | cluster: ${cluster_name}
13 | user: ${cluster_name}
14 | name: ${cluster_name}
15 | users:
16 | - name: ${cluster_name}
17 | user:
18 | token: ${cluster_token}
19 | current-context: ${cluster_name}
20 | kind: Config
21 | preferences: {}
22 |
--------------------------------------------------------------------------------
/_examples/gke/kubernetes-config/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | variable "cluster_name" {
5 | type = string
6 | }
7 |
--------------------------------------------------------------------------------
/_examples/gke/outputs.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | output "kubeconfig_path" {
5 | value = abspath("${path.root}/kubeconfig")
6 | }
7 |
8 | output "cluster_name" {
9 | value = local.cluster_name
10 | }
11 |
12 | output "google_zone" {
13 | value = module.gke-cluster.google_zone
14 | }
15 |
--------------------------------------------------------------------------------
/_examples/gke/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "random_id" "cluster_name" {
5 | byte_length = 5
6 | }
7 |
8 | locals {
9 | cluster_name = "tf-k8s-${random_id.cluster_name.hex}"
10 | }
11 |
--------------------------------------------------------------------------------
/_examples/google-gke-nfs-filestore/kubeconfig-template.yaml:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | apiVersion: v1
5 | kind: Config
6 | preferences:
7 | colors: true
8 | current-context: tf-k8s-gcp-test
9 | contexts:
10 | - context:
11 | cluster: ${cluster_name}
12 | namespace: default
13 | user: ${user_name}
14 | name: tf-k8s-gcp-test
15 | clusters:
16 | - cluster:
17 | server: https://${endpoint}
18 | certificate-authority-data: ${cluster_ca}
19 | name: ${cluster_name}
20 | users:
21 | - name: ${user_name}
22 | user:
23 | password: ${user_password}
24 | username: ${user_name}
25 | client-certificate-data: ${client_cert}
26 | client-key-data: ${client_cert_key}
27 |
--------------------------------------------------------------------------------
/_examples/in-cluster/namespace.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_namespace_v1" "this" {
5 | metadata {
6 | name = "this"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/_examples/in-cluster/pod.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_pod_v1" "this" {
5 | metadata {
6 | name = "this"
7 | namespace = "default"
8 | }
9 | spec {
10 | container {
11 | name = "this"
12 | image = "busybox"
13 | command = ["sleep", "infinity"]
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/_examples/in-cluster/provider.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | provider "kubernetes" {}
5 |
--------------------------------------------------------------------------------
/_examples/ingress/README.md:
--------------------------------------------------------------------------------
1 | # Example: Ingress with AWS ELB
2 |
3 | ## Prerequisites
4 |
5 | * This example uses syntax elements specific to Terraform version 0.12+.
6 | It will not work out-of-the-box with Terraform 0.11.x and lower.
7 |
8 | * This example uses annotations specific to the [AWS Load Balancer Controller](https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html).
9 |
10 |
--------------------------------------------------------------------------------
/_examples/job/README.md:
--------------------------------------------------------------------------------
1 | # Example: Job
2 |
3 | ## Prerequsites
4 |
5 | *This example uses syntax elements specific to Terraform version 0.12+.
6 | It will not work out-of-the-box with Terraform 0.11.x and lower.*
7 |
--------------------------------------------------------------------------------
/_examples/kubernetes_manifest/cluster-with-resources/.skip_checks:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hashicorp/terraform-provider-kubernetes/299de2f546e9d8478cdc653de19a5607bd2fe1ff/_examples/kubernetes_manifest/cluster-with-resources/.skip_checks
--------------------------------------------------------------------------------
/_examples/kubernetes_manifest/cluster-with-resources/manifests/test.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | variable "cluster_name" {
5 | type = string
6 | }
7 | resource "kubernetes_manifest" "test-cfm" {
8 |
9 | manifest = {
10 | "apiVersion" = "v1"
11 | "kind" = "ConfigMap"
12 | "metadata" = {
13 | "name" = "test-cf"
14 | "namespace" = "default"
15 | "labels" = {
16 | "parent_cluster" = var.cluster_name
17 | }
18 | }
19 | "data" = {
20 | "parent_cluster" = var.cluster_name
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/_examples/kubernetes_manifest/configmap/main.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test-configmap" {
5 |
6 | manifest = {
7 | "apiVersion" = "v1"
8 | "kind" = "ConfigMap"
9 | "metadata" = {
10 | "name" = "test-config"
11 | "namespace" = "default"
12 | "labels" = {
13 | "app" = "test-app"
14 | "environment" = "production"
15 | }
16 | }
17 | "data" = {
18 | "foo" = "bar"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/_examples/kubernetes_manifest/namespace/namespace.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test-namespace" {
5 |
6 | manifest = {
7 | "apiVersion" = "v1"
8 | "kind" = "Namespace"
9 | "metadata" = {
10 | "name" = "tf-demo"
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/_examples/kubernetes_manifest/terraform-operator/.skip_checks:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hashicorp/terraform-provider-kubernetes/299de2f546e9d8478cdc653de19a5607bd2fe1ff/_examples/kubernetes_manifest/terraform-operator/.skip_checks
--------------------------------------------------------------------------------
/_examples/kubernetes_manifest/terraform-operator/api-token-secret.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_secret" "tfc-api-token" {
5 | metadata {
6 | name = "terraformrc"
7 | namespace = kubernetes_manifest.namespace.object.metadata.name
8 | labels = {
9 | app = kubernetes_manifest.namespace.object.metadata.name
10 | }
11 | }
12 |
13 | data = {
14 | credentials = var.tfc_credentials
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/_examples/kubernetes_manifest/terraform-operator/namespace.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "namespace" {
5 |
6 | manifest = {
7 | apiVersion = "v1"
8 | kind = "Namespace"
9 | metadata = {
10 | name = var.namespace
11 | }
12 | }
13 | }
14 |
15 |
--------------------------------------------------------------------------------
/_examples/kubernetes_manifest/terraform-operator/sync-workspace-secret.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_secret" "workspace-secret" {
5 | metadata {
6 | name = var.workspace_secrets
7 | namespace = kubernetes_manifest.namespace.object.metadata.name
8 | }
9 |
10 | data = {
11 | access_key_id = var.access_key_id
12 | secret_acess_key = var.secret_acess_key
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/_examples/kubernetes_manifest/terraform-operator/sync-workspace-serviceaccount.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_service_account" "tfc-service-account" {
5 | metadata {
6 | name = "${kubernetes_manifest.namespace.object.metadata.name}-sync-workspace"
7 | namespace = kubernetes_manifest.namespace.object.metadata.name
8 | labels = {
9 | app = kubernetes_manifest.namespace.object.metadata.name
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/_examples/kubernetes_manifest/vault/main.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 |
--------------------------------------------------------------------------------
/_examples/wordpress-mysql-gce-pv/graph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hashicorp/terraform-provider-kubernetes/299de2f546e9d8478cdc653de19a5607bd2fe1ff/_examples/wordpress-mysql-gce-pv/graph.png
--------------------------------------------------------------------------------
/examples/data-sources/all_namespaces/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_all_namespaces" "allns" {}
2 |
3 | output "all-ns" {
4 | value = data.kubernetes_all_namespaces.allns.namespaces
5 | }
6 |
7 | output "ns-present" {
8 | value = contains(data.kubernetes_all_namespaces.allns.namespaces, "kube-system")
9 | }
10 |
11 |
--------------------------------------------------------------------------------
/examples/data-sources/all_namespaces/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_all_namespaces" "allns" {}
2 |
3 | output "all-ns" {
4 | value = data.kubernetes_all_namespaces.allns.namespaces
5 | }
6 |
7 | output "ns-present" {
8 | value = contains(data.kubernetes_all_namespaces.allns.namespaces, "kube-system")
9 | }
10 |
--------------------------------------------------------------------------------
/examples/data-sources/config_map/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_config_map" "example" {
2 | metadata {
3 | name = "my-config"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/config_map/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_config_map" "example" {
2 | metadata {
3 | name = "my-config"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/config_map_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_config_map_v1" "example" {
2 | metadata {
3 | name = "my-config"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/config_map_v1/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_config_map_v1" "example" {
2 | metadata {
3 | name = "my-config"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/endpoints_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_endpoints_v1" "api_endpoints" {
2 | metadata {
3 | name = "kubernetes"
4 | namespace = "default"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/examples/data-sources/endpoints_v1/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_endpoints_v1" "api_endpoints" {
2 | metadata {
3 | name = "kubernetes"
4 | namespace = "default"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/examples/data-sources/ingress/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_ingress" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
7 | resource "aws_route53_record" "example" {
8 | zone_id = data.aws_route53_zone.k8.zone_id
9 | name = "example"
10 | type = "CNAME"
11 | ttl = "300"
12 | records = [data.kubernetes_ingress.example.status.0.load_balancer.0.ingress.0.hostname]
13 | }
14 |
--------------------------------------------------------------------------------
/examples/data-sources/ingress/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_ingress" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
7 | resource "aws_route53_record" "example" {
8 | zone_id = data.aws_route53_zone.k8.zone_id
9 | name = "example"
10 | type = "CNAME"
11 | ttl = "300"
12 | records = [data.kubernetes_ingress.example.status.0.load_balancer.0.ingress.0.hostname]
13 | }
14 |
--------------------------------------------------------------------------------
/examples/data-sources/ingress_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_ingress_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
7 | resource "aws_route53_record" "example" {
8 | zone_id = data.aws_route53_zone.k8.zone_id
9 | name = "example"
10 | type = "CNAME"
11 | ttl = "300"
12 | records = [data.kubernetes_ingress_v1.example.status.0.load_balancer.0.ingress.0.hostname]
13 | }
14 |
--------------------------------------------------------------------------------
/examples/data-sources/ingress_v1/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_ingress_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
7 | resource "aws_route53_record" "example" {
8 | zone_id = data.aws_route53_zone.k8.zone_id
9 | name = "example"
10 | type = "CNAME"
11 | ttl = "300"
12 | records = [data.kubernetes_ingress_v1.example.status.0.load_balancer.0.ingress.0.hostname]
13 | }
14 |
--------------------------------------------------------------------------------
/examples/data-sources/mutating_webhook_configuration_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_mutating_webhook_configuration_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/mutating_webhook_configuration_v1/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_mutating_webhook_configuration_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/namespace/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_namespace" "example" {
2 | metadata {
3 | name = "kube-system"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/namespace/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_namespace" "example" {
2 | metadata {
3 | name = "kube-system"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/namespace_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_namespace_v1" "example" {
2 | metadata {
3 | name = "kube-system"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/namespace_v1/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_namespace_v1" "example" {
2 | metadata {
3 | name = "kube-system"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/nodes/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_nodes" "example" {}
2 |
3 | output "node-ids" {
4 | value = [for node in data.kubernetes_nodes.example.nodes : node.spec.0.provider_id]
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/nodes/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_nodes" "example" {
2 | metadata {
3 | labels = {
4 | "kubernetes.io/os" = "linux"
5 | }
6 | }
7 | }
8 |
9 | output "linux-node-names" {
10 | value = [for node in data.kubernetes_nodes.example.nodes : node.metadata.0.name]
11 | }
12 |
--------------------------------------------------------------------------------
/examples/data-sources/nodes/example_3.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_nodes" "example" {}
2 |
3 | output "node-ids" {
4 | value = [for node in data.kubernetes_nodes.example.nodes : node.spec.0.provider_id]
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/nodes/example_4.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_nodes" "example" {
2 | metadata {
3 | labels = {
4 | "kubernetes.io/os" = "linux"
5 | }
6 | }
7 | }
8 |
9 | output "linux-node-names" {
10 | value = [for node in data.kubernetes_nodes.example.nodes : node.metadata.0.name]
11 | }
12 |
--------------------------------------------------------------------------------
/examples/data-sources/nodes/example_5.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_nodes" "example" {}
2 |
3 | output "node-ids" {
4 | value = [for node in data.kubernetes_nodes.example.nodes : node.spec.0.provider_id]
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/nodes/example_6.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_nodes" "example" {
2 | metadata {
3 | labels = {
4 | "kubernetes.io/os" = "linux"
5 | }
6 | }
7 | }
8 |
9 | output "linux-node-names" {
10 | value = [for node in data.kubernetes_nodes.example.nodes : node.metadata.0.name]
11 | }
12 |
--------------------------------------------------------------------------------
/examples/data-sources/persistent_volume_claim/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_persistent_volume_claim" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/persistent_volume_claim/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_persistent_volume_claim" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/persistent_volume_claim_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_persistent_volume_claim_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/persistent_volume_claim_v1/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_persistent_volume_claim_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/persistent_volume_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_persistent_volume_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 | data "kubernetes_secret" "example" {
7 | metadata {
8 | name = data.kubernetes_persistent_volume_v1.example.spec[0].persistent_volume_source[0].azure_file[0].secret_name
9 | }
10 | }
11 | output "azure_storageaccount_name" {
12 | value = data.kubernetes_secret.example.data.azurestorageaccountname
13 | }
14 | output "azure_storageaccount_key" {
15 | value = data.kubernetes_secret.example.data.azurestorageaccountkey
16 | }
17 |
--------------------------------------------------------------------------------
/examples/data-sources/persistent_volume_v1/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_persistent_volume_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 | data "kubernetes_secret" "example" {
7 | metadata {
8 | name = data.kubernetes_persistent_volume_v1.example.spec[0].persistent_volume_source[0].azure_file[0].secret_name
9 | }
10 | }
11 | output "azure_storageaccount_name" {
12 | value = data.kubernetes_secret.example.data.azurestorageaccountname
13 | }
14 | output "azure_storageaccount_key" {
15 | value = data.kubernetes_secret.example.data.azurestorageaccountkey
16 | }
17 |
--------------------------------------------------------------------------------
/examples/data-sources/pod/example_1.tf:
--------------------------------------------------------------------------------
1 | resources {
2 | limits = {}
3 | requests = {}
4 | }
5 |
--------------------------------------------------------------------------------
/examples/data-sources/pod/example_2.tf:
--------------------------------------------------------------------------------
1 | resources {
2 | limits = {}
3 | requests = {}
4 | }
5 |
--------------------------------------------------------------------------------
/examples/data-sources/pod_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resources {
2 | limits = {}
3 | requests = {}
4 | }
5 |
--------------------------------------------------------------------------------
/examples/data-sources/pod_v1/example_2.tf:
--------------------------------------------------------------------------------
1 | resources {
2 | limits = {}
3 | requests = {}
4 | }
5 |
--------------------------------------------------------------------------------
/examples/data-sources/resource/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_resource" "example" {
2 | api_version = "v1"
3 | kind = "ConfigMap"
4 |
5 | metadata {
6 | name = "example"
7 | namespace = "default"
8 | }
9 | }
10 |
11 | output "test" {
12 | value = data.kubernetes_resource.example.object.data.TEST
13 | }
14 |
--------------------------------------------------------------------------------
/examples/data-sources/resource/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_resource" "example" {
2 | api_version = "v1"
3 | kind = "ConfigMap"
4 |
5 | metadata {
6 | name = "example"
7 | namespace = "default"
8 | }
9 | }
10 |
11 | output "test" {
12 | value = data.kubernetes_resource.example.object.data.TEST
13 | }
14 |
--------------------------------------------------------------------------------
/examples/data-sources/resources/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_resources" "example" {
2 | api_version = "v1"
3 | kind = "Namespace"
4 | field_selector = "metadata.name!=kube-system"
5 | }
6 |
7 | output "test" {
8 | value = length(data.kubernetes_resources.example.objects)
9 | }
10 |
--------------------------------------------------------------------------------
/examples/data-sources/resources/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_resources" "example" {
2 | api_version = "v1"
3 | kind = "Namespace"
4 | label_selector = "kubernetes.io/metadata.name!=kube-system"
5 | }
6 |
7 | output "test" {
8 | value = length(data.kubernetes_resources.example.objects)
9 | }
10 |
--------------------------------------------------------------------------------
/examples/data-sources/resources/example_3.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_resources" "example" {
2 | api_version = "v1"
3 | kind = "Namespace"
4 | field_selector = "metadata.name!=kube-system"
5 | }
6 |
7 | output "test" {
8 | value = length(data.kubernetes_resources.example.objects)
9 | }
10 |
--------------------------------------------------------------------------------
/examples/data-sources/resources/example_4.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_resources" "example" {
2 | api_version = "v1"
3 | kind = "Namespace"
4 | label_selector = "kubernetes.io/metadata.name!=kube-system"
5 | }
6 |
7 | output "test" {
8 | value = length(data.kubernetes_resources.example.objects)
9 | }
10 |
--------------------------------------------------------------------------------
/examples/data-sources/secret/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_secret" "example" {
2 | metadata {
3 | name = "basic-auth"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/secret/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_secret" "example" {
2 | metadata {
3 | name = "example-secret"
4 | namespace = "kube-system"
5 | }
6 | binary_data = {
7 | "keystore.p12" = ""
8 | another_field = ""
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/examples/data-sources/secret/example_3.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_secret" "example" {
2 | metadata {
3 | name = "basic-auth"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/secret/example_4.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_secret" "example" {
2 | metadata {
3 | name = "example-secret"
4 | namespace = "kube-system"
5 | }
6 | binary_data = {
7 | "keystore.p12" = ""
8 | another_field = ""
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/examples/data-sources/secret_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_secret_v1" "example" {
2 | metadata {
3 | name = "basic-auth"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/secret_v1/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_secret_v1" "example" {
2 | metadata {
3 | name = "example-secret"
4 | namespace = "kube-system"
5 | }
6 | binary_data = {
7 | "keystore.p12" = ""
8 | another_field = ""
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/examples/data-sources/secret_v1/example_3.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_secret_v1" "example" {
2 | metadata {
3 | name = "basic-auth"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/examples/data-sources/secret_v1/example_4.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_secret_v1" "example" {
2 | metadata {
3 | name = "example-secret"
4 | namespace = "kube-system"
5 | }
6 | binary_data = {
7 | "keystore.p12" = ""
8 | another_field = ""
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/examples/data-sources/service/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_service" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
7 | resource "aws_route53_record" "example" {
8 | zone_id = "data.aws_route53_zone.k8.zone_id"
9 | name = "example"
10 | type = "CNAME"
11 | ttl = "300"
12 | records = [data.kubernetes_service.example.status.0.load_balancer.0.ingress.0.hostname]
13 | }
14 |
--------------------------------------------------------------------------------
/examples/data-sources/service/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_service" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
7 | resource "aws_route53_record" "example" {
8 | zone_id = "data.aws_route53_zone.k8.zone_id"
9 | name = "example"
10 | type = "CNAME"
11 | ttl = "300"
12 | records = [data.kubernetes_service.example.status.0.load_balancer.0.ingress.0.hostname]
13 | }
14 |
--------------------------------------------------------------------------------
/examples/data-sources/service_account/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_service_account" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
7 | data "kubernetes_secret" "example" {
8 | metadata {
9 | name = "${data.kubernetes_service_account.example.default_secret_name}"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/examples/data-sources/service_account/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_service_account" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
7 | data "kubernetes_secret" "example" {
8 | metadata {
9 | name = "${data.kubernetes_service_account.example.default_secret_name}"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/examples/data-sources/service_account_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_service_account_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
7 | data "kubernetes_secret" "example" {
8 | metadata {
9 | name = "${data.kubernetes_service_account_v1.example.default_secret_name}"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/examples/data-sources/service_account_v1/example_2.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_service_account_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
7 | data "kubernetes_secret" "example" {
8 | metadata {
9 | name = "${data.kubernetes_service_account_v1.example.default_secret_name}"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/examples/data-sources/service_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | data "kubernetes_service_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
7 | resource "aws_route53_record" "example" {
8 | zone_id = "data.aws_route53_zone.k8.zone_id"
9 | name = "example"
10 | type = "CNAME"
11 | ttl = "300"
12 | records = [data.kubernetes_service_v1.example.status.0.load_balancer.0.ingress.0.hostname]
13 | }
14 |
--------------------------------------------------------------------------------
/examples/data-sources/service_v1/example_2.tf:
--------------------------------------------------------------------------------
1 | =data "kubernetes_service_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
7 | resource "aws_route53_record" "example" {
8 | zone_id = "data.aws_route53_zone.k8.zone_id"
9 | name = "example"
10 | type = "CNAME"
11 | ttl = "300"
12 | records = [data.kubernetes_service_v1.example.status.0.load_balancer.0.ingress.0.hostname]
13 | }
14 |
--------------------------------------------------------------------------------
/examples/example_1.tf:
--------------------------------------------------------------------------------
1 | provider "kubernetes" {
2 | config_path = "~/.kube/config"
3 | config_context = "my-context"
4 | }
5 |
6 | resource "kubernetes_namespace" "example" {
7 | metadata {
8 | name = "my-first-namespace"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/examples/example_2.tf:
--------------------------------------------------------------------------------
1 | provider "kubernetes" {
2 | config_path = "~/.kube/config"
3 | }
4 |
--------------------------------------------------------------------------------
/examples/example_3.tf:
--------------------------------------------------------------------------------
1 | provider "kubernetes" {
2 | config_paths = [
3 | "/path/to/config_a.yaml",
4 | "/path/to/config_b.yaml"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/examples/example_4.tf:
--------------------------------------------------------------------------------
1 | provider "kubernetes" {
2 | host = "https://cluster_endpoint:port"
3 |
4 | client_certificate = file("~/.kube/client-cert.pem")
5 | client_key = file("~/.kube/client-key.pem")
6 | cluster_ca_certificate = file("~/.kube/cluster-ca-cert.pem")
7 | }
8 |
--------------------------------------------------------------------------------
/examples/example_5.tf:
--------------------------------------------------------------------------------
1 | provider "kubernetes" {
2 | host = var.cluster_endpoint
3 | cluster_ca_certificate = base64decode(var.cluster_ca_cert)
4 | exec {
5 | api_version = "client.authentication.k8s.io/v1beta1"
6 | args = ["eks", "get-token", "--cluster-name", var.cluster_name]
7 | command = "aws"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/examples/example_6.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_deployment_v1" "this" {
2 | // omit the resource config
3 | lifecycle {
4 | ignore_changes = [
5 | spec[0].template[0].metadata[0].annotations["kubectl.kubernetes.io/restartedAt"],
6 | ]
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/examples/example_7.tf:
--------------------------------------------------------------------------------
1 | provider "kubernetes" {
2 | ignore_annotations = [
3 | "cni\\.projectcalico\\.org\\/podIP",
4 | "cni\\.projectcalico\\.org\\/podIPs",
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/examples/example_8.tf:
--------------------------------------------------------------------------------
1 | provider "kubernetes" {
2 | ignore_annotations = [
3 | "^service\\.beta\\.kubernetes\\.io\\/aws-load-balancer.*",
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/examples/functions/manifest_decode/example_1.tf:
--------------------------------------------------------------------------------
1 | # Configuration using provider functions must include required_providers configuration.
2 | terraform {
3 | required_providers {
4 | kubernetes = {
5 | source = "hashicorp/kubernetes"
6 | # Setting the provider version is a strongly recommended practice
7 | # version = "..."
8 | }
9 | }
10 | # Provider functions require Terraform 1.8 and later.
11 | required_version = ">= 1.8.0"
12 | }
13 |
14 | output "example_output" {
15 | value = provider::kubernetes::manifest_decode(file("manifest.yaml"))
16 | }
17 |
--------------------------------------------------------------------------------
/examples/functions/manifest_decode_multi/example_1.tf:
--------------------------------------------------------------------------------
1 | # Configuration using provider functions must include required_providers configuration.
2 | terraform {
3 | required_providers {
4 | kubernetes = {
5 | source = "hashicorp/kubernetes"
6 | # Setting the provider version is a strongly recommended practice
7 | # version = "..."
8 | }
9 | }
10 | # Provider functions require Terraform 1.8 and later.
11 | required_version = ">= 1.8.0"
12 | }
13 |
14 | output "example_output" {
15 | value = provider::kubernetes::manifest_decode_multi(file("manifest.yaml"))
16 | }
17 |
--------------------------------------------------------------------------------
/examples/resources/annotations/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_annotations" "example" {
2 | api_version = "v1"
3 | kind = "ConfigMap"
4 | metadata {
5 | name = "my-config"
6 | }
7 | annotations = {
8 | "owner" = "myteam"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/examples/resources/annotations/example_2.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_annotations" "example" {
2 | api_version = "apps/v1"
3 | kind = "Deployment"
4 | metadata {
5 | name = "my-config"
6 | }
7 | # These annotations will be applied to the Deployment resource itself
8 | annotations = {
9 | "owner" = "myteam"
10 | }
11 | # These annotations will be applied to the Pods created by the Deployment
12 | template_annotations = {
13 | "owner" = "myteam"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/examples/resources/api_service/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_api_service" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | spec {
6 | selector {
7 | app = "${kubernetes_pod.example.metadata.0.labels.app}"
8 | }
9 | session_affinity = "ClientIP"
10 | port {
11 | port = 8080
12 | target_port = 80
13 | }
14 |
15 | type = "LoadBalancer"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/examples/resources/api_service_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_api_service_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | spec {
6 | selector {
7 | app = "${kubernetes_pod.example.metadata.0.labels.app}"
8 | }
9 | session_affinity = "ClientIP"
10 | port {
11 | port = 8080
12 | target_port = 80
13 | }
14 |
15 | type = "LoadBalancer"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/examples/resources/cluster_role/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_cluster_role" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 |
6 | rule {
7 | api_groups = [""]
8 | resources = ["namespaces", "pods"]
9 | verbs = ["get", "list", "watch"]
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/examples/resources/cluster_role/example_2.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_cluster_role" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 |
6 | aggregation_rule {
7 | cluster_role_selectors {
8 | match_labels = {
9 | foo = "bar"
10 | }
11 |
12 | match_expressions {
13 | key = "environment"
14 | operator = "In"
15 | values = ["non-exists-12345"]
16 | }
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/examples/resources/cluster_role_binding/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_cluster_role_binding" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | role_ref {
6 | api_group = "rbac.authorization.k8s.io"
7 | kind = "ClusterRole"
8 | name = "cluster-admin"
9 | }
10 | subject {
11 | kind = "User"
12 | name = "admin"
13 | api_group = "rbac.authorization.k8s.io"
14 | }
15 | subject {
16 | kind = "ServiceAccount"
17 | name = "default"
18 | namespace = "kube-system"
19 | }
20 | subject {
21 | kind = "Group"
22 | name = "system:masters"
23 | api_group = "rbac.authorization.k8s.io"
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/examples/resources/cluster_role_binding_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_cluster_role_binding_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | role_ref {
6 | api_group = "rbac.authorization.k8s.io"
7 | kind = "ClusterRole"
8 | name = "cluster-admin"
9 | }
10 | subject {
11 | kind = "User"
12 | name = "admin"
13 | api_group = "rbac.authorization.k8s.io"
14 | }
15 | subject {
16 | kind = "ServiceAccount"
17 | name = "default"
18 | namespace = "kube-system"
19 | }
20 | subject {
21 | kind = "Group"
22 | name = "system:masters"
23 | api_group = "rbac.authorization.k8s.io"
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/examples/resources/cluster_role_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_cluster_role_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 |
6 | rule {
7 | api_groups = [""]
8 | resources = ["namespaces", "pods"]
9 | verbs = ["get", "list", "watch"]
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/examples/resources/cluster_role_v1/example_2.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_cluster_role_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 |
6 | aggregation_rule {
7 | cluster_role_selectors {
8 | match_labels = {
9 | foo = "bar"
10 | }
11 |
12 | match_expressions {
13 | key = "environment"
14 | operator = "In"
15 | values = ["non-exists-12345"]
16 | }
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/examples/resources/config_map/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_config_map" "example" {
2 | metadata {
3 | name = "my-config"
4 | }
5 |
6 | data = {
7 | api_host = "myhost:443"
8 | db_host = "dbhost:5432"
9 | "my_config_file.yml" = "${file("${path.module}/my_config_file.yml")}"
10 | }
11 |
12 | binary_data = {
13 | "my_payload.bin" = "${filebase64("${path.module}/my_payload.bin")}"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/examples/resources/config_map_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_config_map_v1" "example" {
2 | metadata {
3 | name = "my-config"
4 | }
5 |
6 | data = {
7 | api_host = "myhost:443"
8 | db_host = "dbhost:5432"
9 | "my_config_file.yml" = "${file("${path.module}/my_config_file.yml")}"
10 | }
11 |
12 | binary_data = {
13 | "my_payload.bin" = "${filebase64("${path.module}/my_payload.bin")}"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/examples/resources/config_map_v1_data/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_config_map_v1_data" "example" {
2 | metadata {
3 | name = "my-config"
4 | }
5 | data = {
6 | "owner" = "myteam"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/examples/resources/csi_driver/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_csi_driver" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 |
6 | spec {
7 | attach_required = true
8 | pod_info_on_mount = true
9 | volume_lifecycle_modes = ["Ephemeral"]
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/examples/resources/csi_driver_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_csi_driver_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 |
6 | spec {
7 | attach_required = true
8 | pod_info_on_mount = true
9 | volume_lifecycle_modes = ["Ephemeral"]
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/examples/resources/daemon_set_v1/example_2.tf:
--------------------------------------------------------------------------------
1 | resources {
2 | limits = {}
3 | requests = {}
4 | }
5 |
--------------------------------------------------------------------------------
/examples/resources/daemonset/example_2.tf:
--------------------------------------------------------------------------------
1 | resources {
2 | limits = {}
3 | requests = {}
4 | }
5 |
--------------------------------------------------------------------------------
/examples/resources/default_service_account/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_default_service_account" "example" {
2 | metadata {
3 | namespace = "terraform-example"
4 | }
5 | secret {
6 | name = "${kubernetes_secret.example.metadata.0.name}"
7 | }
8 | }
9 |
10 | resource "kubernetes_secret" "example" {
11 | metadata {
12 | name = "terraform-example"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/examples/resources/default_service_account_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_default_service_account_v1" "example" {
2 | metadata {
3 | namespace = "terraform-example"
4 | }
5 | secret {
6 | name = "${kubernetes_secret_v1.example.metadata.0.name}"
7 | }
8 | }
9 |
10 | resource "kubernetes_secret_v1" "example" {
11 | metadata {
12 | name = "terraform-example"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/examples/resources/deployment/example_2.tf:
--------------------------------------------------------------------------------
1 | resources {
2 | limits = {}
3 | requests = {}
4 | }
5 |
--------------------------------------------------------------------------------
/examples/resources/deployment_v1/example_2.tf:
--------------------------------------------------------------------------------
1 | resources {
2 | limits = {}
3 | requests = {}
4 | }
5 |
--------------------------------------------------------------------------------
/examples/resources/endpoint_slice_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_endpoint_slice_v1" "test" {
2 | metadata {
3 | name = "test"
4 | }
5 |
6 | endpoint {
7 | condition {
8 | ready = true
9 | }
10 | addresses = ["129.144.50.56"]
11 | }
12 |
13 | port {
14 | port = "9000"
15 | name = "first"
16 | }
17 |
18 | address_type = "IPv4"
19 | }
20 |
--------------------------------------------------------------------------------
/examples/resources/env/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_env" "example" {
2 | container = "nginx"
3 | metadata {
4 | name = "nginx-deployment"
5 | }
6 |
7 | api_version = "apps/v1"
8 | kind = "Deployment"
9 |
10 | env {
11 | name = "NGINX_HOST"
12 | value = "google.com"
13 | }
14 |
15 | env {
16 | name = "NGINX_PORT"
17 | value = "90"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/examples/resources/horizontal_pod_autoscaler/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_horizontal_pod_autoscaler" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 |
6 | spec {
7 | max_replicas = 10
8 | min_replicas = 8
9 |
10 | scale_target_ref {
11 | kind = "Deployment"
12 | name = "MyApp"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/examples/resources/horizontal_pod_autoscaler/example_2.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_horizontal_pod_autoscaler" "example" {
2 | metadata {
3 | name = "test"
4 | }
5 |
6 | spec {
7 | min_replicas = 50
8 | max_replicas = 100
9 |
10 | scale_target_ref {
11 | kind = "Deployment"
12 | name = "MyApp"
13 | }
14 |
15 | metric {
16 | type = "External"
17 | external {
18 | metric {
19 | name = "latency"
20 | selector {
21 | match_labels = {
22 | lb_name = "test"
23 | }
24 | }
25 | }
26 | target {
27 | type = "Value"
28 | value = "100"
29 | }
30 | }
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/examples/resources/horizontal_pod_autoscaler_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_horizontal_pod_autoscaler_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 |
6 | spec {
7 | max_replicas = 10
8 | min_replicas = 8
9 |
10 | scale_target_ref {
11 | kind = "Deployment"
12 | name = "MyApp"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/examples/resources/horizontal_pod_autoscaler_v2/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_horizontal_pod_autoscaler_v2" "example" {
2 | metadata {
3 | name = "test"
4 | }
5 |
6 | spec {
7 | min_replicas = 50
8 | max_replicas = 100
9 |
10 | scale_target_ref {
11 | kind = "Deployment"
12 | name = "MyApp"
13 | }
14 |
15 | metric {
16 | type = "External"
17 | external {
18 | metric {
19 | name = "latency"
20 | selector {
21 | match_labels = {
22 | lb_name = "test"
23 | }
24 | }
25 | }
26 | target {
27 | type = "Value"
28 | value = "100"
29 | }
30 | }
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/examples/resources/horizontal_pod_autoscaler_v2beta2/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_horizontal_pod_autoscaler_v2beta2" "example" {
2 | metadata {
3 | name = "test"
4 | }
5 |
6 | spec {
7 | min_replicas = 50
8 | max_replicas = 100
9 |
10 | scale_target_ref {
11 | kind = "Deployment"
12 | name = "MyApp"
13 | }
14 |
15 | metric {
16 | type = "External"
17 | external {
18 | metric {
19 | name = "latency"
20 | selector {
21 | match_labels = {
22 | lb_name = "test"
23 | }
24 | }
25 | }
26 | target {
27 | type = "Value"
28 | value = "100"
29 | }
30 | }
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/examples/resources/ingress_class/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_ingress_class" "example" {
2 | metadata {
3 | name = "example"
4 | }
5 |
6 | spec {
7 | controller = "example.com/ingress-controller"
8 | parameters {
9 | api_group = "k8s.example.com"
10 | kind = "IngressParameters"
11 | name = "external-lb"
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/examples/resources/ingress_class_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_ingress_class_v1" "example" {
2 | metadata {
3 | name = "example"
4 | }
5 |
6 | spec {
7 | controller = "example.com/ingress-controller"
8 | parameters {
9 | api_group = "k8s.example.com"
10 | kind = "IngressParameters"
11 | name = "external-lb"
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/examples/resources/job/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_job" "demo" {
2 | metadata {
3 | name = "demo"
4 | }
5 | spec {
6 | template {
7 | metadata {}
8 | spec {
9 | container {
10 | name = "pi"
11 | image = "alpine"
12 | command = ["sh", "-c", "sleep 10"]
13 | }
14 | restart_policy = "Never"
15 | }
16 | }
17 | backoff_limit = 4
18 | }
19 | wait_for_completion = false
20 | }
21 |
--------------------------------------------------------------------------------
/examples/resources/job/example_2.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_job" "demo" {
2 | metadata {
3 | name = "demo"
4 | }
5 | spec {
6 | template {
7 | metadata {}
8 | spec {
9 | container {
10 | name = "pi"
11 | image = "perl"
12 | command = ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
13 | }
14 | restart_policy = "Never"
15 | }
16 | }
17 | backoff_limit = 4
18 | }
19 | wait_for_completion = true
20 | timeouts {
21 | create = "2m"
22 | update = "2m"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/examples/resources/job_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_job_v1" "demo" {
2 | metadata {
3 | name = "demo"
4 | }
5 | spec {
6 | template {
7 | metadata {}
8 | spec {
9 | container {
10 | name = "pi"
11 | image = "perl"
12 | command = ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
13 | }
14 | restart_policy = "Never"
15 | }
16 | }
17 | backoff_limit = 4
18 | }
19 | wait_for_completion = false
20 | }
21 |
--------------------------------------------------------------------------------
/examples/resources/job_v1/example_2.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_job_v1" "demo" {
2 | metadata {
3 | name = "demo"
4 | }
5 | spec {
6 | template {
7 | metadata {}
8 | spec {
9 | container {
10 | name = "pi"
11 | image = "perl"
12 | command = ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
13 | }
14 | restart_policy = "Never"
15 | }
16 | }
17 | backoff_limit = 4
18 | }
19 | wait_for_completion = true
20 | timeouts {
21 | create = "2m"
22 | update = "2m"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/examples/resources/labels/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_labels" "example" {
2 | api_version = "v1"
3 | kind = "ConfigMap"
4 | metadata {
5 | name = "my-config"
6 | }
7 | labels = {
8 | "owner" = "myteam"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/examples/resources/limit_range/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_limit_range" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | spec {
6 | limit {
7 | type = "Pod"
8 | max = {
9 | cpu = "200m"
10 | memory = "1024Mi"
11 | }
12 | }
13 | limit {
14 | type = "PersistentVolumeClaim"
15 | min = {
16 | storage = "24M"
17 | }
18 | }
19 | limit {
20 | type = "Container"
21 | default = {
22 | cpu = "50m"
23 | memory = "24Mi"
24 | }
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/examples/resources/limit_range_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_limit_range_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | spec {
6 | limit {
7 | type = "Pod"
8 | max = {
9 | cpu = "200m"
10 | memory = "1024Mi"
11 | }
12 | }
13 | limit {
14 | type = "PersistentVolumeClaim"
15 | min = {
16 | storage = "24M"
17 | }
18 | }
19 | limit {
20 | type = "Container"
21 | default = {
22 | cpu = "50m"
23 | memory = "24Mi"
24 | }
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/examples/resources/manifest/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_manifest" "test-configmap" {
2 | manifest = {
3 | "apiVersion" = "v1"
4 | "kind" = "ConfigMap"
5 | "metadata" = {
6 | "name" = "test-config"
7 | "namespace" = "default"
8 | }
9 | "data" = {
10 | "foo" = "bar"
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/examples/resources/manifest/example_3.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_manifest" "test" {
2 | manifest = {
3 | // ...
4 | }
5 |
6 | wait {
7 | fields = {
8 | # Check the phase of a pod
9 | "status.phase" = "Running"
10 |
11 | # Check a container's status
12 | "status.containerStatuses[0].ready" = "true",
13 |
14 | # Check an ingress has an IP
15 | "status.loadBalancer.ingress[0].ip" = "^(\\d+(\\.|$)){4}"
16 |
17 | # Check the replica count of a Deployment
18 | "status.readyReplicas" = "2"
19 | }
20 | }
21 |
22 | timeouts {
23 | create = "10m"
24 | update = "10m"
25 | delete = "30s"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/examples/resources/manifest/example_4.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_manifest" "test" {
2 | manifest = {
3 | // ...
4 | }
5 |
6 | wait {
7 | rollout = true
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/examples/resources/manifest/example_5.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_manifest" "test" {
2 | manifest = {
3 | // ...
4 | }
5 |
6 | wait {
7 | condition {
8 | type = "ContainersReady"
9 | status = "True"
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/examples/resources/manifest/example_6.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_manifest" "test" {
2 | provider = kubernetes-alpha
3 |
4 | manifest = {
5 | // ...
6 | }
7 |
8 | field_manager {
9 | # set the name of the field manager
10 | name = "myteam"
11 |
12 | # force field manager conflicts to be overridden
13 | force_conflicts = true
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/examples/resources/namespace/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_namespace" "example" {
2 | metadata {
3 | annotations = {
4 | name = "example-annotation"
5 | }
6 |
7 | labels = {
8 | mylabel = "label-value"
9 | }
10 |
11 | name = "terraform-example-namespace"
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/examples/resources/namespace_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_namespace_v1" "example" {
2 | metadata {
3 | annotations = {
4 | name = "example-annotation"
5 | }
6 |
7 | labels = {
8 | mylabel = "label-value"
9 | }
10 |
11 | name = "terraform-example-namespace"
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/examples/resources/node_taint/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_node_taint" "example" {
2 | metadata {
3 | name = "my-node.my-cluster.k8s.local"
4 | }
5 | taint {
6 | key = "node-role.kubernetes.io/example"
7 | value = "true"
8 | effect = "NoSchedule"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/examples/resources/persistent_volume/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_persistent_volume" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | spec {
6 | capacity = {
7 | storage = "2Gi"
8 | }
9 | access_modes = ["ReadWriteMany"]
10 | persistent_volume_source {
11 | vsphere_volume {
12 | volume_path = "/absolute/path"
13 | }
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/examples/resources/persistent_volume_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_persistent_volume_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | spec {
6 | capacity = {
7 | storage = "2Gi"
8 | }
9 | access_modes = ["ReadWriteMany"]
10 | persistent_volume_source {
11 | vsphere_volume {
12 | volume_path = "/absolute/path"
13 | }
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/examples/resources/pod/example_4.tf:
--------------------------------------------------------------------------------
1 | resources {
2 | limits = {}
3 | requests = {}
4 | }
5 |
--------------------------------------------------------------------------------
/examples/resources/pod_disruption_budget/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_pod_disruption_budget" "demo" {
2 | metadata {
3 | name = "demo"
4 | }
5 | spec {
6 | max_unavailable = "20%"
7 | selector {
8 | match_labels = {
9 | test = "MyExampleApp"
10 | }
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/examples/resources/pod_disruption_budget_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_pod_disruption_budget_v1" "demo" {
2 | metadata {
3 | name = "demo"
4 | }
5 | spec {
6 | max_unavailable = "20%"
7 | selector {
8 | match_labels = {
9 | test = "MyExampleApp"
10 | }
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/examples/resources/pod_v1/example_4.tf:
--------------------------------------------------------------------------------
1 | resources {
2 | limits = {}
3 | requests = {}
4 | }
5 |
--------------------------------------------------------------------------------
/examples/resources/priority_class/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_priority_class" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 |
6 | value = 100
7 | }
8 |
--------------------------------------------------------------------------------
/examples/resources/priority_class_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_priority_class_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 |
6 | value = 100
7 | }
8 |
--------------------------------------------------------------------------------
/examples/resources/resource_quota/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_resource_quota" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | spec {
6 | hard = {
7 | pods = 10
8 | }
9 | scopes = ["BestEffort"]
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/examples/resources/resource_quota_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_resource_quota_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | spec {
6 | hard = {
7 | pods = 10
8 | }
9 | scopes = ["BestEffort"]
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/examples/resources/role/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_role" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | labels = {
5 | test = "MyRole"
6 | }
7 | }
8 |
9 | rule {
10 | api_groups = [""]
11 | resources = ["pods"]
12 | resource_names = ["foo"]
13 | verbs = ["get", "list", "watch"]
14 | }
15 | rule {
16 | api_groups = ["apps"]
17 | resources = ["deployments"]
18 | verbs = ["get", "list"]
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/examples/resources/role_binding/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_role_binding" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | namespace = "default"
5 | }
6 | role_ref {
7 | api_group = "rbac.authorization.k8s.io"
8 | kind = "Role"
9 | name = "admin"
10 | }
11 | subject {
12 | kind = "User"
13 | name = "admin"
14 | api_group = "rbac.authorization.k8s.io"
15 | }
16 | subject {
17 | kind = "ServiceAccount"
18 | name = "default"
19 | namespace = "kube-system"
20 | }
21 | subject {
22 | kind = "Group"
23 | name = "system:masters"
24 | api_group = "rbac.authorization.k8s.io"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/examples/resources/role_binding_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_role_binding_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | namespace = "default"
5 | }
6 | role_ref {
7 | api_group = "rbac.authorization.k8s.io"
8 | kind = "Role"
9 | name = "admin"
10 | }
11 | subject {
12 | kind = "User"
13 | name = "admin"
14 | api_group = "rbac.authorization.k8s.io"
15 | }
16 | subject {
17 | kind = "ServiceAccount"
18 | name = "default"
19 | namespace = "kube-system"
20 | }
21 | subject {
22 | kind = "Group"
23 | name = "system:masters"
24 | api_group = "rbac.authorization.k8s.io"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/examples/resources/role_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_role_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | labels = {
5 | test = "MyRole"
6 | }
7 | }
8 |
9 | rule {
10 | api_groups = [""]
11 | resources = ["pods"]
12 | resource_names = ["foo"]
13 | verbs = ["get", "list", "watch"]
14 | }
15 | rule {
16 | api_groups = ["apps"]
17 | resources = ["deployments"]
18 | verbs = ["get", "list"]
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/examples/resources/runtime_class_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_runtime_class_v1" "example" {
2 | metadata {
3 | name = "myclass"
4 | }
5 | handler = "abcdeagh"
6 | }
7 |
--------------------------------------------------------------------------------
/examples/resources/secret/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_secret" "example" {
2 | metadata {
3 | name = "basic-auth"
4 | }
5 |
6 | data = {
7 | username = "admin"
8 | password = "P4ssw0rd"
9 | }
10 |
11 | type = "kubernetes.io/basic-auth"
12 | }
13 |
--------------------------------------------------------------------------------
/examples/resources/secret/example_2.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_secret" "example" {
2 | metadata {
3 | name = "docker-cfg"
4 | }
5 |
6 | data = {
7 | ".dockerconfigjson" = "${file("${path.module}/.docker/config.json")}"
8 | }
9 |
10 | type = "kubernetes.io/dockerconfigjson"
11 | }
12 |
--------------------------------------------------------------------------------
/examples/resources/secret/example_3.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_secret" "example" {
2 | metadata {
3 | name = "docker-cfg"
4 | }
5 |
6 | type = "kubernetes.io/dockerconfigjson"
7 |
8 | data = {
9 | ".dockerconfigjson" = jsonencode({
10 | auths = {
11 | "${var.registry_server}" = {
12 | "username" = var.registry_username
13 | "password" = var.registry_password
14 | "email" = var.registry_email
15 | "auth" = base64encode("${var.registry_username}:${var.registry_password}")
16 | }
17 | }
18 | })
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/examples/resources/secret/example_4.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_secret" "example" {
2 | metadata {
3 | annotations = {
4 | "kubernetes.io/service-account.name" = "my-service-account"
5 | }
6 |
7 | generate_name = "my-service-account-"
8 | }
9 |
10 | type = "kubernetes.io/service-account-token"
11 | wait_for_service_account_token = true
12 | }
13 |
--------------------------------------------------------------------------------
/examples/resources/secret_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_secret_v1" "example" {
2 | metadata {
3 | name = "basic-auth"
4 | }
5 |
6 | data = {
7 | username = "admin"
8 | password = "P4ssw0rd"
9 | }
10 |
11 | type = "kubernetes.io/basic-auth"
12 | }
13 |
--------------------------------------------------------------------------------
/examples/resources/secret_v1/example_2.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_secret_v1" "example" {
2 | metadata {
3 | name = "docker-cfg"
4 | }
5 |
6 | data = {
7 | ".dockerconfigjson" = "${file("${path.module}/.docker/config.json")}"
8 | }
9 |
10 | type = "kubernetes.io/dockerconfigjson"
11 | }
12 |
--------------------------------------------------------------------------------
/examples/resources/secret_v1/example_3.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_secret_v1" "example" {
2 | metadata {
3 | name = "docker-cfg"
4 | }
5 |
6 | type = "kubernetes.io/dockerconfigjson"
7 |
8 | data = {
9 | ".dockerconfigjson" = jsonencode({
10 | auths = {
11 | "${var.registry_server}" = {
12 | "username" = var.registry_username
13 | "password" = var.registry_password
14 | "email" = var.registry_email
15 | "auth" = base64encode("${var.registry_username}:${var.registry_password}")
16 | }
17 | }
18 | })
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/examples/resources/secret_v1/example_4.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_secret_v1" "example" {
2 | metadata {
3 | annotations = {
4 | "kubernetes.io/service-account.name" = "my-service-account"
5 | }
6 |
7 | generate_name = "my-service-account-"
8 | }
9 |
10 | type = "kubernetes.io/service-account-token"
11 | wait_for_service_account_token = true
12 | }
13 |
--------------------------------------------------------------------------------
/examples/resources/service/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_service" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | spec {
6 | selector = {
7 | app = kubernetes_pod.example.metadata.0.labels.app
8 | }
9 | session_affinity = "ClientIP"
10 | port {
11 | port = 8080
12 | target_port = 80
13 | }
14 |
15 | type = "LoadBalancer"
16 | }
17 | }
18 |
19 | resource "kubernetes_pod" "example" {
20 | metadata {
21 | name = "terraform-example"
22 | labels = {
23 | app = "MyApp"
24 | }
25 | }
26 |
27 | spec {
28 | container {
29 | image = "nginx:1.21.6"
30 | name = "example"
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/examples/resources/service_account/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_service_account" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
7 | resource "kubernetes_secret" "example" {
8 | metadata {
9 | annotations = {
10 | "kubernetes.io/service-account.name" = kubernetes_service_account.example.metadata.0.name
11 | }
12 |
13 | generate_name = "terraform-example-"
14 | }
15 |
16 | type = "kubernetes.io/service-account-token"
17 | wait_for_service_account_token = true
18 | }
19 |
--------------------------------------------------------------------------------
/examples/resources/service_account_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_service_account_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | }
6 |
7 | resource "kubernetes_secret_v1" "example" {
8 | metadata {
9 | annotations = {
10 | "kubernetes.io/service-account.name" = kubernetes_service_account_v1.example.metadata.0.name
11 | }
12 |
13 | generate_name = "terraform-example-"
14 | }
15 |
16 | type = "kubernetes.io/service-account-token"
17 | wait_for_service_account_token = true
18 | }
19 |
--------------------------------------------------------------------------------
/examples/resources/service_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_service_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | spec {
6 | selector = {
7 | app = kubernetes_pod.example.metadata.0.labels.app
8 | }
9 | session_affinity = "ClientIP"
10 | port {
11 | port = 8080
12 | target_port = 80
13 | }
14 |
15 | type = "LoadBalancer"
16 | }
17 | }
18 |
19 | resource "kubernetes_pod" "example" {
20 | metadata {
21 | name = "terraform-example"
22 | labels = {
23 | app = "MyApp"
24 | }
25 | }
26 |
27 | spec {
28 | container {
29 | image = "nginx:1.21.6"
30 | name = "example"
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/examples/resources/storage_class/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_storage_class" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | storage_provisioner = "kubernetes.io/gce-pd"
6 | reclaim_policy = "Retain"
7 | parameters = {
8 | type = "pd-standard"
9 | }
10 | mount_options = ["file_mode=0700", "dir_mode=0777", "mfsymlinks", "uid=1000", "gid=1000", "nobrl", "cache=none"]
11 | }
12 |
--------------------------------------------------------------------------------
/examples/resources/storage_class_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_storage_class_v1" "example" {
2 | metadata {
3 | name = "terraform-example"
4 | }
5 | storage_provisioner = "kubernetes.io/gce-pd"
6 | reclaim_policy = "Retain"
7 | parameters = {
8 | type = "pd-standard"
9 | }
10 | mount_options = ["file_mode=0700", "dir_mode=0777", "mfsymlinks", "uid=1000", "gid=1000", "nobrl", "cache=none"]
11 | }
12 |
--------------------------------------------------------------------------------
/examples/resources/token_request_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_service_account_v1" "test" {
2 | metadata {
3 | name = "test"
4 | }
5 | }
6 |
7 | resource "kubernetes_token_request_v1" "test" {
8 | metadata {
9 | name = kubernetes_service_account_v1.test.metadata.0.name
10 | }
11 | spec {
12 | audiences = [
13 | "api",
14 | "vault",
15 | "factors"
16 | ]
17 | }
18 | }
19 |
20 | output "tokenValue" {
21 | value = kubernetes_token_request_v1.test.token
22 | }
23 |
--------------------------------------------------------------------------------
/examples/resources/validating_webhook_configuration/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_validating_webhook_configuration" "example" {
2 | metadata {
3 | name = "test.terraform.io"
4 | }
5 |
6 | webhook {
7 | name = "test.terraform.io"
8 |
9 | admission_review_versions = ["v1", "v1beta1"]
10 |
11 | client_config {
12 | service {
13 | namespace = "example-namespace"
14 | name = "example-service"
15 | }
16 | }
17 |
18 | rule {
19 | api_groups = ["apps"]
20 | api_versions = ["v1"]
21 | operations = ["CREATE"]
22 | resources = ["deployments"]
23 | scope = "Namespaced"
24 | }
25 |
26 | side_effects = "None"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/examples/resources/validating_webhook_configuration_v1/example_1.tf:
--------------------------------------------------------------------------------
1 | resource "kubernetes_validating_webhook_configuration_v1" "example" {
2 | metadata {
3 | name = "test.terraform.io"
4 | }
5 |
6 | webhook {
7 | name = "test.terraform.io"
8 |
9 | admission_review_versions = ["v1", "v1beta1"]
10 |
11 | client_config {
12 | service {
13 | namespace = "example-namespace"
14 | name = "example-service"
15 | }
16 | }
17 |
18 | rule {
19 | api_groups = ["apps"]
20 | api_versions = ["v1"]
21 | operations = ["CREATE"]
22 | resources = ["deployments"]
23 | scope = "Namespaced"
24 | }
25 |
26 | side_effects = "None"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/internal/framework/provider/functions/functions_test.go:
--------------------------------------------------------------------------------
1 | // Copyright (c) HashiCorp, Inc.
2 | // SPDX-License-Identifier: MPL-2.0
3 |
4 | package functions_test
5 |
6 | import (
7 | "github.com/hashicorp/terraform-plugin-framework/providerserver"
8 | "github.com/hashicorp/terraform-plugin-go/tfprotov5"
9 | "github.com/hashicorp/terraform-provider-kubernetes/internal/framework/provider"
10 | )
11 |
12 | var testAccProtoV5ProviderFactories = map[string]func() (tfprotov5.ProviderServer, error){
13 | "kubernetes": providerserver.NewProtocol5WithError(provider.New("test", nil)),
14 | }
15 |
--------------------------------------------------------------------------------
/internal/framework/provider/functions/testdata/decode_manifest_invalid.yaml:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | ---
5 | this: is
6 | not: a
7 | kubernetes: manifest
8 |
--------------------------------------------------------------------------------
/internal/framework/provider/functions/testdata/decode_manifest_invalid_syntax.yaml:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | --
5 | apiVersion: v1
6 | kind: ConfigMap
7 | metadata:
8 | name: test-configmap
9 | labels:
10 | test: "test---label"
11 | &data:
12 | configfile: |
13 | ---
14 | test: document
15 |
--------------------------------------------------------------------------------
/internal/framework/provider/functions/testdata/decode_single.yaml:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | ---
5 | apiVersion: v1
6 | kind: ConfigMap
7 | metadata:
8 | name: test-configmap
9 | annotations: null
10 | labels:
11 | test: "test---label"
12 | data:
13 | configfile: |
14 | ---
15 | test: document
16 | status:
17 |
--------------------------------------------------------------------------------
/kubernetes/diff_supress_funcs.go:
--------------------------------------------------------------------------------
1 | // Copyright (c) HashiCorp, Inc.
2 | // SPDX-License-Identifier: MPL-2.0
3 |
4 | package kubernetes
5 |
6 | import (
7 | "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
8 | "k8s.io/apimachinery/pkg/api/resource"
9 | )
10 |
11 | func suppressEquivalentResourceQuantity(k, old, new string, d *schema.ResourceData) bool {
12 | oldQ, err := resource.ParseQuantity(old)
13 | if err != nil {
14 | return false
15 | }
16 | newQ, err := resource.ParseQuantity(new)
17 | if err != nil {
18 | return false
19 | }
20 | return oldQ.Cmp(newQ) == 0
21 | }
22 |
--------------------------------------------------------------------------------
/kubernetes/options_helpers.go:
--------------------------------------------------------------------------------
1 | // Copyright (c) HashiCorp, Inc.
2 | // SPDX-License-Identifier: MPL-2.0
3 |
4 | package kubernetes
5 |
6 | import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
7 |
8 | var (
9 | cascadeDeletePolicy = metav1.DeletePropagationForeground
10 | deleteOptions = metav1.DeleteOptions{
11 | PropagationPolicy: &cascadeDeletePolicy,
12 | }
13 | )
14 |
--------------------------------------------------------------------------------
/kubernetes/schema_helpers.go:
--------------------------------------------------------------------------------
1 | // Copyright (c) HashiCorp, Inc.
2 | // SPDX-License-Identifier: MPL-2.0
3 |
4 | package kubernetes
5 |
6 | func conditionalDefault(condition bool, defaultValue interface{}) interface{} {
7 | if !condition {
8 | return nil
9 | }
10 |
11 | return defaultValue
12 | }
13 |
--------------------------------------------------------------------------------
/kubernetes/schema_pod_template.go:
--------------------------------------------------------------------------------
1 | // Copyright (c) HashiCorp, Inc.
2 | // SPDX-License-Identifier: MPL-2.0
3 |
4 | package kubernetes
5 |
6 | import (
7 | "fmt"
8 |
9 | "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
10 | )
11 |
12 | func podTemplateFields(owner string) map[string]*schema.Schema {
13 | s := map[string]*schema.Schema{
14 | "metadata": namespacedMetadataSchemaIsTemplate(owner, true, true),
15 | "spec": {
16 | Type: schema.TypeList,
17 | Description: fmt.Sprintf("Spec of the pods owned by the %s", owner),
18 | Optional: true,
19 | MaxItems: 1,
20 | Elem: &schema.Resource{
21 | Schema: podSpecFields(true, false),
22 | },
23 | },
24 | }
25 | return s
26 | }
27 |
--------------------------------------------------------------------------------
/kubernetes/test-dfa/config-basic/cluster.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | terraform {
5 | required_providers {
6 | kind = {
7 | source = "tehcyx/kind"
8 | }
9 | }
10 | }
11 |
12 | resource "kind_cluster" "demo" {
13 | name = "tfacc"
14 | }
15 |
16 | provider "kubernetes" {
17 | host = kind_cluster.demo.endpoint
18 | cluster_ca_certificate = kind_cluster.demo.cluster_ca_certificate
19 | client_certificate = kind_cluster.demo.client_certificate
20 | client_key = kind_cluster.demo.client_key
21 | }
22 |
--------------------------------------------------------------------------------
/kubernetes/test-fixtures/binary.data:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hashicorp/terraform-provider-kubernetes/299de2f546e9d8478cdc653de19a5607bd2fe1ff/kubernetes/test-fixtures/binary.data
--------------------------------------------------------------------------------
/kubernetes/test-fixtures/binary2.data:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hashicorp/terraform-provider-kubernetes/299de2f546e9d8478cdc653de19a5607bd2fe1ff/kubernetes/test-fixtures/binary2.data
--------------------------------------------------------------------------------
/kubernetes/test-infra/aks/outputs.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | output "kubeconfig" {
5 | value = azurerm_kubernetes_cluster.test.kube_config_raw
6 | sensitive = true
7 | }
8 |
9 | output "cluster_name" {
10 | value = "test-aks-${random_pet.name.id}"
11 | }
12 |
--------------------------------------------------------------------------------
/kubernetes/test-infra/aks/terraform.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 |
5 | terraform {
6 | required_version = ">= 1.0"
7 |
8 | required_providers {
9 | azurerm = {
10 | source = "hashicorp/azurerm"
11 | version = ">= 3.0.0, < 4.0.0"
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/kubernetes/test-infra/aks/variables.tf:
--------------------------------------------------------------------------------
1 | // Copyright (c) HashiCorp, Inc.
2 | // SPDX-License-Identifier: MPL-2.0
3 |
4 | variable "location" {
5 | type = string
6 | default = "West Europe"
7 | }
8 |
9 | variable "node_count" {
10 | type = number
11 | default = 2
12 | }
13 |
14 | variable "vm_size" {
15 | type = string
16 | default = "Standard_A4_v2"
17 | }
18 |
19 | variable "cluster_version" {
20 | type = string
21 | default = "1.27"
22 | }
--------------------------------------------------------------------------------
/kubernetes/test-infra/aws-ebs-csi-driver/README.md:
--------------------------------------------------------------------------------
1 | # Amazon Elastic Block Store (EBS) CSI driver
2 |
3 | The Amazon Elastic Block Store Container Storage Interface (CSI) Driver provides a CSI interface used by Container Orchestrators to manage the lifecycle of Amazon EBS volumes. More information [here](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/tree/master).
4 |
--------------------------------------------------------------------------------
/kubernetes/test-infra/aws-ebs-csi-driver/main.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "helm_release" "aws_ebs_csi_driver" {
5 | name = "aws-ebs-csi-driver"
6 |
7 | repository = "https://kubernetes-sigs.github.io/aws-ebs-csi-driver"
8 | chart = "aws-ebs-csi-driver"
9 | version = var.chart_version
10 |
11 | namespace = "kube-system"
12 | }
13 |
--------------------------------------------------------------------------------
/kubernetes/test-infra/aws-ebs-csi-driver/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | variable "chart_version" {
5 | default = "2.22.0"
6 | }
7 |
--------------------------------------------------------------------------------
/kubernetes/test-infra/aws-ebs-csi-driver/versions.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 |
5 | terraform {
6 | required_version = ">= 1.0"
7 |
8 | required_providers {
9 | google = {
10 | source = "hashicorp/aws"
11 | version = ">= 5.0.0, < 6.0.0"
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/kubernetes/test-infra/eks/README.md:
--------------------------------------------------------------------------------
1 | # EKS Managed Node Group Example
2 |
3 | This is a minimal configuration to provision an EKS cluster for testing purposes.
--------------------------------------------------------------------------------
/kubernetes/test-infra/eks/terraform.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 |
5 | terraform {
6 | required_version = ">= 1.0"
7 |
8 | required_providers {
9 | aws = {
10 | source = "hashicorp/aws"
11 | version = ">= 5.0.0, < 6.0.0"
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/kubernetes/test-infra/eks/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | variable "cluster_version" {
5 | default = "1.27"
6 | }
7 |
8 | variable "nodes_per_az" {
9 | default = 1
10 | type = number
11 | }
12 |
13 | variable "instance_type" {
14 | default = "m7g.large"
15 | }
16 |
17 | variable "az_span" {
18 | type = number
19 | default = 2
20 | validation {
21 | condition = var.az_span > 1
22 | error_message = "Cluster must span at least 2 AZs"
23 | }
24 | }
25 |
26 | variable "cluster_name" {
27 | default = ""
28 | }
29 |
30 | variable "capacity_type" {
31 | description = "Type of capacity associated with the EKS Node Group."
32 | default = "ON_DEMAND"
33 | }
34 |
--------------------------------------------------------------------------------
/kubernetes/test-infra/gke/outputs.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | output "google_zone" {
5 | value = data.google_compute_zones.available.names[0]
6 | }
7 |
8 | output "node_version" {
9 | value = google_container_cluster.primary.node_version
10 | }
11 |
12 | output "kubeconfig_path" {
13 | value = local_file.kubeconfig.filename
14 | }
15 |
16 | output "cluster_name" {
17 | value = google_container_cluster.primary.name
18 | }
19 |
--------------------------------------------------------------------------------
/kubernetes/test-infra/gke/terraform.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 |
5 | terraform {
6 | required_version = ">= 1.0"
7 |
8 | required_providers {
9 | google = {
10 | source = "hashicorp/google"
11 | version = ">= 5.0.0, < 6.0.0"
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/kubernetes/test-infra/gke/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | variable "cluster_version" {
5 | default = ""
6 | }
7 |
8 | variable "node_count" {
9 | default = "1"
10 | }
11 |
12 | variable "instance_type" {
13 | default = "e2-standard-2"
14 | }
15 |
16 | variable "enable_alpha" {
17 | default = false
18 | }
19 |
20 | variable "cluster_name" {
21 | default = ""
22 | }
23 |
--------------------------------------------------------------------------------
/kubernetes/test-infra/tfproviderdocs/main.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | provider "kubernetes" {}
5 |
--------------------------------------------------------------------------------
/kubernetes/test-infra/typhoon-aws/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | variable "base_domain" {
5 | type = string
6 | }
7 |
8 | variable "cluster_name" {
9 | type = string
10 | }
11 |
12 | variable "kubernetes_version" {
13 | type = string
14 | default = "1.20.2"
15 | }
16 |
17 | variable "controller_count" {
18 | default = 1
19 | }
20 |
21 | variable "worker_count" {
22 | default = 4
23 | }
24 |
25 | variable "controller_type" {
26 | default = "m5a.xlarge"
27 | }
28 |
29 | variable "worker_type" {
30 | default = "m5a.large"
31 | }
32 |
--------------------------------------------------------------------------------
/kubernetes/test-infra/typhoon-aws/versions.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | terraform {
5 | required_providers {
6 | aws = {
7 | source = "hashicorp/aws"
8 | }
9 | local = {
10 | source = "hashicorp/local"
11 | }
12 | null = {
13 | source = "hashicorp/null"
14 | }
15 | tls = {
16 | source = "hashicorp/tls"
17 | }
18 | }
19 | required_version = ">= 0.13"
20 | }
21 |
--------------------------------------------------------------------------------
/manifest/.gitignore:
--------------------------------------------------------------------------------
1 | /.vscode/**
2 | .terraform/
3 | *.tfstate
4 | *.tfstate.backup
5 | .terraform.lock.hcl
6 | *.log
7 | **/terraform-provider-kubernetes*
8 | /terraform-provider-kubernetes*
9 |
--------------------------------------------------------------------------------
/manifest/GNUmakefile:
--------------------------------------------------------------------------------
1 | TEST?="./..."
2 | ACCTEST?="./test/acceptance"
3 |
4 | test:
5 | go test -v $(TESTARGS) -timeout=30s -parallel=4 $(TEST)
6 |
7 | testacc:
8 | go test -count=1 -tags acceptance $(ACCTEST) -v $(TESTARGS) -timeout 120m
9 |
10 |
11 | .PHONY: test testacc
12 |
--------------------------------------------------------------------------------
/manifest/const.go:
--------------------------------------------------------------------------------
1 | // Copyright (c) HashiCorp, Inc.
2 | // SPDX-License-Identifier: MPL-2.0
3 |
4 | package manifest
5 |
6 | const (
7 | PreserveUnknownFieldsLabel string = "x-kubernetes-preserve-unknown-fields"
8 | )
9 |
--------------------------------------------------------------------------------
/manifest/provider/cache.go:
--------------------------------------------------------------------------------
1 | // Copyright (c) HashiCorp, Inc.
2 | // SPDX-License-Identifier: MPL-2.0
3 |
4 | package provider
5 |
6 | import "sync"
7 |
8 | type cache[T any] struct {
9 | once sync.Once
10 | value T
11 | err error
12 | }
13 |
14 | func (c *cache[T]) Get(f func() (T, error)) (T, error) {
15 | c.once.Do(func() {
16 | c.value, c.err = f()
17 | })
18 | return c.value, c.err
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/provider/getproviderschema.go:
--------------------------------------------------------------------------------
1 | // Copyright (c) HashiCorp, Inc.
2 | // SPDX-License-Identifier: MPL-2.0
3 |
4 | package provider
5 |
6 | import (
7 | "context"
8 |
9 | "github.com/hashicorp/terraform-plugin-go/tfprotov5"
10 | )
11 |
12 | // GetProviderSchema function
13 | func (s *RawProviderServer) GetProviderSchema(ctx context.Context, req *tfprotov5.GetProviderSchemaRequest) (*tfprotov5.GetProviderSchemaResponse, error) {
14 | cfgSchema := GetProviderConfigSchema()
15 | resSchema := GetProviderResourceSchema()
16 | dsSchema := GetProviderDataSourceSchema()
17 |
18 | return &tfprotov5.GetProviderSchemaResponse{
19 | Provider: cfgSchema,
20 | ResourceSchemas: resSchema,
21 | DataSourceSchemas: dsSchema,
22 | }, nil
23 | }
24 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/ComputedFields/computed.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test" {
5 | manifest = {
6 | "apiVersion" = "v1"
7 | "kind" = "ConfigMap"
8 | "metadata" = {
9 | "annotations" = {
10 | "tf-k8s-acc" = "true"
11 | }
12 | "name" = var.name
13 | "namespace" = var.namespace
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/ComputedFields/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | variable "namespace" {
5 | default = "default"
6 | }
7 |
8 | variable "name" {
9 | default = "manifest-acc-test"
10 | }
11 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/ComputedFields/webhook/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | FROM golang:1.24 AS builder
5 | WORKDIR /src/k8s-manifest-hook
6 | ADD *.go ./
7 | ADD go.* ./
8 | RUN CGO_ENABLED=0 go build
9 |
10 | FROM alpine:latest
11 | COPY --from=builder /src/k8s-manifest-hook/k8s-manifest-hook /k8s-manifest-hook
12 | VOLUME /etc/webhook/certs
13 | ENTRYPOINT /k8s-manifest-hook
14 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/ComputedFields/webhook/deploy/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | variable "namespace" {
5 | default = "default"
6 | }
7 |
8 | variable "webhook_image" {
9 | default = "tf-k8s-acc/webhook:latest"
10 | }
11 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/ConfigMap/configmap.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test" {
5 |
6 | manifest = {
7 | apiVersion = "v1"
8 | kind = "ConfigMap"
9 | metadata = {
10 | name = var.name
11 | namespace = var.namespace
12 | }
13 | data = {
14 | foo = "bar"
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/ConfigMap/configmap_modified.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test" {
5 | manifest = {
6 | apiVersion = "v1"
7 | kind = "ConfigMap"
8 | metadata = {
9 | name = var.name
10 | namespace = var.namespace
11 | annotations = {
12 | test = "1"
13 | }
14 | labels = {
15 | test = "2"
16 | }
17 | }
18 | data = {
19 | foo = "bar"
20 | fizz = "buzz"
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/ConfigMap/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/CronJob/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/CustomResource/custom_resource.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 |
5 | resource "kubernetes_manifest" "test" {
6 |
7 | manifest = {
8 | apiVersion = var.group_version
9 | kind = var.kind
10 | metadata = {
11 | namespace = var.namespace
12 | name = var.name
13 | }
14 | data = "this is a test"
15 | refs = 98.765
16 | stuff = [
17 | {
18 | foo = null
19 | }
20 | ]
21 | limits = {
22 | "foo" = "bar"
23 | "baz" = 42
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/DaemonSet/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/DataSourceResources/pods_data_source.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | data "kubernetes_resources" "pods" {
5 | kind = "Pod"
6 | api_version = "v1"
7 | namespace = var.namespace
8 | }
9 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/DeleteNotFoundTest/resource.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 | resource "kubernetes_manifest" "test" {
4 | manifest = {
5 | "apiVersion" = "v1"
6 | "kind" = "ConfigMap"
7 | "metadata" = {
8 | "name" = var.name
9 | "namespace" = var.namespace
10 | }
11 | "data" = {
12 | "foo" = "bar"
13 | }
14 | }
15 | }
16 |
17 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/DeleteNotFoundTest/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Deployment/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/EmptyBlock/step2.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test" {
5 | manifest = {
6 | apiVersion = var.group_version
7 | kind = var.kind
8 | metadata = {
9 | namespace = var.namespace
10 | name = var.name
11 | }
12 | spec = {
13 | selfSigned = {}
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/FieldManager/field_manager.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test" {
5 | manifest = {
6 | apiVersion = "v1"
7 | kind = "ConfigMap"
8 | metadata = {
9 | name = var.name
10 | namespace = var.namespace
11 | }
12 | data = {
13 | foo = var.data
14 | }
15 | }
16 |
17 | field_manager {
18 | name = var.field_manager
19 | force_conflicts = var.force
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/FixListAttributeUpdate/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | variable "name" {
5 | default = "test-fix-list-update"
6 | }
7 |
8 | variable "namespace" {
9 | default = "namespace"
10 | }
11 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/HPA/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Import/import.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test" {
5 | manifest = {
6 | apiVersion = "v1"
7 | kind = "ConfigMap"
8 | metadata = {
9 | name = var.name
10 | namespace = var.namespace
11 | }
12 | data = {
13 | foo = "bar"
14 | fizz = "buzz"
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Import/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Job/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Namespace/namespace.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test" {
5 |
6 | manifest = {
7 | apiVersion = "v1"
8 | kind = "Namespace"
9 | metadata = {
10 | name = var.name
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Namespace/namespace_modified.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 |
5 | resource "kubernetes_manifest" "test" {
6 |
7 | manifest = {
8 | apiVersion = "v1"
9 | kind = "Namespace"
10 | metadata = {
11 | name = var.name
12 | labels = {
13 | test = "test"
14 | }
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Namespace/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/NonStructuredCustomResource/custom_resource.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 |
5 | resource "kubernetes_manifest" "test" {
6 |
7 | manifest = {
8 | apiVersion = var.group_version
9 | kind = var.kind
10 | metadata = {
11 | namespace = var.namespace
12 | name = var.name
13 | }
14 | data = {
15 | nested = {
16 | testdata = var.testdata
17 | }
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Secret/secret.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 |
5 | resource "kubernetes_manifest" "test" {
6 |
7 | manifest = {
8 | apiVersion = "v1"
9 | kind = "Secret"
10 | metadata = {
11 | name = var.name
12 | namespace = var.namespace
13 | }
14 | data = {
15 | PGUSER = "username"
16 | PGPASSWORD = "password"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Secret/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Service/service.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test" {
5 | manifest = {
6 | apiVersion = "v1"
7 | kind = "Service"
8 | metadata = {
9 | name = var.name
10 | namespace = var.namespace
11 | }
12 | spec = {
13 | ports = [
14 | {
15 | name = "http",
16 | port = 80,
17 | targetPort = "http",
18 | }
19 | ]
20 | selector = {
21 | app = "test"
22 | }
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Service/test/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Service/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Service_ClusterIP/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Service_ExternalName/service.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test" {
5 | manifest = {
6 | apiVersion = "v1"
7 | kind = "Service"
8 | metadata = {
9 | name = var.name
10 | namespace = var.namespace
11 | }
12 | spec = {
13 | selector = {
14 | app = "test"
15 | }
16 | type = "ExternalName"
17 | externalName = "terraform.kubernetes.test.com"
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Service_ExternalName/service_modified.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test" {
5 | manifest = {
6 | apiVersion = "v1"
7 | kind = "Service"
8 | metadata = {
9 | name = var.name
10 | namespace = var.namespace
11 | annotations = {
12 | test = "1"
13 | }
14 | labels = {
15 | test = "2"
16 | }
17 | }
18 | spec = {
19 | selector = {
20 | app = "test"
21 | }
22 | type = "ExternalName"
23 | externalName = "kubernetes-alpha.terraform.test.com"
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Service_ExternalName/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Service_LoadBalancer/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Service_NodePort/service.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test" {
5 | manifest = {
6 | apiVersion = "v1"
7 | kind = "Service"
8 | metadata = {
9 | name = var.name
10 | namespace = var.namespace
11 | }
12 | spec = {
13 | ports = [{
14 | name = "http",
15 | port = 80,
16 | targetPort = 8080,
17 | # Protcol is required for serverside apply per https://github.com/kubernetes-sigs/structured-merge-diff/issues/130
18 | protocol = "TCP"
19 | }]
20 | selector = {
21 | app = "test"
22 | }
23 | type = "NodePort"
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Service_NodePort/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/StatefulSet/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Wait/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/Wait/wait_for_condition_invalid.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test" {
5 | manifest = {
6 | apiVersion = "v1"
7 | kind = "Namespace"
8 |
9 | metadata = {
10 | name = var.name
11 | }
12 | }
13 |
14 | wait {
15 | condition {
16 | type = "Ready"
17 | status = "True"
18 | }
19 | }
20 |
21 | timeouts {
22 | create = "3s"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/WaitFor/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/alreadyExists/configmap.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 |
5 | resource "kubernetes_manifest" "test" {
6 | manifest = {
7 | apiVersion = "v1"
8 | kind = "ConfigMap"
9 | metadata = {
10 | name = var.name
11 | namespace = var.namespace
12 | }
13 | data = {
14 | TEST = "test"
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/alreadyExists/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/datasource-resource-status/step2.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | data "kubernetes_resource" "test_deploy" {
5 | api_version = "apps/v1"
6 | kind = "Deployment"
7 | metadata {
8 | name = var.name
9 | namespace = var.namespace
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/datasource-resource-status/variables.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | # These variable declarations are only used for interactive testing.
5 | # The test code will template in different variable declarations with a default value when running the test.
6 | #
7 | # To set values for interactive runs, create a var-file and set values in it.
8 | # If the name of the var-file ends in '.auto.tfvars' (e.g. myvalues.auto.tfvars)
9 | # it will be automatically picked up and used by Terraform.
10 | #
11 | # DO NOT check in any files named *.auto.tfvars when making changes to tests.
12 |
13 | variable "name" {
14 | type = string
15 | }
16 |
17 | variable "namespace" {
18 | type = string
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/datasource/step1.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test_config" {
5 | manifest = {
6 | "apiVersion" = "v1"
7 | "kind" = "ConfigMap"
8 | "metadata" = {
9 | "name" = var.name
10 | "namespace" = var.namespace
11 | }
12 | "data" = {
13 | "TEST" = "hello world"
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/datasource/step2.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | data "kubernetes_resource" "test_config" {
5 | api_version = "v1"
6 | kind = "ConfigMap"
7 | metadata {
8 | name = var.name
9 | namespace = var.namespace
10 | }
11 | }
12 |
13 | resource "kubernetes_manifest" "test_config2" {
14 | manifest = {
15 | "apiVersion" = "v1"
16 | "kind" = "ConfigMap"
17 | "metadata" = {
18 | "name" = var.name2
19 | "namespace" = var.namespace
20 | }
21 | "data" = {
22 | "TEST" = data.kubernetes_resource.test_config.object.data.TEST
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/datasource_plural/step2.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | data "kubernetes_resources" "example"{
5 | kind = "ConfigMap"
6 | api_version = "v1"
7 | namespace = var.namespace
8 | label_selector = var.label_selector
9 | limit = var.limit
10 | }
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/x-kubernetes-preserve-unknown-fields/test-cr-1.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test" {
5 | manifest = {
6 | apiVersion = var.group_version
7 | kind = var.kind
8 | metadata = {
9 | name = var.name
10 | namespace = var.namespace
11 | }
12 | spec = {
13 | count = 100
14 | resources = {
15 | foo = "bar"
16 | }
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/x-kubernetes-preserve-unknown-fields/test-cr-2.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test" {
5 | manifest = {
6 | apiVersion = var.group_version
7 | kind = var.kind
8 | metadata = {
9 | name = var.name
10 | namespace = var.namespace
11 | }
12 | spec = {
13 | count = 100
14 | resources = {
15 | foo = "bar"
16 | baz = "42"
17 | }
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/x-kubernetes-preserve-unknown-fields/test-cr-3.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test" {
5 | manifest = {
6 | apiVersion = var.group_version
7 | kind = var.kind
8 | metadata = {
9 | name = var.name
10 | namespace = var.namespace
11 | }
12 | spec = {
13 | count = 100
14 | resources = {
15 | foo = ["bar"]
16 | baz = "42"
17 | }
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/manifest/test/acceptance/testdata/x-kubernetes-preserve-unknown-fields/test-cr-4.tf:
--------------------------------------------------------------------------------
1 | # Copyright (c) HashiCorp, Inc.
2 | # SPDX-License-Identifier: MPL-2.0
3 |
4 | resource "kubernetes_manifest" "test" {
5 | manifest = {
6 | apiVersion = var.group_version
7 | kind = var.kind
8 | metadata = {
9 | name = var.name
10 | namespace = var.namespace
11 | }
12 | spec = {
13 | count = 100
14 | resources = false
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/manifest/test/plugintest/doc.go:
--------------------------------------------------------------------------------
1 | // Copyright (c) HashiCorp, Inc.
2 | // SPDX-License-Identifier: MPL-2.0
3 |
4 | // Package plugintest contains utilities to help with writing tests for
5 | // Terraform plugins.
6 | //
7 | // This is not a package for testing configurations or modules written in the
8 | // Terraform language. It is for testing the plugins that allow Terraform to
9 | // manage various cloud services and other APIs.
10 | package plugintest
11 |
--------------------------------------------------------------------------------
/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "config:base"
4 | ],
5 | "postUpdateOptions": [
6 | "gomodTidy"
7 | ]
8 | }
--------------------------------------------------------------------------------
/scripts/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Copyright (c) HashiCorp, Inc.
3 | # SPDX-License-Identifier: MPL-2.0
4 |
5 |
6 | GOOS=darwin GOARCH=amd64 go build -v -o build/terraform-provider-kubernetes_darwin-amd64
7 | GOOS=linux GOARCH=amd64 go build -v -o build/terraform-provider-kubernetes_linux-amd64
8 | GOOS=windows GOARCH=amd64 go build -v -o build/terraform-provider-kubernetes_windows-amd64
9 |
10 | gzip build/*
11 |
--------------------------------------------------------------------------------
/scripts/errcheck_excludes.txt:
--------------------------------------------------------------------------------
1 | // Copyright (c) HashiCorp, Inc.
2 | // SPDX-License-Identifier: MPL-2.0
3 |
4 | (github.com/hashicorp/terraform-plugin-go/tftypes.Value).As
5 | github.com/hashicorp/terraform-plugin-go/tfprotov5/tf5server.Serve
6 |
--------------------------------------------------------------------------------
/scripts/gofmtcheck.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | # Copyright (c) HashiCorp, Inc.
3 | # SPDX-License-Identifier: MPL-2.0
4 |
5 |
6 | # Check gofmt
7 | echo "==> Checking that code complies with gofmt requirements..."
8 | gofmt_files=$(gofmt -l `find . -name '*.go' | grep -v vendor`)
9 | if [[ -n ${gofmt_files} ]]; then
10 | echo 'gofmt needs running on the following files:'
11 | echo "${gofmt_files}"
12 | echo "You can use the command: \`make fmt\` to reformat code."
13 | exit 1
14 | fi
15 |
16 | exit 0
17 |
--------------------------------------------------------------------------------
/scripts/gogetcookie.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Copyright (c) HashiCorp, Inc.
3 | # SPDX-License-Identifier: MPL-2.0
4 |
5 | eval 'set +o history' 2>/dev/null || setopt HIST_IGNORE_SPACE 2>/dev/null
6 | touch ~/.gitcookies
7 | chmod 0600 ~/.gitcookies
8 |
9 | git config --global http.cookiefile ~/.gitcookies
10 |
11 | tr , \\t <<\__END__ >>~/.gitcookies
12 | go.googlesource.com,FALSE,/,TRUE,2147483647,o,git-alex.somesan.gmail.com=1/pqqFwLWAqtOsvsLsNE1FMgdyffwTGwNGvvax4yuG50k924qulFkcNacHhpDR-Kq-
13 | go-review.googlesource.com,FALSE,/,TRUE,2147483647,o,git-alex.somesan.gmail.com=1/pqqFwLWAqtOsvsLsNE1FMgdyffwTGwNGvvax4yuG50k924qulFkcNacHhpDR-Kq-
14 | __END__
15 | eval 'set -o history' 2>/dev/null || unsetopt HIST_IGNORE_SPACE 2>/dev/null
16 |
--------------------------------------------------------------------------------
/templates/data-sources/all_namespaces.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_all_namespaces"
4 | description: |-
5 | Lists all namespaces within a cluster.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/data-sources/all_namespaces/example_1.tf"}}
17 |
--------------------------------------------------------------------------------
/templates/data-sources/config_map_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_config_map_v1"
4 | description: |-
5 | This data source reads configuration data from a config map.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 |
15 | ~> **Note:** All arguments including the config map data will be stored in the raw state as plain-text. [Read more about sensitive data in state](/docs/state/sensitive-data.html).
16 |
17 | ## Example Usage
18 |
19 | {{tffile "examples/data-sources/config_map_v1/example_1.tf"}}
20 |
--------------------------------------------------------------------------------
/templates/data-sources/endpoints_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_endpoints_v1"
4 | description: |-
5 | An Endpoints resource is an abstraction, linked to a Service, which defines the list of endpoints that actually implement the service.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/data-sources/endpoints_v1/example_1.tf"}}
17 |
18 |
--------------------------------------------------------------------------------
/templates/data-sources/ingress.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "extensions/v1beta1"
3 | page_title: "Kubernetes: kubernetes_ingress"
4 | description: |-
5 | Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/data-sources/ingress/example_1.tf"}}
17 |
18 |
--------------------------------------------------------------------------------
/templates/data-sources/ingress_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "networking/v1"
3 | page_title: "Kubernetes: kubernetes_ingress_v1"
4 | description: |-
5 | Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/data-sources/ingress_v1/example_1.tf"}}
17 |
--------------------------------------------------------------------------------
/templates/data-sources/mutating_webhook_configuration_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "admissionregistration/v1"
3 | page_title: "Kubernetes: kubernetes_mutating_webhook_configuration_v1"
4 | description: |-
5 | Mutating Webhook Configuration configures a mutating admission webhook
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/data-sources/mutating_webhook_configuration_v1/example_1.tf"}}
17 |
--------------------------------------------------------------------------------
/templates/data-sources/namespace.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_namespace"
4 | description: |-
5 | Queries attributes of a Namespace within the cluster.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/data-sources/namespace/example_1.tf"}}
17 |
--------------------------------------------------------------------------------
/templates/data-sources/nodes.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_nodes"
4 | description: |-
5 | Gets nodes within a cluster.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example usage
15 |
16 | ### All nodes
17 |
18 | {{tffile "examples/data-sources/nodes/example_1.tf"}}
19 |
20 | ### By label
21 |
22 | {{tffile "examples/data-sources/nodes/example_2.tf"}}
23 |
--------------------------------------------------------------------------------
/templates/data-sources/persistent_volume_claim.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_persistent_volume_claim"
4 | description: |-
5 | A PersistentVolumeClaim (PVC) is a request for storage by a user. This data source retrieves information about the specified PVC.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/data-sources/persistent_volume_claim/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | Persistent Volume Claim can be imported using its namespace and name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_persistent_volume_claim.example default/example-name
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/data-sources/persistent_volume_claim_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_persistent_volume_claim_v1"
4 | description: |-
5 | A PersistentVolumeClaim (PVC) is a request for storage by a user. This data source retrieves information about the specified PVC.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/data-sources/persistent_volume_claim_v1/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | Persistent Volume Claim can be imported using its namespace and name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_persistent_volume_claim_v1.example default/example-name
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/data-sources/persistent_volume_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_persistent_volume_v1"
4 | description: |-
5 | A Persistent Volume (PV) is a piece of networked storage in the cluster that has been provisioned by an administrator.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/data-sources/persistent_volume_v1/example_1.tf"}}
17 |
18 |
--------------------------------------------------------------------------------
/templates/data-sources/pod.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_pod"
4 | description: |-
5 | A pod is a group of one or more containers, the shared storage for those containers, and options about how to run the containers. Pods are always co-located and co-scheduled, and run in a shared context.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | ```
17 | data "kubernetes_pod" "test" {
18 | metadata {
19 | name = "terraform-example"
20 | }
21 | }
22 | ```
23 |
24 | ## Import
25 |
26 | Pod can be imported using the namespace and name, e.g.
27 |
28 | ```
29 | $ terraform import kubernetes_pod.example default/terraform-example
30 | ```
31 |
--------------------------------------------------------------------------------
/templates/data-sources/resource.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "manifest"
3 | page_title: "Kubernetes: kubernetes_resource"
4 | description: |-
5 | This is a generic data source for Kubernetes API resources
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | This data source is a generic way to retrieve resources from the Kubernetes API.
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ### Example: Get data from a ConfigMap
15 |
16 | {{tffile "examples/data-sources/resource/example_1.tf"}}
17 |
18 |
--------------------------------------------------------------------------------
/templates/data-sources/server_version.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_server_version"
4 | description: |-
5 | Retrieves and parses the server's version (git version).
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
--------------------------------------------------------------------------------
/templates/data-sources/service.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_service"
4 | description: |-
5 | A Service is an abstraction which defines a logical set of pods and a policy by which to access them - sometimes called a micro-service.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/data-sources/service/example_1.tf"}}
17 |
18 |
--------------------------------------------------------------------------------
/templates/data-sources/service_account.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_service_account"
4 | description: |-
5 | A service account provides an identity for processes that run in a Pod.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/data-sources/service_account/example_1.tf"}}
17 |
--------------------------------------------------------------------------------
/templates/data-sources/service_account_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_service_account_v1"
4 | description: |-
5 | A service account provides an identity for processes that run in a Pod.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/data-sources/service_account_v1/example_1.tf"}}
17 |
18 |
--------------------------------------------------------------------------------
/templates/data-sources/service_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_service_v1"
4 | description: |-
5 | A Service is an abstraction which defines a logical set of pods and a policy by which to access them - sometimes called a micro-service.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | A Service is an abstraction which defines a logical set of pods and a policy by which to access them - sometimes called a micro-service. This data source allows you to pull data about such service.
15 |
16 | ## Example Usage
17 |
18 | {{tffile "examples/data-sources/service_v1/example_1.tf"}}
19 |
--------------------------------------------------------------------------------
/templates/resources/api_service.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "apiregistration/v1"
3 | page_title: "Kubernetes: kubernetes_api_service"
4 | description: |-
5 | An API Service is an abstraction which defines for locating and communicating with servers.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/api_service/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | API service can be imported using its name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_api_service.example v1.terraform-name.k8s.io
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/api_service_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "apiregistration/v1"
3 | page_title: "Kubernetes: kubernetes_api_service_v1"
4 | description: |-
5 | An API Service is an abstraction which defines for locating and communicating with servers.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/api_service_v1/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | API service can be imported using its name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_api_service_v1.example v1.terraform-name.k8s.io
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/cluster_role.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "rbac/v1"
3 | page_title: "Kubernetes: kubernetes_cluster_role"
4 | description: |-
5 | A ClusterRole creates a role at the cluster level and in all namespaces.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | A ClusterRole creates a role at the cluster level and in all namespaces.
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/cluster_role/example_1.tf"}}
17 |
18 | ## Aggregation Rule Example Usage
19 |
20 | {{tffile "examples/resources/cluster_role/example_2.tf"}}
21 |
22 | ## Import
23 |
24 | ClusterRole can be imported using the name, e.g.
25 |
26 | ```
27 | $ terraform import kubernetes_cluster_role.example terraform-name
28 | ```
29 |
--------------------------------------------------------------------------------
/templates/resources/cluster_role_binding.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "rbac/v1"
3 | page_title: "Kubernetes: kubernetes_cluster_role_binding"
4 | description: |-
5 | A ClusterRoleBinding may be used to grant permission at the cluster level and in all namespaces.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | A ClusterRoleBinding may be used to grant permission at the cluster level and in all namespaces.
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/cluster_role_binding/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | ClusterRoleBinding can be imported using the name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_cluster_role_binding.example terraform-name
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/cluster_role_binding_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "rbac/v1"
3 | page_title: "Kubernetes: kubernetes_cluster_role_binding_v1"
4 | description: |-
5 | A ClusterRoleBinding may be used to grant permission at the cluster level and in all namespaces.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/cluster_role_binding_v1/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | ClusterRoleBinding can be imported using the name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_cluster_role_binding_v1.example terraform-name
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/cluster_role_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "rbac/v1"
3 | page_title: "Kubernetes: kubernetes_cluster_role_v1"
4 | description: |-
5 | A ClusterRole creates a role at the cluster level and in all namespaces.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/cluster_role_v1/example_1.tf"}}
17 |
18 | ## Aggregation Rule Example Usage
19 |
20 | {{tffile "examples/resources/cluster_role_v1/example_2.tf"}}
21 |
22 | ## Import
23 |
24 | ClusterRole can be imported using the name, e.g.
25 |
26 | ```
27 | $ terraform import kubernetes_cluster_role_v1.example terraform-name
28 | ```
29 |
--------------------------------------------------------------------------------
/templates/resources/config_map_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_config_map_v1"
4 | description: |-
5 | The resource provides mechanisms to inject containers with configuration data while keeping containers agnostic of Kubernetes.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/config_map_v1/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | Config Map can be imported using its namespace and name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_config_map_v1.example default/my-config
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/config_map_v1_data.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_config_map_v1_data"
4 | description: |-
5 | This resource allows Terraform to manage the data for a ConfigMap that already exists
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/config_map_v1_data/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | This resource does not support the `import` command. As this resource operates on Kubernetes resources that already exist, creating the resource is equivalent to importing it.
21 |
--------------------------------------------------------------------------------
/templates/resources/cron_job_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "batch/v1"
3 | page_title: "Kubernetes: kubernetes_cron_job_v1"
4 | description: |-
5 | A Cron Job creates Jobs on a time-based schedule. One CronJob object is like one line of a crontab (cron table) file.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/cron_job_v1/example_1.tf"}}
17 |
--------------------------------------------------------------------------------
/templates/resources/csi_driver_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "storage/v1"
3 | page_title: "Kubernetes: kubernetes_csi_driver_v1"
4 | description: |-
5 | The Container Storage Interface (CSI) is a standard for exposing arbitrary block and file storage systems to containerized workloads on Container Orchestration Systems (COs) like Kubernetes.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/csi_driver_v1/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | kubernetes_csi_driver_v1 can be imported using its name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_csi_driver_v1.example terraform-example
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/endpoint_slice_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "discovery/v1"
3 | page_title: "Kubernetes: kubernetes_endpoint_slice_v1"
4 | description: |-
5 | An EndpointSlice contains references to a set of network endpoints.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/endpoint_slice_v1/example_1.tf"}}
17 |
18 |
--------------------------------------------------------------------------------
/templates/resources/endpoints_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_endpoints_v1"
4 | description: |-
5 | An Endpoints resource is an abstraction, linked to a Service, which defines the list of endpoints that actually implement the service.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/endpoints_v1/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | An Endpoints resource can be imported using its namespace and name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_endpoints_v1.example default/terraform-name
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/env.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_env"
4 | description: |-
5 | This resource provides a way to manage environment variables in resources that were created outside of Terraform.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/env/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | This resource does not support the `import` command. As this resource operates on Kubernetes resources that already exist, creating the resource is equivalent to importing it.
21 |
--------------------------------------------------------------------------------
/templates/resources/horizontal_pod_autoscaler_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "autoscaling/v1"
3 | page_title: "Kubernetes: kubernetes_horizontal_pod_autoscaler_v1"
4 | description: |-
5 | Horizontal Pod Autoscaler automatically scales the number of pods in a replication controller, deployment or replica set based on observed CPU utilization.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/horizontal_pod_autoscaler_v1/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | Horizontal Pod Autoscaler can be imported using the namespace and name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_horizontal_pod_autoscaler_v1.example default/terraform-example
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/labels.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "manifest"
3 | page_title: "Kubernetes: kubernetes_labels"
4 | description: |-
5 | This resource allows Terraform to manage the labels for a resource that already exists
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/labels/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | This resource does not support the `import` command. As this resource operates on Kubernetes resources that already exist, creating the resource is equivalent to importing it.
21 |
--------------------------------------------------------------------------------
/templates/resources/limit_range_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_limit_range_v1"
4 | description: |-
5 | Limit Range sets resource usage limits (e.g. memory, cpu, storage) for supported kinds of resources in a namespace.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/limit_range_v1/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | Limit Range can be imported using its namespace and name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_limit_range_v1.example default/terraform-example
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/node_taint.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_node_taint"
4 | description: |-
5 | A Node Taint is an anti-affinity rule allowing a Kubernetes node to repel a set of pods.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/node_taint/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | This resource does not support the `import` command. As this resource operates on Kubernetes resources that already exist, creating the resource is equivalent to importing it.
21 |
--------------------------------------------------------------------------------
/templates/resources/persistent_volume_claim.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_persistent_volume_claim"
4 | description: |-
5 | This resource allows the user to request for and claim to a persistent volume.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | This resource allows the user to request for and claim to a persistent volume.
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/persistent_volume_claim/example_1.tf"}}
17 |
18 | ##Import
19 |
20 | Persistent Volume Claim can be imported using its namespace and name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_persistent_volume_claim.example default/example-name
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/persistent_volume_claim_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_persistent_volume_claim_v1"
4 | description: |-
5 | This resource allows the user to request for and claim to a persistent volume.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/persistent_volume_claim_v1/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | Persistent Volume Claim can be imported using its namespace and name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_persistent_volume_claim_v1.example default/example-name
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/priority_class_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "scheduling/v1"
3 | page_title: "Kubernetes: kubernetes_priority_class_v1"
4 | description: |-
5 | A PriorityClass is a non-namespaced object that defines a mapping from a priority class name to the integer value of the priority.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/priority_class_v1/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | Priority Class can be imported using its name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_priority_class_v1.example terraform-example
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/role.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "rbac/v1"
3 | page_title: "Kubernetes: kubernetes_role"
4 | description: |-
5 | A role contains rules that represent a set of permissions. Permissions are purely additive (there are no “deny” rules).
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | A role contains rules that represent a set of permissions. Permissions are purely additive (there are no “deny” rules).
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/role/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | Role can be imported using the namespace and name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_role.example default/terraform-example
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/role_binding.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "rbac/v1"
3 | page_title: "Kubernetes: kubernetes_role_binding"
4 | description: |-
5 | A RoleBinding may be used to grant permission at the namespace level.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .SchemaMarkdown }}
11 |
12 | A RoleBinding may be used to grant permission at the namespace level
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/role_binding/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | RoleBinding can be imported using the name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_role_binding.example default/terraform-name
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/role_binding_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "rbac/v1"
3 | page_title: "Kubernetes: kubernetes_role_binding_v1"
4 | description: |-
5 | A RoleBinding may be used to grant permission at the namespace level.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/role_binding_v1/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | RoleBinding can be imported using the name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_role_binding_v1.example default/terraform-name
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/role_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "rbac/v1"
3 | page_title: "Kubernetes: kubernetes_role_v1"
4 | description: |-
5 | A role contains rules that represent a set of permissions. Permissions are purely additive (there are no “deny” rules).
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/role_v1/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | Role can be imported using the namespace and name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_role_v1.example default/terraform-example
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/runtime_class_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "node/v1"
3 | page_title: "Kubernetes: kubernetes_runtime_class_v1"
4 | description: |-
5 | A runtime class is used to determine which container runtime is used to run all containers in a pod.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example usage
15 |
16 | {{tffile "examples/resources/runtime_class_v1/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | Runtime class can be imported using the name only, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_runtime_class_v1.example myclass
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/service_account_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_service_account_v1"
4 | description: |-
5 | A service account provides an identity for processes that run in a Pod.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/service_account_v1/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | Service account can be imported using the namespace and name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_service_account_v1.example default/terraform-example
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/service_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "core/v1"
3 | page_title: "Kubernetes: kubernetes_service_v1"
4 | description: |-
5 | A Service is an abstraction which defines a logical set of pods and a policy by which to access them - sometimes called a micro-service.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/service_v1/example_1.tf"}}
17 |
18 | ## Example using AWS load balancer
19 |
20 | {{tffile "examples/resources/service_v1/example_2.tf"}}
21 |
22 | ## Import
23 |
24 | Service can be imported using its namespace and name, e.g.
25 |
26 | ```
27 | $ terraform import kubernetes_service_v1.example default/terraform-name
28 | ```
29 |
--------------------------------------------------------------------------------
/templates/resources/stateful_set_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "apps/v1"
3 | page_title: "Kubernetes: kubernetes_stateful_set_v1"
4 | description: |-
5 | StatefulSet is a Kubernetes resource used to manage stateful applications.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/stateful_set_v1/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | kubernetes_stateful_set_v1 can be imported using its namespace and name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_stateful_set_v1.example default/terraform-example
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/storage_class_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "storage/v1"
3 | page_title: "Kubernetes: kubernetes_storage_class_v1"
4 | description: |-
5 | Storage class is the foundation of dynamic provisioning, allowing cluster administrators to define abstractions for the underlying storage platform.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/storage_class_v1/example_1.tf"}}
17 |
18 | ## Import
19 |
20 | kubernetes_storage_class_v1 can be imported using its name, e.g.
21 |
22 | ```
23 | $ terraform import kubernetes_storage_class_v1.example terraform-example
24 | ```
25 |
--------------------------------------------------------------------------------
/templates/resources/token_request_v1.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | subcategory: "authentication/v1"
3 | page_title: "Kubernetes: kubernetes_token_request_v1"
4 | description: |-
5 | TokenRequest requests a token for a given service account.
6 | ---
7 |
8 | # {{ .Name }}
9 |
10 | {{ .Description }}
11 |
12 | {{ .SchemaMarkdown }}
13 |
14 | ## Example Usage
15 |
16 | {{tffile "examples/resources/token_request_v1/example_1.tf"}}
17 |
18 |
--------------------------------------------------------------------------------
/terraform-registry-manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": 1,
3 | "metadata": {
4 | "protocol_versions": ["5.0"]
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/tools/tools.go:
--------------------------------------------------------------------------------
1 | // Copyright (c) HashiCorp, Inc.
2 | // SPDX-License-Identifier: MPL-2.0
3 |
4 | //go:build tools
5 | // +build tools
6 |
7 | package tools
8 |
9 | import (
10 | _ "github.com/hashicorp/terraform-plugin-docs/cmd/tfplugindocs"
11 | )
12 |
--------------------------------------------------------------------------------
/version/VERSION:
--------------------------------------------------------------------------------
1 | 2.37.1
2 |
--------------------------------------------------------------------------------