#kubernetes #service-account #copr #resalloc

app resalloc-kubernetes

A CLI used to allocate kubernetes pod resource for resalloc framework

6 releases (stable)

1.0.5 Sep 15, 2023
1.0.4 Sep 8, 2023
1.0.3 Aug 23, 2023
1.0.2 Jun 6, 2023
0.1.0 Dec 9, 2022

#8 in #service-account

MIT license

34KB
765 lines

Resalloc kubernetes

resalloc-kubernetes used for generating in cluster pod resource for COPR cluster.

Prerequisite

The pod's Service Account's Role need pvc's create, delete and pod's create, delete, list, watch, get permissions, For example, the RBAC role should be something like:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
...
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["create", "delete", "list", "get", "watch"]
- apiGroups: [""]
  resources: ["persistentvolumeclaims"]
  verbs: ["create", "delete"]
...

NOTE: If there's no delete permissions for pod and pvc in Service Account, the allocated resource may be leaked and need to be released manually!

Generate pod

command would be:

Create new pod resource

Usage: resalloc-kubernetes add [OPTIONS] --image-tag <IMAGE_TAG> --cpu-resource <CPU_RESOURCE> --memory-resource <MEMORY_RESOURCE>

Options:
      --timeout <TIMEOUT>
          timeout for waiting pod to be ready [default: 60]
      --image-tag <IMAGE_TAG>
          specify the image tag used for generating, for example: docker.io/organization/image:tag
      --namespace <NAMESPACE>

      --cpu-resource <CPU_RESOURCE>
          specify the request and limit cpu resource, '1', '2000m' and etc.
      --memory-resource <MEMORY_RESOURCE>
          specify the request and limit memory resource, '1024Mi', '2Gi' and etc.
      --node-selector <NODE_SELECTOR>
          specify the node selector for pod resource in the format of 'NAME=VALUE', can be specified with multiple times
      --privileged
          run pod in privileged mode

      --additional-labels <ADDITIONAL_LABELS>
          specify the additional labels for pod resource in the format of 'NAME=VALUE', can be specified with multiple times
      --additional-volume-size <ADDITIONAL_VOLUME_SIZE>
          specify the additional persistent volume size, use in group(additional_volume_size, additional_volume_class, additional_volume_mount_path).
      --additional-volume-class <ADDITIONAL_VOLUME_CLASS>
          specify the additional persistent volume class, use in group(additional_volume_size, additional_volume_class, additional_volume_mount_path).
      --additional-volume-mount-path <ADDITIONAL_VOLUME_MOUNT_PATH>
          specify mount point for persistent volume, use in group(additional_volume_size, additional_volume_class, additional_volume_mount_path).
  -h, --help
          Print help information

Remove pod

command would be:

Delete existing pod resource by IP address

Usage: resalloc-kubernetes delete [OPTIONS] --name <NAME>

Options:
      --name <NAME>            specify ip address of pod to delete. [env: RESALLOC_NAME=]
      --namespace <NAMESPACE>
  -h, --help                   Print help information

Dependencies

~71MB
~1M SLoC