perfkitbenchmarker/resources/kubernetes/flags.py (78 lines of code) (raw):

# Copyright 2015 PerfKitBenchmarker Authors. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from absl import flags flags.DEFINE_string( 'ceph_secret', None, 'Name of the Ceph Secret used by Kubernetes in order to ' 'authenticate with Ceph. If provided, overrides keyring.', ) flags.DEFINE_string( 'ceph_keyring', '/etc/ceph/keyring', 'Path to the Ceph keyring file.' ) flags.DEFINE_string('rbd_pool', 'rbd', 'Name of RBD pool for Ceph volumes.') flags.DEFINE_string('rbd_user', 'admin', 'Name of RADOS user.') flags.DEFINE_list( 'ceph_monitors', [], 'IP addresses and ports of Ceph Monitors. ' 'Must be provided when Ceph scratch disk is required. ' 'Example: "127.0.0.1:6789,192.168.1.1:6789"', ) flags.DEFINE_string( 'username', 'root', 'User name that Perfkit will attempt to use in order to ' 'SSH into Docker instance.', ) flags.DEFINE_boolean( 'docker_in_privileged_mode', True, 'If set to True, will attempt to create Docker containers ' 'in a privileged mode. Note that some benchmarks execute ' 'commands which are only allowed in privileged mode.', ) flags.DEFINE_boolean( 'kubernetes_anti_affinity', True, 'If set to True, PKB pods will not be scheduled on the ' 'same nodes as other PKB pods.', ) flags.DEFINE_multi_string( 'k8s_volume_parameters', None, 'A colon separated key-value pair that will be ' 'added to Kubernetes storage class parameters.', ) _K8S_PROVISIONERS = [ 'kubernetes.io/azure-disk', 'kubernetes.io/gce-pd', 'kubernetes.io/aws-ebs', 'kubernetes.io/glusterfs', ] flags.DEFINE_enum( 'k8s_volume_provisioner', None, _K8S_PROVISIONERS, 'The name of the provisioner to use for K8s storage classes.', ) flags.DEFINE_string( 'k8s_sriov_network', None, 'The name of the network with sriov enabled interfaces', ) SETUP_SSH = flags.DEFINE_boolean( 'kubernetes_vm_setup_ssh', False, 'Set up SSH on Kubernetes VMs. Probably not needed any more?', ) DEFAULT_VM_GROUP_NODEPOOL = flags.DEFINE_string( # default is container_service.DEFAULT_NODEPOOL, but don't import because it # causes a runtime circular dependency. 'kubernetes_vm_default_nodepool', 'default', 'The nodepool to place VMs in the default VM group into. Defaults to the ' 'default nodepool, but can be changed for better isolation.', ) USE_NODE_SELECTORS = flags.DEFINE_bool( 'use_k8s_vm_node_selectors', True, 'Whether to require node selectors to be present when creating K8s VMs. ' 'Disable this if you are using a pre-existing k8s cluster without labels.', )