Configurar os Módulos Terraform

Os recursos necessários para esta solução são definidos nos módulos Terraform.

Antes de Começar

Antes de iniciar a configuração dos módulos Terraform, execute as seguintes etapas:

  1. Aprenda os conceitos básicos do Terraform.

    No mínimo, leia a introdução na documentação do Terrraform.

  2. Mantenha as seguintes informações prontas:
    • O OCID da sua tenancy.

      Você pode localizar o OCID de sua tenancy na console web do Oracle Cloud Infrastructure. Selecione Administração no menu de serviços e, em seguida, clique em Detalhes da Tenancy.

    • O OCID do usuário que você deseja que o Terraform use para autenticação com o Oracle Cloud Infrastructure.

      Para localizar o OCID do usuário, selecione Identidade no menu de serviços e, em seguida, selecione Usuários. Localize seu nome de usuário na lista e copie seu OCID.

    • O OCID do compartimento no qual você deseja criar os recursos.

      Para localizar o OCID de um compartimento, selecione Identidade no menu de serviços e, em seguida, selecione Compartimentos. Localize o compartimento que você precisa na lista e copie seu OCID.

    • 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.

      Consulte Regiões e Domínios de Disponibilidade.

  3. Decida o seguinte:
    • Os OCIDs das imagens que você deseja usar para os hosts bastion e admin.
      A imagem padrão definida na configuração do Terraform para o host bastion é uma imagem do Oracle Autonomous Linux. Se você quiser usar outra imagem, identifique o OCID da imagem de que precisa.
      • Para localizar o OCID de uma imagem personalizada, acesse a console web do Oracle Cloud Infrastructure, selecione Calcular no menu de serviço e, em seguida, selecione Imagens Personalizadas.
      • Para localizar o OCID de uma imagem fornecida pela Oracle, execute as seguintes etapas:
        1. Vá para Imagens da Oracle Cloud.
        2. No painel de navegação à esquerda, selecione uma família de imagens (por exemplo, Oracle Linux 7. x ).
        3. Na página resultante, role para baixo até a versão da imagem que você deseja usar e clique nela (por exemplo, Oracle-Linux-7.7-2019.09.25-0 ).
        4. Na página resultante, role a tela para baixo até a seção OCIDs da Imagem.
        5. Copie o OCID correspondente à região onde você deseja criar o host bastion.

          O OCID da imagem contém o ID da região em que a imagem pode ser usada. Por exemplo, os OCIDs das imagens na região Central da Alemanha (Frankfurt) estariam no formato ocid1.image.oc1.eu-frankfurt-1.aaaaaaaaxxx…. Certifique-se de copiar o OCID da imagem para a região em que deseja criar seus recursos.

    • O fuso horário dos hosts bastion e admin.

      Em sistemas UNIX, é possível obter uma lista dos fusos horários executando o comando: timedatectl list-timezones

    • A forma de computação a ser usada para o host bastion, o host admin e os nós worker do Kubernetes.

      Consulte Formas de Computação.

  4. Conclua os pré-requisitos para criar clusters do Kubernetes no Oracle Cloud Infrastructure. Consulte Preparação para o Mecanismo do Contêiner do Kubernetes.
  5. (Opcional) Esta etapa será obrigatória se você pretende extrair imagens de aplicativos conteinerizados de um repositório privado no Oracle Cloud Infrastructure Registry.
    1. Gere um token de autenticação para o nome de usuário que deve ser usado para extrair imagens do Oracle Cloud Infrastructure Registry. Consulte Obtendo um Token de Autenticação.
    2. Armazene o token de autenticação gerado como um segredo no Oracle Cloud Infrastructure Vault. Consulte Gerenciando Segredos.

Fazer Download do Código do Terraform

O código do Terraform para esta solução está disponível no GitHub.

  1. No painel de navegação à esquerda, clique em Fazer Download do Código.
  2. Clique em Repositório Git.
  3. Clonar ou fazer download do repositório para seu computador local.

Sobre o Código Terraform

O código do Terraform para esta solução é organizado em módulos reutilizáveis, cada um contendo os recursos para um componente específico da topologia de destino.

A codificação dos seus recursos de nuvem nos arquivos de configuração do Terraform permite provisionar a topologia rapidamente e gerenciar os recursos de maneira eficiente.

O código do Terraform contém os seguintes diretórios e arquivos no nível superior:
  • docs directory e *.adoc: Documentação do código. Todas as informações e instruções necessárias estão incluídas na documentação que você está lendo agora. Você não precisará fazer referência à documentação que está incluída no código.
  • *.tf: Os arquivos de configuração do Terraform que a solução usa. Não edite esses arquivos.
  • terraform.tfvars.example: Um modelo que você usará para criar o arquivo de variáveis Terraform. Não edite ou remova o modelo. Copiar para terraform.tfvars
  • modules: Diretórios que contêm as configurações do Terraform principal para os recursos que você cria usando esta solução. Não editá-los.
  • .github diretório e .gitignore: Arquivos de configuração do Github interno. Não editá-los.

Definir as Variáveis do Terraform

