bridge-operator

Bridge operator repo

https://github.com/ibm/bridge-operator

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.6%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Bridge operator repo

Basic Info
  • Host: GitHub
  • Owner: IBM
  • License: apache-2.0
  • Language: Go
  • Default Branch: main
  • Size: 110 MB
Statistics
  • Stars: 21
  • Watchers: 6
  • Forks: 5
  • Open Issues: 6
  • Releases: 0
Created over 3 years ago · Last pushed 10 months ago
Metadata Files
Readme Contributing License Code of conduct Citation

README.md

Bridge Operator

The Kubernetes Bridge operator is able to submit and monitor long running processes on external systems which have their own cluster/resource manager, including SLURM, LSF and Ray. The implementation is agnostic to the choice of resource manager but assumes the system exposes a HTTP/HTTPS API for its control and management.

This operator can be deployed to submit traditional HPC cluster jobs but also to submit jobs to external systems such as: AI accelerators on dedicated clusters, heterogeneous HPC platforms, or Quantum systems. We provide specific example Pod images for

  • LSF: a Pod managing jobs inside an IBM Spectrum LSF Cluster
  • Quantum: a Pod managing jobs inside the IBM Quantum Service
  • SLURM: a Pod managing jobs inside a Slurm cluster
  • Ray: a Pod managing jobs inside a Ray cluster

Overview

The Bridge Operator acts as a simple bridge between Kubernetes and the external system where visibility into the external system is limited to the system's HTTP(S) API requests. As a result there is no interaction between the Kubernetes scheduler and the workload manager on the external system.

The operator consists of a Kubernetes controller with Custom Resource Definitions (CRDs), a Pod and ConfigMap. Once the CR is deployed, the operator is responsible for:

  • Validating input parameters - checking if secrets and other necessary Kubernetes resources specified in the CR exist.
  • Creating the ConfigMap with application specific data from the CR Spec. The data is later utilized by the Pod when submitting the job.
  • Creating the Pod that submits the HTTP/HTTPS requests to send the job to the external system.
  • Reading the job's current state from the ConfigMap (updated by the Pod) and updating the CR status accordingly.
  • Monitoring the Pod and other Kubernetes resources.
  • Responding to reported errors in the external system.
  • Cleaning up resources when the job is deleted.

alt text


Prerequisites

The operator implementation depends on the Operator SDK which should be installed on your machine. Installation prerequisites are here and include:

  • git
  • go version 1.18
  • docker version 17.03+
  • kubectl and access to a Kubernetes cluster of a compatible version. Installation procedures are described here For Mac users, we recommend installing with brew. Tested with version v1.22.2

Operator Implementation Details

The Operator's implementation presents a general way of managing Kubernetes resources to create a bridge between an external system and Kubernetes.

The code crucial to submitting and monitoring any actual jobs on the external system is located inside the Pod's image. A specific example image for a Pod managing jobs inside the IBM Spectrum LSF workload management package; is given in lsf-pod.

The Operator defines a CRD BridgeJob which gathers information (required and optional) about the external job. The operator's logic is implemented in the controller's reconcile() function and is used to create, and subsequently control, the ConfigMap and the Pod. Both of which are created directly by the operator.

Additionally the operator leverages the following:

  • A Secret with credentials needed to access the external system from the Pod. Assuming the external system requires authentication, the credentials are expected to exist in advance.
  • An optional Secret with credentials needed to access an S3 object storage bucket used to store input or output files.

Custom Resource Definiton BridgeJob

Here is a general overview of the CRD YAML with some defaults filled in. All fields can hold custom values.

yaml kind: BridgeJob apiVersion: bridgejob.ibm.com/v1alpha1 metadata: name: mybridgejob spec: resourceURL: http://mycluster.ibm.com:8080/platform/ resourcesecret: mysecret imagepullpolicy: Always updateinterval: 30 jobproperties: runlimit: 20 # mins jobdata: jobScript: /home/batch.sh scriptlocation: remote s3storage: s3secret: mysecret-s3 endpoint: minio-endpoint.us-south.containers.appdomain.cloud secure: false s3upload: bucket: mybucket files: 'output.txt'

CRD Status

| Field | Short description | | ----------------------- | :--------------------------------------------------------------------------- | | status.jobstatus | Status of CR, should reflect status of job in external system | | status.message | Message providing additional information for DONE/KILLED/FAILED/UNKNOWN jobs | | status.starttime | Start time from external system filled when job is in finished state | | status.completiontime | Completion time from external system filled when job is in finished state |

spec.jobproperties is a map struct of common job properties which can be selected for the job in external system.

Possible job statuses :

  • PENDING
  • RUNNING
  • SUSPENDED
  • DONE
  • FAILED
  • KILLED
  • UNKNOWN

BridgeJob is in a finished state when thejobstatus is in one of the DONE, KILLED, FAILED, or UNKNOWN states. When BridgeJob fails because of missing Kuberentes resources (or data in them), status.message is filled with a brief explanation.


Reconciler

The controller's reconcile logic can be compared to a finite state machine, where every BridgeJob CR specifies a state and actions specific to that state are performed. The possible states can be grouped into two categories as follows:

  • finished: the job's state in the ConfigMap updated by the Pod is Failed', 'Done', 'Killed', or 'Unknown
  • running: the job's state in the ConfigMap updated by the Pod is Pending', 'Running', or 'Suspended

At the beginning of reconciliation, the controller checks if BridgeJob is in a finished or running state. At the end of reconciliation, BridgeJob's state is updated according to the state in the shared ConfigMap.

Notes on S3

If the S3 secret name is not specified in BridgeJob yaml, no information regarding S3 will be propagated to the shared ConfigMap.

If the S3 secret name is specified but it does not exist in the BridgeJob namespace or information is missing (either in Secret or in BridgeJob such as the S3 endpoint), then the CR will fail.

The Pod performs other checks, such as checking for valid credentials, bucket existence.

Local Installation and Deployment

  1. Clone this repository git clone https://github.com/IBM/Bridge-Operator.git
  2. cd operator
  3. To run:

a) Locally outside the cluster

  • Locally from binaries
  • Deploy the CRD: kubectl apply -f config/crd/bases/bridgejob.ibm.com_bridgejobs.yaml
  • Edit the file main.go, for the flag.BoolVar as follows: (that is change true to false)

golang flag.BoolVar(&enableLeaderElection, "leader-elect", false, "Enable leader election for controller manager. "+ "Enabling this will ensure there is only one active controller manager.")

  • Then run the follwing command:
  • make install run

b) Run as a Deployment inside cluster

  • Deploy the CRD: kubectl apply -f config/crd/bases/bridgejob.ibm.com_bridgejobs.yaml
  • make deploy

    • From pre-built resources
    • Deploy all resources at once: kubectl apply -f all.yaml

NOTE: for running on a local Kind cluster comment out all lines in operator/config/prometheus/monitor.yaml before deploying the operator.

Examples

For valid examples of Secrets, see lsfsecret.yaml and s3secret.yaml in samples/core/secrets.

For CR examples, see samples/core/operator and for tutorials see samples/tutorials.


Build and Run

Before building, make sure kustomize is installed.

Clone this repository git clone https://github.com/IBM/Bridge-Operator.git. Then run the following commands:

shell cd operator cd config/manager kustomize edit set image controller=${IMG}:[NEW_VERSION] cd ../../ # Back to the repo root directory make docker-build docker-push IMG=${IMG}:[NEW_VERSION] make deploy IMG=${IMG}:[VERSION] # Deploys controller to K8s cluster specified in ~/.kube/config kustomize build config/default > all.yaml # Generates all resources that have been deployed

Owner

  • Name: International Business Machines
  • Login: IBM
  • Kind: organization
  • Email: awesome@ibm.com
  • Location: United States of America

Citation (CITATION.cff)

cff-version: 1.0.0
message: "If you use the Bridge operator, please consider citing as below."
authors:
  - family-names: Lublinsky, Jennings, Spišaková
    given-names: Boris, Elise, Victoria
title: "A Kubernetes 'Bridge' operator between cloud and external resources"
version: 0.0.1
url: "https://github.com/Accelerated-Discovery/bridge-operator"
doi: https://arxiv.org/abs/2207.02531
date-released: 2022-10-26

GitHub Events

Total
  • Watch event: 2
  • Pull request event: 1
  • Create event: 1
Last Year
  • Watch event: 2
  • Pull request event: 1
  • Create event: 1

Dependencies

operator/Dockerfile docker
  • gcr.io/distroless/static nonroot build
  • golang 1.18 build
pods/ray/Dockerfile docker
  • registry.access.redhat.com/ubi8/python-38 1-100 build
operator/go.mod go
  • cloud.google.com/go v0.81.0
  • github.com/Azure/go-autorest v14.2.0+incompatible
  • github.com/Azure/go-autorest/autorest v0.11.18
  • github.com/Azure/go-autorest/autorest/adal v0.9.13
  • github.com/Azure/go-autorest/autorest/date v0.3.0
  • github.com/Azure/go-autorest/logger v0.2.1
  • github.com/Azure/go-autorest/tracing v0.6.0
  • github.com/PuerkitoBio/purell v1.1.1
  • github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578
  • github.com/beorn7/perks v1.0.1
  • github.com/cespare/xxhash/v2 v2.1.2
  • github.com/davecgh/go-spew v1.1.1
  • github.com/emicklei/go-restful v2.9.5+incompatible
  • github.com/evanphx/json-patch v4.12.0+incompatible
  • github.com/form3tech-oss/jwt-go v3.2.3+incompatible
  • github.com/fsnotify/fsnotify v1.5.1
  • github.com/go-logr/logr v1.2.0
  • github.com/go-logr/zapr v1.2.0
  • github.com/go-openapi/jsonpointer v0.19.5
  • github.com/go-openapi/jsonreference v0.19.5
  • github.com/go-openapi/swag v0.19.14
  • github.com/gogo/protobuf v1.3.2
  • github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
  • github.com/golang/protobuf v1.5.2
  • github.com/google/gnostic v0.5.7-v3refs
  • github.com/google/go-cmp v0.5.5
  • github.com/google/gofuzz v1.1.0
  • github.com/google/uuid v1.1.2
  • github.com/imdario/mergo v0.3.12
  • github.com/josharian/intern v1.0.0
  • github.com/json-iterator/go v1.1.12
  • github.com/mailru/easyjson v0.7.6
  • github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369
  • github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
  • github.com/modern-go/reflect2 v1.0.2
  • github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
  • github.com/nxadm/tail v1.4.8
  • github.com/onsi/ginkgo v1.16.5
  • github.com/onsi/gomega v1.18.1
  • github.com/pkg/errors v0.9.1
  • github.com/prometheus/client_golang v1.12.1
  • github.com/prometheus/client_model v0.2.0
  • github.com/prometheus/common v0.32.1
  • github.com/prometheus/procfs v0.7.3
  • github.com/spf13/pflag v1.0.5
  • go.uber.org/atomic v1.7.0
  • go.uber.org/multierr v1.6.0
  • go.uber.org/zap v1.19.1
  • golang.org/x/crypto v0.0.0-20220214200702-86341886e292
  • golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd
  • golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8
  • golang.org/x/sys v0.0.0-20220209214540-3681064d5158
  • golang.org/x/term v0.0.0-20210927222741-03fcf44c2211
  • golang.org/x/text v0.3.7
  • golang.org/x/time v0.0.0-20220210224613-90d013bbcef8
  • gomodules.xyz/jsonpatch/v2 v2.2.0
  • google.golang.org/appengine v1.6.7
  • google.golang.org/protobuf v1.27.1
  • gopkg.in/inf.v0 v0.9.1
  • gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7
  • gopkg.in/yaml.v2 v2.4.0
  • gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
  • k8s.io/api v0.24.0
  • k8s.io/apiextensions-apiserver v0.24.0
  • k8s.io/apimachinery v0.24.0
  • k8s.io/client-go v0.24.0
  • k8s.io/component-base v0.24.0
  • k8s.io/klog v1.0.0
  • k8s.io/klog/v2 v2.60.1
  • k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42
  • k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9
  • sigs.k8s.io/controller-runtime v0.12.1
  • sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2
  • sigs.k8s.io/structured-merge-diff/v4 v4.2.1
  • sigs.k8s.io/yaml v1.3.0
operator/go.sum go
  • 893 dependencies
pods/lsf/go.mod go
  • github.com/PuerkitoBio/purell v1.1.1
  • github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578
  • github.com/clbanning/mxj/v2 v2.5.6
  • github.com/davecgh/go-spew v1.1.1
  • github.com/dustin/go-humanize v1.0.0
  • github.com/emicklei/go-restful v2.9.5+incompatible
  • github.com/go-logr/logr v1.2.0
  • github.com/go-openapi/jsonpointer v0.19.5
  • github.com/go-openapi/jsonreference v0.19.5
  • github.com/go-openapi/swag v0.19.14
  • github.com/gogo/protobuf v1.3.2
  • github.com/golang/protobuf v1.5.2
  • github.com/google/gnostic v0.5.7-v3refs
  • github.com/google/gofuzz v1.1.0
  • github.com/google/uuid v1.3.0
  • github.com/ibm/bridge-operator/podutils v0.0.1
  • github.com/josharian/intern v1.0.0
  • github.com/json-iterator/go v1.1.12
  • github.com/klauspost/compress v1.15.9
  • github.com/klauspost/cpuid/v2 v2.1.0
  • github.com/mailru/easyjson v0.7.6
  • github.com/minio/md5-simd v1.1.2
  • github.com/minio/minio-go/v7 v7.0.34
  • github.com/minio/sha256-simd v1.0.0
  • github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
  • github.com/modern-go/reflect2 v1.0.2
  • github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
  • github.com/rs/xid v1.4.0
  • github.com/sirupsen/logrus v1.9.0
  • golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa
  • golang.org/x/net v0.0.0-20220722155237-a158d28d115b
  • golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8
  • golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f
  • golang.org/x/term v0.0.0-20210927222741-03fcf44c2211
  • golang.org/x/text v0.3.7
  • golang.org/x/time v0.0.0-20220210224613-90d013bbcef8
  • google.golang.org/appengine v1.6.7
  • google.golang.org/protobuf v1.27.1
  • gopkg.in/inf.v0 v0.9.1
  • gopkg.in/ini.v1 v1.66.6
  • gopkg.in/yaml.v2 v2.4.0
  • gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
  • k8s.io/api v0.24.3
  • k8s.io/apimachinery v0.24.3
  • k8s.io/client-go v0.24.3
  • k8s.io/klog v1.0.0
  • k8s.io/klog/v2 v2.60.1
  • k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42
  • k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9
  • sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2
  • sigs.k8s.io/structured-merge-diff/v4 v4.2.1
  • sigs.k8s.io/yaml v1.2.0
pods/lsf/go.sum go
  • 603 dependencies
pods/quantum/go.mod go
  • github.com/PuerkitoBio/purell v1.1.1
  • github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578
  • github.com/davecgh/go-spew v1.1.1
  • github.com/dustin/go-humanize v1.0.0
  • github.com/emicklei/go-restful v2.9.5+incompatible
  • github.com/go-logr/logr v1.2.0
  • github.com/go-openapi/jsonpointer v0.19.5
  • github.com/go-openapi/jsonreference v0.19.5
  • github.com/go-openapi/swag v0.19.14
  • github.com/gogo/protobuf v1.3.2
  • github.com/golang/protobuf v1.5.2
  • github.com/google/gnostic v0.5.7-v3refs
  • github.com/google/gofuzz v1.1.0
  • github.com/google/uuid v1.3.0
  • github.com/ibm/bridge-operator/podutils v0.0.1
  • github.com/josharian/intern v1.0.0
  • github.com/json-iterator/go v1.1.12
  • github.com/klauspost/compress v1.15.9
  • github.com/klauspost/cpuid/v2 v2.1.0
  • github.com/mailru/easyjson v0.7.6
  • github.com/minio/md5-simd v1.1.2
  • github.com/minio/minio-go/v7 v7.0.34
  • github.com/minio/sha256-simd v1.0.0
  • github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
  • github.com/modern-go/reflect2 v1.0.2
  • github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
  • github.com/rs/xid v1.4.0
  • github.com/sirupsen/logrus v1.9.0
  • golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa
  • golang.org/x/net v0.0.0-20220722155237-a158d28d115b
  • golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8
  • golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f
  • golang.org/x/term v0.0.0-20210927222741-03fcf44c2211
  • golang.org/x/text v0.3.7
  • golang.org/x/time v0.0.0-20220210224613-90d013bbcef8
  • google.golang.org/appengine v1.6.7
  • google.golang.org/protobuf v1.27.1
  • gopkg.in/inf.v0 v0.9.1
  • gopkg.in/ini.v1 v1.66.6
  • gopkg.in/yaml.v2 v2.4.0
  • gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
  • k8s.io/api v0.24.3
  • k8s.io/apimachinery v0.24.3
  • k8s.io/client-go v0.24.3
  • k8s.io/klog v1.0.0
  • k8s.io/klog/v2 v2.60.1
  • k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42
  • k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9
  • sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2
  • sigs.k8s.io/structured-merge-diff/v4 v4.2.1
  • sigs.k8s.io/yaml v1.2.0
pods/quantum/go.sum go
  • 603 dependencies
