He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

Tuhipoka. whakamaori.: Ko te kaituhi o te tuhinga, ko Reuven Harrison, kua neke atu i te 20 nga tau o te wheako i roto i te whakawhanaketanga rorohiko, a, i tenei ra ko te CTO me te kaitautoko o Tufin, he kamupene e hanga ana i nga otinga whakahaere kaupapa here haumaru. Ahakoa e whakaaro ana ia ko nga kaupapa here whatunga Kubernetes he taputapu tino kaha mo te wehewehenga whatunga i roto i te roopu, e whakapono ana ia ehara i te mea ngawari ki te whakatinana i roto i nga mahi. Ko tenei rauemi (he tino nui) he mea hei whakapai ake i te mohiotanga o nga tohunga mo tenei take me te awhina i a raatau ki te hanga i nga whirihoranga e tika ana.

I tenei ra, he maha nga kamupene kei te whiriwhiri i nga Kubernetes hei whakahaere i a raatau tono. He nui te hiahia ki tenei rorohiko e kii ana etahi ki a Kubernetes "te punaha whakahaere hou mo te pokapū raraunga." Ake, kua timata te whakaaro o Kubernetes (k8s ranei) he waahanga nui o te pakihi, me whakarite nga tikanga pakihi pakeke, tae atu ki te haumarutanga whatunga.

Mo nga tohunga mo te haumarutanga e poauau ana i te mahi tahi me Kubernetes, ko te tino whakakitenga pea ko te kaupapa here taunoa o te turanga: tukua nga mea katoa.

Ka awhina tenei aratohu ki a koe ki te mohio ki te hanganga o roto o nga kaupapa here whatunga; kia mohio he pehea te rereke mai i nga ture mo nga papangaahi auau. Ka hipokina ano e ia etahi mahanga me te tuku taunakitanga hei awhina i nga tono ki runga Kubernetes.

Kaupapa here whatunga Kubernetes

Ko te tikanga kaupapa here whatunga Kubernetes ka taea e koe te whakahaere i te taunekeneke o nga tono kua tukuna ki runga i te paparanga i te paparanga whatunga (te tuatoru i te tauira OSI). Ko nga kaupapa here whatunga kei te kore etahi o nga ahuatanga o mua o nga papangaahi hou, penei i te OSI Layer 7 te whakakaha me te kitenga riri, engari ka whakaratohia he taumata taketake o te haumarutanga whatunga he timatanga pai.

Ko nga kaupapa here whatunga e whakahaere ana i nga whakawhitinga korero i waenga i nga poti

Ka tohatohahia nga kawenga mahi i roto i nga Kubernetes puta noa i nga poro, kei roto i te kotahi, neke atu ranei nga ipu kua tohatohahia. Ka tautapahia e Kubernetes tetahi wahitau IP mo ia pene ka uru mai i etahi atu putunga. Ka whakatauhia e nga kaupapa here whatunga Kubernetes nga motika uru mo nga roopu o nga pene i runga i te huarahi e whakamahia ana e nga roopu haumaru i te kapua ki te whakahaere uru ki nga tauira miihini mariko.

Te tautuhi i nga kaupapa here whatunga

Pērā i ētahi atu rauemi Kubernetes, kua tohua ngā kaupapa here whatunga ki YAML. I roto i te tauira i raro nei, te tono balance uru ki postgres:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: balance
  policyTypes:
  - Ingress

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

(Tuhipoka. whakamaori.: Ko tenei whakaahua, penei i nga mea katoa o muri mai, i hangaia kaore i te whakamahi i nga taputapu Kubernetes taketake, engari ma te whakamahi i te taputapu Tufin Orca, i whakawhanakehia e te kamupene o te kaituhi o te tuhinga taketake me te korero i te mutunga o te rauemi.)

Hei tautuhi i to ake kaupapa here whatunga, me mohio koe mo te YAML. I ahu mai tenei reo i runga i te nuku (kua tohua e nga mokowhiti kaua nga ripa). No te huānga nuku tata ki runga ake. Ka timata tetahi huānga rarangi hou ki te tohuhono, kei era atu huānga te ahua uara-matua.

Kua whakaahuatia te kaupapa here i YAML, whakamahia kubectlhei hanga i roto i te tautau:

kubectl create -f policy.yaml

Whakatakotoranga Kaupapahere Whatunga

