def create_test_client_runner(self): if self.resource_suffix: client_namespace_suffix = self.resource_suffix else: client_namespace_suffix = framework.helpers.rand.random_resource_suffix( ) logging.info('GcpResourceManager: client_namespace_suffix=%s', client_namespace_suffix) # Kubernetes Test Client return client_app.KubernetesClientRunner( k8s.KubernetesNamespace( self.k8s_api_manager, client_app.KubernetesClientRunner.make_namespace_name( self.resource_prefix, client_namespace_suffix)), deployment_name=self.client_name, image_name=self.client_image, gcp_project=self.project, gcp_api_manager=self.gcp_api_manager, gcp_service_account=self.gcp_service_account, td_bootstrap_image=self.td_bootstrap_image, xds_server_uri=self.xds_server_uri, network=self.network, debug_use_port_forwarding=self.debug_use_port_forwarding, enable_workload_identity=self.enable_workload_identity, stats_port=self.client_port)
def setUp(self): super().setUp() # Traffic Director Configuration self.td = traffic_director.TrafficDirectorManager( self.gcp_api_manager, project=self.project, resource_prefix=self.namespace, network=self.network) # Test Server Runner self.server_runner = server_app.KubernetesServerRunner( k8s.KubernetesNamespace(self.k8s_api_manager, self.server_namespace), deployment_name=self.server_name, image_name=self.server_image, gcp_service_account=self.gcp_service_account, td_bootstrap_image=self.td_bootstrap_image, xds_server_uri=self.xds_server_uri, network=self.network) # Test Client Runner self.client_runner = client_app.KubernetesClientRunner( k8s.KubernetesNamespace(self.k8s_api_manager, self.client_namespace), deployment_name=self.client_name, image_name=self.client_image, gcp_service_account=self.gcp_service_account, td_bootstrap_image=self.td_bootstrap_image, xds_server_uri=self.xds_server_uri, network=self.network, debug_use_port_forwarding=self.debug_use_port_forwarding, stats_port=self.client_port, reuse_namespace=self.server_namespace == self.client_namespace)
def __init__(self, absl_flags: Mapping[str, Any] = None): if absl_flags is not None: for key in absl_flags: setattr(self, key, absl_flags[key]) # API managers self.k8s_api_manager = k8s.KubernetesApiManager(self.kube_context) self.gcp_api_manager = gcp.api.GcpApiManager() self.td = traffic_director.TrafficDirectorManager( self.gcp_api_manager, self.project, resource_prefix=self.resource_prefix, resource_suffix=(self.resource_suffix or ""), network=self.network, ) # Kubernetes namespace self.k8s_namespace = k8s.KubernetesNamespace(self.k8s_api_manager, self.resource_prefix) # Kubernetes Test Client self.test_client_runner = client_app.KubernetesClientRunner( self.k8s_namespace, deployment_name=self.client_name, image_name=self.client_image, gcp_project=self.project, gcp_api_manager=self.gcp_api_manager, gcp_service_account=self.gcp_service_account, td_bootstrap_image=self.td_bootstrap_image, network=self.network, debug_use_port_forwarding=self.debug_use_port_forwarding, stats_port=self.client_port, reuse_namespace=True) # Kubernetes Test Servers self.test_server_runner = server_app.KubernetesServerRunner( self.k8s_namespace, deployment_name=self.server_name, image_name=self.server_image, gcp_project=self.project, gcp_api_manager=self.gcp_api_manager, gcp_service_account=self.gcp_service_account, td_bootstrap_image=self.td_bootstrap_image, network=self.network) self.test_server_alternative_runner = server_app.KubernetesServerRunner( self.k8s_namespace, deployment_name=self.server_name + '-alternative', image_name=self.server_image, gcp_project=self.project, gcp_api_manager=self.gcp_api_manager, gcp_service_account=self.gcp_service_account, td_bootstrap_image=self.td_bootstrap_image, network=self.network, reuse_namespace=True) logging.info('Strategy of GCP resources management: %s', self.strategy)
def setUp(self): super().setUp() # Traffic Director Configuration self.td = traffic_director.TrafficDirectorSecureManager( self.gcp_api_manager, project=self.project, resource_prefix=self.namespace, network=self.network) # Ensures the firewall exist if self.ensure_firewall: self.td.create_firewall_rule( allowed_ports=self.firewall_allowed_ports) # Test Server Runner self.server_runner = server_app.KubernetesServerRunner( k8s.KubernetesNamespace(self.k8s_api_manager, self.server_namespace), deployment_name=self.server_name, image_name=self.server_image, td_bootstrap_image=self.td_bootstrap_image, gcp_project=self.project, gcp_api_manager=self.gcp_api_manager, gcp_service_account=self.gcp_service_account, network=self.network, xds_server_uri=self.xds_server_uri, deployment_template='server-secure.deployment.yaml', debug_use_port_forwarding=self.debug_use_port_forwarding) # Test Client Runner self.client_runner = client_app.KubernetesClientRunner( k8s.KubernetesNamespace(self.k8s_api_manager, self.client_namespace), deployment_name=self.client_name, image_name=self.client_image, td_bootstrap_image=self.td_bootstrap_image, gcp_project=self.project, gcp_api_manager=self.gcp_api_manager, gcp_service_account=self.gcp_service_account, xds_server_uri=self.xds_server_uri, network=self.network, deployment_template='client-secure.deployment.yaml', stats_port=self.client_port, reuse_namespace=self.server_namespace == self.client_namespace, debug_use_port_forwarding=self.debug_use_port_forwarding)
def main(argv): if len(argv) > 1: raise app.UsageError('Too many command-line arguments.') # Base namespace namespace = xds_flags.NAMESPACE.value client_namespace = namespace runner_kwargs = dict( deployment_name=xds_flags.CLIENT_NAME.value, image_name=xds_k8s_flags.CLIENT_IMAGE.value, gcp_service_account=xds_k8s_flags.GCP_SERVICE_ACCOUNT.value, td_bootstrap_image=xds_k8s_flags.TD_BOOTSTRAP_IMAGE.value, xds_server_uri=xds_flags.XDS_SERVER_URI.value, network=xds_flags.NETWORK.value, stats_port=xds_flags.CLIENT_PORT.value, reuse_namespace=_REUSE_NAMESPACE.value) if _SECURE.value: runner_kwargs.update( deployment_template='client-secure.deployment.yaml') k8s_api_manager = k8s.KubernetesApiManager( xds_k8s_flags.KUBE_CONTEXT.value) client_runner = client_app.KubernetesClientRunner( k8s.KubernetesNamespace(k8s_api_manager, client_namespace), **runner_kwargs) # Server target server_xds_host = xds_flags.SERVER_XDS_HOST.value server_xds_port = xds_flags.SERVER_XDS_PORT.value if _CMD.value == 'run': logger.info('Run client, secure_mode=%s', _SECURE.value) client_runner.run( server_target=f'xds:///{server_xds_host}:{server_xds_port}', qps=_QPS.value, print_response=_PRINT_RESPONSE.value, secure_mode=_SECURE.value) elif _CMD.value == 'cleanup': logger.info('Cleanup client') client_runner.cleanup(force=True, force_namespace=_CLEANUP_NAMESPACE.value)