Configuração de certificados HTTPS para ingresses do Nginx
Os certificados HTTPS podem ser configurados para ingress para fornecer serviços de segurança.
- Use o kubectl para se conectar ao cluster. Para mais detalhes, consulte Conexão a um cluster usando o kubectl.
- Ingress oferece suporte a dois tipos de chave do TLS: kubernetes.io/tls e IngressTLS. IngressTLS é usado como exemplo. Para mais detalhes, consulte Criação de um segredo. Para obter detalhes sobre exemplos do segredo kubernetes.io/tls e sua descrição, consulte Segredos do TLS.
Execute o seguinte comando para criar um arquivo YAML chamado ingress-test-secret.yaml (o nome do arquivo pode ser personalizado):
vi ingress-test-secret.yaml
O arquivo YAML é configurado da seguinte forma:apiVersion: v1 data: tls.crt: LS0******tLS0tCg== tls.key: LS0tL******0tLS0K kind: Secret metadata: annotations: description: test for ingressTLS secrets name: ingress-test-secret namespace: default type: IngressTLS
Nas informações anteriores, tls.crt e tls.key são apenas exemplos. Substitua-os pelos arquivos reais. Os valores de tls.crt e tls.key são codificados em Base64.
- Crie um segredo.
kubectl create -f ingress-test-secret.yaml
Se forem exibidas informações semelhantes às seguintes, o segredo foi criado.
secret/ingress-test-secret created
Visualize o segredo criado.
kubectl get secrets
Se forem exibidas informações semelhantes às seguintes, o segredo foi criado.
NAME TYPE DATA AGE ingress-test-secret IngressTLS 2 13s
- Crie um arquivo YAML chamado ingress-test.yaml. O nome do arquivo pode ser personalizado.
vi ingress-test.yaml
Para clusters da v1.23 ou posterior:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-test namespace: default spec: tls: - hosts: - foo.bar.com secretName: ingress-test-secret # Replace it with your TLS key certificate. rules: - host: foo.bar.com http: paths: - path: / backend: service: name: <your_service_name> # Replace it with the name of your target Service. port: number: <your_service_port> # Replace it with the port number of your target Service. property: ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH pathType: ImplementationSpecific ingressClassName: nginx
Para clusters da v1.21 ou anterior:apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: ingress-test annotations: kubernetes.io/ingress.class: nginx spec: tls: - hosts: - foo.bar.com secretName: ingress-test-secret # Replace it with your TLS key certificate. rules: - host: foo.bar.com http: paths: - path: '/' backend: serviceName: <your_service_name> # Replace it with the name of your target Service. servicePort: <your_service_port> # Replace 8080 with the port number of your target Service. ingressClassName: nginx
- Crie um ingress.
kubectl create -f ingress-test.yaml
Se forem exibidas informações semelhantes às seguintes, o ingress foi criado.
ingress/ingress-test created
Visualize o ingress criado.
kubectl get ingress
Se informações semelhantes às seguintes forem exibidas, o ingress foi criado e a carga de trabalho está acessível.
NAME HOSTS ADDRESS PORTS AGE ingress-test * 121.**.**.** 80 10s
- Digite https://121.**.**.**:443 na caixa de endereço do navegador para acessar a carga de trabalho (por exemplo, carga de trabalho do Nginx).
121.**.**.** indica o endereço IP do balanceador de carga unificado.