O OpenFaaS é uma plataforma open-source para executar funções (FaaS) sobre Kubernetes. Ele simplifica a implantação de pequenas unidades de código que executam sob demanda ou em resposta a eventos.
No núcleo do OpenFaaS está o modelo Function as a Service (FaaS): você escreve uma função, empacota em uma imagem Docker e o OpenFaaS cuida do escalonamento, rede e gerenciamento do ciclo de vida.
Oferece uma interface web amigável e uma ferramenta de linha de comando chamada faas-cli. Você pode escrever funções em linguagens populares como Python, Node.js, Go e outras, usando templates prontos.
A documentação completa do OpenFaaS no Kubernetes está disponível no site oficial.
Para instalar o OpenFaaS:
ingress e habilite definindo enabled: true.host. Isso simplifica o acesso ao dashboard e permite o uso do faas-cli.ingress, você pode desativar exposeServices, que é usado por padrão.Verifique se tudo está rodando checando o status dos pods no namespace openfaas-fn:
kubectl get pods -n openfaas-fn
Exemplo de saída:
NAME READY STATUS RESTARTS AGE
alertmanager-57767d864c-hdqdn 1/1 Running 0 19h
gateway-5f9c4b5754-ksr6x 2/2 Running 1 (19h ago) 19h
nats-6ddf479847-dxr2g 1/1 Running 0 19h
prometheus-6cbd946f66-wqdf8 1/1 Running 0 19h
queue-worker-57c7479989-bw282 1/1 Running 0 19h
Se todos os pods estiverem com status Running, a instalação foi bem-sucedida.
Para trabalhar com OpenFaaS via terminal, você precisa da ferramenta faas-cli. Ela permite criar funções, construir e enviar imagens, implantar no cluster, invocar funções e verificar seus status.
Está disponível para Linux, macOS e Windows.
curl -sSL https://cli.openfaas.com | sh
Ou via Homebrew (macOS):
brew install faas-cli
$version = (Invoke-WebRequest "https://api.github.com/repos/openfaas/faas-cli/releases/latest" | ConvertFrom-Json)[0].tag_name
(New-Object System.Net.WebClient).DownloadFile("https://github.com/openfaas/faas-cli/releases/download/$version/faas-cli.exe", "faas-cli.exe")
Verifique a instalação:
faas-cli version
Neste exemplo, vamos:
faas-cli e Docker instaladosNo painel de controle, instale o complemento OpenFaaS.
Na seção de Configuração, habilite o ingress (enabled: true) e especifique seu domínio no campo host. Inicie a instalação.
Crie um manifesto loadbalancer.yaml:
apiVersion: v1
kind: Service
metadata:
name: ingress-nginx-lb
namespace: ingress-nginx
spec:
selector:
app.kubernetes.io/name: ingress-nginx
type: LoadBalancer
ports:
- name: http
port: 80
targetPort: 80
appProtocol: k8s.hostman.com/proto-http
- name: https
port: 443
targetPort: 443
appProtocol: k8s.hostman.com/proto-https
Aplique:
kubectl apply -f loadbalancer.yaml
Configure o IP do load balancer como registro A do seu domínio:
kubectl get svc --all-namespaces --field-selector spec.type=LoadBalancer
O IP estará na coluna EXTERNAL-IP.
Acesse o domínio configurado — aparecerá um prompt de autenticação básica.
adminkubectl -n openfaas-fn get secret basic-auth -o jsonpath="{.data.basic-auth-password}" | base64 --decode
Após o login, o dashboard será exibido.

OpenFaaS Dashboard
Vamos usar funções da store integrada do OpenFaaS.
Faça login usando o CLI para executar comandos relacionados à gestão de funções:
faas-cli login \
--gateway http://<domain> \
--username admin \
--password <password>
domain — endereço especificado durante a instalação do OpenFaaSadmin — usuário padrãopassword — recuperável com:kubectl -n openfaas-fn get secret basic-auth -o jsonpath="{.data.basic-auth-password}" | base64 --decode
Instalar a função figlet. Essa função converte texto em arte ASCII:
faas-cli store deploy figlet \
--gateway http://<domain>
Verifique se a função foi instalada:
faas-cli list \
--gateway http://<domain>
O status deverá aparecer como Ready.
Para invocar a função, passe uma string como entrada:
echo "Hostman" | faas-cli invoke figlet \
--gateway http://<domain>
Você receberá a arte ASCII com o texto fornecido.
Agora, vamos ver como implantar uma função customizada. Escolha um template:
faas-cli template store list
Crie uma nova função baseada no template desejado, por exemplo python3-http:
faas-cli new hello-k8s --lang python3-http
Será criado:
hello-k8s/handler.py — código da funçãostack.yaml — manifesto da funçãoAntes de construir, edite o stack.yaml e especifique o caminho da imagem Docker Hub. Por exemplo:
functions:
hello-k8s:
lang: python3-http
handler: ./hello-k8s
image: dockerhubuser/hello-k8s:latest
No campo image, informe seu usuário Docker Hub e o nome da imagem. A edição OpenFaaS Community Edition suporta apenas imagens públicas.
Construir a imagem:
faas-cli build -f stack.yaml
Depois, envie para o Docker Hub:
faas-cli push -f stack.yaml
Finalmente, implante a função no cluster:
faas-cli deploy -f stack.yaml \
--gateway http://<domain>
Após executar o comando, você receberá um link para acessar a função.

Abra o link e verá a mensagem: Hello from OpenFaaS!