GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak nainstalovat Kubernetes Cert-Manager a nakonfigurovat Let’s Encrypt

Cert-Manager automatizuje poskytování certifikátů v clusterech Kubernetes. Poskytuje sadu vlastních zdrojů pro vydávání certifikátů a jejich připojení ke službám.

Jedním z nejčastějších případů použití je zabezpečení webových aplikací a API pomocí SSL certifikátů od Let’s Encrypt. Zde je návod, jak přidat Cert-Manager do svého clusteru, nastavit vydavatele certifikátu Let's Encrypt a získat certifikát pro Pody vystavené prostřednictvím Ingress.

Instalace Cert-Manager

Cert-Manager se nejsnáze instaluje pomocí Helm. Helm je správce balíčků Kubernetes, který vám umožňuje přidávat aplikace do vašeho clusteru pomocí úložišť předem sestavených grafů. Ujistěte se, že máte Helm nainstalovaný a nastavený s připojením ke clusteru Kubernetes.

Začněte přidáním úložiště Jetstack do vaší instalace Helm. Jetstack původně vyvinul Cert-Manager, než byl darován CNCF.

helm repo add jetstack https://charts.jetstack.io
helm repo update

Nyní nainstalujte Cert-Manager do svého clusteru:

helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version v1.5.3 --set installCRDs=true

Nahraďte výše uvedené číslo verze nejnovější verzí uvedenou v dokumentaci Cert-Manager.

Příkaz nainstaluje Cert-Manager do nového jmenného prostoru Kubernetes s názvem cert-manager . installCRDs nastavení přidá během instalace vlastní zdroje Kubernetes Cert-Manager. Toto funguje pouze s Helmem verze 3.2 a novějším – pokud používáte starší verzi, musíte ručně přidat definice zdrojů pomocí Kubectl:

kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.crds.yaml

Přidání pluginu Kubectl

Cert-Manager má zásuvný modul Kubectl, který zjednodušuje některé běžné úkoly správy. Umožňuje vám také zkontrolovat, zda je Cert-Manager spuštěn a připraven obsluhovat požadavky.

Nainstalujte plugin stažením jeho archivu a jeho rozbalením do správného adresáře:

curl -L -o kubectl-cert-manager.tar.gz https://github.com/jetstack/cert-manager/releases/latest/download/kubectl-cert_manager-linux-amd64.tar.gz
tar xzf kubectl-cert-manager.tar.gz
sudo mv kubectl-cert_manager /usr/local/bin

Nyní pomocí pluginu zkontrolujte, zda vaše instalace Cert-Manageru funguje:

kubectl cert-manager check api

Měli byste vidět následující výstup:

The cert-manager API is ready

Nyní jste připraveni přidat vydavatele, abyste získali certifikáty od Let’s Encrypt.

Vytvoření vydavatele certifikátu

Vydavatelé a vydavatelé clusteru jsou prostředky, které dodávají certifikáty vašemu clusteru. Dosud vytvořená základní instalace Cert-Manageru není schopna vydávat certifikáty. Přidání vydavatele, který je nakonfigurován pro používání Let's Encrypt, vám umožní dynamicky získávat nové certifikáty pro služby ve vašem clusteru.

Vytvořte soubor YAML ve svém pracovním adresáři a pojmenujte jej issuer.yml . Přidejte následující obsah:

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-staging
spec:
  acme:
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    email: [email protected]
    privateKeySecretRef:
      name: letsencrypt-staging
    solvers:
      - http01:
          ingress:
            class: nginx

E-mailovou adresu musíte nahradit svým vlastním kontaktním e-mailem. To bude součástí vašich certifikátů. Let’s Encrypt vám také může poslat e-mail na adresu, pokud vám bude chtít zasílat upozornění na vaše certifikáty.

Vytváříme ClusterIssuer protože jsou dostupné všem zdrojům ve vašem clusteru, bez ohledu na jmenný prostor. Standardní Issuer je zdroj se jmenným prostorem, který může dodávat certifikáty pouze v rámci vlastního jmenného prostoru.

Naše konfigurace vydavatele dává pokyn Cert-Manager získat certifikáty z přípravného serveru Let's Encrypt. Při nastavování integrace je dobré používat pracovní prostředí, abyste se vyhnuli narážce na přísné limity produkční rychlosti Let’s Encrypt.

Použijte kubectl pro přidání vydavatele do vašeho clusteru:

kubectl create -f issuer.yml

Získání certifikátu

Nyní můžete použít svého vydavatele k získání certifikátu pro službu vystavenou prostřednictvím zdroje Ingress. Cert-Manager automaticky monitoruje zdroje Ingress a vytváří certifikáty pomocí konfigurace v jejich tls pole. Stačí přidat anotaci s názvem vydavatele nebo vydavatele clusteru, kterého chcete použít.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: wordpress:latest
          ports:
            - containerPort: 80
 