E wha nga huānga kei roto i te whakaritenga kaupapa here whatunga Kubernetes:

  1. podSelector: ka tautuhi i nga pene e pa ana ki tenei kaupapa here (nga whaainga) - e hiahiatia ana;
  2. policyTypes: e tohu ana he aha nga momo kaupapa here kei roto i tenei: te urunga me/ranei te putanga - he mea whiriwhiri, engari ka tūtohu ahau kia tino whakamaarama i roto i nga keehi katoa;
  3. ingress: tautuhi whakaaetia hou te waka ki nga poti whainga - ka taea;
  4. egress: tautuhi whakaaetia putaatu Ko nga hokohoko mai i nga putea kua tohua he mea whiriwhiri.

He tauira i tangohia mai i te paetukutuku Kubernetes (I whakakapi ahau role i runga i app), e whakaatu ana me pehea te whakamahi i nga huānga e wha:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:    # <<<
    matchLabels:
      app: db
  policyTypes:    # <<<
  - Ingress
  - Egress
  ingress:        # <<<
  - from:
    - ipBlock:
        cidr: 172.17.0.0/16
        except:
        - 172.17.1.0/24
    - namespaceSelector:
        matchLabels:
          project: myproject
    - podSelector:
        matchLabels:
          role: frontend
    ports:
    - protocol: TCP
      port: 6379
  egress:         # <<<
  - to:
    - ipBlock:
        cidr: 10.0.0.0/24
    ports:
    - protocol: TCP
      port: 5978

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga
He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

Kia mahara ko nga huānga e wha kaore e tika kia whakauruhia. He mea whakahau noa podSelector, ka taea te whakamahi etahi atu tawhā ki te hiahia.

Mena ka waiho e koe policyTypes, ka whakamaoritia te kaupapa here e whai ake nei:

  • Ma te taunoa, ka whakaarohia ko te tautuhi i te taha whakauru. Ki te kore te kaupapa here e tino whakaatu i tenei, ka kii te punaha kua rahuitia nga waka katoa.
  • Ko te whanonga i te taha puta ka whakatauhia e te noho, te kore ranei o te tawhā puta.

Hei karo i nga hapa ka tūtohu ahau kia marama tonu policyTypes.

E ai ki te arorau i runga ake, ki te nga tawhā ingress me / ranei egress ka mahue, ka whakakorehia e te kaupapa here nga waka katoa (tirohia te "Ture Tiaki" i raro nei).

Ko te kaupapa here taunoa he Whakaae

Mena kaore he kaupapa here e tautuhia ana, ka whakaaetia e Kubernetes nga hokohoko katoa ma te taunoa. Ka taea e nga pene katoa te whakawhiti korero ki a raatau ano. He ahua kee pea tenei mai i te tirohanga haumarutanga, engari kia mahara ko Kubernetes i hangaia i te tuatahi e nga kaiwhakawhanake kia taea ai te honohono tono. I taapirihia nga kaupapa here whatunga i muri mai.

Mokowāingoa

Ko nga mokowā ingoa te tikanga mahi tahi a Kubernetes. I hangaia hei wehe i nga taiao arorau mai i a raatau ano, i te wa e whakaaetia ana te whakawhitinga korero i waenga i nga waahi.

Pērā i te nuinga o ngā wāhanga Kubernetes, ka noho ngā kaupapa here whatunga ki tētahi mokowāingoa motuhake. I roto i te poraka metadata Ka taea e koe te tohu ko tehea waahi te kaupapa here:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: my-namespace  # <<<
spec:
...

Ki te kore te mokowāingoa i āta tohua ki te metadata, ka whakamahia e te punaha te mokowāingoa kua tohua ki te kubectl (ma te taunoa. namespace=default):

kubectl apply -n my-namespace -f namespace.yaml

Ka tūtohu ahau whakawhāitihia te mokowāingoa, ki te kore koe e tuhi kaupapa here e aro ana ki nga waahi ingoa maha i te wa kotahi.

Main huānga podSelector i roto i te kaupapa here ka kowhiria nga pokano mai i te mokowāingoa kei a ia te kaupapa here (karehia te uru ki nga poti mai i tetahi atu mokowāingoa).

Waihoki, podSelectors i roto i nga poraka urunga me nga putanga ka taea anake te kowhiri i nga putunga mai i o raatau ake mokowāingoa, mena ka whakakotahihia e koe namespaceSelector (Ka korerohia tenei i roto i te waahanga "Tatarihia ma nga ingoa mokowā me nga pene").

Nga Ture Whakaingoa Kaupapahere

