Nesta página, descrevemos os campos no arquivo de configuração do cluster de administrador para clusters do Anthos no VMware (GKE On-Prem).
Como gerar um modelo para o arquivo de configuração
Se você usou gkeadm
para criar a estação de trabalho do administrador, gkeadm
gerou
um modelo do arquivo de configuração do cluster de administrador. Além disso, gkeadm
preenche
alguns campos.
Se você não usou gkeadm
para criar a estação de trabalho do administrador, use gkectl
para gerar um modelo para o arquivo de configuração do cluster de administrador.
Para gerar um modelo para o arquivo de configuração do cluster de administrador:
gkectl create-config admin --config=OUTPUT_FILENAME --gke-on-prem-version=VERSION
Substitua OUTPUT_FILENAME
por um caminho de sua escolha para o
modelo gerado. Se você omitir essa sinalização, gkectl
nomeará o arquivo
admin-cluster.yaml
e o colocará no diretório atual.
Substitua VERSION
pelo número da versão desejado, que precisa ser igual ou menor que a versão gkectl
. Por exemplo: gkectl create-config admin --gke-on-prem-version=1.6.2-gke.0
. Se você omitir essa sinalização, o modelo de configuração gerado será preenchido com valores com base na versão mais recente do cluster.
Modelo
Como preencher o arquivo de configuração
No arquivo de configuração, insira os valores de campo conforme descrito nas seções a seguir.
bundlePath
String. O caminho dos clusters do Anthos no arquivo do pacote VMware.
Os clusters do Anthos no arquivo de pacote completo do VMware contêm todos os componentes em uma determinada versão dos clusters do Anthos no VMware. Quando você cria uma estação de trabalho de administrador, ela vem com um pacote completo em:
/var/lib/gke/bundles/gke-onprem-vsphere-VERSION-full.tgz
Exemplo:
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.7.0-gke.16.full.tgz"
vCenter
Nesta seção, você verá informações sobre o ambiente vCenter.
vCenter.address
String. O endereço IP ou o nome do host do servidor vCenter.
Antes de preencher o campo address
, faça o download e inspecione
o certificado de exibição do servidor vCenter. Digite o comando a seguir para fazer o
download do certificado e salvá-lo em um arquivo chamado vcenter.pem
.
true | openssl s_client -connect VCENTER_IP:443 -showcerts 2>/dev/null | sed -ne '/-BEGIN/,/-END/p' > vcenter.pem
Substitua VCENTER_IP
pelo endereço IP do seu servidor do vCenter.
Abra o arquivo de certificado para ver o nome comum e o alternativo do assunto:
openssl x509 -in vcenter.pem -text -noout
A saída mostra o nome comum (CN, na sigla em inglês) Subject
. Pode ser um endereço IP ou
um nome do host. Exemplo:
Subject: ... CN = 203.0.113.100
Subject: ... CN = my-vcenter-server.my-domain.example
A saída também pode incluir um ou mais nomes de DNS em
Subject Alternative Name
:
X509v3 Subject Alternative Name: DNS:vcenter.my-domain.example
Escolha o nome comum Subject
ou um dos nomes de DNS em
Subject Alternative Name
para usar como o valor de vcenter.address
no arquivo de configuração. Exemplo:
vCenter: address: "203.0.113.100"
vCenter: address: "my-vcenter-server.my-domain.example"
vCenter.datacenter
String. O nome do data center do vCenter. Exemplo:
vCenter: datacenter: "MY-DATACENTER"
vCenter.folder
String. O nome da pasta vCenter em que as VMs do cluster estarão localizadas. Por exemplo:
vCenter: folder: "MY-FOLDER"
vCenter.cluster
String. O nome do seu cluster do vSphere. Exemplo:
vCenter: cluster: "MY-CLUSTER"
vCenter.resourcePool
String. O nome do pool de recursos do vCenter. Exemplo:
Se você estiver usando um pool de recursos que não seja o padrão, forneça o nome do pool de recursos do vCenter. Exemplo:
vCenter: resourcePool: "MY-POOL"
Se você estiver usando o pool de recursos padrão, forneça o seguinte valor:
vCenter: resourcePool: "VSPHERE_CLUSTER/Resources"
Substitua VSPHERE_CLUSTER
pelo nome do cluster do vSphere.
vCenter.datastore
String. O nome do armazenamento de dados do vCenter. Exemplo:
vCenter: datastore: "MY-DATASTORE"
Consulte Como especificar o pool de recursos raiz para um host autônomo.
vCenter.caCertPath
String. Quando um cliente, como o GKE On-Prem, envia uma solicitação ao servidor vCenter, o servidor precisa provar a própria identidade ao cliente, apresentando um certificado ou um pacote de certificados. Para verificar o certificado ou pacote, os clusters do Anthos no VMware precisam ter o certificado raiz na cadeia de confiança.
Defina vCenter.caCertPath
como o caminho do certificado raiz. Exemplo:
vCenter: caCertPath: "/usr/local/google/home/me/certs/vcenter-ca-cert.pem"
A instalação do VMware tem uma autoridade de certificação (CA, na sigla em inglês) que emite um certificado para o servidor vCenter. O certificado raiz na cadeia de confiança é um certificado autoassinado criado pela VMware.
Se o certificado for alterado, você poderá atualizar a referência para o novo certificado.
Se você não quiser usar a CA do VMWare, que é o padrão, configure o VMware para usar uma autoridade de certificação diferente.
Se o servidor vCenter usa um certificado emitido pela CA do VMware padrão, faça o download do certificado da seguinte maneira:
curl -k "https://SERVER_ADDRESS/certs/download.zip" > download.zip
Substitua SERVER_ADDRESS
pelo endereço do servidor do vCenter.
Instale o comando unzip
e descompacte o arquivo de certificado:
sudo apt-get install unzip unzip downloads.zip
Se o comando para descompactar não funcionar na primeira vez, digite o comando novamente.
Encontre o arquivo de certificado em certs/lin
.
vCenter.credentials.fileRef.path
String. O caminho de um arquivo de configuração de credenciais que contém o nome de usuário e a senha da sua conta de usuário do vCenter. A conta de usuário precisa ter o papel de administrador ou privilégios equivalentes. Consulte os requisitos do vSphere. Exemplo:
vCenter: credentials: fileRef: path: "my-config-folder/admin-creds.yaml"
vCenter.credentials.fileRef.entry
String. O nome do bloco de credenciais, no arquivo de configuração de credenciais, que contém o nome de usuário e a senha da conta de usuário do vCenter. Exemplo:
vCenter: credentials: fileRef: entry: "vcenter-creds"
vCenter.dataDisk
String. Os clusters do Anthos no VMware criam um disco de máquina virtual (VMDK, na sigla em inglês) para armazenar dados de objeto do Kubernetes. O instalador cria o VMDK para
você, mas é necessário fornecer um nome para o VMDK no campo vCenter.dataDisk
. Por exemplo:
vCenter: dataDisk: "my-disk.vmdk"
Se você estiver usando um armazenamento de dados vSAN, coloque
o VMDK em uma pasta e crie manualmente a pasta com antecedência.
Use govc
para criar uma pasta:
govc datastore.mkdir -namespace=true my-folder
Em seguida, defina vCenter.dataDisk
como o caminho do VMDK, incluindo a pasta.
Exemplo:
vDenter: dataDisk: "my-folder/my-disk.vmdk"
network
Esta seção contém informações sobre a rede do cluster de administrador.
network.hostConfig
Nesta seção, você vê informações sobre servidores NTP, servidores DNS e domínios de pesquisa DNS usados pelo seu cluster.
Se você tiver informado um valor para um ou ambos os campos a seguir, preencha esta seção. Caso contrário, remova-a:
loadBalancer.seesaw.ipBlockFilePath
network.ipMode.ipBlockFilePath
network.hostConfig.dnsServers
Matriz de strings. Os endereços de servidores DNS a serem usados pelos hosts. Exemplo:
network: hostConfig: dnsServers: - "172.16.255.1" - "172.16.255.2"
network.hostConfig.ntpServers
Matriz de strings. Os endereços dos servidores de horário a serem usados pelos hosts. Exemplo:
network: hostConfig: ntpServers: - "216.239.35.0"
network.hostConfig.searchDomainsForDNS
Matriz de strings. Domínios de pesquisa DNS a serem usados pelos hosts. Esses domínios são usados como parte de uma lista de pesquisa de domínio. Exemplo:
network: hostConfig: searchDomainsForDNS: - "my.local.com"
network.ipMode.type
String. Se você quiser que os nós do cluster recebam o endereço IP de um servidor
DHCP, defina-o como "dhcp"
. Se quiser que os nós do cluster tenham endereços IP estáticos escolhidos em uma lista fornecida, defina isso como "static"
.
Por exemplo:
network: ipMode: type: "static"
network.ipMode.ipBlockFilePath
Se você definir ipMode.type
como "static"
, preencha este campo.
Se você definir
ipMode.type
como "dhcp"
, remova esse campo.
String. O caminho do arquivo de bloco IP para os nós do cluster de administrador. Por exemplo:
network: ipMode: ipBlockFilePath: "/my-config-folder/admin-cluster-ipblock.yaml"
network.serviceCIDR
e network.podCiDR
Strings. O cluster de administrador precisa ter um intervalo de endereços IP
para usar em serviços e um para usar em pods. Esses intervalos
são especificados pelos campos network.serviceCIDR
e
network.podCIDR
. Esses campos são preenchidos com valores padrão. Se quiser,
é possível alterar os valores preenchidos para os de sua escolha.
O intervalo de serviços não pode se sobrepor ao intervalo de pods.
Os intervalos de serviços e pods não podem se sobrepor a nenhum endereço fora do cluster que você queira acessar de dentro dele.
Por exemplo, suponha que seu intervalo de serviço seja 10.96.232.0/24 e seu intervalo de pod seja 192.168.0.0/16. Qualquer tráfego enviado de um pod para um endereço em qualquer um desses intervalos vai ser tratado como no cluster e não vai atingir nenhum destino fora dele.
Os intervalos de serviços e pods não podem se sobrepor a:
Endereços IP de nós em qualquer cluster
Endereços IP usados por máquinas de balanceador de carga
VIPs usados por nós do plano de controle e balanceadores de carga
Endereço IP dos servidores vCenter, DNS e NTP
Recomendamos que os intervalos de serviços e pods estejam no espaço de endereço RFC 1918.
Veja um motivo por que recomendamos usar endereços RFC 1918. Suponha que o intervalo de pods ou de serviços contenha endereços IP externos. Qualquer tráfego enviado de um pod para um desses endereços externos será tratado como tráfego no cluster e não chegará ao destino externo.
Exemplo:
network: ... serviceCIDR: "10.96.232.0/24" podCIDR: "192.168.0.0/16"
network.vCenter.networkName
String. O nome da rede do vSphere para os nós do cluster.
Se o nome tiver um caractere especial, use uma sequência de escape.
Caracteres especiais | Sequência de escape |
---|---|
Barra (/ ) |
%2f |
Barra invertida (\ ) |
%5c |
Sinal de porcentagem (% ) |
%25 |
Se o nome da rede não for exclusivo, será possível especificar um caminho para a
rede, como
/DATACENTER/network/NETWORK_NAME
.
Por exemplo:
network: vCenter: networkName: "MY-CLUSTER-NETWORK"
loadBalancer
Esta seção contém informações sobre o balanceador de carga do cluster de administrador.
loadBalancer.vips.controlPlaneVIP
String. O endereço IP que você escolheu configurar no balanceador de carga para o servidor da API Kubernetes do cluster de administrador. Por exemplo:
loadBalancer: vips: controlplaneVIP: "203.0.113.3"
loadBalancer.vips.addonsVIP
String. O endereço IP que você escolheu configurar no balanceador de carga para complementos. Exemplo:
loadBalancer: vips: addonsVIP: "203.0.113.4"
loadBalancer.kind
String. Defina como "Seesaw"
, "F5BigIP"
ou "ManualLB"
. Por exemplo:
loadBalancer: kind: "Seesaw"
loadBalancer.manualLB
Se você definir loadbalancer.kind
como "ManualLB"
, preencha esta seção. Caso contrário,
remova-a.
loadBalancer.manualLB.ingressHTTPNodePort
Remova esse campo do arquivo de configuração. Ele não é usado em um cluster de administrador.
loadBalancer.manualLB.ingressHTTPSNodePort
Remova esse campo do arquivo de configuração. Ele não é usado em um cluster de administrador.
loadBalancer.manualLB.controlPlaneNodePort
Número inteiro. O servidor da API Kubernetes no cluster de administrador é implementado como um
serviço do
tipo NodePort
. É preciso escolher um valor nodePort
para o serviço.
Defina esse campo como o valor nodePort
. Exemplo:
loadBalancer: manualLB: contolPlaneNodePort: 30968
loadBalancer.manualLB.addonsNodePort
Número inteiro. O servidor de complementos no cluster de administrador é implementado como um Serviço do
tipo NodePort
. É preciso escolher um valor nodePort
para o serviço.
Defina esse campo como o valor nodePort
. Exemplo:
loadBalancer: manualLB: addonsNodePort: 31405
loadBalancer.f5BigIP
Se você definir loadbalancer.kind
como "f5BigIP"
, preencha esta seção. Caso contrário,
remova-a.
loadBalancer.f5BigIP.address
String. O endereço do balanceador de carga F5 BIG-IP. Exemplo:
loadBalancer: f5BigIP: address: "203.0.113.2"
loadBalancer.f5BigIP.credentials.fileRef.path
String. O caminho de um arquivo de configuração de credenciais que contém o nome de usuário e a senha de uma conta que os clusters do Anthos no VMware podem usar para se conectar ao balanceador de carga F5 BIG-IP.
A conta de usuário precisa ter um papel de usuário com permissões suficientes para configurar e gerenciar o balanceador de carga. O papel "Administrador" ou "Administrador de recursos" é suficiente.
Exemplo:
loadBalancer: f5BigIP: credentials: fileRef: path: ""my-config-folder/admin-creds.yaml"
loadBalancer.f5BigIP.credentialsfileRef.entry
String. O nome do bloco de credenciais, no arquivo de configuração de credenciais, que contém o nome de usuário e a senha da conta F5 BIG-IP. Exemplo:
loadBalancer: f5BigIP: credentials: fileRef: entry: "f5-creds"
loadBalancer.f5BigIP.partition
String. O nome de uma partição BIG-IP que você criou para o cluster de administrador. Exemplo:
loadBalancer: f5BigIP: partition: "my-f5-admin-partition"
loadBalancer.f5BigIP.snatPoolName
String. Se você estiver usando SNAT, o nome do pool de SNAT. Se você não estiver usando SNAT, remova esse campo. Exemplo:
loadBalancer: f5BigIP: snatPoolName: "my-snat-pool"
loadBalancer.seesaw
Se você definir loadbalancer.kind
como "Seesaw"
, preencha esta seção. Caso contrário,
remova-a.
Para informações sobre como configurar o balanceador de carga Seesaw, consulte Guia de início rápido do balanceador de carga Seesaw e Balanceamento de carga em pacote com o Seesaw.
loadBalancer.seesaw.ipBlockFilePath
String. Defina isso como o caminho do arquivo de bloco IP para suas VMs da Seesaw. Exemplo:
loadBalancer: seesaw: ipBlockFilePath: "config-folder/admin-seesaw-ipblock.yaml"
loadBalancer.seesaw.vrid
Número inteiro. O identificador do roteador virtual da VM do Seesaw. Esse identificador, que é um número inteiro de sua escolha, precisa ser exclusivo em uma VLAN. O intervalo válido é de 1 a 255. Exemplo:
loadBalancer: seesaw: vrid: 125
loadBalancer.seesaw.masterIP
String. O endereço IP virtual configurado na VM do Master Seesaw. Exemplo:
loadBalancer: seesaw: masterIP: 172.16.20.21
loadBalancer.seesaw.cpus
Integer. O número de CPUs de cada uma das VMs do Seesaw. Exemplo:
loadBalancer: seesaw: cpus: 8
loadBalancer.seesaw.memoryMB
Número inteiro. O número de megabytes de memória de cada uma da VM do Seesaw. Por exemplo:
loadBalancer: seesaw: memoryMB: 8192
loadBalancer.seesaw.vCenter.networkName
String. O nome da rede vCenter que contém as VMs do Seesaw. Por exemplo:
loadBalancer: seesaw: vCenter: networkName: "my-seesaw-network"
loadBalancer.seesaw.enableHA
Booleano. Defina como true
, se quiser criar um balanceador de carga Seesaw
altamente disponível (HA). Caso contrário, defina como false
. Um balanceador de carga altamente disponível usa
um par(Mestre, Backup)
de VMs. Exemplo:
loadBalancer: seesaw: enableHA: true
loadBalancer.seesaw.disableVRRPMAC
Booleano. Se você definir isso como true
, o balaceador de carga de Seeaw não usará o aprendizado MAC para failover. Em vez disso, ele usa
ARP gratuito.
Se você definir isso como false
, o balanceador de carga da Seesaw usará o aprendizado MAC. Recomendamos
que você defina isso como true
. Se você estiver usando o vSphere 7 ou uma versão posterior
e tiver um balanceador de carga de alta disponibilidade da Seesaw, configure-o como
true
.
Por exemplo:
loadBalancer: seesaw: disableVRRPMAC: true
antiAffinityGroups.enabled
Booleano. Defina como true
para ativar a criação de regras do DRS. Caso contrário, defina-o
como false
. Por exemplo:
antiAffinityGroups: enabled: true
Os clusters do Anthos criam na AWS automaticamente regras de antiafinidade do VMware Distributed Resource Scheduler (DRS) para os nós do cluster de administrador, fazendo com que eles sejam distribuídos em pelo menos três hosts físicos no data center.
Esse recurso exige que o ambiente vSphere atenda às seguintes condições
O VMware DRS está ativado. O VMware DRS requer a edição de licença do vSphere Enterprise Plus.
Sua conta de usuário do vSphere tem o privilégio
Host.Inventory.Modify cluster
.Há pelo menos três hosts físicos disponíveis.
Lembre-se de que, se você tiver uma licença padrão do vSphere, não será possível ativar o VMware DRS.
Se a DRS não estiver ativada ou se você não tiver pelo menos três hosts em que
as VMs do vSphere podem ser programadas, defina antiAffinityGroups.enabled
como false
.
adminMaster
Pré-lançamento.
Se você quiser especificar a CPU e a memória para o nó de plano de controle do cluster de administrador, preencha esta seção. Caso contrário, remova-a.
adminMaster.cpus
Número inteiro. O número de CPUs para o nó de plano de controle do cluster de administrador. Por exemplo:
adminMaster: cpus: 4
adminMaster.memoryMB
Número inteiro. O número de megabytes de memória para o nó do plano de controle do cluster de administrador. Por exemplo:
adminMaster: memoryMB: 16384
addonNode.autoResize.enabled
Booleano. Defina como true
para ativar o redimensionamento automático dos nós de complemento no
cluster de administrador. Por exemplo:
addonNode: autoResize: enabled: true
connectivity
String. Opcional. Especifique a conectividade com o Google Cloud. O único valor possível para conectividade é "connected". Por exemplo:
connectivity: "connected"
proxy
Se a rede estiver protegida por um servidor proxy, preencha esta seção. Caso contrário, remova-a.
proxy.url
String. O endereço HTTP do servidor proxy. Inclua o número da porta mesmo que ele seja igual à porta padrão do esquema. Por exemplo:
proxy: url: "http://my-proxy.example.local:80"
O servidor proxy especificado aqui é usado pelos clusters do Anthos em clusters do VMware. Além disso, a estação de trabalho de administrador será configurada automaticamente para usar esse
mesmo servidor proxy, a menos que você defina a variável de ambiente HTTPS_PROXY
na
estação de trabalho do administrador.
Se você especificar proxy.url
, também precisará especificar proxy.noProxy
.
Depois que a configuração de proxy do cluster de administrador for definida, ela não poderá ser modificada ou excluída, a menos que o cluster seja recriado.
proxy.noProxy
String. Uma lista separada por vírgulas de endereços IP, intervalos de endereços IP, nomes de host e nomes de domínio que não podem passar pelo servidor proxy. Quando os clusters do Anthos no VMware enviam uma solicitação para um desses endereços, hosts ou domínios, essa solicitação é enviada diretamente. Por exemplo:
proxy: noProxy: "10.151.222.0/24, my-host.example.local,10.151.2.1"
privateRegistry
Se você tiver um registro particular do Docker, preencha esta seção. Caso contrário,
remova-a. As configurações selecionadas na seção privateregistry
são
refletidas não apenas no cluster de administrador, mas também nos clusters de usuário.
privateRegistry.address
String. O endereço IP ou FQDN (nome de domínio totalmente qualificado) da máquina que executa o registro particular do Docker. Por exemplo:
privateRegistry: address: "203.0.113.10"
privateRegistry: address: "fqdn.example.com"
privateRegistry.credentials.fileRef.path
String. O caminho de um arquivo de configuração de credenciais que contém o nome de usuário e a senha de uma conta que os clusters do Anthos no VMware podem usar para acessar seu registro particular do Docker. Por exemplo:
privateRegistry: credentials: fileRef: path: "my-config-folder/admin-creds.yaml"
privateRegistry.credentials.fileRef.entry
String. O nome do bloco de credenciais, no arquivo de configuração de credenciais, que contém o nome de usuário e a senha da conta de registro particular do Docker.
privateRegistry: credentials: fileRef: entry: "private-registry-creds"
privateRegistry.caCertPath
String. Quando o Docker extrai uma imagem do seu registro particular, o registro precisa comprovar a própria identidade apresentando um certificado. O certificado do registro é assinado por uma autoridade de certificação (CA). O Docker usa o certificado da CA para validar o certificado do registro.
Defina este campo como o caminho do certificado da CA. Por exemplo:
privateRegistry: caCertPath: "my-cert-folder/registry-ca.crt"
componentAccessServiceAccountKeyPath
String. O caminho do arquivo de chave JSON para sua conta de serviço de acesso a componentes. Exemplo:
componentAccessServiceAccountKeyPath: "my-key-folder/access-key.json"
stackdriver
Esta seção contém informações sobre o projeto e a conta de serviço que você quer usar para armazenar registros e métricas.
stackdriver.projectID
String. O ID do projeto do Google Cloud em que você quer ver os registros. Exemplo:
stackdriver: projectID: "my-logs-project"
stackdriver.clusterLocation
String. A região do Google Cloud em que você quer armazenar os registros. É uma boa ideia escolher uma região próxima ao data center local. Exemplo:
stackdriver: clusterLocation: "us-central1"
stackdriver.enableVPC
Booleano. Se a rede do cluster for controlada por uma VPC, defina esse
campo como true
. Isso garante que toda a telemetria flua pelos endereços IP
restritos do Google. Caso contrário, defina esse campo como false
. Exemplo:
stackdriver: enableVPC: false
stackdriver.serviceAccountKeyPath
String. O caminho do arquivo de chave JSON da conta de serviço de monitoramento de registros. Exemplo:
stackdriver: serviceAccountKeyPath: "my-key-folder/log-mon-key.json"
stackdriver.disableVsphereResourceMetrics
Booleano. Defina como true
para desativar a coleta de métricas do vSphere.
Caso contrário, defina como false
. Por exemplo:
stackdriver: disableVsphereResourceMetrics: true
Atualizando o valor de stackdriver.disableVsphereResourceMetrics
cloudAuditLogging
Se você quiser integrar os registros de auditoria do servidor da API Kubernetes do cluster com os registros de auditoria do Cloud, preencha essa seção. Caso contrário, remova-a.
cloudAuditLogging.projectID
String. O ID do projeto do Google Cloud em que você quer ver os registros de auditoria. Exemplo:
cloudAuditLogging: projectID: "my-audit-project"
cloudAuditLogging.clusterLocation
String. A região do Google Cloud em que você quer armazenar registros de auditoria. É uma boa ideia escolher uma região próxima ao data center local. Exemplo:
cloudAuditLogging: clusterLocation: "us-central1"
cloudAuditLogging.serviceAccountKeyPath
String. O caminho do arquivo de chave JSON da conta de serviço de geração de registros de auditoria. Por exemplo:
cloudAuditLogging: serviceAccountKeyPath: "my-key-folder/audit-log-key.json"
clusterBackup.datastore
Pré-lançamento.
String. O armazenamento de dados do vSphere em que você quer salvar os backups do cluster.
Exemplo:
clusterBackup: datastore: "my-datastore"
autoRepair.enabled
Booleano. Defina como true
para ativar o
reparo automático de nós.
Caso contrário, defina como false
. Exemplo:
autoRepair: enabled: true
Ativar ou desativar reparo automático em um cluster em execução
É possível alterar o valor de autoRepair.enabled
e executar este comando para implantar
as alterações:
gkectl update admin --kubeconfig ADMIN_KUBECONFIG --config ADMIN_CONFIG_FILE