We tend to build cloud, call some method, and then build cloud over
again. It would be easier to just pass the first one along.
Passing along cloud would also make it easier to mock cloud.
We create a simple exec plugin command which can create and renew
short-lived admin credentials on the fly, essentially leveraging the
security of the underlying cloud credentials.
Co-authored-by: John Gardiner Myers <jgmyers@proofpoint.com>
This means we no longer have to individually hard-code the `kops set`
fields, however we use the "language" we're now demonstrated.
We add tests to ensure we have parity with our existing (hard-coded)
setter logic.
This is causing problems with the Kubernetes 1.19 code-generator.
A nil entry in these slices wouldn't be valid anyways, so this should have no impact.
This requires passing a cloud object in additional places throughout the validation package and originating mostly from cmd/kops
This means that some kops commands now require valid cloud provider credentials, but I don't think this is an issue because the vast majority of use-cases already require the same cloud provider credentials in order to interact with the state store.
The client-go signature for most methods adds a context.Context
object, and also makes Options mandatory. Feed through a
context.Context through many of our methods (but use context.TODO to
stop it getting totally out of hand!)
pull-kops-e2e-kubernetes-aws — Job failed. [Details](https://prow.k8s.io/view/gcs/kubernetes-jenkins/pr-logs/pull/kops/7160/pull-kops-e2e-kubernetes-aws/1141685394924900352/)
```
I0620 12:37:27.976] /root/.cache/bazel/_bazel_prow/ae5d1f01453377487c630b230ced7d61/sandbox/linux-sandbox/836/execroot/__main__/pkg/commands/set_cluster.go:97:16: cluster.Spec.masterPublicName undefined (type "k8s.io/kops/pkg/apis/kops".ClusterSpec has no field or method masterPublicName, but does have MasterPublicName)
```
fixes typo
We upload to a location that includes the version, but we need to
specify the version in KOPS_BASE_URL. We expose an option to make
`kops version` more amenable to this scripting.
These shortcut commands make it easy to set enableEtcdTLS and
enableTLSAuth.
`kops set cluster cluster.spec.etcdClusters[*].enableEtcdTLS=true`
`kops set cluster cluster.spec.etcdClusters[*].enableTLSAuth=true`
Introduce an experimental kops set cluster command, for setting
individual fields in the same style as the kops create cluster
--override flags.
For now, feature flag gated by the same SpecOverrideFlag feature flag.
Also split out pkg/commands package to facilitate testing.