Článek přečtěte do 3 min.

Jedním z běžných dilemat, kterým čelí uživatelé Kubernetes na Oracle Container Engine for Kubernetes (OKE), je, zda vytvořit více clusterů pro různá prostředí (vývojář, testovací, produkční nebo různí zákazníci) nebo je konsolidovat v rámci jednoho clusteru OKE. I když neexistuje žádná univerzální odpověď, tento blogový příspěvek zkoumá výhody používání jmenných prostorů, řízení přístupu založeného na rolích (RBAC) a síťových zásad v rámci jednoho clusteru OKE k dosažení efektivní segregace prostředí. Zabýváme se také kritickým posouzením zátěžových balancérů sdílených mezi aplikacemi.

Aspekty pro více prostředí v jednom clusteru OKE

Pojďme se ponořit do scénáře, ve kterém chcete nasadit své vývojové (dev), testovací (testovací) a produkční (prod) prostředí a zároveň zajistit, aby byly vystaveny s odlišnými záznamy A ve vaší veřejné doméně, jako je myapp.org.

Grafika znázorňující architekturu pro nasazení OKE.

V tomto přehledu architektury z pohledu Oracle Cloud Infrastructure (OCI) má každé prostředí svůj vyhrazený nástroj pro vyrovnávání zatížení. Dev, testovací a prod nasazení používají různé služby Kubernetes, což má za následek nasazení jednoho nástroje pro vyrovnávání zatížení pro každou deklarovanou službu v OKE.

Seskupování zdrojů pomocí jmenných prostorů

Dalším problémem, který je třeba řešit, je seskupení zdrojů podle prostředí. Odpovědí jsou jmenné prostory Kubernetes. Jmenné prostory poskytují účinný způsob kategorizace a segregace různých objektů Kubernetes v rámci stejného clusteru, jako jsou moduly, služby a řadiče replikace.

gferreyr-mac:~ gferreyr$ kubectl create namespace dev 
namespace/dev created 
gferreyr-mac:~ gferreyr$ kubectl create namespace test 
namespace/test created 
gferreyr-mac:~ gferreyr$ kubectl create namespace prod 
namespace/prod created

Než přistoupíme k nasazování aplikací a jejich vystavení pomocí služeb, proberme, jak automatizovat vytváření záznamů DNS pro publikování aplikací ve vaší zóně DNS.

Zabezpečení vašich jmenných prostorů

Pokud jde o bezpečnost, zaměřme se na dva aspekty: RBAC a síťovou politiku. Zásady RBAC Kubernetes můžete použít k zabezpečení administrativního přístupu k vašim jmenným prostorům. Tyto role můžete také svázat s uživateli ve službě OCI Identity and Access Management (IAM) a umožnit tak Kubernetes přímou interakci se službami OCI. Podle našeho příkladu nasazení můžete mít roli nazvanou „administrátor“, která vytváří jmenné prostory s odpovídajícím ExternalDNS, a tři různé konfigurace vazby rolí pro udělení přístupu k jednotlivým jmenným prostorům.

Ve výchozím nastavení není komunikace mezi jmennými prostory povolena, což zvyšuje izolaci a zabezpečení. Pokud je vyžadována komunikace mezi obory názvů, můžete nakonfigurovat síťové zásady, abyste ji řídili.

DNS zóny OCI

Neponoříme se příliš hluboko do DNS, ale služba DNS společnosti OCI vám umožňuje volat do zón správy, včetně vašich veřejných domén. V tomto příspěvku jsme vytvořili veřejnou zónu s názvem myapp.org. Ke skutečnému vlastnictví domény je zapotřebí více kroků, jako je delegování zóny na registrátora, ale pro rozsah tohoto příspěvku pracujeme s tímto nastavením.

Jak můžeme nyní přidat záznamy A, které ukazují na naše různé nástroje pro vyrovnávání zatížení? Řešením je ExternalDNS. Chcete-li jej nastavit v clusteru OKE, přečtěte si téma Konfigurace ExternalDNS pro použití Oracle Cloud Infrastructure DNS . S tímto nastavením můžeme pokračovat v nasazování našich aplikací s příslušnými anotacemi pro generování DNS záznamů.

V tomto příkladu jsme nasadili tři služby s použitím následující syntaxe upravené pro obor názvů a anotace DNS:

apiVersion: v1
kind: Service
metadata:
 name: nginx
 annotations:
  external-dns.alpha.kubernetes.io/hostname: dev.myapp.org
 namespace: dev
spec:
 type: LoadBalancer
 ports:
 - port: 80
   name: http
   targetPort: 80
  selector:
   app: nginx
<<< truncated >>>

Po nasazení služeb má náš cluster Kubernetes podobu následujícího diagramu:

Grafika znázorňující pracovní postup nasazení pro ukázkový cluster Kubernetes.

gferreyr-mac:~ gferreyr$ k get svc -A | grep -e nginx -e NAMESPACE 
NAMESPACE     NAME         TYPE           CLUSTER-IP      EXTERNAL-IP       PORT(S)                  AGE 
dev           nginx        LoadBalancer   10.96.197.87    158.180.60.164    80:32195/TCP             10 m 
prod          nginx        LoadBalancer   10.96.6.15      89.168.122.8      80:31873/TCP             9 m 38 s 
test          nginx        LoadBalancer   10.96.174.231   130.162.254.126   80:32523/TCP             1 0m

Naše zóna DNS vypadá jako následující příklad:

Snímek obrazovky Zóny v konzole Oracle Cloud pro ukázkovou zónu.

Nyní máme plně nasazený cluster OKE se třemi prostředími, oddělenými jmennými prostory, a navíc ExternalDNS automaticky aktualizuje naši DNS zónu!

Zdroj: Oracle