Skip to content
This repository has been archived by the owner on Oct 10, 2023. It is now read-only.

Commit

Permalink
pinniped-components: Extract GetPinnipedKubeconfig and GetPinnipedInf…
Browse files Browse the repository at this point in the history
…oFromCluster to shared lib
  • Loading branch information
benjaminapetersen committed Mar 29, 2023
1 parent 8c695d7 commit d9b5b15
Show file tree
Hide file tree
Showing 22 changed files with 496 additions and 252 deletions.
80 changes: 5 additions & 75 deletions cli/core/pkg/auth/tkg/kube_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,46 +4,27 @@
package tkgauth

import (
"encoding/base64"
"encoding/json"
"fmt"
"os"
"path/filepath"
"strconv"
"time"

"github.com/pkg/errors"

"k8s.io/client-go/discovery"
clientauthenticationv1beta1 "k8s.io/client-go/pkg/apis/clientauthentication/v1beta1"
"k8s.io/client-go/tools/clientcmd"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"

kubeutils "github.com/vmware-tanzu/tanzu-framework/cli/core/pkg/auth/utils/kubeconfig"
"github.com/vmware-tanzu/tanzu-framework/pinniped-components/common/pkg/pinnipedinfo"

pinnipedkubeconfig "github.com/vmware-tanzu/tanzu-framework/pinniped-components/common/pkg/kubeconfig"
)

const (
// ConciergeNamespace is the namespace where pinniped concierge is deployed
ConciergeNamespace = "pinniped-concierge"

// ConciergeAuthenticatorType is the pinniped concierge authenticator type
ConciergeAuthenticatorType = "jwt"

// ConciergeAuthenticatorName is the pinniped concierge authenticator object name
ConciergeAuthenticatorName = "tkg-jwt-authenticator"

// PinnipedOIDCScopes are the scopes of pinniped oidc
PinnipedOIDCScopes = "offline_access,openid,pinniped:request-audience"

// TanzuLocalKubeDir is the local config directory
TanzuLocalKubeDir = ".kube-tanzu"

// TanzuKubeconfigFile is the name the of the kubeconfig file
TanzuKubeconfigFile = "config"

// DefaultPinnipedLoginTimeout is the default login timeout
DefaultPinnipedLoginTimeout = time.Minute

// DefaultClusterInfoConfigMap is the default ConfigMap looked up in the kube-public namespace when generating a kubeconfig.
DefaultClusterInfoConfigMap = "cluster-info"
)
Expand Down Expand Up @@ -80,7 +61,7 @@ func KubeconfigWithPinnipedAuthLoginPlugin(endpoint string, options *KubeConfigO
return
}

config, err := GetPinnipedKubeconfig(clusterInfo, pinnipedInfo, pinnipedInfo.ClusterName, pinnipedInfo.Issuer)
config, err := pinnipedkubeconfig.GetPinnipedKubeconfig(clusterInfo, pinnipedInfo, pinnipedInfo.ClusterName, pinnipedInfo.Issuer)
if err != nil {
err = errors.Wrap(err, "unable to get the kubeconfig")
return
Expand Down Expand Up @@ -125,7 +106,7 @@ func GetServerKubernetesVersion(kubeconfigPath, context string) (string, error)
return "", errors.Errorf("Unable to set up rest config due to : %v", err)
}
// set the timeout to give user sufficient time to enter the login credentials
restConfig.Timeout = DefaultPinnipedLoginTimeout
restConfig.Timeout = pinnipedkubeconfig.DefaultPinnipedLoginTimeout

