For the complete documentation index, see llms.txt. This page is also available as Markdown.

Implantação em Kubernetes

1. Introdução

A seguir, especifica-se tudo o que é necessário para instalar o serviço SelphID SDK em um ambiente Kubernetes.

2. Implantação manual

2.1 Introdução

Podemos implantar o SelphID SDK em um cluster Kubernetes, utilizando o comando kubectl:

kubectl apply -f manifest.yaml

Usando um arquivo 'manifest.yaml' semelhante a este:

apiVersion: v1
kind: Namespace
metadata:
  name: selphid-sdk
---

apiVersion: v1
kind: Secret
metadata:
  name: license-secret
  namespace: selphid-sdk
stringData:
  stringData:
  # Escreva aqui o conteúdo da sua licença. Ex.:
  license.lic: |-
    {
       "key":"XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX",
       "type":"NODE_ONLINE"
    }
---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: selphid-sdk
  namespace: selphid-sdk
spec:
  replicas: 3
  selector:
    matchLabels:
      name: selphid-sdk
  template:
    metadata:
      labels:
        name: selphid-sdk
    spec:
      volumes:
        - name: license-volume
          secret:
            secretName: license-secret
            defaultMode: 420
        - name: config
          emptyDir:
            sizeLimit: 50Mi
      containers:
        - name: selphid-sdk-container-name
          # Use o nome e a versão da sua imagem
          image: >-
            selphid-sdk-rest-api:major.minor.patch
          imagePullPolicy: IfNotPresent
          ports:
            - name: http
              containerPort: 8080
              protocol: TCP
          # Variáveis opcionais de configuração do serviço
          env:
            - name: FACEPHI_SELPHID_FACIALAUTHENTICATION_THRESHOLD
              value: '65'
            - name: FACEPHI_SELPHID_FACIALLIVENESS_THRESHOLD
              value: '60'

            # Somente para versões 5.X
            - name: FACESDK_NUM_THREADS_ENGINE
              value: '8'

            # Somente para versões 6.X
            - name: FACEPHI_SELPHID_FACIALEXTRACTOR_NUM_THREADS
              value: '8'
            - name: FACEPHI_SELPHID_FACIALLIVENESS_NUM_THREADS
              value: '8'

          resources:
            limits:
              cpu: 2096m
              memory: 4Gi
            requests:
              cpu: 1024m
              memory: 2Gi
          volumeMounts:
            - name: license-volume
              readOnly: true
              mountPath: /app/selphid-sdk/config/license.lic
              subPath: license.lic
            - name: config
              readOnly: false
              mountPath: /app/selphid-sdk/config
---

apiVersion: v1
kind: Service
metadata:
  name: selphid-service
  namespace: selphid-sdk
spec:
  ports:
    - name: http
      protocol: TCP
      port: 8080
      targetPort: 8080
  selector:
    app: selphid-sdk
  type: ClusterIP
---

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: selphid-ingress
  namespace: selphid-sdk
  annotations:
    konghq.com/strip-path: "true"
spec:
  ingressClassName: kong
  rules:
    - host: core-test-selphid.facephi.dev
      http:
        paths:
          - path: /selphid
            pathType: Prefix
            backend:
              service:
                name: selphid-service
                port:
                  number: 8080
---

2.2 Secret

É necessário declarar um secret do Kubernetes onde a licença é passada para o Kubernetes.

2.3 Volumes

É necessário mapear um volume em /app/selphid-sdk/config, onde SelphID lerá o arquivo de licença e gravará as informações de log. Por padrão, o caminho onde o arquivo de licença é armazenado é /app/selphid-sdk/config/license.lic.

2.4 Variáveis de ambiente

Cada uma delas modifica um aspecto do comportamento do SelphID SDK:

  • FACEPHI_SELPHID_FACIALAUTHENTICATION_THRESHOLD: Altera o limiar ao realizar uma FacialAuthentication. O valor padrão é 65 (0-100).

  • FACEPHI_SELPHID_FACIALLIVENESS_THRESHOLD: Altera o limiar ao realizar uma FacialLiveness. O valor padrão é 50 (0-100).

  • LICENSE_PATH: Caminho alternativo para buscar o arquivo license.lic. Por padrão é /app/selphid-sdk/config/license.lic.

  • CONFIG_FILE: Caminho para um arquivo de configuração personalizado do serviço api-rest. Por padrão é /app/selphid-sdk/config/config.json

  • DEBUG_PATH: Caminho alternativo para salvar os arquivos de log. Por padrão é /app/selphid-sdk/config.

  • USAGE_PATH: Caminho alternativo para salvar os arquivos de uso. Por padrão é /app/selphid-sdk/config.

  • FACEPHI_SELPHID_REST_AUTH_ENABLED, FACEPHI_SELPHID_REST_AUTH_JWT_SECRET, FACEPHI_SELPHID_REST_AUTH_ACCEPT_AUTHORIZATION_HEADER, FACEPHI_SELPHID_REST_AUTH_ACCEPT_API_KEY_HEADER, FACEPHI_SELPHID_REST_AUTH_API_KEY_HEADER_NAME: Parâmetros opcionais de configuração da autenticação JWT da API Rest, únicos na inicialização.

  • FACESDK_NUM_THREADS_ENGINE: Número de threads atribuídos ao serviço de Liveness. Somente nas versões 5.x. Por padrão 4.

  • FACEPHI_SELPHID_FACIALEXTRACTOR_NUM_THREADS: Número de threads atribuídos ao serviço de Authentication. Somente nas versões 6.x. Por padrão 4.

  • FACEPHI_SELPHID_FACIALLIVENESS_NUM_THREADS: Número de threads atribuídos ao serviço de Liveness. Somente nas versões 6.x. Por padrão 4.

2.5 Service

2.5.1 LoadBalancer

Levamos em conta que configuraremos um LoadBalancer com Kong na frente para acessar o serviço SelphID SDK. Observe que o serviço é exposto na porta 80 e direciona para o Pod no 8080.

2.5.2 Ingress

Configuramos um Ingress na frente para redirecionar as requisições de Kong ao serviço dentro do Pod que expusemos anteriormente na porta 80.

3 Implantação por meio de Helm chart

É possível automatizar a implantação de selphid em um cluster Kubernetes utilizando a ferramenta helm.

onde:

  • <release-name>: Nome para identificar a instalação.

  • <namespace>: Namespace do Kubernetes onde a implantação será realizada.

  • --create-namespace: O namespace será criado se não existir.

  • --wait: Aguarda até que tudo tenha iniciado corretamente antes de informar qualquer mensagem de sucesso.

O arquivo selphid-sdk-1.0.0.tgz será fornecido para a implantação e conterá todos os templates e arquivos de configuração necessários para helm.

3.1 Chart.yaml

3.2 values.yaml

Neste arquivo, você deve configurar os valores específicos da implantação:

4 Tipos de instância

Os tipos de instância recomendados para usar o serviço SelphID SDK em produção seriam os seguintes, onde são mostrados os Pods do SelphID SDK que cabem em função do tipo de instância utilizado.

Tipo de instância
CPU
Memória
Capacidade de Pods do SDK

c5.xlarge

4

8

2

c5.2xlarge

8

16

4

c5.4xlarge

16

32

9

Atualizado