需求背景
为了实现动态的对集群中的pod进行slb的绑定和解绑,我们通过创建configmap来动态传参,管控pod监听configmap的创建和删除操作,解析出configmap中的参数动态进行slb的绑定和解绑操作。
监听的对象分别为kubernetes原生资源对象configmap,以及我们自定义对象弹性网卡eni,configmap 和自定义资源对象eni 的创建和删除 都对应着 后台的绑定和解绑操作。监听实现逻辑如下:
代码实现
configmap
//watcher为自定义对象,watacher.client *kubernetes.Clientset类型客户端
//watcher.client, err = kubernetes.NewForConfig(config) config 为.kube/config.yaml文件
watchlist := cache.NewListWatchFromClient(watcher.client.CoreV1().RESTClient(), string(v1.ResourceConfigMaps), v1.NamespaceAll,
fields.Everything())
//资源对象监听注册
_, configMapController := cache.NewInformer(
//watchlist创建方式如上,参数中关联对应资源对象configmap
watchlist,
//监听资源对象类型
&v1.ConfigMap{
},
time.Minute*