【问题标题】:Unable to access vault server from different pods running in kubernetes cluster无法从运行在 kubernetes 集群中的不同 pod 访问 Vault 服务器
【发布时间】:2019-01-29 08:57:49
【问题描述】:

我已经在 kubernetes 中设置了 hashcorp vault server。通过 CLI 或 UI 访问时,Vault 服务器工作正常。我创建了另一个运行我的应用程序的 pod。 但是我无法从运行在不同 pod 上的应用程序访问 Vault Server。

我曾尝试使用 Cluster-IP:Port, IP:Port 但总是看到错误 Connection Refused。

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: vault
  labels:
    run: vault
spec:
  type: ClusterIP
  ports:
    - port: 8080
      targetPort: 8200
      protocol: TCP
      name: vault
  selector:
    run: vault

deployment.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: vault
  labels:
    run: vault
spec:
  replicas: 1
  template:
    metadata:
      labels:
        run: vault
    spec:
      containers:
      - name: vault
        command: ["vault", "server", "-config", "/vault/config/vault.hcl"]
        image: "vault"
        imagePullPolicy: IfNotPresent
        securityContext:
          capabilities:
            add:
              - IPC_LOCK
        volumeMounts:
          - name: configurations
            mountPath: /vault/config/vault.hcl
            subPath: vault.hcl  
      volumes:
        - name: configurations
          configMap:
            name: vault

I need to access vault server from an application running in different pod within same cluster.


【问题讨论】:

  • 能分享一下尝试连接Vault的服务的yml文件吗?

标签: kubernetes hashicorp-vault kubernetes-pod kubernetes-cluster


【解决方案1】:

请描述一下,您如何尝试从不同的 pod 访问 Vault?

否则,如果您在 pod 上没有看到任何错误,则需要能够通过您提到的服务名称或 ClusterIP 地址从同一命名空间内的其他 pod 访问 Vault。

出于故障排除的目的,我建议您运行示例 Vault pod 以进行测试,如下所示

kubectl run vault-test --image=vault -l "app=vault-test"

然后,通过以下方式运行 exec 到新 pod 的 shell:

kubectl exec -it $(kubectl get pods --namespace default -l "app=vault-test" -o jsonpath="{.items[0].metadata.name}") sh

然后,运行以下命令来查看测试:

export VAULT_ADDR=http://vault:8080 # "vault" 是你的服务名称

或

export VAULT_ADDR=http://<ClusterIP of vault service>:8080

然后

vault status

你需要看到如下输出

Key Value --- ----- Seal Type shamir Initialized true Sealed false Total Shares 1 Threshold 1 Version 1.0.1 Cluster Name vault-cluster-f3e6e68d Cluster ID 0280993f-5aee-4f97-b8e5-53f652fdc5ad HA Enabled false

请让我知道此故障排除的状态。

【讨论】:

  • 我按照您提到的步骤进行操作。我在运行 vault status Error checking seal status: Get http://vault:8080/v1/sys/seal-status: dial tcp 10.103.28.202:8080: connect: connection refused. 时可以看到这个错误但是当我使用 -dev 模式运行 vault 时输出很好。
  • 请检查您的保管库服务器是否正在监听0.0.0.0:8200 接口
  • 你可以在配置中配置多个监听器。 vaultproject.io/docs/configuration/listener/tcp
猜你喜欢
  • 1970-01-01
  • 2020-09-10
  • 2021-08-08
  • 2021-10-02
  • 2021-05-03
  • 2021-12-06
  • 2019-07-29
  • 1970-01-01
  • 2018-04-29
相关资源
最近更新 更多