Configurare il proxy DNS
Il proxy DNS è una funzionalità che fornisce le seguenti funzionalità:
- Propagazione delle voci DNS di 
Servicestra i cluster in una configurazione multi-cluster. - Compilazione delle voci DNS per 
ServiceEntry. 
Kubernetes fornisce la risoluzione DNS solo per Services nel cluster locale.
Quando devi fornire la risoluzione dei nomi per Services in un cluster remoto o
utilizzare un nome host solo interno con ServiceEntry senza avere un altro
server DNS solo interno, DNS Proxy fornisce un modo per risolvere i nomi DNS per questi
casi.
Configurazione del proxy DNS
Configurazione a livello di cluster
Per configurare il proxy DNS nel cluster, aggiungi i metadati del proxy ISTIO_META_DNS_CAPTURE al ConfigMap per MeshConfig. Il nome del ConfigMap ha un formato
istio-<revision_name>. Per i dettagli della revisione, consulta la panoramica della revisione.
apiVersion: v1
data:
  mesh: |-
    ...
    defaultConfig:
      proxyMetadata:
        ISTIO_META_DNS_CAPTURE: "true"        
    ...
kind: ConfigMap
metadata:
  name: istio-<revision_name>
  namespace: istio-system
Configurazione per proxy
Per configurare il proxy DNS per un proxy, aggiungi l'annotazione dei metadati del proxy ISTIO_META_DNS_CAPTURE come segue:
kind: Deployment
metadata:
  name: app1
  namespace: ns1
spec:
...
  template:
    metadata:
      annotations:
        proxy.istio.io/config: |
          proxyMetadata:
            ISTIO_META_DNS_CAPTURE: "true"
...
In fase di verifica
Risoluzione dei nomi per Service in più cluster
Dopo la configurazione multi-cluster,
esegui il deployment di un Service solo in uno dei cluster per verificare la risoluzione dei nomi tra i cluster.
Quando hai il seguente esempio Service ns1/svc1,
puoi trovare ClusterIP in Service.
$ kubectl get -n ns1 svc1
kind: Service
metadata:
  name: svc1
  namespace: ns1
spec:
...
  ClusterIP: 210.200.1.1
...
Poi, quando utilizzi curl dal cluster other al cluster Service, dovrebbe essere visualizzato
ClusterIP come segue.
curl -sS -v svc1.ns1.svc.cluster.local
*   Trying 210.200.1.1:80...
Risoluzione dei nomi per ServiceEntry
Aggiungi un ServiceEntry con un nome host non registrato nel tuo DNS.
Per verificare la risoluzione dei nomi, il seguente esempio ha l'indirizzo esplicito 192.168.123.123.
$ kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
  name: test-service-entry
spec:
  addresses:
  - "192.168.123.123"
  hosts:
  - not-existing-hostname.internal
  ports:
  - name: http
    number: 80
    protocol: HTTP
EOF
Quindi, prova la risoluzione DNS in un pod in cui è attivato il proxy DNS. Ad esempio, se 
esegui un curl nel pod, l'indirizzo IP dovrebbe essere visualizzato come segue:
curl -sS -v not-existing-hostname.internal
*   Trying 192.168.123.123:80...