argocdでsecretGenerator/configmapGeneratorでenvを使うと  json: unknown field "env" がでる

# やりたいこと

kustomizeでsecretgenerator + argocdでCD

# 問題


```
argocd app create ...
...json: unknown field "env(s)"
```


# Version

argo-cd: v1.6.0

# やろうとしたこと詳細

kustomizeでsecretGeneratorを使ってgithubにpushされたものをargo cdでdeployする

```kustomization.yaml
namePrefix: kustomize-

resources:
- guestbook-ui-deployment.yaml
- guestbook-ui-svc.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

secretGenerator:
- name: mysecrets
  env: foo.env
```


# 原因

- [Kustomize v2.1.0](https://kubernetes-sigs.github.io/kustomize/blog/2019/06/18/v2.1.0/) で [envs field](https://kubernetes-sigs.github.io/kustomize/blog/2019/06/18/v2.1.0/#envs-field)という変更がある

> An envs sub-field has been added to both configMapGenerator and secretGenerator, replacing the now deprecated (and singular) env field. The new field accepts lists, just like its sibling fields files and literals.

- ArgoCD内では、 `Application` ごとに指定できる https://argoproj.github.io/argo-cd/user-guide/kustomize が、 [v1.6.0](https://github.com/argoproj/argo-cd/releases/tag/v1.6.0) では、 kustomize [v3.6.1](https://github.com/kubernetes-sigs/kustomize/releases/tag/kustomize%2Fv3.6.1) である
- kubectl内のkustomizeは [v2.0.3](https://github.com/kubernetes-sigs/kustomize/releases/tag/v2.0.3) で、envsに対応するまえのバージョン

    > The kustomize build flow at v2.0.3 was added to kubectl v1.14. The kustomize flow in kubectl has remained frozen at v2.0.3 while work to extract kubectl from the k/k repo, and work to remove kustomize's dependence on core k/k code (#2506) has proceeded. The reintegration effort is tracked in #1500 (and its blocking issues).

# 結論

- ArgoCD v1.1.0 以前は`envs`は使えない (kustomize v2.0.3までは使えないので)
- kustomize v3.3.0以降は `env` は使えない これがArgoCDのどのバージョンかは未チェック
- ArgoCD v1.6.0 ではkustomize v3.6.1 になってるようで `env` は確実に使えない

# おまけ

- 2019-03-06 [kustomize v2.0.3](https://github.com/kubernetes-sigs/kustomize/releases/tag/v2.0.3) ([Envsource](https://github.com/kubernetes-sigs/kustomize/blob/v2.0.3/pkg/types/kustomization.go#L235) が `env`に対応する部分)
- 2019-05-07 [kustomize#1041 Introduce envs field.](https://github.com/kubernetes-sigs/kustomize/pull/1041)
- 2019-06-19 [kustomize v2.1.0](https://github.com/kubernetes-sigs/kustomize/releases/tag/v2.1.0) -> envsが奨励されている [v2.1.0 #envs-field](https://kubernetes-sigs.github.io/kustomize/blog/2019/06/18/v2.1.0/#envs-field)
- 2019-07-25 [ArgoCD v1.1.0](https://github.com/argoproj/argo-cd/releases/tag/v1.1.0) では、kustomizeのv2.0.3
- 2019-09-05 [ArgoCD v1.2.0](https://github.com/argoproj/argo-cd/releases/tag/v1.2.0) kustomize 3.1.0 に対応
- 2019-10-16 [kustomize#1637 Rename DataSources to KvPairSources and remove deprecated env field.](https://github.com/kubernetes-sigs/kustomize/pull/1637) -> [api v0.1.1](https://github.com/kubernetes-sigs/kustomize/releases/tag/api/v0.1.1)
- 2019-10-25 [kustomize v3.3.0](https://github.com/kubernetes-sigs/kustomize/releases/tag/kustomize%2Fv3.3.0) で Pin kustomize CLI to API v0.1.1 <- ここから`env`は使えなくなった
- 2019-11-13 [ArgoCD v1.3.0](https://github.com/argoproj/argo-cd/releases/tag/v1.3.0) 
    - kustomize v3.2.1へ ([argo-cd#2609](https://github.com/argoproj/argo-cd/pull/2607))
    - インストール方法も [hack/installers/install-kustomize-linux.sh](https://github.com/argoproj/argo-cd/blob/master/hack/installers/install-kustomize-linux.sh) に変わった ([argo-cd#2511](https://github.com/argoproj/argo-cd/pull/2511))
- 2020-01-18 [ArgoCD v1.4.0](https://github.com/argoproj/argo-cd/releases/tag/v1.4.0) kustomize version変更なし
- 2020-04-03 [ArgoCD v1.5.0](https://github.com/argoproj/argo-cd/releases/tag/v1.5.0) kustomize version変更なし ([hack/installers/install-kustomize-linux.sh#L4 @v1.5.0](https://github.com/argoproj/argo-cd/blob/bdda41046378a855e289b5f1602d5c923a3f914a/hack/installers/install-kustomize-linux.sh#L4))
- 2020-06-17 [ArgoCD v1.6.0](https://github.com/argoproj/argo-cd/releases/tag/v1.6.0) kustomize v3.6.1へ ([argo-cd#3696](https://github.com/argoproj/argo-cd/pull/3696))
- 2020-08-26 [ArgoCD v1.7.0](https://github.com/argoproj/argo-cd/releases/tag/v1.7.0) kustomize version変更なし
- 2020-12-10 [ArgoCD v1.8.0](https://github.com/argoproj/argo-cd/releases/tag/v1.8.0)　kustomize version変更なし
- 2021-04-07 [ArgoCD v2.0.0](https://github.com/argoproj/argo-cd/releases/tag/v2.0.0) kustomize v3.9.4 へ
- 2021-08-20 [ArgoCD v2.1.0](https://github.com/argoproj/argo-cd/releases/tag/v2.1.0) kustomize v4.1.2へ ([argo-cd#6059](https://github.com/argoproj/argo-cd/pull/6059))

別のページに分けた

https://qiita.com/nakamasato/items/31949b943aaf4233e9b8

# Others

- Future [Update kustomize version that's shipped in kubectl? #1500](https://github.com/kubernetes-sigs/kustomize/issues/1500)
- ArgoCD upgrade https://argoproj.github.io/argo-cd/operator-manual/upgrading/overview/
- ArgoCD kustomize https://argoproj.github.io/argo-cd/user-guide/kustomize/