He ahurei nga ingoa kaupapa here i roto i te mokowāingoa kotahi. Kaore e taea te rua nga kaupapa here me te ingoa kotahi i roto i te waahi kotahi, engari ka taea nga kaupapa here me te ingoa kotahi ki nga waahi rereke. He pai tenei ina hiahia koe ki te tono ano i te kaupapa here kotahi puta noa i nga waahi maha.

He pai ki ahau tetahi o nga tikanga whakaingoa. Kei roto ko te whakakotahi i te ingoa mokowāingo me ngā pākākano i whäia. Hei tauira:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres  # <<<
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: admin
  policyTypes:
  - Ingress

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

Tapanga

Ka taea e koe te taapiri i nga tapanga ritenga ki nga taonga Kubernetes, penei i nga pene me nga waahi ingoa. Tapanga (tapanga - tags) he rite ki nga tohu kei te kapua. Ka whakamahi nga kaupapa here whatunga Kubernetes i nga tapanga hei whiriwhiri nga potie tono ana ratou:

podSelector:
  matchLabels:
    role: db

… ranei mokowā ingoae tono ana ratou. Ko tenei tauira ka kowhiri i nga pene katoa i roto i nga mokowāingoa me nga tapanga e rite ana:

namespaceSelector:
  matchLabels:
    project: myproject

Kotahi te whakatupato: i te wa e whakamahi ana namespaceSelector kia mohio kei roto i nga mokowā ingoa ka tohua e koe te tapanga tika. Kia mohio ko nga mokowā ingoa hanga-mai penei i default и kube-system, ma te taunoa kaore he tapanga.

Ka taea e koe te taapiri i tetahi tapanga ki tetahi waahi penei:

kubectl label namespace default namespace=default

I te wa ano, ingoa mokowā i te waahanga metadata me titiro ki te ingoa mokowā tūturu, kaua ki te tapanga:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default   # <<<
spec:
...

Te puna me te haerenga

Ko nga kaupapa here paahi ahi he ture me nga puna me nga waahi. Kua tautuhia nga kaupapa here whatunga Kubernetes mo tetahi whaainga - he huinga poti ka tono - katahi ka whakatauhia nga ture mo te urunga mai me te haerenga ki waho. I roto i ta maatau tauira, ko te whainga o te kaupapa here ko nga pene katoa kei te waahi ingoa default me te tapanga me te matua app me te tikanga db:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: db   # <<<
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - ipBlock:
        cidr: 172.17.0.0/16
        except:
        - 172.17.1.0/24
    - namespaceSelector:
        matchLabels:
          project: myproject
    - podSelector:
        matchLabels:
          role: frontend
    ports:
    - protocol: TCP
      port: 6379
  egress:
  - to:
    - ipBlock:
        cidr: 10.0.0.0/24
    ports:
    - protocol: TCP
      port: 5978

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga
He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

Wāhanga ingress i roto i tenei kaupapa here, ka whakatuwhera i nga waka taumai ki nga putunga kua tohua. I etahi atu kupu, ko te urunga te puna me te whaainga ko te whainga. Waihoki, ko te putanga ko te haerenga, ko te whainga ko tona puna.

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

He rite tenei ki nga ture paahi e rua: Ingress → Target; Whāinga → Putanga.

Putanga me te DNS (he mea nui!)

Ma te whakaiti i nga waka puta, aro nui ki te DNS - Ka whakamahia e Kubernetes tenei ratonga ki te mahere ratonga ki nga wahitau IP. Hei tauira, karekau te kaupapa here e whai ake nei na te mea kaore koe i whakaae ki te tono balance uru DNS:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: postgres
  policyTypes:
  - Egress

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

Ka taea e koe te whakatika ma te whakatuwhera i te uru ki te ratonga DNS:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: postgres
  - to:               # <<<
    ports:            # <<<
    - protocol: UDP   # <<<
      port: 53        # <<<
  policyTypes:
  - Egress

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

Huānga whakamutunga to he putua, na reira ka kowhiri autaki nga pene katoa i nga waahi ingoa katoa, tuku balance tukuna nga patai DNS ki te ratonga Kubernetes e tika ana (e rere ana i te waahi kube-system).

Ka whai hua tenei huarahi, ahakoa te tino whakaae me te noho haumaru, no te mea ka taea e ia nga patai DNS kia tukuna ki waho o te tautau.

Ka taea e koe te whakapai ake i roto i nga taahiraa e toru.

