As vezes precisamos de ferramentas não disponíveis em uma imagem pre-construída, como o comando openssl. Nesse artigo vou mostrar rapidamente como construir uma imagem com openssl para gerar um certificado de dominio rodando em nossa plataforma Kubernetes/OpenShift
Primeiro vamos criar uma imagem com o pacote openssl
instalado. Crie o arquivo Dockerfile
em qualquer local e faça build da imagem:
FROM openshift/base-centos7
USER root
RUN yum install -y openssl && yum clean all
USER 1001
Agora vamos gerar a imagem e enviar para o Docker hub.
Note que é necessário estar logado na sua conta do docker hub. Caso não possua uma, crie em https://hub.docker.com/
Troque o nome da conta para o seu username — o meu é "caruccio":
$ sudo docker build -t caruccio/openssl .
$ sudo docker push caruccio/openssl
Agora só precisamos criar um Pod a partir dessa imagem. Para isso vamos usar o comando "oc run" e criar um Pod temporário a partir do novo container :
Se você não tem uma conta na Getup, faça a sua gratuitamente em https://getupcloud.com/pt-br/signup/ e configure seu cliente de linha de comando "oc" em https://ajuda.getupcloud.com/hc/pt-br/articles/221403968
$ oc run openssl --image=caruccio/openssl --stdin --tty --restart=Never --rm -- /bin/bash
Esse comando nos joga dentro do container, executando um shell bash onde podemos gerar nosso certificado!
bash-4.2$ cd /tmp
bash-4.2$ openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr
### Responda as perguntas...
bash-4.2$ ls -la yourdomain.*
-rw-r--r--. 1 1003910000 root 1110 Jan 23 17:24 yourdomain.csr
-rw-r--r--. 1 1003910000 root 1704 Jan 23 17:24 yourdomain.key
### Para ver os arquivos:
bash-4.2$ cat yourdomain.csr
bash-4.2$ cat yourdomain.key
Para sair do container basta executar exit
. Isso vai deletar o Pod automaticamente:
bash-4.2$ exit
exit
pod "openssl" deleted
$
Feito! Agora é só submeter o CSR para sua certificadora.