AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1164008
Accepted
Matthieu Raynaud de Fitte
Matthieu Raynaud de Fitte
Asked: 2024-08-18 02:11:47 +0800 CST2024-08-18 02:11:47 +0800 CST 2024-08-18 02:11:47 +0800 CST

O operador de segredos externos não pode obter segredos do infisical

  • 772

Tenho um infisical standalone em execução no meu cluster do Kubernetes e gostaria de usar o External Secrets Operator para sincronizar os segredos do infisical com os segredos do Kubernetes.

Vou mostrar muitas chaves e URLs, mas embora eu as esteja usando, elas são para fins de teste e serão substituídas assim que eu conseguir resolver o problema. Para facilitar a visualização do que é o quê (e detectar quaisquer erros, se houver), vou colocá-las aqui:

  • ID do cliente: 971d8c5d-08bf-4e14-810b-901b0618b4ed
  • clienteSecret: b4909f4856392612a666c0e06bb9c3c16164ff85f290f79b8e6bb692e6f95c13
  • URL infisical: http://infisical-infisical-standalone-infisical.infisical.svc.cluster.local:8080
  • id do projeto infisical (o projeto stb): 01630159-214a-49b8-97a2-e566b23fe3ac

O infisical está sendo executado em seu próprio namespace (infisical) e tem um projeto chamado stb com um segredo chamado TEST em todos os três ambientes padrão (Desenvolvimento, Preparação e Produção).