1. Tukua nga uiui DNS anake i roto kahui ma te taapiri namespaceSelector:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: postgres
  - to:
    - namespaceSelector: {} # <<<
    ports:
    - protocol: UDP
      port: 53
  policyTypes:
  - Egress

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

2. Whakaaetia nga patai DNS i roto i te mokowāingoa anake kube-system.

Hei mahi i tenei me taapiri he tapanga ki te mokowāingoa kube-system: kubectl label namespace kube-system namespace=kube-system - ka tuhia ki roto i te kaupapa here ma te whakamahi namespaceSelector:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: postgres
  - to:
    - namespaceSelector:         # <<<
        matchLabels:             # <<<
          namespace: kube-system # <<<
    ports:
    - protocol: UDP
      port: 53
  policyTypes:
  - Egress

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

3. Ka taea e te hunga paranoia te haere ki mua me te whakawhāiti i nga patai DNS ki tetahi ratonga DNS motuhake i roto kube-system. Ko te waahanga "Tatari ma nga mokowā ingoa ME nga pene" ka korero ki a koe me pehea te whakatutuki i tenei.

Ko tetahi atu whiringa ko te whakatau DNS i te taumata mokowā ingoa. I tenei keehi, kaore e tika kia whakatuwherahia mo ia ratonga:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.dns
  namespace: default
spec:
  podSelector: {} # <<<
  egress:
  - to:
    - namespaceSelector: {}
    ports:
    - protocol: UDP
      port: 53
  policyTypes:
  - Egress

Putua podSelector ka kowhiri i nga putunga katoa i te mokowāingoa.

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

Whakataetae tuatahi me te raupapa ture

I roto i nga papangaahi tikanga, ka whakatauhia te mahi (Whakaaetia, Whakakahoretia ranei) i runga i te paatete e te ture tuatahi ka tutuki. I roto i nga Kubernetes, kaore he mea nui te raupapa o nga kaupapa here.

Ma te taunoa, ki te kore he kaupapa here e whakatauhia, ka whakaaetia nga whakawhitiwhiti korero i waenga i nga poti ka taea te whakawhiti korero noa. Ina timata koe ki te whakatakoto kaupapa here, ka noho mokemoke ia pene e pa ana ki tetahi o ratou i runga i te wehenga (arorau OR) o nga kaupapa here katoa i tohua. Ka noho tuwhera tonu nga putea kaore e pa ki tetahi kaupapa here.

Ka taea e koe te whakarereke i tenei whanonga ma te whakamahi i te ture tangohanga.

Ture tihorea (“Whakakahore”)

Ko nga kaupapa here paahi ahi e whakahē ana i nga waka kaore e tino whakaaetia.

Karekau he mahi whakahē i Kubernetes, heoi, ka taea te whakatutuki i tetahi paanga rite ki te kaupapa here auau (whakaae) ma te kowhiri i tetahi roopu putunga o nga puna puna (whakauru):

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Ingress

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

Ka kowhiria e tenei kaupapahere nga putunga katoa i roto i te mokowāingoa, ka waiho te whakaurunga kaore i te tautuhia, ka kore e taea e nga waka taumai katoa.

He pera ano, ka taea e koe te aukati i nga waka puta katoa mai i te mokowāingoa:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all-egress
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Egress

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

Titiro koa Ko nga kaupapa here taapiri e tuku ana i nga waka ki nga poti i roto i te mokowāingoa ka nui ake i tenei ture (he rite ki te taapiri i te ture whakaae i mua i te ture whakahē i roto i te whirihoranga pātūahi).

Whakaaetia nga mea katoa (Any-Any-Any-Allow)

Hei waihanga kaupapa here Tukua Katoa, me taapiri koe i te kaupapa here Whakakahore i runga ake me te huānga putua ingress:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-all
  namespace: default
spec:
  podSelector: {}
  ingress: # <<<
  - {}     # <<<
  policyTypes:
  - Ingress

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

Ka taea te uru mai i nga poti katoa i roto i nga mokowāingoa katoa (me nga IP katoa) ki tetahi peera kei te mokowāingoa default. Kua whakahohea tenei whanonga ma te taunoa, no reira kaore e tika kia tautuhia ano. Heoi, i etahi wa ka hiahia koe ki te whakakore i etahi whakaaetanga motuhake hei tirotiro i te raru.

Ka taea te whakawhäitihia te ture kia uru noa ki he huinga putunga motuhake (app:balance) i te mokowā ingoa default:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-all-to-balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  ingress: 
  - {}
  policyTypes:
  - Ingress

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

