我在kubernetes中安装了hashicorp Vault服务器。通过CLI或UI访问时,Vault服务器工作正常。我创建了另一个运行我的应用程序的pod。 但是我无法从运行在其他Pod上的应用程序访问Vault Server。
我尝试使用Cluster-IP:Port,IP:Port,但总是看到错误的连接被拒绝。
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.
答案 0 :(得分:0)
请描述一下,您如何尝试从不同的窗格访问保险柜?
否则,如果您的Pod上没有出现任何错误,则需要能够通过您提到的服务名称或ClusterIP地址从同一命名空间中的其他Pod访问Vault。
出于故障排除的目的,我建议您像下面那样运行示例保险柜盒进行测试
kubectl run vault-test --image=vault -l "app=vault-test"
然后,通过以下命令运行exec到新pod的外壳:
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
#“保险库”是您的服务名称
OR
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
请让我知道此故障排除的状态。