---

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
    port: 80
 
---

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: letsencrypt-staging
spec:
  rules:
    - host: example.com
      http:
        paths:
          - path: /
            backend:
              serviceName: my-service
              servicePort: 80
  tls:
    - hosts:
      - example.com

Tento soubor YAML definuje pod, službu a vstup odhalující službu. Předpokládá použití nginx-ingress jako Ingress controller. Pod běží WordPress kontejner, který bude přístupný přes HTTPS na example.com .

Přítomnost cert-manager.io/cluster-issuer anotaci ve zdroji Ingress zjistí Cert-Manager. Použije letsencrypt-staging vydavatel clusteru vytvořený dříve za účelem získání certifikátu pokrývajícího názvy hostitelů definované v tls.hosts Ingress pole.

Použití Let’s Encrypt v produkci

Jakmile úspěšně získáte zkušební certifikát, můžete migrovat na produkční servery Let's Encrypt. Stagingové certifikáty jsou platné, ale prohlížeče jim nedůvěřují, takže před uvedením webu do provozu musíte získat produkční náhradu.

Nejlepší je přidat samostatného vydavatele clusteru pro produkční server. Poté můžete uvést příslušného vydavatele v každém ze svých zdrojů Ingress v závislosti na tom, zda jsou připraveny k produkci.

Zkopírujte výše uvedenou konfiguraci vydavatele a změňte name pole do letsencrypt-production . Dále nahraďte adresu URL serveru níže uvedenou hodnotou:

https://acme-v02.api.letsencrypt.org/directory

Vytvořte nového vydavatele ve svém clusteru:

kubectl create -f issuer-production.yml

Aktualizujte svůj zdroj Ingress, abyste mohli požádat o produkční certifikát, změnou hodnoty cert-manager.io/cluster-issuer anotace k letsencrypt-production (nebo jméno, které jste přiřadili svému vlastnímu produkčnímu vydavateli). Použijte kubectl aplikujte změnu:

kubectl apply -f my-ingress.yaml

Nyní byste měli mít pro svůj prostředek Ingress povoleno plně funkční HTTPS. Cert-Manager bude automaticky spravovat vaše certifikáty a obnovovat je před vypršením platnosti.

Upgrade Cert-Manager

Verze Cert-Manager obvykle podporují upgrady na místě pomocí Helm:

helm repo update
helm upgrade --version <new version> cert-manager jetstack/cert-manager

Certifikáty zůstávají dostupné během upgradů, ale proces obnovy bude zastaven.

I když jsou upgrady nyní běžně jednoduché, měli byste si vždy prohlédnout poznámky k verzi, abyste zjistili potenciální změny, které je třeba provést. To je zvláště důležité, pokud upgradujete Kubernetes nebo procházíte několika verzemi Cert-Manager. Pokud stále používáte starší verzi Kubernetes, možná používáte zastaralou verzi Cert-Manager, která vyžaduje značný ruční zásah, aby byla aktualizována.

Přehled

Let’s Encrypt lze snadno přidat do clusteru Kubernetes pomocí Cert-Manager. Musíte si nainstalovat Cert-Manager s Helm, vytvořit vydavatele, který používá rozhraní Let’s Encrypt API, a poté tohoto vydavatele uvést ve svých zdrojích Ingress.

Cert-Manager můžete dodat s vlastní konfigurací pro pokročilejší případy použití. Můžete zadat dobu platnosti certifikátu (použijte cert-manager.io/duration anotace Ingress), ručně deklarujte běžný název certifikátu (cert-manager.io/common-name ) a místo HTTP použijte výzvy DNS. Druhá možnost může být užitečná ve specifických situacích, například když chcete získat certifikát se zástupnými znaky.

Přímé použití k ochraně webových aplikací a rozhraní API by mělo fungovat tak, jak je, s využitím prostředků uvedených výše. Ověření HTTP funguje tak, že manipuluje s kontrolérem Ingress tak, aby poskytl dočasné .well-known URL, ke které má Let's Encrypt přístup. Pokud vaše doména poskytuje na této adrese URL správnou hodnotu, Let’s Encrypt svěří, že to máte pod kontrolou, a vydá certifikát.


Docker
  1. Jak nainstalovat a nakonfigurovat Ansible na Windows

  2. Jak nainstalovat a nakonfigurovat Monit.

  3. Jak nainstalovat a nakonfigurovat Monit.

  1. Jak nainstalovat a nakonfigurovat Nginx na CentOS 7

  2. Jak nainstalovat a nakonfigurovat Redis na Ubuntu 18.04

  3. Jak nainstalovat a nakonfigurovat Redmine na Ubuntu 18.04

  1. Jak nainstalovat a nakonfigurovat Sambu na Ubuntu 18.04

  2. Jak nainstalovat a nakonfigurovat Redis na Ubuntu 20.04

  3. Jak nainstalovat a nakonfigurovat Redis na CentOS 7