Ko te kaupapa here e whai ake nei ka taea e te katoa te urunga mai me nga haerenga ki waho, tae atu ki te uru ki tetahi IP kei waho o te roopu:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-all
spec:
  podSelector: {}
  ingress:
  - {}
  egress:
  - {}
  policyTypes:
  - Ingress
  - Egress

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga
He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

Te whakakotahi i nga kaupapa here maha

Ka whakakotahihia nga kaupapa here ma te whakamahi arorau OR i nga taumata e toru; Kua whakaritea nga whakaaetanga a ia pod i runga i te wehenga o nga kaupapa here katoa e pa ana ki a ia:

1. Kei nga mara from и to E toru nga momo huānga ka taea te tautuhi (ka hono katoa ma te whakamahi OR):

  • namespaceSelector — ka kowhiri i te mokowāingoa katoa;
  • podSelector - ka kowhiri i nga putunga;
  • ipBlock — ka kowhiri i tetahi kupengaroto.

I tua atu, ko te maha o nga huānga (tae noa ki nga mea rite) i roto i nga waahanga from/to ehara i te mea iti. Ko enei katoa ka whakakotahihia e te OR arorau.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: indexer
    - podSelector:
        matchLabels:
          app: admin
  podSelector:
    matchLabels:
      app: postgres
  policyTypes:
  - Ingress

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

2. Kei roto i te wahanga kaupapa here ingress he maha nga huānga from (ka honoa e te arorau OR). Waihoki, te waahanga egress he maha pea nga waahanga to (i honoa ano e te wehewehenga):

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: indexer
  - from:
    - podSelector:
        matchLabels:
          app: admin
  podSelector:
    matchLabels:
      app: postgres
  policyTypes:
  - Ingress

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

3. Ka honoa ano nga kaupapa here rereke me te OR arorau

Engari ki te whakakotahi i a raatau, kotahi te herenga tohu tonu Chris Cooney: Ka taea e Kubernetes te whakakotahi i nga kaupapa here me nga kaupapa rereke policyTypes (Ingress ranei Egress). Ko nga kaupapa here e tautuhi ana i te urunga (he putanga ranei) ka tuhirua tetahi ki tetahi.

Te hononga i waenga i nga waahi ingoa

Ma te taunoa, ka whakaaetia te tiri korero i waenga i nga mokowā ingoa. Ka taea tenei te whakarereke ma te whakamahi i te kaupapa here whakakao ka aukati i nga waka puta atu me te taumai ki roto i te mokowāingoa (tirohia te "Ture Tiaki" kei runga ake nei).

Ina kua aukatia e koe te uru ki tetahi mokowāingoa (tirohia te "Ture Tiaki" i runga ake nei), ka taea e koe te whakakore i te kaupapa here whakakore ma te tuku hononga mai i tetahi mokowāingoa motuhake ma te whakamahi namespaceSelector:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: database.postgres
  namespace: database
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - namespaceSelector: # <<<
        matchLabels:
          namespace: default
  policyTypes:
  - Ingress

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

Ko te mutunga, ko nga pene katoa kei te waahi ingoa default ka whai waahi ki nga putunga postgres i te mokowā ingoa database. Engari he aha mena ka hiahia koe ki te whakatuwhera i te uru ki postgres ko nga putunga motuhake anake i te mokowāingoa default?

Tātarihia mā ngā mokowāingoa me ngā pākākano

Ko te putanga Kubernetes 1.11 me te teitei ake ka taea e koe te whakakotahi i nga kaiwhakahaere namespaceSelector и podSelector te whakamahi arorau ME. He penei te ahua:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: database.postgres
  namespace: database
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          namespace: default
      podSelector: # <<<
        matchLabels:
          app: admin
  policyTypes:
  - Ingress

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

He aha te take i whakamaoritia ai tenei ko te AND hei utu mo te tikanga OR?

mōhio e podSelector e kore e timata ki te tohuhono. I roto i te YAML ko te tikanga tenei podSelector me te tu ki tona aroaro namespaceSelector tirohia te huānga rārangi kotahi. Na reira, ka honoa ki te arorau ME.

Te taapiri tohuhono i mua podSelector ka puta mai he huānga rarangi hou, ka honoa ki te mea o mua namespaceSelector whakamahi arorau RĀNEI.

