api_fingerprint (필수)
|
업로드한 API 서명 키의 지문입니다. |
api_private_key_path (필수)
|
전용 API 서명 키를 포함하는 파일의 전체 경로 및 이름입니다. |
compartment_id (필수)
|
리소스를 생성할 구획의 OCID입니다. |
tenancy_id (필수)
|
테넌시의 OCID입니다. |
user_id (필수)
|
Terraform에서 Oracle Cloud Infrastructure을 사용하여 인증하는 데 사용할 사용자의 OCID입니다. |
ssh_private_key_path |
기본 호스트에 대해 제공할 공용 키에 해당하는 전용 SSH 키를 포함하는 파일의 전체 경로 및 이름입니다.
이 값은 기본 호스트에 액세스하는 데 사용할 수 있는 ssh 명령을 생성하는 데 사용됩니다. ssh 명령은 Terraform 구성을 적용할 때 출력에 표시됩니다. Terraform은 전용 키를 읽거나 복사하지 않습니다.
|
ssh_public_key_path |
기본 호스트에 대해 제공할 공용 SSH 키를 포함하는 파일의 전체 경로 및 이름입니다. |
label_prefix |
리소스 이름에 접두어로 사용할 짧은 식별자입니다.
이름을 확인하여 리소스의 목적이나 특성을 식별하는 데 도움이 되는 문자열을 사용합니다. 예를 들어, Terraform 구성을 사용하여 테스트 또는 스테이지 환경을 설정하려면 test 또는 staging 접두어를 사용하는 것이 좋습니다.
|
영역 |
리소스를 생성할 영역의 ID입니다. 예를 들어, US East(Ashburn) 영역의 ID는 us-ashburn-1 입니다.
|
nat_gateway_enabled |
VCN에 대한 NAT 게이트웨이를 만들려면 true 를 지정합니다.
전용 컴퓨트 인스턴스(예: 관리 호스트 또는 Kubernetes 근로자 노드) 가 공용 인터넷의 호스트에 액세스해야 하는 경우 NAT 게이트웨이가 필요합니다.
|
newbits 및 netnum |
구성을 적용하는 경우 Terraform는 newbits 및 netnum 값을 인수로 Terraform 함수 cidrsubnet() 에 전달합니다. 이 함수는 기본 호스트, 관리 호스트, 로드 밸런서 노드 및 Kubernetes 작업자 노드에 대한 서브넷의 CIDR 접두어를 계산합니다.
newbits 는 서브넷의 크기를 결정하는 데 사용됩니다. 이 넷마스크는 VCN의 넷마스크와 기본 서브넷에 필요한 넷마스크의 차이입니다.
예를 들어 /16 VCN에서 넷마스크 /29 를 사용하여 서브넷을 생성하려면 13 를 newbits 값(29 - 16 ) 으로 지정합니다.
더 낮은 newbits 값을 지정하면 주소 공간이 더 큰 서브넷이 생성됩니다.
netnum 는 서브넷의 경계를 결정하는 데 사용됩니다. 네트워크가 newbits 로 마스크되는 경우 서브넷의 0기반 인덱스입니다.
이전 예를 계속 진행하면서 newbits=13 및 netnum=0 를 지정하면 cidrsubnet() 함수는 10.0.0.0/16 VCN 내의 첫번째 /29 주소 공간인 서브넷 CIDR 접두어 10.0.0.0/29 을 반환합니다.
기본값: netnum = {
admin = 33
bastion = 32
int_lb = 16
pub_lb = 17
workers = 1
}
newbits = {
admin = 13
bastion = 13
lb = 11
workers = 2
}
이러한 변수를 기본값에서 종료하고 10.0.0.0/16 을 VCN에 대한 CIDR 범위로 지정하면 Terraform 함수 cidrsubnet() 가 서브넷에 대해 다음 CIDR 접두어를 계산합니다. 사용 가능한 주소는 괄호 안에 표시됩니다. 서브넷의 처음 두 주소와 마지막 주소는 네트워킹 서비스에 의해 예약되어 있습니다.
- 기본 서브넷:
10.0.1.0/29 (사용 가능한 주소: 10.0.1.2 - 10.0.1.6 , 즉 5개 호스트)
- 관리 서브넷:
10.0.1.8/29 (10.0.1.10 - 10.0.1.14 , 5개 호스트)
- 내부 로드 밸런서 서브넷:
10.0.2.0/27 (10.0.2.2 - 10.0.2.30 , 29노드)
- 공용 로드 밸런서 서브넷:
10.0.2.32/27 (10.0.2.34 - 10.0.2.62 , 29노드)
- Kubernetes 작업자 노드 서브넷:
10.0.64.0/18 (10.0.64.2 - 10.0.127.254 , 16381노드)
기본 설정과 주소 또는 크기가 다른 서브넷이 필요한 경우 newbits 및 netnum 에 적합한 값을 결정해야 합니다. 이렇게 하려면 클래스 없는 IP 주소에 대한 기본 지식이 있어야 합니다. cidrsubnet() 함수에 대한 Terraform 설명서도 참조하십시오.
여기에서 지정한 CIDR 블록이 Kubernetes Pods(pods_cidr ) 에 대해 지정한 CIDR 블록과 겹치지 않는지 확인하십시오.
|
service_gateway_enabled |
VCN에 대한 서비스 게이트웨이를 생성하려면 true 를 지정합니다.
VCN의 컴퓨트 인스턴스가 Oracle Cloud Infrastructure Object Storage 와 같은 다른 Oracle 서비스에 액세스해야 하는 경우 서비스 게이트웨이가 필요합니다.
|
vcn_cidr |
VCN에 대해 선택한 IPv4 CIDR 블록입니다.
기본값은 10.0.0.0/16 입니다. 허용된 범위는 /16 ~ /30 입니다.
여기에서 지정한 CIDR 블록이 Kubernetes 서비스에 대해 지정한 CIDR 블록(services_cidr ) 과 겹치지 않는지 확인하십시오.
|
vcn_dns_label |
VCN의 내부 DNS 이름에 대한 이름 접두어입니다.
여기서 지정한 이름은 VCN의 DNS 도메인 이름을 구성하기 위해 oraclevcn.com 접두어가 붙습니다. 예를 들어, oke 을 접두어로 지정할 경우 VCN의 DNS 도메인 이름은 oke.oraclevcn.com 입니다.
|
vcn_name |
VCN 리소스의 이름입니다. |
bastion_access |
기본 위치에 대한 SSH 액세스가 허용되어야 하는 IP 주소 범위(CIDR 표기법 사용) 입니다.
임의의 호스트(0.0.0.0/0 ) 에서 SSH 액세스를 허용하려면 변수를 기본값 ANYWHERE 로 남겨 둡니다.
|
bastion_enabled |
true 를 지정하여 기본 호스트를 생성합니다.
|
bastion_image_id |
기본 위치 호스트를 생성하는 데 사용할 이미지의 OCID입니다.
이 변수를 기본값인 NONE 로 남겨 두면 Oracle 자율 Linux 이미지가 사용됩니다.
|
bastion_notification_enabled |
Oracle Cloud Infrastructure Notification Service를 사용하여 업데이트가 적용되거나 Oracle Ksplice에서 알려진 악용 시도가 감지된 경우 기본 호스트에서 상태 메시지를 받을 수 있습니다.
기본 위치 호스트에 대한 통지 전송을 사용으로 설정하려면 true 를 지정합니다.
주: 이 솔루션의 Terraform 코드는 기본 Oracle Autonomous Linux 이미지를 사용하는 경우에만 기본 호스트에 대한 통지를 구성합니다.
|
bastion_notification_endpoint |
통지를 전송해야 하는 대상 전자메일 주소입니다. 이 변수는 bastion_notification_enabled 를 true 로 설정한 경우 필수입니다.
|
bastion_notification_protocol |
이 변수를 EMAIL 로 설정합니다.
|
bastion_notification_topic |
생성할 통지 항목의 이름입니다. 이 변수는 bastion_notification_enabled 를 true 로 설정한 경우 필수입니다.
|
bastion_package_upgrade |
호스트를 처음 부팅할 때 기본 호스트의 보안 패키지를 업그레이드하도록 하려면 true 를 지정합니다.
이 변수를 true 로 설정하면 기본 호스트가 프로비전된 후 보안 패키지가 업그레이드되는 동안 잠시 동안 이 변수를 사용할 수 없습니다. 그러나 이 업그레이드를 사용으로 설정하면 기본 호스트에 대한 취약성이 최소화됩니다.
|
bastion_shape |
기본 호스트에 사용할 컴퓨트 구성입니다. |
bastion_timezone |
IANA 시간대 형식(예: America/Los_Angeles ) 으로 기본 호스트에 대해 구성할 시간대입니다.
|
admin_enabled |
true 를 지정하여 관리 호스트를 생성합니다.
|
admin_image_id |
기본 위치 호스트를 생성하는 데 사용할 이미지의 OCID입니다.
이 변수를 기본값인 NONE 로 두면 Oracle에서 제공하는 Linux 이미지가 사용됩니다.
|
admin_instance_principal |
관리 호스트가 지정한 구획의 모든 리소스를 관리하도록 하려면 true 를 지정합니다.
CLI 명령을 실행하거나 관리 호스트에서 API를 호출하여 토폴로지의 리소스를 관리하려는 경우 이 기능을 사용합니다.
주: SSH를 사용하여 컴퓨트 인스턴스에 연결할 수 있는 사용자는 인스턴스에 부여된 인스턴스 고유 권한을 상속합니다. 관리 호스트를 인스턴스 주체로 지정할지 여부를 결정할 때 이를 고려하십시오. 관리 호스트에 영향을 주지 않고 언제든지 이 기능을 해제하거나 설정할 수 있습니다.
이 변수를 true 로 설정하면 관리 호스트가 동적 그룹의 멤버로 설정되고 동적 그룹이 구획의 모든 리소스를 관리할 수 있도록 정책 명령문이 생성됩니다.
|
admin_notification_enabled
admin_notification_endpoint
admin_notification_protocol
admin_notification_topic
|
이러한 변수는 기본값에서 그대로 둡니다. 관리 호스트에 대한 통지를 사용으로 설정하는 것은 현재 이 Terraform 코드에서 지원되지 않습니다. |
admin_package_upgrade |
호스트를 처음 부트할 때 관리 호스트의 보안 패키지를 업그레이드하도록 하려면 true 를 지정합니다.
이 변수를 true 로 설정하면 관리 호스트가 프로비저닝된 후 보안 패키지가 업그레이드되는 동안 잠시 동안 이 변수를 사용할 수 없습니다. 그러나 이 업그레이드를 사용으로 설정하면 관리 호스트의 취약성이 최소화됩니다.
|
admin_shape |
관리 호스트에 사용할 컴퓨트 구성입니다. |
admin_timezone |
IANA 시간대 형식(예: America/Los_Angeles ) 으로 관리 호스트에 대해 구성할 시간대입니다.
|
availability_domains |
관리 및 기본 호스트를 프로비전할 가용성 도메인입니다.
예를 들어, 두번째 가용성 도메인에서 기본 호스트를 프로비전하려면 bastion = 2 를 설정합니다.
지정한 영역에 가용성 도메인이 하나만 포함되어 있는 경우 이 변수를 기본값 1 으로 남겨 두십시오.
|
tagging |
컴퓨트 및 네트워킹 리소스에 지정할 태그를 지정합니다. |
allow_node_port_access |
TCP 트래픽이 공용 모드로 배치될 때 Kubernetes 작업자 노드에 대한 TCP 트래픽을 허용하려면 true 를 지정합니다.
|
allow_worker_ssh_access |
기본 위치 호스트를 통해 Kubernetes 작업자 노드에 대한 SSH 접속을 허용하려면 true 를 지정합니다.
작업자 노드가 공용 모드로 배치된 경우에도 SSH 접속은 기본 호스트를 거쳐야 합니다.
이 변수를 true 로 설정하는 경우 bastion_enabled = true 도 설정해야 합니다.
|
cluster_name |
Kubernetes 클러스터의 이름입니다. |
dashboard_enabled |
기본 Kubernetes 대시보드를 생성하려면 true 를 지정합니다.
|
kubernetes_version |
근로자 노드에 사용할 Kubernetes 버전입니다.
이 변수를 기본값 LATEST 로 남겨 두면 지원되는 최신 버전이 선택됩니다. 특정 버전을 사용하려면 해당 버전을 지정합니다.
|
node_pools |
생성할 노드 풀 수, 각 풀의 크기 및 작업자 노드에 사용할 컴퓨트 구성의 형식은 다음과 같습니다.node_pools = {
"np1" = ["computeShape", numberOfNodes]
"np2" = ["computeShape", numberOfNodes]
"np3" = ["computeShape", numberOfNodes]
...
}
np1 , np2 및 np3 는 개별 노드 풀을 나타내는 임의의 이름입니다.
computeShape 는 풀의 작업자 노드에 사용되는 컴퓨트 구성입니다.
numberOfNodes 은 풀에 생성될 Kubernetes 작업자 노드 수입니다. 최소 3개의 노드가 각 풀에 생성됩니다(하한 값을 지정해도 됨).
다음은 각각 다른 컴퓨트 구성을 사용하고 서로 다른 수의 Kubernetes 근로자 노드를 포함하는 2개의 풀로 구성된 클러스터에 대한 예입니다. node_pools = {
"np1" = ["VM.Standard2.1", 3]
"np2" = ["VM.Standard2.2", 5]
}
|
node_pool_name_prefix |
노드 풀의 이름 접두어입니다.
노드 풀의 이름은 label_prefix , node_pool_name_prefix 및 노드 풀 번호의 값을 연결하여 생성됩니다. 예를 들어, label_prefix = "prod" 및 node_pool_name_prefix = "np" 를 지정하면 노드 풀의 생성된 이름은 prod-np-1 , prod-np-2 , prod-np-3 등이 됩니다.
|
node_pool_image_id |
Kubernetes 작업자 노드에 사용할 이미지의 OCID입니다.
이 변수를 기본값인 NONE 로 남겨 두면 node_pool_os 및 node_pool_os_version 에 대해 지정한 값과 일치하는 이미지가 사용됩니다.
|
node_pool_os |
Kubernetes 근로자 노드에 사용해야 하는 운영 체제(예: "Oracle Linux" ) 입니다.
이 설정은 node_pool_image_id = "NONE" 을 설정한 경우에만 고려됩니다.
|
node_pool_os_version |
Kubernetes 근로자 노드에 사용해야 하는 운영 체제의 버전입니다(예: "7.7" ).
이 설정은 node_pool_image_id = "NONE" 을 설정한 경우에만 고려됩니다.
|
pods_cidr |
Kubernetes Pod에 대한 선택 항목의 IPv4 CIDR 블록입니다.
여기에서 지정한 CIDR 블록이 VCN에 대해 지정한 CIDR 블록(vcn_cidr ) 과 겹치지 않는지 확인하십시오.
|
services_cidr |
Kubernetes Pod에 대한 선택 항목의 IPv4 CIDR 블록입니다.
여기에서 지정한 CIDR 블록이 VCN에 대해 지정한 CIDR 블록(vcn_cidr ) 과 겹치지 않는지 확인하십시오.
|
worker_mode |
공용 인터넷에서 근로자 노드에 액세스할 수 있어야 하는 경우 public 를 지정합니다. 그렇지 않으면 이 변수를 private 로 설정합니다.
worker_mode = "private" 를 설정한 경우 nat_gateway_enabled = true 를 설정합니다.
|
lb_subnet_type 및 preferred_lb_subnets |
lb_subnet_type 및 preferred_lb_subnets 에 대해 지정하는 값은 LoadBalancer 유형의 Kubernetes 서비스를 사용하여 배치한 모든 로드 밸런서 노드에 사용되어야 하는 서브넷 유형을 결정합니다.
공용 로드 밸런서에는 공용 IP 주소가 있습니다. 내부 로드 밸런서는 전용 IP 주소만 가지며 공용 인터넷에서 액세스할 수 없습니다.
- 공용 로드 밸런서를 사용하려면
preferred_lb_subnet = "public" 및 subnet_type 를 "both" 또는 "public" 로 설정합니다.
- 내부 로드 밸런서를 사용하려면
preferred_lb_subnet = "internal" 및 subnet_type 를 "both" 또는 "internal" 로 설정합니다.
로드 밸런서 서브넷을 내부로 설정한 경우에도 내부 로드 밸런서 서비스를 생성할 때 적절한 주석(예: service.beta.kubernetes.io/oci-load-balancer-internal: "true" ) 을 설정해야 합니다. 서브넷을 전용으로 설정하는 것만으로는 충분하지 않습니다.
내부 로드 밸런서 생성에 대한 자세한 내용은 Oracle Cloud Infrastructure 설명서를 참조하십시오.
|
secret_id |
Oracle Cloud Infrastructure Registry에서 애플리케이션 이미지를 가져오는 데 사용할 인증 토큰이 저장된 Oracle Cloud Infrastructure Vault 서비스의 보안 ID입니다.
또한 다음을 설정해야 합니다. bastion_enabled = true
admin_enabled = true
admin_instance_principal = true
|
email_address |
Docker 암호를 생성할 때 사용할 전자메일 주소입니다. 전자메일 주소는 필수이지만 지정하는 사항에 관계없이 필요하지 않습니다.
이 변수는 secret_id 을 지정하는 경우 필수입니다.
|
tenancy_name |
Kubernetes 클러스터에 배치를 위해 이미지를 가져와야 하는 레지스트리를 포함하는 테넌시의 Oracle Cloud Infrastructure Object Storage 네임스페이스입니다.
이 변수는 secret_id 을 지정하는 경우 필수입니다.
|
username |
secret_id 에 저장된 인증 토큰을 생성한 사용자 이름입니다.
이 변수는 secret_id 을 지정하는 경우 필수입니다.
|
install_helm |
Helm를 설치하려면 true 를 지정합니다.
Helm는 Kubernetes 용 패키지 관리자입니다.
Helm를 설치하려면 admin_instance_principal = true 도 설정해야 합니다.
|
helm_version |
설치될 Helm 클라이언트의 버전입니다.
Tiller(Helm의 서버측 카운터) 는 자동으로 업그레이드됩니다.
|
install_calico |
Calico를 설치하려면 true 를 지정합니다.
Calico를 사용하여 Kubernetes 클러스터에 배치된 컨테이너 작업 부하에 대한 네트워크 정책을 구현할 수 있습니다.
install_calico = true 를 설정한 경우 다음 도 설정해야 합니다. bastion_enabled = true
admin_enabled = true
admin_instance_principal = true
|
calico_version |
설치될 Calico 버전입니다. |
install_metricserver |
Kubernetes Metrics Server를 설치하려면 true 를 지정하십시오.
기본적으로 최신 버전은 kube-system 네임스페이스에 설치됩니다. Kubernetes Metrics Server는 클러스터 간에 리소스 사용량 데이터를 집계합니다.
install_metricserver = true 를 설정한 경우 다음 도 설정해야 합니다. bastion_enabled = true
admin_enabled = true
admin_instance_principal = true
|
use_encryption |
Oracle Cloud Infrastructure Vault 서비스를 사용하여 Kubernetes 암호를 암호화하려면 이 변수를 true 로 설정합니다.
use_encryption = true 를 설정한 경우 다음 도 설정해야 합니다. bastion_enabled = true
admin_enabled = true
admin_instance_principal = true
|
existing_key_id |
Oracle Cloud Infrastructure Vault 서비스에 생성된 기존 키의 OCID입니다.
이 변수는 use_encryption 를 true 로 설정한 경우 필수입니다.
|
create_service_account |
외부 프로세스 및 툴(예: CI/CD 파이프라인) 에서 클러스터에 액세스하려면 이 변수를 true 로 설정합니다. 자체 인증 토큰으로 서비스 계정이 생성됩니다.
create_service_account = true 를 설정한 경우 다음 도 설정해야 합니다. bastion_enabled = true
admin_enabled = true
admin_instance_principal = true
|
service_account_name |
생성할 서비스 계정의 이름입니다. |
service_account_namespace |
계정이 생성되어야 하는 Kubernetes 네임스페이스입니다. |
service_account_cluster_role_binding |
서비스 계정에 대한 클러스터 롤 바인딩의 이름입니다. |