discoveryClient, err = discovery.NewDiscoveryClientForConfig(restConfig)
if err != nil {
Expand All @@ -152,57 +133,6 @@ func loadKubeconfigAndEnsureContext(kubeConfigPath, context string) ([]byte, err
return clientcmd.Write(*config)
}

// GetPinnipedKubeconfig generate kubeconfig given cluster-info and pinniped-info and the requested audience
func GetPinnipedKubeconfig(cluster *clientcmdapi.Cluster, pinnipedInfo *pinnipedinfo.PinnipedInfo, clustername, audience string) (*clientcmdapi.Config, error) {
execConfig := clientcmdapi.ExecConfig{
APIVersion: clientauthenticationv1beta1.SchemeGroupVersion.String(),
Args: []string{},
Env: []clientcmdapi.ExecEnvVar{},
}

execConfig.Command = "tanzu"
execConfig.Args = append([]string{"pinniped-auth", "login"}, execConfig.Args...)

conciergeEndpoint := cluster.Server
if pinnipedInfo.ConciergeEndpoint != "" {
conciergeEndpoint = pinnipedInfo.ConciergeEndpoint
}

// configure concierge
execConfig.Args = append(execConfig.Args,
"--enable-concierge",
"--concierge-authenticator-name="+ConciergeAuthenticatorName,
"--concierge-authenticator-type="+ConciergeAuthenticatorType,
"--concierge-is-cluster-scoped="+strconv.FormatBool(pinnipedInfo.ConciergeIsClusterScoped),
"--concierge-endpoint="+conciergeEndpoint,
"--concierge-ca-bundle-data="+base64.StdEncoding.EncodeToString(cluster.CertificateAuthorityData),
"--issuer="+pinnipedInfo.Issuer, // configure OIDC
"--scopes="+PinnipedOIDCScopes,
"--ca-bundle-data="+pinnipedInfo.IssuerCABundleData,
"--request-audience="+audience,
)

if !pinnipedInfo.ConciergeIsClusterScoped {
execConfig.Args = append(execConfig.Args, "--concierge-namespace="+ConciergeNamespace)
}

if os.Getenv("TANZU_CLI_PINNIPED_AUTH_LOGIN_SKIP_BROWSER") != "" {
execConfig.Args = append(execConfig.Args, "--skip-browser")
}

username := "tanzu-cli-" + clustername
contextName := fmt.Sprintf("%s@%s", username, clustername)

return &clientcmdapi.Config{
Kind: "Config",
APIVersion: clientcmdapi.SchemeGroupVersion.Version,
Clusters: map[string]*clientcmdapi.Cluster{clustername: cluster},
AuthInfos: map[string]*clientcmdapi.AuthInfo{username: {Exec: &execConfig}},
Contexts: map[string]*clientcmdapi.Context{contextName: {Cluster: clustername, AuthInfo: username}},
CurrentContext: contextName,
}, nil
}

// TanzuLocalKubeConfigPath returns the local tanzu kubeconfig path
func TanzuLocalKubeConfigPath() (path string, err error) {
home, err := os.UserHomeDir()
Expand Down
13 changes: 6 additions & 7 deletions cli/core/pkg/auth/tkg/kube_config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,15 @@ import (
"strconv"
"testing"

. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"

"github.com/onsi/gomega/ghttp"
clientauthenticationv1beta1 "k8s.io/client-go/pkg/apis/clientauthentication/v1beta1"
"k8s.io/client-go/tools/clientcmd"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"

tkgauth "github.com/vmware-tanzu/tanzu-framework/cli/core/pkg/auth/tkg"
"github.com/vmware-tanzu/tanzu-framework/cli/core/pkg/fakes/helper"
pinnipedkubeconfig "github.com/vmware-tanzu/tanzu-framework/pinniped-components/common/pkg/kubeconfig"

"github.com/vmware-tanzu/tanzu-framework/pinniped-components/common/pkg/pinnipedinfo"
)

Expand Down Expand Up @@ -289,19 +288,19 @@ func getExpectedExecConfig(endpoint string, issuer string, issuerCA string, conc
args := []string{
"pinniped-auth", "login",
"--enable-concierge",
"--concierge-authenticator-name=" + tkgauth.ConciergeAuthenticatorName,
"--concierge-authenticator-type=" + tkgauth.ConciergeAuthenticatorType,
"--concierge-authenticator-name=" + pinnipedkubeconfig.ConciergeAuthenticatorName,
"--concierge-authenticator-type=" + pinnipedkubeconfig.ConciergeAuthenticatorType,
"--concierge-is-cluster-scoped=" + strconv.FormatBool(conciergeIsClusterScoped),
"--concierge-endpoint=" + endpoint,
"--concierge-ca-bundle-data=" + base64.StdEncoding.EncodeToString(certBytes),
"--issuer=" + issuer,
"--scopes=" + tkgauth.PinnipedOIDCScopes,
"--scopes=" + pinnipedkubeconfig.PinnipedOIDCScopes,
"--ca-bundle-data=" + issuerCA,
"--request-audience=" + issuer,
}

if !conciergeIsClusterScoped {
args = append(args, "--concierge-namespace="+tkgauth.ConciergeNamespace)
args = append(args, "--concierge-namespace="+pinnipedkubeconfig.ConciergeNamespace)
}

execConfig := &clientcmdapi.ExecConfig{
Expand Down
12 changes: 6 additions & 6 deletions cmd/cli/plugin/cluster/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,12 @@ require (
github.com/spf13/pflag v1.0.5
github.com/vmware-tanzu/tanzu-framework/apis/run v0.0.0-00010101000000-000000000000
github.com/vmware-tanzu/tanzu-framework/cli/runtime v0.0.0-00010101000000-000000000000
github.com/vmware-tanzu/tanzu-framework/pinniped-components/common v0.0.0-00010101000000-000000000000
github.com/vmware-tanzu/tanzu-framework/pkg/v1/tkr v0.0.0-00010101000000-000000000000
github.com/vmware-tanzu/tanzu-framework/tkg v0.0.0-00010101000000-000000000000
gopkg.in/yaml.v3 v3.0.1
k8s.io/api v0.24.4
k8s.io/apimachinery v0.24.4
k8s.io/api v0.26.3
k8s.io/apimachinery v0.26.3
sigs.k8s.io/cluster-api v1.2.8
sigs.k8s.io/controller-runtime v0.12.3
sigs.k8s.io/yaml v1.3.0
Expand Down Expand Up @@ -202,7 +203,6 @@ require (
github.com/vmware-tanzu/tanzu-framework/capabilities/client v0.0.0-00010101000000-000000000000 // indirect
github.com/vmware-tanzu/tanzu-framework/cli/core v0.0.0-20220914003300-5b2ed024556a // indirect
github.com/vmware-tanzu/tanzu-framework/packageclients v0.0.0-20220908202723-7a1ddb97efab // indirect
github.com/vmware-tanzu/tanzu-framework/pinniped-components/common v0.0.0-00010101000000-000000000000 // indirect
github.com/vmware-tanzu/tanzu-framework/tkr v0.0.0-00010101000000-000000000000 // indirect
github.com/vmware-tanzu/tanzu-framework/util v0.0.0-00010101000000-000000000000 // indirect
github.com/vmware/govmomi v0.30.2 // indirect
Expand Down Expand Up @@ -233,13 +233,13 @@ require (
gopkg.in/yaml.v2 v2.4.0 // indirect
k8s.io/apiextensions-apiserver v0.24.4 // indirect
k8s.io/apiserver v0.24.4 // indirect
k8s.io/client-go v0.24.4 // indirect
k8s.io/client-go v0.26.3 // indirect
k8s.io/cluster-bootstrap v0.24.4 // indirect
k8s.io/component-base v0.24.4 // indirect
k8s.io/klog/v2 v2.80.0 // indirect
k8s.io/klog/v2 v2.80.1 // indirect
k8s.io/kube-openapi v0.0.0-20221207184640-f3cff1453715 // indirect
k8s.io/kubectl v0.24.0 // indirect
k8s.io/utils v0.0.0-20220812165043-ad590609e2e5 // indirect
k8s.io/utils v0.0.0-20221107191617-1a15be271d1d // indirect
sigs.k8s.io/cluster-api-provider-aws/v2 v2.0.2 // indirect
sigs.k8s.io/cluster-api-provider-azure v1.6.1 // indirect
sigs.k8s.io/cluster-api-provider-vsphere v1.5.3 // indirect
Expand Down
17 changes: 10 additions & 7 deletions cmd/cli/plugin/cluster/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -2018,17 +2018,19 @@ inet.af/netaddr v0.0.0-20220811202034-502d2d690317 h1:U2fwK6P2EqmopP/hFLTOAjWTki
k8s.io/api v0.18.2/go.mod h1:SJCWI7OLzhZSvbY7U8zwNl9UA4o1fizoug34OV/2r78=
k8s.io/api v0.19.2/go.mod h1:IQpK0zFQ1xc5iNIQPqzgoOwuFugaYHK4iCknlAQP9nI=
k8s.io/api v0.24.0/go.mod h1:5Jl90IUrJHUJYEMANRURMiVvJ0g7Ax7r3R1bqO8zx8I=
k8s.io/api v0.24.4 h1:I5Y645gJ8zWKawyr78lVfDQkZrAViSbeRXsPZWTxmXk=
k8s.io/api v0.24.4/go.mod h1:42pVfA0NRxrtJhZQOvRSyZcJihzAdU59WBtTjYcB0/M=
k8s.io/api v0.26.3 h1:emf74GIQMTik01Aum9dPP0gAypL8JTLl/lHa4V9RFSU=
k8s.io/api v0.26.3/go.mod h1:PXsqwPMXBSBcL1lJ9CYDKy7kIReUydukS5JiRlxC3qE=
k8s.io/apiextensions-apiserver v0.18.2/go.mod h1:q3faSnRGmYimiocj6cHQ1I3WpLqmDgJFlKL37fC4ZvY=
k8s.io/apiextensions-apiserver v0.19.2/go.mod h1:EYNjpqIAvNZe+svXVx9j4uBaVhTB4C94HkY3w058qcg=
k8s.io/apiextensions-apiserver v0.24.4 h1:w53Pm4zu8fCt9WfiRgS2YI6LE6I4NJ5aUi78GElD3K8=
k8s.io/apiextensions-apiserver v0.24.4/go.mod h1:iDK+Xb4jsPNnRGj5jU/WqqjLvt8363M7cKixKe1C9+U=
k8s.io/apimachinery v0.18.2/go.mod h1:9SnR/e11v5IbyPCGbvJViimtJ0SwHG4nfZFjU77ftcA=
k8s.io/apimachinery v0.19.2/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA=
k8s.io/apimachinery v0.24.0/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM=
k8s.io/apimachinery v0.24.4 h1:S0Ur3J/PbivTcL43EdSdPhqCqKla2NIuneNwZcTDeGQ=
k8s.io/apimachinery v0.24.4/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM=
k8s.io/apimachinery v0.26.3 h1:dQx6PNETJ7nODU3XPtrwkfuubs6w7sX0M8n61zHIV/k=
k8s.io/apimachinery v0.26.3/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I=
k8s.io/apiserver v0.18.2/go.mod h1:Xbh066NqrZO8cbsoenCwyDJ1OSi8Ag8I2lezeHxzwzw=
k8s.io/apiserver v0.19.2/go.mod h1:FreAq0bJ2vtZFj9Ago/X0oNGC51GfubKK/ViOKfVAOA=
k8s.io/apiserver v0.24.4 h1:ei+OunC83pVEiagBeZhTnRZvkclHgpzs/rrm7aSBDYs=
Expand All @@ -2037,8 +2039,9 @@ k8s.io/cli-runtime v0.24.0/go.mod h1:9XxoZDsEkRFUThnwqNviqzljtT/LdHtNWvcNFrAXl0A
k8s.io/client-go v0.18.2/go.mod h1:Xcm5wVGXX9HAA2JJ2sSBUn3tCJ+4SVlCbl2MNNv+CIU=
k8s.io/client-go v0.19.2/go.mod h1:S5wPhCqyDNAlzM9CnEdgTGV4OqhsW3jGO1UM1epwfJA=
k8s.io/client-go v0.24.0/go.mod h1:VFPQET+cAFpYxh6Bq6f4xyMY80G6jKKktU6G0m00VDw=
k8s.io/client-go v0.24.4 h1:hIAIJZIPyaw46AkxwyR0FRfM/pRxpUNTd3ysYu9vyRg=
k8s.io/client-go v0.24.4/go.mod h1:+AxlPWw/H6f+EJhRSjIeALaJT4tbeB/8g9BNvXGPd0Y=
k8s.io/client-go v0.26.3 h1:k1UY+KXfkxV2ScEL3gilKcF7761xkYsSD6BC9szIu8s=
k8s.io/client-go v0.26.3/go.mod h1:ZPNu9lm8/dbRIPAgteN30RSXea6vrCpFvq+MateTUuQ=
k8s.io/cluster-bootstrap v0.24.4 h1:ZryK73DHK4dv5yAr5081yO03rrEK2Dz9jUtymqEle9Q=
k8s.io/cluster-bootstrap v0.24.4/go.mod h1:D9SYcEo302eah8yxFoPciGy8dRnReZr7fG+waTAvj14=
k8s.io/code-generator v0.18.2/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc=
Expand Down Expand Up @@ -2066,8 +2069,8 @@ k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
k8s.io/klog/v2 v2.80.0 h1:lyJt0TWMPaGoODa8B8bUuxgHS3W/m/bNr2cca3brA/g=
k8s.io/klog/v2 v2.80.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
k8s.io/klog/v2 v2.80.1 h1:atnLQ121W371wYYFawwYx1aEY2eUfs4l3J72wtgAwV4=
k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
k8s.io/kube-openapi v0.0.0-20200121204235-bf4fb3bd569c/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E=
k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o=
k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw=
Expand All @@ -2082,8 +2085,8 @@ k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/
k8s.io/utils v0.0.0-20200912215256-4140de9c8800/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
k8s.io/utils v0.0.0-20220812165043-ad590609e2e5 h1:XmRqFcQlCy/lKRZ39j+RVpokYNroHPqV3mcBRfnhT5o=
k8s.io/utils v0.0.0-20220812165043-ad590609e2e5/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
k8s.io/utils v0.0.0-20221107191617-1a15be271d1d h1:0Smp/HP1OH4Rvhe+4B8nWGERtlqAGSftbSbbmm45oFs=
k8s.io/utils v0.0.0-20221107191617-1a15be271d1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
mvdan.cc/gofumpt v0.1.1/go.mod h1:yXG1r1WqZVKWbVRtBWKWX9+CxGYfA51nSomhM0woR48=
mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc=
mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4=
Expand Down
6 changes: 3 additions & 3 deletions cmd/cli/plugin/cluster/kubeconfig_get.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ import (

configapi "github.com/vmware-tanzu/tanzu-framework/cli/runtime/apis/config/v1alpha1"
"github.com/vmware-tanzu/tanzu-framework/cli/runtime/config"
tkgauth "github.com/vmware-tanzu/tanzu-framework/tkg/auth"

tkgclient "github.com/vmware-tanzu/tanzu-framework/tkg/client"
"github.com/vmware-tanzu/tanzu-framework/tkg/tkgctl"

pinnipedkubeconfig "github.com/vmware-tanzu/tanzu-framework/pinniped-components/common/pkg/kubeconfig"
)

type getClusterKubeconfigOptions struct {
Expand Down Expand Up @@ -102,7 +102,7 @@ func getPinnipedKubeconfig(tkgctlClient tkgctl.TKGClient, workloadClusterName st
audience = *clusterPinnipedInfo.ClusterAudience
}

kubeconfig, err := tkgauth.GetPinnipedKubeconfig(clusterPinnipedInfo.ClusterInfo, clusterPinnipedInfo.PinnipedInfo,
kubeconfig, err := pinnipedkubeconfig.GetPinnipedKubeconfig(clusterPinnipedInfo.ClusterInfo, clusterPinnipedInfo.PinnipedInfo,
clusterPinnipedInfo.ClusterName, audience)

if err != nil {
Expand Down
5 changes: 3 additions & 2 deletions cmd/cli/plugin/managementcluster/kubeconfig_get.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ import (

configapi "github.com/vmware-tanzu/tanzu-framework/cli/runtime/apis/config/v1alpha1"
"github.com/vmware-tanzu/tanzu-framework/cli/runtime/config"
tkgauth "github.com/vmware-tanzu/tanzu-framework/tkg/auth"

pinnipedkubeconfig "github.com/vmware-tanzu/tanzu-framework/pinniped-components/common/pkg/kubeconfig"
)

type getClusterKubeconfigOptions struct {
Expand Down Expand Up @@ -102,7 +103,7 @@ func getPinnipedKubeconfig(tkgctlClient tkgctl.TKGClient, mcClustername string)
// for management cluster the audience would be set to IssuerURL
audience := clusterPinnipedInfo.PinnipedInfo.Issuer

kubeconfig, _ := tkgauth.GetPinnipedKubeconfig(clusterPinnipedInfo.ClusterInfo, clusterPinnipedInfo.PinnipedInfo,
kubeconfig, _ := pinnipedkubeconfig.GetPinnipedKubeconfig(clusterPinnipedInfo.ClusterInfo, clusterPinnipedInfo.PinnipedInfo,
clusterPinnipedInfo.ClusterName, audience)

kubeconfigbytes, err := json.Marshal(kubeconfig)
Expand Down
10 changes: 5 additions & 5 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ require (
google.golang.org/grpc v1.50.1
google.golang.org/protobuf v1.28.1
gopkg.in/yaml.v2 v2.4.0
k8s.io/api v0.24.4
k8s.io/apimachinery v0.24.4
k8s.io/client-go v0.24.4
k8s.io/api v0.26.3
k8s.io/apimachinery v0.26.3
k8s.io/client-go v0.26.3
sigs.k8s.io/cluster-api v1.2.8
sigs.k8s.io/controller-runtime v0.12.3
)
Expand Down Expand Up @@ -246,10 +246,10 @@ require (
k8s.io/apiserver v0.24.4 // indirect
k8s.io/cluster-bootstrap v0.24.4 // indirect
k8s.io/component-base v0.24.4 // indirect
k8s.io/klog/v2 v2.80.0 // indirect
k8s.io/klog/v2 v2.80.1 // indirect
k8s.io/kube-openapi v0.0.0-20221207184640-f3cff1453715 // indirect
k8s.io/kubectl v0.24.0 // indirect
k8s.io/utils v0.0.0-20220812165043-ad590609e2e5 // indirect
k8s.io/utils v0.0.0-20221107191617-1a15be271d1d // indirect
sigs.k8s.io/cluster-api-provider-aws/v2 v2.0.2 // indirect
sigs.k8s.io/cluster-api-provider-azure v1.6.1 // indirect
sigs.k8s.io/cluster-api-provider-vsphere v1.5.3 // indirect
Expand Down
Loading

0 comments on commit d9b5b15

Please sign in to comment.