Come configurare Negare il servizio IP esterni in Kubernetes

Come configurare Negare il servizio IP esterni in Kubernetes

È possibile riscontrare un problema durante l'impostazione di un cluster Kubernetes quando sai come utilizzare NodePort per rendere accessibile il tuo servizio Kubernetes su Internet. Quando si utilizza il tipo di servizio NodePort, verrà assegnato un numero di porta elevato ed è necessario consentire connessioni a tali porte nella regola del firewall. È dannoso per la tua infrastruttura, in particolare se il server è accessibile tramite Internet aperto. È possibile assegnare un blocco di indirizzi IP al di fuori del cluster come amministratore di cluster che può trasmettere il traffico ai servizi lì. Questo è esattamente ciò di cui parleremo in questo articolo: trovare tutte le informazioni critiche su come configurare Negare IP esterni al servizio in Kubernetes.

Cos'è il servizio IP esterno?

Uno degli endpoint di servizio riceverà il traffico che entra nel cluster utilizzando l'IP esterno (come IP di destinazione) e la porta di servizio. Kubernetes non è responsabile della gestione dell'IP esterna.

Accertarsi che quale IP sia utilizzato per accedere al cluster Kubernetes è fondamentale in questa situazione. Utilizzando il tipo di servizio IP esterno, possiamo vincolare il servizio all'indirizzo IP utilizzato per accedere al cluster.

Il fatto che la rete Kubernetes interagisca con la rete di overlay è importante per comprendere questa situazione. Ciò implica che è possibile accedere praticamente ogni nodo nel cluster una volta raggiunto uno qualsiasi dei nodi (nodo master o lavoratore).

La rete è mostrata in questo modo:


Entrambi i nodi 1 e 2 nel diagramma condividono un singolo indirizzo IP. Il vero pod vive sul nodo 1 ma l'indirizzo IP 1.2.3.6 è associato al servizio NGINX sul nodo 1. Indirizzo IP del nodo 1, 1.2.3.4, è associato al servizio HTTPD e il pod effettivo del nodo 2 si trova lì.

Ciò è reso possibile dalle basi della rete di overlay. Quando arricciamo l'indirizzo IP 1.2.3.4, il servizio HTTPD dovrebbe rispondere; Quando arricciamo 1.2.3.5, il servizio Nginx dovrebbe rispondere.

Vantaggioso e svantaggi dell'IP esterno

Ecco i vantaggi e gli svantaggi dell'IP esterno:

È vantaggioso utilizzare IP esterno perché:

    • Il tuo IP è completamente sotto il tuo controllo. Invece di utilizzare l'ASN del provider cloud, potresti utilizzare IP che appartiene al tuo ASN.

Gli svantaggi dell'IP esterna includono quanto segue:

    • La configurazione semplice che passeremo in questo momento non è molto prontamente disponibile. Ciò implica che se il nodo fallisce, il servizio non sarà più accessibile e dovrai risolvere manualmente il problema.
    • Per gestire gli IP, è richiesto un notevole lavoro umano. Poiché gli IP non sono allocati dinamicamente per te, devi farlo manualmente.

Ciò che è predefinito negare/consentire il comportamento?

IL "Predefinito consenti"indica che tutto il traffico è consentito per impostazione predefinita. Se non specificamente consentito, tutto il traffico viene rifiutato per impostazione predefinita quando si utilizza il termine "Nega predefinita."Tranne quando viene specificata una politica di rete.

    • Tutto il traffico da e per un pod è consentito se non sono in vigore politiche di rete per quel pod.
    • Se una o più politiche di rete sono in vigore per un baccello di ingresso di tipo, è consentito solo il traffico di ingresso consentito esplicitamente.
    • Quando una o più politiche di rete si applicano a un baccello di uscita di tipo, è consentito solo il traffico di uscita consentito da tali politiche.

L'impostazione predefinita per altri tipi di endpoint (VMS, interfacce host) è bloccare il traffico. È consentito solo il traffico consentito specificamente dalla politica di rete, anche se non si applicano politiche di rete all'endpoint.

Best practice: implicita default Negare la politica

È necessario configurare una politica di negazione predefinita implicita creata per i pod Kubernetes. Ciò si assicura che il traffico indesiderato venga automaticamente bloccato. Ricorda che implicito default nega che le politiche entrano sempre in vigore per ultimo; Se altre politiche consentono il traffico, la negazione non si applica. La negazione è implementata solo dopo che tutte le altre politiche sono state considerate.

Come creare una politica negativa predefinita per i pod Kubernetes?

Consigliamo di utilizzare la politica di rete globale anche se una delle seguenti regole può essere utilizzata per costruire una politica negativa per i pod di Kubernetes. Una politica di rete globale viene applicata a tutti i carichi di lavoro (VM e contenitori) in tutti i nomi e host. Una politica di rete globale incoraggia un approccio cauto alla sicurezza durante la difesa delle risorse.

    • Abilita il default per negare la politica di rete globale, non spaziata
    • Abilita il valore predefinito per negare la politica di rete, spaziata
    • Abilita il valore predefinito per negare la politica di Kubernetes, spaziata

Cos'è il blocco IP?

Con questo, si scelgono specifici intervalli CIDR per essere autorizzati come fonti di ingresso o destinazioni di uscita. Dato che i POD IP sono transitori e imprevedibili, questi dovrebbero essere IPS esterni a cluster.

L'IP di origine o di destinazione dei pacchetti deve essere spesso riscritta quando si utilizzano l'ingresso del cluster e i metodi di uscita. A seconda del particolare plug -in di rete (fornitore di servizi cloud, implementazione del servizio, ecc.) che viene utilizzato, il comportamento può cambiare.

Questo è vero per l'ingresso e significa che in alcuni casi è necessario filtrare i pacchetti in arrivo basati sull'IP di origine effettiva. D'altra parte, l '"IP di origine" su cui funziona NetworkPolicy può essere l'IP di un carico o persino il nodo del pod, ecc.

Ciò dimostra che le connessioni tra pod e IP di servizio riscritti a IP esterni a cluster potrebbero essere sottoposte a restrizioni basate su ipblock in termini di uscita.

Quali sono le politiche predefinite?

Tutto il traffico di ingresso e in uscita da e verso i pod in uno spazio dei nomi è, per impostazione predefinita, consentito se non ci sono controlli in atto per quello spazio dei nomi. È possibile modificare il comportamento predefinito dello spazio dei nomi utilizzando i seguenti esempi.

Default Negare tutto il traffico di ingresso

Quando si crea una politica di rete che sceglie tutti i pod ma non includa alcun traffico in arrivo a tali pod, è possibile creare una politica di isolamento dell'ingresso "predefinita" e che è per uno spazio dei nomi.


Ciò garantisce che tutti i pod, indipendentemente dal fatto che qualsiasi altra networkpolicy li scelga, siano isolati per ingredere. Questa regola non si applica all'isolamento per uscire da qualsiasi pod.

Default Negare tutto il traffico di uscita

Quando crei una networkpolicy che sceglie tutti i baccelli ma proibisce il traffico di uscita da quei pod, è possibile creare una politica di isolamento "predefinita" e che è anche per uno spazio dei nomi.

Conclusione

Questa guida riguardava l'uso di denyserviceexternalips. Abbiamo progettato anche una rappresentazione diagrammatica per far capire ai nostri utenti che funziona. Abbiamo fornito anche configurazioni di esempio.