Commit Graph

125 Commits

Author SHA1 Message Date
Antonio Ojea
d126b14838 migrate nolint coments to golangci-lint 2021-11-17 13:58:53 +01:00
Patrick Ohly
21d1bcd6b8 initialize logging after flag parsing
It wasn't documented that InitLogs already uses the log flush frequency, so
some commands have called it before parsing (for example, kubectl in the
original code for logs.go). The flag never had an effect in such commands.

Fixing this turned into a major refactoring of how commands set up flags and
run their Cobra command:

- component-base/logs: implicitely registering flags during package init is an
  anti-pattern that makes it impossible to use the package in commands which
  want full control over their command line. Logging flags must be added
  explicitly now, something that the new cli.Run does automatically.

- component-base/logs: AddFlags would have crashed in kubectl-convert if it
  had been called because it relied on the global pflag.CommandLine. This
  has been fixed and kubectl-convert now has the same --log-flush-frequency
  flag as other commands.

- component-base/logs/testinit: an exception are tests where flag.CommandLine has
  to be used. This new package can be imported to add flags to that
  once per test program.

- Normalization of the klog command line flags was inconsistent. Some commands
  unintentionally didn't normalize to the recommended format with hyphens. This
  gets fixed for sample programs, but not for production programs because
  it would be a breaking change.

This refactoring has the following user-visible effects:

- The validation error for `go run ./cmd/kube-apiserver --logging-format=json
  --add-dir-header` now references `add-dir-header` instead of `add_dir_header`.

- `staging/src/k8s.io/cloud-provider/sample` uses flags with hyphen instead of
  underscore.

- `--log-flush-frequency` is not listed anymore in the --logging-format flag's
  `non-default formats don't honor these flags` usage text because it will also
  work for non-default formats once it is needed.

- `cmd/kubelet`: the description of `--logging-format` uses hyphens instead of
  underscores for the flags, which now matches what the command is using.

- `staging/src/k8s.io/component-base/logs/example/cmd`: added logging flags.

- `apiextensions-apiserver` no longer prints a useless stack trace for `main`
  when command line parsing raises an error.
2021-09-30 13:46:49 +02:00
Kubernetes Prow Robot
40c9203472 Merge pull request #105171 from liggitt/gomodule-staticcheck
Make staticcheck package-compatible
2021-09-21 10:34:23 -07:00
Jordan Liggitt
00622da45e Make staticcheck package-compatible 2021-09-21 12:19:57 -04:00
Antonio Ojea
2bf38ed86b agnhost: allow to disable udp listener on netexec
There are some tests that doesn't need the UDP listener, so they
can disable it.
This is specially needed for tests that use hostNetwork pods, if 2
pods try to bind to the same port, the test will fail because one
of the pod can't be scheduled because of the port conflict.

To keep backwards compatibility, we can add an option to disable
the UDP listener by setting the port number to -1, that is consistent
with the SCTP implementation.
2021-09-20 09:44:20 +02:00
Kubernetes Prow Robot
ff617edd32 Merge pull request #104455 from claudiubelu/test-images/windows-server-2022-part-2
test images: Adds Windows Server 2022 to the BASEIMAGEs (part 2)
2021-08-30 12:07:13 -07:00
Stephen Augustus
481cf6fbe7 generated: Run hack/update-gofmt.sh
Signed-off-by: Stephen Augustus <foo@auggie.dev>
2021-08-24 15:47:49 -04:00
Claudiu Belu
2601e23bc2 test images: Adds Windows Server 2022 to the BASEIMAGEs (part 2)
The Container Images for Windows Server 2022 have been published, and
we can start building test images using them, so we can start adding
jobs for them.

The image versions for the e2e test images have been bumped in a previous
commit, but haven't been promoted yet. We don't need to bump them here.

