YongTrans

← index

Loading contents...

Terraform provider for Kubernetes (alpha)

Terraform provider for Kubernetes (alpha)

This Terraform provider for Kubernetes supports all API resources in a generic fashion.

쿠버네티스를 위한 테라폼 공급자는 일반적인 API 리소스 모두를 지원합니다.

This provider allows you to describe any Kubernetes resource using HCL. See Moving from YAML to HCL if you have YAML you want to use with the provider.

이 공급자는 HCL을 사용하여 쿠버네티스의 어떠한 리소스라도 기술이 가능하도록 합니다. 이미 YAML 파일을 가지고 계신 경우에는 이 공급자를 사용하는 YAML을 HCL로 이전을 참고하십시오.

Please regard this project as experimental. It still requires extensive testing and polishing to mature into production-ready quality. Please file issues generously and detail your experience while using the provider. We welcome your feedback.

이 프로젝트는 아직 실험 단계로 생각해주시기 바랍니다. 아직 광범위한 테스트를 진행해야하고, 제품화할 정도의 품질로 성숙할 수 있도록 다듬어야합니다.이 공급자를 사용하면서 수많은, 그리고 세세한 당신의 경험을 파일 이슈에 작성해주시기 바랍니다.

Our eventual goal is for this generic resource to become a part of our production capable Kubernetes provider once it is supported by the Terraform Plugin SDK. However, this work is subject to signficant changes as we iterate towards that level of quality.

우리의 궁극적인 목표는 이 일반 리소스가 테라폼 플러그인 SDK로 지원되는 쿠버네티스 공급자로 제품의 일부가 되는 것입니다.

Requirements

사전조건

Getting Started

시작하기

If this is your first time here, you can get an overview of the provider by reading our introductory blog post.

이 Git Repository를 처음 접한 것이라면 소개용 블로그 글을 읽음으로써 공급자에 대한 개요를 알 수 있습니다.

Otherwise, start by downloading a copy of our latest build from the releases page. We run builds nightly to pick up changes that are made since the last semver release.

처음이 아니시라면 릴리즈 페이지에서 최신 빌드 다운로드를 시작하십시오. 마지막 버전(시멘틱 버저닝) 릴리즈에서 변경된 것이 있는 경우 밤마다 빌드를 수행합니다.

You'll need to unzip the release download and copy the binary into your Terraform plugins folder in order for Terraform to discover it.

릴리즈를 다운로드하고 나면 unzip을 실행해야 하고, 테라폼이 이 공급자를 인지할 수 있도록 테라폼 플러그인 폴더로 바이너리를 복사해야합니다.

Once you have the plugin installed, review the usage document in the docs folder to understand which configuration options are available. You can find the following examples and more in our examples folder. Don't forget to run terraform init in your Terraform configuration directory to allow Terraform to detect the provider plugin.

플러그인을 한번 인스톨하고나면 사용 가능한 설정 옵션들에 대해 이해할 수 있도록 docs 폴더안에 있는 usage 문서를 확인하시기 바랍니다. 다음에 설명할 예제들 외에도 examples 폴더에서 더 많은 예제들을 찾아볼 수 있습니다. 공급자 플러그인을 감지할 수 있도록 테라폼 설정 디렉토리에서 terraform init 명령을 실행하는 것을 잊지 마십시오.

Create a Kubernetes ConfigMap

쿠버네티스 ConfigMap 생성하기

provider "kubernetes-alpha" {
  config_path = "~/.kube/config" // path to kubeconfig
}

resource "kubernetes_manifest" "test-configmap" {
  provider = kubernetes-alpha

  manifest = {
    "apiVersion" = "v1"
    "kind" = "ConfigMap"
    "metadata" = {
      "name" = "test-config"
      "namespace" = "default"
    }
    "data" = {
      "foo" = "bar"
    }
  }
}
provider "kubernetes-alpha" {
  config_path = "~/.kube/config" // path to kubeconfig
}

resource "kubernetes_manifest" "test-configmap" {
  provider = kubernetes-alpha

  manifest = {
    "apiVersion" = "v1"
    "kind" = "ConfigMap"
    "metadata" = {
      "name" = "test-config"
      "namespace" = "default"
    }
    "data" = {
      "foo" = "bar"
    }
  }
}

Create a Kubernetes Custom Resource Definition

쿠버네티스 사용자 리소스 정의(CRD) 생성하기

provider "kubernetes-alpha" {
  config_path = "~/.kube/config" // path to kubeconfig
}

resource "kubernetes_manifest" "test-crd" {
  provider = kubernetes-alpha

  manifest = {
    apiVersion = "apiextensions.k8s.io/v1"
    kind = "CustomResourceDefinition"
    metadata = {
      name = "testcrds.hashicorp.com"
    }
    spec = {
      group = "hashicorp.com"
      names = {
        kind = "TestCrd"
        plural = "testcrds"
      }
      scope = "Namespaced"
      versions = [{
        name = "v1"
        served = true
        storage = true
        schema = {
          openAPIV3Schema = {
            type = "object"
            properties = {
              data = {
                type = "string"
              }
              refs = {
                type = "number"
              }
            }
          }
        }
      }]
    }
  }
}
provider "kubernetes-alpha" {
  config_path = "~/.kube/config" // path to kubeconfig
}

