api_fingerprint (obrigatório)
|
A impressão digital da chave de assinatura da API que você fez upload. |
api_private_key_path (obrigatório)
|
O caminho completo e o nome do arquivo que contém sua chave de assinatura de API privada. |
compartment_id (obrigatório)
|
O OCID do compartimento no qual você deseja criar os recursos. |
tenancy_id (obrigatório)
|
O OCID da sua tenancy. |
user_id (obrigatório)
|
O OCID do usuário que você deseja que o Terraform use para autenticação com o Oracle Cloud Infrastructure. |
ssh_private_key_path |
O caminho completo e o nome do arquivo que contém a chave SSH privada correspondente à chave pública que você deseja fornecer para o host bastion.
Esse valor é usado para construir o comando ssh que você pode usar para acessar o host bastion. O comando ssh é exibido na saída quando você aplica a configuração do Terraform. Observe que o Terraform não lê ou copia a chave privada.
|
ssh_public_key_path |
O caminho completo e o nome do arquivo que contém a chave SSH pública que você deseja fornecer para o host bastion. |
label_prefix |
Um identificador curto que você deseja que seja usado como um prefixo nos nomes dos recursos.
Use uma string que ajudará você a identificar a finalidade ou a natureza dos recursos observando seus nomes. Por exemplo, se você pretende usar a configuração Terraform para configurar um ambiente de teste ou preparação, considere usar o prefixo test ou staging .
|
região |
O ID da região em que você deseja criar os recursos. Por exemplo, o ID da região Leste dos EUA (Ashburn) é us-ashburn-1 .
|
nat_gateway_enabled |
Especifique true para criar um gateway NAT para a VCN.
Um gateway NAT é obrigatório se alguma instância de computação privada (como o host admin ou nós de trabalho do Kubernetes) precisar acessar hosts na internet pública.
|
newbits e netnum |
Quando você aplica a configuração, o Terraform passa os valores de newbits e netnum como argumentos para a função Terraform cidrsubnet() . Esta função calcula os prefixos de CIDR das sub-redes para o host bastion, host admin, nós do balanceador de carga e nós do worker do Kubernetes.
newbits é usado para determinar o tamanho da sub-rede. É a diferença entre a máscara de rede da VCN e a máscara de rede que você precisa para a sub-rede bastion.
Por exemplo, para criar uma sub-rede com a máscara de rede /29 em uma VCN /16 , especifique 13 como o valor de newbits (ou seja, 29 minus 16 ).
Um valor baixo newbits resulta em uma sub-rede com um espaço de endereço maior.
netnum é usado para determinar os limites da sub-rede. É o índice baseado em zero da sub-rede quando a rede é mascarada com newbits .
Continuando com o exemplo anterior, se você especificar newbits=13 e netnum=0 , a função cidrsubnet() retornará o prefixo CIDR de sub-rede 10.0.0.0/29 , que é o primeiro espaço de endereço /29 na VCN 10.0.0.0/16 .
Valores padrão: netnum = {
admin = 33
bastion = 32
int_lb = 16
pub_lb = 17
workers = 1
}
newbits = {
admin = 13
bastion = 13
lb = 11
workers = 2
}
Se você deixar essas variáveis nos valores padrão e especificar 10.0.0.0/16 como o intervalo de CIDR da VCN, a função Terraform cidrsubnet() calculará os seguintes prefixos de CIDR para as sub-redes. Os endereços disponíveis são mostrados entre parênteses. Observe que os dois primeiros endereços e o último endereço de uma sub-rede são reservados pelo serviço de rede.
- Sub-rede Bastion:
10.0.1.0/29 (endereços disponíveis: 10.0.1.2 para 10.0.1.6 ; ou seja, 5 hosts)
- Sub-rede administrativa:
10.0.1.8/29 (10.0.1.10 para 10.0.1.14 ; 5 hosts)
- Sub-rede do balanceador de carga interno:
10.0.2.0/27 (10.0.2.2 para 10.0.2.30 ; 29 nós)
- Sub-rede do balanceador de carga público:
10.0.2.32/27 (10.0.2.34 para 10.0.2.62 ; 29 nós)
- Sub-rede dos nós worker do Kubernetes:
10.0.64.0/18 (10.0.64.2 para 10.0.127.254 ; 16381 nós)
Se precisar de sub-redes que têm diferentes endereços ou tamanhos que as definições padrão, você deverá determinar os valores apropriados para newbits e netnum . Para fazer isso, você deve ter conhecimento básico sobre endereços IP sem classe. Consulte também a documentação do Terraform para a função cidrsubnet() .
Certifique-se de que os blocos CIDR especificados aqui não se sobreponham ao bloco CIDR especificado para os pods Kubernetes (pods_cidr ).
|
service_gateway_enabled |
Especifique true para criar um gateway de serviço para a VCN.
Um gateway de serviço será necessário se as instâncias de computação na VCN precisarem acessar outros serviços do Oracle, como Oracle Cloud Infrastructure Object Storage.
|
vcn_cidr |
Um bloco CIDR IPv4 de sua escolha para a VCN.
O padrão é 10.0.0.0/16 . O intervalo permitido é /16 a /30
Certifique-se de que o bloco CIDR especificado aqui não se sobreponha ao bloco CIDR especificado para os serviços Kubernetes (services_cidr ).
|
vcn_dns_label |
O prefixo do nome do DNS interno da VCN.
O nome especificado aqui é prefixado como oraclevcn.com para formar o nome de domínio DNS da VCN. Por exemplo, se você especificar oke como prefixo, o nome do domínio DNS da VCN será oke.oraclevcn.com
|
vcn_name |
O nome do recurso de VCN. |
bastion_access |
O intervalo de endereços IP (em notação CIDR) a partir do qual o acesso SSH ao bastion deverá ser permitido.
Para permitir o acesso SSH de qualquer host (ou seja, 0.0.0.0/0 ), deixe a variável em seu valor padrão, ANYWHERE .
|
bastion_enabled |
Especifique true para criar um host bastion.
|
bastion_image_id |
O OCID da imagem a ser usada para criar o host bastion.
Se você deixar essa variável no valor padrão, NONE , uma imagem do Oracle Autonomous Linux será usada.
|
bastion_notification_enabled |
Você pode usar o Oracle Cloud Infrastructure Notification Service para receber mensagens de status do host bastion quando as atualizações forem aplicadas ou quando uma tentativa conhecida de exploração tiver sido detectada pelo Oracle Ksplice.
Especifique true para ativar o envio de notificações para o host bastion.
Observação: O código Terraform nesta solução configura notificações para o host bastion somente quando você usa a imagem default do Oracle Autonomous Linux.
|
bastion_notification_endpoint |
O endereço de e-mail para o qual as notificações devem ser enviadas. Essa variável será necessária se você definir bastion_notification_enabled como true .
|
bastion_notification_protocol |
Defina esta variável como EMAIL .
|
bastion_notification_topic |
Um nome para o tópico de notificação a ser criado. Essa variável será necessária se você definir bastion_notification_enabled como true .
|
bastion_package_upgrade |
Especifique true se quiser que os pacotes de segurança do host bastion sejam submetidos a upgrade na primeira vez que o host for inicializado.
Observe que, quando essa variável for definida como true , após o host bastion ser provisionado, ele não estará disponível por um curto período enquanto os pacotes de segurança forem atualizados. Mas a ativação desse upgrade minimiza as vulnerabilidades do host bastion.
|
bastion_shape |
A forma de computação que você deseja usar para o host bastion. |
bastion_timezone |
O fuso horário a ser configurado para o host bastion, no formato de fuso horário IANA (por exemplo, America/Los_Angeles ).
|
admin_enabled |
Especifique true para criar um host admin.
|
admin_image_id |
O OCID da imagem a ser usada para criar o host bastion.
Se você deixar essa variável no valor default, NONE , uma imagem Linux fornecida pela Oracle será usada.
|
admin_instance_principal |
Especifique true se quiser ativar o host admin para gerenciar todos os recursos do compartimento que você especificar.
Utilize este recurso se você pretende executar comandos de CLI ou fazer chamadas de API do host admin para gerenciar recursos na topologia.
Observação: Qualquer usuário que possa se conectar a uma instância de computação usando SSH herda os privilégios de instância privada concedidos à instância. Considere isso ao decidir se o host admin será designado como um principal de instância. Você pode desativar esse recurso ou a qualquer momento sem nenhum impacto no host admin.
Se você definir essa variável como true , então o host admin será transformado em um membro de um grupo dinâmico, e uma instrução de política será criada para permitir que o grupo dinâmico gerencie todos os recursos do compartimento.
|
admin_notification_enabled
admin_notification_endpoint
admin_notification_protocol
admin_notification_topic
|
Deixe essas variáveis com os valores padrão. A ativação de notificações para o host admin não é suportada no momento neste código Terraform. |
admin_package_upgrade |
Especifique true se quiser que os pacotes de segurança do host admin sejam submetidos a upgrade na primeira vez que o host for inicializado.
Observe que, quando essa variável for definida como true , após o host admin ser provisionado, ela estará indisponível por um curto período enquanto os pacotes de segurança forem atualizados. Mas a ativação desse upgrade minimiza as vulnerabilidades do host admin.
|
admin_shape |
A forma de computação que você deseja usar para o host admin. |
admin_timezone |
O fuso horário a ser configurado para o host admin, no formato de fuso horário IANA (por exemplo, America/Los_Angeles ).
|
availability_domains |
O domínio de disponibilidade no qual você deseja provisionar os hosts admin e bastion.
Por exemplo, para provisionar o host bastion no segundo domínio de disponibilidade, defina bastion = 2 .
Se a região especificada contiver apenas um domínio de disponibilidade, então deixe esta variável com seu valor default, 1 .
|
tagging |
Especifique as tags que você deseja designar aos recursos de computação e rede. |
allow_node_port_access |
Especifique true se quiser permitir o tráfego TCP para os nós worker do Kubernetes quando eles forem implantados no modo público.
|
allow_worker_ssh_access |
Especifique true se quiser permitir conexões SSH com os nós worker do Kubernetes por meio do host bastion.
Observe que mesmo que os nós worker sejam implantados no modo público, as conexões SSH devem passar pelo host bastion.
Se você definir essa variável como true , então também deverá definir bastion_enabled = true .
|
cluster_name |
Um nome para o cluster do Kubernetes. |
dashboard_enabled |
Especifique true se desejar que o painel de controle padrão do Kubernetes seja criado.
|
kubernetes_version |
A versão do Kubernetes a ser usada para os nós do worker.
Se você deixar essa variável com seu valor padrão, LATEST , a versão mais recente suportada será selecionada. Para usar uma versão específica, especifique essa versão.
|
node_pools |
O número de pools de nós a serem criados, o tamanho de cada pool e a forma de computação a ser usada para os nós worker, no seguinte formato:node_pools = {
"np1" = ["computeShape", numberOfNodes]
"np2" = ["computeShape", numberOfNodes]
"np3" = ["computeShape", numberOfNodes]
...
}
np1 , np2 e np3 são nomes arbitrários representando pools de nós individuais.
computeShape é a forma de computação a ser usada para os nós worker no pool.
numberOfNodes é o número de nós de trabalho do Kubernetes a serem criados no pool. No mínimo três nós são criados em cada pool, mesmo que você especifique um valor mais baixo.
O exemplo a seguir se destina a um cluster que consiste em dois pools, cada um usando uma forma de computação diferente e que contém um número diferente de nós de trabalho do Kubernetes: node_pools = {
"np1" = ["VM.Standard2.1", 3]
"np2" = ["VM.Standard2.2", 5]
}
|
node_pool_name_prefix |
O prefixo de nome dos pools de nós.
Os nomes dos pools de nós são gerados concatenando os valores de label_prefix , node_pool_name_prefix e o número do pool de nós. Por exemplo, se você especificar label_prefix = "prod" e node_pool_name_prefix = "np" , os nomes gerados dos pools de nós serão prod-np-1 , prod-np-2 , prod-np-3 , e assim por diante.
|
node_pool_image_id |
O OCID da imagem a ser usada para os nós de trabalho do Kubernetes.
Se você deixar essa variável no valor default, NONE , uma imagem que corresponda aos valores especificados para node_pool_os e node_pool_os_version será usada.
|
node_pool_os |
O sistema operacional que deve ser usado para os nós worker do Kubernetes (por exemplo, "Oracle Linux" ).
Esta definição é considerada apenas se você definir node_pool_image_id = "NONE"
|
node_pool_os_version |
A versão do sistema operacional que deve ser usada para os nós worker do Kubernetes (por exemplo, "7.7" ).
Esta definição é considerada apenas se você definir node_pool_image_id = "NONE"
|
pods_cidr |
Um bloco CIDR do IPv4 de sua escolha para os pods do Kubernetes.
Certifique-se de que o bloco CIDR especificado aqui não se sobreponha ao bloco CIDR especificado para a VCN (vcn_cidr ).
|
services_cidr |
Um bloco CIDR do IPv4 de sua escolha para os pods do Kubernetes.
Certifique-se de que o bloco CIDR especificado aqui não se sobreponha ao bloco CIDR especificado para a VCN (vcn_cidr ).
|
worker_mode |
Especifique public se os nós do colaborador tiverem que estar acessíveis pela internet pública. Caso contrário, defina esta variável como private .
Se você definir worker_mode = "private" , defina nat_gateway_enabled = true
|
lb_subnet_type e preferred_lb_subnets |
Os valores que você especifica para lb_subnet_type e preferred_lb_subnets determinam o tipo de sub-redes que deve ser usado para qualquer nó do balanceador de carga que você implantar usando o serviço Kubernetes do tipo LoadBalancer .
Os balanceadores de carga públicos têm endereços IP públicos. Os balanceadores de carga internos têm apenas endereços IP privados e não podem ser acessados pela internet pública.
- Se você pretende usar balanceadores de carga públicos, defina
preferred_lb_subnet = "public" e subnet_type para "both" ou "public"
- Se você pretende usar balanceadores de carga internos, defina
preferred_lb_subnet = "internal" e subnet_type para "both" ou "internal"
Mesmo que você defina as sub-redes do balanceador de carga como internas, deverá definir as anotações apropriadas (como service.beta.kubernetes.io/oci-load-balancer-internal: "true" ) ao criar serviços do balanceador de carga interno. A configuração de quão as sub-redes a serem privadas não é suficiente.
Para obter informações sobre a criação de balanceadores de carga internos, consulte a documentação do Oracle Cloud Infrastructure.
|
secret_id |
O ID do segredo no serviço Oracle Cloud Infrastructure Vault, no qual o token de autenticação a ser usado para extrair imagens do aplicativo do Oracle Cloud Infrastructure Registry é armazenado.
Você também deve definir o seguinte: bastion_enabled = true
admin_enabled = true
admin_instance_principal = true
|
email_address |
O endereço de e-mail a ser usado ao gerar o segredo Docker. Um endereço de e-mail é obrigatório, mas não importa o que você especificar.
Essa variável será necessária se você especificar secret_id .
|
tenancy_name |
O namespace do Oracle Cloud Infrastructure Object Storage da tenancy que contém o registro do qual as imagens devem ser extraídas para implantações para seu cluster do Kubernetes.
Essa variável será necessária se você especificar secret_id .
|
username |
O nome do usuário para o qual você gerou o token de autenticação armazenado no secret_id .
Essa variável será necessária se você especificar secret_id .
|
install_helm |
Especifique true se você deseja que o Helm seja instalado.
Helm é gerenciador de pacotes do Kubernetes.
Para instalar a Helm, você também deve definir admin_instance_principal = true .
|
helm_version |
A versão do cliente Helm a ser instalada.
O lado a lado (o município do servidor da Helm) é atualizado automaticamente.
|
install_calico |
Especifique true se quiser que a Calico seja instalada.
Você pode usar a Calico para implementar políticas de rede para cargas de trabalho de containers implantadas em clusters do Kubernetes.
Se você definir install_calico = true , então também deverá definir o seguinte: bastion_enabled = true
admin_enabled = true
admin_instance_principal = true
|
calico_version |
A versão da Calico a ser instalada. |
install_metricserver |
Especifique true se você deseja que o Kubernetes Metrics Server seja instalado.
Por default, a versão mais recente é instalada no namespace kube-system . O Kubernetes Metrics Server agrega dados de uso de recursos em um cluster.
Se você definir install_metricserver = true , então também deverá definir o seguinte: bastion_enabled = true
admin_enabled = true
admin_instance_principal = true
|
use_encryption |
Se você quiser usar o serviço Oracle Cloud Infrastructure Vault para criptografar segredos do Kubernetes, defina essa variável como true .
Se você definir use_encryption = true , então também deverá definir o seguinte: bastion_enabled = true
admin_enabled = true
admin_instance_principal = true
|
existing_key_id |
O OCID de uma chave existente criada no serviço Oracle Cloud Infrastructure Vault.
Essa variável será necessária se você definir use_encryption como true .
|
create_service_account |
Se você quiser que processos e ferramentas externos (como um pipeline CI/CD) acessem o cluster, defina essa variável como true . Uma conta de serviço é criada com seu próprio token de autenticação.
Se você definir create_service_account = true , então também deverá definir o seguinte: bastion_enabled = true
admin_enabled = true
admin_instance_principal = true
|
service_account_name |
O nome da conta de serviço a ser criada. |
service_account_namespace |
O namespace Kubernetes no qual a conta deve ser criada. |
service_account_cluster_role_binding |
O nome do binding de atribuição de cluster da conta de serviço. |