Introdução
No Oracle Cloud Infrastructure (OCI), o serviço Kubernetes Engine (OKE) permite provisionar e escalar aplicações com alta disponibilidade, aproveitando Load Balancers integrados e recursos nativos para garantir desempenho, segurança e simplicidade operacional.
Com essa nova integração ao OCI Certificates, agora é possível gerenciar certificados SSL/TLS diretamente no frontend dos serviços do tipo LoadBalancer, trazendo mais simplicidade e segurança para suas aplicações.
Neste artigo, vamos explorar passo a passo como configurar essa funcionalidade, incluindo o uso de certificados gerenciados e rotação automática, eliminando a necessidade de atualizações manuais nos manifests.
O que mudou?
Anteriormente, o gerenciamento de certificados SSL/TLS no OKE era feito utilizando Kubernetes Secrets, onde os certificados e chaves precisavam ser armazenados e atualizados manualmente dentro do cluster. Esse modelo exigia manutenção recorrente, principalmente em cenários de renovação de certificados, além de expor maior complexidade operacional.
Com a nova funcionalidade, o OKE passa a integrar nativamente com o OCI Certificates, permitindo que os certificados sejam gerenciados diretamente na console de OCI. Isso traz melhorias importantes como rotação automática sem downtime, em que o Load Balancer passa a utilizar o novo certificado assim que ele é renovado, sem necessidade de reaplicar manifests. Além disso, há gerenciamento centralizado e maior segurança, já que as chaves privadas não ficam expostas no cluster.
Benefícios da Integração
- Elimina a necessidade de armazenar certificados em Kubernetes Secrets.
- Permite rotação automática de certificados sem reaplicação de manifests.
- Centraliza o gerenciamento de certificados no OCI Certificates.
Pré-requisitos
Para utilizar essa integração com o OCI Certificates, é necessário garantir os seguintes pontos:
Política de IAM: conceder permissão para que o cluster gerencie certificados no compartment.
Allow any-user to manage certificate-authority-family in compartment compartment-name where ALL {request.principal.type = 'cluster'}
OCID do certificado: é necessário possuir o OCID do certificado que será utilizado pelo Load Balancer. O certificado deve estar na mesma região do recurso. Caso seja necessário criar ou importar um certificado para o OCI Certificates, consulte a documentação oficial.
Estado do recurso: o certificado deve estar criado ou importado no OCI Certificates e com status Active.
Arquitetura
A arquitetura utilizada neste exemplo é composta por um Load Balancer público provisionado automaticamente pelo OKE através de um Service do tipo LoadBalancer. O listener HTTPS recebe as conexões externas e utiliza um certificado armazenado no OCI Certificates para realizar a terminação SSL/TLS.
Após a validação da conexão segura, o tráfego é encaminhado para os pods da aplicação executando nos nós do Kubernetes, distribuídos em diferentes Fault Domains para aumentar a disponibilidade da solução.

Configurando SSL/TLS com OCI Certificates no OKE
No exemplo abaixo, utilizamos uma aplicação simples para demonstrar, de forma prática, como expor um serviço no OKE com HTTPS habilitado utilizando o OCI Certificates.
Um Load Balancer da OCI pode suportar múltiplos certificados para diferentes listeners, é necessário utilizar um ConfigMap para mapear as portas dos listeners aos respectivos certificados no OCI Certificates. Ao aplicar esse ConfigMap, o Load Balancer é atualizado automaticamente.
Crie um ConfigMap no mesmo namespace do Service LoadBalancer, definindo o mapeamento onde a chave representa a porta do listener (por exemplo, 443) e o valor é um array JSON contendo o OCID do certificado.
apiVersion: v1
kind: ConfigMap
metadata:
name: lb-tls-mapping
data:
"443": "[\"ocid1.certificate.oc1.sa-saopaulo-1...\"]"
Adicione a annotation oci-load-balancer.oraclecloud.com/tls-certificate-map no manifesto do Service LoadBalancer para associá-lo ao ConfigMap criado.
Importante: as annotations tls-certificate-map e oci-load-balancer-tls-secret são mutuamente exclusivas. Caso ambas sejam definidas, o provisionamento do Load Balancer falhará com erro de configuração SSL/TLS.
O exemplo completo da configuração fica assim:
apiVersion: v1
kind: Namespace
metadata:
name: oci-ssl-demo
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: helloworld-deployment
namespace: oci-ssl-demo
spec:
replicas: 3
selector:
matchLabels:
app: helloworld
template:
metadata:
labels:
app: helloworld
spec:
containers:
- name: helloworld
image: gru.ocir.io/grfxxxxxxxxx/helloworld:latest
ports:
- containerPort: 80
imagePullSecrets:
- name: ocirsecret
---
apiVersion: v1
kind: Service
metadata:
name: helloworld-service
namespace: oci-ssl-demo
annotations:
oci.oraclecloud.com/load-balancer-type: "lb"
service.beta.kubernetes.io/oci-load-balancer-ssl-ports: "443"
oci-load-balancer.oraclecloud.com/tls-certificate-map: "lb-tls-mapping"
service.beta.kubernetes.io/oci-load-balancer-shape: "flexible"
service.beta.kubernetes.io/oci-load-balancer-shape-flex-min: "10"
service.beta.kubernetes.io/oci-load-balancer-shape-flex-max: "100"
spec:
selector:
app: helloworld
type: LoadBalancer
ports:
- name: https
port: 443
targetPort: 80
---
apiVersion: v1
kind: ConfigMap
metadata:
name: lb-tls-mapping
namespace: oci-ssl-demo
data:
"443": "[\"ocid1.certificate.oc1.sa-saopaulo-1....\"]"
Após ajustar o manifesto com o OCID do certificado e a imagem da aplicação, aplique a configuração no cluster.
kubectl apply -f helloworld-ssl.yaml
Aguarde a criação dos recursos e valide se o Service e o Load Balancer foram provisionados com sucesso.
kubectl get svc -n oci-ssl-demo
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
helloworld-service LoadBalancer 10.96.245.65 147.15.81.160 443:30357/TCP 66m
Após o provisionamento do Load Balancer, é possível visualizar na aba Certificates and Ciphers o certificado SSL/TLS associado ao listener HTTPS configurado pelo Kubernetes.

Para fins de validação, foi criada uma entrada DNS apontando para o endereço IP público do Load Balancer. Em seguida, foi realizado o acesso à aplicação através do navegador utilizando HTTPS.

Esse resultado confirma que o Load Balancer está utilizando o certificado gerenciado no OCI Certificates e encaminhando o tráfego corretamente para a aplicação no OKE.
Considerações Finais
A integração entre o OKE e o OCI Certificates simplifica significativamente o gerenciamento de certificados SSL/TLS para aplicações expostas através de Load Balancers.
Além de reduzir a complexidade operacional, a solução elimina a necessidade de armazenar certificados em Kubernetes Secrets e permite aproveitar recursos nativos da OCI, como gerenciamento centralizado e rotação automática de certificados sem indisponibilidade.
Com poucas alterações nos manifests Kubernetes, é possível modernizar a estratégia de gerenciamento de certificados e aumentar a segurança das aplicações executadas no Oracle Kubernetes Engine.