Ki te kowhiri i nga peera me tetahi tapanga motuhake i nga waahi ingoa katoa, tomo pātea namespaceSelector:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: database.postgres
  namespace: database
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - namespaceSelector: {}
      podSelector:
        matchLabels:
          app: admin
  policyTypes:
  - Ingress

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

He maha nga tapanga e hono ana ki a I

Ko nga ture mo te papangaahi me nga mea maha (kaiwhakahaere, whatunga, roopu) ka honohia ma te whakamahi i te RĀNEI arorau. Ka mahi te ture e whai ake nei ki te taurite te puna paatete Host_1 Or Host_2:

| Source | Destination | Service | Action |
| ----------------------------------------|
| Host_1 | Subnet_A    | HTTPS   | Allow  |
| Host_2 |             |         |        |
| ----------------------------------------|

Engari, i Kubernetes nga momo tapanga kei roto podSelector ranei namespaceSelector kua honoa ki te arorau ME. Hei tauira, ko te ture e whai ake nei ka kowhiri i nga poti e rua nga tapanga, role=db И version=v2:

podSelector:
  matchLabels:
    role: db
    version: v2

He rite tonu te arorau ki nga momo kaiwhakahaere katoa: nga kaikowhiri kaupapa kaupapa here, nga kaikowhiri pod, me nga kaikowhiri mokowāingoa.

Nga kupengaroto me nga wahitau IP (IPBlocks)

Ka whakamahia e nga papaahi nga VLAN, nga wahitau IP, me nga kupenga-roto hei wehe i tetahi whatunga.

I roto i nga Kubernetes, ka tautapahia nga wahitau IP ki nga poti ka taea te huri i nga wa katoa, na reira ka whakamahia nga tapanga hei kowhiri i nga poti me nga mokowā ingoa i roto i nga kaupapa here whatunga.

Rorohiko (ipBlocks) ka whakamahia i te wa e whakahaere ana i nga hononga taumai (komoko), puta (putanga) o waho (Te Tai Tokerau-Te Tonga). Hei tauira, ka tuwhera tenei kaupapa here ki nga putunga katoa mai i te mokowāingoa default uru ki te ratonga DNS Google:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: egress-dns
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Egress
  egress:
  - to:
    - ipBlock:
        cidr: 8.8.8.8/32
    ports:
    - protocol: UDP
      port: 53

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

Ko te tikanga o te kaikowhiri pora kau i roto i tenei tauira "whiria nga peera katoa kei te mokowāingoa."

Ka taea e tenei kaupapa here te uru ki 8.8.8.8 anake; karekau te uru ki etahi atu IP. Na, ko te tikanga, kua aukatia e koe te uru ki te ratonga DNS Kubernetes o roto. Mena kei te pirangi tonu koe ki te whakatuwhera, tohuhia tenei.

te tikanga ipBlocks и podSelectors he motuhake tetahi, na te mea kaore i te whakamahia nga wahitau IP o roto o nga pene ipBlocks. Ma te tohu ngongo IP o roto, ka whakaaetia e koe nga hononga ki/mai i nga poti me enei wahitau. I roto i te mahi, kare koe e mohio ko tehea te wahitau IP hei whakamahi, na reira kaua e whakamahia ki te kowhiri i nga poti.

Hei tauira-tauira, kei roto i te kaupapa here e whai ake nei nga IP katoa, na reira ka taea e koe te uru atu ki etahi atu pods katoa:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: egress-any
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Egress
  egress:
  - to:
    - ipBlock:
        cidr: 0.0.0.0/0

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

Ka taea e koe te whakatuwhera i te urunga ki nga IP o waho anake, haunga nga wahitau IP o roto o nga pene. Hei tauira, ki te 10.16.0.0/14 te kupengaroto o to pene:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: egress-any
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Egress
  egress:
  - to:
    - ipBlock:
        cidr: 0.0.0.0/0
        except:
        - 10.16.0.0/14

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

Tauranga me nga kawa

I te nuinga o te wa ka whakarongo nga pods ki tetahi tauranga. Ko te tikanga kaore e taea e koe te tautuhi i nga tau tauranga i roto i nga kaupapa here ka waiho nga mea katoa hei taunoa. Heoi, e taunaki ana kia whakawhäitihia nga kaupapa here, na i etahi wa ka taea tonu e koe te tautuhi i nga tauranga:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: indexer
    - podSelector:
        matchLabels:
          app: admin
    ports:             # <<<
      - port: 443      # <<<
        protocol: TCP  # <<<
      - port: 80       # <<<
        protocol: TCP  # <<<
  podSelector:
    matchLabels:
      app: postgres
  policyTypes:
  - Ingress

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

