- Published on
Certificado TLS com openssl e Secret do tipo TLS no Kubernetes
- Authors
- Name
- Natália Granato
- @granatowp
Certificado TLS com openssl e Secret do tipo TLS no Kubernetes
Utilize o openssl, projeto de código aberto dos protocolos ssl e tls para gerar o seu certificado autoassinado. Use openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout chave-privada.key -out certificado.crt
.
Para criar um Secret do tipo TLS, você pode usar o comando kubectl create secret tls meu-servico-web-tls-secret --cert=certificado.crt --key=chave-privada.key
seguido sempre pelo nome da Secret e a localização dos arquivos de certificado e chave.
Verificando os dados de uma Secret, você pode usar o comando kubectl get secret meu-servico-tls-secret -o yaml
para visualizar os dados de uma Secret.
Aqui está um exemplo do arquivo de configuração do nginx para utilizar tls:
http {
server {
listen 80;
listen 443 ssl;
ssl_certificate /etc/nginx/tls/certificado.crt;
ssl_certificate_key /etc/nginx/tls/chave-privada.key;
location / {
return 200 'Hello, World!';
add_header Content-Type text/plain;
}
}
}
Criando um ConfigMap para adicionar um arquivo no Pod e configurar o SSL no Nginx
Para criar um ConfigMap para adicionar um arquivo no Pod e configurar o SSL no Nginx, você pode usar o comando kubectl create configmap nginx-config --from-file=nginx.conf
seguido pelo nome do ConfigMap e o arquivo a ser incluído.
apiVersion: v1
kind: Pod
metadata:
name: gita-pod
labels:
app: gita-pod
spec:
containers:
- name: gita-container
image: nginx:1.26
ports:
- containerPort: 80
- containerPort: 443
volumeMounts:
- name: meu-volume
mountPath: /etc/nginx/nginx.conf
subPath: nginx.conf
- name: nginx-tls
mountPath: /etc/nginx/tls
volumes:
- name: nginx-config-volume
configMap:
name: nginx-config
- name: nginx-tls
secret:
secretName: meu-servico-tls-secret
items:
- key: certificado.crt
path: certificado.crt
- key: chave-privada.key
path: chave-privada.key
Recapirulando, aprendemos o que são as Secrets do Kubernetes, os tipos de Secrets e o que é a codificação base64, como criar uma Secret do tipo Opaque, como utilizar o nosso Secret como variável de ambiente dentro do Pod, como criar uma Secret para autenticação no Docker Hub, como criar um Secret do tipo TLS e como criar um ConfigMap para adicionar um arquivo no Pod e configurar o SSL no Nginx.
Para realizar o passo a passo:
Crie o seu certificado TLS:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout chave-privada.key -out certificado.crt
.Crie a secret do tipo TLS com o comando
kubectl create secret tls meu-servico-tls-secret --cert=certificado.crt --key=chave-privada.key
.Crie o ConfigMap com o comando
kubectl create configmap nginx-config --from-file=nginx.conf
.Crie o Pod com o comando
kubectl apply -f nginx-pod.yml
.Crie um service para expor o Pod criado com o comando
kubectl expose pod nginx
. Liste o service comkubectl get svc
.Faça o port-forward do service para acessar o Nginx com o comando
kubectl port-forward service/nginx 4443:443
.
Para testar o Nginx, acesse o endereço https://localhost:4443
ou https://127.0.0.1:4443
e você verá a mensagem Bem-vindo ao Nginx!
.
Você também pode utilizar o curl -k https://localhost:4443
e verá a seguinte mensagem:
Bem-vindo ao Nginx!