Especifique os parâmetros necessários para o Terraform estabelecer conexão com a tenancy do Oracle Cloud Infrastructure. Especifique também os parâmetros de rede, os atributos do host bastion e o host admin, além das definições do Kubernetes.

  1. No diretório de nível superior do código transferido por download ou clonado, crie um arquivo de texto sem formatação denominado provider.tf, contendo o seguinte código:
    provider "oci" {
      tenancy_ocid         = var.tenancy_id
      user_ocid            = var.user_id
      fingerprint          = var.api_fingerprint
      private_key_path     = var.api_private_key_path
      region               = var.region
      disable_auto_retries = var.disable_auto_retries
    }
  2. Localize o arquivo terraform.tfvars.example no diretório de nível superior do código do qual você fez download ou clonou e copie-o em terraform.tfvars

    Observação:

    Para gerenciar recursos em várias locações, mantenha um arquivo terraform.tfvars separado para cada tenancy.
  3. Certifique-se de concluir os pré-requisitos descritos anteriormente. Consulte Antes de Começar.
  4. Abra terraform.tfvars em um editor de texto sem formatação e defina os valores das variáveis como se segue:
    Variável Descrição
    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.

    Veja a seguir um exemplo de um arquivo terraform.tfvars concluído.

    # Identity and access parameters
    
    api_fingerprint = "d4:dc:...(truncated)"
    
    api_private_key_path = "/home/joe/.oci/oci_api_key.pem"
    
    compartment_id = "ocid1.compartment.oc1..aaaaaaaaxxx... (truncated)"
    
    tenancy_id = "ocid1.tenancy.oc1..aaaaaaaaxxx... (truncated)"
    
    user_id = "ocid1.user.oc1..aaaaaaaaxxx... (truncated)"
    
    ssh_private_key_path = "/home/joe/.ssh/id_rsa"
    
    ssh_public_key_path = "/home/joe/.ssh/id_rsa.pub"
    
    # general oci parameters
    label_prefix = "prod"
    
    region = "us-phoenix-1"
    
    # networking
    
    nat_gateway_enabled = true
    
    netnum = {
      admin   = 33
      bastion = 32
      int_lb  = 16
      pub_lb  = 17
      workers = 1
    }
    
    newbits = {
      admin   = 13
      bastion = 13
      lb      = 11
      workers = 2
    }
    
    service_gateway_enabled = true
    
    vcn_cidr = "10.0.0.0/16"
    
    vcn_dns_label = "oke"
    
    vcn_name = "oke vcn"
    
    # bastion
    
    bastion_access = "ANYWHERE"
    
    bastion_enabled = true
    
    bastion_image_id = "NONE"
    
    bastion_notification_enabled = true
    
    bastion_notification_endpoint = "joe@example.com"
    
    bastion_notification_protocol = "EMAIL"
    
    bastion_notification_topic = "bastion_server_notification"
    
    bastion_package_upgrade = true
    
    bastion_shape = "VM.Standard.E2.1"
    
    bastion_timezone = "America/Los_Angeles"
    
    admin_enabled = true
    
    admin_image_id = "NONE"
    
    admin_instance_principal = true
    
    admin_notification_enabled = false
    
    admin_notification_endpoint = "joe@example.com"
    
    admin_notification_protocol = "EMAIL"
    
    admin_notification_topic = "admin_server_notification"
    
    admin_package_upgrade = true
    
    admin_shape = "VM.Standard.E2.1"
    
    admin_timezone = "America/Los_Angeles"
    
    # availability_domains
    
    availability_domains = {
      bastion = 1
      admin   = 1
    }
    
    tagging = {
      computetag = {"Environment" = "dev" }
      networktag = { "Name" = "network" }
    }
    
    # oke
    
    allow_node_port_access = false
    
    allow_worker_ssh_access = false
    
    cluster_name = "oke"
    
    dashboard_enabled = true
    
    kubernetes_version = "LATEST"
    
    node_pools = {
      np1 = ["VM.Standard2.1", 3]
      #np2 = ["VM.Standard2.8", 4]
      #np3 = ["VM.Standard1.4", 5]
    }
    
    node_pool_name_prefix = "np"
    
    node_pool_image_id = "NONE"
    
    node_pool_os = "Oracle Linux"
    
    node_pool_os_version = "7.7"
    
    pods_cidr = "10.244.0.0/16"
    
    services_cidr = "10.96.0.0/16"
    
    worker_mode = "private"
    
    # oke load balancers
    
    lb_subnet_type = "public"
    
    preferred_lb_subnets = "public"
    
    # ocir
    
    secret_ocid = "ocid1.key.oc1..aaaaaaaaxxx... (truncated)"
    
    email_address = "joe@example.com"
    
    tenancy_name = "mytenancy"
    
    username = "joe_k8s_admin"
    
    # helm
    
    helm_version = "3.0.0"
    
    install_helm = false
    
    # calico
    
    calico_version = "3.9"
    
    install_calico = false
    
    # metrics server
    
    install_metricserver = false
    
    use_encryption = false
    
    existing_key_id = ""
    
    # service accountcreate_service_account = true
    service_account_name = "kubeconfigsa"
    service_account_namespace = "kube-system"
    service_account_cluster_role_binding = "myapps-manage-binding"
  5. Salve e feche terraform.tfvars.