Example #1
0
    def test_hpa_walkthrough(self):
        """
        https://kubernetes.io/docs/user-guide/horizontal-pod-autoscaling/walkthrough/
        https://github.com/kubernetes/community/blob/master/contributors/design-proposals/horizontal-pod-autoscaler.md
        """

        k8s_dep = _utils.create_deployment(name="php-apache")
        k8s_dep.model = Deployment(_constants.hpa_example_deployment())

        k8s_svc = _utils.create_service(name="php-apache")
        k8s_svc.model = Service(_constants.hpa_example_service())

        k8s_hpa = _utils.create_hpa(name="php-apache")
        k8s_hpa.model = HorizontalPodAutoscaler(
            _constants.hpa_example_autoscaler())

        if _utils.is_reachable(k8s_hpa.config):
            # //--- Step One: Run & expose php-apache server
            k8s_dep.create()
            k8s_svc.create()
            # // --- Step Two: Create Horizontal Pod Autoscaler
            k8s_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.
Example #2
0
 def get_by_name(config=None, name=None):
     service_list = []
     data = {'labelSelector': 'name={}'.format(name)}
     services = K8sService(config=config, name=name).get_with_params(data=data)
     for svc in services:
         service_name = Service(svc).metadata.name
         service_list.append(K8sService(config=config, name=service_name).get())
     return service_list
Example #3
0
 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_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.api_host):
         k8s_svc.create()
         k8s_sset.create()
    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.api_host):
            k8s_service.create()
            k8s_rc.create()
            self.assertIsInstance(k8s_service, K8sService)
            self.assertIsInstance(k8s_rc, K8sReplicationController)
Example #7
0
 def get(self):
     self.model = Service(self.get_model())
     return self