自定义Kubernetes控制器
这是一个非常简单的例子,说明如何创建一个Kubernetes控制器,在创建部署时自动创建一个服务和入口控制器。
使用方法
你必须应用deployment.yml,它将在kube-system 命名空间中创建一个部署调用custom-controller ,每当你创建一个部署时,将创建一个服务和一个ingress。确保你有一个ingress控制器在运行。ingress主机将是servicename 。domain.io ,请随意将其改为你自己的域。ingress和服务资源将具有与部署相同的名称。
一旦你删除了部署,服务和ingress将被自动删除:
% kubectl create deployment nginx --image nginx
deployment.apps/nginx created
$ kubectl logs deployment/custom-controller -n kube-system
Adding deployment
Creating service named nginx
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx ClusterIP 10.3.247.100 <none> 80/TCP 48s
$ kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
nginx <none> nginx.domain.io 34.79.195.242 80 77s
$ kubectl delete deployment nginx
deployment.apps "nginx" deleted
$ kubectl logs deployment/custom-controller -n kube-system
Deleting deployment named, nginx
Deleting service nginx
Deleting ingress nginx
有待改进
- 自动收集部署的端口/名称,现在它只听80端口。
- 如果它被删除,自动重新创建svc和ingress资源,该逻辑仍未实现。
- 参照注解或所有者来删除资源。