httpd-2.4.46-win64-VC15.zip no longer exists, so we have to use
httpd-2.4.48-win64-VC15.zip instead.
2021-08-21 01:01:39 +00:00
Kubernetes Prow Robot
499a1f99a9 Merge pull request #104489 from liggitt/signal-buffer
Fix buffered signal channel go vet error
2021-08-20 14:53:58 -07:00
Jordan Liggitt
322bc82777 Fix buffered signal channel go vet error 2021-08-20 16:47:56 -04:00
Antonio Ojea
0cd75e8fec run hack/update-netparse-cve.sh 2021-08-20 10:42:09 +02:00
Shiming Zhang
804ce496e3 image: Change http to https 2021-08-16 12:45:50 +08:00
Kubernetes Prow Robot
81dca3d0cb Merge pull request #103976 from claudiubelu/test-images/agnhost-adds-sync-exe
test images: Adds sync.exe to Windows agnhost images
2021-08-12 10:20:13 -07:00
Claudiu Belu
ea3c7d98a5 test images: Removes Windows 1903 and 1909 images
According to the Microsoft documentation, Windows Server 1903
reached its EOL December 8, 2020 [1], and Windows Server 1909
reached its EOL May 11, 2021 [2].

We ne longer need to build images for those OS Versions, since we won't
run tests for them.

[1]: https://docs.microsoft.com/en-us/windows-server/get-started-19/whats-new-in-windows-server-1903-1909
[2]: https://docs.microsoft.com/en-us/lifecycle/announcements/windows-server-1909-end-of-servicing
2021-08-11 11:49:05 +00:00
Claudiu Belu
d9f2268816 test images: Adds sync.exe to Windows agnhost images
We can get sync.exe from coreutils.
2021-08-11 11:45:13 +00:00
Claudiu Belu
94ac896269 test images: Simplifies the agnhost binary version
Currently, whenever agnhost/VERSION is bumped, the version in
agnhost/agnhost.go has to be bumped as well. This is also verified
on presubmit (build/dependencies.yaml).

This means that whenever we need to bump the agnhost image version,
someone has to approve the build/dependencies.yaml, which is not as
easy.

This commit removes the need for this check by automatically setting
the Version inside agnhost.go at build time, simplifying the process.
2021-08-11 09:12:03 +00:00
Davanum Srinivas
79e5a1d5f1 Use tonistiigi/binfmt instead of our multi-arch register.sh
Looking deeper into the logs there are a lot of errors like:
`script exited with error 1`

Initial reaction was that there was a problem with download, but it
looks like the script we use to register the qemu emulators may be at
fault, let's try this alternate mechanism.

Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2021-05-08 20:25:30 -04:00
Davanum Srinivas
fdaa44da73 [agnhost] Add a retry for apk operations
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2021-05-07 12:44:37 -04:00
Michael Taufen
0b3b99c096 Try both in-cluster and external discovery
The conformance test for ServiceAccountIssuerDiscovery is currently
configured with --in-cluster-discovery, which only supports token
validation against in-cluster endpoints. Many cloud providers provide
their own, external endpoints for OIDC discovery, and because the iss
claim in tokens will point to these endpoints, but the client in this
test only trusts the Cluster CA, it will fail to connect to the external
discovery endpoints when validating the token.

To ensure that the conformance test at least supports scenario where
both the discovery doc endpoint and JWKS endpoint are cluster-local and
the scenario where both endpoints are cluster-external, this PR has the
test try both and requires at least one to pass.

Caveat: The test still won't support a configuration where one
endpoint is cluster-local and the other is external. We don't yet have
evidence that this is a configuration that is used in practice, so this
initial hotfix will at least fix the conformance test for the "both
external" configuration we know providers already use. Note that if one
endpoint is cluster-local, and the other is cluster-external, tokens can
still only be validated in-cluster, because both endpoints must be
accessible to Relying Parties that validate tokens.
2021-04-29 08:56:02 -07:00
Andrey Smirnov
f9aaf71ccb test/e2e: fix the OIDC discovery test with ECDSA service account key
By default oidc library enables only `RS256` signature validation
method.

Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
2021-03-30 22:58:50 +03:00
Ernest Wong
0a368288ac agnhost: increase dns timeout from 5 seconds to 20 seconds
Signed-off-by: Ernest Wong <chuwon@microsoft.com>
2021-03-17 16:07:35 -07:00
Ernest Wong
573535691b agnhost: resolve service account issuer URL before invoking oidc.NewProvider
Signed-off-by: Ernest Wong <chuwon@microsoft.com>
2021-03-15 19:14:14 -07:00
Antonio Ojea
97fba66df6 update agnhost readme 2021-03-08 11:55:12 +01:00
Federico Paolinelli
f6451c93b1 Bump up agnhost version to 2.29
This is to consume the changes for binding the udp listeners of netexec
to specific addresses.