Do namespace stb, consigo usar um pod curl temporário para obter os segredos do infisical usando as credenciais que dei a ele. Então, tenho a confirmação de que a identidade da máquina, a url e a autenticação funcionam como visto aqui (usando a seguinte documentação https://infisical.com/docs/api-reference/endpoints/universal-auth/login ):

kubectl run curl-pod --rm -i --tty --image=curlimages/curl --namespace stb -- /bin/sh
curl --request POST --url http://infisical-infisical-standalone-infisical.infisical.svc.cluster.local:8080/api/v1/auth/universal-auth/login --header 'Content-Type: application/json' --data '{"clientId": "971d8c5d-08bf-4e14-810b-901b0618b4ed", "clientSecret": "b4909f4856392612a666c0e06bb9c3c16164ff85f290f79b8e6bb692e6f95c13"}'

Isso tem a seguinte saída (então access + auth funcionam):

{
   "accessToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGl0eUlkIjoiMTY2YTg3OWYtNmY4YS00YzZmLWExNGItZDJiMzNhMGU0YTg5IiwiY2xpZW50U2VjcmV0SWQiOiIxZTNlODc4NS1kNTc2LTQzZjctOTJmOS1mOWZlODAyNzdkOWQiLCJpZGVudGl0eUFjY2Vzc1Rva2VuSWQiOiIxODUxNzJjZi1kMmM3LTRhYzMtOGI5OS1jNjVmNjRmZTNiZTciLCJhdXRoVG9rZW5UeXBlIjoiaWRlbnRpdHlBY2Nlc3NUb2tlbiIsImlhdCI6MTcyMzkxNjkxMSwiZXhwIjoxNzI2NTA4OTExfQ.Sdc0xlsvB8DIbOaJ__M3jGMlVBKPtPsU4cqwoL-a12I",
   "expiresIn":2592000,
   "accessTokenMaxTTL":2592000,
   "tokenType":"Bearer"
}

Usando o token, agora posso obter os segredos https://infisical.com/docs/api-reference/endpoints/secrets/list (o ID do espaço de trabalho e o ambiente desejado são consultados na URL):

curl --request GET --url "http://infisical-infisical-standalone-infisical.infisical.svc.cluster.local:8080/api/v3/secrets/raw?workspaceId=01630159-214a-49b8-97a2-e566b23fe3ac&environment=dev" --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGl0eUlkIjoiMTY2YTg3OWYtNmY4YS00YzZmLWExNGItZDJiMzNhMGU0YTg5IiwiY2xpZW50U2VjcmV0SWQi
OiIxZTNlODc4NS1kNTc2LTQzZjctOTJmOS1mOWZlODAyNzdkOWQiLCJpZGVudGl0eUFjY2Vzc1Rva2VuSWQiOiIxODUxNzJjZi1kMmM3LTRhYzMtOGI5OS1jNjVmNjRmZTNiZTciLCJhdXRoVG9rZW5UeXBlIjoiaWRlbnRpdHlBY2Nlc3NUb2tlbiIsImlhdCI6MTcyMzkxNjkxMSwiZXhwIjoxNzI2NTA4OTExfQ.Sdc0xlsvB8DIbOaJ__M3jGMlVBKPtPsU4cqwoL-a12I'

Por sua vez, recebo a lista secreta:

{
   "secrets":[
      {
         "id":"94bf8823-227c-45e8-a8a9-bbe613069020",
         "_id":"94bf8823-227c-45e8-a8a9-bbe613069020","workspace":"01630159-214a-49b8-97a2-e566b23fe3ac",
         "environment":"dev",
         "version":2,
         "type":"shared",
         "secretKey":"TEST",
         "secretValue":"this is a test that I whant to see the value of dev",
         "secretComment":""
      }
   ],
   "imports":[]
}

Estou mostrando tudo isso para mostrar que o infisical foi configurado da forma que eu acho que está correto, pois posso acessá-lo, consultá-lo e obter o segredo. Estou batalhando com o External Secrets Operator.

Aqui está a configuração que está sendo usada (seguindo a documentação https://external-secrets.io/latest/provider/infisical/ ):

apiVersion: v1
kind: Secret
metadata:
  name: universal-auth-credentials
  namespace: stb
type: Opaque
stringData:
  clientId: "971d8c5d-08bf-4e14-810b-901b0618b4ed"
  clientSecret: "b4909f4856392612a666c0e06bb9c3c16164ff85f290f79b8e6bb692e6f95c13"
---
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
  name: infisical-managed-secrets
  namespace: stb
spec:
  secretStoreRef:
    kind: SecretStore
    name: infisical
  target:
    name: infisical-managed-secrets
  data:
    - secretKey: TEST
      remoteRef:
        key: TEST
---
apiVersion: external-secrets.io/v1beta1
kind: SecretStore
metadata:
  name: infisical
  namespace: stb
spec:
  provider:
    infisical:
      auth:
        universalAuthCredentials:
          clientId:
            key: clientId
            namespace: stb
            name: universal-auth-credentials
          clientSecret:
            key: clientSecret
            namespace: stb
            name: universal-auth-credentials
      secretsScope:
        projectSlug: "01630159-214a-49b8-97a2-e566b23fe3ac"
        environmentSlug: dev
        secretsPath: /
      hostAPI: http://infisical-infisical-standalone-infisical.infisical.svc.cluster.local:8080

O problema, no entanto, parece ser que há um valor ausente ou um valor que não é fornecido como pretendido. Os logs do pod de segredos externos mostram o seguinte (há dois logs diferentes que se repetem muito):

"ID do ambiente ou do espaço de trabalho ausente"

{
   "level":"error",
   "ts":1723917674.332734,
   "logger":"controllers.ExternalSecret",
   "msg":"could not get secret data from provider",
   "ExternalSecret":
      {
         "name":"infisical-managed-secrets",
         "namespace":"stb"
      },
   "error":"error retrieving secret at .data[0], key: TEST, err: Missing workspace id or environment",
   "stacktrace":"github.com/external-secrets/external-secrets/pkg/controllers/externalsecret.(*Reconciler).markAsFailed\n\t/home/runner/work/external-secrets/external-secrets/pkg/controllers/externalsecret/externalsecret_controller.go:357\ngithub.com/external-secrets/external-secrets/pkg/controllers/externalsecret.(*Reconciler).Reconcile\n\t/home/runner/work/external-secrets/external-secrets/pkg/controllers/externalsecret/externalsecret_controller.go:226\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile\n\t/home/runner/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:114\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\t/home/runner/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:311\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/home/runner/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:261\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\t/home/runner/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:222"
}
{
   "level":"error",
   "ts":1723917674.33634,
   "msg":"Reconciler error",
   "controller":"externalsecret",
   "controllerGroup":"external-secrets.io",
   "controllerKind":"ExternalSecret",
   "ExternalSecret":
      {
         "name":"infisical-managed-secrets",
         "namespace":"stb"
      },
   "namespace":"stb",
   "name":"infisical-managed-secrets",
   "reconcileID":"dac2f36a-5128-416f-929b-dd7ca11511d5",
   "error":"error retrieving secret at .data[0], key: TEST, err: Missing workspace id or environment",
   "stacktrace":"sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\t/home/runner/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:324\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/home/runner/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:261\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\t/home/runner/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:222"
}

Estou perdido, a documentação não mostra nada que me permita resolver o problema e estou confuso se encontrei um bug, um problema com a documentação ou se simplesmente esqueci algo.

kubernetes
  • 2 2 respostas
  • 76 Views

2 respostas

  • Voted
  1. rwm
    2024-08-26T21:00:48+08:002024-08-26T21:00:48+08:00

    projectSlug: "01630159-214a-49b8-97a2-e566b23fe3ac" isso parece o ID do projeto, você deve fornecer o slug do projeto

    • 1
  2. Best Answer
    Matthieu Raynaud de Fitte
    2024-09-01T07:50:14+08:002024-09-01T07:50:14+08:00

    Acontece que o infisical tinha um bug de algum tipo e que estava escondendo o botão slug, o que por sua vez causou todo o incômodo. As coisas parecem funcionar como pretendido até agora.

    https://github.com/external-secrets/external-secrets/issues/3808

    • 0

relate perguntas

  • Containerd falhou ao iniciar após Nvidia Config

  • Como posso modificar o configmap CoreDNS antes de inicializar o cluster usando o kubeadm?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve