Hashicorp Consul,代理/客户端访问



我正在尝试通过Kubernetes、helm chart、,https://www.consul.io/docs/k8s/helm

基于我在Kubernetes之前的知识:服务,通过Consul Agent使用Consul访问,在每个主机上运行,并在主机上侦听IP

现在,我通过Helm图表部署到Kubernetes集群。首先误解了术语,在此设置中领事代理与客户?我想是同一个

现在,设置:

Helm图表配置(Terraform片段(,没有特定于客户端/代理及其服务的内容:

global:
name: "consul"
datacenter: "${var.consul_config.datacenter}"
server:
storage: "${var.consul_config.storage}"
connect: false
syncCatalog:
enabled: true
default: true
k8sAllowNamespaces: ['*']
k8sDenyNamespaces: [${join(",", var.consul_config.k8sDenyNamespaces)}]

Pods,客户端/代理是DaemonSet,不处于主机网络模式

kubectl get pods
NAME                                  READY   STATUS    RESTARTS   AGE
consul-8l587                          1/1     Running   0          11h
consul-cfd8z                          1/1     Running   0          11h
consul-server-0                       1/1     Running   0          11h
consul-server-1                       1/1     Running   0          11h
consul-server-2                       1/1     Running   0          11h
consul-sync-catalog-8b688ff9b-klqrv   1/1     Running   0          11h
consul-vrmtp                          1/1     Running   0          11h

服务

kubectl get service
NAME            TYPE           CLUSTER-IP       EXTERNAL-IP             PORT(S)                                                                   AGE
consul          ExternalName   <none>           consul.service.consul   <none>                                                                    11h
consul-dns      ClusterIP      172.20.124.238   <none>                  53/TCP,53/UDP                                                             11h
consul-server   ClusterIP      None             <none>                  8500/TCP,8301/TCP,8301/UDP,8302/TCP,8302/UDP,8300/TCP,8600/TCP,8600/UDP   11h
consul-ui       ClusterIP      172.20.131.29    <none>                  80/TCP                                                                    11h

问题1服务在哪里,目标是客户端(代理(pod,而不是服务器的pod?我在舵图上错过了吗?

我的计划是,虽然我不打算使用主机(Kubernetes节点(网络:

  1. 查找客户端/代理服务或创建自己的服务。因此,它将由领事的用户使用。例如,我将为Consul模板的Consul模板init pod指定此服务地址。在配置使用应用程序中
kubectl get pods --selector app=consul,component=client,release=consul
consul-8l587   1/1     Running   0          11h
consul-cfd8z   1/1     Running   0          11h
consul-vrmtp   1/1     Running   0          11h
  1. 可选:将在代理服务中添加topologyKeys,这样每个使用者就不会跨越主机边界

问题2这是正确的方法吗?或者Consul Kubernetes部署不同

您可以使用Kubernetes向下的API注入主机的IP作为您的pod的环境变量。

apiVersion: v1
kind: Pod
metadata:
name: consul-example
spec:
containers:
- name: example
image: 'consul:latest'
env:
- name: HOST_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
command:
- '/bin/sh'
- '-ec'
- |
export CONSUL_HTTP_ADDR="${HOST_IP}:8500"
consul kv put hello world
restartPolicy: Never

请参阅https://www.consul.io/docs/k8s/installation/install#accessing-领事http api获取更多信息。

相关内容

  • 没有找到相关文章

最新更新