pods/slurm/go.mod go
  • github.com/PuerkitoBio/purell v1.1.1
  • github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578
  • github.com/davecgh/go-spew v1.1.1
  • github.com/dustin/go-humanize v1.0.0
  • github.com/emicklei/go-restful v2.9.5+incompatible
  • github.com/go-logr/logr v1.2.0
  • github.com/go-openapi/jsonpointer v0.19.5
  • github.com/go-openapi/jsonreference v0.19.5
  • github.com/go-openapi/swag v0.19.14
  • github.com/gogo/protobuf v1.3.2
  • github.com/golang/protobuf v1.5.2
  • github.com/google/gnostic v0.5.7-v3refs
  • github.com/google/gofuzz v1.1.0
  • github.com/google/uuid v1.3.0
  • github.com/ibm/bridge-operator/podutils v0.0.1
  • github.com/josharian/intern v1.0.0
  • github.com/json-iterator/go v1.1.12
  • github.com/klauspost/compress v1.15.9
  • github.com/klauspost/cpuid/v2 v2.1.0
  • github.com/mailru/easyjson v0.7.6
  • github.com/minio/md5-simd v1.1.2
  • github.com/minio/minio-go/v7 v7.0.34
  • github.com/minio/sha256-simd v1.0.0
  • github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
  • github.com/modern-go/reflect2 v1.0.2
  • github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
  • github.com/rs/xid v1.4.0
  • github.com/sirupsen/logrus v1.9.0
  • golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa
  • golang.org/x/net v0.0.0-20220722155237-a158d28d115b
  • golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8
  • golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f
  • golang.org/x/term v0.0.0-20210927222741-03fcf44c2211
  • golang.org/x/text v0.3.7
  • golang.org/x/time v0.0.0-20220210224613-90d013bbcef8
  • google.golang.org/appengine v1.6.7
  • google.golang.org/protobuf v1.27.1
  • gopkg.in/inf.v0 v0.9.1
  • gopkg.in/ini.v1 v1.66.6
  • gopkg.in/yaml.v2 v2.4.0
  • gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
  • k8s.io/api v0.24.3
  • k8s.io/apimachinery v0.24.3
  • k8s.io/client-go v0.24.3
  • k8s.io/klog v1.0.0
  • k8s.io/klog/v2 v2.60.1
  • k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42
  • k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9
  • sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2
  • sigs.k8s.io/structured-merge-diff/v4 v4.2.1
  • sigs.k8s.io/yaml v1.2.0
pods/slurm/go.sum go
  • 602 dependencies
pods/utils/go.mod go
  • github.com/PuerkitoBio/purell v1.1.1
  • github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578
  • github.com/davecgh/go-spew v1.1.1
  • github.com/dustin/go-humanize v1.0.0
  • github.com/emicklei/go-restful v2.9.5+incompatible
  • github.com/go-logr/logr v1.2.0
  • github.com/go-openapi/jsonpointer v0.19.5
  • github.com/go-openapi/jsonreference v0.19.5
  • github.com/go-openapi/swag v0.19.14
  • github.com/gogo/protobuf v1.3.2
  • github.com/golang/protobuf v1.5.2
  • github.com/google/gnostic v0.5.7-v3refs
  • github.com/google/gofuzz v1.1.0
  • github.com/google/uuid v1.3.0
  • github.com/josharian/intern v1.0.0
  • github.com/json-iterator/go v1.1.12
  • github.com/klauspost/compress v1.15.9
  • github.com/klauspost/cpuid/v2 v2.1.0
  • github.com/mailru/easyjson v0.7.6
  • github.com/minio/md5-simd v1.1.2
  • github.com/minio/minio-go/v7 v7.0.34
  • github.com/minio/sha256-simd v1.0.0
  • github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
  • github.com/modern-go/reflect2 v1.0.2
  • github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
  • github.com/rs/xid v1.4.0
  • github.com/sirupsen/logrus v1.9.0
  • golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa
  • golang.org/x/net v0.0.0-20220722155237-a158d28d115b
  • golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8
  • golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f
  • golang.org/x/term v0.0.0-20210927222741-03fcf44c2211
  • golang.org/x/text v0.3.7
  • golang.org/x/time v0.0.0-20220210224613-90d013bbcef8
  • google.golang.org/appengine v1.6.7
  • google.golang.org/protobuf v1.27.1
  • gopkg.in/inf.v0 v0.9.1
  • gopkg.in/ini.v1 v1.66.6
  • gopkg.in/yaml.v2 v2.4.0
  • gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
  • k8s.io/api v0.24.3
  • k8s.io/apimachinery v0.24.3
  • k8s.io/client-go v0.24.3
  • k8s.io/klog v1.0.0
  • k8s.io/klog/v2 v2.60.1
  • k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42
  • k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9
  • sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2
  • sigs.k8s.io/structured-merge-diff/v4 v4.2.1
  • sigs.k8s.io/yaml v1.2.0
pods/utils/go.sum go
  • 602 dependencies