go modへ移行したときに依存性ではまった

- いままではgo modは使わずにGOPATHを利用する普通のパッケージ管理方式でやっていた
- ビルドしようとしたときに最新のパッケージをダウンロードするからか、どこかのタイミングでビルドが失敗するようになった

## やること
- go modへ移行して、ビルド成功していた時のバージョンを指定する

## サンプル
```go
package main

import (
    "context"
    "encoding/json"
    "fmt"
    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    "k8s.io/client-go/kubernetes"
    "k8s.io/client-go/tools/clientcmd"
    "log"
    "os"
    "path/filepath"
)

func main() {
    // Kubeconfig縺ｮ繝輔ぃ繧､繝ｫ繝代せ繧呈欠螳・    kubeconfig := filepath.Join(os.Getenv("HOME"), ".kube", "config")
    config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
    if err != nil {
        log.Fatal(err)
    }

    // Kubeconfig繧定ｪｭ縺ｿ霎ｼ繧
    clientset, err := kubernetes.NewForConfig(config)
    if err != nil {
        log.Fatal(err)
    }

    // Pod荳隕ｧ繧貞他縺ｳ蜃ｺ縺・    namespace := "default"
    pods, err := clientset.CoreV1().Pods(namespace).List(context.TODO(), metav1.ListOptions{
        LabelSelector: "app=vamdemic111aaa-app",
    })
    if err != nil {
        log.Fatalln("failed to get pods:", err)
    }

    m := map[string]string{}

    for _, pod := range pods.Items {
       m[pod.Name] = string(pod.Status.Phase)
    }

    data, _ := json.Marshal(m)
    fmt.Printf(string(data))
}

```

## 整理

```
go mod tidy
```

## エラー内容

```
go: finding k8s.io/utils latest
go: finding golang.org/x/time latest
main imports
        k8s.io/client-go/kubernetes imports
        k8s.io/client-go/discovery imports
        github.com/googleapis/gnostic/OpenAPIv2: module github.com/googleapis/gnostic@latest found (v0.5.5), but does not contain package github.com/googleapis/gnostic/OpenAPIv2
main imports
        k8s.io/client-go/kubernetes imports
        k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1 imports
        k8s.io/api/auditregistration/v1alpha1: module k8s.io/api@latest found (v0.21.1), but does not contain package k8s.io/api/auditregistration/v1alpha1
main imports
        k8s.io/client-go/kubernetes imports
        k8s.io/client-go/kubernetes/typed/batch/v2alpha1 imports
        k8s.io/api/batch/v2alpha1: module k8s.io/api@latest found (v0.21.1), but does not contain package k8s.io/api/batch/v2alpha1
main imports
        k8s.io/client-go/kubernetes imports
        k8s.io/client-go/kubernetes/typed/settings/v1alpha1 imports
        k8s.io/api/settings/v1alpha1: module k8s.io/api@latest found (v0.21.1), but does not contain package k8s.io/api/settings/v1alpha1
```

## ひとつづつつぶしていく

### k8s.io/api
```
main imports
        k8s.io/client-go/kubernetes imports
        k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1 imports
        k8s.io/api/auditregistration/v1alpha1: module k8s.io/api@latest found (v0.21.1), but does not contain package k8s.io/api/auditregistration/v1alpha1
```

### バージョン一覧
https://pkg.go.dev/k8s.io/api/core/v1?tab=versions

以前は動いていたので、少し前のバージョンをgo modで指定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/293481/5b029aad-9c19-f8f2-2cdd-9fd4dd83a7a3.png)

### 指定
```
go mod edit  -require  k8s.io/api/auditregistration@v0.20.2
```

### 試す
消えてる

```
yuta:/tmp/go $ go mod tidy
go: downloading k8s.io/api v0.20.2
go: extracting k8s.io/api v0.20.2
main imports
        k8s.io/client-go/kubernetes imports
        k8s.io/client-go/discovery imports
        github.com/googleapis/gnostic/OpenAPIv2: module github.com/googleapis/gnostic@latest found (v0.5.5), but does not contain package github.com/googleapis/gnostic/OpenAPIv2
main imports
        k8s.io/client-go/kubernetes imports
        k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1 imports
        k8s.io/api/auditregistration/v1alpha1: module k8s.io/api@latest found (v0.21.1), but does not contain package k8s.io/api/auditregistration/v1alpha1
main imports
        k8s.io/client-go/kubernetes imports
        k8s.io/client-go/kubernetes/typed/settings/v1alpha1 imports
        k8s.io/api/settings/v1alpha1: module k8s.io/api@latest found (v0.21.1), but does not contain package k8s.io/api/settings/v1alpha1
```


```
go mod edit  -require  k8s.io/apimachinery@v0.20.2
```

## と、いろいろやっていたのだけど、同じことをしている方がいた！
https://qiita.com/TsuyoshiUshio@github/items/35818fac201e164928c3

結論 `go get k8s.io/client-go@v0.20.4`とするといいみたい