Kia mahara ko te kaiwhiri ports ka pa ki nga huānga katoa o te poraka to ranei from, kei roto. Hei tautuhi i nga tauranga rereke mo nga huinga huinga rereke, wehea ingress ranei egress ki te maha o nga waahanga me to ranei from i ia rehitatanga o tauranga:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: indexer
    ports:             # <<<
     - port: 443       # <<<
       protocol: TCP   # <<<
  - from:
    - podSelector:
        matchLabels:
          app: admin
    ports:             # <<<
     - port: 80        # <<<
       protocol: TCP   # <<<
  podSelector:
    matchLabels:
      app: postgres
  policyTypes:
  - Ingress

He Kupu Whakataki ki nga Kaupapahere Whatunga Kubernetes mo nga Ngaio Haumarutanga

Mahi tauranga taunoa:

  • Mena ka waiho katoatia e koe te whakamaramatanga tauranga (ports), ko te tikanga o nga kawa katoa me nga tauranga katoa;
  • Mena ka waiho e koe te whakamaramatanga kawa (protocol), ko te tikanga tenei ko TCP;
  • Mena ka waiho e koe te whakamaramatanga tauranga (port), ko te tikanga ko nga tauranga katoa.

Mahi pai: Kaua e whakawhirinaki ki nga uara taunoa, whakapūtātia he aha e hiahia ana koe.

Kia mahara me whakamahi koe i nga tauranga pod, kaua nga tauranga ratonga (he nui ake mo tenei i te waahanga e whai ake nei).

Kua tautuhia nga kaupapa here mo nga putea, ratonga ranei?

I te nuinga o te wa, ka uru atu nga poti i Kubernetes tetahi ki tetahi ma te ratonga - he taurite uta mariko e tuku ana i nga waka ki nga poti e whakatinana ana i te ratonga. Ka whakaaro pea koe ka whakahaere nga kaupapa here whatunga ki te uru ki nga ratonga, engari ehara tenei i te keehi. Ko nga kaupapa here whatunga Kubernetes e mahi ana i runga i nga tauranga pod, ehara i nga tauranga ratonga.

Hei tauira, ki te whakarongo tetahi ratonga ki te tauranga 80, engari ka anga atu nga waka ki te tauranga 8080 o ona pokano, me tohu tika te 8080 i roto i te kaupapa here whatunga.

Ko te tikanga penei me whakaarohia he iti rawa: mena ka huri te hanganga o roto o te ratonga (nga tauranga e whakarongo ana nga pods), me whakahou nga kaupapa here whatunga.

Te huarahi hoahoanga hou ma te whakamahi i te Service Mesh (hei tauira, tirohia mo Istio i raro - tata ki te whakamaoritanga) ka taea e koe te whakatutuki i tenei raruraru.

Me rehita te Ingress me te Egress?

Ko te whakautu poto he ae, kia taea ai e te pod A te whakawhiti korero me te pod B, me whakaae ki te hanga hononga putaatu (mo tenei me whirihora e koe he kaupapa here puta), me whakaae a pod B ki tetahi hononga taumai ( mo tenei, na reira, me whai kaupapa here whakauru koe).

Heoi, i roto i te mahi, ka taea e koe te whakawhirinaki ki te kaupapa here taunoa hei tuku hononga ki tetahi, ki nga huarahi e rua ranei.

Mena etahi po-puna ka tohua e te kotahi, neke atu ranei takahi-ko nga kaitōrangapū, ko nga here e utaina ana ki runga ka whakatauhia e to ratou wehenga. I tenei keehi, me tino whakaae koe ki te hono atu ki te peera -ki te tangata whai korero. Mena karekau he poti e tohua e tetahi kaupapa here, ka whakaaetia e te taunoa tana haerenga ki waho (putanga).

Waihoki, ko te mate o te potitangata whai korero, kua tohua e te kotahi, neke atu ranei hararei-ko nga kaitōrangapū, ka whakatauhia e to ratou wehenga. I tenei keehi, me tino whakaae koe kia whiwhi waka mai i te putunga puna. Mena karekau e kowhiria he putea e tetahi kaupapa here, ka whakaaetia ma te taunoa nga waka whakaurunga katoa.

Tirohia Stateful, Stateless ranei i raro.

Rangitaki