resource "kubernetes_manifest" "test-crd" {
  provider = kubernetes-alpha

  manifest = {
    apiVersion = "apiextensions.k8s.io/v1"
    kind = "CustomResourceDefinition"
    metadata = {
      name = "testcrds.hashicorp.com"
    }
    spec = {
      group = "hashicorp.com"
      names = {
        kind = "TestCrd"
        plural = "testcrds"
      }
      scope = "Namespaced"
      versions = [{
        name = "v1"
        served = true
        storage = true
        schema = {
          openAPIV3Schema = {
            type = "object"
            properties = {
              data = {
                type = "string"
              }
              refs = {
                type = "number"
              }
            }
          }
        }
      }]
    }
  }
}

Moving from YAML to HCL

YAML을 HCL로 이전하기

The manifest attribute of the kubernetes_manifest resource accepts any arbitrary Kubernetes API object, using Terraform's map syntax. If you have YAML you want to use with this provider, we recommend that you convert it to a map as an initial step and then manage that resource in Terraform, rather than using yamldecode() inside the resource block.

kubernetes_manifest 리소스의 manifest 속성은 테라폼의 map문법으로 어떠한 임의의 쿠버네티스 API 객체라도 수용할 수 있습니다.

You can quickly convert a single YAML file to an HCL map using this one liner:

아래 한줄이면 단일 YAML 파일을 하나의 HCL map으로 빠르게 변환할 수 있습니다.

echo 'yamldecode(file("test.yaml"))' | terraform console
echo 'yamldecode(file("test.yaml"))' | terraform console

Alternatively, there is also an experimental command line tool tfk8s you could use to convert Kubernetes YAML manifests into complete Terraform configurations.

그 대신에 실험적인 명령줄 도구인 tfk8s를 사용하여 쿠버네티스 YAML 매니페스트들을 완전한 테라폼 설정으로 변환 할 수도 있습니다.

Contributing

기여하기

We welcome your contribution. Please understand that the experimental nature of this repository means that contributing code may be a bit of a moving target. If you have an idea for an enhancement or bug fix, and want to take on the work yourself, please first create an issue so that we can discuss the implementation with you before you proceed with the work.

우리는 당신의 기여를 기다립니다. 이 저장소의 실험적인 특성은 기여한 코드가 약간의 이동 대상이 될수도 있음을 의미합니다. 개선을 위한 아이디어나 버그 수정 내용이 있고, 작업한 내용을 기여하길 원한다면 먼저 작업을 진행하기 전에 우리가 구현에 대해 논의할 수 있도록 이슈를 생성해주시길 바랍니다.

You can review our contribution guide to begin. You can also check out our frequently asked questions.

그 전에 컨트리뷰트 가이드 문서를 읽어볼 수 있습니다. 또한 자주 묻는 질문을 참고하시기 바랍니다.

Experimental Status

실험 상태

By using the software in this repository (the "Software"), you acknowledge that: (1) the Software is still in development, may change, and has not been released as a commercial product by HashiCorp and is not currently supported in any way by HashiCorp; (2) the Software is provided on an "as-is" basis, and may include bugs, errors, or other issues; (3) the Software is NOT INTENDED FOR PRODUCTION USE, use of the Software may result in unexpected results, loss of data, or other unexpected results, and HashiCorp disclaims any and all liability resulting from use of the Software; and (4) HashiCorp reserves all rights to make all decisions about the features, functionality and commercial release (or non-release) of the Software, at any time and without any obligation or liability whatsoever.

이 저장소의 소프트웨어를 사용함으로써 귀하는: (1) 소프트웨어가 여전히 개발중이고, 변경될 수 있으며 해시코프의 상용 제품으로 릴리즈 되지 않을 수 있습니다. 그리고 현재는 해시코프로부터 어떠한 방식으로도 지원되지 않습니다.; (2) 이 소프트웨어는 기본적으로 하나의 "as-is"로 제공되고, 버그나 에러, 그 외 다른 이슈들을 포함할 수 있습니다.; (3) 이 소프트웨어는 제품으로 사용될 예정이 없습니다. 소프트웨어 사용 시 불명확한 결과들이나 데이터 유실, 다른 불명확한 결과들이 나올 수 있습니다. 해시코프는 이 소프트웨어 사용 시 발생하는 법적 책임이 필요한 모든 결과에 대해 책임지지 않습니다.; (4) 해시코프는 이 소프트웨어의 특성과 기능, 상용 릴리즈(또는 비릴리즈)에 대해 어떠한 경우에서든 법적 책임이나 의무가 없다는 것에 대한 모든 권리를 취득하였습니다.

Translators

Latest update at 2020-06-28T05:30:49Z