Signed-off-by: Federico Paolinelli <fpaoline@redhat.com>
2021-03-05 10:49:09 +01:00
Federico Paolinelli
5125f1fc31 Agnhost: make it possible to pass the addresses to listen on for udp
The current udp implementation listens on any for tcp, udp and tcp. There
are some cases where it makes sense to listen on specific addresses
(especially udp, see https://github.com/kubernetes/kubernetes/issues/95565).
This is because UDP is connectionless, and in order to conntrack to
work, the application must ensure that the src of the reply is the same
as the dest of the request. The easiest way to do that is to bind
explicitly on an ip.
Here we pass an optional parameter that contains a comma separated list
of addresses.

Signed-off-by: Federico Paolinelli <fpaoline@redhat.com>
2021-03-05 10:49:08 +01:00
Supriya Premkumar
e52e5e486c Adds ineffassign to GO linter script.
Changes:
 - Enables ineffassign check in the verify scripts.
 - Fixes lint errs.
2021-03-03 08:28:10 -08:00
Benjamin Elder
56e092e382 hack/update-bazel.sh 2021-02-28 15:17:29 -08:00
Amim Knabben
f1da11078a UDP protocol on connect agnhost command 2021-02-07 15:29:58 -05:00
Kubernetes Prow Robot
816e67ab9d Merge pull request #97456 from claudiubelu/remove-busybox-helper
test images: Remove busybox-helper image
2021-01-28 08:21:34 -08:00
Claudiu Belu
bdaf849c0f test images: Remove busybox-helper image
We cannot have any RUN commands in the Windows stage when using docker buildx,
which is why we were using the busybox-helper image. The purpose of the image
was to contain a few things that we would obtain by running a few commands:

- symlinks for the busybox binary
- run vcredist_x64.exe which would also give us the vcruntime140.dll which is
  necessary for dig or httpd.

There are alternatives to the commands above that can be achieved in a Linux stage
as well:

- we can create the symlinks in a Linux stage with ln -s. Copying them over to
Windows will allow them to work just as well as if they were being copied over
from a Windows image. The 'Files\' prefix issue to the symlink target still persists.
- we can download the vcruntime140.dll directly, allowing us to skip the vcredist_x64.exe
  installation.
2021-01-27 04:22:38 -08:00
Antonio Ojea
6176597b0d update agnhost readme 2021-01-14 09:58:14 +01:00
Kubernetes Prow Robot
f1941c9c6d Merge pull request #97046 from claudiubelu/test-images-2004
test images: Adds BASEIMAGE for windows/amd64/2004 and windows/amd64/20H2
2021-01-11 11:18:25 -08:00
Kubernetes Prow Robot
7da7d2084c Merge pull request #96918 from aojea/agnhostbump
bump agnhost base image
2020-12-17 13:54:24 -08:00
Rajas Kakodkar
902f4a9038 bump agnhost VERSION
Signed-off-by: Rajas Kakodkar <rajas.kakodkar@ibm.com>
2020-12-16 17:48:28 +00:00
Rajas Kakodkar
7a82831255 bump VERSION
Signed-off-by: Rajas Kakodkar <rajas.kakodkar@ibm.com>
2020-12-16 07:35:59 +00:00
Claudiu Belu
f78aa177fa test images: Adds windows/amd64/20H2 BASEIMAGE 2020-12-15 16:35:01 +00:00
Antonio Ojea
5e712b85a1 bump agnhost base image 2020-12-04 10:01:24 +01:00
Claudiu Belu
e2ca45ca0a test images: Adds windows/amd64/2004 BASEIMAGE 2020-12-03 15:31:09 +00:00
Sean McGinnis
be131457ef Remove stale analytics links from docs
Many README files and other docs contained a link to a an appspot
tracking app that is no longer active. Following the links leads to an
error about Go 1.9 no longer being supported. Go 1.9 support was dropped
in appspot in 2019 and disabled June 2020.

This also resulted in a broken image link displaying when viewing these
files on GitHub. Since the app is no longer functioning, and since it
causes a potentially (but granted, minor) confusing error to display,
this just removes those links as I don't believe they are needed
anymore.

Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
2020-11-18 07:04:48 -06:00
Kubernetes Prow Robot
17376e6aef Merge pull request #92850 from tallclair/netexec
Enhance agnhost netexec for SSRF E2Es
2020-11-02 18:10:14 -08:00
Tim Allclair
c05a350b4f Update usage information for --http-override 2020-11-02 13:30:55 -08:00
Tim Allclair
354cb6ca91 Bump agnhost version 2020-11-02 13:30:55 -08:00
Tim Allclair
700006f2d9 Add override option to netexec 2020-11-02 13:30:22 -08:00
Tim Allclair
9156360234 Add a redirect handler to netexec 2020-11-02 13:30:22 -08:00
Tim Allclair
a15f5ea836 Add optional code to netexec echo endpoint 2020-11-02 13:30:22 -08:00
Stephen Heywood
f005b3a5f7 Add json-response flag to porter
Provides a response that includes a body and a method. This response
will enable a client (e2e test) to confirm that a proxy did not alter
the http method.
2020-10-30 14:48:16 +13:00
Claudiu Belu
0d24b05434 test images: Switches to buildx
Currently, some of the E2E test images have Windows support, and one of the goals is for most of
them to have Windows support. For that, the Image Builder is currently building those Windows
container images using a few Windows Server nodes (for 1809, 1903, 1909) with Remote Docker
enabled which are hosted on an azure subscription dedicated for CNCF.

With this, the Windows nodes dependency is removed entirely, as the images can be also built with
docker buildx. One additional benefit to this is that adding new supported Windows OS versions
to the E2E test images manifest lists becomes a lot easier (we wouldn't have to create a new Windows
Server node that matches that new OS version, assign DNS name, update certificates, etc.), and it
also becomes easier for other people to build their own E2E windows test images.

However, some dependencies are still required to run on a Windows machine. To solve this, we can
just pull helper images: e2eteam/powershell-helper:6.2.7 and e2eteam/busybox-helper:1.29.0. Their
Dockerfiles and a Makefile for them has been included in this commit. If any change is required to
them, then a new image will be built and tagged under a different version, but they are pretty
straight-forward and shouldn't require changes.

However, there is a small concern when it comes to the build time: Windows servercore images are
very large (for example, mcr.microsoft.com/windows/servercore:ltsc2019 is 4.99GB uncompressed, and
about ~2 GB compressed - those images are already cached on the Windows Server builder nodes, so
this isn't an issue there), and we currently support 1809, 1903, and 1909 (soon to add 2004).
This can lead to build times that are too big.

We have changed the base image to nanoserver (uncompressed size: 250MB), but some images still
require some DLLs or some other dependencies that can be fetched from a servercore image.

A separate job has been defined that would build a scratch windows-servercore-cache image monthly,
and then we can just get those dependencies from this cache, which will be very small.
This would be preferred, as the Windows images update periodically, and those dependencies
could be updated as well.
2020-10-16 10:42:49 +00:00
Valerii Ponomarov
c55b6cdbb4 agnhost image: use actual DNS domain instead of hardcoded cluster.local
'agnhost' image uses hardcoded 'cluster.local' value for DNS domain.
It leads to failure of a bunch of HPA tests when test cluster is
configured to use custom DNS domain and there is no alias for
default 'cluster.local' one.
So, fix it by reusing it's own function for reading DNS domain suffixes.

Signed-off-by: Valerii Ponomarov <kiparis.kh@gmail.com>
2020-09-24 14:24:16 +03:00
Claudiu Belu
46c820e793 test images: uses nanoserver
Using Windows nanoserver container images as a base instead of the current
Windows servercore image will reduce the image size by about ~10x.

However, the nanoserver image lacks several things we need:
- netapi32.dll
- powershell
- certain powershell commands
- chocolatey cannot be used

When building the nanoserver images, we are going to use a Windows servercore helper,
in which we are going to install the necessary dependencies, and then copy them over
to our nanoserver image, including necessary DLLs.

Other notable changes include:
- switch from wget to curl (wget was a powershell alias).
- implement in code getting the DNS suffix list and DNS server list.
- reimplement getting file permissions for mounttest.
2020-09-21 04:53:44 -07:00
Benjamin Elder
3e2cb2922b synchronize agnhost image / app version 2020-08-20 17:00:41 -07:00