Questa pagina descrive come abilitare funzionalità facoltative su un piano di controllo Anthos Service Mesh gestito. Per informazioni sul piano di controllo nel cluster, consulta Abilitazione di funzionalità facoltative sul piano di controllo nel cluster.
Quando esegui il provisioning di Anthos Service Mesh gestito, le funzionalità abilitate per impostazione predefinita variano a seconda della piattaforma. Se attualmente utilizzi una configurazione basata su IstioOperator
, lo strumento Esegui la migrazione da IstioOperator può aiutarti a eseguire la conversione alla configurazione supportata dal piano di controllo gestito.
Log di accesso Envoy
Esegui i comandi seguenti per abilitare il logging degli accessi a Envoy:
Esegui questo comando per aggiungere
accessLogFile: /dev/stdout
:cat <<EOF | kubectl apply -f - apiVersion: v1 data: mesh: |- accessLogFile: /dev/stdout kind: ConfigMap metadata: name: istio-release-channel namespace: istio-system EOF
dove release-channel è il tuo canale di rilascio (
asm-managed
,asm-managed-stable
oasm-managed-rapid
).Esegui questo comando per visualizzare il file configmap:
kubectl get configmap istio-release-channel -n istio-system -o yaml
Per verificare che il logging degli accessi sia abilitato, assicurati che la riga
accessLogFile: /dev/stdout
venga visualizzata nella sezionemesh:
.... apiVersion: v1 data: mesh: | .... accessLogFile: /dev/stdout ...
Abilita Cloud Tracciamento
Esegui questi comandi per abilitare Cloud Trace:
Esegui questo comando:
cat <<EOF | kubectl apply -f - apiVersion: v1 data: mesh: |- defaultConfig: tracing: stackdriver: {} kind: ConfigMap metadata: name: istio-release-channel namespace: istio-system EOF
dove release-channel è il tuo canale di rilascio (
asm-managed
,asm-managed-stable
oasm-managed-rapid
).Esegui questo comando per visualizzare il file configmap:
kubectl get configmap istio-release-channel -n istio-system -o yaml
Per verificare che Cloud Trace sia abilitato, assicurati che nella sezione
mesh:
vengano visualizzate le righe seguenti.... apiVersion: v1 data: mesh: | .... defaultConfig: tracing: stackdriver:{} ...
Riavvia i proxy.
Tieni presente che attualmente la configurazione del tracer fa parte della configurazione del bootstrap del proxy, pertanto è necessario riavviare ogni pod ed essere reiniettato per recuperare l'aggiornamento del tracer. Ad esempio, puoi utilizzare il seguente comando per riavviare i pod che appartengono a un deployment:
kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME
Per ulteriori informazioni sulle intestazioni delle tracce supportate, consulta Accesso alle tracce.
Immagine proxy distroless
Come best practice, devi limitare i contenuti di un runtime del container solo ai pacchetti necessari. Questo approccio migliora la sicurezza e il rapporto segnale/rumore degli scanner di vulnerabilità ed esposizioni comuni (CVE). Istio fornisce immagini proxy basate su immagini di base senza distribuzione.
La seguente configurazione attiva immagini senza distribuzione per l'intero Anthos Service Mesh. Una modifica del tipo di immagine richiede il riavvio di ogni pod e il reinserimento effettivo.
apiVersion: v1
kind: ConfigMap
metadata:
name: istio-release-channel
namespace: istio-system
data:
mesh: |-
defaultConfig:
image:
imageType: distroless
L'immagine proxy senza distribuzione non contiene programmi binari diversi dal proxy. Di conseguenza, non è possibile exec
una shell o utilizzare curl
, ping
o altre utilità di debug all'interno del container. Se hai bisogno di accedere a questi strumenti per un deployment specifico, puoi eseguire l'override di imageType
utilizzando la seguente annotazione pod.
sidecar.istio.io/proxyImageType: debug
Dopo aver modificato il tipo di immagine di un deployment tramite l'annotazione, il deployment deve essere riavviato.
kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME
Per la maggior parte dei tipi di debug del proxy, è necessario utilizzare istioctl proxy-cmd
, che non richiede un'immagine di base di debug.
Norme relative al traffico in uscita
Per impostazione predefinita, outboundTrafficPolicy
è impostato su ALLOW_ANY
. In questa modalità, è consentito tutto il traffico verso qualsiasi servizio esterno.
Per controllare e limitare il traffico solo ai servizi esterni per i quali sono definite voci di servizio, puoi modificare il comportamento predefinito di ALLOW_ANY
in REGISTRY_ONLY
La seguente configurazione configura
outboundTrafficPolicy
suREGISTRY_ONLY
apiVersion: v1 kind: ConfigMap metadata: name: istio-release-channel namespace: istio-system data: mesh: |- outboundTrafficPolicy: mode: REGISTRY_ONLY
dove release-channel è il tuo canale di rilascio (
asm-managed
,asm-managed-stable
oasm-managed-rapid
).Puoi apportare le modifiche necessarie alla configurazione in alto nel file configmap utilizzando il comando seguente
kubectl edit configmap istio-release-channel -n istio-system -o yaml
Esegui questo comando per visualizzare il file configmap:
kubectl get configmap istio-release-channel -n istio-system -o yaml
Per verificare che
outboundTrafficPolicy
sia abilitato conREGISTRY_ONLY
, assicurati che le seguenti righe vengano visualizzate nella sezionemesh:
.... apiVersion: v1 data: mesh: | outboundTrafficPolicy: mode: REGISTRY_ONLY ...
Autenticazione degli utenti finali
Puoi configurare l'autenticazione utente gestita di Anthos Service Mesh per l'autenticazione dell'utente finale basata su browser e il controllo dell'controllo dell'accesso ai carichi di lavoro di cui hai eseguito il deployment. Per ulteriori informazioni, consulta Configurazione dell'autenticazione utente di Anthos Service Mesh.
Configura la versione TLS minima per i tuoi carichi di lavoro
Puoi utilizzare il campo minProtocolVersion
per specificare la versione TLS minima per le connessioni TLS tra i carichi di lavoro. Per ulteriori informazioni sull'impostazione della versione TLS minima e sul controllo della configurazione TLS dei carichi di lavoro, consulta Configurazione della versione TLS minima dei carichi di lavoro Istio.
Nell'esempio seguente, ConfigMap
imposta la versione TLS minima per i carichi di lavoro a 1.3:
apiVersion: v1
kind: ConfigMap
metadata:
name: istio-release-channel
namespace: istio-system
data:
mesh: |-
meshMTLS:
minProtocolVersion: TLSV1_3