Kaore e taea e nga kaupapa here whatunga Kubernetes te takiuru waka. He uaua tenei ki te whakatau mena kei te mahi te kaupapa here i runga i te whakaaro me te tino whakararu i te tātaritanga haumarutanga.

Te whakahaere i nga waka ki nga ratonga o waho

Ko nga kaupapa here whatunga Kubernetes e kore e whakaae ki a koe ki te tautuhi i tetahi ingoa rohe (DNS) tino tohu ki nga waahanga puta. Ko tenei meka ka puta he raruraru nui i te wa e ngana ana ki te aukati i nga waka ki nga waahi o waho kaore he wahitau IP pumau (pērā i aws.com).

Taki Kaupapahere

Ka whakatupatohia koe e nga papaahi, ka kore ranei e whakaae ki te kaupapa here he. Ka mahia ano e Kubernetes etahi manatoko. Ina whakatauhia he kaupapa here whatunga ma te kubectl, ka kii pea a Kubernetes he he ka kore e whakaae. I etahi atu keehi, ka tangohia e Kubernetes te kaupapa here ka whakakiia ki nga korero ngaro. Ka kitea ma te whakamahi i te whakahau:

kubernetes get networkpolicy <policy-name> -o yaml

Kia maumahara ko te punaha whakamana Kubernetes ehara i te mea he, ka ngaro pea etahi momo hapa.

Whakamahinga

Kaore a Kubernetes e whakatinana i nga kaupapa here whatunga ake, engari he kuaha API noa e tuku ana i te taumahatanga o te mana whakahaere ki tetahi punaha e kiia nei ko te Atanga Whatunga Ipu (CNI). Ko te whakatakoto kaupapa here i runga i te kahui Kubernetes me te kore e tautapa i te CNI e tika ana, he rite tonu ki te hanga kaupapa here i runga i te tūmau whakahaere pātūahi me te kore e whakauruhia ki runga i nga papaahi. Kei a koe te whakarite kia whai CNI tika koe, ki te take ranei mo nga papaahi Kubernetes, kei te kapua. (ka kite koe i te rarangi o nga kaiwhakarato konei — āhua. whakawhiti.), whakaahei i nga kaupapa here whatunga ka whakatau CNI mo koe.

Kia mahara ka kore a Kubernetes e whakatupato ia koe ki te whakatauhia e koe he kaupapa here whatunga me te kore he kaiawhina tika a CNI.

Stateful ranei Stateless?

Ko nga Kubernetes CNI katoa i tutaki ki ahau he ahua ahua (hei tauira, ka whakamahi a Calico i te hononga Linux). Ma tenei ka taea e te pod te whiwhi whakautu i runga i te hononga TCP i timatahia me te kore e whakaara ano. Heoi, kaore au i te mohio ki tetahi paerewa Kubernetes hei whakapumau i te ahua o te ahua.

Whakahaere Kaupapahere Haumaru Ake

Anei etahi huarahi hei whakapai ake i nga kaupapa here haumaru i Kubernetes:

  1. Ko te tauira hoahoanga Service Mesh e whakamahi ana i nga ipu tahataha ki te whakarato i nga korero waea me te whakahaere waka i te taumata ratonga. Hei tauira ka taea e tatou te tango Istio.
  2. Ko etahi o nga kaihoko CNI kua whakawhānui ake i a raatau taputapu ki tua atu i nga kaupapa here whatunga Kubernetes.
  3. Tufin Orca Ka whakarato i te tirohanga me te aunoatanga o nga kaupapa here whatunga Kubernetes.

Ko te kohinga Tufin Orca e whakahaere ana i nga kaupapa here whatunga Kubernetes (a ko te puna o nga whakaahua o runga ake nei).

mōhiohio atu

mutunga

Ko nga kaupapa here whatunga Kubernetes e tuku ana i te huinga taputapu pai mo te wehewehe i nga tautau, engari kaore i te mohio, he maha nga hianga. Na tenei uaua, e whakapono ana ahau he maha nga kaupapa here a te roopu o naianei kei te raru. Ko nga otinga pea mo tenei raru ko te whakaaunoa i nga whakamaramatanga kaupapa here, te whakamahi ranei i etahi atu taputapu wehewehe.

Ko taku tumanako ka awhina tenei aratohu ki te whakamarama i etahi patai me te whakatau i nga take ka pa ki a koe.

PS mai i te kaiwhakamaori

Pānuihia hoki i runga i ta maatau blog:

Source: will.com

Tāpiri i te kōrero