在我的AKS群集中,我有2个服务(API和Redis DB)。我想从API窗格连接到Redis数据库。
我使用kubectl exec redis-pod -- printenv
获取了Redis Env,并且主机变量为REDIS_SERVICE_HOST
,是否可以将这个env注入API部署中?
我尝试了类似的方法,但是没有用:
env:
- name: REDIS_HOST
value: ${REDIS_SERVICE_HOST}:6379
答案 0 :(得分:1)
您可以将redis主机IP存储在configMap中,并将其用作env
export REDISHOST_IP=XXX.XXX.XXX.XXX
kubectl create configmap redishost --from-literal=REDISHOST=${REDISHOST_IP}
env:
- name: REDISHOST
valueFrom:
configMapKeyRef:
name: redishost
key: REDISHOST
一种更好的方法是使用kubernetes服务公开Redis
apiVersion: v1
kind: Service
metadata:
name: redis
namespace: default
labels:
app: redis
ports:
- port: 6379
targetPort: 6379
selector:
app: redis
注意:在此示例中,redis窗格需要具有标签app: redis
然后使用环境将redis.default.svc.cluster.local
作为Redis主机注入其他容器中。
您还可以使用configMap存储redis.default.svc.cluster.local
并将其用作环境。
kubectl create configmap redishost --from-literal=REDISHOST=redis.default.svc.cluster.local
env:
- name: REDISHOST
valueFrom:
configMapKeyRef:
name: redishost
key: REDISHOST
这样,即使重新启动Redis Pod,并且Pod IP更改,连接到Redis的其他Pod也不会受到影响,因此不需要更改。