def test_hpa_walkthrough(self): """ https://kubernetes.io/docs/user-guide/horizontal-pod-autoscaling/walkthrough/ https://github.com/kubernetes_py/community/blob/master/contributors/design-proposals/horizontal-pod-autoscaler.md """ n = "php-apache" dep = _utils.create_deployment(name=n) dep.model = Deployment(_constants.hpa_example_deployment()) svc = _utils.create_service(name=n) svc.model = Service(_constants.hpa_example_service()) hpa = _utils.create_hpa(name=n) hpa.model = HorizontalPodAutoscaler( _constants.hpa_example_autoscaler()) if _utils.is_reachable(hpa.config): # //--- Step One: Run & expose php-apache server dep.create() svc.create() # // --- Step Two: Create Horizontal Pod Autoscaler hpa.create() # // --- Step Three: Increase Load # $ kubectl run -i --tty load-generator --image=busybox /bin/sh # $ while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done # $ watch 'kubectl config current-context; echo; kubectl get deployments; echo; kubectl get replicasets; echo; kubectl get pods; echo; kubectl top nodes; echo; kubectl top pods' time.sleep(10) # wait for 10 secs; set a breakpoint if you need.
def test_stateful_nginx(self): svc = Service(headless_service()) sset = StatefulSet(stateful_set()) k8s_svc = K8sService(name='headless') k8s_sset = K8sStatefulSet(name='sset') k8s_svc.model = svc k8s_sset.model = sset if _utils.is_reachable(k8s_svc.config): k8s_svc.create() k8s_sset.create()
def list(self, pattern=None, labels=None): ls = super(K8sService, self).list(labels=labels) svcs = list(map(lambda x: Service(x), ls)) if pattern is not None: svcs = list(filter(lambda x: pattern in x.name, svcs)) k8s = [] for x in svcs: j = K8sService(config=self.config, name=x.name).from_model(m=x) k8s.append(j) return k8s
def test_update_with_full_model(self): data = { "kind": "Service", "apiVersion": "v1", "metadata": { "name": "frontend", "namespace": "default", "labels": { "name": "frontend" } }, "spec": { "ports": [ { "protocol": "TCP", "port": 8082, "targetPort": "feport", "nodePort": 8082 } ], "selector": { "name": "frontend" }, "clusterIP": "10.250.1.27", "type": "NodePort", "sessionAffinity": "None" }, "status": { "loadBalancer": {} } } svc = Service(data) k8s_service = _utils.create_service(name=svc.name) k8s_service.model = svc k8s_service.add_port( name="frontend", port=8082, target_port="feport", node_port=8082, protocol='TCP' ) self.assertEqual(1, len(k8s_service.ports))
def test_cassandra_setup(self): svc = Service(_utils.cassandra_service()) k8s_service = _utils.create_service(name="cassandra") k8s_service.model = svc rc = ReplicationController(_utils.cassandra_rc()) k8s_rc = _utils.create_rc(name="cassandra") k8s_rc.model = rc ds = DaemonSet(_utils.cassandra_daemonset()) k8s_ds = _utils.create_daemonset(name="cassandra") k8s_ds.model = ds if _utils.is_reachable(k8s_rc.config): k8s_service.create() k8s_rc.create() self.assertIsInstance(k8s_service, K8sService) self.assertIsInstance(k8s_rc, K8sReplicationController)
def get(self): self.model = Service(self.get_model()) return self