Compare commits

..

878 Commits
v0.9.2 ... ci

Author SHA1 Message Date
Ryan Richard
3d740e90c1 use slightly larger GKE nodes due to Insufficient cpu errors
Error observed during deploying the Pinniped Supervisor was...

Pending: Unschedulable, message: 0/3 nodes are available: 3 Insufficient
cpu. no new claims to deallocate, preemption: 0/3 nodes are available:
3 No preemption victims found for incoming pod.
2026-01-21 14:10:26 -08:00
Ryan Richard
801591fed0 update copyrights on changed files when creating auto dependency bump PR 2026-01-21 11:41:35 -08:00
Ryan Richard
47bcaefa65 also check for new major versions of Go deps in CI auto dep bump PRs 2026-01-21 10:51:44 -08:00
Ryan Richard
69f9d53dbd Merge pull request #2840 from vmware/dependabot/docker/dockerfiles/gh-cli/ci/debian-13.3-slim
Bump debian from 13.2-slim to 13.3-slim in /dockerfiles/gh-cli
2026-01-21 10:32:44 -08:00
Ryan Richard
9f4829a0cd Merge pull request #2841 from vmware/dependabot/docker/dockerfiles/deployment-yaml-formatter/ci/debian-13.3-slim
Bump debian from 13.2-slim to 13.3-slim in /dockerfiles/deployment-yaml-formatter
2026-01-21 10:32:40 -08:00
Ryan Richard
5f21762eba Merge pull request #2843 from vmware/dependabot/docker/dockerfiles/code-coverage-uploader/ci/debian-13.3-slim
Bump debian from 13.2-slim to 13.3-slim in /dockerfiles/code-coverage-uploader
2026-01-21 10:32:36 -08:00
Ryan Richard
2f1b83dfc4 Merge pull request #2844 from vmware/dependabot/docker/dockerfiles/pool-trigger-resource/ci/debian-13.3-slim
Bump debian from 13.2-slim to 13.3-slim in /dockerfiles/pool-trigger-resource
2026-01-21 10:32:32 -08:00
Ryan Richard
56998630cb Merge pull request #2845 from vmware/dependabot/docker/dockerfiles/test-forward-proxy/ci/debian-13.3-slim
Bump debian from 13.2-slim to 13.3-slim in /dockerfiles/test-forward-proxy
2026-01-21 10:32:28 -08:00
Ryan Richard
1c68fe2f68 Merge pull request #2846 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-552.0.0-slim
Bump google/cloud-sdk from 551.0.0-slim to 552.0.0-slim in /dockerfiles/k8s-app-deployer
2026-01-21 10:32:25 -08:00
Ryan Richard
30d0f51624 Merge pull request #2847 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-552.0.0-slim
Bump google/cloud-sdk from 551.0.0-slim to 552.0.0-slim in /dockerfiles/integration-test-runner-beta
2026-01-21 10:32:22 -08:00
Ryan Richard
e3c6498d65 Merge pull request #2848 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-552.0.0-slim
Bump google/cloud-sdk from 551.0.0-slim to 552.0.0-slim in /dockerfiles/integration-test-runner
2026-01-21 10:32:18 -08:00
Ryan Richard
866e7f0a9e Merge pull request #2863 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.33.3
Bump amazon/aws-cli from 2.32.30 to 2.33.3 in /dockerfiles/eks-deployer
2026-01-21 10:32:15 -08:00
Ryan Richard
aef74185c3 upgrade CI from Go 1.25.5 to 1.25.6 2026-01-21 10:28:36 -08:00
dependabot[bot]
bb6a2fe5ac Bump amazon/aws-cli from 2.32.30 to 2.33.3 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.32.30 to 2.33.3.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.33.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-21 01:53:59 +00:00
dependabot[bot]
ba7e81d98c Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 551.0.0-slim to 552.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 552.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-14 01:53:51 +00:00
dependabot[bot]
ad8a545683 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 551.0.0-slim to 552.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 552.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-14 01:53:50 +00:00
dependabot[bot]
1d1eccb4a5 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 551.0.0-slim to 552.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 552.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-14 01:53:45 +00:00
dependabot[bot]
a3db96dcce Bump debian in /dockerfiles/test-forward-proxy
Bumps debian from 13.2-slim to 13.3-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.3-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-13 05:04:34 +00:00
dependabot[bot]
f34d555043 Bump debian in /dockerfiles/pool-trigger-resource
Bumps debian from 13.2-slim to 13.3-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.3-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-13 05:04:31 +00:00
dependabot[bot]
2a7d673d92 Bump debian in /dockerfiles/code-coverage-uploader
Bumps debian from 13.2-slim to 13.3-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.3-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-13 05:04:30 +00:00
dependabot[bot]
a2875d6fbe Bump debian in /dockerfiles/deployment-yaml-formatter
Bumps debian from 13.2-slim to 13.3-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.3-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-13 05:04:29 +00:00
dependabot[bot]
de01de5554 Bump debian from 13.2-slim to 13.3-slim in /dockerfiles/gh-cli
Bumps debian from 13.2-slim to 13.3-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.3-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-13 05:04:28 +00:00
Joshua Casey
c0a81c82b0 Merge pull request #2832 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.32.30
Bump amazon/aws-cli from 2.32.29 to 2.32.30 in /dockerfiles/eks-deployer
2026-01-07 13:23:08 -06:00
Joshua Casey
adfcab17fa Merge pull request #2833 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-551.0.0-slim
Bump google/cloud-sdk from 550.0.0-slim to 551.0.0-slim in /dockerfiles/integration-test-runner
2026-01-07 13:23:04 -06:00
Joshua Casey
c2418f2eb8 Merge pull request #2834 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-551.0.0-slim
Bump google/cloud-sdk from 550.0.0-slim to 551.0.0-slim in /dockerfiles/integration-test-runner-beta
2026-01-07 13:23:00 -06:00
Joshua Casey
e3d0a15536 Merge pull request #2835 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-551.0.0-slim
Bump google/cloud-sdk from 550.0.0-slim to 551.0.0-slim in /dockerfiles/k8s-app-deployer
2026-01-07 13:22:55 -06:00
dependabot[bot]
892f624f61 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 550.0.0-slim to 551.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 551.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-07 01:15:50 +00:00
dependabot[bot]
86a870950f Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 550.0.0-slim to 551.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 551.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-07 01:15:49 +00:00
dependabot[bot]
c786d998a1 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 550.0.0-slim to 551.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 551.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-07 01:15:47 +00:00
dependabot[bot]
36d759790e Bump amazon/aws-cli from 2.32.29 to 2.32.30 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.32.29 to 2.32.30.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.32.30
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-07 01:15:46 +00:00
Ryan Richard
902b5e575d Revert "skip race detector for impersonator package for now"
This reverts commit e4d2c8ba07.
2026-01-06 13:29:24 -08:00
Ryan Richard
cf2b3d7113 comment out AKS and EKS pipeline jobs 2026-01-06 13:17:48 -08:00
Ryan Richard
2b73862706 Merge pull request #2830 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.32.29
Bump amazon/aws-cli from 2.32.28 to 2.32.29 in /dockerfiles/eks-deployer
2026-01-06 13:07:58 -08:00
dependabot[bot]
179a6e5587 Bump amazon/aws-cli from 2.32.28 to 2.32.29 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.32.28 to 2.32.29.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.32.29
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-06 01:24:47 +00:00
Ryan Richard
541d3680b9 Merge pull request #2829 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.32.28
Bump amazon/aws-cli from 2.32.23 to 2.32.28 in /dockerfiles/eks-deployer
2026-01-05 10:47:53 -08:00
dependabot[bot]
c4ad5eb3ce Bump amazon/aws-cli from 2.32.23 to 2.32.28 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.32.23 to 2.32.28.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.32.28
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-05 01:11:54 +00:00
Ryan Richard
ebc4c680f5 Merge pull request #2822 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.32.23
Bump amazon/aws-cli from 2.32.22 to 2.32.23 in /dockerfiles/eks-deployer
2025-12-24 09:37:30 -08:00
dependabot[bot]
fe01772b08 Bump amazon/aws-cli from 2.32.22 to 2.32.23 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.32.22 to 2.32.23.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.32.23
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-24 01:12:42 +00:00
Ryan Richard
06f0728479 move manually triggered jobs earlier in main pipeline
So we can manually trigger them to run in parallel with other
jobs, so we don't have to wait for those other jobs to pass because
they can be flaky sometimes.
2025-12-23 14:18:35 -08:00
Joshua Casey
2d3c1515a0 Merge pull request #2818 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.32.22
Bump amazon/aws-cli from 2.32.21 to 2.32.22 in /dockerfiles/eks-deployer
2025-12-23 09:49:56 -06:00
dependabot[bot]
9526eae770 Bump amazon/aws-cli from 2.32.21 to 2.32.22 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.32.21 to 2.32.22.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.32.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-23 01:12:25 +00:00
Joshua Casey
60d736fc36 Merge pull request #2813 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/weaveworks/eksctl-v0.221.0
Bump weaveworks/eksctl from v0.220.0 to v0.221.0 in /dockerfiles/eks-deployer
2025-12-22 14:14:24 -06:00
Joshua Casey
3f916544ba Merge pull request #2816 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.32.21
Bump amazon/aws-cli from 2.32.19 to 2.32.21 in /dockerfiles/eks-deployer
2025-12-22 14:14:20 -06:00
Ryan Richard
e551207055 update pipelines for kube 1.35 2025-12-22 10:54:43 -08:00
dependabot[bot]
faff223ef0 Bump amazon/aws-cli from 2.32.19 to 2.32.21 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.32.19 to 2.32.21.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.32.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 01:10:46 +00:00
Ryan Richard
35f8c5876d skip client-side validation of manifest when k8s server < 1.27
After upgrading libs to k8s 1.35, this stopped working on very old
versions of Kube. Not really a problem, because version 1.26 and below
are all over 3 years old. You can still install Pinniped on these old
version if you skip kubectl's client-side validation.
2025-12-19 13:15:53 -08:00
dependabot[bot]
5c15a4bc0e Bump weaveworks/eksctl in /dockerfiles/eks-deployer
Bumps weaveworks/eksctl from v0.220.0 to v0.221.0.

---
updated-dependencies:
- dependency-name: weaveworks/eksctl
  dependency-version: v0.221.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-19 01:19:44 +00:00
Ryan Richard
217b6b5620 Merge pull request #2811 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.32.19
Bump amazon/aws-cli from 2.32.18 to 2.32.19 in /dockerfiles/eks-deployer
2025-12-18 13:23:37 -08:00
Ryan Richard
3640096b6c bump k8s codegen versions and build 1.35 codegen container image 2025-12-18 12:41:01 -08:00
dependabot[bot]
8a40bcd4d6 Bump amazon/aws-cli from 2.32.18 to 2.32.19 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.32.18 to 2.32.19.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.32.19
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-18 01:19:15 +00:00
Ryan Richard
649cbd7dec Merge pull request #2807 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.32.18
Bump amazon/aws-cli from 2.32.17 to 2.32.18 in /dockerfiles/eks-deployer
2025-12-17 13:41:42 -08:00
Ryan Richard
e18d2b4c18 Merge pull request #2808 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-550.0.0-slim
Bump google/cloud-sdk from 549.0.1-slim to 550.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-12-17 13:41:39 -08:00
Ryan Richard
acfbd225c6 Merge pull request #2809 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-550.0.0-slim
Bump google/cloud-sdk from 549.0.1-slim to 550.0.0-slim in /dockerfiles/k8s-app-deployer
2025-12-17 13:41:35 -08:00
Ryan Richard
8cd06c08d7 Merge pull request #2810 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-550.0.0-slim
Bump google/cloud-sdk from 549.0.1-slim to 550.0.0-slim in /dockerfiles/integration-test-runner
2025-12-17 13:41:32 -08:00
dependabot[bot]
cff9eaa0c7 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 549.0.1-slim to 550.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 550.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-17 01:19:45 +00:00
dependabot[bot]
d663974450 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 549.0.1-slim to 550.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 550.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-17 01:19:31 +00:00
dependabot[bot]
b50f8fbef8 Bump amazon/aws-cli from 2.32.17 to 2.32.18 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.32.17 to 2.32.18.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.32.18
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-17 01:19:30 +00:00
dependabot[bot]
11a293d7f2 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 549.0.1-slim to 550.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 550.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-17 01:19:30 +00:00
Ryan Richard
ee5df9c6a1 Merge pull request #2805 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.32.17
Bump amazon/aws-cli from 2.32.16 to 2.32.17 in /dockerfiles/eks-deployer
2025-12-16 11:35:48 -08:00
dependabot[bot]
b69bfa898d Bump amazon/aws-cli from 2.32.16 to 2.32.17 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.32.16 to 2.32.17.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.32.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-16 01:18:25 +00:00
Ryan Richard
3874dff7b8 Merge pull request #2802 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.32.16
Bump amazon/aws-cli from 2.32.15 to 2.32.16 in /dockerfiles/eks-deployer
2025-12-15 09:19:48 -08:00
dependabot[bot]
be9c65fbc9 Bump amazon/aws-cli from 2.32.15 to 2.32.16 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.32.15 to 2.32.16.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.32.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 17:16:55 +00:00
Ryan Richard
329c84867a Merge pull request #2798 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/mikefarah/yq-4.50.1
Bump mikefarah/yq from 4.49.2 to 4.50.1 in /dockerfiles/integration-test-runner-beta
2025-12-15 09:16:33 -08:00
Ryan Richard
6e68dae48b Merge pull request #2799 from vmware/dependabot/docker/dockerfiles/crane/ci/mikefarah/yq-4.50.1
Bump mikefarah/yq from 4.49.2 to 4.50.1 in /dockerfiles/crane
2025-12-15 09:16:29 -08:00
Ryan Richard
22fe874fcf Merge pull request #2800 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/mikefarah/yq-4.50.1
Bump mikefarah/yq from 4.49.2 to 4.50.1 in /dockerfiles/integration-test-runner
2025-12-15 09:16:26 -08:00
Ryan Richard
f973bfc091 Merge pull request #2801 from vmware/dependabot/docker/dockerfiles/deployment-yaml-formatter/ci/mikefarah/yq-4.50.1
Bump mikefarah/yq from 4.49.2 to 4.50.1 in /dockerfiles/deployment-yaml-formatter
2025-12-15 09:16:22 -08:00
Ryan Richard
39adc20d79 Merge pull request #2803 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/mikefarah/yq-4.50.1
Bump mikefarah/yq from 4.49.2 to 4.50.1 in /dockerfiles/eks-deployer
2025-12-15 09:16:16 -08:00
dependabot[bot]
9a65f4415c Bump mikefarah/yq from 4.49.2 to 4.50.1 in /dockerfiles/eks-deployer
Bumps mikefarah/yq from 4.49.2 to 4.50.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.50.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 01:33:17 +00:00
dependabot[bot]
e665173533 Bump mikefarah/yq in /dockerfiles/deployment-yaml-formatter
Bumps mikefarah/yq from 4.49.2 to 4.50.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.50.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 01:33:07 +00:00
dependabot[bot]
f9c14e817d Bump mikefarah/yq in /dockerfiles/integration-test-runner
Bumps mikefarah/yq from 4.49.2 to 4.50.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.50.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 01:33:05 +00:00
dependabot[bot]
154074ec9c Bump mikefarah/yq from 4.49.2 to 4.50.1 in /dockerfiles/crane
Bumps mikefarah/yq from 4.49.2 to 4.50.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.50.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 01:32:56 +00:00
dependabot[bot]
b71ec602c0 Bump mikefarah/yq in /dockerfiles/integration-test-runner-beta
Bumps mikefarah/yq from 4.49.2 to 4.50.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.50.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 01:32:41 +00:00
Ryan Richard
a5db59bf56 Merge pull request #2794 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-549.0.1-slim
Bump google/cloud-sdk from 549.0.0-slim to 549.0.1-slim in /dockerfiles/integration-test-runner
2025-12-12 10:53:43 -08:00
Ryan Richard
ea1fd7756e Merge pull request #2795 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-549.0.1-slim
Bump google/cloud-sdk from 549.0.0-slim to 549.0.1-slim in /dockerfiles/k8s-app-deployer
2025-12-12 10:53:40 -08:00
Ryan Richard
06eefa0798 Merge pull request #2796 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-549.0.1-slim
Bump google/cloud-sdk from 549.0.0-slim to 549.0.1-slim in /dockerfiles/integration-test-runner-beta
2025-12-12 10:53:36 -08:00
Ryan Richard
cd2b637480 Merge pull request #2797 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.32.15
Bump amazon/aws-cli from 2.32.14 to 2.32.15 in /dockerfiles/eks-deployer
2025-12-12 10:53:32 -08:00
dependabot[bot]
58c5a78d7b Bump amazon/aws-cli from 2.32.14 to 2.32.15 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.32.14 to 2.32.15.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.32.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-12 01:13:21 +00:00
dependabot[bot]
c2da6ea11e Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 549.0.0-slim to 549.0.1-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 549.0.1-slim
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-12 01:13:11 +00:00
dependabot[bot]
38fdf45ad4 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 549.0.0-slim to 549.0.1-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 549.0.1-slim
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-12 01:12:30 +00:00
dependabot[bot]
fea9f85baf Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 549.0.0-slim to 549.0.1-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 549.0.1-slim
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-12 01:12:02 +00:00
Joshua Casey
87699800ef Merge pull request #2793 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.32.14
Bump amazon/aws-cli from 2.32.13 to 2.32.14 in /dockerfiles/eks-deployer
2025-12-11 08:31:12 -06:00
dependabot[bot]
784339b51a Bump amazon/aws-cli from 2.32.13 to 2.32.14 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.32.13 to 2.32.14.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.32.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-11 01:36:59 +00:00
Joshua Casey
ea9da02f39 Merge pull request #2788 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-549.0.0-slim
Bump google/cloud-sdk from 548.0.0-slim to 549.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-12-10 11:28:32 -06:00
Joshua Casey
8a0cfaa17e Merge pull request #2789 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-549.0.0-slim
Bump google/cloud-sdk from 548.0.0-slim to 549.0.0-slim in /dockerfiles/integration-test-runner
2025-12-10 11:28:28 -06:00
Joshua Casey
bba5c11353 Merge pull request #2790 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.32.13
Bump amazon/aws-cli from 2.32.12 to 2.32.13 in /dockerfiles/eks-deployer
2025-12-10 11:28:23 -06:00
Joshua Casey
32aee9d277 Merge pull request #2791 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-549.0.0-slim
Bump google/cloud-sdk from 548.0.0-slim to 549.0.0-slim in /dockerfiles/k8s-app-deployer
2025-12-10 11:28:19 -06:00
dependabot[bot]
eabb14639f Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 548.0.0-slim to 549.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 549.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-10 01:12:44 +00:00
dependabot[bot]
22f8ab1f2b Bump amazon/aws-cli from 2.32.12 to 2.32.13 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.32.12 to 2.32.13.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.32.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-10 01:12:41 +00:00
dependabot[bot]
716242aabb Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 548.0.0-slim to 549.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 549.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-10 01:12:40 +00:00
dependabot[bot]
5272c76c6f Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 548.0.0-slim to 549.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 549.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-10 01:12:40 +00:00
Ryan Richard
207dbcf5be Merge pull request #2764 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/mikefarah/yq-4.49.2
Bump mikefarah/yq from 4.49.1 to 4.49.2 in /dockerfiles/eks-deployer
2025-12-09 13:27:35 -08:00
dependabot[bot]
51a0487c4e Bump mikefarah/yq from 4.49.1 to 4.49.2 in /dockerfiles/eks-deployer
Bumps mikefarah/yq from 4.49.1 to 4.49.2.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.49.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-09 21:27:01 +00:00
Ryan Richard
7c3d3c6f46 Merge pull request #2770 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/weaveworks/eksctl-v0.220.0
Bump weaveworks/eksctl from v0.219.0 to v0.220.0 in /dockerfiles/eks-deployer
2025-12-09 13:26:24 -08:00
Ryan Richard
f6d6d23543 Merge pull request #2787 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.32.12
Bump amazon/aws-cli from 2.32.6 to 2.32.12 in /dockerfiles/eks-deployer
2025-12-09 13:26:20 -08:00
dependabot[bot]
ab8d612a7c Bump amazon/aws-cli from 2.32.6 to 2.32.12 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.32.6 to 2.32.12.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.32.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-09 01:12:49 +00:00
Ryan Richard
4f2481205e update CI to use Go 1.25.5 2025-12-05 10:29:12 -08:00
dependabot[bot]
de367094ed Bump weaveworks/eksctl in /dockerfiles/eks-deployer
Bumps weaveworks/eksctl from v0.219.0 to v0.220.0.

---
updated-dependencies:
- dependency-name: weaveworks/eksctl
  dependency-version: v0.220.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-02 02:35:28 +00:00
Joshua Casey
4aa26bb379 Merge pull request #2759 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/mikefarah/yq-4.49.2
Bump mikefarah/yq from 4.49.1 to 4.49.2 in /dockerfiles/integration-test-runner-beta
2025-12-01 10:02:18 -06:00
Joshua Casey
cbf52ff82b Merge pull request #2760 from vmware/dependabot/docker/dockerfiles/crane/ci/mikefarah/yq-4.49.2
Bump mikefarah/yq from 4.49.1 to 4.49.2 in /dockerfiles/crane
2025-12-01 10:02:14 -06:00
Joshua Casey
016feda7c0 Merge pull request #2761 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/mikefarah/yq-4.49.2
Bump mikefarah/yq from 4.49.1 to 4.49.2 in /dockerfiles/integration-test-runner
2025-12-01 10:02:10 -06:00
Joshua Casey
6bf3cf55d0 Merge pull request #2763 from vmware/dependabot/docker/dockerfiles/deployment-yaml-formatter/ci/mikefarah/yq-4.49.2
Bump mikefarah/yq from 4.49.1 to 4.49.2 in /dockerfiles/deployment-yaml-formatter
2025-12-01 10:02:06 -06:00
Joshua Casey
a0a6dc4b26 Merge pull request #2767 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.32.6
Bump amazon/aws-cli from 2.32.2 to 2.32.6 in /dockerfiles/eks-deployer
2025-12-01 10:02:01 -06:00
Joshua Casey
c989162c14 Merge pull request #2768 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/weaveworks/eksctl-v0.219.0
Bump weaveworks/eksctl from v0.217.0 to v0.219.0 in /dockerfiles/eks-deployer
2025-12-01 10:01:57 -06:00
dependabot[bot]
94554bb764 Bump weaveworks/eksctl in /dockerfiles/eks-deployer
Bumps weaveworks/eksctl from v0.217.0 to v0.219.0.

---
updated-dependencies:
- dependency-name: weaveworks/eksctl
  dependency-version: v0.219.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-28 01:11:15 +00:00
dependabot[bot]
ebe97780d6 Bump amazon/aws-cli from 2.32.2 to 2.32.6 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.32.2 to 2.32.6.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.32.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-27 01:13:23 +00:00
dependabot[bot]
20f401e905 Bump mikefarah/yq in /dockerfiles/deployment-yaml-formatter
Bumps mikefarah/yq from 4.49.1 to 4.49.2.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.49.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-25 01:13:27 +00:00
dependabot[bot]
d46b4d05b1 Bump mikefarah/yq in /dockerfiles/integration-test-runner
Bumps mikefarah/yq from 4.49.1 to 4.49.2.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.49.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-25 01:13:26 +00:00
dependabot[bot]
eab1817429 Bump mikefarah/yq from 4.49.1 to 4.49.2 in /dockerfiles/crane
Bumps mikefarah/yq from 4.49.1 to 4.49.2.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.49.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-25 01:13:25 +00:00
dependabot[bot]
ec0f44ebc0 Bump mikefarah/yq in /dockerfiles/integration-test-runner-beta
Bumps mikefarah/yq from 4.49.1 to 4.49.2.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.49.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-25 01:13:24 +00:00
Joshua Casey
3f10d14dfd Merge pull request #2752 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/mikefarah/yq-4.49.1
Bump mikefarah/yq from 4.48.2 to 4.49.1 in /dockerfiles/integration-test-runner
2025-11-24 09:26:59 -06:00
Joshua Casey
6d2d9c0f22 Merge pull request #2754 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/mikefarah/yq-4.49.1
Bump mikefarah/yq from 4.48.2 to 4.49.1 in /dockerfiles/eks-deployer
2025-11-24 09:26:54 -06:00
Joshua Casey
115a356425 Merge pull request #2755 from vmware/dependabot/docker/dockerfiles/deployment-yaml-formatter/ci/mikefarah/yq-4.49.1
Bump mikefarah/yq from 4.48.2 to 4.49.1 in /dockerfiles/deployment-yaml-formatter
2025-11-24 09:26:50 -06:00
Joshua Casey
ec22653fc8 Merge pull request #2756 from vmware/dependabot/docker/dockerfiles/crane/ci/mikefarah/yq-4.49.1
Bump mikefarah/yq from 4.48.2 to 4.49.1 in /dockerfiles/crane
2025-11-24 09:26:45 -06:00
Joshua Casey
d3b00f9e2f Merge pull request #2757 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/mikefarah/yq-4.49.1
Bump mikefarah/yq from 4.48.2 to 4.49.1 in /dockerfiles/integration-test-runner-beta
2025-11-24 09:26:42 -06:00
dependabot[bot]
e3fd37f2ac Bump mikefarah/yq in /dockerfiles/integration-test-runner-beta
Bumps mikefarah/yq from 4.48.2 to 4.49.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.49.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 01:17:08 +00:00
dependabot[bot]
665446d1c2 Bump mikefarah/yq from 4.48.2 to 4.49.1 in /dockerfiles/crane
Bumps mikefarah/yq from 4.48.2 to 4.49.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.49.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 01:13:32 +00:00
dependabot[bot]
73cae7dacd Bump mikefarah/yq in /dockerfiles/deployment-yaml-formatter
Bumps mikefarah/yq from 4.48.2 to 4.49.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.49.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 01:13:20 +00:00
dependabot[bot]
cca722e2f2 Bump mikefarah/yq from 4.48.2 to 4.49.1 in /dockerfiles/eks-deployer
Bumps mikefarah/yq from 4.48.2 to 4.49.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.49.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 01:12:23 +00:00
dependabot[bot]
f945a5685a Bump mikefarah/yq in /dockerfiles/integration-test-runner
Bumps mikefarah/yq from 4.48.2 to 4.49.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.49.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 01:11:54 +00:00
Joshua Casey
4d3c38e06e Merge pull request #2750 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.32.2
Bump amazon/aws-cli from 2.32.1 to 2.32.2 in /dockerfiles/eks-deployer
2025-11-21 07:30:05 -06:00
dependabot[bot]
e91e673010 Bump amazon/aws-cli from 2.32.1 to 2.32.2 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.32.1 to 2.32.2.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.32.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-21 01:10:44 +00:00
Joshua Casey
af24ba330e Merge pull request #2746 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.32.1
Bump amazon/aws-cli from 2.31.39 to 2.32.1 in /dockerfiles/eks-deployer
2025-11-20 13:36:53 -06:00
dependabot[bot]
78ad2046dc Bump amazon/aws-cli from 2.31.39 to 2.32.1 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.31.39 to 2.32.1.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.32.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-20 01:44:06 +00:00
Joshua Casey
a0edc59480 Merge pull request #2736 from vmware/dependabot/docker/dockerfiles/deployment-yaml-formatter/ci/debian-13.2-slim
Bump debian from 13.1-slim to 13.2-slim in /dockerfiles/deployment-yaml-formatter
2025-11-19 11:52:06 -06:00
Joshua Casey
4c7a66d179 Merge pull request #2737 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-548.0.0-slim
Bump google/cloud-sdk from 547.0.0-slim to 548.0.0-slim in /dockerfiles/k8s-app-deployer
2025-11-19 11:52:02 -06:00
Joshua Casey
5093923f63 Merge pull request #2738 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-548.0.0-slim
Bump google/cloud-sdk from 547.0.0-slim to 548.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-11-19 11:51:58 -06:00
Joshua Casey
6174bccf66 Merge pull request #2739 from vmware/dependabot/docker/dockerfiles/test-forward-proxy/ci/debian-13.2-slim
Bump debian from 13.1-slim to 13.2-slim in /dockerfiles/test-forward-proxy
2025-11-19 11:51:54 -06:00
Joshua Casey
3d159c2782 Merge pull request #2740 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-548.0.0-slim
Bump google/cloud-sdk from 547.0.0-slim to 548.0.0-slim in /dockerfiles/integration-test-runner
2025-11-19 11:51:50 -06:00
Joshua Casey
5b7865f63a Merge pull request #2741 from vmware/dependabot/docker/dockerfiles/code-coverage-uploader/ci/debian-13.2-slim
Bump debian from 13.1-slim to 13.2-slim in /dockerfiles/code-coverage-uploader
2025-11-19 11:51:46 -06:00
Joshua Casey
0caa12eae6 Merge pull request #2742 from vmware/dependabot/docker/dockerfiles/gh-cli/ci/debian-13.2-slim
Bump debian from 13.1-slim to 13.2-slim in /dockerfiles/gh-cli
2025-11-19 11:51:41 -06:00
Joshua Casey
e30967738e Merge pull request #2743 from vmware/dependabot/docker/dockerfiles/pool-trigger-resource/ci/debian-13.2-slim
Bump debian from 13.1-slim to 13.2-slim in /dockerfiles/pool-trigger-resource
2025-11-19 11:51:37 -06:00
Joshua Casey
4f56da1eb3 Merge pull request #2744 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.31.39
Bump amazon/aws-cli from 2.31.36 to 2.31.39 in /dockerfiles/eks-deployer
2025-11-19 11:51:33 -06:00
dependabot[bot]
0f3777c5f8 Bump amazon/aws-cli from 2.31.36 to 2.31.39 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.31.36 to 2.31.39.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.31.39
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-19 01:11:08 +00:00
dependabot[bot]
8441cd6d01 Bump debian in /dockerfiles/pool-trigger-resource
Bumps debian from 13.1-slim to 13.2-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.2-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-19 01:10:56 +00:00
dependabot[bot]
77f84fb9c5 Bump debian from 13.1-slim to 13.2-slim in /dockerfiles/gh-cli
Bumps debian from 13.1-slim to 13.2-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.2-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-19 01:10:52 +00:00
dependabot[bot]
5f414d27e2 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 547.0.0-slim to 548.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 548.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-19 01:10:50 +00:00
dependabot[bot]
5ab5bfec96 Bump debian in /dockerfiles/code-coverage-uploader
Bumps debian from 13.1-slim to 13.2-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.2-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-19 01:10:50 +00:00
dependabot[bot]
c10bba2aae Bump debian in /dockerfiles/test-forward-proxy
Bumps debian from 13.1-slim to 13.2-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.2-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-19 01:10:48 +00:00
dependabot[bot]
12bfb75ddf Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 547.0.0-slim to 548.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 548.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-19 01:10:47 +00:00
dependabot[bot]
ff79e8cc11 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 547.0.0-slim to 548.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 548.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-19 01:10:46 +00:00
dependabot[bot]
3d5c635b18 Bump debian in /dockerfiles/deployment-yaml-formatter
Bumps debian from 13.1-slim to 13.2-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.2-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-19 01:10:45 +00:00
Joshua Casey
fad39897d7 Merge pull request #2731 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/mikefarah/yq-4.48.2
Bump mikefarah/yq from 4.48.1 to 4.48.2 in /dockerfiles/eks-deployer
2025-11-18 14:49:57 -06:00
Joshua Casey
f60f9c45b2 Merge pull request #2732 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/mikefarah/yq-4.48.2
Bump mikefarah/yq from 4.48.1 to 4.48.2 in /dockerfiles/integration-test-runner-beta
2025-11-18 14:49:54 -06:00
Joshua Casey
502341e338 Merge pull request #2733 from vmware/dependabot/docker/dockerfiles/deployment-yaml-formatter/ci/mikefarah/yq-4.48.2
Bump mikefarah/yq from 4.48.1 to 4.48.2 in /dockerfiles/deployment-yaml-formatter
2025-11-18 14:49:50 -06:00
Joshua Casey
7e10efae68 Merge pull request #2734 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/mikefarah/yq-4.48.2
Bump mikefarah/yq from 4.48.1 to 4.48.2 in /dockerfiles/integration-test-runner
2025-11-18 14:49:47 -06:00
Joshua Casey
1cc8513bbc Merge pull request #2735 from vmware/dependabot/docker/dockerfiles/crane/ci/mikefarah/yq-4.48.2
Bump mikefarah/yq from 4.48.1 to 4.48.2 in /dockerfiles/crane
2025-11-18 14:49:43 -06:00
dependabot[bot]
c5927e0b25 Bump mikefarah/yq from 4.48.1 to 4.48.2 in /dockerfiles/crane
Bumps mikefarah/yq from 4.48.1 to 4.48.2.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.48.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-18 01:13:41 +00:00
dependabot[bot]
d6381256df Bump mikefarah/yq in /dockerfiles/integration-test-runner
Bumps mikefarah/yq from 4.48.1 to 4.48.2.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.48.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-18 01:13:40 +00:00
dependabot[bot]
49998aec5c Bump mikefarah/yq in /dockerfiles/deployment-yaml-formatter
Bumps mikefarah/yq from 4.48.1 to 4.48.2.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.48.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-18 01:13:39 +00:00
dependabot[bot]
971baf45ee Bump mikefarah/yq in /dockerfiles/integration-test-runner-beta
Bumps mikefarah/yq from 4.48.1 to 4.48.2.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.48.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-18 01:13:38 +00:00
dependabot[bot]
1b6977a1d5 Bump mikefarah/yq from 4.48.1 to 4.48.2 in /dockerfiles/eks-deployer
Bumps mikefarah/yq from 4.48.1 to 4.48.2.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.48.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-18 01:13:37 +00:00
Joshua Casey
305cfce4f1 Merge pull request #2729 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.31.36
Bump amazon/aws-cli from 2.31.35 to 2.31.36 in /dockerfiles/eks-deployer
2025-11-17 07:52:20 -06:00
dependabot[bot]
d7096d71a1 Bump amazon/aws-cli from 2.31.35 to 2.31.36 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.31.35 to 2.31.36.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.31.36
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-14 01:12:53 +00:00
Joshua Casey
e31d0f5023 Merge pull request #2728 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.31.35
Bump amazon/aws-cli from 2.31.34 to 2.31.35 in /dockerfiles/eks-deployer
2025-11-13 07:02:51 -06:00
dependabot[bot]
2b45a39cfe Bump amazon/aws-cli from 2.31.34 to 2.31.35 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.31.34 to 2.31.35.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.31.35
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-13 01:12:16 +00:00
Joshua Casey
c5ed43168f Merge pull request #2723 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-547.0.0-slim
Bump google/cloud-sdk from 546.0.0-slim to 547.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-11-12 11:23:32 -06:00
Joshua Casey
095ce8ab7e Merge pull request #2724 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.31.34
Bump amazon/aws-cli from 2.31.30 to 2.31.34 in /dockerfiles/eks-deployer
2025-11-12 11:23:29 -06:00
Joshua Casey
f4839ccf45 Merge pull request #2725 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-547.0.0-slim
Bump google/cloud-sdk from 546.0.0-slim to 547.0.0-slim in /dockerfiles/integration-test-runner
2025-11-12 11:23:25 -06:00
Joshua Casey
db5a59e214 Merge pull request #2726 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-547.0.0-slim
Bump google/cloud-sdk from 546.0.0-slim to 547.0.0-slim in /dockerfiles/k8s-app-deployer
2025-11-12 11:23:20 -06:00
Joshua Casey
f874c17ce6 Merge pull request #2727 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/weaveworks/eksctl-v0.217.0
Bump weaveworks/eksctl from v0.216.0 to v0.217.0 in /dockerfiles/eks-deployer
2025-11-12 11:23:16 -06:00
dependabot[bot]
2459ba88d2 Bump weaveworks/eksctl in /dockerfiles/eks-deployer
Bumps weaveworks/eksctl from v0.216.0 to v0.217.0.

---
updated-dependencies:
- dependency-name: weaveworks/eksctl
  dependency-version: v0.217.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-12 01:13:52 +00:00
dependabot[bot]
8b95bf19a1 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 546.0.0-slim to 547.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 547.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-12 01:13:35 +00:00
dependabot[bot]
9581d88651 Bump amazon/aws-cli from 2.31.30 to 2.31.34 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.31.30 to 2.31.34.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.31.34
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-12 01:13:34 +00:00
dependabot[bot]
844682e438 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 546.0.0-slim to 547.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 547.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-12 01:13:34 +00:00
dependabot[bot]
cfd087a969 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 546.0.0-slim to 547.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 547.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-12 01:13:31 +00:00
Joshua Casey
6476b87f66 Merge pull request #2712 from vmware/dependabot/docker/dockerfiles/test-cfssl/ci/golang-1.25.4
Bump golang from 1.25.3 to 1.25.4 in /dockerfiles/test-cfssl
2025-11-06 07:37:50 -06:00
Joshua Casey
cacff5f908 Merge pull request #2713 from vmware/dependabot/docker/dockerfiles/gh-cli/ci/golang-1.25.4
Bump golang from 1.25.3 to 1.25.4 in /dockerfiles/gh-cli
2025-11-06 07:37:46 -06:00
Joshua Casey
7b6bd8ba5f Merge pull request #2714 from vmware/dependabot/docker/dockerfiles/crane/ci/golang-1.25.4
Bump golang from 1.25.3 to 1.25.4 in /dockerfiles/crane
2025-11-06 07:37:42 -06:00
Joshua Casey
9f7323acb6 Merge pull request #2715 from vmware/dependabot/docker/dockerfiles/code-coverage-uploader/ci/golang-1.25.4
Bump golang from 1.25.3 to 1.25.4 in /dockerfiles/code-coverage-uploader
2025-11-06 07:37:38 -06:00
Joshua Casey
0decaf1d19 Merge pull request #2716 from vmware/dependabot/docker/pipelines/shared-helpers/test-binaries-image/ci/golang-1.25.4-bookworm
Bump golang from 1.25.3-bookworm to 1.25.4-bookworm in /pipelines/shared-helpers/test-binaries-image
2025-11-06 07:37:34 -06:00
Joshua Casey
2757880099 Merge pull request #2717 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.31.30
Bump amazon/aws-cli from 2.31.29 to 2.31.30 in /dockerfiles/eks-deployer
2025-11-06 07:37:30 -06:00
dependabot[bot]
3c875bde80 Bump amazon/aws-cli from 2.31.29 to 2.31.30 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.31.29 to 2.31.30.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.31.30
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-06 01:12:58 +00:00
dependabot[bot]
dbb97f04b5 Bump golang in /pipelines/shared-helpers/test-binaries-image
Bumps golang from 1.25.3-bookworm to 1.25.4-bookworm.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.4-bookworm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-06 01:12:53 +00:00
dependabot[bot]
37350a766d Bump golang from 1.25.3 to 1.25.4 in /dockerfiles/code-coverage-uploader
Bumps golang from 1.25.3 to 1.25.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-06 01:12:52 +00:00
dependabot[bot]
7c5a50537c Bump golang from 1.25.3 to 1.25.4 in /dockerfiles/crane
Bumps golang from 1.25.3 to 1.25.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-06 01:12:51 +00:00
dependabot[bot]
edd7092e1b Bump golang from 1.25.3 to 1.25.4 in /dockerfiles/gh-cli
Bumps golang from 1.25.3 to 1.25.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-06 01:12:50 +00:00
dependabot[bot]
35118eca26 Bump golang from 1.25.3 to 1.25.4 in /dockerfiles/test-cfssl
Bumps golang from 1.25.3 to 1.25.4.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-06 01:12:48 +00:00
Joshua Casey
b6a9959a13 Merge pull request #2708 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-546.0.0-slim
Bump google/cloud-sdk from 545.0.0-slim to 546.0.0-slim in /dockerfiles/k8s-app-deployer
2025-11-05 13:18:45 -06:00
Joshua Casey
0434f28b7f Merge pull request #2709 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.31.29
Bump amazon/aws-cli from 2.31.27 to 2.31.29 in /dockerfiles/eks-deployer
2025-11-05 13:18:42 -06:00
Joshua Casey
d7bcbf2d06 Merge pull request #2710 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-546.0.0-slim
Bump google/cloud-sdk from 545.0.0-slim to 546.0.0-slim in /dockerfiles/integration-test-runner
2025-11-05 13:18:38 -06:00
Joshua Casey
8abdd90470 Merge pull request #2711 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-546.0.0-slim
Bump google/cloud-sdk from 545.0.0-slim to 546.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-11-05 13:18:34 -06:00
dependabot[bot]
963f7d569b Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 545.0.0-slim to 546.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 546.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 01:15:08 +00:00
dependabot[bot]
bee775f6c5 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 545.0.0-slim to 546.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 546.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 01:15:08 +00:00
dependabot[bot]
8752b48dd0 Bump amazon/aws-cli from 2.31.27 to 2.31.29 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.31.27 to 2.31.29.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.31.29
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 01:15:05 +00:00
dependabot[bot]
e1d4dee781 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 545.0.0-slim to 546.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 546.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 01:15:01 +00:00
Joshua Casey
91802dca8b Merge pull request #2704 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/weaveworks/eksctl-v0.216.0
Bump weaveworks/eksctl from v0.215.0 to v0.216.0 in /dockerfiles/eks-deployer
2025-11-03 08:32:26 -06:00
Joshua Casey
5679999db5 Merge pull request #2705 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.31.27
Bump amazon/aws-cli from 2.31.24 to 2.31.27 in /dockerfiles/eks-deployer
2025-11-03 08:32:22 -06:00
dependabot[bot]
11ba348962 Bump amazon/aws-cli from 2.31.24 to 2.31.27 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.31.24 to 2.31.27.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.31.27
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-03 01:13:54 +00:00
dependabot[bot]
8145c323ae Bump weaveworks/eksctl in /dockerfiles/eks-deployer
Bumps weaveworks/eksctl from v0.215.0 to v0.216.0.

---
updated-dependencies:
- dependency-name: weaveworks/eksctl
  dependency-version: v0.216.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-31 01:12:54 +00:00
Joshua Casey
713f9cb2cf Merge pull request #2697 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-545.0.0-slim
Bump google/cloud-sdk from 544.0.0-slim to 545.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-10-29 09:59:39 -05:00
Joshua Casey
4e6a719e99 Merge pull request #2698 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.31.24
Bump amazon/aws-cli from 2.31.21 to 2.31.24 in /dockerfiles/eks-deployer
2025-10-29 09:59:36 -05:00
Joshua Casey
08e2314c1b Merge pull request #2699 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-545.0.0-slim
Bump google/cloud-sdk from 544.0.0-slim to 545.0.0-slim in /dockerfiles/integration-test-runner
2025-10-29 09:59:32 -05:00
Joshua Casey
102b05e66c Merge pull request #2700 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-545.0.0-slim
Bump google/cloud-sdk from 544.0.0-slim to 545.0.0-slim in /dockerfiles/k8s-app-deployer
2025-10-29 09:59:28 -05:00
dependabot[bot]
76dc89704d Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 544.0.0-slim to 545.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 545.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-29 01:13:51 +00:00
dependabot[bot]
5cfdcd7a0e Bump amazon/aws-cli from 2.31.21 to 2.31.24 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.31.21 to 2.31.24.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.31.24
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-29 01:13:50 +00:00
dependabot[bot]
6e324bd6c4 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 544.0.0-slim to 545.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 545.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-29 01:13:50 +00:00
dependabot[bot]
96e58039b0 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 544.0.0-slim to 545.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 545.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-29 01:13:46 +00:00
Joshua Casey
6008c37fda Merge pull request #2691 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.31.21
Bump amazon/aws-cli from 2.31.20 to 2.31.21 in /dockerfiles/eks-deployer
2025-10-24 07:35:14 -05:00
dependabot[bot]
3fbf82d480 Bump amazon/aws-cli from 2.31.20 to 2.31.21 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.31.20 to 2.31.21.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.31.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-24 01:13:39 +00:00
Joshua Casey
7f885ec1c7 Merge pull request #2686 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-544.0.0-slim
Bump google/cloud-sdk from 543.0.0-slim to 544.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-10-23 09:03:49 -05:00
Joshua Casey
e36c263947 Merge pull request #2687 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-544.0.0-slim
Bump google/cloud-sdk from 543.0.0-slim to 544.0.0-slim in /dockerfiles/k8s-app-deployer
2025-10-23 09:03:45 -05:00
Joshua Casey
a03c719de0 Merge pull request #2688 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-544.0.0-slim
Bump google/cloud-sdk from 543.0.0-slim to 544.0.0-slim in /dockerfiles/integration-test-runner
2025-10-23 09:03:42 -05:00
Joshua Casey
8e4652528d Merge pull request #2689 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.31.20
Bump amazon/aws-cli from 2.31.18 to 2.31.20 in /dockerfiles/eks-deployer
2025-10-23 09:03:38 -05:00
dependabot[bot]
494fdf29ef Bump amazon/aws-cli from 2.31.18 to 2.31.20 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.31.18 to 2.31.20.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.31.20
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-23 02:10:00 +00:00
dependabot[bot]
4f0431c0c2 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 543.0.0-slim to 544.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 544.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-22 01:29:35 +00:00
dependabot[bot]
baa155ed24 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 543.0.0-slim to 544.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 544.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-22 01:29:14 +00:00
dependabot[bot]
ba3d96f0ad Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 543.0.0-slim to 544.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 544.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-22 01:28:54 +00:00
Joshua Casey
d34007c0f4 Merge pull request #2684 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.31.18
Bump amazon/aws-cli from 2.31.17 to 2.31.18 in /dockerfiles/eks-deployer
2025-10-20 08:39:33 -05:00
dependabot[bot]
3368578866 Bump amazon/aws-cli from 2.31.17 to 2.31.18 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.31.17 to 2.31.18.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.31.18
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-20 01:37:19 +00:00
Joshua Casey
f333b15a1d Use only the gcp-instance-admin service account 2025-10-17 07:45:08 -05:00
Joshua Casey
9645542ff6 Merge pull request #2682 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.31.17
Bump amazon/aws-cli from 2.31.15 to 2.31.17 in /dockerfiles/eks-deployer
2025-10-17 07:27:47 -05:00
dependabot[bot]
7aef9c9716 Bump amazon/aws-cli from 2.31.15 to 2.31.17 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.31.15 to 2.31.17.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.31.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-17 01:25:38 +00:00
Joshua Casey
92a1e66b25 Bump test-binaries-image dockerfiles to golang:1.25.3-bookworm 2025-10-15 14:08:17 -05:00
Joshua Casey
b886eae439 Merge pull request #2677 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-543.0.0-slim
Bump google/cloud-sdk from 542.0.0-slim to 543.0.0-slim in /dockerfiles/integration-test-runner
2025-10-15 13:36:55 -05:00
Joshua Casey
0dd150af43 Merge pull request #2678 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.31.15
Bump amazon/aws-cli from 2.31.14 to 2.31.15 in /dockerfiles/eks-deployer
2025-10-15 13:36:51 -05:00
Joshua Casey
7f65ae56e5 Merge pull request #2679 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-543.0.0-slim
Bump google/cloud-sdk from 542.0.0-slim to 543.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-10-15 13:36:47 -05:00
Joshua Casey
cd472e037d Merge pull request #2680 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-543.0.0-slim
Bump google/cloud-sdk from 542.0.0-slim to 543.0.0-slim in /dockerfiles/k8s-app-deployer
2025-10-15 13:36:44 -05:00
dependabot[bot]
6e7a376c0f Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 542.0.0-slim to 543.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 543.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-15 01:17:23 +00:00
dependabot[bot]
d4f4f5b0ea Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 542.0.0-slim to 543.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 543.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-15 01:17:23 +00:00
dependabot[bot]
43a41db67d Bump amazon/aws-cli from 2.31.14 to 2.31.15 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.31.14 to 2.31.15.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.31.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-15 01:17:22 +00:00
dependabot[bot]
26dc1c3742 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 542.0.0-slim to 543.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 543.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-15 01:16:56 +00:00
Joshua Casey
6fa8895357 Add api key and username for nancy commands 2025-10-14 11:54:33 -05:00
Joshua Casey
be15eaf023 Run integration tests on latest k8s versions 2025-10-14 09:33:00 -05:00
Joshua Casey
21acb9e10a Bump go to 1.25.3 2025-10-14 09:28:03 -05:00
Joshua Casey
64eb8a1f6b Merge pull request #2669 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/mikefarah/yq-4.48.1
Bump mikefarah/yq from 4.47.2 to 4.48.1 in /dockerfiles/eks-deployer
2025-10-14 09:24:02 -05:00
dependabot[bot]
5668b104fb Bump mikefarah/yq from 4.47.2 to 4.48.1 in /dockerfiles/eks-deployer
Bumps mikefarah/yq from 4.47.2 to 4.48.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.48.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 14:23:45 +00:00
Joshua Casey
4a2f36bf39 Merge pull request #2650 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/weaveworks/eksctl-v0.215.0
Bump weaveworks/eksctl from v0.214.0 to v0.215.0 in /dockerfiles/eks-deployer
2025-10-14 09:23:04 -05:00
Joshua Casey
31b706ae4c Merge pull request #2654 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-542.0.0-slim
Bump google/cloud-sdk from 540.0.0-slim to 542.0.0-slim in /dockerfiles/integration-test-runner
2025-10-14 09:23:00 -05:00
Joshua Casey
faa6a43778 Merge pull request #2658 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-542.0.0-slim
Bump google/cloud-sdk from 540.0.0-slim to 542.0.0-slim in /dockerfiles/k8s-app-deployer
2025-10-14 09:22:57 -05:00
Joshua Casey
7d4d69cc13 Merge pull request #2659 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-542.0.0-slim
Bump google/cloud-sdk from 540.0.0-slim to 542.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-10-14 09:22:53 -05:00
Joshua Casey
cc3e951b44 Merge pull request #2665 from vmware/dependabot/docker/dockerfiles/deployment-yaml-formatter/ci/mikefarah/yq-4.48.1
Bump mikefarah/yq from 4.47.2 to 4.48.1 in /dockerfiles/deployment-yaml-formatter
2025-10-14 09:22:49 -05:00
Joshua Casey
14e45d8264 Merge pull request #2666 from vmware/dependabot/docker/dockerfiles/crane/ci/mikefarah/yq-4.48.1
Bump mikefarah/yq from 4.47.2 to 4.48.1 in /dockerfiles/crane
2025-10-14 09:22:45 -05:00
Joshua Casey
090e9b722e Merge pull request #2667 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/mikefarah/yq-4.48.1
Bump mikefarah/yq from 4.47.2 to 4.48.1 in /dockerfiles/integration-test-runner-beta
2025-10-14 09:22:41 -05:00
Joshua Casey
58ef31f163 Merge pull request #2670 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/mikefarah/yq-4.48.1
Bump mikefarah/yq from 4.47.2 to 4.48.1 in /dockerfiles/integration-test-runner
2025-10-14 09:22:35 -05:00
Joshua Casey
c75a13aa75 Merge pull request #2671 from vmware/dependabot/docker/dockerfiles/crane/ci/golang-1.25.3
Bump golang from 1.25.1 to 1.25.3 in /dockerfiles/crane
2025-10-14 09:22:31 -05:00
Joshua Casey
f0e17ee7c2 Merge pull request #2672 from vmware/dependabot/docker/dockerfiles/code-coverage-uploader/ci/golang-1.25.3
Bump golang from 1.25.1 to 1.25.3 in /dockerfiles/code-coverage-uploader
2025-10-14 09:22:27 -05:00
Joshua Casey
6a910a597b Merge pull request #2673 from vmware/dependabot/docker/dockerfiles/test-cfssl/ci/golang-1.25.3
Bump golang from 1.25.1 to 1.25.3 in /dockerfiles/test-cfssl
2025-10-14 09:22:23 -05:00
Joshua Casey
1dbea94929 Merge pull request #2674 from vmware/dependabot/docker/dockerfiles/gh-cli/ci/golang-1.25.3
Bump golang from 1.25.1 to 1.25.3 in /dockerfiles/gh-cli
2025-10-14 09:22:19 -05:00
Joshua Casey
1ef3c73c0a Merge pull request #2675 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.31.14
Bump amazon/aws-cli from 2.31.4 to 2.31.14 in /dockerfiles/eks-deployer
2025-10-14 09:22:15 -05:00
dependabot[bot]
a718923a6d Bump amazon/aws-cli from 2.31.4 to 2.31.14 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.31.4 to 2.31.14.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.31.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 01:34:23 +00:00
dependabot[bot]
0cf2c32f38 Bump golang from 1.25.1 to 1.25.3 in /dockerfiles/gh-cli
Bumps golang from 1.25.1 to 1.25.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 01:34:04 +00:00
dependabot[bot]
f83191aab8 Bump golang from 1.25.1 to 1.25.3 in /dockerfiles/test-cfssl
Bumps golang from 1.25.1 to 1.25.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 01:33:55 +00:00
dependabot[bot]
da6d4181ad Bump golang from 1.25.1 to 1.25.3 in /dockerfiles/crane
Bumps golang from 1.25.1 to 1.25.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 01:33:32 +00:00
dependabot[bot]
feae919dfa Bump golang from 1.25.1 to 1.25.3 in /dockerfiles/code-coverage-uploader
Bumps golang from 1.25.1 to 1.25.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 01:33:32 +00:00
dependabot[bot]
518b551d2c Bump mikefarah/yq in /dockerfiles/integration-test-runner
Bumps mikefarah/yq from 4.47.2 to 4.48.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.48.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-13 01:40:51 +00:00
dependabot[bot]
77c38ba107 Bump mikefarah/yq in /dockerfiles/integration-test-runner-beta
Bumps mikefarah/yq from 4.47.2 to 4.48.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.48.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-13 01:39:36 +00:00
dependabot[bot]
88a94149dd Bump mikefarah/yq from 4.47.2 to 4.48.1 in /dockerfiles/crane
Bumps mikefarah/yq from 4.47.2 to 4.48.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.48.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-13 01:39:29 +00:00
dependabot[bot]
3baaa0c2f7 Bump mikefarah/yq in /dockerfiles/deployment-yaml-formatter
Bumps mikefarah/yq from 4.47.2 to 4.48.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.48.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-13 01:39:16 +00:00
dependabot[bot]
4cdf4e5a3a Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 540.0.0-slim to 542.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 542.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 01:32:35 +00:00
dependabot[bot]
3c63fe3ed3 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 540.0.0-slim to 542.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 542.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 01:32:29 +00:00
dependabot[bot]
cd6bc1f27e Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 540.0.0-slim to 542.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 542.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 01:32:17 +00:00
dependabot[bot]
7308df3475 Bump weaveworks/eksctl in /dockerfiles/eks-deployer
Bumps weaveworks/eksctl from v0.214.0 to v0.215.0.

---
updated-dependencies:
- dependency-name: weaveworks/eksctl
  dependency-version: v0.215.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-03 01:46:07 +00:00
Joshua Casey
822ad89847 Merge pull request #2636 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-540.0.0-slim
Bump google/cloud-sdk from 538.0.0-slim to 540.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-09-30 07:57:34 -05:00
Joshua Casey
d79dd2b7ba Merge pull request #2637 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-540.0.0-slim
Bump google/cloud-sdk from 538.0.0-slim to 540.0.0-slim in /dockerfiles/integration-test-runner
2025-09-30 07:57:31 -05:00
Joshua Casey
2b1dbb65f0 Merge pull request #2638 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-540.0.0-slim
Bump google/cloud-sdk from 538.0.0-slim to 540.0.0-slim in /dockerfiles/k8s-app-deployer
2025-09-30 07:57:27 -05:00
Joshua Casey
945d5be8d7 Merge pull request #2644 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.31.4
Bump amazon/aws-cli from 2.29.0 to 2.31.4 in /dockerfiles/eks-deployer
2025-09-30 07:54:09 -05:00
dependabot[bot]
9467611fed Bump amazon/aws-cli from 2.29.0 to 2.31.4 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.29.0 to 2.31.4.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.31.4
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-30 02:16:11 +00:00
dependabot[bot]
7eb1dfb5e9 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 538.0.0-slim to 540.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 540.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-24 01:23:56 +00:00
dependabot[bot]
e676528272 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 538.0.0-slim to 540.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 540.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-24 01:23:46 +00:00
dependabot[bot]
f6e12539f2 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 538.0.0-slim to 540.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 540.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-24 01:15:57 +00:00
Joshua Casey
30c755c348 Merge pull request #2620 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-538.0.0-slim
Bump google/cloud-sdk from 537.0.0-slim to 538.0.0-slim in /dockerfiles/integration-test-runner
2025-09-10 11:32:34 -05:00
Joshua Casey
05160f716a Merge pull request #2621 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-538.0.0-slim
Bump google/cloud-sdk from 537.0.0-slim to 538.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-09-10 11:32:31 -05:00
Joshua Casey
327acc6a7e Merge pull request #2622 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.29.0
Bump amazon/aws-cli from 2.28.26 to 2.29.0 in /dockerfiles/eks-deployer
2025-09-10 11:32:27 -05:00
Joshua Casey
b5bbe4bcb7 Merge pull request #2623 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-538.0.0-slim
Bump google/cloud-sdk from 537.0.0-slim to 538.0.0-slim in /dockerfiles/k8s-app-deployer
2025-09-10 11:32:23 -05:00
dependabot[bot]
191a2ed215 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 537.0.0-slim to 538.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 538.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-10 01:27:18 +00:00
dependabot[bot]
11fc1fb9a6 Bump amazon/aws-cli from 2.28.26 to 2.29.0 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.28.26 to 2.29.0.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.29.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-10 01:27:15 +00:00
dependabot[bot]
e3f4c61055 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 537.0.0-slim to 538.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 538.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-10 01:27:08 +00:00
dependabot[bot]
9ebf663ecb Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 537.0.0-slim to 538.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 538.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-10 01:26:56 +00:00
Joshua Casey
049653edb3 Add job to build k8s 0.34.0 codegen image 2025-09-09 09:58:57 -05:00
Joshua Casey
35d645b655 Merge pull request #2611 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.28.26
Bump amazon/aws-cli from 2.28.21 to 2.28.26 in /dockerfiles/eks-deployer
2025-09-09 09:30:30 -05:00
Joshua Casey
9ffdf3f568 Bump go to v1.25.1 2025-09-09 09:30:05 -05:00
dependabot[bot]
ebeadf8c9f Bump amazon/aws-cli from 2.28.21 to 2.28.26 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.28.21 to 2.28.26.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.28.26
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 14:19:55 +00:00
Joshua Casey
9ec3db7499 Merge pull request #2592 from vmware/dependabot/docker/dockerfiles/test-dex/ci/dexidp/dex-v2.44.0
Bump dexidp/dex from v2.43.1 to v2.44.0 in /dockerfiles/test-dex
2025-09-09 09:18:26 -05:00
Joshua Casey
fcd9b2b701 Merge pull request #2594 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-537.0.0-slim
Bump google/cloud-sdk from 536.0.1-slim to 537.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-09-09 09:18:22 -05:00
Joshua Casey
40124f2c14 Merge pull request #2596 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-537.0.0-slim
Bump google/cloud-sdk from 536.0.1-slim to 537.0.0-slim in /dockerfiles/integration-test-runner
2025-09-09 09:18:19 -05:00
Joshua Casey
40d7a04e13 Merge pull request #2597 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-537.0.0-slim
Bump google/cloud-sdk from 536.0.1-slim to 537.0.0-slim in /dockerfiles/k8s-app-deployer
2025-09-09 09:18:15 -05:00
Joshua Casey
c9b67d7b15 Merge pull request #2600 from vmware/dependabot/docker/dockerfiles/gh-cli/ci/golang-1.25.1
Bump golang from 1.25.0 to 1.25.1 in /dockerfiles/gh-cli
2025-09-09 09:18:12 -05:00
Joshua Casey
c107713fa4 Merge pull request #2601 from vmware/dependabot/docker/dockerfiles/test-cfssl/ci/golang-1.25.1
Bump golang from 1.25.0 to 1.25.1 in /dockerfiles/test-cfssl
2025-09-09 09:18:08 -05:00
Joshua Casey
ad50933d72 Merge pull request #2602 from vmware/dependabot/docker/dockerfiles/crane/ci/golang-1.25.1
Bump golang from 1.25.0 to 1.25.1 in /dockerfiles/crane
2025-09-09 09:18:04 -05:00
Joshua Casey
aa71296834 Merge pull request #2604 from vmware/dependabot/docker/dockerfiles/code-coverage-uploader/ci/golang-1.25.1
Bump golang from 1.25.0 to 1.25.1 in /dockerfiles/code-coverage-uploader
2025-09-09 09:18:01 -05:00
Joshua Casey
99140644a1 Merge pull request #2607 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/mikefarah/yq-4.47.2
Bump mikefarah/yq from 4.47.1 to 4.47.2 in /dockerfiles/integration-test-runner-beta
2025-09-09 09:17:56 -05:00
Joshua Casey
63a78eba86 Merge pull request #2608 from vmware/dependabot/docker/dockerfiles/test-forward-proxy/ci/debian-13.1-slim
Bump debian from 13.0-slim to 13.1-slim in /dockerfiles/test-forward-proxy
2025-09-09 09:17:53 -05:00
Joshua Casey
6d86fe3d67 Merge pull request #2609 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/mikefarah/yq-4.47.2
Bump mikefarah/yq from 4.47.1 to 4.47.2 in /dockerfiles/integration-test-runner
2025-09-09 09:17:49 -05:00
Joshua Casey
22019fb5be Merge pull request #2610 from vmware/dependabot/docker/dockerfiles/code-coverage-uploader/ci/debian-13.1-slim
Bump debian from 13.0-slim to 13.1-slim in /dockerfiles/code-coverage-uploader
2025-09-09 09:17:46 -05:00
Joshua Casey
b75ddf0f3b Merge pull request #2612 from vmware/dependabot/docker/dockerfiles/deployment-yaml-formatter/ci/debian-13.1-slim
Bump debian from 13.0-slim to 13.1-slim in /dockerfiles/deployment-yaml-formatter
2025-09-09 09:17:42 -05:00
Joshua Casey
02f9a8fbb7 Merge pull request #2613 from vmware/dependabot/docker/dockerfiles/crane/ci/mikefarah/yq-4.47.2
Bump mikefarah/yq from 4.47.1 to 4.47.2 in /dockerfiles/crane
2025-09-09 09:17:38 -05:00
Joshua Casey
37df6f2c91 Merge pull request #2614 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/mikefarah/yq-4.47.2
Bump mikefarah/yq from 4.47.1 to 4.47.2 in /dockerfiles/eks-deployer
2025-09-09 09:17:34 -05:00
Joshua Casey
87c882090a Merge pull request #2615 from vmware/dependabot/docker/dockerfiles/deployment-yaml-formatter/ci/mikefarah/yq-4.47.2
Bump mikefarah/yq from 4.47.1 to 4.47.2 in /dockerfiles/deployment-yaml-formatter
2025-09-09 09:17:31 -05:00
Joshua Casey
4a638df300 Merge pull request #2616 from vmware/dependabot/docker/dockerfiles/gh-cli/ci/debian-13.1-slim
Bump debian from 13.0-slim to 13.1-slim in /dockerfiles/gh-cli
2025-09-09 09:17:27 -05:00
Joshua Casey
785322b8ee Merge pull request #2617 from vmware/dependabot/docker/dockerfiles/pool-trigger-resource/ci/debian-13.1-slim
Bump debian from 13.0-slim to 13.1-slim in /dockerfiles/pool-trigger-resource
2025-09-09 09:17:23 -05:00
dependabot[bot]
9809f243b9 Bump debian in /dockerfiles/pool-trigger-resource
Bumps debian from 13.0-slim to 13.1-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.1-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 01:27:21 +00:00
dependabot[bot]
16f2e624b3 Bump debian from 13.0-slim to 13.1-slim in /dockerfiles/gh-cli
Bumps debian from 13.0-slim to 13.1-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.1-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 01:27:19 +00:00
dependabot[bot]
8380ff7db1 Bump mikefarah/yq from 4.47.1 to 4.47.2 in /dockerfiles/eks-deployer
Bumps mikefarah/yq from 4.47.1 to 4.47.2.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.47.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 01:27:06 +00:00
dependabot[bot]
bd426c53a8 Bump mikefarah/yq in /dockerfiles/deployment-yaml-formatter
Bumps mikefarah/yq from 4.47.1 to 4.47.2.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.47.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 01:27:06 +00:00
dependabot[bot]
3b0ada5fa6 Bump debian in /dockerfiles/deployment-yaml-formatter
Bumps debian from 13.0-slim to 13.1-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.1-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 01:27:05 +00:00
dependabot[bot]
46e91cf593 Bump mikefarah/yq from 4.47.1 to 4.47.2 in /dockerfiles/crane
Bumps mikefarah/yq from 4.47.1 to 4.47.2.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.47.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 01:27:05 +00:00
dependabot[bot]
67b48ac597 Bump debian in /dockerfiles/code-coverage-uploader
Bumps debian from 13.0-slim to 13.1-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.1-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 01:27:04 +00:00
dependabot[bot]
0a6ef392e2 Bump mikefarah/yq in /dockerfiles/integration-test-runner
Bumps mikefarah/yq from 4.47.1 to 4.47.2.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.47.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 01:27:02 +00:00
dependabot[bot]
8a9f7ed3be Bump debian in /dockerfiles/test-forward-proxy
Bumps debian from 13.0-slim to 13.1-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.1-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 01:27:00 +00:00
dependabot[bot]
2563566117 Bump mikefarah/yq in /dockerfiles/integration-test-runner-beta
Bumps mikefarah/yq from 4.47.1 to 4.47.2.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.47.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 01:26:52 +00:00
dependabot[bot]
c35dbb0d99 Bump golang from 1.25.0 to 1.25.1 in /dockerfiles/code-coverage-uploader
Bumps golang from 1.25.0 to 1.25.1.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 01:39:33 +00:00
dependabot[bot]
d4f94e7ade Bump golang from 1.25.0 to 1.25.1 in /dockerfiles/crane
Bumps golang from 1.25.0 to 1.25.1.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 01:38:18 +00:00
dependabot[bot]
ae7eb22778 Bump golang from 1.25.0 to 1.25.1 in /dockerfiles/test-cfssl
Bumps golang from 1.25.0 to 1.25.1.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 01:38:08 +00:00
dependabot[bot]
f3b3adc656 Bump golang from 1.25.0 to 1.25.1 in /dockerfiles/gh-cli
Bumps golang from 1.25.0 to 1.25.1.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 01:37:59 +00:00
dependabot[bot]
d19711fb8a Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 536.0.1-slim to 537.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 537.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 11:20:08 +00:00
dependabot[bot]
8b4f1bc972 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 536.0.1-slim to 537.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 537.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 10:25:41 +00:00
dependabot[bot]
51e4345e7a Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 536.0.1-slim to 537.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 537.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 09:41:29 +00:00
dependabot[bot]
2a21874787 Bump dexidp/dex from v2.43.1 to v2.44.0 in /dockerfiles/test-dex
Bumps [dexidp/dex](https://github.com/dexidp/dex) from v2.43.1 to v2.44.0.
- [Release notes](https://github.com/dexidp/dex/releases)
- [Commits](https://github.com/dexidp/dex/compare/v2.43.1...v2.44.0)

---
updated-dependencies:
- dependency-name: dexidp/dex
  dependency-version: v2.44.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 22:21:50 +00:00
Joshua Casey
4d1e78ccf3 Merge pull request #2582 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-536.0.1-slim
Bump google/cloud-sdk from 535.0.0-slim to 536.0.1-slim in /dockerfiles/integration-test-runner-beta
2025-09-02 12:30:49 -05:00
Joshua Casey
08faafceff Merge pull request #2583 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-536.0.1-slim
Bump google/cloud-sdk from 535.0.0-slim to 536.0.1-slim in /dockerfiles/k8s-app-deployer
2025-09-02 12:30:45 -05:00
Joshua Casey
9e8f9bc97b Merge pull request #2584 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/weaveworks/eksctl-v0.214.0
Bump weaveworks/eksctl from v0.212.0 to v0.214.0 in /dockerfiles/eks-deployer
2025-09-02 12:30:42 -05:00
Joshua Casey
81f13ea247 Merge pull request #2585 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-536.0.1-slim
Bump google/cloud-sdk from 535.0.0-slim to 536.0.1-slim in /dockerfiles/integration-test-runner
2025-09-02 12:30:39 -05:00
Joshua Casey
356ee3fe15 Merge pull request #2591 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.28.21
Bump amazon/aws-cli from 2.28.13 to 2.28.21 in /dockerfiles/eks-deployer
2025-09-02 12:30:35 -05:00
dependabot[bot]
f618cc1d00 Bump amazon/aws-cli from 2.28.13 to 2.28.21 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.28.13 to 2.28.21.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.28.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-01 03:15:12 +00:00
Ryan Richard
d53ba383b7 use bitnamilegacy/openldap 2025-08-28 11:50:51 -07:00
Ryan Richard
8ad9585d64 update codegen versions in dockerfile pipeline 2025-08-28 10:47:32 -07:00
Ryan Richard
265f4e4b9c update acceptance cluster machine size in create script 2025-08-28 10:36:07 -07:00
dependabot[bot]
3308e6e211 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 535.0.0-slim to 536.0.1-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 536.0.1-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-28 06:36:53 +00:00
dependabot[bot]
7a8b849cbf Bump weaveworks/eksctl in /dockerfiles/eks-deployer
Bumps weaveworks/eksctl from v0.212.0 to v0.214.0.

---
updated-dependencies:
- dependency-name: weaveworks/eksctl
  dependency-version: v0.214.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-28 06:33:47 +00:00
dependabot[bot]
7f2086e1b1 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 535.0.0-slim to 536.0.1-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 536.0.1-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-28 05:15:08 +00:00
dependabot[bot]
bc7085dfb2 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 535.0.0-slim to 536.0.1-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 536.0.1-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-28 05:00:34 +00:00
Ryan Richard
b65f53379a chmod the cache directory using the correct path 2025-08-21 12:29:12 -07:00
Ryan Richard
0c6f80c3db chmod the cache directory in task which runs integration tests 2025-08-21 12:18:53 -07:00
Ryan Richard
f8781b483f try workaround for Go 1.25.0 with old x/tools build problem 2025-08-20 15:19:32 -07:00
Joshua Casey
8641046b0b Merge pull request #2565 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.28.13
Bump amazon/aws-cli from 2.28.11 to 2.28.13 in /dockerfiles/eks-deployer
2025-08-20 09:32:02 -05:00
Joshua Casey
f762a15878 Merge pull request #2566 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-535.0.0-slim
Bump google/cloud-sdk from 534.0.0-slim to 535.0.0-slim in /dockerfiles/integration-test-runner
2025-08-20 09:31:58 -05:00
Joshua Casey
465c042fae Merge pull request #2567 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-535.0.0-slim
Bump google/cloud-sdk from 534.0.0-slim to 535.0.0-slim in /dockerfiles/k8s-app-deployer
2025-08-20 09:31:55 -05:00
Joshua Casey
6eb8f7cdc6 Merge pull request #2568 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-535.0.0-slim
Bump google/cloud-sdk from 534.0.0-slim to 535.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-08-20 09:31:52 -05:00
dependabot[bot]
74485f4200 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 534.0.0-slim to 535.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 535.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-20 06:24:44 +00:00
dependabot[bot]
244c95cc18 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 534.0.0-slim to 535.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 535.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-20 05:54:58 +00:00
dependabot[bot]
fbcf2f3fc7 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 534.0.0-slim to 535.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 535.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-20 05:24:28 +00:00
dependabot[bot]
368a4d1b06 Bump amazon/aws-cli from 2.28.11 to 2.28.13 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.28.11 to 2.28.13.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.28.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-20 03:13:46 +00:00
Ryan Richard
4db259ddaf add more echo statements to k8s-code-generator/setup.sh 2025-08-18 13:58:57 -07:00
Ryan Richard
4d23e8d45a enhance confirm-built-with-fips for kube-vert-agent for Go 1.25 2025-08-18 12:36:59 -07:00
Ryan Richard
021a846123 Merge pull request #2563 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.28.11
Bump amazon/aws-cli from 2.28.10 to 2.28.11 in /dockerfiles/eks-deployer
2025-08-18 12:07:18 -07:00
Ryan Richard
d160e9a23a upgrade CI from Go 1.24.6 to 1.25.0 2025-08-18 12:04:46 -07:00
dependabot[bot]
43e730eee6 Bump amazon/aws-cli from 2.28.10 to 2.28.11 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.28.10 to 2.28.11.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.28.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-18 01:57:30 +00:00
Joshua Casey
914fd15129 Merge pull request #2556 from vmware/dependabot/docker/dockerfiles/test-cfssl/ci/golang-1.25.0
Bump golang from 1.24.6 to 1.25.0 in /dockerfiles/test-cfssl
2025-08-15 07:11:50 -05:00
Joshua Casey
ee2a5499d4 Merge pull request #2557 from vmware/dependabot/docker/dockerfiles/gh-cli/ci/golang-1.25.0
Bump golang from 1.24.6 to 1.25.0 in /dockerfiles/gh-cli
2025-08-15 07:11:47 -05:00
Joshua Casey
3221b5768b Merge pull request #2558 from vmware/dependabot/docker/dockerfiles/code-coverage-uploader/ci/golang-1.25.0
Bump golang from 1.24.6 to 1.25.0 in /dockerfiles/code-coverage-uploader
2025-08-15 07:11:44 -05:00
Joshua Casey
3444d7e9e3 Merge pull request #2560 from vmware/dependabot/docker/dockerfiles/crane/ci/golang-1.25.0
Bump golang from 1.24.6 to 1.25.0 in /dockerfiles/crane
2025-08-15 07:11:41 -05:00
Joshua Casey
74ac97d48c Merge pull request #2561 from vmware/dependabot/docker/pipelines/shared-helpers/test-binaries-image/ci/golang-1.25rc3-bullseye
Bump golang from 1.24.6-bullseye to 1.25rc3-bullseye in /pipelines/shared-helpers/test-binaries-image
2025-08-15 07:11:38 -05:00
Joshua Casey
be493e7f21 Merge pull request #2562 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.28.10
Bump amazon/aws-cli from 2.28.8 to 2.28.10 in /dockerfiles/eks-deployer
2025-08-15 07:11:34 -05:00
dependabot[bot]
1b57096ba1 Bump amazon/aws-cli from 2.28.8 to 2.28.10 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.28.8 to 2.28.10.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.28.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-15 02:04:09 +00:00
dependabot[bot]
2554c7de6c Bump golang in /pipelines/shared-helpers/test-binaries-image
Bumps golang from 1.24.6-bullseye to 1.25rc3-bullseye.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25rc3-bullseye
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-14 02:03:43 +00:00
dependabot[bot]
4d948eb8ff Bump golang from 1.24.6 to 1.25.0 in /dockerfiles/crane
Bumps golang from 1.24.6 to 1.25.0.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-14 01:58:14 +00:00
dependabot[bot]
d16fcce560 Bump golang from 1.24.6 to 1.25.0 in /dockerfiles/code-coverage-uploader
Bumps golang from 1.24.6 to 1.25.0.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-14 01:41:23 +00:00
dependabot[bot]
ec9b1ef38f Bump golang from 1.24.6 to 1.25.0 in /dockerfiles/gh-cli
Bumps golang from 1.24.6 to 1.25.0.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-14 01:40:53 +00:00
dependabot[bot]
f67c119cdd Bump golang from 1.24.6 to 1.25.0 in /dockerfiles/test-cfssl
Bumps golang from 1.24.6 to 1.25.0.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-14 01:40:45 +00:00
Joshua Casey
69f9e9b35c Bump go to 1.24.6 2025-08-13 08:59:08 -05:00
Joshua Casey
5bf398d085 Merge pull request #2537 from vmware/dependabot/docker/dockerfiles/code-coverage-uploader/ci/golang-1.24.6
Bump golang from 1.24.5 to 1.24.6 in /dockerfiles/code-coverage-uploader
2025-08-13 05:27:28 -07:00
Joshua Casey
901b5d49e2 Merge pull request #2538 from vmware/dependabot/docker/pipelines/shared-helpers/test-binaries-image/ci/golang-1.24.6-bullseye
Bump golang from 1.24.5-bullseye to 1.24.6-bullseye in /pipelines/shared-helpers/test-binaries-image
2025-08-13 05:27:25 -07:00
Joshua Casey
1663ef9d8c Merge pull request #2539 from vmware/dependabot/docker/dockerfiles/crane/ci/golang-1.24.6
Bump golang from 1.24.5 to 1.24.6 in /dockerfiles/crane
2025-08-13 05:27:22 -07:00
Joshua Casey
d2fad0d05b Merge pull request #2541 from vmware/dependabot/docker/dockerfiles/gh-cli/ci/golang-1.24.6
Bump golang from 1.24.5 to 1.24.6 in /dockerfiles/gh-cli
2025-08-13 05:27:19 -07:00
Joshua Casey
8b72dac83d Merge pull request #2542 from vmware/dependabot/docker/dockerfiles/test-cfssl/ci/golang-1.24.6
Bump golang from 1.24.5 to 1.24.6 in /dockerfiles/test-cfssl
2025-08-13 05:27:16 -07:00
Joshua Casey
893c496f1b Merge pull request #2547 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-534.0.0-slim
Bump google/cloud-sdk from 532.0.0-slim to 534.0.0-slim in /dockerfiles/integration-test-runner
2025-08-13 05:27:12 -07:00
Joshua Casey
cb55d024ea Merge pull request #2548 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-534.0.0-slim
Bump google/cloud-sdk from 532.0.0-slim to 534.0.0-slim in /dockerfiles/k8s-app-deployer
2025-08-13 05:27:09 -07:00
Joshua Casey
91f97a2669 Merge pull request #2549 from vmware/dependabot/docker/dockerfiles/pool-trigger-resource/ci/debian-13.0-slim
Bump debian from 12.11-slim to 13.0-slim in /dockerfiles/pool-trigger-resource
2025-08-13 05:27:06 -07:00
Joshua Casey
2ea43bd79c Merge pull request #2550 from vmware/dependabot/docker/dockerfiles/gh-cli/ci/debian-13.0-slim
Bump debian from 12.11-slim to 13.0-slim in /dockerfiles/gh-cli
2025-08-13 05:27:02 -07:00
Joshua Casey
d6581c0822 Merge pull request #2551 from vmware/dependabot/docker/dockerfiles/code-coverage-uploader/ci/debian-13.0-slim
Bump debian from 12.11-slim to 13.0-slim in /dockerfiles/code-coverage-uploader
2025-08-13 05:26:59 -07:00
Joshua Casey
ad001a6ad2 Merge pull request #2552 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-534.0.0-slim
Bump google/cloud-sdk from 532.0.0-slim to 534.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-08-13 05:26:56 -07:00
Joshua Casey
be70267091 Merge pull request #2553 from vmware/dependabot/docker/dockerfiles/deployment-yaml-formatter/ci/debian-13.0-slim
Bump debian from 12.11-slim to 13.0-slim in /dockerfiles/deployment-yaml-formatter
2025-08-13 05:26:52 -07:00
Joshua Casey
2d64689f67 Merge pull request #2554 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.28.8
Bump amazon/aws-cli from 2.28.1 to 2.28.8 in /dockerfiles/eks-deployer
2025-08-13 05:26:49 -07:00
Joshua Casey
a271c6da82 Merge pull request #2555 from vmware/dependabot/docker/dockerfiles/test-forward-proxy/ci/debian-13.0-slim
Bump debian from 12.11-slim to 13.0-slim in /dockerfiles/test-forward-proxy
2025-08-13 05:26:45 -07:00
dependabot[bot]
c8e2ab591f Bump debian in /dockerfiles/test-forward-proxy
Bumps debian from 12.11-slim to 13.0-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.0-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 03:20:40 +00:00
dependabot[bot]
06b455f1d8 Bump amazon/aws-cli from 2.28.1 to 2.28.8 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.28.1 to 2.28.8.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.28.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 03:19:27 +00:00
dependabot[bot]
b13e44a043 Bump debian in /dockerfiles/deployment-yaml-formatter
Bumps debian from 12.11-slim to 13.0-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.0-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 03:18:20 +00:00
dependabot[bot]
4cc49444c8 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 532.0.0-slim to 534.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 534.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 02:49:53 +00:00
dependabot[bot]
1f8b65dfd8 Bump debian in /dockerfiles/code-coverage-uploader
Bumps debian from 12.11-slim to 13.0-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.0-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 02:47:22 +00:00
dependabot[bot]
55438a949d Bump debian from 12.11-slim to 13.0-slim in /dockerfiles/gh-cli
Bumps debian from 12.11-slim to 13.0-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.0-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 02:47:17 +00:00
dependabot[bot]
cba84e9e6c Bump debian in /dockerfiles/pool-trigger-resource
Bumps debian from 12.11-slim to 13.0-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 13.0-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 02:46:17 +00:00
dependabot[bot]
1f0d57310e Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 532.0.0-slim to 534.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 534.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 02:25:01 +00:00
dependabot[bot]
d9117d1a27 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 532.0.0-slim to 534.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 534.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 01:57:17 +00:00
dependabot[bot]
ab85905c31 Bump golang from 1.24.5 to 1.24.6 in /dockerfiles/test-cfssl
Bumps golang from 1.24.5 to 1.24.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-07 03:33:11 +00:00
dependabot[bot]
eca660d3ba Bump golang from 1.24.5 to 1.24.6 in /dockerfiles/gh-cli
Bumps golang from 1.24.5 to 1.24.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-07 03:33:09 +00:00
dependabot[bot]
420608f0b8 Bump golang from 1.24.5 to 1.24.6 in /dockerfiles/crane
Bumps golang from 1.24.5 to 1.24.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-07 03:32:27 +00:00
dependabot[bot]
e97a4e38d1 Bump golang in /pipelines/shared-helpers/test-binaries-image
Bumps golang from 1.24.5-bullseye to 1.24.6-bullseye.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.6-bullseye
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-07 03:32:18 +00:00
dependabot[bot]
107452e1dd Bump golang from 1.24.5 to 1.24.6 in /dockerfiles/code-coverage-uploader
Bumps golang from 1.24.5 to 1.24.6.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-07 02:21:50 +00:00
Ryan Richard
c1fcb8a0fc more towards update version/docs after release by creating a PR 2025-08-04 14:15:38 -07:00
Ryan Richard
3ea7403b6f update version and docs on website after release by creating a PR
instead of doing a direct commit to the main branch
2025-08-04 14:04:12 -07:00
Ryan Richard
901b77dd4f fix username and password for jobs that push to git via https 2025-08-04 13:44:26 -07:00
Ryan Richard
5899ac8066 update homebrew formula task can use golang image instead of debian 2025-08-04 13:12:18 -07:00
Joshua Casey
0152233678 Merge pull request #2527 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.28.1
Bump amazon/aws-cli from 2.27.62 to 2.28.1 in /dockerfiles/eks-deployer
2025-08-04 07:17:53 -05:00
dependabot[bot]
85f8fe63a3 Bump amazon/aws-cli from 2.27.62 to 2.28.1 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.27.62 to 2.28.1.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.28.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-04 01:41:50 +00:00
Ryan Richard
0981780d6a account for move of repo from vmware-tanzu to vmware on GitHub 2025-08-02 15:01:00 -07:00
Ryan Richard
f09c89dd43 use golang image in format-release task 2025-08-02 14:26:08 -07:00
Ryan Richard
22181a6361 use openssl instead of python to generate eks cluster names
because python is not part of Amazon's container image anymore
2025-08-02 12:05:34 -07:00
Ryan Richard
bd0bdb49e2 use smaller/cheaper nodes for regional GKE clusters 2025-08-02 09:22:05 -07:00
Ryan Richard
7dbf91d5d2 Revert "try using a bigger node machine type for tmp GKE clusters"
This reverts commit 16dd97aff4.
2025-08-02 09:11:08 -07:00
Ryan Richard
07b4fb8dcc try using regional GKE clusters instead of zonal 2025-08-02 08:43:48 -07:00
Ryan Richard
16dd97aff4 try using a bigger node machine type for tmp GKE clusters 2025-08-01 17:35:56 -07:00
Ryan Richard
7dd407d1d2 update kube and crd-ref-docs versions for codegen images 2025-08-01 10:23:08 -07:00
Ryan Richard
58b7613824 use okta ldap in PR pipeline 2025-07-31 15:12:37 -07:00
Ryan Richard
f55990195f auth before waiting for running GKE operations to finish 2025-07-31 12:07:05 -07:00
Ryan Richard
a457259302 wait for running GKE operations to finish before deleting a cluster 2025-07-31 11:20:21 -07:00
Ryan Richard
1cc9410de1 add retries when deleting GKE clusters because the deletes are failing 2025-07-31 10:04:33 -07:00
Joshua Casey
de74515d89 Merge pull request #2517 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-532.0.0-slim
Bump google/cloud-sdk from 531.0.0-slim to 532.0.0-slim in /dockerfiles/integration-test-runner
2025-07-30 09:01:24 -05:00
Joshua Casey
3b1c4d6da1 Merge pull request #2518 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-532.0.0-slim
Bump google/cloud-sdk from 531.0.0-slim to 532.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-07-30 09:01:21 -05:00
Joshua Casey
1311836cfa Merge pull request #2519 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-532.0.0-slim
Bump google/cloud-sdk from 531.0.0-slim to 532.0.0-slim in /dockerfiles/k8s-app-deployer
2025-07-30 09:01:17 -05:00
Joshua Casey
9823420a2b Merge pull request #2520 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.27.62
Bump amazon/aws-cli from 2.27.60 to 2.27.62 in /dockerfiles/eks-deployer
2025-07-30 09:01:14 -05:00
Joshua Casey
e46a0ca5ff Merge pull request #2521 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/weaveworks/eksctl-v0.212.0
Bump weaveworks/eksctl from v0.211.0 to v0.212.0 in /dockerfiles/eks-deployer
2025-07-30 09:01:10 -05:00
dependabot[bot]
c6d01a0eb7 Bump weaveworks/eksctl in /dockerfiles/eks-deployer
Bumps weaveworks/eksctl from v0.211.0 to v0.212.0.

---
updated-dependencies:
- dependency-name: weaveworks/eksctl
  dependency-version: v0.212.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-30 02:07:24 +00:00
dependabot[bot]
2fa5c5bd9e Bump amazon/aws-cli from 2.27.60 to 2.27.62 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.27.60 to 2.27.62.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.27.62
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-30 02:07:09 +00:00
dependabot[bot]
94f6d9ffb3 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 531.0.0-slim to 532.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 532.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-30 02:04:19 +00:00
dependabot[bot]
f55d9afff3 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 531.0.0-slim to 532.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 532.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-30 01:37:15 +00:00
dependabot[bot]
e9fbd9490f Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 531.0.0-slim to 532.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 532.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-30 01:29:36 +00:00
Ryan Richard
6176493f42 temporarily comment out okta LDAP tests in PR pipeline 2025-07-28 15:16:10 -07:00
Ryan Richard
906dfd860c upgrade Go in CI from 1.24.4 to 1.24.5 2025-07-28 15:11:53 -07:00
Joshua Casey
ce066037ec Merge pull request #2515 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.27.60
Bump amazon/aws-cli from 2.27.59 to 2.27.60 in /dockerfiles/eks-deployer
2025-07-28 10:33:57 -05:00
dependabot[bot]
b829ec1e2b Bump amazon/aws-cli from 2.27.59 to 2.27.60 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.27.59 to 2.27.60.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.27.60
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-28 01:39:29 +00:00
Joshua Casey
c5150e162a Merge pull request #2513 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.27.59
Bump amazon/aws-cli from 2.27.58 to 2.27.59 in /dockerfiles/eks-deployer
2025-07-25 15:17:34 -05:00
Ryan Richard
0caeb7b841 Use Okta LDAP instead of Jumpcloud LDAP 2025-07-25 11:59:37 -07:00
dependabot[bot]
df7221afd6 Bump amazon/aws-cli from 2.27.58 to 2.27.59 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.27.58 to 2.27.59.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.27.59
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-25 01:51:55 +00:00
Joshua Casey
39e3d06571 Merge pull request #2509 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/mikefarah/yq-4.47.1
Bump mikefarah/yq from 4.45.4 to 4.47.1 in /dockerfiles/eks-deployer
2025-07-24 08:18:30 -05:00
dependabot[bot]
695e0bd911 Bump mikefarah/yq from 4.45.4 to 4.47.1 in /dockerfiles/eks-deployer
Bumps mikefarah/yq from 4.45.4 to 4.47.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.47.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-24 13:16:40 +00:00
Joshua Casey
474cab503e Merge pull request #2477 from vmware/dependabot/docker/dockerfiles/code-coverage-uploader/ci/golang-1.24.5
Bump golang from 1.24.4 to 1.24.5 in /dockerfiles/code-coverage-uploader
2025-07-24 08:16:01 -05:00
Joshua Casey
39ab459b55 Merge pull request #2478 from vmware/dependabot/docker/dockerfiles/crane/ci/golang-1.24.5
Bump golang from 1.24.4 to 1.24.5 in /dockerfiles/crane
2025-07-24 08:15:57 -05:00
Joshua Casey
ef256e3613 Merge pull request #2479 from vmware/dependabot/docker/dockerfiles/test-cfssl/ci/golang-1.24.5
Bump golang from 1.24.4 to 1.24.5 in /dockerfiles/test-cfssl
2025-07-24 08:15:54 -05:00
Joshua Casey
d0ff12f058 Merge pull request #2480 from vmware/dependabot/docker/dockerfiles/gh-cli/ci/golang-1.24.5
Bump golang from 1.24.4 to 1.24.5 in /dockerfiles/gh-cli
2025-07-24 08:15:50 -05:00
Joshua Casey
9db9d52c27 Merge pull request #2481 from vmware/dependabot/docker/pipelines/shared-helpers/test-binaries-image/ci/golang-1.24.5-bullseye
Bump golang from 1.24.4-bullseye to 1.24.5-bullseye in /pipelines/shared-helpers/test-binaries-image
2025-07-24 08:15:47 -05:00
Joshua Casey
32c79ff9ed Merge pull request #2500 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/weaveworks/eksctl-v0.211.0
Bump weaveworks/eksctl from v0.210.0 to v0.211.0 in /dockerfiles/eks-deployer
2025-07-24 08:15:43 -05:00
Joshua Casey
86b2a03d89 Merge pull request #2503 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-531.0.0-slim
Bump google/cloud-sdk from 529.0.0-slim to 531.0.0-slim in /dockerfiles/k8s-app-deployer
2025-07-24 08:15:40 -05:00
Joshua Casey
aadffe872c Merge pull request #2504 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-531.0.0-slim
Bump google/cloud-sdk from 529.0.0-slim to 531.0.0-slim in /dockerfiles/integration-test-runner
2025-07-24 08:15:37 -05:00
Joshua Casey
5eb477d608 Merge pull request #2505 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-531.0.0-slim
Bump google/cloud-sdk from 529.0.0-slim to 531.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-07-24 08:15:34 -05:00
Joshua Casey
5e24aee35f Merge pull request #2507 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/mikefarah/yq-4.47.1
Bump mikefarah/yq from 4.45.4 to 4.47.1 in /dockerfiles/integration-test-runner
2025-07-24 08:15:30 -05:00
Joshua Casey
352086c567 Merge pull request #2508 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/mikefarah/yq-4.47.1
Bump mikefarah/yq from 4.45.4 to 4.47.1 in /dockerfiles/integration-test-runner-beta
2025-07-24 08:15:27 -05:00
Joshua Casey
72ede18fb8 Merge pull request #2510 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.27.58
Bump amazon/aws-cli from 2.27.49 to 2.27.58 in /dockerfiles/eks-deployer
2025-07-24 08:15:22 -05:00
Joshua Casey
43aa6f5859 Merge pull request #2511 from vmware/dependabot/docker/dockerfiles/deployment-yaml-formatter/ci/mikefarah/yq-4.47.1
Bump mikefarah/yq from 4.45.4 to 4.47.1 in /dockerfiles/deployment-yaml-formatter
2025-07-24 08:15:18 -05:00
Joshua Casey
cac041bc47 Merge pull request #2512 from vmware/dependabot/docker/dockerfiles/crane/ci/mikefarah/yq-4.47.1
Bump mikefarah/yq from 4.45.4 to 4.47.1 in /dockerfiles/crane
2025-07-24 08:15:15 -05:00
dependabot[bot]
cb8d77e2a9 Bump mikefarah/yq from 4.45.4 to 4.47.1 in /dockerfiles/crane
Bumps mikefarah/yq from 4.45.4 to 4.47.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.47.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-24 02:03:59 +00:00
dependabot[bot]
9a1bbb8fde Bump mikefarah/yq in /dockerfiles/deployment-yaml-formatter
Bumps mikefarah/yq from 4.45.4 to 4.47.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.47.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-24 01:56:04 +00:00
dependabot[bot]
2e435d14b9 Bump amazon/aws-cli from 2.27.49 to 2.27.58 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.27.49 to 2.27.58.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.27.58
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-24 01:43:43 +00:00
dependabot[bot]
1d04bbea75 Bump mikefarah/yq in /dockerfiles/integration-test-runner-beta
Bumps mikefarah/yq from 4.45.4 to 4.47.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.47.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-24 01:41:25 +00:00
dependabot[bot]
9b63612559 Bump mikefarah/yq in /dockerfiles/integration-test-runner
Bumps mikefarah/yq from 4.45.4 to 4.47.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.47.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-24 01:34:49 +00:00
dependabot[bot]
1e34b88c05 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 529.0.0-slim to 531.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 531.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-23 02:03:12 +00:00
dependabot[bot]
d66c898d7c Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 529.0.0-slim to 531.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 531.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-23 01:54:28 +00:00
dependabot[bot]
9483995fbb Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 529.0.0-slim to 531.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 531.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-23 01:51:51 +00:00
Ryan Richard
4b22646e04 add neg annotation to clusterip service on acceptance cluster 2025-07-21 14:09:42 -07:00
Ryan Richard
f78211c838 try using clusterip service behind GKE ingress on acceptance cluster 2025-07-21 13:47:02 -07:00
Ryan Richard
536bb78984 update remote-workstation scripts for new GCP account
- Create with private IP on shared subnet
- Use regular ssh instead of gcloud ssh
- Update deps.sh to remove packages that don't exist anymore
2025-07-21 12:50:50 -07:00
dependabot[bot]
4290b04b4d Bump weaveworks/eksctl in /dockerfiles/eks-deployer
Bumps weaveworks/eksctl from v0.210.0 to v0.211.0.

---
updated-dependencies:
- dependency-name: weaveworks/eksctl
  dependency-version: v0.211.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 01:42:59 +00:00
Ryan Richard
6c4605b4d0 add new integration test env vars for CLI OIDC 2025-07-18 10:18:18 -07:00
Ryan Richard
f62f8d62f0 set service account when creating GKE acceptance cluster 2025-07-16 12:06:26 -07:00
Ryan Richard
568f7d936d add to ip-masq-agent config for concourse cluster 2025-07-15 11:43:15 -07:00
Ryan Richard
5fd7b52e52 use internal IP for Supervisor service on acceptance cluster 2025-07-14 16:53:39 -07:00
Ryan Richard
bcfe3b928f remove temporary skipping of GKE acceptance env tests 2025-07-14 16:11:45 -07:00
dependabot[bot]
a4f5398293 Bump golang in /pipelines/shared-helpers/test-binaries-image
Bumps golang from 1.24.4-bullseye to 1.24.5-bullseye.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.5-bullseye
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-09 01:54:34 +00:00
dependabot[bot]
e6b293a11b Bump golang from 1.24.4 to 1.24.5 in /dockerfiles/gh-cli
Bumps golang from 1.24.4 to 1.24.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-09 01:51:52 +00:00
dependabot[bot]
37416482d3 Bump golang from 1.24.4 to 1.24.5 in /dockerfiles/test-cfssl
Bumps golang from 1.24.4 to 1.24.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-09 01:47:45 +00:00
dependabot[bot]
8939704ae9 Bump golang from 1.24.4 to 1.24.5 in /dockerfiles/crane
Bumps golang from 1.24.4 to 1.24.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-09 01:47:43 +00:00
dependabot[bot]
af465f2c6e Bump golang from 1.24.4 to 1.24.5 in /dockerfiles/code-coverage-uploader
Bumps golang from 1.24.4 to 1.24.5.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-09 01:31:02 +00:00
Ryan Richard
0eaee78d45 use debian's official apt repositories on kind-node-builder VM 2025-07-08 11:34:30 -07:00
Ryan Richard
31d8d765d1 wait for ssh server in build-kind-node-image task 2025-07-08 11:06:01 -07:00
Ryan Richard
dbb2316cb4 Merge pull request #2476 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.27.49
Bump amazon/aws-cli from 2.27.47 to 2.27.49 in /dockerfiles/eks-deployer
2025-07-08 10:42:16 -07:00
Ryan Richard
5fdad6f9db update Kube version for integration-test-aks-oldest 2025-07-07 14:59:05 -07:00
dependabot[bot]
3e6d610e0d Bump amazon/aws-cli from 2.27.47 to 2.27.49 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.27.47 to 2.27.49.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.27.49
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-04 02:05:18 +00:00
Ryan Richard
f33b32ef14 update kube versions in dockerfiles pipeline 2025-07-02 11:51:11 -07:00
Ryan Richard
496f922d5b Merge pull request #2434 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/weaveworks/eksctl-v0.210.0
Bump weaveworks/eksctl from v0.208.0 to v0.210.0 in /dockerfiles/eks-deployer
2025-07-02 11:40:56 -07:00
Ryan Richard
da7361f743 Merge pull request #2467 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.27.47
Bump amazon/aws-cli from 2.27.24 to 2.27.47 in /dockerfiles/eks-deployer
2025-07-02 11:40:53 -07:00
Ryan Richard
96abebd06a Merge pull request #2468 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-529.0.0-slim
Bump google/cloud-sdk from 524.0.0-slim to 529.0.0-slim in /dockerfiles/k8s-app-deployer
2025-07-02 11:40:50 -07:00
Ryan Richard
323f292886 Merge pull request #2469 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-529.0.0-slim
Bump google/cloud-sdk from 524.0.0-slim to 529.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-07-02 11:40:47 -07:00
Ryan Richard
58c523e6d0 Merge pull request #2470 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-529.0.0-slim
Bump google/cloud-sdk from 524.0.0-slim to 529.0.0-slim in /dockerfiles/integration-test-runner
2025-07-02 11:40:44 -07:00
Ryan Richard
9398b9622e preparing to create and use GKE acceptance cluster (but need DNS first) 2025-07-02 10:57:58 -07:00
Ryan Richard
526ac86f44 make scan-image required again in PR pipeline 2025-07-02 08:43:05 -07:00
dependabot[bot]
1162b30001 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 524.0.0-slim to 529.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 529.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-02 02:05:16 +00:00
dependabot[bot]
6266f5f3ce Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 524.0.0-slim to 529.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 529.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-02 02:03:17 +00:00
dependabot[bot]
9e1bf0257e Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 524.0.0-slim to 529.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 529.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-02 02:02:52 +00:00
dependabot[bot]
fc8ac0157c Bump amazon/aws-cli from 2.27.24 to 2.27.47 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.27.24 to 2.27.47.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.27.47
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-02 01:56:26 +00:00
Ryan Richard
51f396d1b3 upgrade CI to use Go 1.24.4 2025-07-01 12:24:04 -07:00
Ryan Richard
cfaaffc0a5 fix typo in create-or-update-pr task 2025-07-01 12:10:03 -07:00
Ryan Richard
63d6429d03 update kind-node-builder pipeline 2025-07-01 10:37:45 -07:00
Ryan Richard
3805494798 temporarily comment out AD tests for fips too 2025-06-30 16:56:12 -07:00
Ryan Richard
e14eb977b8 git using https, change log bucket name, temp comment out some tests 2025-06-30 16:50:54 -07:00
Ryan Richard
b9c4fca90e remove unused go-compatibility pipeline 2025-06-30 16:48:06 -07:00
Ryan Richard
8d15120f8f use internal IPs for impersonation proxy LB on GKE 2025-06-30 11:17:50 -07:00
Ryan Richard
282cc4ba9b use internal IPs for GKE LBs 2025-06-30 10:51:38 -07:00
Ryan Richard
1eecad61b4 use VM's internal IP when running ssh port forwards 2025-06-26 16:05:09 -07:00
Ryan Richard
28052299d9 update kind cluster creation to account for internal IP 2025-06-26 15:49:54 -07:00
Ryan Richard
14c7f8b208 use us-west1-a for instances because us-west1-b doesn't have arm64 2025-06-26 13:35:01 -07:00
Ryan Richard
09ab99789f update pipelines to deploy temporary GKE clusters as internal clusters 2025-06-26 12:33:34 -07:00
Ryan Richard
86577ac403 start update pipelines for internal Concourse 2025-06-26 12:13:15 -07:00
Ryan Richard
399b1d86b2 Move CI to a new internal Concourse 2025-06-26 12:13:08 -07:00
dependabot[bot]
eaece5d20a Bump weaveworks/eksctl in /dockerfiles/eks-deployer
Bumps weaveworks/eksctl from v0.208.0 to v0.210.0.

---
updated-dependencies:
- dependency-name: weaveworks/eksctl
  dependency-version: v0.210.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 01:26:13 +00:00
Joshua Casey
80e5eb5b56 Merge pull request #2414 from vmware/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-524.0.0-slim
Bump google/cloud-sdk from 523.0.1-slim to 524.0.0-slim in /dockerfiles/integration-test-runner
2025-05-29 14:21:34 -05:00
Joshua Casey
7f125a102a Merge pull request #2415 from vmware/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-524.0.0-slim
Bump google/cloud-sdk from 523.0.1-slim to 524.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-05-29 14:21:30 -05:00
Joshua Casey
29e67b6171 Merge pull request #2416 from vmware/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.27.24
Bump amazon/aws-cli from 2.27.22 to 2.27.24 in /dockerfiles/eks-deployer
2025-05-29 14:21:26 -05:00
Joshua Casey
e8176e412a Merge pull request #2417 from vmware/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-524.0.0-slim
Bump google/cloud-sdk from 523.0.1-slim to 524.0.0-slim in /dockerfiles/k8s-app-deployer
2025-05-29 14:21:22 -05:00
dependabot[bot]
921935271b Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 523.0.1-slim to 524.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 524.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-29 01:42:02 +00:00
dependabot[bot]
9690e9cd68 Bump amazon/aws-cli from 2.27.22 to 2.27.24 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.27.22 to 2.27.24.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.27.24
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-29 01:41:48 +00:00
dependabot[bot]
d854ec7009 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 523.0.1-slim to 524.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 524.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-29 01:22:36 +00:00
dependabot[bot]
664e390006 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 523.0.1-slim to 524.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 524.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-29 01:14:58 +00:00
Joshua Casey
de89d8cf99 Merge pull request #2400 from vmware-tanzu/dependabot/docker/dockerfiles/pool-trigger-resource/ci/debian-12.11-slim
Bump debian from 12.10-slim to 12.11-slim in /dockerfiles/pool-trigger-resource
2025-05-27 11:39:50 -05:00
Joshua Casey
fe687e6af2 Merge pull request #2401 from vmware-tanzu/dependabot/docker/dockerfiles/test-forward-proxy/ci/debian-12.11-slim
Bump debian from 12.10-slim to 12.11-slim in /dockerfiles/test-forward-proxy
2025-05-27 11:39:46 -05:00
Joshua Casey
4197e1ec2e Merge pull request #2403 from vmware-tanzu/dependabot/docker/dockerfiles/deployment-yaml-formatter/ci/debian-12.11-slim
Bump debian from 12.10-slim to 12.11-slim in /dockerfiles/deployment-yaml-formatter
2025-05-27 11:39:38 -05:00
Joshua Casey
3cee20b94a Merge pull request #2404 from vmware-tanzu/dependabot/docker/dockerfiles/gh-cli/ci/debian-12.11-slim
Bump debian from 12.10-slim to 12.11-slim in /dockerfiles/gh-cli
2025-05-27 11:39:35 -05:00
Joshua Casey
4785d9acff Merge pull request #2405 from vmware-tanzu/dependabot/docker/dockerfiles/code-coverage-uploader/ci/debian-12.11-slim
Bump debian from 12.10-slim to 12.11-slim in /dockerfiles/code-coverage-uploader
2025-05-27 11:39:32 -05:00
Joshua Casey
466ce7c808 Merge pull request #2407 from vmware-tanzu/dependabot/docker/dockerfiles/test-dex/ci/dexidp/dex-v2.43.1
Bump dexidp/dex from v2.42.1 to v2.43.1 in /dockerfiles/test-dex
2025-05-27 11:39:29 -05:00
Joshua Casey
c1fcd4c9ab Merge pull request #2408 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-523.0.1-slim
Bump google/cloud-sdk from 522.0.0-slim to 523.0.1-slim in /dockerfiles/integration-test-runner
2025-05-27 11:39:25 -05:00
Joshua Casey
346bbd95b8 Merge pull request #2409 from vmware-tanzu/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-523.0.1-slim
Bump google/cloud-sdk from 522.0.0-slim to 523.0.1-slim in /dockerfiles/k8s-app-deployer
2025-05-27 11:39:22 -05:00
Joshua Casey
08950fea60 Merge pull request #2410 from vmware-tanzu/dependabot/docker/dockerfiles/test-bitnami-ldap/ci/bitnami/openldap-2.6.10
Bump bitnami/openldap from 2.6.9 to 2.6.10 in /dockerfiles/test-bitnami-ldap
2025-05-27 11:39:19 -05:00
Joshua Casey
b788a19b22 Merge pull request #2411 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-523.0.1-slim
Bump google/cloud-sdk from 522.0.0-slim to 523.0.1-slim in /dockerfiles/integration-test-runner-beta
2025-05-27 11:39:16 -05:00
Joshua Casey
78192f4590 Merge pull request #2412 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.27.22
Bump amazon/aws-cli from 2.27.17 to 2.27.22 in /dockerfiles/eks-deployer
2025-05-27 11:39:12 -05:00
dependabot[bot]
09f4db6d30 Bump amazon/aws-cli from 2.27.17 to 2.27.22 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.27.17 to 2.27.22.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.27.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 01:56:40 +00:00
dependabot[bot]
70ef10db2b Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 522.0.0-slim to 523.0.1-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 523.0.1-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 01:54:00 +00:00
dependabot[bot]
3bb039bbd3 Bump bitnami/openldap in /dockerfiles/test-bitnami-ldap
Bumps bitnami/openldap from 2.6.9 to 2.6.10.

---
updated-dependencies:
- dependency-name: bitnami/openldap
  dependency-version: 2.6.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 01:40:29 +00:00
dependabot[bot]
cc62c413e0 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 522.0.0-slim to 523.0.1-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 523.0.1-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 01:36:43 +00:00
dependabot[bot]
849ceaa55d Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 522.0.0-slim to 523.0.1-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 523.0.1-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 01:31:47 +00:00
dependabot[bot]
558e6c9fa0 Bump dexidp/dex from v2.42.1 to v2.43.1 in /dockerfiles/test-dex
Bumps [dexidp/dex](https://github.com/dexidp/dex) from v2.42.1 to v2.43.1.
- [Release notes](https://github.com/dexidp/dex/releases)
- [Commits](https://github.com/dexidp/dex/compare/v2.42.1...v2.43.1)

---
updated-dependencies:
- dependency-name: dexidp/dex
  dependency-version: v2.43.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-23 02:06:54 +00:00
dependabot[bot]
fc77610c74 Bump debian in /dockerfiles/code-coverage-uploader
Bumps debian from 12.10-slim to 12.11-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 12.11-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-22 01:58:49 +00:00
dependabot[bot]
9bf7ca31c9 Bump debian from 12.10-slim to 12.11-slim in /dockerfiles/gh-cli
Bumps debian from 12.10-slim to 12.11-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 12.11-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-22 01:43:44 +00:00
dependabot[bot]
29747328e1 Bump debian in /dockerfiles/deployment-yaml-formatter
Bumps debian from 12.10-slim to 12.11-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 12.11-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-22 01:26:57 +00:00
dependabot[bot]
417cb412ac Bump debian in /dockerfiles/test-forward-proxy
Bumps debian from 12.10-slim to 12.11-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 12.11-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-22 01:15:07 +00:00
dependabot[bot]
27ca077fef Bump debian in /dockerfiles/pool-trigger-resource
Bumps debian from 12.10-slim to 12.11-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: 12.11-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-22 01:14:27 +00:00
Joshua Casey
7bfc83b64f Merge pull request #2392 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.27.17
Bump amazon/aws-cli from 2.27.16 to 2.27.17 in /dockerfiles/eks-deployer
2025-05-19 07:43:14 -05:00
dependabot[bot]
4ed51edd7d Bump amazon/aws-cli from 2.27.16 to 2.27.17 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.27.16 to 2.27.17.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.27.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 01:49:10 +00:00
Joshua Casey
342081dba2 Merge pull request #2391 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.27.16
Bump amazon/aws-cli from 2.27.15 to 2.27.16 in /dockerfiles/eks-deployer
2025-05-15 22:59:30 -05:00
dependabot[bot]
c70c90dad7 Bump amazon/aws-cli from 2.27.15 to 2.27.16 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.27.15 to 2.27.16.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.27.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-16 02:01:20 +00:00
Joshua Casey
261ff9e693 Merge pull request #2381 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/weaveworks/eksctl-v0.208.0
Bump weaveworks/eksctl from v0.207.0 to v0.208.0 in /dockerfiles/eks-deployer
2025-05-15 11:05:41 -05:00
Joshua Casey
9872d6b87c Merge pull request #2385 from vmware-tanzu/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-522.0.0-slim
Bump google/cloud-sdk from 521.0.0-slim to 522.0.0-slim in /dockerfiles/k8s-app-deployer
2025-05-15 11:05:33 -05:00
Joshua Casey
223641d255 Merge pull request #2386 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-522.0.0-slim
Bump google/cloud-sdk from 521.0.0-slim to 522.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-05-15 11:05:28 -05:00
Joshua Casey
1fee6f0a87 Merge pull request #2388 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-522.0.0-slim
Bump google/cloud-sdk from 521.0.0-slim to 522.0.0-slim in /dockerfiles/integration-test-runner
2025-05-15 11:05:23 -05:00
Joshua Casey
edcfb295a4 Merge pull request #2390 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.27.15
Bump amazon/aws-cli from 2.27.12 to 2.27.15 in /dockerfiles/eks-deployer
2025-05-15 11:05:18 -05:00
dependabot[bot]
77c5a06141 Bump amazon/aws-cli from 2.27.12 to 2.27.15 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.27.12 to 2.27.15.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.27.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-15 01:20:40 +00:00
dependabot[bot]
35a597f9b4 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 521.0.0-slim to 522.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 522.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-14 01:50:59 +00:00
dependabot[bot]
aad8083dc1 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 521.0.0-slim to 522.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 522.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-14 01:27:34 +00:00
dependabot[bot]
873cc34d4f Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 521.0.0-slim to 522.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 522.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-14 01:26:14 +00:00
Ryan Richard
2f00a6b126 remove 1.25 and add 1.33 codegen to pipelines 2025-05-13 12:30:37 -07:00
dependabot[bot]
74da0d1190 Bump weaveworks/eksctl in /dockerfiles/eks-deployer
Bumps weaveworks/eksctl from v0.207.0 to v0.208.0.

---
updated-dependencies:
- dependency-name: weaveworks/eksctl
  dependency-version: v0.208.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-13 01:42:14 +00:00
Ryan Richard
e4d2c8ba07 skip race detector for impersonator package for now
This commit is meant to be reverted when the upstream
bug is fixed which causes tests to fail when the race
detector is enabled for unit tests in the impersonator
package. There is a commit in the hack dir and another
commit in the `ci` branch for CI.
2025-05-12 17:58:17 -07:00
Ryan Richard
2c5c2b50c0 update timeout for unit test from 20m to 15m 2025-05-12 15:18:59 -07:00
Ryan Richard
6089d5cde4 update timeout for unit test from default 10m to 20m 2025-05-12 15:07:45 -07:00
Ryan Richard
26f4b69fb1 update linter in deps.sh 2025-05-12 15:07:19 -07:00
Ryan Richard
06c0a82c65 update versions in dockerfile builder pipeline 2025-05-12 11:38:45 -07:00
Ryan Richard
0dbcf798e2 update Go in CI from 1.24.2 to 1.23.3 2025-05-12 11:29:09 -07:00
Ryan Richard
43f2d592e9 Merge pull request #2375 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/mikefarah/yq-4.45.4
Bump mikefarah/yq from 4.45.1 to 4.45.4 in /dockerfiles/eks-deployer
2025-05-12 11:25:48 -07:00
dependabot[bot]
19e17b88a1 Bump mikefarah/yq from 4.45.1 to 4.45.4 in /dockerfiles/eks-deployer
Bumps mikefarah/yq from 4.45.1 to 4.45.4.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.45.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 18:25:37 +00:00
Ryan Richard
1adfa95f00 Merge pull request #2361 from vmware-tanzu/dependabot/docker/dockerfiles/crane/ci/golang-1.24.3
Bump golang from 1.24.2 to 1.24.3 in /dockerfiles/crane
2025-05-12 11:24:42 -07:00
Ryan Richard
e3ec5de2b2 Merge pull request #2362 from vmware-tanzu/dependabot/docker/pipelines/shared-helpers/test-binaries-image/ci/golang-1.24.3-bullseye
Bump golang from 1.24.2-bullseye to 1.24.3-bullseye in /pipelines/shared-helpers/test-binaries-image
2025-05-12 11:24:39 -07:00
Ryan Richard
f3bf60135c Merge pull request #2363 from vmware-tanzu/dependabot/docker/dockerfiles/code-coverage-uploader/ci/golang-1.24.3
Bump golang from 1.24.2 to 1.24.3 in /dockerfiles/code-coverage-uploader
2025-05-12 11:24:35 -07:00
Ryan Richard
c2e0a04e54 Merge pull request #2364 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-521.0.0-slim
Bump google/cloud-sdk from 520.0.0-slim to 521.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-05-12 11:24:32 -07:00
Ryan Richard
f886eec2c5 Merge pull request #2365 from vmware-tanzu/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-521.0.0-slim
Bump google/cloud-sdk from 520.0.0-slim to 521.0.0-slim in /dockerfiles/k8s-app-deployer
2025-05-12 11:24:29 -07:00
Ryan Richard
ca0bd600dc Merge pull request #2366 from vmware-tanzu/dependabot/docker/dockerfiles/test-cfssl/ci/golang-1.24.3
Bump golang from 1.24.2 to 1.24.3 in /dockerfiles/test-cfssl
2025-05-12 11:24:26 -07:00
Ryan Richard
6fcbfcf306 Merge pull request #2367 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-521.0.0-slim
Bump google/cloud-sdk from 520.0.0-slim to 521.0.0-slim in /dockerfiles/integration-test-runner
2025-05-12 11:24:22 -07:00
Ryan Richard
f7680c87a8 Merge pull request #2369 from vmware-tanzu/dependabot/docker/dockerfiles/gh-cli/ci/golang-1.24.3
Bump golang from 1.24.2 to 1.24.3 in /dockerfiles/gh-cli
2025-05-12 11:24:20 -07:00
Ryan Richard
b6a4908e8c Merge pull request #2372 from vmware-tanzu/dependabot/docker/dockerfiles/deployment-yaml-formatter/ci/mikefarah/yq-4.45.4
Bump mikefarah/yq from 4.45.1 to 4.45.4 in /dockerfiles/deployment-yaml-formatter
2025-05-12 11:24:17 -07:00
Ryan Richard
c086fbbc1e Merge pull request #2373 from vmware-tanzu/dependabot/docker/dockerfiles/crane/ci/mikefarah/yq-4.45.4
Bump mikefarah/yq from 4.45.1 to 4.45.4 in /dockerfiles/crane
2025-05-12 11:24:13 -07:00
Ryan Richard
1518d1fba7 Merge pull request #2374 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/mikefarah/yq-4.45.4
Bump mikefarah/yq from 4.45.1 to 4.45.4 in /dockerfiles/integration-test-runner
2025-05-12 11:24:10 -07:00
Ryan Richard
a297481096 Merge pull request #2376 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.27.12
Bump amazon/aws-cli from 2.27.4 to 2.27.12 in /dockerfiles/eks-deployer
2025-05-12 11:24:05 -07:00
Ryan Richard
9f77c2e351 Merge pull request #2377 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/mikefarah/yq-4.45.4
Bump mikefarah/yq from 4.45.1 to 4.45.4 in /dockerfiles/integration-test-runner-beta
2025-05-12 11:24:02 -07:00
dependabot[bot]
46b0bdf600 Bump mikefarah/yq in /dockerfiles/integration-test-runner-beta
Bumps mikefarah/yq from 4.45.1 to 4.45.4.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.45.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 01:59:22 +00:00
dependabot[bot]
417ccce6fc Bump amazon/aws-cli from 2.27.4 to 2.27.12 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.27.4 to 2.27.12.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.27.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 01:45:34 +00:00
dependabot[bot]
8dc0dc9a81 Bump mikefarah/yq in /dockerfiles/integration-test-runner
Bumps mikefarah/yq from 4.45.1 to 4.45.4.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.45.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 01:26:16 +00:00
dependabot[bot]
d0bd7cc3de Bump mikefarah/yq from 4.45.1 to 4.45.4 in /dockerfiles/crane
Bumps mikefarah/yq from 4.45.1 to 4.45.4.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.45.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 01:22:05 +00:00
dependabot[bot]
e48880e010 Bump mikefarah/yq in /dockerfiles/deployment-yaml-formatter
Bumps mikefarah/yq from 4.45.1 to 4.45.4.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.45.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 01:17:30 +00:00
dependabot[bot]
b725da52c3 Bump golang from 1.24.2 to 1.24.3 in /dockerfiles/gh-cli
Bumps golang from 1.24.2 to 1.24.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 01:58:38 +00:00
dependabot[bot]
b2cce27eae Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 520.0.0-slim to 521.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 521.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 01:52:13 +00:00
dependabot[bot]
17617f872e Bump golang from 1.24.2 to 1.24.3 in /dockerfiles/test-cfssl
Bumps golang from 1.24.2 to 1.24.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 01:51:54 +00:00
dependabot[bot]
334ce30a29 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 520.0.0-slim to 521.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 521.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 01:51:43 +00:00
dependabot[bot]
fb46a66b53 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 520.0.0-slim to 521.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 521.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 01:51:21 +00:00
dependabot[bot]
d8503afd75 Bump golang from 1.24.2 to 1.24.3 in /dockerfiles/code-coverage-uploader
Bumps golang from 1.24.2 to 1.24.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 01:51:07 +00:00
dependabot[bot]
8b4e42298c Bump golang in /pipelines/shared-helpers/test-binaries-image
Bumps golang from 1.24.2-bullseye to 1.24.3-bullseye.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.3-bullseye
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 01:49:34 +00:00
dependabot[bot]
fee022f9dc Bump golang from 1.24.2 to 1.24.3 in /dockerfiles/crane
Bumps golang from 1.24.2 to 1.24.3.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 01:47:49 +00:00
Joshua Casey
f5512e0e0f Merge pull request #2345 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-520.0.0-slim
Bump google/cloud-sdk from 519.0.0-slim to 520.0.0-slim in /dockerfiles/integration-test-runner
2025-04-29 22:18:01 -05:00
Joshua Casey
25b371097d Merge pull request #2346 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-520.0.0-slim
Bump google/cloud-sdk from 519.0.0-slim to 520.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-04-29 22:17:57 -05:00
Joshua Casey
01cbb5b505 Merge pull request #2347 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.27.4
Bump amazon/aws-cli from 2.27.1 to 2.27.4 in /dockerfiles/eks-deployer
2025-04-29 22:17:52 -05:00
Joshua Casey
5adb8a7367 Merge pull request #2348 from vmware-tanzu/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-520.0.0-slim
Bump google/cloud-sdk from 519.0.0-slim to 520.0.0-slim in /dockerfiles/k8s-app-deployer
2025-04-29 22:17:48 -05:00
dependabot[bot]
94179bf90b Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 519.0.0-slim to 520.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 520.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-30 02:04:59 +00:00
dependabot[bot]
aafe93be6a Bump amazon/aws-cli from 2.27.1 to 2.27.4 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.27.1 to 2.27.4.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.27.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-30 01:42:02 +00:00
dependabot[bot]
4041118191 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 519.0.0-slim to 520.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 520.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-30 01:31:10 +00:00
dependabot[bot]
5ca16e1ed1 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 519.0.0-slim to 520.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 520.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-30 01:29:24 +00:00
Ryan Richard
181ac60e24 run integration tests on k8s 1.33 kind clusters 2025-04-25 12:53:20 -07:00
Joshua Casey
98113cb641 Merge pull request #2334 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-519.0.0-slim
Bump google/cloud-sdk from 518.0.0-slim to 519.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-04-25 06:38:43 -05:00
Joshua Casey
54fc5a7d5f Merge pull request #2335 from vmware-tanzu/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-519.0.0-slim
Bump google/cloud-sdk from 518.0.0-slim to 519.0.0-slim in /dockerfiles/k8s-app-deployer
2025-04-25 06:38:40 -05:00
Joshua Casey
8f784f0bb4 Merge pull request #2336 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-519.0.0-slim
Bump google/cloud-sdk from 518.0.0-slim to 519.0.0-slim in /dockerfiles/integration-test-runner
2025-04-25 06:38:36 -05:00
Joshua Casey
42fee40c36 Merge pull request #2341 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.27.1
Bump amazon/aws-cli from 2.26.6 to 2.27.1 in /dockerfiles/eks-deployer
2025-04-25 06:38:31 -05:00
dependabot[bot]
2a4ee95882 Bump amazon/aws-cli from 2.26.6 to 2.27.1 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.26.6 to 2.27.1.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.27.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-25 02:02:38 +00:00
dependabot[bot]
55ace667b5 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 518.0.0-slim to 519.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 519.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-23 01:43:44 +00:00
dependabot[bot]
f32a631bad Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 518.0.0-slim to 519.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 519.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-23 01:31:34 +00:00
dependabot[bot]
66430acb1c Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 518.0.0-slim to 519.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 519.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-23 01:25:37 +00:00
Joshua Casey
42f7ec8282 Merge pull request #2333 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.26.6
Bump amazon/aws-cli from 2.26.5 to 2.26.6 in /dockerfiles/eks-deployer
2025-04-22 09:14:22 -05:00
dependabot[bot]
d23bdc88e4 Bump amazon/aws-cli from 2.26.5 to 2.26.6 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.26.5 to 2.26.6.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.26.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-22 01:42:49 +00:00
Joshua Casey
d2b29f1b66 Merge pull request #2325 from vmware-tanzu/dependabot/docker/dockerfiles/test-dex/ci/dexidp/dex-v2.42.1
Bump dexidp/dex from v2.42.0 to v2.42.1 in /dockerfiles/test-dex
2025-04-21 09:21:35 -05:00
Joshua Casey
6bf2de398a Merge pull request #2326 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-518.0.0-slim
Bump google/cloud-sdk from 517.0.0-slim to 518.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-04-21 09:21:31 -05:00
Joshua Casey
43f1bbf3f2 Merge pull request #2327 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-518.0.0-slim
Bump google/cloud-sdk from 517.0.0-slim to 518.0.0-slim in /dockerfiles/integration-test-runner
2025-04-21 09:21:28 -05:00
Joshua Casey
87a1073f28 Merge pull request #2328 from vmware-tanzu/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-518.0.0-slim
Bump google/cloud-sdk from 517.0.0-slim to 518.0.0-slim in /dockerfiles/k8s-app-deployer
2025-04-21 09:21:25 -05:00
Joshua Casey
52f3d803be Merge pull request #2332 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.26.5
Bump amazon/aws-cli from 2.25.12 to 2.26.5 in /dockerfiles/eks-deployer
2025-04-21 09:21:22 -05:00
dependabot[bot]
ac03fed343 Bump amazon/aws-cli from 2.25.12 to 2.26.5 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.25.12 to 2.26.5.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.26.5
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-21 01:28:11 +00:00
dependabot[bot]
a3ff75828e Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 517.0.0-slim to 518.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 518.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-16 02:07:20 +00:00
dependabot[bot]
862a234f64 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 517.0.0-slim to 518.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 518.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-16 01:59:09 +00:00
dependabot[bot]
386ace50e9 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 517.0.0-slim to 518.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-version: 518.0.0-slim
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-16 01:33:55 +00:00
dependabot[bot]
e371d5c8b2 Bump dexidp/dex from v2.42.0 to v2.42.1 in /dockerfiles/test-dex
Bumps [dexidp/dex](https://github.com/dexidp/dex) from v2.42.0 to v2.42.1.
- [Release notes](https://github.com/dexidp/dex/releases)
- [Commits](https://github.com/dexidp/dex/compare/v2.42.0...v2.42.1)

---
updated-dependencies:
- dependency-name: dexidp/dex
  dependency-version: v2.42.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-15 02:06:59 +00:00
Joshua Casey
7ff5115277 Merge pull request #2316 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.25.12
Bump amazon/aws-cli from 2.25.10 to 2.25.12 in /dockerfiles/eks-deployer
2025-04-08 09:36:27 -05:00
dependabot[bot]
4f877766b5 Bump amazon/aws-cli from 2.25.10 to 2.25.12 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.25.10 to 2.25.12.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.25.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-08 02:06:34 +00:00
Ryan Richard
a76222b121 add kubectl to eks-deployer Dockerfile 2025-04-04 14:12:10 -07:00
Ryan Richard
91439f9b9b weaveworks/eksctl:v0.207.0 moved eksctl CLI to root dir; copy from there 2025-04-04 13:35:43 -07:00
Ryan Richard
a906451dee Merge pull request #2310 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/weaveworks/eksctl-v0.207.0
Bump weaveworks/eksctl from v0.198.0 to v0.207.0 in /dockerfiles/eks-deployer
2025-04-04 10:59:24 -07:00
Ryan Richard
2e32c27f80 Merge pull request #2312 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.25.10
Bump amazon/aws-cli from 2.25.8 to 2.25.10 in /dockerfiles/eks-deployer
2025-04-04 10:59:21 -07:00
dependabot[bot]
34cec020a2 Bump amazon/aws-cli from 2.25.8 to 2.25.10 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.25.8 to 2.25.10.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-version: 2.25.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-04 02:06:32 +00:00
dependabot[bot]
617187cfbb Bump weaveworks/eksctl in /dockerfiles/eks-deployer
Bumps weaveworks/eksctl from v0.198.0 to v0.207.0.

---
updated-dependencies:
- dependency-name: weaveworks/eksctl
  dependency-version: v0.207.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-03 02:03:45 +00:00
Ryan Richard
de70584460 ignore CVE in dep which has already been upgraded in main to patched dep 2025-04-02 13:28:59 -07:00
Ryan Richard
73c9be5e2a eka-latest to use k8s 1.31 2025-04-02 13:22:26 -07:00
Ryan Richard
e64f40fa7b update CI to Go 1.24.2 2025-04-02 10:50:56 -07:00
Ryan Richard
2e09369804 Merge pull request #2300 from vmware-tanzu/dependabot/docker/pipelines/shared-helpers/test-binaries-image/ci/golang-1.24.2-bullseye
Bump golang from 1.24.1-bullseye to 1.24.2-bullseye in /pipelines/shared-helpers/test-binaries-image
2025-04-02 10:47:42 -07:00
Ryan Richard
80953b02d0 Merge pull request #2301 from vmware-tanzu/dependabot/docker/dockerfiles/code-coverage-uploader/ci/golang-1.24.2
Bump golang from 1.24.1 to 1.24.2 in /dockerfiles/code-coverage-uploader
2025-04-02 10:47:38 -07:00
Ryan Richard
26c4363418 Merge pull request #2302 from vmware-tanzu/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-517.0.0-slim
Bump google/cloud-sdk from 516.0.0-slim to 517.0.0-slim in /dockerfiles/k8s-app-deployer
2025-04-02 10:47:35 -07:00
Ryan Richard
ad2cb85543 Merge pull request #2303 from vmware-tanzu/dependabot/docker/dockerfiles/gh-cli/ci/golang-1.24.2
Bump golang from 1.24.1 to 1.24.2 in /dockerfiles/gh-cli
2025-04-02 10:47:31 -07:00
Ryan Richard
00ae1ef4e9 Merge pull request #2304 from vmware-tanzu/dependabot/docker/dockerfiles/test-cfssl/ci/golang-1.24.2
Bump golang from 1.24.1 to 1.24.2 in /dockerfiles/test-cfssl
2025-04-02 10:47:28 -07:00
Ryan Richard
a065356a54 Merge pull request #2305 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-517.0.0-slim
Bump google/cloud-sdk from 516.0.0-slim to 517.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-04-02 10:47:24 -07:00
Ryan Richard
6202d703cb Merge pull request #2306 from vmware-tanzu/dependabot/docker/dockerfiles/crane/ci/golang-1.24.2
Bump golang from 1.24.1 to 1.24.2 in /dockerfiles/crane
2025-04-02 10:47:20 -07:00
Ryan Richard
244fa1d474 Merge pull request #2307 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-517.0.0-slim
Bump google/cloud-sdk from 516.0.0-slim to 517.0.0-slim in /dockerfiles/integration-test-runner
2025-04-02 10:47:17 -07:00
Ryan Richard
6bbda7b7db Merge pull request #2308 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.25.8
Bump amazon/aws-cli from 2.25.6 to 2.25.8 in /dockerfiles/eks-deployer
2025-04-02 10:47:13 -07:00
dependabot[bot]
ba75de77f9 Bump amazon/aws-cli from 2.25.6 to 2.25.8 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.25.6 to 2.25.8.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 01:54:58 +00:00
dependabot[bot]
7bae68d16a Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 516.0.0-slim to 517.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 01:53:18 +00:00
dependabot[bot]
59fc775c56 Bump golang from 1.24.1 to 1.24.2 in /dockerfiles/crane
Bumps golang from 1.24.1 to 1.24.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 01:48:17 +00:00
dependabot[bot]
09bfcb3c5a Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 516.0.0-slim to 517.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 01:39:40 +00:00
dependabot[bot]
b99d093979 Bump golang from 1.24.1 to 1.24.2 in /dockerfiles/test-cfssl
Bumps golang from 1.24.1 to 1.24.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 01:39:33 +00:00
dependabot[bot]
b16c13845d Bump golang from 1.24.1 to 1.24.2 in /dockerfiles/gh-cli
Bumps golang from 1.24.1 to 1.24.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 01:38:45 +00:00
dependabot[bot]
a1235857d3 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 516.0.0-slim to 517.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 01:37:34 +00:00
dependabot[bot]
b25a2bc015 Bump golang from 1.24.1 to 1.24.2 in /dockerfiles/code-coverage-uploader
Bumps golang from 1.24.1 to 1.24.2.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 01:35:34 +00:00
dependabot[bot]
467396215b Bump golang in /pipelines/shared-helpers/test-binaries-image
Bumps golang from 1.24.1-bullseye to 1.24.2-bullseye.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 01:35:31 +00:00
Joshua Casey
a71b93d4f8 Merge pull request #2298 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.25.6
Bump amazon/aws-cli from 2.25.4 to 2.25.6 in /dockerfiles/eks-deployer
2025-03-31 09:18:25 -05:00
dependabot[bot]
6bcaf5255f Bump amazon/aws-cli from 2.25.4 to 2.25.6 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.25.4 to 2.25.6.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 02:06:12 +00:00
Joshua Casey
ade3aa7e1a Merge pull request #2291 from vmware-tanzu/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-516.0.0-slim
Bump google/cloud-sdk from 515.0.0-slim to 516.0.0-slim in /dockerfiles/k8s-app-deployer
2025-03-26 23:01:55 -05:00
Joshua Casey
12ec989f15 Merge pull request #2292 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-516.0.0-slim
Bump google/cloud-sdk from 515.0.0-slim to 516.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-03-26 23:01:52 -05:00
Joshua Casey
82ea7faff6 Merge pull request #2293 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-516.0.0-slim
Bump google/cloud-sdk from 515.0.0-slim to 516.0.0-slim in /dockerfiles/integration-test-runner
2025-03-26 23:01:48 -05:00
Joshua Casey
7b3efc4e58 Merge pull request #2295 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.25.4
Bump amazon/aws-cli from 2.25.1 to 2.25.4 in /dockerfiles/eks-deployer
2025-03-26 23:01:45 -05:00
dependabot[bot]
0c7b8350ae Bump amazon/aws-cli from 2.25.1 to 2.25.4 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.25.1 to 2.25.4.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-27 02:04:39 +00:00
dependabot[bot]
ba8ef3fbc1 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 515.0.0-slim to 516.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-26 01:57:40 +00:00
dependabot[bot]
b46cf40bad Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 515.0.0-slim to 516.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-26 01:42:05 +00:00
dependabot[bot]
66dab6f64e Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 515.0.0-slim to 516.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-26 01:36:01 +00:00
Joshua Casey
9b3b148d6f Merge pull request #2279 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-515.0.0-slim
Bump google/cloud-sdk from 514.0.0-slim to 515.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-03-24 10:02:54 -05:00
Joshua Casey
7b8e0f0e0d Merge pull request #2280 from vmware-tanzu/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-515.0.0-slim
Bump google/cloud-sdk from 514.0.0-slim to 515.0.0-slim in /dockerfiles/k8s-app-deployer
2025-03-24 10:02:50 -05:00
Joshua Casey
6c1e29c2f1 Merge pull request #2281 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-515.0.0-slim
Bump google/cloud-sdk from 514.0.0-slim to 515.0.0-slim in /dockerfiles/integration-test-runner
2025-03-24 10:02:46 -05:00
Joshua Casey
e28181634e Merge pull request #2287 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.25.1
Bump amazon/aws-cli from 2.24.25 to 2.25.1 in /dockerfiles/eks-deployer
2025-03-24 10:02:43 -05:00
dependabot[bot]
e07b9fc1e2 Bump amazon/aws-cli from 2.24.25 to 2.25.1 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.24.25 to 2.25.1.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-24 01:45:44 +00:00
Ryan Richard
18835ed1be update aks kube versions 2025-03-19 13:05:39 -07:00
Ryan Richard
d6fc3c3160 update eks kube versions 2025-03-19 11:58:34 -07:00
dependabot[bot]
7d32a91e62 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 514.0.0-slim to 515.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-19 01:40:06 +00:00
dependabot[bot]
6956bd3f61 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 514.0.0-slim to 515.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-19 01:35:10 +00:00
dependabot[bot]
a082608827 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 514.0.0-slim to 515.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-19 01:32:04 +00:00
Ryan Richard
b7620fb40c update README copyright years 2025-03-18 12:25:51 -07:00
Ryan Richard
8e8d61086a update versions in dockerfile-builders 2025-03-18 12:19:46 -07:00
Joshua Casey
4d91e39b36 Merge pull request #2270 from vmware-tanzu/dependabot/docker/dockerfiles/pool-trigger-resource/ci/debian-12.10-slim
Bump debian from 12.9-slim to 12.10-slim in /dockerfiles/pool-trigger-resource
2025-03-18 07:20:00 -05:00
Joshua Casey
4bbae25452 Merge pull request #2271 from vmware-tanzu/dependabot/docker/dockerfiles/deployment-yaml-formatter/ci/debian-12.10-slim
Bump debian from 12.9-slim to 12.10-slim in /dockerfiles/deployment-yaml-formatter
2025-03-18 07:19:55 -05:00
Joshua Casey
6e911bb1ef Merge pull request #2272 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.24.25
Bump amazon/aws-cli from 2.24.24 to 2.24.25 in /dockerfiles/eks-deployer
2025-03-18 07:19:50 -05:00
Joshua Casey
058b122bb3 Merge pull request #2273 from vmware-tanzu/dependabot/docker/dockerfiles/code-coverage-uploader/ci/debian-12.10-slim
Bump debian from 12.9-slim to 12.10-slim in /dockerfiles/code-coverage-uploader
2025-03-18 07:19:46 -05:00
Joshua Casey
a78812acb5 Merge pull request #2274 from vmware-tanzu/dependabot/docker/dockerfiles/test-forward-proxy/ci/debian-12.10-slim
Bump debian from 12.9-slim to 12.10-slim in /dockerfiles/test-forward-proxy
2025-03-18 07:19:41 -05:00
Joshua Casey
d7abafd44a Merge pull request #2275 from vmware-tanzu/dependabot/docker/dockerfiles/gh-cli/ci/debian-12.10-slim
Bump debian from 12.9-slim to 12.10-slim in /dockerfiles/gh-cli
2025-03-18 07:19:36 -05:00
dependabot[bot]
02ae5132a3 Bump debian from 12.9-slim to 12.10-slim in /dockerfiles/gh-cli
Bumps debian from 12.9-slim to 12.10-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-18 02:05:25 +00:00
dependabot[bot]
89bb9ec2e1 Bump debian in /dockerfiles/test-forward-proxy
Bumps debian from 12.9-slim to 12.10-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-18 02:05:22 +00:00
dependabot[bot]
f4547da79d Bump debian in /dockerfiles/code-coverage-uploader
Bumps debian from 12.9-slim to 12.10-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-18 02:05:11 +00:00
dependabot[bot]
39e67f56b1 Bump amazon/aws-cli from 2.24.24 to 2.24.25 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.24.24 to 2.24.25.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-18 01:59:42 +00:00
dependabot[bot]
80cdfb938c Bump debian in /dockerfiles/deployment-yaml-formatter
Bumps debian from 12.9-slim to 12.10-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-18 01:59:40 +00:00
dependabot[bot]
2376ebce99 Bump debian in /dockerfiles/pool-trigger-resource
Bumps debian from 12.9-slim to 12.10-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-18 01:56:00 +00:00
Joshua Casey
2023061ae2 Merge pull request #2267 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.24.24
Bump amazon/aws-cli from 2.24.22 to 2.24.24 in /dockerfiles/eks-deployer
2025-03-16 22:59:07 -05:00
dependabot[bot]
792a3e5ada Bump amazon/aws-cli from 2.24.22 to 2.24.24 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.24.22 to 2.24.24.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 01:35:00 +00:00
Ryan Richard
6020200423 Merge pull request #2259 from vmware-tanzu/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-514.0.0-slim
Bump google/cloud-sdk from 513.0.0-slim to 514.0.0-slim in /dockerfiles/k8s-app-deployer
2025-03-13 13:40:19 -07:00
Ryan Richard
00ee3b6296 Merge pull request #2260 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-514.0.0-slim
Bump google/cloud-sdk from 513.0.0-slim to 514.0.0-slim in /dockerfiles/integration-test-runner
2025-03-13 13:40:15 -07:00
Ryan Richard
35b4d04ab0 Merge pull request #2261 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-514.0.0-slim
Bump google/cloud-sdk from 513.0.0-slim to 514.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-03-13 13:40:11 -07:00
Ryan Richard
f9d3da45c4 Merge pull request #2262 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.24.22
Bump amazon/aws-cli from 2.24.20 to 2.24.22 in /dockerfiles/eks-deployer
2025-03-13 13:40:08 -07:00
dependabot[bot]
07a5c06501 Bump amazon/aws-cli from 2.24.20 to 2.24.22 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.24.20 to 2.24.22.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-12 01:47:05 +00:00
dependabot[bot]
d382f91ee0 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 513.0.0-slim to 514.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-12 01:46:35 +00:00
dependabot[bot]
ebb40d7101 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 513.0.0-slim to 514.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-12 01:39:43 +00:00
dependabot[bot]
6404dcd266 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 513.0.0-slim to 514.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-12 01:26:01 +00:00
Joshua Casey
5d3d4c8865 Merge pull request #2257 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.24.20
Bump amazon/aws-cli from 2.24.19 to 2.24.20 in /dockerfiles/eks-deployer
2025-03-10 10:45:44 -05:00
dependabot[bot]
1acd1b7998 Bump amazon/aws-cli from 2.24.19 to 2.24.20 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.24.19 to 2.24.20.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 01:28:24 +00:00
Joshua Casey
3430006aa4 Merge pull request #2255 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.24.19
Bump amazon/aws-cli from 2.24.18 to 2.24.19 in /dockerfiles/eks-deployer
2025-03-07 10:28:28 -06:00
dependabot[bot]
7872d7fef2 Bump amazon/aws-cli from 2.24.18 to 2.24.19 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.24.18 to 2.24.19.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-07 01:36:03 +00:00
Ryan Richard
fb2c6d2125 fix typo from previous commit: use --data-value-yaml 2025-03-06 14:23:08 -08:00
Ryan Richard
d1e6738239 skip deploying test tools proxy server when not needed 2025-03-06 11:39:11 -08:00
Ryan Richard
01051e9de0 Revert "temporarily make some pipelines private"
This reverts commit c14a4a2bf4.
2025-03-06 11:39:11 -08:00
Joshua Casey
61c11e268d Merge pull request #2251 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.24.18
Bump amazon/aws-cli from 2.24.17 to 2.24.18 in /dockerfiles/eks-deployer
2025-03-06 13:26:55 -06:00
Ryan Richard
840744da70 exclude a CVE warning which was already fixed 2025-03-06 08:54:14 -08:00
dependabot[bot]
0a3107c38e Bump amazon/aws-cli from 2.24.17 to 2.24.18 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.24.17 to 2.24.18.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-06 01:33:30 +00:00
Joshua Casey
c40123e415 Bump to go 1.24.1 2025-03-05 13:06:25 -06:00
Joshua Casey
92c9335aae Merge pull request #2242 from vmware-tanzu/dependabot/docker/dockerfiles/gh-cli/ci/golang-1.24.1
Bump golang from 1.24.0 to 1.24.1 in /dockerfiles/gh-cli
2025-03-05 12:52:52 -06:00
Joshua Casey
b28cfcaf05 Merge pull request #2243 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-513.0.0-slim
Bump google/cloud-sdk from 512.0.0-slim to 513.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-03-05 12:52:48 -06:00
Joshua Casey
296f41a462 Merge pull request #2244 from vmware-tanzu/dependabot/docker/dockerfiles/code-coverage-uploader/ci/golang-1.24.1
Bump golang from 1.24.0 to 1.24.1 in /dockerfiles/code-coverage-uploader
2025-03-05 12:52:45 -06:00
Joshua Casey
c9c974fcab Merge pull request #2245 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.24.17
Bump amazon/aws-cli from 2.24.15 to 2.24.17 in /dockerfiles/eks-deployer
2025-03-05 12:52:42 -06:00
Joshua Casey
5c7288c1e2 Merge pull request #2246 from vmware-tanzu/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-513.0.0-slim
Bump google/cloud-sdk from 512.0.0-slim to 513.0.0-slim in /dockerfiles/k8s-app-deployer
2025-03-05 12:52:38 -06:00
Joshua Casey
de564c0c63 Merge pull request #2247 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-513.0.0-slim
Bump google/cloud-sdk from 512.0.0-slim to 513.0.0-slim in /dockerfiles/integration-test-runner
2025-03-05 12:52:35 -06:00
Joshua Casey
10d3f3c219 Merge pull request #2248 from vmware-tanzu/dependabot/docker/pipelines/shared-helpers/test-binaries-image/ci/golang-1.24.1-bullseye
Bump golang from 1.24.0-bullseye to 1.24.1-bullseye in /pipelines/shared-helpers/test-binaries-image
2025-03-05 12:52:32 -06:00
Ryan Richard
c14a4a2bf4 temporarily make some pipelines private 2025-03-05 10:26:17 -08:00
dependabot[bot]
d3a2fbd192 Bump golang in /pipelines/shared-helpers/test-binaries-image
Bumps golang from 1.24.0-bullseye to 1.24.1-bullseye.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-05 02:13:13 +00:00
dependabot[bot]
29c8b191d3 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 512.0.0-slim to 513.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-05 02:02:03 +00:00
dependabot[bot]
ebba823c0b Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 512.0.0-slim to 513.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-05 01:50:09 +00:00
dependabot[bot]
ec5c8d90f3 Bump amazon/aws-cli from 2.24.15 to 2.24.17 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.24.15 to 2.24.17.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-05 01:49:47 +00:00
dependabot[bot]
f573d0f0e9 Bump golang from 1.24.0 to 1.24.1 in /dockerfiles/code-coverage-uploader
Bumps golang from 1.24.0 to 1.24.1.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-05 01:39:00 +00:00
dependabot[bot]
0508d05e0f Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 512.0.0-slim to 513.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-05 01:34:54 +00:00
dependabot[bot]
23541830ef Bump golang from 1.24.0 to 1.24.1 in /dockerfiles/gh-cli
Bumps golang from 1.24.0 to 1.24.1.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-05 01:24:59 +00:00
Ryan Richard
75134f939b Merge pull request #2240 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.24.15
Bump amazon/aws-cli from 2.24.14 to 2.24.15 in /dockerfiles/eks-deployer
2025-03-03 11:13:06 -08:00
dependabot[bot]
e0be76857e Bump amazon/aws-cli from 2.24.14 to 2.24.15 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.24.14 to 2.24.15.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-03 01:46:58 +00:00
Joshua Casey
3bd23f1a3b Merge pull request #2237 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.24.14
Bump amazon/aws-cli from 2.24.13 to 2.24.14 in /dockerfiles/eks-deployer
2025-02-28 10:34:04 -06:00
dependabot[bot]
d16d47c89a Bump amazon/aws-cli from 2.24.13 to 2.24.14 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.24.13 to 2.24.14.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-28 01:58:32 +00:00
Joshua Casey
be9f564f4b Merge pull request #2235 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.24.13
Bump amazon/aws-cli from 2.24.12 to 2.24.13 in /dockerfiles/eks-deployer
2025-02-27 09:50:21 -06:00
dependabot[bot]
c0da4d337c Bump amazon/aws-cli from 2.24.12 to 2.24.13 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.24.12 to 2.24.13.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-27 01:27:12 +00:00
Ryan Richard
948e64df7e document some of the required AWS config 2025-02-26 13:26:24 -08:00
Joshua Casey
d4d800a22c Merge pull request #2232 from vmware-tanzu/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-512.0.0-slim
Bump google/cloud-sdk from 511.0.0-slim to 512.0.0-slim in /dockerfiles/k8s-app-deployer
2025-02-26 11:26:15 -06:00
Joshua Casey
09b687ecdb Merge pull request #2231 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-512.0.0-slim
Bump google/cloud-sdk from 511.0.0-slim to 512.0.0-slim in /dockerfiles/integration-test-runner
2025-02-26 11:26:03 -06:00
Joshua Casey
e401a5b184 Merge pull request #2230 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-512.0.0-slim
Bump google/cloud-sdk from 511.0.0-slim to 512.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-02-26 11:25:46 -06:00
Joshua Casey
15e917f86b Merge pull request #2229 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.24.12
Bump amazon/aws-cli from 2.24.11 to 2.24.12 in /dockerfiles/eks-deployer
2025-02-26 11:25:30 -06:00
dependabot[bot]
4a1600787c Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 511.0.0-slim to 512.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-26 02:03:04 +00:00
dependabot[bot]
58bee91e28 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 511.0.0-slim to 512.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-26 01:56:38 +00:00
dependabot[bot]
a855788c5f Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 511.0.0-slim to 512.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-26 01:47:00 +00:00
dependabot[bot]
649e3d4e5d Bump amazon/aws-cli from 2.24.11 to 2.24.12 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.24.11 to 2.24.12.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-26 01:42:08 +00:00
Ryan Richard
ec4747524a change account alias for aws nuke 2025-02-25 08:13:54 -08:00
Joshua Casey
6eff5d8900 Merge pull request #2227 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.24.11
Bump amazon/aws-cli from 2.24.10 to 2.24.11 in /dockerfiles/eks-deployer
2025-02-24 21:29:03 -06:00
dependabot[bot]
5ca43848ae Bump amazon/aws-cli from 2.24.10 to 2.24.11 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.24.10 to 2.24.11.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-25 01:52:52 +00:00
Ryan Richard
ab5f59602f make main pipeline visible 2025-02-24 14:01:29 -08:00
Ryan Richard
8aaccd356e Merge pull request #2225 from vmware-tanzu/dependabot/docker/dockerfiles/test-forward-proxy/ci/debian-12.9-slim
Bump debian from 12.8-slim to 12.9-slim in /dockerfiles/test-forward-proxy
2025-02-24 12:08:18 -08:00
Ryan Richard
4b9285cecd update version of mikefarah/yq in in task.sh 2025-02-24 12:07:18 -08:00
Ryan Richard
2f8c956510 Merge pull request #2206 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/mikefarah/yq-4.45.1
Bump mikefarah/yq from 4.44.5 to 4.45.1 in /dockerfiles/integration-test-runner
2025-02-24 12:05:21 -08:00
dependabot[bot]
1cca662e54 Bump mikefarah/yq in /dockerfiles/integration-test-runner
Bumps mikefarah/yq from 4.44.5 to 4.45.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 20:05:02 +00:00
Ryan Richard
b3f3b9a298 Merge pull request #2221 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.24.10
Bump amazon/aws-cli from 2.22.5 to 2.24.10 in /dockerfiles/eks-deployer
2025-02-24 12:05:01 -08:00
Ryan Richard
da7d630c44 Merge pull request #2207 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-511.0.0-slim
Bump google/cloud-sdk from 502.0.0-slim to 511.0.0-slim in /dockerfiles/integration-test-runner
2025-02-24 12:04:14 -08:00
dependabot[bot]
85fd6ca95b Bump amazon/aws-cli from 2.22.5 to 2.24.10 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.22.5 to 2.24.10.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 20:04:10 +00:00
Ryan Richard
f74a1684f4 Merge pull request #2208 from vmware-tanzu/dependabot/docker/dockerfiles/code-coverage-uploader/ci/debian-12.9-slim
Bump debian from 12.8-slim to 12.9-slim in /dockerfiles/code-coverage-uploader
2025-02-24 12:03:47 -08:00
Ryan Richard
8841975bf1 Merge pull request #2220 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/weaveworks/eksctl-v0.198.0
Bump weaveworks/eksctl from v0.193.0 to v0.198.0 in /dockerfiles/eks-deployer
2025-02-24 12:02:38 -08:00
Ryan Richard
13762286b8 Merge pull request #2216 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/mikefarah/yq-4.45.1
Bump mikefarah/yq from 4.44.5 to 4.45.1 in /dockerfiles/integration-test-runner-beta
2025-02-24 12:02:14 -08:00
Ryan Richard
a621e52fc2 Merge pull request #2210 from vmware-tanzu/dependabot/docker/dockerfiles/crane/ci/golang-1.24
Bump golang from 1.23 to 1.24 in /dockerfiles/crane
2025-02-24 12:01:02 -08:00
Ryan Richard
12760d7706 Merge pull request #2211 from vmware-tanzu/dependabot/docker/dockerfiles/deployment-yaml-formatter/ci/mikefarah/yq-4.45.1
Bump mikefarah/yq from 4.44.5 to 4.45.1 in /dockerfiles/deployment-yaml-formatter
2025-02-24 12:00:36 -08:00
Ryan Richard
c1b3ac7254 Merge pull request #2212 from vmware-tanzu/dependabot/docker/dockerfiles/crane/ci/mikefarah/yq-4.45.1
Bump mikefarah/yq from 4.44.5 to 4.45.1 in /dockerfiles/crane
2025-02-24 12:00:17 -08:00
Ryan Richard
96007ae056 Merge pull request #2213 from vmware-tanzu/dependabot/docker/dockerfiles/deployment-yaml-formatter/ci/debian-12.9-slim
Bump debian from 12.8-slim to 12.9-slim in /dockerfiles/deployment-yaml-formatter
2025-02-24 11:59:51 -08:00
Ryan Richard
6682e1271f Merge pull request #2214 from vmware-tanzu/dependabot/docker/dockerfiles/gh-cli/ci/debian-12.9-slim
Bump debian from 12.8-slim to 12.9-slim in /dockerfiles/gh-cli
2025-02-24 11:59:27 -08:00
Ryan Richard
c2d5e4367d Merge pull request #2215 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-511.0.0-slim
Bump google/cloud-sdk from 502.0.0-slim to 511.0.0-slim in /dockerfiles/integration-test-runner-beta
2025-02-24 11:59:05 -08:00
dependabot[bot]
3aa78eb33f Bump weaveworks/eksctl in /dockerfiles/eks-deployer
Bumps weaveworks/eksctl from v0.193.0 to v0.198.0.

---
updated-dependencies:
- dependency-name: weaveworks/eksctl
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 19:58:37 +00:00
Ryan Richard
c4fafb89ea Merge pull request #2217 from vmware-tanzu/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-511.0.0-slim
Bump google/cloud-sdk from 502.0.0-slim to 511.0.0-slim in /dockerfiles/k8s-app-deployer
2025-02-24 11:58:26 -08:00
Ryan Richard
9e10c3a290 Merge pull request #2218 from vmware-tanzu/dependabot/docker/dockerfiles/pool-trigger-resource/ci/debian-12.9-slim
Bump debian from 12.8-slim to 12.9-slim in /dockerfiles/pool-trigger-resource
2025-02-24 11:57:58 -08:00
Ryan Richard
ab939fc4e2 Merge pull request #2219 from vmware-tanzu/dependabot/docker/dockerfiles/test-bitnami-ldap/ci/bitnami/openldap-2.6.9
Bump bitnami/openldap from 2.6.8 to 2.6.9 in /dockerfiles/test-bitnami-ldap
2025-02-24 11:57:35 -08:00
Ryan Richard
f973afcc80 Merge pull request #2222 from vmware-tanzu/dependabot/docker/dockerfiles/test-cfssl/ci/golang-1.24
Bump golang from 1.23 to 1.24 in /dockerfiles/test-cfssl
2025-02-24 11:56:50 -08:00
Ryan Richard
b653f5d6f2 Merge pull request #2223 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/mikefarah/yq-4.45.1
Bump mikefarah/yq from 4.44.5 to 4.45.1 in /dockerfiles/eks-deployer
2025-02-24 11:56:16 -08:00
Ryan Richard
299f9ead0b Merge pull request #2224 from vmware-tanzu/dependabot/docker/dockerfiles/test-dex/ci/dexidp/dex-v2.42.0
Bump dexidp/dex from v2.41.1 to v2.42.0 in /dockerfiles/test-dex
2025-02-24 11:55:32 -08:00
dependabot[bot]
c823856098 Bump debian in /dockerfiles/test-forward-proxy
Bumps debian from 12.8-slim to 12.9-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 19:36:46 +00:00
dependabot[bot]
8da9854b42 Bump dexidp/dex from v2.41.1 to v2.42.0 in /dockerfiles/test-dex
Bumps [dexidp/dex](https://github.com/dexidp/dex) from v2.41.1 to v2.42.0.
- [Release notes](https://github.com/dexidp/dex/releases)
- [Commits](https://github.com/dexidp/dex/compare/v2.41.1...v2.42.0)

---
updated-dependencies:
- dependency-name: dexidp/dex
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 19:36:41 +00:00
dependabot[bot]
ea3228b226 Bump golang from 1.23 to 1.24 in /dockerfiles/test-cfssl
Bumps golang from 1.23 to 1.24.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 19:36:38 +00:00
dependabot[bot]
ed18119a55 Bump mikefarah/yq from 4.44.5 to 4.45.1 in /dockerfiles/eks-deployer
Bumps mikefarah/yq from 4.44.5 to 4.45.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 19:36:38 +00:00
dependabot[bot]
d2a0ee82ef Bump bitnami/openldap in /dockerfiles/test-bitnami-ldap
Bumps bitnami/openldap from 2.6.8 to 2.6.9.

---
updated-dependencies:
- dependency-name: bitnami/openldap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 19:36:29 +00:00
dependabot[bot]
4540e5be3a Bump debian in /dockerfiles/pool-trigger-resource
Bumps debian from 12.8-slim to 12.9-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 19:36:26 +00:00
dependabot[bot]
d810c27775 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 502.0.0-slim to 511.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 19:36:17 +00:00
dependabot[bot]
8eee1aae51 Bump mikefarah/yq in /dockerfiles/integration-test-runner-beta
Bumps mikefarah/yq from 4.44.5 to 4.45.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 19:36:16 +00:00
dependabot[bot]
6e3abf198e Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 502.0.0-slim to 511.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 19:36:15 +00:00
dependabot[bot]
51b2363031 Bump debian from 12.8-slim to 12.9-slim in /dockerfiles/gh-cli
Bumps debian from 12.8-slim to 12.9-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 19:36:07 +00:00
dependabot[bot]
b45dc3ddd4 Bump debian in /dockerfiles/deployment-yaml-formatter
Bumps debian from 12.8-slim to 12.9-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 19:36:02 +00:00
dependabot[bot]
34d2c4709e Bump mikefarah/yq from 4.44.5 to 4.45.1 in /dockerfiles/crane
Bumps mikefarah/yq from 4.44.5 to 4.45.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 19:36:00 +00:00
dependabot[bot]
4c14ad3299 Bump golang from 1.23 to 1.24 in /dockerfiles/crane
Bumps golang from 1.23 to 1.24.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 19:35:59 +00:00
dependabot[bot]
e134edcc41 Bump mikefarah/yq in /dockerfiles/deployment-yaml-formatter
Bumps mikefarah/yq from 4.44.5 to 4.45.1.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 19:35:59 +00:00
dependabot[bot]
0c95f0304d Bump debian in /dockerfiles/code-coverage-uploader
Bumps debian from 12.8-slim to 12.9-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 19:35:56 +00:00
dependabot[bot]
5505f5745c Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 502.0.0-slim to 511.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 19:32:29 +00:00
Ryan Richard
6918deef71 move Chrome Beta integration tests to separate CI job 2025-02-20 14:51:04 -08:00
Ryan Richard
2504a3cc8a update confirm-built-with-fips to work for Go 1.24 2025-02-18 11:15:37 -08:00
Ryan Richard
1ed53cf630 upgrade CI to use Go 1.24.0 everywhere 2025-02-14 13:18:15 -08:00
Ryan Richard
aa258f1991 temporarily comment out the expose-pipeline of the main pipeline 2025-02-10 12:23:51 -08:00
Joshua Casey
b87893420b Bump to go1.23.6 2025-02-05 13:09:02 -06:00
Ryan Richard
0acd38fa7d use "-s -w" to strip the CLI binaries in task script 2025-01-22 16:29:52 -08:00
Ryan Richard
a4d091c857 show file sizes of built CLI binaries in task script 2025-01-22 16:21:18 -08:00
Ryan Richard
a4113243d9 upgrade controller-gen and crd-ref-docs 2025-01-22 09:32:05 -08:00
Joshua Casey
faf3394c46 Bump to golang@v1.23.5 2025-01-22 08:37:10 -06:00
Ryan Richard
a026244d5a add echo statement job to remove orphaned AKS clusters 2025-01-03 15:08:19 -08:00
Ryan Richard
4596d47d6c Revert "temp change in job to remove orphaned AKS clusters for manual testing"
This reverts commit b9984d2f92.
2025-01-03 15:07:09 -08:00
Ryan Richard
b9984d2f92 temp change in job to remove orphaned AKS clusters for manual testing 2025-01-03 15:03:58 -08:00
Ryan Richard
8e6ecb9466 fix error handling in job to remove orphaned AKS clusters, update README 2025-01-03 14:53:35 -08:00
Ryan Richard
26ccd824a4 fix typo and add guard statement in job to remove orphaned AKS clusters 2025-01-03 14:34:11 -08:00
Ryan Richard
cbe99119a2 add job to automatically find and remove orphaned AKS clusters 2025-01-03 14:22:36 -08:00
Ryan Richard
8ca0f319a1 document how to configure Azure for CI 2025-01-03 11:37:10 -08:00
Ryan Richard
ee439d0ba9 add one more job to auto tab in main pipeline 2025-01-03 10:47:10 -08:00
Ryan Richard
28fbf5029a reorganize main pipeline tabs by auto vs manual trigger jobs 2025-01-03 10:42:20 -08:00
Joshua Casey
a860c85c71 Add more groups to the main pipeline 2024-12-30 11:17:14 -06:00
Joshua Casey
3cdbc5b09b lightly organize main pipeline jobs into groups 2024-12-27 15:04:51 -06:00
Joshua Casey
cbabfbe942 Add k8s 1.31 and 1.32 kind integration tests to the main pipeline 2024-12-27 11:46:57 -06:00
Ryan Richard
cbea626d96 actually delete clusters in new CI job to remove orphaned GKE clusters 2024-12-23 11:18:56 -08:00
Ryan Richard
171ec457f1 use new --filter syntax in scripts to remove orphaned Kind/GKE clusters
The old filter syntax is deprecated by Google.
2024-12-23 11:17:04 -08:00
Ryan Richard
793559c67c fix typo in new CI job to remove orphaned GKE clusters 2024-12-23 11:01:43 -08:00
Ryan Richard
b9fe22f3a5 add CI job to remove orphaned GKE clusters 2024-12-23 10:59:06 -08:00
Ryan Richard
b5e67330b1 Revert "Temporarily run unit tests without -race due to #2160"
This reverts commit 6fad7ef3c2.
2024-12-19 11:34:36 -08:00
Joshua Casey
6fad7ef3c2 Temporarily run unit tests without -race due to #2160 2024-12-18 08:56:21 -06:00
Joshua Casey
0f3ae1cf22 Remove 1.25 codegen verification from pull-request and main pipelines 2024-12-17 14:45:19 -06:00
Joshua Casey
73664b5d19 Add K8s 0.32 to the main pipeline 2024-12-13 15:09:58 -06:00
Joshua Casey
36bc1a9d65 Add K8s 0.32 to the pull-requests pipeline 2024-12-13 15:02:07 -06:00
Joshua Casey
04b870d288 Add K8s 0.32 to the dockerfile-builders pipeline 2024-12-13 14:57:03 -06:00
Joshua Casey
f45f8cf2dc Update AD creation scripts so that AD user passwords never expire 2024-12-05 14:36:32 -06:00
Ryan Richard
4e1aa9fa05 add hack script to rebuild all codegen images 2024-12-04 09:32:40 -08:00
Ryan Richard
093c56f24e upgrade golang in CI from 1.23.3 to 1.23.4 2024-12-04 09:14:52 -08:00
Ryan Richard
9960c80351 update crd-ref-docs and kube patch versions 2024-12-03 14:33:30 -06:00
Ryan Richard
45bc187ee4 Merge pull request #2144 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.22.5
Bump amazon/aws-cli from 2.22.4 to 2.22.5 in /dockerfiles/eks-deployer
2024-11-26 12:31:06 -08:00
dependabot[bot]
434b1e2818 Bump amazon/aws-cli from 2.22.4 to 2.22.5 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.22.4 to 2.22.5.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-26 01:31:55 +00:00
Ryan Richard
b0904132c4 Merge pull request #2141 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.22.4
Bump amazon/aws-cli from 2.22.2 to 2.22.4 in /dockerfiles/eks-deployer
2024-11-25 13:10:23 -08:00
dependabot[bot]
d376fd318f Bump amazon/aws-cli from 2.22.2 to 2.22.4 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.22.2 to 2.22.4.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-25 02:07:50 +00:00
Ryan Richard
2d62a03bb2 add debugging echos to usage of "kubectl api-resources" 2024-11-21 11:42:52 -08:00
Joshua Casey
8e72e0e20b Merge pull request #2138 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.22.2
Bump amazon/aws-cli from 2.22.1 to 2.22.2 in /dockerfiles/eks-deployer
2024-11-21 09:54:34 -06:00
dependabot[bot]
48a90ae2dc Bump amazon/aws-cli from 2.22.1 to 2.22.2 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.22.1 to 2.22.2.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-21 01:21:58 +00:00
Joshua Casey
40c15acde9 Merge pull request #2133 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.22.1
Bump amazon/aws-cli from 2.22.0 to 2.22.1 in /dockerfiles/eks-deployer
2024-11-19 20:37:48 -06:00
Joshua Casey
3033f87e41 Merge pull request #2134 from vmware-tanzu/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-502.0.0-slim
Bump google/cloud-sdk from 501.0.0-slim to 502.0.0-slim in /dockerfiles/k8s-app-deployer
2024-11-19 20:37:45 -06:00
Joshua Casey
6450d0a307 Merge pull request #2135 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-502.0.0-slim
Bump google/cloud-sdk from 501.0.0-slim to 502.0.0-slim in /dockerfiles/integration-test-runner
2024-11-19 20:37:42 -06:00
Joshua Casey
985137df8d Merge pull request #2136 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-502.0.0-slim
Bump google/cloud-sdk from 501.0.0-slim to 502.0.0-slim in /dockerfiles/integration-test-runner-beta
2024-11-19 20:37:39 -06:00
dependabot[bot]
fe3cd8cabe Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 501.0.0-slim to 502.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-20 02:01:20 +00:00
dependabot[bot]
25cbd87648 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 501.0.0-slim to 502.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-20 01:57:22 +00:00
dependabot[bot]
1cf10bbdc6 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 501.0.0-slim to 502.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-20 01:52:27 +00:00
dependabot[bot]
02e0b0e2c7 Bump amazon/aws-cli from 2.22.0 to 2.22.1 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.22.0 to 2.22.1.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-20 01:25:10 +00:00
Ryan Richard
a41a296b55 remove a test from PR pipeline that isn't needed until main pipeline 2024-11-19 15:05:14 -08:00
Joshua Casey
45b3f4ec8f Merge pull request #2131 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.22.0
Bump amazon/aws-cli from 2.21.3 to 2.22.0 in /dockerfiles/eks-deployer
2024-11-18 20:59:48 -06:00
dependabot[bot]
82461287a4 Bump amazon/aws-cli from 2.21.3 to 2.22.0 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.21.3 to 2.22.0.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-19 01:17:33 +00:00
Ryan Richard
10f005fc7d use check_every on most resource checks to conserve worker resources 2024-11-18 11:15:13 -08:00
Joshua Casey
81ff7ce484 Merge pull request #2125 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/mikefarah/yq-4.44.5
Bump mikefarah/yq from 4.44.3 to 4.44.5 in /dockerfiles/eks-deployer
2024-11-17 20:48:21 -06:00
dependabot[bot]
33c2cdc9d9 Bump mikefarah/yq from 4.44.3 to 4.44.5 in /dockerfiles/eks-deployer
Bumps mikefarah/yq from 4.44.3 to 4.44.5.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 02:48:13 +00:00
Joshua Casey
f1e3ba9eca Merge pull request #2126 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.21.3
Bump amazon/aws-cli from 2.21.1 to 2.21.3 in /dockerfiles/eks-deployer
2024-11-17 20:47:35 -06:00
Joshua Casey
7bf68cbf8e Merge pull request #2127 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/mikefarah/yq-4.44.5
Bump mikefarah/yq from 4.44.3 to 4.44.5 in /dockerfiles/integration-test-runner
2024-11-17 20:47:32 -06:00
Joshua Casey
38adfff384 Merge pull request #2128 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/mikefarah/yq-4.44.5
Bump mikefarah/yq from 4.44.3 to 4.44.5 in /dockerfiles/integration-test-runner-beta
2024-11-17 20:47:29 -06:00
Joshua Casey
98a0e42f20 Merge pull request #2129 from vmware-tanzu/dependabot/docker/dockerfiles/crane/ci/mikefarah/yq-4.44.5
Bump mikefarah/yq from 4.44.3 to 4.44.5 in /dockerfiles/crane
2024-11-17 20:47:26 -06:00
Joshua Casey
ca0f632790 Merge pull request #2130 from vmware-tanzu/dependabot/docker/dockerfiles/deployment-yaml-formatter/ci/mikefarah/yq-4.44.5
Bump mikefarah/yq from 4.44.3 to 4.44.5 in /dockerfiles/deployment-yaml-formatter
2024-11-17 20:47:23 -06:00
dependabot[bot]
08f0bdead4 Bump mikefarah/yq in /dockerfiles/deployment-yaml-formatter
Bumps mikefarah/yq from 4.44.3 to 4.44.5.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 02:10:35 +00:00
dependabot[bot]
313b16530a Bump mikefarah/yq from 4.44.3 to 4.44.5 in /dockerfiles/crane
Bumps mikefarah/yq from 4.44.3 to 4.44.5.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 02:08:19 +00:00
dependabot[bot]
8b28d01bfe Bump mikefarah/yq in /dockerfiles/integration-test-runner-beta
Bumps mikefarah/yq from 4.44.3 to 4.44.5.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 01:45:08 +00:00
dependabot[bot]
16a27bddf7 Bump mikefarah/yq in /dockerfiles/integration-test-runner
Bumps mikefarah/yq from 4.44.3 to 4.44.5.

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 01:43:00 +00:00
dependabot[bot]
4467f11d93 Bump amazon/aws-cli from 2.21.1 to 2.21.3 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.21.1 to 2.21.3.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 01:13:35 +00:00
Ryan Richard
e1464c379c improve how scripts check for gcloud auth 2024-11-15 09:40:22 -08:00
Joshua Casey
9446262246 Merge pull request #2122 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.21.1
Bump amazon/aws-cli from 2.21.0 to 2.21.1 in /dockerfiles/eks-deployer
2024-11-15 10:10:36 -06:00
dependabot[bot]
e187065900 Bump amazon/aws-cli from 2.21.0 to 2.21.1 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.21.0 to 2.21.1.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-15 01:25:07 +00:00
Joshua Casey
ee942a1263 Merge pull request #2120 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.21.0
Bump amazon/aws-cli from 2.20.0 to 2.21.0 in /dockerfiles/eks-deployer
2024-11-14 09:11:14 -06:00
dependabot[bot]
e290bf19e6 Bump amazon/aws-cli from 2.20.0 to 2.21.0 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.20.0 to 2.21.0.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-14 01:57:55 +00:00
Joshua Casey
6254bbccd4 Merge pull request #2110 from vmware-tanzu/dependabot/docker/dockerfiles/test-forward-proxy/ci/debian-12.8-slim
Bump debian from 12.7-slim to 12.8-slim in /dockerfiles/test-forward-proxy
2024-11-13 08:16:33 -06:00
Joshua Casey
3b6b3534dc Merge pull request #2111 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.20.0
Bump amazon/aws-cli from 2.19.5 to 2.20.0 in /dockerfiles/eks-deployer
2024-11-13 08:16:29 -06:00
Joshua Casey
290227762c Merge pull request #2112 from vmware-tanzu/dependabot/docker/dockerfiles/deployment-yaml-formatter/ci/debian-12.8-slim
Bump debian from 12.7-slim to 12.8-slim in /dockerfiles/deployment-yaml-formatter
2024-11-13 08:16:26 -06:00
Joshua Casey
fb5e550057 Merge pull request #2113 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-501.0.0-slim
Bump google/cloud-sdk from 500.0.0-slim to 501.0.0-slim in /dockerfiles/integration-test-runner-beta
2024-11-13 08:16:23 -06:00
Joshua Casey
78b9707fde Merge pull request #2114 from vmware-tanzu/dependabot/docker/dockerfiles/code-coverage-uploader/ci/debian-12.8-slim
Bump debian from 12.7-slim to 12.8-slim in /dockerfiles/code-coverage-uploader
2024-11-13 08:16:19 -06:00
Joshua Casey
7b3ae89420 Merge pull request #2115 from vmware-tanzu/dependabot/docker/dockerfiles/gh-cli/ci/debian-12.8-slim
Bump debian from 12.7-slim to 12.8-slim in /dockerfiles/gh-cli
2024-11-13 08:16:16 -06:00
Joshua Casey
db1fcfe116 Merge pull request #2116 from vmware-tanzu/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-501.0.0-slim
Bump google/cloud-sdk from 500.0.0-slim to 501.0.0-slim in /dockerfiles/k8s-app-deployer
2024-11-13 08:16:13 -06:00
Joshua Casey
0423e49ffa Merge pull request #2117 from vmware-tanzu/dependabot/docker/dockerfiles/pool-trigger-resource/ci/debian-12.8-slim
Bump debian from 12.7-slim to 12.8-slim in /dockerfiles/pool-trigger-resource
2024-11-13 08:16:09 -06:00
Joshua Casey
6829c3095d Merge pull request #2118 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-501.0.0-slim
Bump google/cloud-sdk from 500.0.0-slim to 501.0.0-slim in /dockerfiles/integration-test-runner
2024-11-13 08:16:06 -06:00
dependabot[bot]
4c3d6721a5 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 500.0.0-slim to 501.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-13 02:09:43 +00:00
dependabot[bot]
5f9d2bb7d9 Bump debian in /dockerfiles/pool-trigger-resource
Bumps debian from 12.7-slim to 12.8-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-13 02:08:53 +00:00
dependabot[bot]
4639b4e7c3 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 500.0.0-slim to 501.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-13 02:07:43 +00:00
dependabot[bot]
7137399964 Bump debian from 12.7-slim to 12.8-slim in /dockerfiles/gh-cli
Bumps debian from 12.7-slim to 12.8-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-13 02:04:36 +00:00
dependabot[bot]
f1181fce54 Bump debian in /dockerfiles/code-coverage-uploader
Bumps debian from 12.7-slim to 12.8-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-13 01:48:13 +00:00
dependabot[bot]
63e03cded9 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 500.0.0-slim to 501.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-13 01:41:03 +00:00
dependabot[bot]
76489c840c Bump debian in /dockerfiles/deployment-yaml-formatter
Bumps debian from 12.7-slim to 12.8-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-13 01:36:47 +00:00
dependabot[bot]
e7845e2cd9 Bump amazon/aws-cli from 2.19.5 to 2.20.0 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.19.5 to 2.20.0.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-13 01:24:22 +00:00
dependabot[bot]
a10c8946a9 Bump debian in /dockerfiles/test-forward-proxy
Bumps debian from 12.7-slim to 12.8-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-13 01:20:21 +00:00
Joshua Casey
055f5e4082 Merge pull request #2108 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.19.5
Bump amazon/aws-cli from 2.19.4 to 2.19.5 in /dockerfiles/eks-deployer
2024-11-12 06:54:23 -06:00
dependabot[bot]
001f130cb1 Bump amazon/aws-cli from 2.19.4 to 2.19.5 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.19.4 to 2.19.5.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-12 01:29:09 +00:00
Joshua Casey
df87953a41 Merge pull request #2106 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.19.4
Bump amazon/aws-cli from 2.19.3 to 2.19.4 in /dockerfiles/eks-deployer
2024-11-11 08:10:44 -06:00
dependabot[bot]
99172cfea9 Bump amazon/aws-cli from 2.19.3 to 2.19.4 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.19.3 to 2.19.4.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-11 01:35:37 +00:00
Ryan Richard
2acdfecc9b add more echo statements to prepare-cluster-for-integration-tests.sh 2024-11-08 10:49:36 -08:00
Joshua Casey
f7b1aae324 Merge pull request #2102 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.19.3
Bump amazon/aws-cli from 2.19.2 to 2.19.3 in /dockerfiles/eks-deployer
2024-11-07 20:39:21 -06:00
dependabot[bot]
2b5b80ee6b Bump amazon/aws-cli from 2.19.2 to 2.19.3 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.19.2 to 2.19.3.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-08 01:28:00 +00:00
Ryan Richard
15efa88933 upgrade Go in CI from 1.23.2 to 1.23.3 2024-11-07 11:42:57 -08:00
Ryan Richard
acb590679c do not remove and reapply backendconfig annotations on every redeploy 2024-11-07 11:18:02 -08:00
Joshua Casey
a0c65fe9bd Merge pull request #2096 from vmware-tanzu/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-500.0.0-slim
Bump google/cloud-sdk from 499.0.0-slim to 500.0.0-slim in /dockerfiles/k8s-app-deployer
2024-11-06 21:29:57 -06:00
Joshua Casey
b02861bfea Merge pull request #2097 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-500.0.0-slim
Bump google/cloud-sdk from 499.0.0-slim to 500.0.0-slim in /dockerfiles/integration-test-runner-beta
2024-11-06 21:29:54 -06:00
Joshua Casey
42b0982ae6 Merge pull request #2098 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-500.0.0-slim
Bump google/cloud-sdk from 499.0.0-slim to 500.0.0-slim in /dockerfiles/integration-test-runner
2024-11-06 21:29:51 -06:00
Joshua Casey
393aa59608 Merge pull request #2099 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.19.2
Bump amazon/aws-cli from 2.19.1 to 2.19.2 in /dockerfiles/eks-deployer
2024-11-06 21:29:48 -06:00
dependabot[bot]
5a3048745f Bump amazon/aws-cli from 2.19.1 to 2.19.2 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.19.1 to 2.19.2.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-07 02:07:09 +00:00
dependabot[bot]
e4f5bbe3d2 Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 499.0.0-slim to 500.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-07 02:05:07 +00:00
dependabot[bot]
1a55b7aa44 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 499.0.0-slim to 500.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-07 01:56:52 +00:00
dependabot[bot]
62fab47791 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 499.0.0-slim to 500.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-07 01:22:18 +00:00
Ryan Richard
914efc79d1 Update k8s version on eks/aks "latest" jobs 2024-11-06 10:12:18 -08:00
Ryan Richard
761c2c10ed update crd-ref-docs and controller-gen versions for codegen images 2024-11-04 13:28:11 -08:00
Joshua Casey
ba3dd1c855 Merge pull request #2087 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.19.1
Bump amazon/aws-cli from 2.19.0 to 2.19.1 in /dockerfiles/eks-deployer
2024-11-04 08:56:20 -06:00
dependabot[bot]
eb9c914548 Bump amazon/aws-cli from 2.19.0 to 2.19.1 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.19.0 to 2.19.1.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-04 01:47:31 +00:00
Ryan Richard
3b67364b5c refactor main pipeline for fewer parallel jobs to reduce resources 2024-11-01 12:50:29 -07:00
Joshua Casey
dcf28baef8 Merge pull request #2085 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.19.0
Bump amazon/aws-cli from 2.18.17 to 2.19.0 in /dockerfiles/eks-deployer
2024-11-01 08:31:01 -05:00
dependabot[bot]
667cf31ea1 Bump amazon/aws-cli from 2.18.17 to 2.19.0 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.18.17 to 2.19.0.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-01 01:39:00 +00:00
Ryan Richard
fa22cfe2d5 ignore a CVE for trivy scans in the PR pipeline 2024-10-31 14:39:36 -07:00
Ryan Richard
b27aa974cd split PR pipeline's integration test jobs into two columns 2024-10-31 13:41:55 -07:00
Ryan Richard
027ac23760 ignore a CVE for trivy scans 2024-10-31 11:06:03 -07:00
Ryan Richard
9f58db799f update pre-commit hooks for ci branch 2024-10-31 11:05:34 -07:00
Ryan Richard
b829d05346 show more vulnerabilities in trivy scan output 2024-10-31 10:36:18 -07:00
Ryan Richard
d1e382e8e4 try pulling trivy from dockerhub because ghcr is rate limiting us 2024-10-31 10:25:43 -07:00
Joshua Casey
34304b936f Add pre-commit-config 2024-10-30 09:38:13 -05:00
Joshua Casey
a11c1a7092 Use trivy db mirror from ECR instead of GHCR 2024-10-30 09:30:41 -05:00
Joshua Casey
d7858b8fb4 Merge pull request #2078 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner-beta/ci/google/cloud-sdk-499.0.0-slim
Bump google/cloud-sdk from 498.0.0-slim to 499.0.0-slim in /dockerfiles/integration-test-runner-beta
2024-10-30 09:03:34 -05:00
Joshua Casey
72f38c101d Merge pull request #2079 from vmware-tanzu/dependabot/docker/dockerfiles/k8s-app-deployer/ci/google/cloud-sdk-499.0.0-slim
Bump google/cloud-sdk from 498.0.0-slim to 499.0.0-slim in /dockerfiles/k8s-app-deployer
2024-10-30 09:03:30 -05:00
Joshua Casey
15be3b0eb0 Merge pull request #2080 from vmware-tanzu/dependabot/docker/dockerfiles/eks-deployer/ci/amazon/aws-cli-2.18.17
Bump amazon/aws-cli from 2.18.15 to 2.18.17 in /dockerfiles/eks-deployer
2024-10-30 09:03:27 -05:00
Joshua Casey
69a0823db2 Merge pull request #2081 from vmware-tanzu/dependabot/docker/dockerfiles/integration-test-runner/ci/google/cloud-sdk-499.0.0-slim
Bump google/cloud-sdk from 498.0.0-slim to 499.0.0-slim in /dockerfiles/integration-test-runner
2024-10-30 09:03:21 -05:00
dependabot[bot]
7321d323ee Bump google/cloud-sdk in /dockerfiles/integration-test-runner
Bumps google/cloud-sdk from 498.0.0-slim to 499.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-29 22:51:39 +00:00
dependabot[bot]
98eacbacb9 Bump amazon/aws-cli from 2.18.15 to 2.18.17 in /dockerfiles/eks-deployer
Bumps amazon/aws-cli from 2.18.15 to 2.18.17.

---
updated-dependencies:
- dependency-name: amazon/aws-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-29 21:54:46 +00:00
dependabot[bot]
99f16bdcc6 Bump google/cloud-sdk in /dockerfiles/integration-test-runner-beta
Bumps google/cloud-sdk from 498.0.0-slim to 499.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-29 21:54:39 +00:00
dependabot[bot]
436e838778 Bump google/cloud-sdk in /dockerfiles/k8s-app-deployer
Bumps google/cloud-sdk from 498.0.0-slim to 499.0.0-slim.

---
updated-dependencies:
- dependency-name: google/cloud-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-29 21:54:39 +00:00
Ryan Richard
11bd69cf2d initial commit on ci branch: migrates code from private repo 2024-10-29 13:04:30 -07:00
1562 changed files with 17843 additions and 143107 deletions

2
.gitattributes vendored
View File

@@ -1,2 +0,0 @@
*.go.tmpl linguist-language=Go
generated/** linguist-generated

View File

@@ -1,42 +0,0 @@
---
name: Bug report
about: Explain a problem you are experiencing
title: ''
labels: ''
assignees: ''
---
<!--
Hey! Thanks for opening an issue!
IMPORTANT: If you believe this bug is a security issue, please don't use this template and follow our [security guidelines](/doc/security.md).
It is recommended that you include screenshots and logs to help everyone achieve a shared understanding of the bug.
-->
**What happened?**
> Please be specific and include screenshots and logs!
**What did you expect to happen?**
> Please be specific and include proposed behavior!
**What is the simplest way to reproduce this behavior?**
**In what environment did you see this bug?**
- Pinniped server version:
- Pinniped client version:
- Pinniped container image (if using a public container image):
- Pinniped configuration (what IDP(s) are you using? what downstream credential minting mechanisms are you using?):
- Kubernetes version (use `kubectl version`):
- Kubernetes installer & version (e.g., `kubeadm version`):
- Cloud provider or hardware configuration:
- OS (e.g: `cat /etc/os-release`):
- Kernel (e.g. `uname -a`):
- Others:
**What else is there to know about this bug?**

View File

@@ -1,35 +0,0 @@
---
name: Feature proposal
about: Suggest a way to improve this project
title: ''
labels: ''
assignees: ''
---
<!--
Hey! Thanks for opening an issue!
It is recommended that you include screenshots and logs to help everyone achieve a shared understanding of the improvement.
-->
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Are you considering submitting a PR for this feature?**
- **How will this project improvement be tested?**
- **How does this change the current architecture?**
- **How will this change be backwards compatible?**
- **How will this feature be documented?**
**Additional context**
Add any other context or screenshots about the feature request here.

15
.github/codecov.yml vendored
View File

@@ -1,15 +0,0 @@
codecov:
strict_yaml_branch: main
require_ci_to_pass: no
notify:
wait_for_ci: no
coverage:
status:
project:
default:
informational: true
patch:
default:
informational: true
ignore:
- cmd/local-user-authenticator/

View File

@@ -1,13 +0,0 @@
# See https://docs.github.com/en/github/administering-a-repository/enabling-and-disabling-version-updates
version: 2
updates:
- package-ecosystem: "gomod"
directory: "/"
schedule:
interval: "daily"
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "daily"

View File

@@ -1,41 +0,0 @@
<!--
Thank you for submitting a pull request for Pinniped!
Before submitting, please see the guidelines in CONTRIBUTING.md in this repo.
Please note that a project maintainer will need to review and provide an
initial approval on the PR to cause CI tests to automatically start.
Also note that if you push additional commits to the PR, those commits
will need another initial approval before CI will pick them up.
Reminder: Did you remember to run all the linter, unit tests, and integration tests
described in CONTRIBUTING.md on your branch before submitting this PR?
Below is a template to help you describe your PR.
-->
<!--
Provide a summary of your change. Feel free to use paragraphs or a bulleted list, for example:
- Improves performance by 10,000%.
- Fixes all bugs.
- Boils the oceans.
-->
<!--
Does this PR fix one or more reported issues?
If yes, use `Fixes #<issue number>` to automatically close the fixed issue(s) when the PR is merged.
-->
**Release note**:
<!--
Does this PR introduce a user-facing change?
If no, just write "NONE" in the release-note block below.
If yes, a release note is required. Enter your extended release note in the block below.
-->
```release-note
```

24
.gitignore vendored
View File

@@ -1,21 +1,7 @@
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib
# Test binary, built with `go test -c`
*.test
# Output of the go coverage tool, specifically when used with LiteIDE
*.out
# Dependency directories (remove the comment below to include it)
# vendor/
# GoLand
.idea
# MacOS Desktop Services Store
.terraform
*.tfstate.*
*.tfstate
kubeconfig.yaml
.DS_Store
site/

View File

@@ -1,74 +0,0 @@
# https://github.com/golangci/golangci-lint#config-file
run:
deadline: 1m
skip-dirs:
- generated
linters:
disable-all: true
enable:
# default linters
- deadcode
- errcheck
- gosimple
- govet
- ineffassign
- staticcheck
- structcheck
- typecheck
- unused
- varcheck
# additional linters for this project (we should disable these if they get annoying).
- asciicheck
- bodyclose
- depguard
- dogsled
- exhaustive
- exportloopref
- funlen
- gochecknoglobals
- gochecknoinits
- gocritic
- gocyclo
- godot
- goheader
- goimports
- golint
- goprintffuncname
- gosec
- misspell
- nakedret
- nestif
- noctx
- nolintlint
- prealloc
- rowserrcheck
- scopelint
- sqlclosecheck
- unconvert
- unparam
- whitespace
issues:
exclude-rules:
# exclude tests from some rules for things that are useful in a testing context.
- path: _test\.go
linters:
- funlen
- gochecknoglobals
linters-settings:
funlen:
lines: 150
statements: 50
goheader:
values:
regexp:
# YYYY or YYYY-YYYY
YEARS: \d\d\d\d(-\d\d\d\d)?
template: |-
Copyright {{YEARS}} the Pinniped contributors. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
goimports:
local-prefixes: go.pinniped.dev

View File

@@ -1,25 +1,23 @@
# This is a configuration for https://pre-commit.com/.
# On macOS, try `brew install pre-commit` and then run `pre-commit install`.
exclude: '^(site|generated)/'
repos:
- repo: git://github.com/pre-commit/pre-commit-hooks
rev: v3.2.0
hooks:
# TODO: find a version of this to validate ytt templates?
# - id: check-yaml
# args: ['--allow-multiple-documents']
- id: check-json
- id: end-of-file-fixer
- id: trailing-whitespace
- id: check-merge-conflict
- id: check-added-large-files
- id: check-byte-order-marker
- id: detect-private-key
exclude: testdata
- id: mixed-line-ending
- repo: local
hooks:
- id: validate-copyright-year
name: Validate copyright year
entry: hack/check-copyright-year.sh
language: script
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
# TODO: find a version of this to validate ytt templates?
# - id: check-yaml
# args: ['--allow-multiple-documents']
- id: check-json
- id: end-of-file-fixer
- id: trailing-whitespace
- id: check-merge-conflict
- id: check-added-large-files
- id: check-byte-order-marker
- id: detect-private-key
- id: mixed-line-ending
- repo: local
hooks:
- id: validate-copyright-year
name: Validate copyright year
entry: hack/check-copyright-year.sh
language: script

603
AD-SETUP.md Normal file
View File

@@ -0,0 +1,603 @@
# Creating an Active Directory server on Google Cloud for Pinniped integration tests
This documents the steps that were taken to create our test AD server used by the integration tests.
The integration tests use LDAPS and StartTLS to connect to the AD server.
## Create a Windows Server VM and configure it as an AD Domain Controller
The steps in this section were mostly inspired by
https://cloud.google.com/architecture/deploy-an-active-directory-forest-on-compute-engine.
From your Mac, create a VPC, subnet, firewall rules, admin password, reserved static IP, and the VM itself.
On your Mac:
```shell
# Login as yourself.
gcloud auth login
# Set some variables.
project="REDACTED" # Change this to be the actual project name before running these commands.
region="us-west1"
zone="us-west1-c"
vpc_name="ad"
# Create VPC.
gcloud compute networks create ${vpc_name} \
--project ${project} \
--description "VPC network to deploy Active Directory" \
--subnet-mode custom
# Create subnet.
# The google tutorial says to "enable Private Google Access so that Windows can activate without internet access."
gcloud compute networks subnets create domain-controllers \
--project ${project} --region ${region} \
--network ${vpc_name} \
--range "10.0.0.0/28" \
--enable-private-ip-google-access
# Create a firewall rule to allow RDP. Find out what your public IP address is by going to https://whatismyipaddress.com.
# Replace the X.X.X.X placeholder address shown here with your real IPv4 address.
my_ip=X.X.X.X
gcloud compute firewall-rules create allow-rdp-ingress-to-addc \
--project ${project} \
--direction INGRESS \
--action allow \
--rules tcp:3389 \
--source-ranges "${my_ip}/32" \
--target-tags ad-domaincontroller \
--network ${vpc_name} \
--priority 10000
# Allow LDAPS (port 636) from the whole internet.
gcloud compute firewall-rules create allow-ldaps-ingress-to-addc \
--project ${project} \
--direction INGRESS \
--action allow \
--rules tcp:636 \
--source-ranges "0.0.0.0/0" \
--target-tags ad-domaincontroller \
--network ${vpc_name} \
--priority 10000
# Allow LDAP (port 389) from the whole internet, to allow the integration tests to use StartTLS.
gcloud compute firewall-rules create allow-ldap-ingress-to-addc \
--project ${project} \
--direction INGRESS \
--action allow \
--rules tcp:389 \
--source-ranges "0.0.0.0/0" \
--target-tags ad-domaincontroller \
--network ${vpc_name} \
--priority 10000
# Reserve a static public IP address for the domain controller VM.
addressOfDc1=$(gcloud compute addresses create ad-domain-controller \
--project ${project} --region ${region} \
--format="value(address)")
# Create an admin password for the Administrator user on Windows, and save it to secrets manager.
password="$(openssl rand -hex 8)-$(openssl rand -hex 8)"
echo -n "$password" > password.tmp
gcloud secrets create active-directory-dc1-password \
--project ${project} \
--data-file password.tmp
rm password.tmp
# This creates a service account called ad-domaincontroller@PROJECT_NAME.iam.gserviceaccount.com
# (where PROJECT_NAME is the actual GCP project name) and sets the account name to the
# variable $dcServiceAccount.
dcServiceAccount=$(gcloud iam service-accounts create ad-domaincontroller \
--project ${project} \
--display-name "AD Domain Controller VM Service Account" \
--format "value(email)")
# Allow the new service account to temporarily read the Windows admin password from secret manager.
# The following `date` command might only work on MacOS. It prints the time like this: 2024-10-23T19:20:36Z
one_hour_from_now=$(TZ=UTC date -v "+1H" +"%Y-%m-%dT%H:%M:%SZ")
gcloud secrets add-iam-policy-binding active-directory-dc1-password \
--project ${project} \
"--member=serviceAccount:$dcServiceAccount" \
--role=roles/secretmanager.secretAccessor \
--condition="title=Expires after 1h,expression=request.time < timestamp('$one_hour_from_now')"
# Optional: list all bindings to see the binding that you just created.
gcloud secrets get-iam-policy active-directory-dc1-password \
--project ${project}
# Create a powershell startup script in a local file.
cat <<"EOF" > dc-startup.ps1
$ErrorActionPreference = "Stop"
#
# Only run the script if the VM is not a domain controller already.
#
if ((Get-CimInstance -ClassName Win32_OperatingSystem).ProductType -eq 2) {
exit
}
#
# Read configuration from metadata.
#
Import-Module "${Env:ProgramFiles}\Google\Compute Engine\sysprep\gce_base.psm1"
Write-Host "Reading metadata..."
$ActiveDirectoryDnsDomain = Get-MetaData -Property "attributes/ActiveDirectoryDnsDomain" -instance_only
$ActiveDirectoryNetbiosDomain = Get-MetaData -Property "attributes/ActiveDirectoryNetbiosDomain" -instance_only
$ProjectId = Get-MetaData -Property "project-id" -project_only
$AccessToken = (Get-MetaData -Property "service-accounts/default/token" | ConvertFrom-Json).access_token
#
# Read the DSRM password from secret manager.
#
Write-Host "Reading secret from secret manager..."
$Secret = (Invoke-RestMethod `
-Headers @{
"Metadata-Flavor" = "Google";
"x-goog-user-project" = $ProjectId;
"Authorization" = "Bearer $AccessToken"} `
-Uri "https://secretmanager.googleapis.com/v1/projects/$ProjectId/secrets/active-directory-dc1-password/versions/latest:access")
$DsrmPassword = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($Secret.payload.data))
$DsrmPassword = ConvertTo-SecureString -AsPlainText $DsrmPassword -force
#
# Promote.
#
Write-Host "Setting administrator password..."
Set-LocalUser -Name Administrator -Password $DsrmPassword
Write-Host "Creating a new forest $ActiveDirectoryDnsDomain ($ActiveDirectoryNetbiosDomain)..."
Install-ADDSForest `
-DomainName $ActiveDirectoryDnsDomain `
-DomainNetbiosName $ActiveDirectoryNetbiosDomain `
-SafeModeAdministratorPassword $DsrmPassword `
-DomainMode Win2008R2 `
-ForestMode Win2008R2 `
-InstallDns `
-CreateDnsDelegation:$False `
-NoRebootOnCompletion:$True `
-Confirm:$false
#
# Configure DNS.
#
Write-Host "Configuring DNS settings..."
Get-Netadapter| Disable-NetAdapterBinding -ComponentID ms_tcpip6
Set-DnsClientServerAddress `
-InterfaceIndex (Get-NetAdapter -Name Ethernet).InterfaceIndex `
-ServerAddresses 127.0.0.1
#
# Enable LSA protection.
#
New-ItemProperty `
-Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" `
-Name "RunAsPPL" `
-Value 1 `
-PropertyType DWord
Write-Host "Restarting to apply all settings..."
Restart-Computer
EOF
# Create a domain controller VM.
# E2 are the cheapest VMs. e2-medium has 2 vCPUs (shared with other customers) and 4 GB of memory.
# See https://cloud.google.com/compute/docs/general-purpose-machines#e2-shared-core.
# When we originally set up this VM, we actually started it as n2-standard-2 and after we
# finished setting up everything as shown in this guide, then we stopped the VM and changed its
# type to e2-medium and started the VM again. Maybe it would work fine to create it as
# e2-medium from the beginning, but note that we didn't actually test that.
gcloud compute instances create active-directory-dc1 \
--project ${project} \
--zone ${zone} \
--image-family windows-2022 \
--image-project windows-cloud \
--machine-type e2-medium \
--tags ad-domaincontroller \
--metadata "ActiveDirectoryDnsDomain=activedirectory.test.pinniped.dev,ActiveDirectoryNetbiosDomain=pinniped-ad,sysprep-specialize-script-ps1=Install-WindowsFeature AD-Domain-Services -IncludeManagementTools; Install-WindowsFeature DNS,disable-account-manager=true" \
--metadata-from-file windows-startup-script-ps1=dc-startup.ps1 \
--address ${addressOfDc1} \
--subnet=domain-controllers \
--service-account "$dcServiceAccount" \
--scopes cloud-platform \
--shielded-integrity-monitoring \
--shielded-secure-boot \
--shielded-vtpm
# Monitor the initialization process of the first domain controller by viewing its serial port output.
# It should install the sysprep stuff, reboot, run our startup script, and then reboot again.
gcloud compute instances tail-serial-port-output active-directory-dc1 \
--project ${project} \
--zone ${zone}
# Use CTRL-C to cancel tailing the output.
```
## Update DNS
Update the Cloud DNS entry for `activedirectory.test.pinniped.dev.` to be an "A" record pointing to the
public static IP of the VM. This is easier to do in the Cloud DNS UI in your browser.
It would take many gcloud CLI commands to accomplish the same task.
## Configure test users and groups
Make sure you have an RDP client installed. On a Mac, you can install RDP from the App Store.
It was recently renamed "Windows App".
Note: To copy/paste in the RDP client, you may need to use CTRL-C/CTRL-V if CMD-C/CMD-V don't work.
RDP into the Windows VM. To connect, use `activedirectory.test.pinniped.dev` as the name of the server,
the username `Administrator`, and the password from the `active-directory-dc1-password` entry in Secrets Manager.
You can ignore the RDP certificate error.
In your RDP session, open Powershell. Then run the following commands to add some users and groups,
change the password policy, and grant some permissions.
Before running the commands, replace the redacted passwords as follows:
- The value for `REDACTED_BIND_USER_PASSWORD` can be found at `aws-ad-bind-account-password` in the `concourse-secrets` secret
- The value for `REDACTED_PINNY_USER_PASSWORD` can be found at `aws-ad-user-password` in the `concourse-secrets` secret
- The value for `REDACTED_DEACTIVATED_USER_PASSWORD` can be found at `aws-ad-deactivated-user-password` in the `concourse-secrets` secret
```shell
New-ADOrganizationalUnit -Name "pinniped-ad" `
-ProtectedFromAccidentalDeletion $false
New-ADOrganizationalUnit -Name "Users" `
-Path "OU=pinniped-ad,DC=activedirectory,DC=test,DC=pinniped,DC=dev" `
-ProtectedFromAccidentalDeletion $false
New-ADOrganizationalUnit -Name "test-users" `
-Path "OU=Users,OU=pinniped-ad,DC=activedirectory,DC=test,DC=pinniped,DC=dev" `
-Description "integration tests will create and delete ephemeral users here" `
-ProtectedFromAccidentalDeletion $false
# Print all OUs to validate that they were created.
Get-ADOrganizationalUnit -Filter *
New-ADUser -Name "Bind User" -SamAccountName "bind-user" -GivenName "Bind" -Surname "User" -DisplayName "Bind User" `
-UserPrincipalName "bind-user@activedirectory.test.pinniped.dev" `
-Path "OU=Users,OU=pinniped-ad,DC=activedirectory,DC=test,DC=pinniped,DC=dev" `
-AccountPassword (ConvertTo-SecureString "REDACTED_BIND_USER_PASSWORD" -AsPlainText -Force) `
-Enabled $true -PasswordNeverExpires $true
# Note that the value of EmailAddress is not a real email address, but that's okay.
New-ADUser -Name "Pinny Seal" -SamAccountName "pinny" -GivenName "Pinny" -Surname "Seal" -DisplayName "Pinny Seal" `
-UserPrincipalName "pinny@activedirectory.test.pinniped.dev" `
-Path "OU=Users,OU=pinniped-ad,DC=activedirectory,DC=test,DC=pinniped,DC=dev" `
-EmailAddress "tanzu-user-authentication@groups.vmware.com" `
-AccountPassword (ConvertTo-SecureString "REDACTED_PINNY_USER_PASSWORD" -AsPlainText -Force) `
-Enabled $true -PasswordNeverExpires $true
New-ADUser -Name "Deactivated User" -SamAccountName "deactivated-user" -GivenName "Deactivated" -Surname "User" -DisplayName "Deactivated User" `
-UserPrincipalName "deactivated-user@activedirectory.test.pinniped.dev" `
-Path "OU=Users,OU=pinniped-ad,DC=activedirectory,DC=test,DC=pinniped,DC=dev" `
-AccountPassword (ConvertTo-SecureString "REDACTED_DEACTIVATED_USER_PASSWORD" -AsPlainText -Force) `
-Enabled $false -PasswordNeverExpires $true
# Take note of the pinny account's ObjectGUID. You will need to edit the concourse-secrets secret later to update this GUID value.
# This value should look something like "288188dd-ab76-4f61-b6e4-c72e081502c5".
Get-ADUser pinny -Properties * | Select SamaccountName,ObjectGUID
# Print all users to validate that they were created.
Get-ADUser -Filter *
New-ADGroup -Name "Marine Mammals" -SamAccountName "Marine Mammals" -DisplayName "Marine Mammals" `
-GroupCategory Security -GroupScope Global `
-Path "OU=Users,OU=pinniped-ad,DC=activedirectory,DC=test,DC=pinniped,DC=dev"
Add-ADGroupMember -Identity "Marine Mammals" -Members "pinny"
New-ADGroup -Name "Mammals" -SamAccountName "Mammals" -DisplayName "Mammals" `
-GroupCategory Security -GroupScope Global `
-Path "OU=Users,OU=pinniped-ad,DC=activedirectory,DC=test,DC=pinniped,DC=dev"
Add-ADGroupMember -Identity "Mammals" -Members "Marine Mammals"
# Change the default password policy. There are some integration tests that rely on this.
# This is the equivalent of doing this in the Windows "Active Directory Administrative Center" UI:
# check "enforce account lockout policy", give it 20 failed attempts and a 15-minute reset, then
# uncheck "enforce minimum password age" so we can change the password immediately upon creating a user.
Set-ADDefaultDomainPasswordPolicy -Identity "activedirectory.test.pinniped.dev" `
-LockoutThreshold 20 -LockoutDuration "00:15:00" -LockoutObservationWindow "00:15:00" `
-MinPasswordAge 0
# Print the policy to validate that it was updated.
Get-ADDefaultDomainPasswordPolicy
# We need to allow the bind-user to create/delete/edit users and groups within the test-users OU, because several
# integration tests want to crate/delete/edit ephemeral test users and groups.
# These access control steps were inspired by https://the-itguy.de/delegate-access-in-active-directory-with-powershell/.
# This is intended to be the equivalent of using the UI to assign permissions like this: right click on "test-users",
# select Delegate Control, select "bind-user" as the user, select "create, delete and manage user accounts" and
# "reset user passwords" as the tasks to delegate.
function New-ADDGuidMap
{
$rootdse = Get-ADRootDSE
$guidmap = @{ }
$GuidMapParams = @{
SearchBase = ($rootdse.SchemaNamingContext)
LDAPFilter = "(schemaidguid=*)"
Properties = ("lDAPDisplayName", "schemaIDGUID")
}
Get-ADObject @GuidMapParams | ForEach-Object { $guidmap[$_.lDAPDisplayName] = [System.GUID]$_.schemaIDGUID }
return $guidmap
}
$GuidMap = New-ADDGuidMap
$BindUserSID = New-Object System.Security.Principal.SecurityIdentifier (Get-ADUser "bind-user").SID
$acl = Get-Acl -Path "AD:OU=test-users,OU=Users,OU=pinniped-ad,DC=activedirectory,DC=test,DC=pinniped,DC=dev"
$ace1 = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $BindUserSID, "GenericAll", "Allow", "Descendents", $GuidMap["user"]
$ace2 = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $BindUserSID, "CreateChild, DeleteChild", "Allow", $GuidMap["user"], "All"
$ace3 = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $BindUserSID, "GenericAll", "Allow", "Descendents", $GuidMap["group"]
$ace4 = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $BindUserSID, "CreateChild, DeleteChild", "Allow", $GuidMap["group"], "All"
$acl.AddAccessRule($ace1)
$acl.AddAccessRule($ace2)
$acl.AddAccessRule($ace3)
$acl.AddAccessRule($ace4)
Set-Acl -Path "AD:OU=test-users,OU=Users,OU=pinniped-ad,DC=activedirectory,DC=test,DC=pinniped,DC=dev" -AclObject $acl
# Print the access control rules that were just applied.
$acl = Get-Acl -Path "AD:OU=test-users,OU=Users,OU=pinniped-ad,DC=activedirectory,DC=test,DC=pinniped,DC=dev"
$acl.Access | Where-Object { $_.IdentityReference -eq "pinniped-ad\bind-user" }
```
If you would like to see these OUs, users, and groups in the UI, you can open the "Active Directory Users and Computers"
app in your RDP session.
## Configure a CA and a serving certificate for LDAPS
Now we need to create and configure a TLS serving certificate for LDAPS.
The certificate needs to include two hostnames. One of the hostnames is the name that the AD server
thinks is its own hostname (`active-directory-dc1.activedirectory.test.pinniped.dev`).
This is how the AD server will decide to use this cert for the LDAPS port.
The other hostname is the one that clients will use when making connections from the outside
(`activedirectory.test.pinniped.dev`) so they can validate the server certificate.
The steps here were inspired by https://gist.github.com/magnetikonline/0ccdabfec58eb1929c997d22e7341e45.
On your mac:
```shell
# On your Mac: Create a self-signed CA public/private keypair.
openssl req -x509 -newkey rsa:4096 \
-keyout ad-ca.key -out ad-ca.crt \
-sha256 -days 36500 -nodes \
-subj "/C=US/ST=California/L=San Francisco/O=Pinniped/OU=Pinniped CI/CN=Pinniped AD CA"
# Copy the public key to your clipboard.
cat ad-ca.crt| pbcopy
```
In Powershell terminal:
```shell
# In your Windows RDP session's Powershell terminal, put the content of the clipboard into a file.
# Note that if you copy/paste this command to your RDP session, then you need to pbcopy the public
# key again before you hit return for this command.
Get-Clipboard | Out-File -FilePath "C:\users\administrator\desktop\ca.crt"
# In Powershell terminal, check that the file exists and looks correct.
type "C:\users\administrator\desktop\ca.crt"
# Import root certificate into trusted store of domain controller in your Powershell terminal:
Import-Certificate -FilePath "C:\users\administrator\desktop\ca.crt" -CertStoreLocation Cert:\LocalMachine\Root
```
If you want to validate that this was imported, open the UI tool called "Manage computer certificates"
and look in the folder called "Trusted Root Certification Authorities\Certificates".
If the UI was already open, click the refresh button.
Copy the following file contents to your clipboard:
```shell
[Version]
Signature="$Windows NT$"
[NewRequest]
Subject = "CN=activedirectory.test.pinniped.dev"
KeySpec = 1
KeyLength = 2048
Exportable = TRUE
MachineKeySet = TRUE
SMIME = FALSE
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = PKCS10
KeyUsage = 0xa0
[EnhancedKeyUsageExtension]
OID = 1.3.6.1.5.5.7.3.1 ; Server Authentication
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=activedirectory.test.pinniped.dev"
_continue_ = "DNS=active-directory-dc1.activedirectory.test.pinniped.dev"
```
In Powershell terminal:
```shell
# In your Windows RDP session's Powershell terminal, put the content of the clipboard into a file.
# Note that if you copy/paste this command to your RDP session, then you need to copy the file contents
# from above again before you hit return for this command.
Get-Clipboard | Out-File -FilePath "C:\users\administrator\desktop\request.inf"
# In Powershell terminal, check that the file exists and looks correct.
type "C:\users\administrator\desktop\request.inf"
# Create a CSR. This command will also generate a private key for the AD server and save it.
certreq -new "C:\users\administrator\desktop\request.inf" "C:\users\administrator\desktop\client.csr"
# Show the CSR.
type "C:\users\administrator\desktop\client.csr"
# Copy the content of this file to your clipboard.
Get-Content "C:\users\administrator\desktop\client.csr" | Set-Clipboard
```
On your mac:
```shell
# On your Mac, use the CA to issue a serving cert based on the CSR.
pbpaste > client.csr
cat <<EOF > v3ext.txt
keyUsage=digitalSignature,keyEncipherment
extendedKeyUsage=serverAuth
subjectKeyIdentifier=hash
subjectAltName = @alt_names
[alt_names]
DNS.1 = activedirectory.test.pinniped.dev
DNS.2 = active-directory-dc1.activedirectory.test.pinniped.dev
EOF
# Create a cert from the CSR signed by the CA.
openssl x509 \
-req -days 36500 \
-in client.csr -CA ad-ca.crt -CAkey ad-ca.key -extfile v3ext.txt \
-set_serial 01 -out client.crt
# Inspect the generated certificate.
# Ensure the following X509v3 extensions are all present:
# Key Usage: Digital Signature, Key Encipherment
# Extended Key Usage: TLS Web Server Authentication
# Subject Key Identifier
# Subject Alternative Name with 2 DNS hostnames
# Authority Key Identifier
openssl x509 -in client.crt -text
# Copy the generated cert.
cat client.crt | pbcopy
```
In Powershell terminal:
```shell
# In your Windows RDP session's Powershell terminal, put the content of the clipboard into a file.
# Note that if you copy/paste this command to your RDP session, then you need to pbcopy the file contents
# from above again before you hit return for this command.
Get-Clipboard | Out-File -FilePath "C:\users\administrator\desktop\client.crt"
# In Powershell terminal, check that the file exists and looks correct.
type "C:\users\administrator\desktop\client.crt"
# Add the serving certificate to Windows. This will also automatically associate it to the private key that you
# generated with the previous usage of certreq.
certreq -accept "C:\users\administrator\desktop\client.crt"
# If you want to validate that this was imported, open the UI tool called "Manage computer certificates"
# and look in the folder called "Personal\Certificates". If the UI was already open, click the refresh button.
# Double click on the cert. Ensure that it says, "you have a private key that corresponds to this certificate".
# Next, we need to reboot the VM for the cert to get picked up and used for serving incoming LDAPS connections.
# After showing you a warning dialog box, this should terminate your RDP session and stop the VM.
shutdown /s
```
Wait for the VM to stop, then start the VM again from your Mac:
```shell
gcloud compute instances start active-directory-dc1 --project ${project} --zone ${zone}
```
Wait for the VM to finish booting. Then we can confirm that LDAPS is working. On your Mac:
```shell
# Check that serving cert is being returned on the LDAPS port. This command should show the cert chain.
# It should also verify the server cert using our CA. The output should include "Verify return code: 0 (ok)".
openssl s_client -connect activedirectory.test.pinniped.dev:636 -showcerts -CAfile ad-ca.crt < /dev/null
# Unfortunately, the ldapsearch command that comes pre-installed on MacOS does not seem to respect
# the LDAPTLS_CACERT env variable. So it will not be able to validate the server certificates.
# As a workaround, we can use docker to run ldapsearch commands in a linux container.
# Test the regular LDAP port by issuing a query on your Mac. The -ZZ option asks it to use StartTLS.
# This should list all users. Replace REDACTED_BIND_USER_PASSWORD with the real password.
docker run -v "$(pwd):/certs" -e LDAPTLS_CACERT="/certs/ad-ca.crt" --rm -it bitnami/openldap \
ldapsearch -d8 -v -x -ZZ -H 'ldap://activedirectory.test.pinniped.dev' \
-D 'CN=Bind User,OU=Users,OU=pinniped-ad,DC=activedirectory,DC=test,DC=pinniped,DC=dev' \
-w 'REDACTED_BIND_USER_PASSWORD' \
-b 'OU=pinniped-ad,DC=activedirectory,DC=test,DC=pinniped,DC=dev' \
-s sub \
'(objectClass=user)' '*'
# Test the LDAPS port by issuing a query on your Mac. This should list all users.
# Replace REDACTED_BIND_USER_PASSWORD with the real password.
docker run -v "$(pwd):/certs" -e LDAPTLS_CACERT="/certs/ad-ca.crt" --rm -it bitnami/openldap \
ldapsearch -d8 -v -x -H 'ldaps://activedirectory.test.pinniped.dev' \
-D 'CN=Bind User,OU=Users,OU=pinniped-ad,DC=activedirectory,DC=test,DC=pinniped,DC=dev' \
-w 'REDACTED_BIND_USER_PASSWORD' \
-b 'OU=pinniped-ad,DC=activedirectory,DC=test,DC=pinniped,DC=dev' \
-s sub \
'(objectClass=user)' '*'
```
## Update the `concourse-secrets` secret in GCP Secrets Manager
On your Mac:
```shell
# Copy the CA's public cert.
cat ad-ca.crt | base64 | pbcopy
# cd to your local clone of the `ci` branch of the pinniped repo
cd pinniped-ci-branch
# Edit the secret.
./hack/edit-gcloud-secret.sh concourse-secret
# This opens vim to edit the secret.
# Paste the cert as the value for `aws-ad-ca-data`.
# Also edit the the value of `aws-ad-user-unique-id-attribute-value`. The value should be the ObjectGUID of the pinny
# user that you created in the steps above.
# Save your changes, exit vim, and when prompted say that you want to save this as the new version of concourse-secrets.
```
## Confirm that Active Directory integration tests can pass
Use these commands run all the Active Directory integration tests on your Mac.
The `-run` filter is based on the tests as they existed at the time of writing this doc.
You can find AD tests by searching for `SkipTestWhenActiveDirectoryIsUnavailable`.
On your Mac:
```shell
# Login so we can read the secrets from GCP Secret Manager.
gcloud auth login
# cd to your local git clone
cd pinniped
# Compile and install onto a local kind cluster.
./hack/prepare-for-integration-tests.sh -c --get-active-directory-vars "../pinniped-ci-branch/hack/get-aws-ad-env-vars.sh"
# Run all the tests that depend on AD.
source /tmp/integration-test-env && go test -v -race -count 1 -timeout 0 ./test/integration \
-run "/TestSupervisorLogin_Browser/active_directory|/TestE2EFullIntegration_Browser/with_Supervisor_ActiveDirectory|/TestActiveDirectoryIDPPhaseAndConditions_Parallel|/TestSupervisorWarnings_Browser/Active_Directory"
```
## Cleanup
On your Mac:
```shell
# Remove all bindings for the service account from the secret.
# The binding was only needed during the first boot of the VM.
gcloud secrets remove-iam-policy-binding active-directory-dc1-password \
--project ${project} \
--member "serviceAccount:${dcServiceAccount}" --role roles/secretmanager.secretAccessor \
--all
# Remove the firewall rule which allows incoming RDP connections.
# If you need to RDP to this AD VM in the future, then you will need to create
# a new firewall rule to allow it.
gcloud compute firewall-rules delete allow-rdp-ingress-to-addc \
--project ${project} \
--quiet
# Remove all temp files. It's okay to remove the private key for our CA because we
# created certs that are good for 100 years, as long as you have already added the
# public cert to the concourse-secrets secret. If we need to create a new AD VM, we
# can also create a new CA.
rm ad-ca.crt ad-ca.key client.crt client.csr v3ext.txt
```

View File

@@ -1,34 +0,0 @@
# Pinniped Adopters
If you're using Pinniped and want to add your organization to this
list, [follow these directions](#adding-your-organization-to-the-list-of-adopters)!
## Organizations using Pinniped
<a href="https://tanzu.vmware.com/tanzu" border="0" target="_blank"><img alt="vmware-tanzu" src="site/themes/pinniped/static/img/vmware-tanzu.svg" height="50"></a>
<a href="https://kubeapps.com/" border="0" target="_blank"><img alt="kubeapps" src="site/themes/pinniped/static/img/kubeapps.svg" height="50"></a>
<a href="https://www.ok.dk/" border="0" target="_blank"><img alt="ok-amba" src="site/themes/pinniped/static/img/ok-amba.svg" height="50"></a>
## Solutions built with Pinniped
Below is a list of solutions where Pinniped is being used as a component.
**[Kubeapps](https://kubeapps.com/)**
Kubeapps uses Pinniped to [enable SSO authentication](https://github.com/kubeapps/kubeapps/blob/master/docs/user/using-an-OIDC-provider-with-pinniped.md) when running on clusters where SSO cannot be configured for the cluster API server.
**[VMware Tanzu Kubernetes Grid (TKG)](https://tanzu.vmware.com/kubernetes-grid)**
TKG uses Pinniped to provide a seamless SSO experience across management and workload clusters.
**[VMware Tanzu Mission Control (TMC)](https://tanzu.vmware.com/mission-control)**
TMC uses Pinniped to provide a uniform authentication experience across all attached clusters.
## Adding your organization to the list of adopters
If you are using Pinniped and would like to be included in the list of Pinniped Adopters, add an SVG version of your logo that is less than 150 KB to
the [img directory](https://github.com/vmware-tanzu/pinniped/tree/main/site/themes/pinniped/static/img) in this repo and submit a pull request with your change including 1-2 sentences describing how your organization is using Pinniped. Name the image file something that
reflects your company (e.g., if your company is called Acme, name the image acme.svg). Please feel free to send us a message in [#pinniped](https://kubernetes.slack.com/archives/C01BW364RJA) with any questions you may have.

View File

@@ -1,84 +1 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at [oss-coc@vmware.com](mailto:oss-coc@vmware.com). All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series of actions.
**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0,
available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.
Please see https://github.com/vmware/pinniped/blob/main/CODE_OF_CONDUCT.md

View File

@@ -1,154 +1 @@
# Contributing to Pinniped
Contributions to Pinniped are welcome. Here are some things to help you get started.
## Code of Conduct
Please see the [Code of Conduct](./CODE_OF_CONDUCT.md).
## Project Scope
See [SCOPE.md](./SCOPE.md) for some guidelines about what we consider in and out of scope for Pinniped.
## Community Meetings
Pinniped is better because of our contributors and maintainers. It is because of you that we can bring great software to the community. Please join us during our online community meetings, occuring every first and third Thursday of the month at 9AM PT / 12PM ET. Use [this Zoom Link](https://vmware.zoom.us/j/93798188973?pwd=T3pIMWxReEQvcWljNm1admRoZTFSZz09) to attend and add any agenda items you wish to discuss to [the notes document](https://hackmd.io/rd_kVJhjQfOvfAWzK8A3tQ?view). Join our [Google Group](https://groups.google.com/u/1/g/project-pinniped) to receive invites to this meeting.
If the meeting day falls on a US holiday, please consider that occurrence of the meeting to be canceled.
## Discussion
Got a question, comment, or idea? Please don't hesitate to reach out via the GitHub [Discussions](https://github.com/vmware-tanzu/pinniped/discussions) tab at the top of this page or reach out in Kubernetes Slack Workspace within the [#pinniped channel](https://kubernetes.slack.com/archives/C01BW364RJA).
## Issues
Need an idea for a project to get started contributing? Take a look at the open
[issues](https://github.com/vmware-tanzu/pinniped/issues).
Also check to see if any open issues are labeled with
["good first issue"](https://github.com/vmware-tanzu/pinniped/labels/good%20first%20issue)
or ["help wanted"](https://github.com/vmware-tanzu/pinniped/labels/help%20wanted).
### Bugs
To file a bug report, please first open an
[issue](https://github.com/vmware-tanzu/pinniped/issues/new?template=bug_report.md). The project team
will work with you on your bug report.
Once the bug has been validated, a [pull request](https://github.com/vmware-tanzu/pinniped/compare)
can be opened to fix the bug.
For specifics on what to include in your bug report, please follow the
guidelines in the issue and pull request templates.
### Features
To suggest a feature, please first open an
[issue](https://github.com/vmware-tanzu/pinniped/issues/new?template=feature-proposal.md)
and tag it with `proposal`, or create a new [Discussion](https://github.com/vmware-tanzu/pinniped/discussions).
The project team will work with you on your feature request.
Once the feature request has been validated, a [pull request](https://github.com/vmware-tanzu/pinniped/compare)
can be opened to implement the feature.
For specifics on what to include in your feature request, please follow the
guidelines in the issue and pull request templates.
## CLA
We welcome contributions from everyone but we can only accept them if you sign
our Contributor License Agreement (CLA). If you would like to contribute and you
have not signed it, our CLA-bot will walk you through the process when you open
a Pull Request. For questions about the CLA process, see the
[FAQ](https://cla.vmware.com/faq) or submit a question through the GitHub issue
tracker.
## Building
The [Dockerfile](Dockerfile) at the root of the repo can be used to build and
package the code. After making a change to the code, rebuild the docker image with the following command.
```bash
# From the root directory of the repo...
docker build .
```
## Testing
### Running Lint
```bash
./hack/module.sh lint
```
### Running Unit Tests
```bash
./hack/module.sh units
```
### Running Integration Tests
1. Install dependencies:
- [`chromedriver`](https://chromedriver.chromium.org/) (and [Chrome](https://www.google.com/chrome/))
- [`docker`](https://www.docker.com/)
- `htpasswd` (installed by default on MacOS, usually found in `apache2-utils` package for linux)
- [`kapp`](https://carvel.dev/#getting-started)
- [`kind`](https://kind.sigs.k8s.io/docs/user/quick-start)
- [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
- [`ytt`](https://carvel.dev/#getting-started)
On macOS, these tools can be installed with [Homebrew](https://brew.sh/) (assuming you have Chrome installed already):
```bash
brew install kind k14s/tap/ytt k14s/tap/kapp kubectl chromedriver && brew cask install docker
```
1. Create a kind cluster, compile, create container images, and install Pinniped and supporting dependencies using:
```bash
./hack/prepare-for-integration-tests.sh
```
1. Run the Pinniped integration tests:
```bash
source /tmp/integration-test-env && go test -v -count 1 -timeout 0 ./test/integration
```
1. After making production code changes, recompile, redeploy, and run tests again by repeating the same
commands described above. If there are only test code changes, then simply run the tests again.
To destroy the local Kubernetes cluster, run `./hack/kind-down.sh`.
### Observing Tests on the Continuous Integration Environment
[CI](https://hush-house.pivotal.io/teams/tanzu-user-auth/pipelines/pinniped-pull-requests)
will not be triggered on a pull request until the pull request is reviewed and
approved for CI by a project [maintainer](MAINTAINERS.md). Once CI is triggered,
the progress and results will appear on the Github page for that
[pull request](https://github.com/vmware-tanzu/pinniped/pulls) as checks. Links
will appear to view the details of each check.
## Documentation
Any pull request which adds a new feature or changes the behavior of any feature which was previously documented
should include updates to the documentation. All documentation lives in this repository. This project aspires to
follow the Kubernetes [documentation style guide](https://kubernetes.io/docs/contribute/style/style-guide).
## Pre-commit Hooks
This project uses [pre-commit](https://pre-commit.com/) to agree on some conventions about whitespace/file encoding.
```bash
$ brew install pre-commit
[...]
$ pre-commit install
pre-commit installed at .git/hooks/pre-commit
```
## Becoming a Pinniped Maintainer
Regular contributors who are active in the Pinniped community and who have contributed at least several
significant pull requests may be considered for promotion to become a maintainer upon request. Please
contact an existing [maintainer](MAINTAINERS.md) if you would like to be considered.
Please see https://github.com/vmware/pinniped/blob/main/CONTRIBUTING.md

View File

@@ -1,47 +0,0 @@
# syntax = docker/dockerfile:1.0-experimental
# Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
FROM golang:1.16.5 as build-env
WORKDIR /work
COPY . .
ARG GOPROXY
# Build the executable binary (CGO_ENABLED=0 means static linking)
# Pass in GOCACHE (build cache) and GOMODCACHE (module cache) so they
# can be re-used between image builds.
RUN \
--mount=type=cache,target=/cache/gocache \
--mount=type=cache,target=/cache/gomodcache \
mkdir out && \
GOCACHE=/cache/gocache \
GOMODCACHE=/cache/gomodcache \
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64 \
go build -v -ldflags "$(hack/get-ldflags.sh)" -o out \
./cmd/pinniped-concierge/... \
./cmd/pinniped-supervisor/... \
./cmd/local-user-authenticator/...
# Use a Debian slim image to grab a reasonable default CA bundle.
FROM debian:10.9-slim AS get-ca-bundle-env
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates && rm -rf /var/lib/apt/lists/* /var/cache/debconf/*
# Use a runtime image based on Debian slim.
FROM debian:10.9-slim
COPY --from=get-ca-bundle-env /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
# Copy the binaries from the build-env stage.
COPY --from=build-env /work/out/ /usr/local/bin/
# Document the ports
EXPOSE 8080 8443
# Run as non-root for security posture
USER 1001:1001
# Set the entrypoint
ENTRYPOINT ["/usr/local/bin/pinniped-concierge"]

View File

@@ -1,19 +1 @@
# Pinniped Maintainers
This is the current list of maintainers for the Pinniped project.
| Maintainer | GitHub ID | Affiliation |
| --------------- | --------- | ----------- |
| Andrew Keesler | [ankeesler](https://github.com/ankeesler) | [VMware](https://www.github.com/vmware/) |
| Margo Crawford | [margocrawf](https://github.com/margocrawf) | [VMware](https://www.github.com/vmware/) |
| Matt Moyer | [mattmoyer](https://github.com/mattmoyer) | [VMware](https://www.github.com/vmware/) |
| Mo Khan | [enj](https://github.com/enj) | [VMware](https://www.github.com/vmware/) |
| Pablo Schuhmacher | [pabloschuhmacher](https://github.com/pabloschuhmacher) | [VMware](https://www.github.com/vmware/) |
| Ryan Richard | [cfryanr](https://github.com/cfryanr) | [VMware](https://www.github.com/vmware/) |
## Pinniped Contributors & Stakeholders
| Feature Area | Lead |
| ----------------------------- | :---------------------: |
| Technical Lead | Matt Moyer (mattmoyer) |
| Product Management | Pablo Schuhmacher (pabloschuhmacher) |
Please see https://github.com/vmware/pinniped/blob/main/MAINTAINERS.md

261
README.md
View File

@@ -1,70 +1,219 @@
<img src="site/content/docs/img/pinniped_logo.svg" alt="Pinniped Logo" width="100%"/>
# Pinniped's `ci` branch
## Overview
This `ci` branch contains the CI/CD tooling for [Pinniped](https://github.com/vmware/pinniped).
Pinniped provides identity services to Kubernetes.
The documentation and code in this branch is mainly intended for the maintainers of Pinniped.
Pinniped allows cluster administrators to easily plug in external identity
providers (IDPs) into Kubernetes clusters. This is achieved via a uniform
install procedure across all types and origins of Kubernetes clusters,
declarative configuration via Kubernetes APIs, enterprise-grade integrations
with IDPs, and distribution-specific integration strategies.
This branch is not intended to be merged to the `main` branch.
### Example use cases
The code in the branch previously lived in a private repository. It was made public by moving
the code into the `ci` branch of the Pinniped repository in late 2024. The previous git history
for these files was not copied from the private repository at the time of this migration.
* Your team uses a large enterprise IDP, and has many clusters that they
manage. Pinniped provides:
* Seamless and robust integration with the IDP
* Easy installation across clusters of any type and origin
* A simplified login flow across all clusters
* Your team shares a single cluster. Pinniped provides:
* Simple configuration to integrate an IDP
* Individual, revocable identities
## Reporting an issue in this branch
### Architecture
The Pinniped Supervisor component offers identity federation to enable a user to
access multiple clusters with a single daily login to their external IDP. The
Pinniped Supervisor supports various external [IDP
types](https://github.com/vmware-tanzu/pinniped/tree/main/generated/1.20#k8s-api-idp-supervisor-pinniped-dev-v1alpha1).
The Pinniped Concierge component offers credential exchange to enable a user to
exchange an external credential for a short-lived, cluster-specific
credential. Pinniped supports various [authentication
methods](https://github.com/vmware-tanzu/pinniped/tree/main/generated/1.20#authenticationconciergepinnipeddevv1alpha1)
and implements different integration strategies for various Kubernetes
distributions to make authentication possible.
The Pinniped Concierge can be configured to hook into the Pinniped Supervisor's
federated credentials, or it can authenticate users directly via external IDP
credentials.
To learn more, see [architecture](https://pinniped.dev/docs/background/architecture/).
## Getting started with Pinniped
Care to kick the tires? It's easy to [install and try Pinniped](https://pinniped.dev/docs/).
## Community meetings
Pinniped is better because of our contributors and maintainers. It is because of you that we can bring great software to the community. Please join us during our online community meetings, occurring every first and third Thursday of the month at 9 AM PT / 12 PM PT. Use [this Zoom Link](https://vmware.zoom.us/j/93798188973?pwd=T3pIMWxReEQvcWljNm1admRoZTFSZz09) to attend and add any agenda items you wish to discuss to [the notes document](https://hackmd.io/rd_kVJhjQfOvfAWzK8A3tQ?view). Join our [Google Group](https://groups.google.com/g/project-pinniped) to receive invites to this meeting.
If the meeting day falls on a US holiday, please consider that occurrence of the meeting to be canceled.
## Discussion
Got a question, comment, or idea? Please don't hesitate to reach out via the GitHub [Discussions](https://github.com/vmware-tanzu/pinniped/discussions) tab at the top of this page or reach out in Kubernetes Slack Workspace within the [#pinniped channel](https://kubernetes.slack.com/archives/C01BW364RJA).
## Contributions
Contributions are welcome. Before contributing, please see the [contributing guide](CONTRIBUTING.md).
Found a bug or would like to make an enhancement request?
Please report issues in [this repo](https://github.com/vmware/pinniped).
## Reporting security vulnerabilities
Please follow the procedure described in [SECURITY.md](SECURITY.md).
Please follow the procedure described in [SECURITY.md](https://github.com/vmware/pinniped/blob/main/SECURITY.md).
## Creating a release
When the team is preparing to ship a release, a maintainer will create a new
GitHub [Issue](https://github.com/vmware/pinniped/issues/new/choose) in this repo to
collaboratively track progress on the release checklist. As tasks are completed,
the team will check them off. When all the tasks are completed, the issue is closed.
The release checklist is committed to this repo as an [issue template](https://github.com/vmware/pinniped/tree/main/.github/ISSUE_TEMPLATE/release_checklist.md).
## Pipelines
Pinniped uses [Concourse](https://concourse-ci.org) for CI/CD.
We are currently running our Concourse on a network that can only be reached from inside the corporate network at [ci.pinniped.broadcom.net](https://ci.pinniped.broadcom.net).
The following pipelines are implemented in this branch. Not all pipelines are necessarily publicly visible, although our goal is to make them all visible.
- `main`
This is the main pipeline that runs on merges to `main`. It builds, tests, and (when manually triggered) releases from main.
- `pull-requests`
This is a pipeline that triggers for each open pull request. It runs a smaller subset of the integration tests and validations as `pinniped`.
- `dockerfile-builders`
This pipeline builds a bunch of custom utility container images that are used in our CI and testing.
- `build-gi-cli` (a container image that includes the GitHub CLI)
- `build-github-pr-resource` (a [fork](https://github.com/pinniped-ci-bot/github-pr-resource) of the `github-pr-resource` with support for gating PRs for untrusted users)
- `build-code-coverage-uploader` (uploading code coverage during unit tests)
- `build-eks-deployer-dockerfile` (deploying our app to EKS clusters)
- `build-k8s-app-deployer-dockerfile` (deploying our app to clusters)
- `build-pool-trigger-resource-dockerfile` (an updated implementation of the [pool-trigger-resource](https://github.com/cfmobile/pool-trigger-resource) for use in our CI)
- `build-integration-test-runner-dockerfile` (running our integration tests)
- `build-integration-test-runner-beta-dockerfile` (running our integration tests with the latest Chrome beta version)
- `build-deployment-yaml-formatter-dockerfile` (templating our deployment YAML during a release)
- `build-crane` (copy and tag container images during release)
- `build-k8s-code-generator-*` (running our Kubernetes code generation under different Kubernetes dependency versions)
- `build-test-dex` (a Dex used during tests)
- `build-test-cfssl` (a cfssl used during tests)
- `build-test-kubectl` (a kubectl used during tests)
- `build-test-forward-proxy` (a Squid forward proxy used during tests)
- `build-test-bitnami-ldap` (an OpenLDAP used during tests)
- `cleanup-aws`
This runs a script that runs [aws-nuke](https://github.com/rebuy-de/aws-nuke) against our test AWS account.
This was occasionally needed because [eksctl](https://eksctl.io/) sometimes fails and leaks AWS resources. These resources cost money and use up our AWS quota.
However, we seem to have worked around these issues and this pipeline has not been used for some time.
These jobs are only triggered manually. This is dangerous and should be used with care.
- `concourse-workers`
Deploys worker replicas on a long-lived GKE cluster that runs the Concourse workers, and can scale them up or down.
- `go-compatibility`
This pipeline runs nightly jobs that validate the compatibility of our code as a Go module in various contexts. We have jobs that test that our code compiles under older Go versions and that our CLI can be installed using `go install`.
- `security-scan`
This pipeline has nightly jobs that run security scans on our current main branch and most recently released artifacts.
The tools we use are:
- [sonatype-nexus-community/nancy](https://github.com/sonatype-nexus-community/nancy), which scans Go module versions.
- [aquasecurity/trivy](https://github.com/aquasecurity/trivy), which scans container images and Go binaries.
- [govulncheck](https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck), which scans Go code to find calls to known-vulnerable dependencies.
This pipeline also has a job called `all-golang-deps-updated` which automatically submits PRs to update all
direct dependencies in Pinniped's go.mod file, and update the Golang and distroless container images used in
Pinniped's Dockerfiles.
- `kind-node-builder`
A nightly build job which uses the latest version of kind to build the HEAD of master of Kubernetes as a container
image that can be used to deploy kind clusters. Other pipelines use this container image to install Pinniped and run
integration tests. This gives us insight in any compatibility problems with the upcoming next release of Kubernetes.
## Deploying pipeline changes
After any shared tasks (`./pipelines/shared-tasks`) or helpers (`./pipelines/shared-helpers`) are edited,
the commits must be pushed to the `ci` branch of this repository to take effect.
After editing any CI secrets or pipeline definitions, a maintainer must run the corresponding
`./pipelines/$PIPELINE_NAME/update-pipeline.sh` script to apply the changes to Concourse.
To deploy _all_ pipelines, a maintainer can run `./pipelines/update-all-pipelines.sh`.
Don't forget to commit and push your changes after applying them!
## Github webhooks for pipelines
Some pipelines use github [webhooks to trigger resource checks](https://concourse-ci.org/resources.html#schema.resource.webhook_token),
rather than the default of polling every minute, to make these pipelines more responsive and use fewer compute resources
for running checks. Refer to places where `webhook_token` is configured in various `pipeline.yml` files.
To make these webhooks work, they must be defined on the [GitHub repo's settings](https://github.com/vmware/pinniped/settings/hooks).
## Installing and operating Concourse
See [infra/README.md](./infra/README.md) for details about how Concourse was installed and how it can be operated.
## Acceptance environments
In addition to the many ephemeral Kubernetes clusters we use for testing, we also deploy a long-running acceptance environment.
Google Kubernetes Engine (GKE) in the `gke-acceptance-cluster` cluster in our GCP project in the `us-west1-c` availability zone.
To access this cluster, download the kubeconfig to `gke-acceptance.yaml` by running:
```cmd
KUBECONFIG=gke-acceptance.yaml gcloud container clusters get-credentials gke-acceptance-cluster --project "$PINNIPED_GCP_PROJECT" --zone us-west1-c
```
The above command assumes that you have already set `PINNIPED_GCP_PROJECT` to be the name of the GCP project.
## CI secrets
We use [Google Secret Manager](https://cloud.google.com/secret-manager) on GCP to store build/test/release secrets.
These secrets are only available to the maintainers.
Using the `gcloud secrets list` command or the [web console](https://console.cloud.google.com/security/secret-manager),
you can list the available secrets. The content of each secret is a YAML file with secret key/value pairs.
You can also use the `./hack/edit-gcloud-secret.sh <secretName>` script to edit or inspect each secret.
## Configure Azure for CI to test on AKS
There are several CI jobs which test that Pinniped works when installed on Azure's AKS.
For these jobs to run, they need to be able to create and delete ephemeral AKS clusters.
This requires the following:
1. An active Azure Subscription. (A "subscription" in Azure is the equivalent of an "account" in AWS or a "project" in GCP.)
2. An Azure App Registration (basically, a service account) active in the same Directory (aka tenant) as the Subscription.
Create the app in "My Organization Only". It does not need a redirect URI or any other optional settings.
Create a client secret for this app. If you want the client secret to have a long lifetime, you can use the `az` CLI to create it.
In the Subscription's IAM settings, assign this app the role "Azure Kubernetes Service Contributor Role" to allow
the app to manage AKS clusters. Also assign this app the role "Reader" to allow it to read all resources
(used by the `remove-orphaned-aks-clusters` CI task).
Do not grant this app permissions in any other Subscription or use it for any other purpose.
3. Configure the pipelines with the app's Application (client) ID, Client Secret, and Directory (tenant) ID
as the appropriate secret values.
The CI jobs will create and delete AKS clusters in a Resource Group called `pinniped-ci` within the provided Subscription.
## Configure AWS for CI to test on EKS
There are several CI jobs which test that Pinniped works when installed on Amazon's EKS.
For these jobs to run, they need to be able to create and delete ephemeral EKS clusters.
There are also some jobs to cleanup any orphaned resources (e.g. IP addresses) in the AWS account.
These jobs requires the following:
1. An active AWS account, which will only be used for this purpose.
2. Two IAM users in that account, each with a role that can be assumed.
These IAM users which should only be used for Pinniped CI and no other purpose.
They should only have permissions to perform AWS actions in the relevant AWS account, and no other account.
3. The first user and role should have permission to create and delete EKS clusters using `eksctl`.
The permissions required can be found in the [eksctl docs](https://eksctl.io/usage/minimum-iam-policies).
The user also needs permission to run `aws logs put-retention-policy`, `aws ec2 describe-nat-gateways`,
and `aws ec2 delete-nat-gateway`.
4. The second user and role should have broad permissions to get and delete everything in the account.
It will be used to run `aws-nuke` to list and/or clean resources from the AWS account.
To use `aws-nuke`, the user also needs to have an AWS account alias
(see the [cleanup-aws task](pipelines/shared-tasks/cleanup-aws/task.sh) for details).
## Setting Up Active Directory Test Environment
To test the `ActiveDirectoryIdentityProvider` functionality, we have a long-running Active Directory Domain Controller
server instance in our GCP account. See [AD-SETUP.md](AD-SETUP.md) for details.
## Running integration tests on your laptop using AD
The relevant environment variables can be pulled from the secret manager via the `hack/get-active-directory-env-vars.sh` script.
This can be used by maintainers with Pinniped's `/hack/prepare-for-integration-tests.sh` script in the following way:
```bash
# Must authenticate to glcoud to access the secret manager.
gcloud auth login
# In the pinniped repo's main branch or in your PR branch:
hack/prepare-for-integration-tests.sh --get-active-directory-vars "$HOME/path/to/pinniped-ci-branch/hack/get-active-directory-env-vars.sh"
```
## Running integration tests on your laptop using GitHub
The relevant environment variables can be pulled from the secret manager via the `hack/get-github-env-vars.sh` script.
This can be used by maintainers with Pinniped's `/hack/prepare-for-integration-tests.sh` script in the following way:
```bash
# Must authenticate to glcoud to access the secret manager.
gcloud auth login
# In the pinniped repo's main branch or in your PR branch:
hack/prepare-for-integration-tests.sh --get-github-vars "$HOME/path/to/pinniped-ci-branch/hack/get-github-env-vars.sh"
```
## License
Pinniped is open source and licensed under Apache License Version 2.0. See [LICENSE](LICENSE).
Copyright 2020 the Pinniped contributors. All Rights Reserved.
Copyright 2020-2025 the Pinniped contributors. All Rights Reserved.

View File

@@ -1,50 +0,0 @@
## **Pinniped Project Roadmap**
###
**About this document**
This document provides a link to the[ Pinniped Project issues](https://github.com/vmware-tanzu/pinniped/issues) list that serves as the up to date description of items that are in the Pinniped release pipeline. Most items are gathered from the community or include a feedback loop with the community. This should serve as a reference point for Pinniped users and contributors to understand where the project is heading, and help determine if a contribution could be conflicting with a longer term plan.
###
**How to help?**
Discussion on the roadmap can take place in threads under [Issues](https://github.com/vmware-tanzu/pinniped/issues) or in [community meetings](https://github.com/vmware-tanzu/pinniped/blob/main/CONTRIBUTING.md#meeting-with-the-maintainers). Please open and comment on an issue if you want to provide suggestions and feedback to an item in the roadmap. Please review the roadmap to avoid potential duplicated effort.
###
**Need an idea for a contribution?**
Weve created an [Opportunity Areas](https://github.com/vmware-tanzu/pinniped/discussions/483) discussion thread that outlines some areas we believe are excellent starting points for the community to get involved. In that discussion weve included specific work items that one might consider that also support the high-level items presented in our roadmap.
###
**How to add an item to the roadmap?**
Please open an issue to track any initiative on the roadmap of Pinniped (usually driven by new feature requests). We will work with and rely on our community to focus our efforts to improve Pinniped.
###
**Current Roadmap**
The following table includes the current roadmap for Pinniped. If you have any questions or would like to contribute to Pinniped, please attend a [community meeting](https://github.com/vmware-tanzu/pinniped/blob/main/CONTRIBUTING.md#meeting-with-the-maintainers) to discuss with our team. If you don't know where to start, we are always looking for contributors that will help us reduce technical, automation, and documentation debt. Please take the timelines & dates as proposals and goals. Priorities and requirements change based on community feedback, roadblocks encountered, community contributions, etc. If you depend on a specific item, we encourage you to attend community meetings to get updated status information, or help us deliver that feature by contributing to Pinniped.
Last Updated: June 2021
Theme|Description|Timeline|
|--|--|--|
|Remote OIDC login support|Add support for logging in from remote hosts without web browsers in the Pinniped CLI and Supervisor|Jun 2021|
|AD Support|Extends upstream IDP protocols|Jun 2021|
|Wider Concierge cluster support|Support for more cluster types in the Concierge|Jul 2021|
|Improved Documentation|Reorganizing and improving Pinniped docs; new how-to guides and tutorials|Exploring/Ongoing|
|Improving Security Posture|Offer the best security posture for Kubernetes cluster authentication|Exploring/Ongoing|
|Improve our CI/CD systems|Upgrade tests; make Kind more efficient and reliable for CI ; Windows tests; performance tests; scale tests; soak tests|Exploring/Ongoing|
|CLI Improvements|Improving CLI UX for setting up Supervisor IDPs|Exploring/Ongoing|
|Telemetry|Adding some useful phone home metrics as well as some vanity metrics|Exploring/Ongoing|
|Observability|Expose Pinniped metrics through Prometheus Integration|Exploring/Ongoing|
|Device Code Flow|Add support for OAuth 2.0 Device Authorization Grant in the Pinniped CLI and Supervisor|Exploring/Ongoing|

View File

@@ -1,32 +0,0 @@
# Project Scope
The Pinniped project is guided by the following principles.
- Pinniped lets you plug any external identity providers into Kubernetes.
These integrations follow enterprise-grade security principles.
- Pinniped is easy to install and use on any Kubernetes cluster via distribution-specific integration mechanisms.
- Pinniped uses a declarative configuration via Kubernetes APIs.
- Pinniped provides optimal user experience when authenticating to many clusters at one time.
- Pinniped provides enterprise-grade security posture via secure defaults and revocable or very short-lived credentials.
- Where possible, Pinniped will contribute ideas and code to upstream Kubernetes.
When contributing to Pinniped, please consider whether your contribution follows
these guiding principles.
## Out Of Scope
The following items are out of scope for the Pinniped project.
- Authorization.
- Standalone identity provider for general use.
- Machine-to-machine (service) identity.
- Running outside of Kubernetes.
## Roadmap
See our [open milestones][milestones] and the [`priority/backlog` label][backlog] for an idea about what's next on our roadmap.
For more details on proposing features and bugs, check out our [contributing](./CONTRIBUTING.md) doc.
[milestones]: https://github.com/vmware-tanzu/pinniped/milestones
[backlog]: https://github.com/vmware-tanzu/pinniped/labels/priority%2Fbacklog

View File

@@ -1,92 +1 @@
# Security Release Process
Pinniped provides identity services for Kubernetes clusters. The community has adopted this security disclosure and response policy to ensure we responsibly handle critical issues.
## Supported Versions
As of right now, only the latest version of Pinniped is supported.
## Reporting a Vulnerability - Private Disclosure Process
Security is of the highest importance and all security vulnerabilities or suspected security vulnerabilities should be reported to Pinniped privately, to minimize attacks against current users of Pinniped before they are fixed. Vulnerabilities will be investigated and patched on the next patch (or minor) release as soon as possible. This information could be kept entirely internal to the project.
If you know of a publicly disclosed security vulnerability for Pinniped, please **IMMEDIATELY** contact the VMware Security Team (security@vmware.com). The use of encrypted email is encouraged. The public PGP key can be found at https://kb.vmware.com/kb/1055.
**IMPORTANT: Do not file public issues on GitHub for security vulnerabilities**
To report a vulnerability or a security-related issue, please contact the VMware email address with the details of the vulnerability. The email will be fielded by the VMware Security Team and then shared with the Pinniped maintainers who have committer and release permissions. Emails will be addressed within 3 business days, including a detailed plan to investigate the issue and any potential workarounds to perform in the meantime. Do not report non-security-impacting bugs through this channel. Use [GitHub issues](https://github.com/vmware-tanzu/pinniped/issues/new/choose) instead.
## Proposed Email Content
Provide a descriptive subject line and in the body of the email include the following information:
* Basic identity information, such as your name and your affiliation or company.
* Detailed steps to reproduce the vulnerability (POC scripts, screenshots, and logs are all helpful to us).
* Description of the effects of the vulnerability on Pinniped and the related hardware and software configurations, so that the VMware Security Team can reproduce it.
* How the vulnerability affects Pinniped usage and an estimation of the attack surface, if there is one.
* List other projects or dependencies that were used in conjunction with Pinniped to produce the vulnerability.
## When to report a vulnerability
* When you think Pinniped has a potential security vulnerability.
* When you suspect a potential vulnerability but you are unsure that it impacts Pinniped.
* When you know of or suspect a potential vulnerability on another project that is used by Pinniped.
## Patch, Release, and Disclosure
The VMware Security Team will respond to vulnerability reports as follows:
1. The Security Team will investigate the vulnerability and determine its effects and criticality.
2. If the issue is not deemed to be a vulnerability, the Security Team will follow up with a detailed reason for rejection.
3. The Security Team will initiate a conversation with the reporter within 3 business days.
4. If a vulnerability is acknowledged and the timeline for a fix is determined, the Security Team will work on a plan to communicate with the appropriate community, including identifying mitigating steps that affected users can take to protect themselves until the fix is rolled out.
5. The Security Team will also create a [CVSS](https://www.first.org/cvss/specification-document) using the [CVSS Calculator](https://www.first.org/cvss/calculator/3.0). The Security Team makes the final call on the calculated CVSS; it is better to move quickly than making the CVSS perfect. Issues may also be reported to [Mitre](https://cve.mitre.org/) using this [scoring calculator](https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator). The CVE will initially be set to private.
6. The Security Team will work on fixing the vulnerability and perform internal testing before preparing to roll out the fix.
7. The Security Team will provide early disclosure of the vulnerability by emailing the [Pinniped Distributors](https://groups.google.com/g/project-pinniped-distributors) mailing list. Distributors can initially plan for the vulnerability patch ahead of the fix, and later can test the fix and provide feedback to the Pinniped team. See the section **Early Disclosure to Pinniped Distributors List** for details about how to join this mailing list.
8. A public disclosure date is negotiated by the VMware SecurityTeam, the bug submitter, and the distributors list. We prefer to fully disclose the bug as soon as possible once a user mitigation or patch is available. It is reasonable to delay disclosure when the bug or the fix is not yet fully understood, the solution is not well-tested, or for distributor coordination. The timeframe for disclosure is from immediate (especially if its already publicly known) to a few weeks. For a critical vulnerability with a straightforward mitigation, we expect the report date for the public disclosure date to be on the order of 14 business days. The VMware Security Team holds the final say when setting a public disclosure date.
9. Once the fix is confirmed, the Security Team will patch the vulnerability in the next patch or minor release, and backport a patch release into all earlier supported releases. Upon release of the patched version of Pinniped, we will follow the **Public Disclosure Process**.
## Public Disclosure Process
The Security Team publishes a [public advisory](https://github.com/vmware-tanzu/pinniped/security/advisories) to the Pinniped community via GitHub. In most cases, additional communication via Slack, Twitter, mailing lists, blog and other channels will assist in educating Pinniped users and rolling out the patched release to affected users.
The Security Team will also publish any mitigating steps users can take until the fix can be applied to their Pinniped instances. Pinniped distributors will handle creating and publishing their own security advisories.
## Mailing lists
* Use security@vmware.com to report security concerns to the VMware Security Team, who uses the list to privately discuss security issues and fixes prior to disclosure. The use of encrypted email is encouraged. The public PGP key can be found at https://kb.vmware.com/kb/1055.
* Join the [Pinniped Distributors](https://groups.google.com/g/project-pinniped-distributors) mailing list for early private information and vulnerability disclosure. Early disclosure may include mitigating steps and additional information on security patch releases. See below for information on how Pinniped distributors or vendors can apply to join this list.
## Early Disclosure to Pinniped Distributors List
The private list is intended to be used primarily to provide actionable information to multiple distributor projects at once. This list is not intended to inform individuals about security issues.
## Membership Criteria
To be eligible to join the [Pinniped Distributors](https://groups.google.com/g/project-pinniped-distributors) mailing list, you should:
1. Be an active distributor of Pinniped.
2. Have a user base that is not limited to your own organization.
3. Have a publicly verifiable track record up to the present day of fixing security issues.
4. Not be a downstream or rebuild of another distributor.
5. Be a participant and active contributor in the Pinniped community.
6. Accept the Embargo Policy that is outlined below.
7. Have someone who is already on the list vouch for the person requesting membership on behalf of your distribution.
**The terms and conditions of the Embargo Policy apply to all members of this mailing list. A request for membership represents your acceptance to the terms and conditions of the Embargo Policy.**
## Embargo Policy
The information that members receive on the Pinniped Distributors mailing list must not be made public, shared, or even hinted at anywhere beyond those who need to know within your specific team, unless you receive explicit approval to do so from the VMware Security Team. This remains true until the public disclosure date/time agreed upon by the list. Members of the list and others cannot use the information for any reason other than to get the issue fixed for your respective distribution's users.
Before you share any information from the list with members of your team who are required to fix the issue, these team members must agree to the same terms, and only be provided with information on a need-to-know basis.
In the unfortunate event that you share information beyond what is permitted by this policy, you must urgently inform the VMware Security Team (security@vmware.com) of exactly what information was leaked and to whom. If you continue to leak information and break the policy outlined here, you will be permanently removed from the list.
## Requesting to Join
Send new membership requests to https://groups.google.com/g/project-pinniped-distributors. In the body of your request please specify how you qualify for membership and fulfill each criterion listed in the Membership Criteria section above.
## Confidentiality, integrity and availability
We consider vulnerabilities leading to the compromise of data confidentiality, elevation of privilege, or integrity to be our highest priority concerns. Availability, in particular in areas relating to DoS and resource exhaustion, is also a serious security concern. The VMware Security Team takes all vulnerabilities, potential vulnerabilities, and suspected vulnerabilities seriously and will investigate them in an urgent and expeditious manner.
Please see https://github.com/vmware/pinniped/blob/main/SECURITY.md

View File

@@ -1,5 +0,0 @@
# API Generation Templates
This directory contains a template for generating our Kubernetes API code across several Kubernetes versions.
See the [`./generated`](../generated) directory for the rendered output.

View File

@@ -1,10 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
// +k8s:openapi-gen=true
// +k8s:deepcopy-gen=package
// +k8s:defaulter-gen=TypeMeta
// +groupName=authentication.concierge.pinniped.dev
// Package v1alpha1 is the v1alpha1 version of the Pinniped concierge authentication API.
package v1alpha1

View File

@@ -1,45 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
)
const GroupName = "authentication.concierge.pinniped.dev"
// SchemeGroupVersion is group version used to register these objects.
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}
var (
SchemeBuilder runtime.SchemeBuilder
localSchemeBuilder = &SchemeBuilder
AddToScheme = localSchemeBuilder.AddToScheme
)
func init() {
// We only register manually written functions here. The registration of the
// generated functions takes place in the generated files. The separation
// makes the code compile even when the generated files are missing.
localSchemeBuilder.Register(addKnownTypes)
}
// Adds the list of known types to the given scheme.
func addKnownTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(SchemeGroupVersion,
&WebhookAuthenticator{},
&WebhookAuthenticatorList{},
&JWTAuthenticator{},
&JWTAuthenticatorList{},
)
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
return nil
}
// Resource takes an unqualified resource and returns a Group qualified GroupResource.
func Resource(resource string) schema.GroupResource {
return SchemeGroupVersion.WithResource(resource).GroupResource()
}

View File

@@ -1,83 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
// Status of a JWT authenticator.
type JWTAuthenticatorStatus struct {
// Represents the observations of the authenticator's current state.
// +patchMergeKey=type
// +patchStrategy=merge
// +listType=map
// +listMapKey=type
Conditions []Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
}
// Spec for configuring a JWT authenticator.
type JWTAuthenticatorSpec struct {
// Issuer is the OIDC issuer URL that will be used to discover public signing keys. Issuer is
// also used to validate the "iss" JWT claim.
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:Pattern=`^https://`
Issuer string `json:"issuer"`
// Audience is the required value of the "aud" JWT claim.
// +kubebuilder:validation:MinLength=1
Audience string `json:"audience"`
// Claims allows customization of the claims that will be mapped to user identity
// for Kubernetes access.
// +optional
Claims JWTTokenClaims `json:"claims"`
// TLS configuration for communicating with the OIDC provider.
// +optional
TLS *TLSSpec `json:"tls,omitempty"`
}
// JWTTokenClaims allows customization of the claims that will be mapped to user identity
// for Kubernetes access.
type JWTTokenClaims struct {
// Groups is the name of the claim which should be read to extract the user's
// group membership from the JWT token. When not specified, it will default to "groups".
// +optional
Groups string `json:"groups"`
// Username is the name of the claim which should be read to extract the
// username from the JWT token. When not specified, it will default to "username".
// +optional
Username string `json:"username"`
}
// JWTAuthenticator describes the configuration of a JWT authenticator.
//
// Upon receiving a signed JWT, a JWTAuthenticator will performs some validation on it (e.g., valid
// signature, existence of claims, etc.) and extract the username and groups from the token.
//
// +genclient
// +genclient:nonNamespaced
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:resource:categories=pinniped;pinniped-authenticator;pinniped-authenticators,scope=Cluster
// +kubebuilder:printcolumn:name="Issuer",type=string,JSONPath=`.spec.issuer`
// +kubebuilder:subresource:status
type JWTAuthenticator struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
// Spec for configuring the authenticator.
Spec JWTAuthenticatorSpec `json:"spec"`
// Status of the authenticator.
Status JWTAuthenticatorStatus `json:"status,omitempty"`
}
// List of JWTAuthenticator objects.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type JWTAuthenticatorList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []JWTAuthenticator `json:"items"`
}

View File

@@ -1,75 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
// ConditionStatus is effectively an enum type for Condition.Status.
type ConditionStatus string
// These are valid condition statuses. "ConditionTrue" means a resource is in the condition.
// "ConditionFalse" means a resource is not in the condition. "ConditionUnknown" means kubernetes
// can't decide if a resource is in the condition or not. In the future, we could add other
// intermediate conditions, e.g. ConditionDegraded.
const (
ConditionTrue ConditionStatus = "True"
ConditionFalse ConditionStatus = "False"
ConditionUnknown ConditionStatus = "Unknown"
)
// Condition status of a resource (mirrored from the metav1.Condition type added in Kubernetes 1.19). In a future API
// version we can switch to using the upstream type.
// See https://github.com/kubernetes/apimachinery/blob/v0.19.0/pkg/apis/meta/v1/types.go#L1353-L1413.
type Condition struct {
// type of condition in CamelCase or in foo.example.com/CamelCase.
// ---
// Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be
// useful (see .node.status.conditions), the ability to deconflict is important.
// The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
// +required
// +kubebuilder:validation:Required
// +kubebuilder:validation:Pattern=`^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$`
// +kubebuilder:validation:MaxLength=316
Type string `json:"type"`
// status of the condition, one of True, False, Unknown.
// +required
// +kubebuilder:validation:Required
// +kubebuilder:validation:Enum=True;False;Unknown
Status ConditionStatus `json:"status"`
// observedGeneration represents the .metadata.generation that the condition was set based upon.
// For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
// with respect to the current state of the instance.
// +optional
// +kubebuilder:validation:Minimum=0
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
// lastTransitionTime is the last time the condition transitioned from one status to another.
// This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
// +required
// +kubebuilder:validation:Required
// +kubebuilder:validation:Type=string
// +kubebuilder:validation:Format=date-time
LastTransitionTime metav1.Time `json:"lastTransitionTime"`
// reason contains a programmatic identifier indicating the reason for the condition's last transition.
// Producers of specific condition types may define expected values and meanings for this field,
// and whether the values are considered a guaranteed API.
// The value should be a CamelCase string.
// This field may not be empty.
// +required
// +kubebuilder:validation:Required
// +kubebuilder:validation:MaxLength=1024
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:Pattern=`^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$`
Reason string `json:"reason"`
// message is a human readable message indicating details about the transition.
// This may be an empty string.
// +required
// +kubebuilder:validation:Required
// +kubebuilder:validation:MaxLength=32768
Message string `json:"message"`
}

View File

@@ -1,11 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
// Configuration for configuring TLS on various authenticators.
type TLSSpec struct {
// X.509 Certificate Authority (base64-encoded PEM bundle). If omitted, a default set of system roots will be trusted.
// +optional
CertificateAuthorityData string `json:"certificateAuthorityData,omitempty"`
}

View File

@@ -1,55 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
// Status of a webhook authenticator.
type WebhookAuthenticatorStatus struct {
// Represents the observations of the authenticator's current state.
// +patchMergeKey=type
// +patchStrategy=merge
// +listType=map
// +listMapKey=type
Conditions []Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
}
// Spec for configuring a webhook authenticator.
type WebhookAuthenticatorSpec struct {
// Webhook server endpoint URL.
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:Pattern=`^https://`
Endpoint string `json:"endpoint"`
// TLS configuration.
// +optional
TLS *TLSSpec `json:"tls,omitempty"`
}
// WebhookAuthenticator describes the configuration of a webhook authenticator.
// +genclient
// +genclient:nonNamespaced
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:resource:categories=pinniped;pinniped-authenticator;pinniped-authenticators,scope=Cluster
// +kubebuilder:printcolumn:name="Endpoint",type=string,JSONPath=`.spec.endpoint`
// +kubebuilder:subresource:status
type WebhookAuthenticator struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
// Spec for configuring the authenticator.
Spec WebhookAuthenticatorSpec `json:"spec"`
// Status of the authenticator.
Status WebhookAuthenticatorStatus `json:"status,omitempty"`
}
// List of WebhookAuthenticator objects.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type WebhookAuthenticatorList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []WebhookAuthenticator `json:"items"`
}

View File

@@ -1,10 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
// +k8s:openapi-gen=true
// +k8s:deepcopy-gen=package
// +k8s:defaulter-gen=TypeMeta
// +groupName=config.concierge.pinniped.dev
// Package v1alpha1 is the v1alpha1 version of the Pinniped concierge configuration API.
package v1alpha1

View File

@@ -1,43 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
)
const GroupName = "config.concierge.pinniped.dev"
// SchemeGroupVersion is group version used to register these objects.
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}
var (
SchemeBuilder runtime.SchemeBuilder
localSchemeBuilder = &SchemeBuilder
AddToScheme = localSchemeBuilder.AddToScheme
)
func init() {
// We only register manually written functions here. The registration of the
// generated functions takes place in the generated files. The separation
// makes the code compile even when the generated files are missing.
localSchemeBuilder.Register(addKnownTypes)
}
// Adds the list of known types to the given scheme.
func addKnownTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(SchemeGroupVersion,
&CredentialIssuer{},
&CredentialIssuerList{},
)
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
return nil
}
// Resource takes an unqualified resource and returns a Group qualified GroupResource.
func Resource(resource string) schema.GroupResource {
return SchemeGroupVersion.WithResource(resource).GroupResource()
}

View File

@@ -1,241 +0,0 @@
// Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// StrategyType enumerates a type of "strategy" used to implement credential access on a cluster.
// +kubebuilder:validation:Enum=KubeClusterSigningCertificate;ImpersonationProxy
type StrategyType string
// FrontendType enumerates a type of "frontend" used to provide access to users of a cluster.
// +kubebuilder:validation:Enum=TokenCredentialRequestAPI;ImpersonationProxy
type FrontendType string
// StrategyStatus enumerates whether a strategy is working on a cluster.
// +kubebuilder:validation:Enum=Success;Error
type StrategyStatus string
// StrategyReason enumerates the detailed reason why a strategy is in a particular status.
// +kubebuilder:validation:Enum=Listening;Pending;Disabled;ErrorDuringSetup;CouldNotFetchKey;CouldNotGetClusterInfo;FetchedKey
type StrategyReason string
const (
KubeClusterSigningCertificateStrategyType = StrategyType("KubeClusterSigningCertificate")
ImpersonationProxyStrategyType = StrategyType("ImpersonationProxy")
TokenCredentialRequestAPIFrontendType = FrontendType("TokenCredentialRequestAPI")
ImpersonationProxyFrontendType = FrontendType("ImpersonationProxy")
SuccessStrategyStatus = StrategyStatus("Success")
ErrorStrategyStatus = StrategyStatus("Error")
ListeningStrategyReason = StrategyReason("Listening")
PendingStrategyReason = StrategyReason("Pending")
DisabledStrategyReason = StrategyReason("Disabled")
ErrorDuringSetupStrategyReason = StrategyReason("ErrorDuringSetup")
CouldNotFetchKeyStrategyReason = StrategyReason("CouldNotFetchKey")
CouldNotGetClusterInfoStrategyReason = StrategyReason("CouldNotGetClusterInfo")
FetchedKeyStrategyReason = StrategyReason("FetchedKey")
)
// CredentialIssuerSpec describes the intended configuration of the Concierge.
type CredentialIssuerSpec struct {
// ImpersonationProxy describes the intended configuration of the Concierge impersonation proxy.
ImpersonationProxy *ImpersonationProxySpec `json:"impersonationProxy"`
}
// ImpersonationProxyMode enumerates the configuration modes for the impersonation proxy.
//
// +kubebuilder:validation:Enum=auto;enabled;disabled
type ImpersonationProxyMode string
const (
// ImpersonationProxyModeDisabled explicitly disables the impersonation proxy.
ImpersonationProxyModeDisabled = ImpersonationProxyMode("disabled")
// ImpersonationProxyModeEnabled explicitly enables the impersonation proxy.
ImpersonationProxyModeEnabled = ImpersonationProxyMode("enabled")
// ImpersonationProxyModeAuto enables or disables the impersonation proxy based upon the cluster in which it is running.
ImpersonationProxyModeAuto = ImpersonationProxyMode("auto")
)
// ImpersonationProxyServiceType enumerates the types of service that can be provisioned for the impersonation proxy.
//
// +kubebuilder:validation:Enum=LoadBalancer;ClusterIP;None
type ImpersonationProxyServiceType string
const (
// ImpersonationProxyServiceTypeLoadBalancer provisions a service of type LoadBalancer.
ImpersonationProxyServiceTypeLoadBalancer = ImpersonationProxyServiceType("LoadBalancer")
// ImpersonationProxyServiceTypeClusterIP provisions a service of type ClusterIP.
ImpersonationProxyServiceTypeClusterIP = ImpersonationProxyServiceType("ClusterIP")
// ImpersonationProxyServiceTypeNone does not automatically provision any service.
ImpersonationProxyServiceTypeNone = ImpersonationProxyServiceType("None")
)
// ImpersonationProxySpec describes the intended configuration of the Concierge impersonation proxy.
type ImpersonationProxySpec struct {
// Mode configures whether the impersonation proxy should be started:
// - "disabled" explicitly disables the impersonation proxy. This is the default.
// - "enabled" explicitly enables the impersonation proxy.
// - "auto" enables or disables the impersonation proxy based upon the cluster in which it is running.
Mode ImpersonationProxyMode `json:"mode"`
// Service describes the configuration of the Service provisioned to expose the impersonation proxy to clients.
//
// +kubebuilder:default:={"type": "LoadBalancer"}
Service ImpersonationProxyServiceSpec `json:"service"`
// ExternalEndpoint describes the HTTPS endpoint where the proxy will be exposed. If not set, the proxy will
// be served using the external name of the LoadBalancer service or the cluster service DNS name.
//
// This field must be non-empty when spec.impersonationProxy.service.mode is "None".
//
// +optional
ExternalEndpoint string `json:"externalEndpoint,omitempty"`
}
// ImpersonationProxyServiceSpec describes how the Concierge should provision a Service to expose the impersonation proxy.
type ImpersonationProxyServiceSpec struct {
// Type specifies the type of Service to provision for the impersonation proxy.
//
// If the type is "None", then the "spec.impersonationProxy.externalEndpoint" field must be set to a non-empty
// value so that the Concierge can properly advertise the endpoint in the CredentialIssuer's status.
//
// +kubebuilder:default:="LoadBalancer"
Type ImpersonationProxyServiceType `json:"type,omitempty"`
// LoadBalancerIP specifies the IP address to set in the spec.loadBalancerIP field of the provisioned Service.
// This is not supported on all cloud providers.
//
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=255
// +optional
LoadBalancerIP string `json:"loadBalancerIP,omitempty"`
// Annotations specifies zero or more key/value pairs to set as annotations on the provisioned Service.
//
// +optional
Annotations map[string]string `json:"annotations,omitempty"`
}
// CredentialIssuerStatus describes the status of the Concierge.
type CredentialIssuerStatus struct {
// List of integration strategies that were attempted by Pinniped.
Strategies []CredentialIssuerStrategy `json:"strategies"`
// Information needed to form a valid Pinniped-based kubeconfig using this credential issuer.
// This field is deprecated and will be removed in a future version.
// +optional
KubeConfigInfo *CredentialIssuerKubeConfigInfo `json:"kubeConfigInfo,omitempty"`
}
// CredentialIssuerKubeConfigInfo provides the information needed to form a valid Pinniped-based kubeconfig using this credential issuer.
// This type is deprecated and will be removed in a future version.
type CredentialIssuerKubeConfigInfo struct {
// The K8s API server URL.
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:Pattern=`^https://|^http://`
Server string `json:"server"`
// The K8s API server CA bundle.
// +kubebuilder:validation:MinLength=1
CertificateAuthorityData string `json:"certificateAuthorityData"`
}
// CredentialIssuerStrategy describes the status of an integration strategy that was attempted by Pinniped.
type CredentialIssuerStrategy struct {
// Type of integration attempted.
Type StrategyType `json:"type"`
// Status of the attempted integration strategy.
Status StrategyStatus `json:"status"`
// Reason for the current status.
Reason StrategyReason `json:"reason"`
// Human-readable description of the current status.
// +kubebuilder:validation:MinLength=1
Message string `json:"message"`
// When the status was last checked.
LastUpdateTime metav1.Time `json:"lastUpdateTime"`
// Frontend describes how clients can connect using this strategy.
Frontend *CredentialIssuerFrontend `json:"frontend,omitempty"`
}
// CredentialIssuerFrontend describes how to connect using a particular integration strategy.
type CredentialIssuerFrontend struct {
// Type describes which frontend mechanism clients can use with a strategy.
Type FrontendType `json:"type"`
// TokenCredentialRequestAPIInfo describes the parameters for the TokenCredentialRequest API on this Concierge.
// This field is only set when Type is "TokenCredentialRequestAPI".
TokenCredentialRequestAPIInfo *TokenCredentialRequestAPIInfo `json:"tokenCredentialRequestInfo,omitempty"`
// ImpersonationProxyInfo describes the parameters for the impersonation proxy on this Concierge.
// This field is only set when Type is "ImpersonationProxy".
ImpersonationProxyInfo *ImpersonationProxyInfo `json:"impersonationProxyInfo,omitempty"`
}
// TokenCredentialRequestAPIInfo describes the parameters for the TokenCredentialRequest API on this Concierge.
type TokenCredentialRequestAPIInfo struct {
// Server is the Kubernetes API server URL.
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:Pattern=`^https://|^http://`
Server string `json:"server"`
// CertificateAuthorityData is the base64-encoded Kubernetes API server CA bundle.
// +kubebuilder:validation:MinLength=1
CertificateAuthorityData string `json:"certificateAuthorityData"`
}
// ImpersonationProxyInfo describes the parameters for the impersonation proxy on this Concierge.
type ImpersonationProxyInfo struct {
// Endpoint is the HTTPS endpoint of the impersonation proxy.
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:Pattern=`^https://`
Endpoint string `json:"endpoint"`
// CertificateAuthorityData is the base64-encoded PEM CA bundle of the impersonation proxy.
// +kubebuilder:validation:MinLength=1
CertificateAuthorityData string `json:"certificateAuthorityData"`
}
// CredentialIssuer describes the configuration and status of the Pinniped Concierge credential issuer.
// +genclient
// +genclient:nonNamespaced
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:resource:categories=pinniped,scope=Cluster
// +kubebuilder:subresource:status
type CredentialIssuer struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
// Spec describes the intended configuration of the Concierge.
//
// +optional
Spec CredentialIssuerSpec `json:"spec"`
// CredentialIssuerStatus describes the status of the Concierge.
//
// +optional
Status CredentialIssuerStatus `json:"status"`
}
// CredentialIssuerList is a list of CredentialIssuer objects.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type CredentialIssuerList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []CredentialIssuer `json:"items"`
}

View File

@@ -1,8 +0,0 @@
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
// +k8s:deepcopy-gen=package
// +groupName=identity.concierge.pinniped.dev
// Package identity is the internal version of the Pinniped identity API.
package identity

View File

@@ -1,38 +0,0 @@
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package identity
import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
)
const GroupName = "identity.concierge.pinniped.dev"
// SchemeGroupVersion is group version used to register these objects.
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal}
// Kind takes an unqualified kind and returns back a Group qualified GroupKind.
func Kind(kind string) schema.GroupKind {
return SchemeGroupVersion.WithKind(kind).GroupKind()
}
// Resource takes an unqualified resource and returns back a Group qualified GroupResource.
func Resource(resource string) schema.GroupResource {
return SchemeGroupVersion.WithResource(resource).GroupResource()
}
var (
SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
AddToScheme = SchemeBuilder.AddToScheme
)
// Adds the list of known types to the given scheme.
func addKnownTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(SchemeGroupVersion,
&WhoAmIRequest{},
&WhoAmIRequestList{},
)
return nil
}

View File

@@ -1,37 +0,0 @@
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package identity
import "fmt"
// KubernetesUserInfo represents the current authenticated user, exactly as Kubernetes understands it.
// Copied from the Kubernetes token review API.
type KubernetesUserInfo struct {
// User is the UserInfo associated with the current user.
User UserInfo
// Audiences are audience identifiers chosen by the authenticator.
Audiences []string
}
// UserInfo holds the information about the user needed to implement the
// user.Info interface.
type UserInfo struct {
// The name that uniquely identifies this user among all active users.
Username string
// A unique value that identifies this user across time. If this user is
// deleted and another user by the same name is added, they will have
// different UIDs.
UID string
// The names of groups this user is a part of.
Groups []string
// Any additional information provided by the authenticator.
Extra map[string]ExtraValue
}
// ExtraValue masks the value so protobuf can generate
type ExtraValue []string
func (t ExtraValue) String() string {
return fmt.Sprintf("%v", []string(t))
}

View File

@@ -1,40 +0,0 @@
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package identity
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// WhoAmIRequest submits a request to echo back the current authenticated user.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type WhoAmIRequest struct {
metav1.TypeMeta
metav1.ObjectMeta
Spec WhoAmIRequestSpec
Status WhoAmIRequestStatus
}
type WhoAmIRequestSpec struct {
// empty for now but we may add some config here in the future
// any such config must be safe in the context of an unauthenticated user
}
type WhoAmIRequestStatus struct {
// The current authenticated user, exactly as Kubernetes understands it.
KubernetesUserInfo KubernetesUserInfo
// We may add concierge specific information here in the future.
}
// WhoAmIRequestList is a list of WhoAmIRequest objects.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type WhoAmIRequestList struct {
metav1.TypeMeta
metav1.ListMeta
// Items is a list of WhoAmIRequest
Items []WhoAmIRequest
}

View File

@@ -1,4 +0,0 @@
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1

View File

@@ -1,12 +0,0 @@
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import (
"k8s.io/apimachinery/pkg/runtime"
)
func addDefaultingFuncs(scheme *runtime.Scheme) error {
return RegisterDefaults(scheme)
}

View File

@@ -1,11 +0,0 @@
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
// +k8s:openapi-gen=true
// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=go.pinniped.dev/GENERATED_PKG/apis/concierge/identity
// +k8s:defaulter-gen=TypeMeta
// +groupName=identity.concierge.pinniped.dev
// Package v1alpha1 is the v1alpha1 version of the Pinniped identity API.
package v1alpha1

View File

@@ -1,43 +0,0 @@
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
)
const GroupName = "identity.concierge.pinniped.dev"
// SchemeGroupVersion is group version used to register these objects.
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}
var (
SchemeBuilder runtime.SchemeBuilder
localSchemeBuilder = &SchemeBuilder
AddToScheme = localSchemeBuilder.AddToScheme
)
func init() {
// We only register manually written functions here. The registration of the
// generated functions takes place in the generated files. The separation
// makes the code compile even when the generated files are missing.
localSchemeBuilder.Register(addKnownTypes, addDefaultingFuncs)
}
// Adds the list of known types to the given scheme.
func addKnownTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(SchemeGroupVersion,
&WhoAmIRequest{},
&WhoAmIRequestList{},
)
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
return nil
}
// Resource takes an unqualified resource and returns a Group qualified GroupResource.
func Resource(resource string) schema.GroupResource {
return SchemeGroupVersion.WithResource(resource).GroupResource()
}

View File

@@ -1,41 +0,0 @@
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import "fmt"
// KubernetesUserInfo represents the current authenticated user, exactly as Kubernetes understands it.
// Copied from the Kubernetes token review API.
type KubernetesUserInfo struct {
// User is the UserInfo associated with the current user.
User UserInfo `json:"user"`
// Audiences are audience identifiers chosen by the authenticator.
// +optional
Audiences []string `json:"audiences,omitempty"`
}
// UserInfo holds the information about the user needed to implement the
// user.Info interface.
type UserInfo struct {
// The name that uniquely identifies this user among all active users.
Username string `json:"username"`
// A unique value that identifies this user across time. If this user is
// deleted and another user by the same name is added, they will have
// different UIDs.
// +optional
UID string `json:"uid,omitempty"`
// The names of groups this user is a part of.
// +optional
Groups []string `json:"groups,omitempty"`
// Any additional information provided by the authenticator.
// +optional
Extra map[string]ExtraValue `json:"extra,omitempty"`
}
// ExtraValue masks the value so protobuf can generate
type ExtraValue []string
func (t ExtraValue) String() string {
return fmt.Sprintf("%v", []string(t))
}

View File

@@ -1,43 +0,0 @@
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// WhoAmIRequest submits a request to echo back the current authenticated user.
// +genclient
// +genclient:nonNamespaced
// +genclient:onlyVerbs=create
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type WhoAmIRequest struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec WhoAmIRequestSpec `json:"spec,omitempty"`
Status WhoAmIRequestStatus `json:"status,omitempty"`
}
type WhoAmIRequestSpec struct {
// empty for now but we may add some config here in the future
// any such config must be safe in the context of an unauthenticated user
}
type WhoAmIRequestStatus struct {
// The current authenticated user, exactly as Kubernetes understands it.
KubernetesUserInfo KubernetesUserInfo `json:"kubernetesUserInfo"`
// We may add concierge specific information here in the future.
}
// WhoAmIRequestList is a list of WhoAmIRequest objects.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type WhoAmIRequestList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
// Items is a list of WhoAmIRequest
Items []WhoAmIRequest `json:"items"`
}

View File

@@ -1,14 +0,0 @@
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package validation
import (
"k8s.io/apimachinery/pkg/util/validation/field"
identityapi "go.pinniped.dev/GENERATED_PKG/apis/concierge/identity"
)
func ValidateWhoAmIRequest(whoAmIRequest *identityapi.WhoAmIRequest) field.ErrorList {
return nil // add validation for spec here if we expand it
}

View File

@@ -1,8 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
// +k8s:deepcopy-gen=package
// +groupName=login.concierge.pinniped.dev
// Package login is the internal version of the Pinniped login API.
package login

View File

@@ -1,38 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package login
import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
)
const GroupName = "login.concierge.pinniped.dev"
// SchemeGroupVersion is group version used to register these objects.
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal}
// Kind takes an unqualified kind and returns back a Group qualified GroupKind.
func Kind(kind string) schema.GroupKind {
return SchemeGroupVersion.WithKind(kind).GroupKind()
}
// Resource takes an unqualified resource and returns back a Group qualified GroupResource.
func Resource(resource string) schema.GroupResource {
return SchemeGroupVersion.WithResource(resource).GroupResource()
}
var (
SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
AddToScheme = SchemeBuilder.AddToScheme
)
// Adds the list of known types to the given scheme.
func addKnownTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(SchemeGroupVersion,
&TokenCredentialRequest{},
&TokenCredentialRequestList{},
)
return nil
}

View File

@@ -1,21 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package login
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
// ClusterCredential is a credential (token or certificate) which is valid on the Kubernetes cluster.
type ClusterCredential struct {
// ExpirationTimestamp indicates a time when the provided credentials expire.
ExpirationTimestamp metav1.Time
// Token is a bearer token used by the client for request authentication.
Token string
// PEM-encoded client TLS certificates (including intermediates, if any).
ClientCertificateData string
// PEM-encoded private key for the above certificate.
ClientKeyData string
}

View File

@@ -1,47 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package login
import (
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
type TokenCredentialRequestSpec struct {
// Bearer token supplied with the credential request.
Token string
// Reference to an authenticator which can validate this credential request.
Authenticator corev1.TypedLocalObjectReference
}
type TokenCredentialRequestStatus struct {
// A ClusterCredential will be returned for a successful credential request.
// +optional
Credential *ClusterCredential
// An error message will be returned for an unsuccessful credential request.
// +optional
Message *string
}
// TokenCredentialRequest submits an IDP-specific credential to Pinniped in exchange for a cluster-specific credential.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type TokenCredentialRequest struct {
metav1.TypeMeta
metav1.ObjectMeta
Spec TokenCredentialRequestSpec
Status TokenCredentialRequestStatus
}
// TokenCredentialRequestList is a list of TokenCredentialRequest objects.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type TokenCredentialRequestList struct {
metav1.TypeMeta
metav1.ListMeta
// Items is a list of TokenCredentialRequest
Items []TokenCredentialRequest
}

View File

@@ -1,4 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1

View File

@@ -1,12 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import (
"k8s.io/apimachinery/pkg/runtime"
)
func addDefaultingFuncs(scheme *runtime.Scheme) error {
return RegisterDefaults(scheme)
}

View File

@@ -1,11 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
// +k8s:openapi-gen=true
// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=go.pinniped.dev/GENERATED_PKG/apis/concierge/login
// +k8s:defaulter-gen=TypeMeta
// +groupName=login.concierge.pinniped.dev
// Package v1alpha1 is the v1alpha1 version of the Pinniped login API.
package v1alpha1

View File

@@ -1,43 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
)
const GroupName = "login.concierge.pinniped.dev"
// SchemeGroupVersion is group version used to register these objects.
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}
var (
SchemeBuilder runtime.SchemeBuilder
localSchemeBuilder = &SchemeBuilder
AddToScheme = localSchemeBuilder.AddToScheme
)
func init() {
// We only register manually written functions here. The registration of the
// generated functions takes place in the generated files. The separation
// makes the code compile even when the generated files are missing.
localSchemeBuilder.Register(addKnownTypes, addDefaultingFuncs)
}
// Adds the list of known types to the given scheme.
func addKnownTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(SchemeGroupVersion,
&TokenCredentialRequest{},
&TokenCredentialRequestList{},
)
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
return nil
}
// Resource takes an unqualified resource and returns a Group qualified GroupResource.
func Resource(resource string) schema.GroupResource {
return SchemeGroupVersion.WithResource(resource).GroupResource()
}

View File

@@ -1,22 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
// ClusterCredential is the cluster-specific credential returned on a successful credential request. It
// contains either a valid bearer token or a valid TLS certificate and corresponding private key for the cluster.
type ClusterCredential struct {
// ExpirationTimestamp indicates a time when the provided credentials expire.
ExpirationTimestamp metav1.Time `json:"expirationTimestamp,omitempty"`
// Token is a bearer token used by the client for request authentication.
Token string `json:"token,omitempty"`
// PEM-encoded client TLS certificates (including intermediates, if any).
ClientCertificateData string `json:"clientCertificateData,omitempty"`
// PEM-encoded private key for the above certificate.
ClientKeyData string `json:"clientKeyData,omitempty"`
}

View File

@@ -1,51 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import (
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// TokenCredentialRequestSpec is the specification of a TokenCredentialRequest, expected on requests to the Pinniped API.
type TokenCredentialRequestSpec struct {
// Bearer token supplied with the credential request.
Token string `json:"token,omitempty"`
// Reference to an authenticator which can validate this credential request.
Authenticator corev1.TypedLocalObjectReference `json:"authenticator"`
}
// TokenCredentialRequestStatus is the status of a TokenCredentialRequest, returned on responses to the Pinniped API.
type TokenCredentialRequestStatus struct {
// A Credential will be returned for a successful credential request.
// +optional
Credential *ClusterCredential `json:"credential,omitempty"`
// An error message will be returned for an unsuccessful credential request.
// +optional
Message *string `json:"message,omitempty"`
}
// TokenCredentialRequest submits an IDP-specific credential to Pinniped in exchange for a cluster-specific credential.
// +genclient
// +genclient:nonNamespaced
// +genclient:onlyVerbs=create
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type TokenCredentialRequest struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec TokenCredentialRequestSpec `json:"spec,omitempty"`
Status TokenCredentialRequestStatus `json:"status,omitempty"`
}
// TokenCredentialRequestList is a list of TokenCredentialRequest objects.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type TokenCredentialRequestList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []TokenCredentialRequest `json:"items"`
}

View File

@@ -1,11 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
// +k8s:openapi-gen=true
// +k8s:deepcopy-gen=package
// +k8s:conversion-gen=go.pinniped.dev/GENERATED_PKG/apis/supervisor/config
// +k8s:defaulter-gen=TypeMeta
// +groupName=config.supervisor.pinniped.dev
// Package v1alpha1 is the v1alpha1 version of the Pinniped supervisor configuration API.
package v1alpha1

View File

@@ -1,43 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
)
const GroupName = "config.supervisor.pinniped.dev"
// SchemeGroupVersion is group version used to register these objects.
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}
var (
SchemeBuilder runtime.SchemeBuilder
localSchemeBuilder = &SchemeBuilder
AddToScheme = localSchemeBuilder.AddToScheme
)
func init() {
// We only register manually written functions here. The registration of the
// generated functions takes place in the generated files. The separation
// makes the code compile even when the generated files are missing.
localSchemeBuilder.Register(addKnownTypes)
}
// Adds the list of known types to the given scheme.
func addKnownTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(SchemeGroupVersion,
&FederationDomain{},
&FederationDomainList{},
)
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
return nil
}
// Resource takes an unqualified resource and returns a Group qualified GroupResource.
func Resource(resource string) schema.GroupResource {
return SchemeGroupVersion.WithResource(resource).GroupResource()
}

View File

@@ -1,131 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import (
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// +kubebuilder:validation:Enum=Success;Duplicate;Invalid;SameIssuerHostMustUseSameSecret
type FederationDomainStatusCondition string
const (
SuccessFederationDomainStatusCondition = FederationDomainStatusCondition("Success")
DuplicateFederationDomainStatusCondition = FederationDomainStatusCondition("Duplicate")
SameIssuerHostMustUseSameSecretFederationDomainStatusCondition = FederationDomainStatusCondition("SameIssuerHostMustUseSameSecret")
InvalidFederationDomainStatusCondition = FederationDomainStatusCondition("Invalid")
)
// FederationDomainTLSSpec is a struct that describes the TLS configuration for an OIDC Provider.
type FederationDomainTLSSpec struct {
// SecretName is an optional name of a Secret in the same namespace, of type `kubernetes.io/tls`, which contains
// the TLS serving certificate for the HTTPS endpoints served by this FederationDomain. When provided, the TLS Secret
// named here must contain keys named `tls.crt` and `tls.key` that contain the certificate and private key to use
// for TLS.
//
// Server Name Indication (SNI) is an extension to the Transport Layer Security (TLS) supported by all major browsers.
//
// SecretName is required if you would like to use different TLS certificates for issuers of different hostnames.
// SNI requests do not include port numbers, so all issuers with the same DNS hostname must use the same
// SecretName value even if they have different port numbers.
//
// SecretName is not required when you would like to use only the HTTP endpoints (e.g. when terminating TLS at an
// Ingress). It is also not required when you would like all requests to this OIDC Provider's HTTPS endpoints to
// use the default TLS certificate, which is configured elsewhere.
//
// When your Issuer URL's host is an IP address, then this field is ignored. SNI does not work for IP addresses.
//
// +optional
SecretName string `json:"secretName,omitempty"`
}
// FederationDomainSpec is a struct that describes an OIDC Provider.
type FederationDomainSpec struct {
// Issuer is the OIDC Provider's issuer, per the OIDC Discovery Metadata document, as well as the
// identifier that it will use for the iss claim in issued JWTs. This field will also be used as
// the base URL for any endpoints used by the OIDC Provider (e.g., if your issuer is
// https://example.com/foo, then your authorization endpoint will look like
// https://example.com/foo/some/path/to/auth/endpoint).
//
// See
// https://openid.net/specs/openid-connect-discovery-1_0.html#rfc.section.3 for more information.
// +kubebuilder:validation:MinLength=1
Issuer string `json:"issuer"`
// TLS configures how this FederationDomain is served over Transport Layer Security (TLS).
// +optional
TLS *FederationDomainTLSSpec `json:"tls,omitempty"`
}
// FederationDomainSecrets holds information about this OIDC Provider's secrets.
type FederationDomainSecrets struct {
// JWKS holds the name of the corev1.Secret in which this OIDC Provider's signing/verification keys are
// stored. If it is empty, then the signing/verification keys are either unknown or they don't
// exist.
// +optional
JWKS corev1.LocalObjectReference `json:"jwks,omitempty"`
// TokenSigningKey holds the name of the corev1.Secret in which this OIDC Provider's key for
// signing tokens is stored.
// +optional
TokenSigningKey corev1.LocalObjectReference `json:"tokenSigningKey,omitempty"`
// StateSigningKey holds the name of the corev1.Secret in which this OIDC Provider's key for
// signing state parameters is stored.
// +optional
StateSigningKey corev1.LocalObjectReference `json:"stateSigningKey,omitempty"`
// StateSigningKey holds the name of the corev1.Secret in which this OIDC Provider's key for
// encrypting state parameters is stored.
// +optional
StateEncryptionKey corev1.LocalObjectReference `json:"stateEncryptionKey,omitempty"`
}
// FederationDomainStatus is a struct that describes the actual state of an OIDC Provider.
type FederationDomainStatus struct {
// Status holds an enum that describes the state of this OIDC Provider. Note that this Status can
// represent success or failure.
// +optional
Status FederationDomainStatusCondition `json:"status,omitempty"`
// Message provides human-readable details about the Status.
// +optional
Message string `json:"message,omitempty"`
// LastUpdateTime holds the time at which the Status was last updated. It is a pointer to get
// around some undesirable behavior with respect to the empty metav1.Time value (see
// https://github.com/kubernetes/kubernetes/issues/86811).
// +optional
LastUpdateTime *metav1.Time `json:"lastUpdateTime,omitempty"`
// Secrets contains information about this OIDC Provider's secrets.
// +optional
Secrets FederationDomainSecrets `json:"secrets,omitempty"`
}
// FederationDomain describes the configuration of an OIDC provider.
// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:resource:categories=pinniped
// +kubebuilder:subresource:status
type FederationDomain struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
// Spec of the OIDC provider.
Spec FederationDomainSpec `json:"spec"`
// Status of the OIDC provider.
Status FederationDomainStatus `json:"status,omitempty"`
}
// List of FederationDomain objects.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type FederationDomainList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []FederationDomain `json:"items"`
}

View File

@@ -1,11 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
// +k8s:openapi-gen=true
// +k8s:deepcopy-gen=package
// +k8s:defaulter-gen=TypeMeta
// +groupName=idp.supervisor.pinniped.dev
// +groupGoName=IDP
// Package v1alpha1 is the v1alpha1 version of the Pinniped supervisor identity provider (IDP) API.
package v1alpha1

View File

@@ -1,45 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
)
const GroupName = "idp.supervisor.pinniped.dev"
// SchemeGroupVersion is group version used to register these objects.
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}
var (
SchemeBuilder runtime.SchemeBuilder
localSchemeBuilder = &SchemeBuilder
AddToScheme = localSchemeBuilder.AddToScheme
)
func init() {
// We only register manually written functions here. The registration of the
// generated functions takes place in the generated files. The separation
// makes the code compile even when the generated files are missing.
localSchemeBuilder.Register(addKnownTypes)
}
// Adds the list of known types to the given scheme.
func addKnownTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(SchemeGroupVersion,
&OIDCIdentityProvider{},
&OIDCIdentityProviderList{},
&LDAPIdentityProvider{},
&LDAPIdentityProviderList{},
)
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
return nil
}
// Resource takes an unqualified resource and returns a Group qualified GroupResource.
func Resource(resource string) schema.GroupResource {
return SchemeGroupVersion.WithResource(resource).GroupResource()
}

View File

@@ -1,171 +0,0 @@
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
type LDAPIdentityProviderPhase string
const (
// LDAPPhasePending is the default phase for newly-created LDAPIdentityProvider resources.
LDAPPhasePending LDAPIdentityProviderPhase = "Pending"
// LDAPPhaseReady is the phase for an LDAPIdentityProvider resource in a healthy state.
LDAPPhaseReady LDAPIdentityProviderPhase = "Ready"
// LDAPPhaseError is the phase for an LDAPIdentityProvider in an unhealthy state.
LDAPPhaseError LDAPIdentityProviderPhase = "Error"
)
// Status of an LDAP identity provider.
type LDAPIdentityProviderStatus struct {
// Phase summarizes the overall status of the LDAPIdentityProvider.
// +kubebuilder:default=Pending
// +kubebuilder:validation:Enum=Pending;Ready;Error
Phase LDAPIdentityProviderPhase `json:"phase,omitempty"`
// Represents the observations of an identity provider's current state.
// +patchMergeKey=type
// +patchStrategy=merge
// +listType=map
// +listMapKey=type
Conditions []Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
}
type LDAPIdentityProviderBind struct {
// SecretName contains the name of a namespace-local Secret object that provides the username and
// password for an LDAP bind user. This account will be used to perform LDAP searches. The Secret should be
// of type "kubernetes.io/basic-auth" which includes "username" and "password" keys. The username value
// should be the full dn (distinguished name) of your bind account, e.g. "cn=bind-account,ou=users,dc=example,dc=com".
// The password must be non-empty.
// +kubebuilder:validation:MinLength=1
SecretName string `json:"secretName"`
}
type LDAPIdentityProviderUserSearchAttributes struct {
// Username specifies the name of the attribute in the LDAP entry whose value shall become the username
// of the user after a successful authentication. This would typically be the same attribute name used in
// the user search filter, although it can be different. E.g. "mail" or "uid" or "userPrincipalName".
// The value of this field is case-sensitive and must match the case of the attribute name returned by the LDAP
// server in the user's entry. Distinguished names can be used by specifying lower-case "dn". When this field
// is set to "dn" then the LDAPIdentityProviderUserSearch's Filter field cannot be blank, since the default
// value of "dn={}" would not work.
// +kubebuilder:validation:MinLength=1
Username string `json:"username,omitempty"`
// UID specifies the name of the attribute in the LDAP entry which whose value shall be used to uniquely
// identify the user within this LDAP provider after a successful authentication. E.g. "uidNumber" or "objectGUID".
// The value of this field is case-sensitive and must match the case of the attribute name returned by the LDAP
// server in the user's entry. Distinguished names can be used by specifying lower-case "dn".
// +kubebuilder:validation:MinLength=1
UID string `json:"uid,omitempty"`
}
type LDAPIdentityProviderGroupSearchAttributes struct {
// GroupName specifies the name of the attribute in the LDAP entries whose value shall become a group name
// in the user's list of groups after a successful authentication.
// The value of this field is case-sensitive and must match the case of the attribute name returned by the LDAP
// server in the user's entry. E.g. "cn" for common name. Distinguished names can be used by specifying lower-case "dn".
// Optional. When not specified, the default will act as if the GroupName were specified as "dn" (distinguished name).
// +optional
GroupName string `json:"groupName,omitempty"`
}
type LDAPIdentityProviderUserSearch struct {
// Base is the dn (distinguished name) that should be used as the search base when searching for users.
// E.g. "ou=users,dc=example,dc=com".
// +kubebuilder:validation:MinLength=1
Base string `json:"base,omitempty"`
// Filter is the LDAP search filter which should be applied when searching for users. The pattern "{}" must occur
// in the filter at least once and will be dynamically replaced by the username for which the search is being run.
// E.g. "mail={}" or "&(objectClass=person)(uid={})". For more information about LDAP filters, see
// https://ldap.com/ldap-filters.
// Note that the dn (distinguished name) is not an attribute of an entry, so "dn={}" cannot be used.
// Optional. When not specified, the default will act as if the Filter were specified as the value from
// Attributes.Username appended by "={}". When the Attributes.Username is set to "dn" then the Filter must be
// explicitly specified, since the default value of "dn={}" would not work.
// +optional
Filter string `json:"filter,omitempty"`
// Attributes specifies how the user's information should be read from the LDAP entry which was found as
// the result of the user search.
// +optional
Attributes LDAPIdentityProviderUserSearchAttributes `json:"attributes,omitempty"`
}
type LDAPIdentityProviderGroupSearch struct {
// Base is the dn (distinguished name) that should be used as the search base when searching for groups. E.g.
// "ou=groups,dc=example,dc=com". When not specified, no group search will be performed and
// authenticated users will not belong to any groups from the LDAP provider. Also, when not specified,
// the values of Filter and Attributes are ignored.
// +optional
Base string `json:"base,omitempty"`
// Filter is the LDAP search filter which should be applied when searching for groups for a user.
// The pattern "{}" must occur in the filter at least once and will be dynamically replaced by the
// dn (distinguished name) of the user entry found as a result of the user search. E.g. "member={}" or
// "&(objectClass=groupOfNames)(member={})". For more information about LDAP filters, see
// https://ldap.com/ldap-filters.
// Note that the dn (distinguished name) is not an attribute of an entry, so "dn={}" cannot be used.
// Optional. When not specified, the default will act as if the Filter were specified as "member={}".
// +optional
Filter string `json:"filter,omitempty"`
// Attributes specifies how the group's information should be read from each LDAP entry which was found as
// the result of the group search.
// +optional
Attributes LDAPIdentityProviderGroupSearchAttributes `json:"attributes,omitempty"`
}
// Spec for configuring an LDAP identity provider.
type LDAPIdentityProviderSpec struct {
// Host is the hostname of this LDAP identity provider, i.e., where to connect. For example: ldap.example.com:636.
// +kubebuilder:validation:MinLength=1
Host string `json:"host"`
// TLS contains the connection settings for how to establish the connection to the Host.
TLS *TLSSpec `json:"tls,omitempty"`
// Bind contains the configuration for how to provide access credentials during an initial bind to the LDAP server
// to be allowed to perform searches and binds to validate a user's credentials during a user's authentication attempt.
Bind LDAPIdentityProviderBind `json:"bind,omitempty"`
// UserSearch contains the configuration for searching for a user by name in the LDAP provider.
UserSearch LDAPIdentityProviderUserSearch `json:"userSearch,omitempty"`
// GroupSearch contains the configuration for searching for a user's group membership in the LDAP provider.
GroupSearch LDAPIdentityProviderGroupSearch `json:"groupSearch,omitempty"`
}
// LDAPIdentityProvider describes the configuration of an upstream Lightweight Directory Access
// Protocol (LDAP) identity provider.
// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:resource:categories=pinniped;pinniped-idp;pinniped-idps
// +kubebuilder:printcolumn:name="Host",type=string,JSONPath=`.spec.host`
// +kubebuilder:printcolumn:name="Status",type=string,JSONPath=`.status.phase`
// +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp`
// +kubebuilder:subresource:status
type LDAPIdentityProvider struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
// Spec for configuring the identity provider.
Spec LDAPIdentityProviderSpec `json:"spec"`
// Status of the identity provider.
Status LDAPIdentityProviderStatus `json:"status,omitempty"`
}
// List of LDAPIdentityProvider objects.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type LDAPIdentityProviderList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []LDAPIdentityProvider `json:"items"`
}

View File

@@ -1,75 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
// ConditionStatus is effectively an enum type for Condition.Status.
type ConditionStatus string
// These are valid condition statuses. "ConditionTrue" means a resource is in the condition.
// "ConditionFalse" means a resource is not in the condition. "ConditionUnknown" means kubernetes
// can't decide if a resource is in the condition or not. In the future, we could add other
// intermediate conditions, e.g. ConditionDegraded.
const (
ConditionTrue ConditionStatus = "True"
ConditionFalse ConditionStatus = "False"
ConditionUnknown ConditionStatus = "Unknown"
)
// Condition status of a resource (mirrored from the metav1.Condition type added in Kubernetes 1.19). In a future API
// version we can switch to using the upstream type.
// See https://github.com/kubernetes/apimachinery/blob/v0.19.0/pkg/apis/meta/v1/types.go#L1353-L1413.
type Condition struct {
// type of condition in CamelCase or in foo.example.com/CamelCase.
// ---
// Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be
// useful (see .node.status.conditions), the ability to deconflict is important.
// The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
// +required
// +kubebuilder:validation:Required
// +kubebuilder:validation:Pattern=`^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$`
// +kubebuilder:validation:MaxLength=316
Type string `json:"type"`
// status of the condition, one of True, False, Unknown.
// +required
// +kubebuilder:validation:Required
// +kubebuilder:validation:Enum=True;False;Unknown
Status ConditionStatus `json:"status"`
// observedGeneration represents the .metadata.generation that the condition was set based upon.
// For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
// with respect to the current state of the instance.
// +optional
// +kubebuilder:validation:Minimum=0
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
// lastTransitionTime is the last time the condition transitioned from one status to another.
// This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
// +required
// +kubebuilder:validation:Required
// +kubebuilder:validation:Type=string
// +kubebuilder:validation:Format=date-time
LastTransitionTime metav1.Time `json:"lastTransitionTime"`
// reason contains a programmatic identifier indicating the reason for the condition's last transition.
// Producers of specific condition types may define expected values and meanings for this field,
// and whether the values are considered a guaranteed API.
// The value should be a CamelCase string.
// This field may not be empty.
// +required
// +kubebuilder:validation:Required
// +kubebuilder:validation:MaxLength=1024
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:Pattern=`^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$`
Reason string `json:"reason"`
// message is a human readable message indicating details about the transition.
// This may be an empty string.
// +required
// +kubebuilder:validation:Required
// +kubebuilder:validation:MaxLength=32768
Message string `json:"message"`
}

View File

@@ -1,123 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
type OIDCIdentityProviderPhase string
const (
// PhasePending is the default phase for newly-created OIDCIdentityProvider resources.
PhasePending OIDCIdentityProviderPhase = "Pending"
// PhaseReady is the phase for an OIDCIdentityProvider resource in a healthy state.
PhaseReady OIDCIdentityProviderPhase = "Ready"
// PhaseError is the phase for an OIDCIdentityProvider in an unhealthy state.
PhaseError OIDCIdentityProviderPhase = "Error"
)
// Status of an OIDC identity provider.
type OIDCIdentityProviderStatus struct {
// Phase summarizes the overall status of the OIDCIdentityProvider.
// +kubebuilder:default=Pending
// +kubebuilder:validation:Enum=Pending;Ready;Error
Phase OIDCIdentityProviderPhase `json:"phase,omitempty"`
// Represents the observations of an identity provider's current state.
// +patchMergeKey=type
// +patchStrategy=merge
// +listType=map
// +listMapKey=type
Conditions []Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
}
// OIDCAuthorizationConfig provides information about how to form the OAuth2 authorization
// request parameters.
type OIDCAuthorizationConfig struct {
// AdditionalScopes are the scopes in addition to "openid" that will be requested as part of the authorization
// request flow with an OIDC identity provider. By default only the "openid" scope will be requested.
// +optional
AdditionalScopes []string `json:"additionalScopes,omitempty"`
}
// OIDCClaims provides a mapping from upstream claims into identities.
type OIDCClaims struct {
// Groups provides the name of the token claim that will be used to ascertain the groups to which
// an identity belongs.
// +optional
Groups string `json:"groups"`
// Username provides the name of the token claim that will be used to ascertain an identity's
// username.
// +optional
Username string `json:"username"`
}
// OIDCClient contains information about an OIDC client (e.g., client ID and client
// secret).
type OIDCClient struct {
// SecretName contains the name of a namespace-local Secret object that provides the clientID and
// clientSecret for an OIDC client. If only the SecretName is specified in an OIDCClient
// struct, then it is expected that the Secret is of type "secrets.pinniped.dev/oidc-client" with keys
// "clientID" and "clientSecret".
SecretName string `json:"secretName"`
}
// Spec for configuring an OIDC identity provider.
type OIDCIdentityProviderSpec struct {
// Issuer is the issuer URL of this OIDC identity provider, i.e., where to fetch
// /.well-known/openid-configuration.
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:Pattern=`^https://`
Issuer string `json:"issuer"`
// TLS configuration for discovery/JWKS requests to the issuer.
// +optional
TLS *TLSSpec `json:"tls,omitempty"`
// AuthorizationConfig holds information about how to form the OAuth2 authorization request
// parameters to be used with this OIDC identity provider.
// +optional
AuthorizationConfig OIDCAuthorizationConfig `json:"authorizationConfig,omitempty"`
// Claims provides the names of token claims that will be used when inspecting an identity from
// this OIDC identity provider.
// +optional
Claims OIDCClaims `json:"claims"`
// OIDCClient contains OIDC client information to be used used with this OIDC identity
// provider.
Client OIDCClient `json:"client"`
}
// OIDCIdentityProvider describes the configuration of an upstream OpenID Connect identity provider.
// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:resource:categories=pinniped;pinniped-idp;pinniped-idps
// +kubebuilder:printcolumn:name="Issuer",type=string,JSONPath=`.spec.issuer`
// +kubebuilder:printcolumn:name="Status",type=string,JSONPath=`.status.phase`
// +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp`
// +kubebuilder:subresource:status
type OIDCIdentityProvider struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
// Spec for configuring the identity provider.
Spec OIDCIdentityProviderSpec `json:"spec"`
// Status of the identity provider.
Status OIDCIdentityProviderStatus `json:"status,omitempty"`
}
// List of OIDCIdentityProvider objects.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type OIDCIdentityProviderList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []OIDCIdentityProvider `json:"items"`
}

View File

@@ -1,11 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package v1alpha1
// Configuration for TLS parameters related to identity provider integration.
type TLSSpec struct {
// X.509 Certificate Authority (base64-encoded PEM bundle). If omitted, a default set of system roots will be trusted.
// +optional
CertificateAuthorityData string `json:"certificateAuthorityData,omitempty"`
}

View File

@@ -1,390 +0,0 @@
// Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
// Package main provides a authentication webhook program.
//
// This webhook is meant to be used in demo settings to play around with
// Pinniped. As well, it can come in handy in integration tests.
//
// This webhook is NOT meant for use in production systems.
package main
import (
"bytes"
"context"
"crypto/tls"
"encoding/csv"
"encoding/json"
"fmt"
"mime"
"net"
"net/http"
"os"
"os/signal"
"strings"
"time"
"golang.org/x/crypto/bcrypt"
authenticationv1beta1 "k8s.io/api/authentication/v1beta1"
k8serrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
kubeinformers "k8s.io/client-go/informers"
corev1informers "k8s.io/client-go/informers/core/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/klog/v2"
"go.pinniped.dev/internal/constable"
"go.pinniped.dev/internal/controller/apicerts"
"go.pinniped.dev/internal/controllerlib"
"go.pinniped.dev/internal/dynamiccert"
"go.pinniped.dev/internal/kubeclient"
"go.pinniped.dev/internal/plog"
)
const (
// This string must match the name of the Namespace declared in the deployment yaml.
namespace = "local-user-authenticator"
// This string must match the name of the Service declared in the deployment yaml.
serviceName = "local-user-authenticator"
singletonWorker = 1
defaultResyncInterval = 3 * time.Minute
invalidRequest = constable.Error("invalid request")
)
type webhook struct {
certProvider dynamiccert.Private
secretInformer corev1informers.SecretInformer
}
func newWebhook(
certProvider dynamiccert.Private,
secretInformer corev1informers.SecretInformer,
) *webhook {
return &webhook{
certProvider: certProvider,
secretInformer: secretInformer,
}
}
// start runs the webhook in a separate goroutine and returns whether or not the
// webhook was started successfully.
func (w *webhook) start(ctx context.Context, l net.Listener) error {
server := http.Server{
Handler: w,
TLSConfig: &tls.Config{
MinVersion: tls.VersionTLS13,
GetCertificate: func(_ *tls.ClientHelloInfo) (*tls.Certificate, error) {
certPEM, keyPEM := w.certProvider.CurrentCertKeyContent()
cert, err := tls.X509KeyPair(certPEM, keyPEM)
return &cert, err
},
},
}
errCh := make(chan error)
go func() {
// Per ListenAndServeTLS doc, the {cert,key}File parameters can be empty
// since we want to use the certs from http.Server.TLSConfig.
errCh <- server.ServeTLS(l, "", "")
}()
go func() {
select {
case err := <-errCh:
plog.Debug("server exited", "err", err)
case <-ctx.Done():
plog.Debug("server context cancelled", "err", ctx.Err())
if err := server.Shutdown(context.Background()); err != nil {
plog.Debug("server shutdown failed", "err", err)
}
}
}()
return nil
}
func (w *webhook) ServeHTTP(rsp http.ResponseWriter, req *http.Request) {
username, password, err := getUsernameAndPasswordFromRequest(rsp, req)
if err != nil {
return
}
defer func() { _ = req.Body.Close() }()
secret, err := w.secretInformer.Lister().Secrets(namespace).Get(username)
notFound := k8serrors.IsNotFound(err)
if err != nil && !notFound {
plog.Debug("could not get secret", "err", err)
rsp.WriteHeader(http.StatusInternalServerError)
return
}
if notFound {
plog.Debug("user not found")
respondWithUnauthenticated(rsp)
return
}
passwordMatches := bcrypt.CompareHashAndPassword(
secret.Data["passwordHash"],
[]byte(password),
) == nil
if !passwordMatches {
plog.Debug("authentication failed: wrong password")
respondWithUnauthenticated(rsp)
return
}
groups := []string{}
groupsBuf := bytes.NewBuffer(secret.Data["groups"])
if groupsBuf.Len() > 0 {
groupsCSVReader := csv.NewReader(groupsBuf)
groups, err = groupsCSVReader.Read()
if err != nil {
plog.Debug("could not read groups", "err", err)
rsp.WriteHeader(http.StatusInternalServerError)
return
}
trimLeadingAndTrailingWhitespace(groups)
}
plog.Debug("successful authentication")
respondWithAuthenticated(rsp, secret.ObjectMeta.Name, groups)
}
func getUsernameAndPasswordFromRequest(rsp http.ResponseWriter, req *http.Request) (string, string, error) {
if req.URL.Path != "/authenticate" {
plog.Debug("received request path other than /authenticate", "path", req.URL.Path)
rsp.WriteHeader(http.StatusNotFound)
return "", "", invalidRequest
}
if req.Method != http.MethodPost {
plog.Debug("received request method other than post", "method", req.Method)
rsp.WriteHeader(http.StatusMethodNotAllowed)
return "", "", invalidRequest
}
if !headerContains(req, "Content-Type", "application/json") {
plog.Debug("content type is not application/json", "Content-Type", req.Header.Values("Content-Type"))
rsp.WriteHeader(http.StatusUnsupportedMediaType)
return "", "", invalidRequest
}
if !headerContains(req, "Accept", "application/json") &&
!headerContains(req, "Accept", "application/*") &&
!headerContains(req, "Accept", "*/*") {
plog.Debug("client does not accept application/json", "Accept", req.Header.Values("Accept"))
rsp.WriteHeader(http.StatusUnsupportedMediaType)
return "", "", invalidRequest
}
if req.Body == nil {
plog.Debug("invalid nil body")
rsp.WriteHeader(http.StatusBadRequest)
return "", "", invalidRequest
}
var body authenticationv1beta1.TokenReview
if err := json.NewDecoder(req.Body).Decode(&body); err != nil {
plog.Debug("failed to decode body", "err", err)
rsp.WriteHeader(http.StatusBadRequest)
return "", "", invalidRequest
}
if body.APIVersion != authenticationv1beta1.SchemeGroupVersion.String() {
plog.Debug("invalid TokenReview apiVersion", "apiVersion", body.APIVersion)
rsp.WriteHeader(http.StatusBadRequest)
return "", "", invalidRequest
}
if body.Kind != "TokenReview" {
plog.Debug("invalid TokenReview kind", "kind", body.Kind)
rsp.WriteHeader(http.StatusBadRequest)
return "", "", invalidRequest
}
tokenSegments := strings.SplitN(body.Spec.Token, ":", 2)
if len(tokenSegments) != 2 {
plog.Debug("bad token format in request")
rsp.WriteHeader(http.StatusBadRequest)
return "", "", invalidRequest
}
return tokenSegments[0], tokenSegments[1], nil
}
func headerContains(req *http.Request, headerName, s string) bool {
headerValues := req.Header.Values(headerName)
for i := range headerValues {
mimeTypes := strings.Split(headerValues[i], ",")
for _, mimeType := range mimeTypes {
mediaType, _, _ := mime.ParseMediaType(mimeType)
if mediaType == s {
return true
}
}
}
return false
}
func trimLeadingAndTrailingWhitespace(ss []string) {
for i := range ss {
ss[i] = strings.TrimSpace(ss[i])
}
}
func respondWithUnauthenticated(rsp http.ResponseWriter) {
rsp.Header().Add("Content-Type", "application/json")
body := authenticationv1beta1.TokenReview{
TypeMeta: metav1.TypeMeta{
Kind: "TokenReview",
APIVersion: authenticationv1beta1.SchemeGroupVersion.String(),
},
Status: authenticationv1beta1.TokenReviewStatus{
Authenticated: false,
},
}
if err := json.NewEncoder(rsp).Encode(body); err != nil {
plog.Debug("could not encode response", "err", err)
rsp.WriteHeader(http.StatusInternalServerError)
}
}
func respondWithAuthenticated(
rsp http.ResponseWriter,
username string,
groups []string,
) {
rsp.Header().Add("Content-Type", "application/json")
body := authenticationv1beta1.TokenReview{
TypeMeta: metav1.TypeMeta{
Kind: "TokenReview",
APIVersion: authenticationv1beta1.SchemeGroupVersion.String(),
},
Status: authenticationv1beta1.TokenReviewStatus{
Authenticated: true,
User: authenticationv1beta1.UserInfo{
Username: username,
Groups: groups,
},
},
}
if err := json.NewEncoder(rsp).Encode(body); err != nil {
plog.Debug("could not encode response", "err", err)
rsp.WriteHeader(http.StatusInternalServerError)
}
}
func startControllers(
ctx context.Context,
dynamicCertProvider dynamiccert.Private,
kubeClient kubernetes.Interface,
kubeInformers kubeinformers.SharedInformerFactory,
) {
aVeryLongTime := time.Hour * 24 * 365 * 100
const certsSecretResourceName = "local-user-authenticator-tls-serving-certificate"
// Create controller manager.
controllerManager := controllerlib.
NewManager().
WithController(
apicerts.NewCertsManagerController(
namespace,
certsSecretResourceName,
map[string]string{
"app": "local-user-authenticator",
},
kubeClient,
kubeInformers.Core().V1().Secrets(),
controllerlib.WithInformer,
controllerlib.WithInitialEvent,
aVeryLongTime,
"local-user-authenticator CA",
serviceName,
),
singletonWorker,
).
WithController(
apicerts.NewCertsObserverController(
namespace,
certsSecretResourceName,
dynamicCertProvider,
kubeInformers.Core().V1().Secrets(),
controllerlib.WithInformer,
),
singletonWorker,
)
kubeInformers.Start(ctx.Done())
go controllerManager.Start(ctx)
}
func startWebhook(
ctx context.Context,
l net.Listener,
dynamicCertProvider dynamiccert.Private,
secretInformer corev1informers.SecretInformer,
) error {
return newWebhook(dynamicCertProvider, secretInformer).start(ctx, l)
}
func waitForSignal() os.Signal {
signalCh := make(chan os.Signal, 1)
signal.Notify(signalCh, os.Interrupt)
return <-signalCh
}
func run() error {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
client, err := kubeclient.New()
if err != nil {
return fmt.Errorf("cannot create k8s client: %w", err)
}
kubeInformers := kubeinformers.NewSharedInformerFactoryWithOptions(
client.Kubernetes,
defaultResyncInterval,
kubeinformers.WithNamespace(namespace),
)
dynamicCertProvider := dynamiccert.NewServingCert("local-user-authenticator-tls-serving-certificate")
startControllers(ctx, dynamicCertProvider, client.Kubernetes, kubeInformers)
plog.Debug("controllers are ready")
//nolint: gosec // Intentionally binding to all network interfaces.
l, err := net.Listen("tcp", ":8443")
if err != nil {
return fmt.Errorf("cannot create listener: %w", err)
}
defer func() { _ = l.Close() }()
err = startWebhook(ctx, l, dynamicCertProvider, kubeInformers.Core().V1().Secrets())
if err != nil {
return fmt.Errorf("cannot start webhook: %w", err)
}
plog.Debug("webhook is ready", "address", l.Addr().String())
gotSignal := waitForSignal()
plog.Debug("webhook exiting", "signal", gotSignal)
return nil
}
func main() {
// Hardcode the logging level to debug, since this is a test app and it is very helpful to have
// verbose logs to debug test failures.
if err := plog.ValidateAndSetLogLevelGlobally(plog.LevelDebug); err != nil {
klog.Fatal(err)
}
if err := run(); err != nil {
klog.Fatal(err)
}
}

View File

@@ -1,567 +0,0 @@
// Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package main
import (
"bytes"
"context"
"crypto/tls"
"crypto/x509"
"encoding/json"
"fmt"
"io"
"io/ioutil"
"net"
"net/http"
"net/url"
"reflect"
"testing"
"time"
"github.com/stretchr/testify/require"
"golang.org/x/crypto/bcrypt"
authenticationv1beta1 "k8s.io/api/authentication/v1beta1"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
kubeinformers "k8s.io/client-go/informers"
corev1informers "k8s.io/client-go/informers/core/v1"
"k8s.io/client-go/kubernetes"
kubernetesfake "k8s.io/client-go/kubernetes/fake"
"go.pinniped.dev/internal/certauthority"
"go.pinniped.dev/internal/dynamiccert"
)
func TestWebhook(t *testing.T) {
t.Parallel()
const namespace = "local-user-authenticator"
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
user, otherUser, colonUser, noGroupUser, oneGroupUser, passwordUndefinedUser, emptyPasswordUser, invalidPasswordHashUser, undefinedGroupsUser :=
"some-user", "other-user", "colon-user", "no-group-user", "one-group-user", "password-undefined-user", "empty-password-user", "invalid-password-hash-user", "undefined-groups-user"
password, otherPassword, colonPassword, noGroupPassword, oneGroupPassword, undefinedGroupsPassword :=
"some-password", "other-password", "some-:-password", "no-group-password", "one-group-password", "undefined-groups-password"
group0, group1 := "some-group-0", "some-group-1"
groups := group0 + " , " + group1
kubeClient := kubernetesfake.NewSimpleClientset()
addSecretToFakeClientTracker(t, kubeClient, user, password, groups)
addSecretToFakeClientTracker(t, kubeClient, otherUser, otherPassword, groups)
addSecretToFakeClientTracker(t, kubeClient, colonUser, colonPassword, groups)
addSecretToFakeClientTracker(t, kubeClient, noGroupUser, noGroupPassword, "")
addSecretToFakeClientTracker(t, kubeClient, oneGroupUser, oneGroupPassword, group0)
addSecretToFakeClientTracker(t, kubeClient, emptyPasswordUser, "", groups)
require.NoError(t, kubeClient.Tracker().Add(&corev1.Secret{
ObjectMeta: metav1.ObjectMeta{
Name: passwordUndefinedUser,
Namespace: namespace,
},
Data: map[string][]byte{
"groups": []byte(groups),
},
}))
undefinedGroupsUserPasswordHash, err := bcrypt.GenerateFromPassword([]byte(undefinedGroupsPassword), bcrypt.MinCost)
require.NoError(t, err)
require.NoError(t, kubeClient.Tracker().Add(&corev1.Secret{
ObjectMeta: metav1.ObjectMeta{
Name: undefinedGroupsUser,
Namespace: namespace,
},
Data: map[string][]byte{
"passwordHash": undefinedGroupsUserPasswordHash,
},
}))
require.NoError(t, kubeClient.Tracker().Add(&corev1.Secret{
ObjectMeta: metav1.ObjectMeta{
Name: invalidPasswordHashUser,
Namespace: namespace,
},
Data: map[string][]byte{
"groups": []byte(groups),
"passwordHash": []byte("not a valid password hash"),
},
}))
secretInformer := createSecretInformer(ctx, t, kubeClient)
certProvider, caBundle, serverName := newCertProvider(t)
w := newWebhook(certProvider, secretInformer)
l, err := net.Listen("tcp", "127.0.0.1:0")
require.NoError(t, err)
defer func() { _ = l.Close() }()
require.NoError(t, w.start(ctx, l))
client := newClient(caBundle, serverName)
goodURL := fmt.Sprintf("https://%s/authenticate", l.Addr().String())
goodRequestHeaders := map[string][]string{
"Content-Type": {"application/json; charset=UTF-8"},
"Accept": {"application/json, */*"},
}
tests := []struct {
name string
url string
method string
headers map[string][]string
body func() (io.ReadCloser, error)
wantStatus int
wantHeaders map[string][]string
wantBody *authenticationv1beta1.TokenReview
}{
{
name: "success for a user who belongs to multiple groups",
url: goodURL,
method: http.MethodPost,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) { return newTokenReviewBody(user + ":" + password) },
wantStatus: http.StatusOK,
wantHeaders: map[string][]string{"Content-Type": {"application/json"}},
wantBody: authenticatedResponseJSON(user, []string{group0, group1}),
},
{
name: "success for a user who belongs to one groups",
url: goodURL,
method: http.MethodPost,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) { return newTokenReviewBody(oneGroupUser + ":" + oneGroupPassword) },
wantStatus: http.StatusOK,
wantHeaders: map[string][]string{"Content-Type": {"application/json"}},
wantBody: authenticatedResponseJSON(oneGroupUser, []string{group0}),
},
{
name: "success for a user who belongs to no groups",
url: goodURL,
method: http.MethodPost,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) { return newTokenReviewBody(noGroupUser + ":" + noGroupPassword) },
wantStatus: http.StatusOK,
wantHeaders: map[string][]string{"Content-Type": {"application/json"}},
wantBody: authenticatedResponseJSON(noGroupUser, nil),
},
{
name: "wrong username for password",
url: goodURL,
method: http.MethodPost,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) { return newTokenReviewBody(otherUser + ":" + password) },
wantStatus: http.StatusOK,
wantHeaders: map[string][]string{"Content-Type": {"application/json"}},
wantBody: unauthenticatedResponseJSON(),
},
{
name: "when a user has no password hash in the secret",
url: goodURL,
method: http.MethodPost,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) { return newTokenReviewBody(passwordUndefinedUser + ":foo") },
wantStatus: http.StatusOK,
wantHeaders: map[string][]string{"Content-Type": {"application/json"}},
wantBody: unauthenticatedResponseJSON(),
},
{
name: "when a user has an invalid password hash in the secret",
url: goodURL,
method: http.MethodPost,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) { return newTokenReviewBody(invalidPasswordHashUser + ":foo") },
wantStatus: http.StatusOK,
wantHeaders: map[string][]string{"Content-Type": {"application/json"}},
wantBody: unauthenticatedResponseJSON(),
},
{
name: "success for a user has no groups defined in the secret",
url: goodURL,
method: http.MethodPost,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) {
return newTokenReviewBody(undefinedGroupsUser + ":" + undefinedGroupsPassword)
},
wantStatus: http.StatusOK,
wantHeaders: map[string][]string{"Content-Type": {"application/json"}},
wantBody: authenticatedResponseJSON(undefinedGroupsUser, nil),
},
{
name: "when a user has empty string as their password",
url: goodURL,
method: http.MethodPost,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) { return newTokenReviewBody(passwordUndefinedUser + ":foo") },
wantStatus: http.StatusOK,
wantHeaders: map[string][]string{"Content-Type": {"application/json"}},
wantBody: unauthenticatedResponseJSON(),
},
{
name: "wrong password for username",
url: goodURL,
method: http.MethodPost,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) { return newTokenReviewBody(user + ":" + otherPassword) },
wantStatus: http.StatusOK,
wantHeaders: map[string][]string{"Content-Type": {"application/json"}},
wantBody: unauthenticatedResponseJSON(),
},
{
name: "non-existent password for username",
url: goodURL,
method: http.MethodPost,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) { return newTokenReviewBody(user + ":" + "some-non-existent-password") },
wantStatus: http.StatusOK,
wantHeaders: map[string][]string{"Content-Type": {"application/json"}},
wantBody: unauthenticatedResponseJSON(),
},
{
name: "non-existent username",
url: goodURL,
method: http.MethodPost,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) { return newTokenReviewBody("some-non-existent-user" + ":" + password) },
wantStatus: http.StatusOK,
wantHeaders: map[string][]string{"Content-Type": {"application/json"}},
wantBody: unauthenticatedResponseJSON(),
},
{
name: "bad token format (missing colon)",
url: goodURL,
method: http.MethodPost,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) { return newTokenReviewBody(user) },
wantStatus: http.StatusBadRequest,
},
{
name: "password contains colon",
url: goodURL,
method: http.MethodPost,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) { return newTokenReviewBody(colonUser + ":" + colonPassword) },
wantStatus: http.StatusOK,
wantHeaders: map[string][]string{"Content-Type": {"application/json"}},
wantBody: authenticatedResponseJSON(colonUser, []string{group0, group1}),
},
{
name: "bad TokenReview group",
url: goodURL,
method: http.MethodPost,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) {
return newTokenReviewBodyWithGVK(
user+":"+password,
&schema.GroupVersionKind{
Group: "bad group",
Version: authenticationv1beta1.SchemeGroupVersion.Version,
Kind: "TokenReview",
},
)
},
wantStatus: http.StatusBadRequest,
},
{
name: "bad TokenReview version",
url: goodURL,
method: http.MethodPost,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) {
return newTokenReviewBodyWithGVK(
user+":"+password,
&schema.GroupVersionKind{
Group: authenticationv1beta1.SchemeGroupVersion.Group,
Version: "bad version",
Kind: "TokenReview",
},
)
},
wantStatus: http.StatusBadRequest,
},
{
name: "bad TokenReview kind",
url: goodURL,
method: http.MethodPost,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) {
return newTokenReviewBodyWithGVK(
user+":"+password,
&schema.GroupVersionKind{
Group: authenticationv1beta1.SchemeGroupVersion.Group,
Version: authenticationv1beta1.SchemeGroupVersion.Version,
Kind: "wrong-kind",
},
)
},
wantStatus: http.StatusBadRequest,
},
{
name: "bad path",
url: fmt.Sprintf("https://%s/tuna", l.Addr().String()),
method: http.MethodPost,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) { return newTokenReviewBody("some-token") },
wantStatus: http.StatusNotFound,
},
{
name: "bad method",
url: goodURL,
method: http.MethodGet,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) { return newTokenReviewBody("some-token") },
wantStatus: http.StatusMethodNotAllowed,
},
{
name: "bad content type",
url: goodURL,
method: http.MethodPost,
headers: map[string][]string{
"Content-Type": {"application/xml"},
"Accept": {"application/json"},
},
body: func() (io.ReadCloser, error) { return newTokenReviewBody("some-token") },
wantStatus: http.StatusUnsupportedMediaType,
},
{
name: "bad accept",
url: goodURL,
method: http.MethodPost,
headers: map[string][]string{
"Content-Type": {"application/json"},
"Accept": {"application/xml"},
},
body: func() (io.ReadCloser, error) { return newTokenReviewBody("some-token") },
wantStatus: http.StatusUnsupportedMediaType,
},
{
name: "success when there are multiple accepts and one of them is json",
url: goodURL,
method: http.MethodPost,
headers: map[string][]string{
"Content-Type": {"application/json"},
"Accept": {"something/else, application/xml, application/json"},
},
body: func() (io.ReadCloser, error) { return newTokenReviewBody(user + ":" + password) },
wantStatus: http.StatusOK,
wantHeaders: map[string][]string{"Content-Type": {"application/json"}},
wantBody: authenticatedResponseJSON(user, []string{group0, group1}),
},
{
name: "success when there are multiple accepts and one of them is */*",
url: goodURL,
method: http.MethodPost,
headers: map[string][]string{
"Content-Type": {"application/json"},
"Accept": {"something/else, */*, application/foo"},
},
body: func() (io.ReadCloser, error) { return newTokenReviewBody(user + ":" + password) },
wantStatus: http.StatusOK,
wantHeaders: map[string][]string{"Content-Type": {"application/json"}},
wantBody: authenticatedResponseJSON(user, []string{group0, group1}),
},
{
name: "success when there are multiple accepts and one of them is application/*",
url: goodURL,
method: http.MethodPost,
headers: map[string][]string{
"Content-Type": {"application/json"},
"Accept": {"something/else, application/*, application/foo"},
},
body: func() (io.ReadCloser, error) { return newTokenReviewBody(user + ":" + password) },
wantStatus: http.StatusOK,
wantHeaders: map[string][]string{"Content-Type": {"application/json"}},
wantBody: authenticatedResponseJSON(user, []string{group0, group1}),
},
{
name: "bad body",
url: goodURL,
method: http.MethodPost,
headers: goodRequestHeaders,
body: func() (io.ReadCloser, error) { return ioutil.NopCloser(bytes.NewBuffer([]byte("invalid body"))), nil },
wantStatus: http.StatusBadRequest,
},
}
for _, test := range tests {
test := test
t.Run(test.name, func(t *testing.T) {
parsedURL, err := url.Parse(test.url)
require.NoError(t, err)
body, err := test.body()
require.NoError(t, err)
rsp, err := client.Do(&http.Request{
Method: test.method,
URL: parsedURL,
Header: test.headers,
Body: body,
})
require.NoError(t, err)
defer func() { _ = rsp.Body.Close() }()
require.Equal(t, test.wantStatus, rsp.StatusCode)
if test.wantHeaders != nil {
for k, v := range test.wantHeaders {
require.Equal(t, v, rsp.Header.Values(k))
}
}
responseBody, err := ioutil.ReadAll(rsp.Body)
require.NoError(t, err)
if test.wantBody != nil {
require.NoError(t, err)
var tr authenticationv1beta1.TokenReview
require.NoError(t, json.Unmarshal(responseBody, &tr))
require.Equal(t, test.wantBody, &tr)
} else {
require.Empty(t, responseBody)
}
})
}
}
func createSecretInformer(ctx context.Context, t *testing.T, kubeClient kubernetes.Interface) corev1informers.SecretInformer {
t.Helper()
kubeInformers := kubeinformers.NewSharedInformerFactory(kubeClient, 0)
secretInformer := kubeInformers.Core().V1().Secrets()
// We need to call Informer() on the secretInformer to lazily instantiate the
// informer factory before syncing it.
secretInformer.Informer()
kubeInformers.Start(ctx.Done())
informerTypesSynced := kubeInformers.WaitForCacheSync(ctx.Done())
require.True(t, informerTypesSynced[reflect.TypeOf(&corev1.Secret{})])
return secretInformer
}
// newClientProvider returns a dynamiccert.Provider configured
// with valid serving cert, the CA bundle that can be used to verify the serving
// cert, and the server name that can be used to verify the TLS peer.
func newCertProvider(t *testing.T) (dynamiccert.Private, []byte, string) {
t.Helper()
serverName := "local-user-authenticator"
ca, err := certauthority.New(serverName+" CA", time.Hour*24)
require.NoError(t, err)
cert, err := ca.IssueServerCert([]string{serverName}, nil, time.Hour*24)
require.NoError(t, err)
certPEM, keyPEM, err := certauthority.ToPEM(cert)
require.NoError(t, err)
certProvider := dynamiccert.NewServingCert(t.Name())
err = certProvider.SetCertKeyContent(certPEM, keyPEM)
require.NoError(t, err)
return certProvider, ca.Bundle(), serverName
}
// newClient creates an http.Client that can be used to make an HTTPS call to a
// service whose serving certs can be verified by the provided CA bundle.
func newClient(caBundle []byte, serverName string) *http.Client {
rootCAs := x509.NewCertPool()
rootCAs.AppendCertsFromPEM(caBundle)
return &http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{
MinVersion: tls.VersionTLS13,
RootCAs: rootCAs,
ServerName: serverName,
},
},
}
}
// newTokenReviewBody creates an io.ReadCloser that contains a JSON-encodeed
// TokenReview request with expected APIVersion and Kind fields.
func newTokenReviewBody(token string) (io.ReadCloser, error) {
return newTokenReviewBodyWithGVK(
token,
&schema.GroupVersionKind{
Group: authenticationv1beta1.SchemeGroupVersion.Group,
Version: authenticationv1beta1.SchemeGroupVersion.Version,
Kind: "TokenReview",
},
)
}
// newTokenReviewBodyWithGVK creates an io.ReadCloser that contains a
// JSON-encoded TokenReview request. The TypeMeta fields of the TokenReview are
// filled in with the provided gvk.
func newTokenReviewBodyWithGVK(token string, gvk *schema.GroupVersionKind) (io.ReadCloser, error) {
buf := bytes.NewBuffer([]byte{})
tr := authenticationv1beta1.TokenReview{
TypeMeta: metav1.TypeMeta{
APIVersion: gvk.GroupVersion().String(),
Kind: gvk.Kind,
},
Spec: authenticationv1beta1.TokenReviewSpec{
Token: token,
},
}
err := json.NewEncoder(buf).Encode(&tr)
return ioutil.NopCloser(buf), err
}
func unauthenticatedResponseJSON() *authenticationv1beta1.TokenReview {
return &authenticationv1beta1.TokenReview{
TypeMeta: metav1.TypeMeta{
Kind: "TokenReview",
APIVersion: "authentication.k8s.io/v1beta1",
},
Status: authenticationv1beta1.TokenReviewStatus{
Authenticated: false,
},
}
}
func authenticatedResponseJSON(user string, groups []string) *authenticationv1beta1.TokenReview {
return &authenticationv1beta1.TokenReview{
TypeMeta: metav1.TypeMeta{
Kind: "TokenReview",
APIVersion: "authentication.k8s.io/v1beta1",
},
Status: authenticationv1beta1.TokenReviewStatus{
Authenticated: true,
User: authenticationv1beta1.UserInfo{
Username: user,
Groups: groups,
},
},
}
}
func addSecretToFakeClientTracker(t *testing.T, kubeClient *kubernetesfake.Clientset, username, password, groups string) {
passwordHash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.MinCost)
require.NoError(t, err)
secret := &corev1.Secret{
ObjectMeta: metav1.ObjectMeta{
Name: username,
Namespace: namespace,
},
Data: map[string][]byte{
"passwordHash": passwordHash,
"groups": []byte(groups),
},
}
require.NoError(t, kubeClient.Tracker().Add(secret))
}

View File

@@ -1,35 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package main
import (
"os"
"time"
genericapiserver "k8s.io/apiserver/pkg/server"
"k8s.io/client-go/pkg/version"
"k8s.io/client-go/rest"
"k8s.io/component-base/logs"
"k8s.io/klog/v2"
"go.pinniped.dev/internal/concierge/server"
)
func main() {
logs.InitLogs()
defer logs.FlushLogs()
// Dump out the time since compile (mostly useful for benchmarking our local development cycle latency).
var timeSinceCompile time.Duration
if buildDate, err := time.Parse(time.RFC3339, version.Get().BuildDate); err == nil {
timeSinceCompile = time.Since(buildDate).Round(time.Second)
}
klog.Infof("Running %s at %#v (%s since build)", rest.DefaultKubernetesUserAgent(), version.Get(), timeSinceCompile)
ctx := genericapiserver.SetupSignalContext()
if err := server.New(ctx, os.Args[1:], os.Stdout, os.Stderr).Run(); err != nil {
klog.Fatal(err)
}
}

View File

@@ -1,397 +0,0 @@
// Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package main
import (
"context"
"crypto/rand"
"crypto/tls"
"fmt"
"net"
"net/http"
"os"
"os/signal"
"strings"
"time"
appsv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/util/clock"
kubeinformers "k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/pkg/version"
"k8s.io/client-go/rest"
"k8s.io/component-base/logs"
"k8s.io/klog/v2"
"k8s.io/klog/v2/klogr"
configv1alpha1 "go.pinniped.dev/generated/latest/apis/supervisor/config/v1alpha1"
pinnipedclientset "go.pinniped.dev/generated/latest/client/supervisor/clientset/versioned"
pinnipedinformers "go.pinniped.dev/generated/latest/client/supervisor/informers/externalversions"
"go.pinniped.dev/internal/config/supervisor"
"go.pinniped.dev/internal/controller/supervisorconfig"
"go.pinniped.dev/internal/controller/supervisorconfig/generator"
"go.pinniped.dev/internal/controller/supervisorconfig/ldapupstreamwatcher"
"go.pinniped.dev/internal/controller/supervisorconfig/oidcupstreamwatcher"
"go.pinniped.dev/internal/controller/supervisorstorage"
"go.pinniped.dev/internal/controllerlib"
"go.pinniped.dev/internal/deploymentref"
"go.pinniped.dev/internal/downward"
"go.pinniped.dev/internal/groupsuffix"
"go.pinniped.dev/internal/kubeclient"
"go.pinniped.dev/internal/oidc/jwks"
"go.pinniped.dev/internal/oidc/provider"
"go.pinniped.dev/internal/oidc/provider/manager"
"go.pinniped.dev/internal/plog"
"go.pinniped.dev/internal/secret"
)
const (
singletonWorker = 1
defaultResyncInterval = 3 * time.Minute
)
func start(ctx context.Context, l net.Listener, handler http.Handler) {
server := http.Server{Handler: handler}
errCh := make(chan error)
go func() {
errCh <- server.Serve(l)
}()
go func() {
select {
case err := <-errCh:
plog.Debug("server exited", "err", err)
case <-ctx.Done():
plog.Debug("server context cancelled", "err", ctx.Err())
if err := server.Shutdown(context.Background()); err != nil {
plog.Debug("server shutdown failed", "err", err)
}
}
}()
}
func waitForSignal() os.Signal {
signalCh := make(chan os.Signal, 1)
signal.Notify(signalCh, os.Interrupt)
return <-signalCh
}
//nolint:funlen
func startControllers(
ctx context.Context,
cfg *supervisor.Config,
issuerManager *manager.Manager,
dynamicJWKSProvider jwks.DynamicJWKSProvider,
dynamicTLSCertProvider provider.DynamicTLSCertProvider,
dynamicUpstreamIDPProvider provider.DynamicUpstreamIDPProvider,
secretCache *secret.Cache,
supervisorDeployment *appsv1.Deployment,
kubeClient kubernetes.Interface,
pinnipedClient pinnipedclientset.Interface,
kubeInformers kubeinformers.SharedInformerFactory,
pinnipedInformers pinnipedinformers.SharedInformerFactory,
) {
federationDomainInformer := pinnipedInformers.Config().V1alpha1().FederationDomains()
secretInformer := kubeInformers.Core().V1().Secrets()
// Create controller manager.
controllerManager := controllerlib.
NewManager().
WithController(
supervisorstorage.GarbageCollectorController(
clock.RealClock{},
kubeClient,
secretInformer,
controllerlib.WithInformer,
),
singletonWorker,
).
WithController(
supervisorconfig.NewFederationDomainWatcherController(
issuerManager,
clock.RealClock{},
pinnipedClient,
federationDomainInformer,
controllerlib.WithInformer,
),
singletonWorker,
).
WithController(
supervisorconfig.NewJWKSWriterController(
cfg.Labels,
kubeClient,
pinnipedClient,
secretInformer,
federationDomainInformer,
controllerlib.WithInformer,
),
singletonWorker,
).
WithController(
supervisorconfig.NewJWKSObserverController(
dynamicJWKSProvider,
secretInformer,
federationDomainInformer,
controllerlib.WithInformer,
),
singletonWorker,
).
WithController(
supervisorconfig.NewTLSCertObserverController(
dynamicTLSCertProvider,
cfg.NamesConfig.DefaultTLSCertificateSecret,
secretInformer,
federationDomainInformer,
controllerlib.WithInformer,
),
singletonWorker,
).
WithController(
generator.NewSupervisorSecretsController(
supervisorDeployment,
cfg.Labels,
kubeClient,
secretInformer,
func(secret []byte) {
plog.Debug("setting csrf cookie secret")
secretCache.SetCSRFCookieEncoderHashKey(secret)
},
controllerlib.WithInformer,
controllerlib.WithInitialEvent,
),
singletonWorker,
).
WithController(
generator.NewFederationDomainSecretsController(
generator.NewSymmetricSecretHelper(
"pinniped-oidc-provider-hmac-key-",
cfg.Labels,
rand.Reader,
generator.SecretUsageTokenSigningKey,
func(federationDomainIssuer string, symmetricKey []byte) {
plog.Debug("setting hmac secret", "issuer", federationDomainIssuer)
secretCache.SetTokenHMACKey(federationDomainIssuer, symmetricKey)
},
),
func(fd *configv1alpha1.FederationDomainStatus) *corev1.LocalObjectReference {
return &fd.Secrets.TokenSigningKey
},
kubeClient,
pinnipedClient,
secretInformer,
federationDomainInformer,
controllerlib.WithInformer,
),
singletonWorker,
).
WithController(
generator.NewFederationDomainSecretsController(
generator.NewSymmetricSecretHelper(
"pinniped-oidc-provider-upstream-state-signature-key-",
cfg.Labels,
rand.Reader,
generator.SecretUsageStateSigningKey,
func(federationDomainIssuer string, symmetricKey []byte) {
plog.Debug("setting state signature key", "issuer", federationDomainIssuer)
secretCache.SetStateEncoderHashKey(federationDomainIssuer, symmetricKey)
},
),
func(fd *configv1alpha1.FederationDomainStatus) *corev1.LocalObjectReference {
return &fd.Secrets.StateSigningKey
},
kubeClient,
pinnipedClient,
secretInformer,
federationDomainInformer,
controllerlib.WithInformer,
),
singletonWorker,
).
WithController(
generator.NewFederationDomainSecretsController(
generator.NewSymmetricSecretHelper(
"pinniped-oidc-provider-upstream-state-encryption-key-",
cfg.Labels,
rand.Reader,
generator.SecretUsageStateEncryptionKey,
func(federationDomainIssuer string, symmetricKey []byte) {
plog.Debug("setting state encryption key", "issuer", federationDomainIssuer)
secretCache.SetStateEncoderBlockKey(federationDomainIssuer, symmetricKey)
},
),
func(fd *configv1alpha1.FederationDomainStatus) *corev1.LocalObjectReference {
return &fd.Secrets.StateEncryptionKey
},
kubeClient,
pinnipedClient,
secretInformer,
federationDomainInformer,
controllerlib.WithInformer,
),
singletonWorker,
).
WithController(
oidcupstreamwatcher.New(
dynamicUpstreamIDPProvider,
pinnipedClient,
pinnipedInformers.IDP().V1alpha1().OIDCIdentityProviders(),
secretInformer,
klogr.New(),
controllerlib.WithInformer,
),
singletonWorker).
WithController(
ldapupstreamwatcher.New(
dynamicUpstreamIDPProvider,
pinnipedClient,
pinnipedInformers.IDP().V1alpha1().LDAPIdentityProviders(),
secretInformer,
controllerlib.WithInformer,
),
singletonWorker)
kubeInformers.Start(ctx.Done())
pinnipedInformers.Start(ctx.Done())
// Wait until the caches are synced before returning.
kubeInformers.WaitForCacheSync(ctx.Done())
pinnipedInformers.WaitForCacheSync(ctx.Done())
go controllerManager.Start(ctx)
}
func run(podInfo *downward.PodInfo, cfg *supervisor.Config) error {
serverInstallationNamespace := podInfo.Namespace
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
dref, supervisorDeployment, err := deploymentref.New(podInfo)
if err != nil {
return fmt.Errorf("cannot create deployment ref: %w", err)
}
client, err := kubeclient.New(
dref,
kubeclient.WithMiddleware(groupsuffix.New(*cfg.APIGroupSuffix)),
)
if err != nil {
return fmt.Errorf("cannot create k8s client: %w", err)
}
kubeInformers := kubeinformers.NewSharedInformerFactoryWithOptions(
client.Kubernetes,
defaultResyncInterval,
kubeinformers.WithNamespace(serverInstallationNamespace),
)
pinnipedInformers := pinnipedinformers.NewSharedInformerFactoryWithOptions(
client.PinnipedSupervisor,
defaultResyncInterval,
pinnipedinformers.WithNamespace(serverInstallationNamespace),
)
// Serve the /healthz endpoint and make all other paths result in 404.
healthMux := http.NewServeMux()
healthMux.Handle("/healthz", http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
_, _ = writer.Write([]byte("ok"))
}))
dynamicJWKSProvider := jwks.NewDynamicJWKSProvider()
dynamicTLSCertProvider := provider.NewDynamicTLSCertProvider()
dynamicUpstreamIDPProvider := provider.NewDynamicUpstreamIDPProvider()
secretCache := secret.Cache{}
// OIDC endpoints will be served by the oidProvidersManager, and any non-OIDC paths will fallback to the healthMux.
oidProvidersManager := manager.NewManager(
healthMux,
dynamicJWKSProvider,
dynamicUpstreamIDPProvider,
&secretCache,
client.Kubernetes.CoreV1().Secrets(serverInstallationNamespace),
)
startControllers(
ctx,
cfg,
oidProvidersManager,
dynamicJWKSProvider,
dynamicTLSCertProvider,
dynamicUpstreamIDPProvider,
&secretCache,
supervisorDeployment,
client.Kubernetes,
client.PinnipedSupervisor,
kubeInformers,
pinnipedInformers,
)
//nolint: gosec // Intentionally binding to all network interfaces.
httpListener, err := net.Listen("tcp", ":8080")
if err != nil {
return fmt.Errorf("cannot create listener: %w", err)
}
defer func() { _ = httpListener.Close() }()
start(ctx, httpListener, oidProvidersManager)
//nolint: gosec // Intentionally binding to all network interfaces.
httpsListener, err := tls.Listen("tcp", ":8443", &tls.Config{
MinVersion: tls.VersionTLS12, // Allow v1.2 because clients like the default `curl` on MacOS don't support 1.3 yet.
GetCertificate: func(info *tls.ClientHelloInfo) (*tls.Certificate, error) {
cert := dynamicTLSCertProvider.GetTLSCert(strings.ToLower(info.ServerName))
defaultCert := dynamicTLSCertProvider.GetDefaultTLSCert()
plog.Debug("GetCertificate called for port 8443",
"info.ServerName", info.ServerName,
"foundSNICert", cert != nil,
"foundDefaultCert", defaultCert != nil,
)
if cert == nil {
cert = defaultCert
}
return cert, nil
},
})
if err != nil {
return fmt.Errorf("cannot create listener: %w", err)
}
defer func() { _ = httpsListener.Close() }()
start(ctx, httpsListener, oidProvidersManager)
plog.Debug("supervisor is ready",
"httpAddress", httpListener.Addr().String(),
"httpsAddress", httpsListener.Addr().String(),
)
gotSignal := waitForSignal()
plog.Debug("supervisor exiting", "signal", gotSignal)
return nil
}
func main() {
logs.InitLogs()
defer logs.FlushLogs()
plog.RemoveKlogGlobalFlags() // move this whenever the below code gets refactored to use cobra
klog.Infof("Running %s at %#v", rest.DefaultKubernetesUserAgent(), version.Get())
klog.Infof("Command-line arguments were: %s %s %s", os.Args[0], os.Args[1], os.Args[2])
// Discover in which namespace we are installed.
podInfo, err := downward.Load(os.Args[1])
if err != nil {
klog.Fatal(fmt.Errorf("could not read pod metadata: %w", err))
}
// Read the server config file.
cfg, err := supervisor.FromPath(os.Args[2])
if err != nil {
klog.Fatal(fmt.Errorf("could not load config: %w", err))
}
if err := run(podInfo, cfg); err != nil {
klog.Fatal(err)
}
}

View File

@@ -1,22 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"github.com/spf13/cobra"
)
//nolint: gochecknoglobals
var alphaCmd = &cobra.Command{
Use: "alpha",
Short: "alpha",
Long: "alpha subcommands (syntax or flags are still subject to change)",
SilenceUsage: true, // do not print usage message when commands fail
Hidden: true,
}
//nolint: gochecknoinits
func init() {
rootCmd.AddCommand(alphaCmd)
}

View File

@@ -1,30 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import "github.com/spf13/cobra"
// mustMarkRequired marks the given flags as required on the provided cobra.Command. If any of the names are wrong, it panics.
func mustMarkRequired(cmd *cobra.Command, flags ...string) {
for _, flag := range flags {
if err := cmd.MarkFlagRequired(flag); err != nil {
panic(err)
}
}
}
// mustMarkHidden marks the given flags as hidden on the provided cobra.Command. If any of the names are wrong, it panics.
func mustMarkHidden(cmd *cobra.Command, flags ...string) {
for _, flag := range flags {
if err := cmd.Flags().MarkHidden(flag); err != nil {
panic(err)
}
}
}
func mustMarkDeprecated(cmd *cobra.Command, flag, usageMessage string) {
if err := cmd.Flags().MarkDeprecated(flag, usageMessage); err != nil {
panic(err)
}
}

View File

@@ -1,21 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"testing"
"github.com/spf13/cobra"
"github.com/stretchr/testify/require"
)
func TestMustMarkRequired(t *testing.T) {
require.NotPanics(t, func() { mustMarkRequired(&cobra.Command{}) })
require.NotPanics(t, func() {
cmd := &cobra.Command{}
cmd.Flags().String("known-flag", "", "")
mustMarkRequired(cmd, "known-flag")
})
require.Panics(t, func() { mustMarkRequired(&cobra.Command{}, "unknown-flag") })
}

View File

@@ -1,106 +0,0 @@
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"bytes"
"crypto/x509"
"flag"
"fmt"
"io/ioutil"
"strings"
"github.com/spf13/pflag"
configv1alpha1 "go.pinniped.dev/generated/latest/apis/concierge/config/v1alpha1"
)
// conciergeModeFlag represents the method by which we should connect to the Concierge on a cluster during login.
// this is meant to be a valid flag.Value implementation.
type conciergeModeFlag int
var _ flag.Value = new(conciergeModeFlag)
const (
modeUnknown conciergeModeFlag = iota
modeTokenCredentialRequestAPI
modeImpersonationProxy
)
func (f *conciergeModeFlag) String() string {
switch *f {
case modeImpersonationProxy:
return "ImpersonationProxy"
case modeTokenCredentialRequestAPI:
return "TokenCredentialRequestAPI"
case modeUnknown:
fallthrough
default:
return "TokenCredentialRequestAPI"
}
}
func (f *conciergeModeFlag) Set(s string) error {
if strings.EqualFold(s, "") {
*f = modeUnknown
return nil
}
if strings.EqualFold(s, "TokenCredentialRequestAPI") {
*f = modeTokenCredentialRequestAPI
return nil
}
if strings.EqualFold(s, "ImpersonationProxy") {
*f = modeImpersonationProxy
return nil
}
return fmt.Errorf("invalid mode %q, valid modes are TokenCredentialRequestAPI and ImpersonationProxy", s)
}
func (f *conciergeModeFlag) Type() string {
return "mode"
}
// MatchesFrontend returns true iff the flag matches the type of the provided frontend.
func (f *conciergeModeFlag) MatchesFrontend(frontend *configv1alpha1.CredentialIssuerFrontend) bool {
switch *f {
case modeImpersonationProxy:
return frontend.Type == configv1alpha1.ImpersonationProxyFrontendType
case modeTokenCredentialRequestAPI:
return frontend.Type == configv1alpha1.TokenCredentialRequestAPIFrontendType
case modeUnknown:
fallthrough
default:
return true
}
}
// caBundlePathsVar represents a list of CA bundle paths, which load from disk when the flag is populated.
type caBundleFlag []byte
var _ pflag.Value = new(caBundleFlag)
func (f *caBundleFlag) String() string {
return string(*f)
}
func (f *caBundleFlag) Set(path string) error {
pem, err := ioutil.ReadFile(path)
if err != nil {
return fmt.Errorf("could not read CA bundle path: %w", err)
}
pool := x509.NewCertPool()
if !pool.AppendCertsFromPEM(pem) {
return fmt.Errorf("failed to load any CA certificates from %q", path)
}
if len(*f) == 0 {
*f = pem
return nil
}
*f = bytes.Join([][]byte{*f, pem}, []byte("\n"))
return nil
}
func (f *caBundleFlag) Type() string {
return "path"
}

View File

@@ -1,73 +0,0 @@
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"bytes"
"fmt"
"io/ioutil"
"path/filepath"
"testing"
"time"
"github.com/stretchr/testify/require"
configv1alpha1 "go.pinniped.dev/generated/latest/apis/concierge/config/v1alpha1"
"go.pinniped.dev/internal/certauthority"
"go.pinniped.dev/internal/testutil"
)
func TestConciergeModeFlag(t *testing.T) {
var f conciergeModeFlag
require.Equal(t, "mode", f.Type())
require.Equal(t, modeUnknown, f)
require.NoError(t, f.Set(""))
require.Equal(t, modeUnknown, f)
require.EqualError(t, f.Set("foo"), `invalid mode "foo", valid modes are TokenCredentialRequestAPI and ImpersonationProxy`)
require.True(t, f.MatchesFrontend(&configv1alpha1.CredentialIssuerFrontend{Type: configv1alpha1.TokenCredentialRequestAPIFrontendType}))
require.True(t, f.MatchesFrontend(&configv1alpha1.CredentialIssuerFrontend{Type: configv1alpha1.ImpersonationProxyFrontendType}))
require.NoError(t, f.Set("TokenCredentialRequestAPI"))
require.Equal(t, modeTokenCredentialRequestAPI, f)
require.Equal(t, "TokenCredentialRequestAPI", f.String())
require.True(t, f.MatchesFrontend(&configv1alpha1.CredentialIssuerFrontend{Type: configv1alpha1.TokenCredentialRequestAPIFrontendType}))
require.False(t, f.MatchesFrontend(&configv1alpha1.CredentialIssuerFrontend{Type: configv1alpha1.ImpersonationProxyFrontendType}))
require.NoError(t, f.Set("tokencredentialrequestapi"))
require.Equal(t, modeTokenCredentialRequestAPI, f)
require.Equal(t, "TokenCredentialRequestAPI", f.String())
require.NoError(t, f.Set("ImpersonationProxy"))
require.Equal(t, modeImpersonationProxy, f)
require.Equal(t, "ImpersonationProxy", f.String())
require.False(t, f.MatchesFrontend(&configv1alpha1.CredentialIssuerFrontend{Type: configv1alpha1.TokenCredentialRequestAPIFrontendType}))
require.True(t, f.MatchesFrontend(&configv1alpha1.CredentialIssuerFrontend{Type: configv1alpha1.ImpersonationProxyFrontendType}))
require.NoError(t, f.Set("impersonationproxy"))
require.Equal(t, modeImpersonationProxy, f)
require.Equal(t, "ImpersonationProxy", f.String())
}
func TestCABundleFlag(t *testing.T) {
testCA, err := certauthority.New("Test CA", 1*time.Hour)
require.NoError(t, err)
tmpdir := testutil.TempDir(t)
emptyFilePath := filepath.Join(tmpdir, "empty")
require.NoError(t, ioutil.WriteFile(emptyFilePath, []byte{}, 0600))
testCAPath := filepath.Join(tmpdir, "testca.pem")
require.NoError(t, ioutil.WriteFile(testCAPath, testCA.Bundle(), 0600))
f := caBundleFlag{}
require.Equal(t, "path", f.Type())
require.Equal(t, "", f.String())
require.EqualError(t, f.Set("./does/not/exist"), "could not read CA bundle path: open ./does/not/exist: no such file or directory")
require.EqualError(t, f.Set(emptyFilePath), fmt.Sprintf("failed to load any CA certificates from %q", emptyFilePath))
require.NoError(t, f.Set(testCAPath))
require.Equal(t, 1, bytes.Count(f, []byte("BEGIN CERTIFICATE")))
require.NoError(t, f.Set(testCAPath))
require.Equal(t, 2, bytes.Count(f, []byte("BEGIN CERTIFICATE")))
}

View File

@@ -1,114 +0,0 @@
// Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"bufio"
"bytes"
"fmt"
"io"
"strings"
"github.com/spf13/cobra"
"github.com/spf13/cobra/doc"
)
//nolint: gochecknoinits
func init() {
rootCmd.AddCommand(generateMarkdownHelpCommand())
}
func generateMarkdownHelpCommand() *cobra.Command {
return &cobra.Command{
Args: cobra.NoArgs,
Use: "generate-markdown-help",
Short: "Generate markdown help for the current set of non-hidden CLI commands",
SilenceUsage: true,
Hidden: true,
RunE: runGenerateMarkdownHelp,
}
}
func runGenerateMarkdownHelp(cmd *cobra.Command, _ []string) error {
var generated bytes.Buffer
if err := generate(&generated); err != nil {
return err
}
if err := write(cmd.OutOrStdout(), &generated, "###### Auto generated by spf13/cobra"); err != nil {
return err
}
return nil
}
func generate(w io.Writer) error {
if err := generateHeader(w); err != nil {
return err
}
if err := generateCommand(w, rootCmd); err != nil {
return err
}
return nil
}
func generateHeader(w io.Writer) error {
_, err := fmt.Fprintf(w, `---
title: Command-Line Options Reference
description: Reference for the `+"`pinniped`"+` command-line tool
cascade:
layout: docs
menu:
docs:
name: Command-Line Options
weight: 30
parent: reference
---
`)
return err
}
func generateCommand(w io.Writer, command *cobra.Command) error {
for _, command := range command.Commands() {
// if this node is hidden, don't traverse it or its descendents
if command.Hidden {
continue
}
// generate children
if err := generateCommand(w, command); err != nil {
return err
}
// generate self, but only if we are a command that people would run to do something interesting
if command.Run != nil || command.RunE != nil {
if err := doc.GenMarkdownCustom(command, w, func(_ string) string { return "" }); err != nil {
return err
}
}
}
return nil
}
func write(w io.Writer, r io.Reader, unwantedPrefixes ...string) error {
s := bufio.NewScanner(r)
for s.Scan() {
line := s.Text()
if !containsPrefix(line, unwantedPrefixes) {
if _, err := fmt.Fprintln(w, line); err != nil {
return err
}
}
}
return s.Err()
}
func containsPrefix(s string, prefixes []string) bool {
for _, prefix := range prefixes {
if strings.HasPrefix(s, prefix) {
return true
}
}
return false
}

View File

@@ -1,16 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"github.com/spf13/cobra"
)
//nolint: gochecknoglobals
var getCmd = &cobra.Command{Use: "get", Short: "get"}
//nolint: gochecknoinits
func init() {
rootCmd.AddCommand(getCmd)
}

View File

@@ -1,43 +0,0 @@
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"k8s.io/client-go/tools/clientcmd"
conciergeclientset "go.pinniped.dev/generated/latest/client/concierge/clientset/versioned"
"go.pinniped.dev/internal/groupsuffix"
"go.pinniped.dev/internal/kubeclient"
)
// getConciergeClientsetFunc is a function that can return a clientset for the Concierge API given a
// clientConfig and the apiGroupSuffix with which the API is running.
type getConciergeClientsetFunc func(clientConfig clientcmd.ClientConfig, apiGroupSuffix string) (conciergeclientset.Interface, error)
// getRealConciergeClientset returns a real implementation of a conciergeclientset.Interface.
func getRealConciergeClientset(clientConfig clientcmd.ClientConfig, apiGroupSuffix string) (conciergeclientset.Interface, error) {
restConfig, err := clientConfig.ClientConfig()
if err != nil {
return nil, err
}
client, err := kubeclient.New(
kubeclient.WithConfig(restConfig),
kubeclient.WithMiddleware(groupsuffix.New(apiGroupSuffix)),
)
if err != nil {
return nil, err
}
return client.PinnipedConcierge, nil
}
// newClientConfig returns a clientcmd.ClientConfig given an optional kubeconfig path override and
// an optional context override.
func newClientConfig(kubeconfigPathOverride string, currentContextName string) clientcmd.ClientConfig {
loadingRules := clientcmd.NewDefaultClientConfigLoadingRules()
loadingRules.ExplicitPath = kubeconfigPathOverride
clientConfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loadingRules, &clientcmd.ConfigOverrides{
CurrentContext: currentContextName,
})
return clientConfig
}

View File

@@ -1,884 +0,0 @@
// Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"context"
"crypto/tls"
"crypto/x509"
"encoding/base64"
"encoding/json"
"fmt"
"io"
"io/ioutil"
"log"
"net/http"
"os"
"strconv"
"strings"
"time"
"github.com/coreos/go-oidc/v3/oidc"
"github.com/go-logr/logr"
"github.com/go-logr/stdr"
"github.com/spf13/cobra"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
clientauthenticationv1beta1 "k8s.io/client-go/pkg/apis/clientauthentication/v1beta1"
_ "k8s.io/client-go/plugin/pkg/client/auth" // Adds handlers for various dynamic auth plugins in client-go
"k8s.io/client-go/tools/clientcmd"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
"k8s.io/client-go/transport"
conciergev1alpha1 "go.pinniped.dev/generated/latest/apis/concierge/authentication/v1alpha1"
configv1alpha1 "go.pinniped.dev/generated/latest/apis/concierge/config/v1alpha1"
conciergeclientset "go.pinniped.dev/generated/latest/client/concierge/clientset/versioned"
"go.pinniped.dev/internal/groupsuffix"
)
type kubeconfigDeps struct {
getPathToSelf func() (string, error)
getClientset getConciergeClientsetFunc
log logr.Logger
}
func kubeconfigRealDeps() kubeconfigDeps {
return kubeconfigDeps{
getPathToSelf: os.Executable,
getClientset: getRealConciergeClientset,
log: stdr.New(log.New(os.Stderr, "", 0)),
}
}
//nolint: gochecknoinits
func init() {
getCmd.AddCommand(kubeconfigCommand(kubeconfigRealDeps()))
}
type getKubeconfigOIDCParams struct {
issuer string
clientID string
listenPort uint16
scopes []string
skipBrowser bool
sessionCachePath string
debugSessionCache bool
caBundle caBundleFlag
requestAudience string
upstreamIDPName string
upstreamIDPType string
}
type getKubeconfigConciergeParams struct {
disabled bool
credentialIssuer string
authenticatorName string
authenticatorType string
apiGroupSuffix string
caBundle caBundleFlag
endpoint string
mode conciergeModeFlag
skipWait bool
}
type getKubeconfigParams struct {
kubeconfigPath string
kubeconfigContextOverride string
skipValidate bool
timeout time.Duration
outputPath string
staticToken string
staticTokenEnvName string
oidc getKubeconfigOIDCParams
concierge getKubeconfigConciergeParams
generatedNameSuffix string
credentialCachePath string
credentialCachePathSet bool
}
type supervisorOIDCDiscoveryResponseWithV1Alpha1 struct {
SupervisorDiscovery SupervisorDiscoveryResponseV1Alpha1 `json:"discovery.supervisor.pinniped.dev/v1alpha1"`
}
type SupervisorDiscoveryResponseV1Alpha1 struct {
PinnipedIDPsEndpoint string `json:"pinniped_identity_providers_endpoint"`
}
type supervisorIDPsDiscoveryResponseV1Alpha1 struct {
PinnipedIDPs []pinnipedIDPResponse `json:"pinniped_identity_providers"`
}
type pinnipedIDPResponse struct {
Name string `json:"name"`
Type string `json:"type"`
}
func kubeconfigCommand(deps kubeconfigDeps) *cobra.Command {
var (
cmd = &cobra.Command{
Args: cobra.NoArgs,
Use: "kubeconfig",
Short: "Generate a Pinniped-based kubeconfig for a cluster",
SilenceUsage: true,
}
flags getKubeconfigParams
namespace string // unused now
)
f := cmd.Flags()
f.StringVar(&flags.staticToken, "static-token", "", "Instead of doing an OIDC-based login, specify a static token")
f.StringVar(&flags.staticTokenEnvName, "static-token-env", "", "Instead of doing an OIDC-based login, read a static token from the environment")
f.BoolVar(&flags.concierge.disabled, "no-concierge", false, "Generate a configuration which does not use the Concierge, but sends the credential to the cluster directly")
f.StringVar(&namespace, "concierge-namespace", "pinniped-concierge", "Namespace in which the Concierge was installed")
f.StringVar(&flags.concierge.credentialIssuer, "concierge-credential-issuer", "", "Concierge CredentialIssuer object to use for autodiscovery (default: autodiscover)")
f.StringVar(&flags.concierge.authenticatorType, "concierge-authenticator-type", "", "Concierge authenticator type (e.g., 'webhook', 'jwt') (default: autodiscover)")
f.StringVar(&flags.concierge.authenticatorName, "concierge-authenticator-name", "", "Concierge authenticator name (default: autodiscover)")
f.StringVar(&flags.concierge.apiGroupSuffix, "concierge-api-group-suffix", groupsuffix.PinnipedDefaultSuffix, "Concierge API group suffix")
f.BoolVar(&flags.concierge.skipWait, "concierge-skip-wait", false, "Skip waiting for any pending Concierge strategies to become ready (default: false)")
f.Var(&flags.concierge.caBundle, "concierge-ca-bundle", "Path to TLS certificate authority bundle (PEM format, optional, can be repeated) to use when connecting to the Concierge")
f.StringVar(&flags.concierge.endpoint, "concierge-endpoint", "", "API base for the Concierge endpoint")
f.Var(&flags.concierge.mode, "concierge-mode", "Concierge mode of operation")
f.StringVar(&flags.oidc.issuer, "oidc-issuer", "", "OpenID Connect issuer URL (default: autodiscover)")
f.StringVar(&flags.oidc.clientID, "oidc-client-id", "pinniped-cli", "OpenID Connect client ID (default: autodiscover)")
f.Uint16Var(&flags.oidc.listenPort, "oidc-listen-port", 0, "TCP port for localhost listener (authorization code flow only)")
f.StringSliceVar(&flags.oidc.scopes, "oidc-scopes", []string{oidc.ScopeOfflineAccess, oidc.ScopeOpenID, "pinniped:request-audience"}, "OpenID Connect scopes to request during login")
f.BoolVar(&flags.oidc.skipBrowser, "oidc-skip-browser", false, "During OpenID Connect login, skip opening the browser (just print the URL)")
f.StringVar(&flags.oidc.sessionCachePath, "oidc-session-cache", "", "Path to OpenID Connect session cache file")
f.Var(&flags.oidc.caBundle, "oidc-ca-bundle", "Path to TLS certificate authority bundle (PEM format, optional, can be repeated)")
f.BoolVar(&flags.oidc.debugSessionCache, "oidc-debug-session-cache", false, "Print debug logs related to the OpenID Connect session cache")
f.StringVar(&flags.oidc.requestAudience, "oidc-request-audience", "", "Request a token with an alternate audience using RFC8693 token exchange")
f.StringVar(&flags.oidc.upstreamIDPName, "upstream-identity-provider-name", "", "The name of the upstream identity provider used during login with a Supervisor")
f.StringVar(&flags.oidc.upstreamIDPType, "upstream-identity-provider-type", "", "The type of the upstream identity provider used during login with a Supervisor (e.g. 'oidc', 'ldap')")
f.StringVar(&flags.kubeconfigPath, "kubeconfig", os.Getenv("KUBECONFIG"), "Path to kubeconfig file")
f.StringVar(&flags.kubeconfigContextOverride, "kubeconfig-context", "", "Kubeconfig context name (default: current active context)")
f.BoolVar(&flags.skipValidate, "skip-validation", false, "Skip final validation of the kubeconfig (default: false)")
f.DurationVar(&flags.timeout, "timeout", 10*time.Minute, "Timeout for autodiscovery and validation")
f.StringVarP(&flags.outputPath, "output", "o", "", "Output file path (default: stdout)")
f.StringVar(&flags.generatedNameSuffix, "generated-name-suffix", "-pinniped", "Suffix to append to generated cluster, context, user kubeconfig entries")
f.StringVar(&flags.credentialCachePath, "credential-cache", "", "Path to cluster-specific credentials cache")
mustMarkHidden(cmd, "oidc-debug-session-cache")
mustMarkDeprecated(cmd, "concierge-namespace", "not needed anymore")
mustMarkHidden(cmd, "concierge-namespace")
cmd.RunE = func(cmd *cobra.Command, args []string) error {
if flags.outputPath != "" {
out, err := os.Create(flags.outputPath)
if err != nil {
return fmt.Errorf("could not open output file: %w", err)
}
defer func() { _ = out.Close() }()
cmd.SetOut(out)
}
flags.credentialCachePathSet = cmd.Flags().Changed("credential-cache")
return runGetKubeconfig(cmd.Context(), cmd.OutOrStdout(), deps, flags)
}
return cmd
}
//nolint:funlen
func runGetKubeconfig(ctx context.Context, out io.Writer, deps kubeconfigDeps, flags getKubeconfigParams) error {
ctx, cancel := context.WithTimeout(ctx, flags.timeout)
defer cancel()
// Validate api group suffix and immediately return an error if it is invalid.
if err := groupsuffix.Validate(flags.concierge.apiGroupSuffix); err != nil {
return fmt.Errorf("invalid API group suffix: %w", err)
}
clientConfig := newClientConfig(flags.kubeconfigPath, flags.kubeconfigContextOverride)
currentKubeConfig, err := clientConfig.RawConfig()
if err != nil {
return fmt.Errorf("could not load --kubeconfig: %w", err)
}
currentKubeconfigNames, err := getCurrentContext(currentKubeConfig, flags)
if err != nil {
return fmt.Errorf("could not load --kubeconfig/--kubeconfig-context: %w", err)
}
cluster := currentKubeConfig.Clusters[currentKubeconfigNames.ClusterName]
clientset, err := deps.getClientset(clientConfig, flags.concierge.apiGroupSuffix)
if err != nil {
return fmt.Errorf("could not configure Kubernetes client: %w", err)
}
// Generate the new context/cluster/user names by appending the --generated-name-suffix to the original values.
newKubeconfigNames := &kubeconfigNames{
ContextName: currentKubeconfigNames.ContextName + flags.generatedNameSuffix,
UserName: currentKubeconfigNames.UserName + flags.generatedNameSuffix,
ClusterName: currentKubeconfigNames.ClusterName + flags.generatedNameSuffix,
}
if !flags.concierge.disabled {
credentialIssuer, err := waitForCredentialIssuer(ctx, clientset, flags, deps)
if err != nil {
return err
}
authenticator, err := lookupAuthenticator(
clientset,
flags.concierge.authenticatorType,
flags.concierge.authenticatorName,
deps.log,
)
if err != nil {
return err
}
if err := discoverConciergeParams(credentialIssuer, &flags, cluster, deps.log); err != nil {
return err
}
if err := discoverAuthenticatorParams(authenticator, &flags, deps.log); err != nil {
return err
}
// Point kubectl at the concierge endpoint.
cluster.Server = flags.concierge.endpoint
cluster.CertificateAuthorityData = flags.concierge.caBundle
}
// If there is an issuer, and if both upstream flags are not already set, then try to discover Supervisor upstream IDP.
if len(flags.oidc.issuer) > 0 && (flags.oidc.upstreamIDPType == "" || flags.oidc.upstreamIDPName == "") {
if err := discoverSupervisorUpstreamIDP(ctx, &flags); err != nil {
return err
}
}
execConfig, err := newExecConfig(deps, flags)
if err != nil {
return err
}
kubeconfig := newExecKubeconfig(cluster, execConfig, newKubeconfigNames)
if err := validateKubeconfig(ctx, flags, kubeconfig, deps.log); err != nil {
return err
}
return writeConfigAsYAML(out, kubeconfig)
}
func newExecConfig(deps kubeconfigDeps, flags getKubeconfigParams) (*clientcmdapi.ExecConfig, error) {
execConfig := &clientcmdapi.ExecConfig{
APIVersion: clientauthenticationv1beta1.SchemeGroupVersion.String(),
Args: []string{},
Env: []clientcmdapi.ExecEnvVar{},
ProvideClusterInfo: true,
}
var err error
execConfig.Command, err = deps.getPathToSelf()
if err != nil {
return nil, fmt.Errorf("could not determine the Pinniped executable path: %w", err)
}
if !flags.concierge.disabled {
// Append the flags to configure the Concierge credential exchange at runtime.
execConfig.Args = append(execConfig.Args,
"--enable-concierge",
"--concierge-api-group-suffix="+flags.concierge.apiGroupSuffix,
"--concierge-authenticator-name="+flags.concierge.authenticatorName,
"--concierge-authenticator-type="+flags.concierge.authenticatorType,
"--concierge-endpoint="+flags.concierge.endpoint,
"--concierge-ca-bundle-data="+base64.StdEncoding.EncodeToString(flags.concierge.caBundle),
)
}
// If --credential-cache is set, pass it through.
if flags.credentialCachePathSet {
execConfig.Args = append(execConfig.Args, "--credential-cache="+flags.credentialCachePath)
}
// If one of the --static-* flags was passed, output a config that runs `pinniped login static`.
if flags.staticToken != "" || flags.staticTokenEnvName != "" {
if flags.staticToken != "" && flags.staticTokenEnvName != "" {
return nil, fmt.Errorf("only one of --static-token and --static-token-env can be specified")
}
execConfig.Args = append([]string{"login", "static"}, execConfig.Args...)
if flags.staticToken != "" {
execConfig.Args = append(execConfig.Args, "--token="+flags.staticToken)
}
if flags.staticTokenEnvName != "" {
execConfig.Args = append(execConfig.Args, "--token-env="+flags.staticTokenEnvName)
}
return execConfig, nil
}
// Otherwise continue to parse the OIDC-related flags and output a config that runs `pinniped login oidc`.
execConfig.Args = append([]string{"login", "oidc"}, execConfig.Args...)
if flags.oidc.issuer == "" {
return nil, fmt.Errorf("could not autodiscover --oidc-issuer and none was provided")
}
execConfig.Args = append(execConfig.Args,
"--issuer="+flags.oidc.issuer,
"--client-id="+flags.oidc.clientID,
"--scopes="+strings.Join(flags.oidc.scopes, ","),
)
if flags.oidc.skipBrowser {
execConfig.Args = append(execConfig.Args, "--skip-browser")
}
if flags.oidc.listenPort != 0 {
execConfig.Args = append(execConfig.Args, "--listen-port="+strconv.Itoa(int(flags.oidc.listenPort)))
}
if len(flags.oidc.caBundle) != 0 {
execConfig.Args = append(execConfig.Args, "--ca-bundle-data="+base64.StdEncoding.EncodeToString(flags.oidc.caBundle))
}
if flags.oidc.sessionCachePath != "" {
execConfig.Args = append(execConfig.Args, "--session-cache="+flags.oidc.sessionCachePath)
}
if flags.oidc.debugSessionCache {
execConfig.Args = append(execConfig.Args, "--debug-session-cache")
}
if flags.oidc.requestAudience != "" {
execConfig.Args = append(execConfig.Args, "--request-audience="+flags.oidc.requestAudience)
}
if flags.oidc.upstreamIDPName != "" {
execConfig.Args = append(execConfig.Args, "--upstream-identity-provider-name="+flags.oidc.upstreamIDPName)
}
if flags.oidc.upstreamIDPType != "" {
execConfig.Args = append(execConfig.Args, "--upstream-identity-provider-type="+flags.oidc.upstreamIDPType)
}
return execConfig, nil
}
type kubeconfigNames struct{ ContextName, UserName, ClusterName string }
func getCurrentContext(currentKubeConfig clientcmdapi.Config, flags getKubeconfigParams) (*kubeconfigNames, error) {
contextName := currentKubeConfig.CurrentContext
if flags.kubeconfigContextOverride != "" {
contextName = flags.kubeconfigContextOverride
}
ctx := currentKubeConfig.Contexts[contextName]
if ctx == nil {
return nil, fmt.Errorf("no such context %q", contextName)
}
if _, exists := currentKubeConfig.Clusters[ctx.Cluster]; !exists {
return nil, fmt.Errorf("no such cluster %q", ctx.Cluster)
}
if _, exists := currentKubeConfig.AuthInfos[ctx.AuthInfo]; !exists {
return nil, fmt.Errorf("no such user %q", ctx.AuthInfo)
}
return &kubeconfigNames{ContextName: contextName, UserName: ctx.AuthInfo, ClusterName: ctx.Cluster}, nil
}
func waitForCredentialIssuer(ctx context.Context, clientset conciergeclientset.Interface, flags getKubeconfigParams, deps kubeconfigDeps) (*configv1alpha1.CredentialIssuer, error) {
credentialIssuer, err := lookupCredentialIssuer(clientset, flags.concierge.credentialIssuer, deps.log)
if err != nil {
return nil, err
}
if !flags.concierge.skipWait {
ticker := time.NewTicker(2 * time.Second)
defer ticker.Stop()
deadline, _ := ctx.Deadline()
attempts := 1
for {
if !hasPendingStrategy(credentialIssuer) {
break
}
logStrategies(credentialIssuer, deps.log)
deps.log.Info("waiting for CredentialIssuer pending strategies to finish",
"attempts", attempts,
"remaining", time.Until(deadline).Round(time.Second).String(),
)
select {
case <-ctx.Done():
return nil, ctx.Err()
case <-ticker.C:
credentialIssuer, err = lookupCredentialIssuer(clientset, flags.concierge.credentialIssuer, deps.log)
if err != nil {
return nil, err
}
}
}
}
return credentialIssuer, nil
}
func discoverConciergeParams(credentialIssuer *configv1alpha1.CredentialIssuer, flags *getKubeconfigParams, v1Cluster *clientcmdapi.Cluster, log logr.Logger) error {
// Autodiscover the --concierge-mode.
frontend, err := getConciergeFrontend(credentialIssuer, flags.concierge.mode)
if err != nil {
logStrategies(credentialIssuer, log)
return err
}
// Auto-set --concierge-mode if it wasn't explicitly set.
if flags.concierge.mode == modeUnknown {
switch frontend.Type {
case configv1alpha1.TokenCredentialRequestAPIFrontendType:
log.Info("discovered Concierge operating in TokenCredentialRequest API mode")
flags.concierge.mode = modeTokenCredentialRequestAPI
case configv1alpha1.ImpersonationProxyFrontendType:
log.Info("discovered Concierge operating in impersonation proxy mode")
flags.concierge.mode = modeImpersonationProxy
}
}
// Auto-set --concierge-endpoint if it wasn't explicitly set.
if flags.concierge.endpoint == "" {
switch frontend.Type {
case configv1alpha1.TokenCredentialRequestAPIFrontendType:
flags.concierge.endpoint = v1Cluster.Server
case configv1alpha1.ImpersonationProxyFrontendType:
flags.concierge.endpoint = frontend.ImpersonationProxyInfo.Endpoint
}
log.Info("discovered Concierge endpoint", "endpoint", flags.concierge.endpoint)
}
// Auto-set --concierge-ca-bundle if it wasn't explicitly set..
if len(flags.concierge.caBundle) == 0 {
switch frontend.Type {
case configv1alpha1.TokenCredentialRequestAPIFrontendType:
flags.concierge.caBundle = v1Cluster.CertificateAuthorityData
case configv1alpha1.ImpersonationProxyFrontendType:
data, err := base64.StdEncoding.DecodeString(frontend.ImpersonationProxyInfo.CertificateAuthorityData)
if err != nil {
return fmt.Errorf("autodiscovered Concierge CA bundle is invalid: %w", err)
}
flags.concierge.caBundle = data
}
log.Info("discovered Concierge certificate authority bundle", "roots", countCACerts(flags.concierge.caBundle))
}
return nil
}
func logStrategies(credentialIssuer *configv1alpha1.CredentialIssuer, log logr.Logger) {
for _, strategy := range credentialIssuer.Status.Strategies {
log.Info("found CredentialIssuer strategy",
"type", strategy.Type,
"status", strategy.Status,
"reason", strategy.Reason,
"message", strategy.Message,
)
}
}
func discoverAuthenticatorParams(authenticator metav1.Object, flags *getKubeconfigParams, log logr.Logger) error {
switch auth := authenticator.(type) {
case *conciergev1alpha1.WebhookAuthenticator:
// If the --concierge-authenticator-type/--concierge-authenticator-name flags were not set explicitly, set
// them to point at the discovered WebhookAuthenticator.
if flags.concierge.authenticatorType == "" && flags.concierge.authenticatorName == "" {
log.Info("discovered WebhookAuthenticator", "name", auth.Name)
flags.concierge.authenticatorType = "webhook"
flags.concierge.authenticatorName = auth.Name
}
case *conciergev1alpha1.JWTAuthenticator:
// If the --concierge-authenticator-type/--concierge-authenticator-name flags were not set explicitly, set
// them to point at the discovered JWTAuthenticator.
if flags.concierge.authenticatorType == "" && flags.concierge.authenticatorName == "" {
log.Info("discovered JWTAuthenticator", "name", auth.Name)
flags.concierge.authenticatorType = "jwt"
flags.concierge.authenticatorName = auth.Name
}
// If the --oidc-issuer flag was not set explicitly, default it to the spec.issuer field of the JWTAuthenticator.
if flags.oidc.issuer == "" {
log.Info("discovered OIDC issuer", "issuer", auth.Spec.Issuer)
flags.oidc.issuer = auth.Spec.Issuer
}
// If the --oidc-request-audience flag was not set explicitly, default it to the spec.audience field of the JWTAuthenticator.
if flags.oidc.requestAudience == "" {
log.Info("discovered OIDC audience", "audience", auth.Spec.Audience)
flags.oidc.requestAudience = auth.Spec.Audience
}
// If the --oidc-ca-bundle flags was not set explicitly, default it to the
// spec.tls.certificateAuthorityData field of the JWTAuthenticator.
if len(flags.oidc.caBundle) == 0 && auth.Spec.TLS != nil && auth.Spec.TLS.CertificateAuthorityData != "" {
decoded, err := base64.StdEncoding.DecodeString(auth.Spec.TLS.CertificateAuthorityData)
if err != nil {
return fmt.Errorf("tried to autodiscover --oidc-ca-bundle, but JWTAuthenticator %s has invalid spec.tls.certificateAuthorityData: %w", auth.Name, err)
}
log.Info("discovered OIDC CA bundle", "roots", countCACerts(decoded))
flags.oidc.caBundle = decoded
}
}
return nil
}
func getConciergeFrontend(credentialIssuer *configv1alpha1.CredentialIssuer, mode conciergeModeFlag) (*configv1alpha1.CredentialIssuerFrontend, error) {
for _, strategy := range credentialIssuer.Status.Strategies {
// Skip unhealthy strategies.
if strategy.Status != configv1alpha1.SuccessStrategyStatus {
continue
}
// Backfill the .status.strategies[].frontend field from .status.kubeConfigInfo for backwards compatibility.
if strategy.Type == configv1alpha1.KubeClusterSigningCertificateStrategyType && strategy.Frontend == nil && credentialIssuer.Status.KubeConfigInfo != nil {
strategy = *strategy.DeepCopy()
strategy.Frontend = &configv1alpha1.CredentialIssuerFrontend{
Type: configv1alpha1.TokenCredentialRequestAPIFrontendType,
TokenCredentialRequestAPIInfo: &configv1alpha1.TokenCredentialRequestAPIInfo{
Server: credentialIssuer.Status.KubeConfigInfo.Server,
CertificateAuthorityData: credentialIssuer.Status.KubeConfigInfo.CertificateAuthorityData,
},
}
}
// If the strategy frontend is still nil, skip.
if strategy.Frontend == nil {
continue
}
// Skip any unknown frontend types.
switch strategy.Frontend.Type {
case configv1alpha1.TokenCredentialRequestAPIFrontendType, configv1alpha1.ImpersonationProxyFrontendType:
default:
continue
}
// Skip strategies that don't match --concierge-mode.
if !mode.MatchesFrontend(strategy.Frontend) {
continue
}
return strategy.Frontend, nil
}
if mode == modeUnknown {
return nil, fmt.Errorf("could not autodiscover --concierge-mode")
}
return nil, fmt.Errorf("could not find successful Concierge strategy matching --concierge-mode=%s", mode.String())
}
func newExecKubeconfig(cluster *clientcmdapi.Cluster, execConfig *clientcmdapi.ExecConfig, newNames *kubeconfigNames) clientcmdapi.Config {
return clientcmdapi.Config{
Kind: "Config",
APIVersion: clientcmdapi.SchemeGroupVersion.Version,
Clusters: map[string]*clientcmdapi.Cluster{newNames.ClusterName: cluster},
AuthInfos: map[string]*clientcmdapi.AuthInfo{newNames.UserName: {Exec: execConfig}},
Contexts: map[string]*clientcmdapi.Context{newNames.ContextName: {Cluster: newNames.ClusterName, AuthInfo: newNames.UserName}},
CurrentContext: newNames.ContextName,
}
}
func lookupCredentialIssuer(clientset conciergeclientset.Interface, name string, log logr.Logger) (*configv1alpha1.CredentialIssuer, error) {
ctx, cancelFunc := context.WithTimeout(context.Background(), time.Second*20)
defer cancelFunc()
// If the name is specified, get that object.
if name != "" {
return clientset.ConfigV1alpha1().CredentialIssuers().Get(ctx, name, metav1.GetOptions{})
}
// Otherwise list all the available CredentialIssuers and hope there's just a single one
results, err := clientset.ConfigV1alpha1().CredentialIssuers().List(ctx, metav1.ListOptions{})
if err != nil {
return nil, fmt.Errorf("failed to list CredentialIssuer objects for autodiscovery: %w", err)
}
if len(results.Items) == 0 {
return nil, fmt.Errorf("no CredentialIssuers were found")
}
if len(results.Items) > 1 {
return nil, fmt.Errorf("multiple CredentialIssuers were found, so the --concierge-credential-issuer flag must be specified")
}
result := &results.Items[0]
log.Info("discovered CredentialIssuer", "name", result.Name)
return result, nil
}
func lookupAuthenticator(clientset conciergeclientset.Interface, authType, authName string, log logr.Logger) (metav1.Object, error) {
ctx, cancelFunc := context.WithTimeout(context.Background(), time.Second*20)
defer cancelFunc()
// If one was specified, look it up or error.
if authName != "" && authType != "" {
switch strings.ToLower(authType) {
case "webhook":
return clientset.AuthenticationV1alpha1().WebhookAuthenticators().Get(ctx, authName, metav1.GetOptions{})
case "jwt":
return clientset.AuthenticationV1alpha1().JWTAuthenticators().Get(ctx, authName, metav1.GetOptions{})
default:
return nil, fmt.Errorf(`invalid authenticator type %q, supported values are "webhook" and "jwt"`, authType)
}
}
// Otherwise list all the available authenticators and hope there's just a single one.
jwtAuths, err := clientset.AuthenticationV1alpha1().JWTAuthenticators().List(ctx, metav1.ListOptions{})
if err != nil {
return nil, fmt.Errorf("failed to list JWTAuthenticator objects for autodiscovery: %w", err)
}
webhooks, err := clientset.AuthenticationV1alpha1().WebhookAuthenticators().List(ctx, metav1.ListOptions{})
if err != nil {
return nil, fmt.Errorf("failed to list WebhookAuthenticator objects for autodiscovery: %w", err)
}
results := make([]metav1.Object, 0, len(jwtAuths.Items)+len(webhooks.Items))
for i := range jwtAuths.Items {
results = append(results, &jwtAuths.Items[i])
}
for i := range webhooks.Items {
results = append(results, &webhooks.Items[i])
}
if len(results) == 0 {
return nil, fmt.Errorf("no authenticators were found")
}
if len(results) > 1 {
for _, jwtAuth := range jwtAuths.Items {
log.Info("found JWTAuthenticator", "name", jwtAuth.Name)
}
for _, webhook := range webhooks.Items {
log.Info("found WebhookAuthenticator", "name", webhook.Name)
}
return nil, fmt.Errorf("multiple authenticators were found, so the --concierge-authenticator-type/--concierge-authenticator-name flags must be specified")
}
return results[0], nil
}
func writeConfigAsYAML(out io.Writer, config clientcmdapi.Config) error {
output, err := clientcmd.Write(config)
if err != nil {
return err
}
_, err = out.Write(output)
if err != nil {
return fmt.Errorf("could not write output: %w", err)
}
return nil
}
func validateKubeconfig(ctx context.Context, flags getKubeconfigParams, kubeconfig clientcmdapi.Config, log logr.Logger) error {
if flags.skipValidate {
return nil
}
kubeContext := kubeconfig.Contexts[kubeconfig.CurrentContext]
if kubeContext == nil {
return fmt.Errorf("invalid kubeconfig (no context)")
}
cluster := kubeconfig.Clusters[kubeContext.Cluster]
if cluster == nil {
return fmt.Errorf("invalid kubeconfig (no cluster)")
}
kubeconfigCA := x509.NewCertPool()
if !kubeconfigCA.AppendCertsFromPEM(cluster.CertificateAuthorityData) {
return fmt.Errorf("invalid kubeconfig (no certificateAuthorityData)")
}
httpClient := &http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{
MinVersion: tls.VersionTLS12,
RootCAs: kubeconfigCA,
},
Proxy: http.ProxyFromEnvironment,
TLSHandshakeTimeout: 10 * time.Second,
},
Timeout: 10 * time.Second,
}
ticker := time.NewTicker(2 * time.Second)
defer ticker.Stop()
pingCluster := func() error {
reqCtx, cancel := context.WithTimeout(ctx, 10*time.Second)
defer cancel()
req, err := http.NewRequestWithContext(reqCtx, http.MethodGet, cluster.Server, nil)
if err != nil {
return fmt.Errorf("could not form request to validate cluster: %w", err)
}
resp, err := httpClient.Do(req)
if err != nil {
return err
}
_ = resp.Body.Close()
if resp.StatusCode >= 500 {
return fmt.Errorf("unexpected status code %d", resp.StatusCode)
}
return nil
}
err := pingCluster()
if err == nil {
log.Info("validated connection to the cluster")
return nil
}
log.Info("could not immediately connect to the cluster but it may be initializing, will retry until timeout")
deadline, _ := ctx.Deadline()
attempts := 0
for {
select {
case <-ctx.Done():
return ctx.Err()
case <-ticker.C:
attempts++
err := pingCluster()
if err == nil {
log.Info("validated connection to the cluster", "attempts", attempts)
return nil
}
log.Error(err, "could not connect to cluster, retrying...", "attempts", attempts, "remaining", time.Until(deadline).Round(time.Second).String())
}
}
}
func countCACerts(pemData []byte) int {
pool := x509.NewCertPool()
pool.AppendCertsFromPEM(pemData)
return len(pool.Subjects())
}
func hasPendingStrategy(credentialIssuer *configv1alpha1.CredentialIssuer) bool {
for _, strategy := range credentialIssuer.Status.Strategies {
if strategy.Reason == configv1alpha1.PendingStrategyReason {
return true
}
}
return false
}
func discoverSupervisorUpstreamIDP(ctx context.Context, flags *getKubeconfigParams) error {
httpClient, err := newDiscoveryHTTPClient(flags.oidc.caBundle)
if err != nil {
return err
}
pinnipedIDPsEndpoint, err := discoverIDPsDiscoveryEndpointURL(ctx, flags.oidc.issuer, httpClient)
if err != nil {
return err
}
if pinnipedIDPsEndpoint == "" {
// The issuer is not advertising itself as a Pinniped Supervisor which supports upstream IDP discovery.
return nil
}
upstreamIDPs, err := discoverAllAvailableSupervisorUpstreamIDPs(ctx, pinnipedIDPsEndpoint, httpClient)
if err != nil {
return err
}
if len(upstreamIDPs) == 1 {
flags.oidc.upstreamIDPName = upstreamIDPs[0].Name
flags.oidc.upstreamIDPType = upstreamIDPs[0].Type
} else if len(upstreamIDPs) > 1 {
idpName, idpType, err := selectUpstreamIDP(upstreamIDPs, flags.oidc.upstreamIDPName, flags.oidc.upstreamIDPType)
if err != nil {
return err
}
flags.oidc.upstreamIDPName = idpName
flags.oidc.upstreamIDPType = idpType
}
return nil
}
func newDiscoveryHTTPClient(caBundleFlag caBundleFlag) (*http.Client, error) {
t := &http.Transport{
TLSClientConfig: &tls.Config{MinVersion: tls.VersionTLS12},
Proxy: http.ProxyFromEnvironment,
}
httpClient := &http.Client{Transport: t}
if caBundleFlag != nil {
rootCAs := x509.NewCertPool()
ok := rootCAs.AppendCertsFromPEM(caBundleFlag)
if !ok {
return nil, fmt.Errorf("unable to fetch OIDC discovery data from issuer: could not parse CA bundle")
}
t.TLSClientConfig.RootCAs = rootCAs
}
httpClient.Transport = transport.DebugWrappers(httpClient.Transport)
return httpClient, nil
}
func discoverIDPsDiscoveryEndpointURL(ctx context.Context, issuer string, httpClient *http.Client) (string, error) {
discoveredProvider, err := oidc.NewProvider(oidc.ClientContext(ctx, httpClient), issuer)
if err != nil {
return "", fmt.Errorf("while fetching OIDC discovery data from issuer: %w", err)
}
var body supervisorOIDCDiscoveryResponseWithV1Alpha1
err = discoveredProvider.Claims(&body)
if err != nil {
return "", fmt.Errorf("while fetching OIDC discovery data from issuer: %w", err)
}
return body.SupervisorDiscovery.PinnipedIDPsEndpoint, nil
}
func discoverAllAvailableSupervisorUpstreamIDPs(ctx context.Context, pinnipedIDPsEndpoint string, httpClient *http.Client) ([]pinnipedIDPResponse, error) {
request, err := http.NewRequestWithContext(ctx, http.MethodGet, pinnipedIDPsEndpoint, nil)
if err != nil {
return nil, fmt.Errorf("while forming request to IDP discovery URL: %w", err)
}
response, err := httpClient.Do(request)
if err != nil {
return nil, fmt.Errorf("unable to fetch IDP discovery data from issuer: %w", err)
}
defer func() {
_ = response.Body.Close()
}()
if response.StatusCode != http.StatusOK {
return nil, fmt.Errorf("unable to fetch IDP discovery data from issuer: unexpected http response status: %s", response.Status)
}
rawBody, err := ioutil.ReadAll(response.Body)
if err != nil {
return nil, fmt.Errorf("unable to fetch IDP discovery data from issuer: could not read response body: %w", err)
}
var body supervisorIDPsDiscoveryResponseV1Alpha1
err = json.Unmarshal(rawBody, &body)
if err != nil {
return nil, fmt.Errorf("unable to fetch IDP discovery data from issuer: could not parse response JSON: %w", err)
}
return body.PinnipedIDPs, nil
}
func selectUpstreamIDP(pinnipedIDPs []pinnipedIDPResponse, idpName, idpType string) (string, string, error) {
pinnipedIDPsString, _ := json.Marshal(pinnipedIDPs)
switch {
case idpType != "":
discoveredName := ""
for _, idp := range pinnipedIDPs {
if idp.Type == idpType {
if discoveredName != "" {
return "", "", fmt.Errorf(
"multiple Supervisor upstream identity providers of type \"%s\" were found,"+
" so the --upstream-identity-provider-name flag must be specified. "+
"Found these upstreams: %s",
idpType, pinnipedIDPsString)
}
discoveredName = idp.Name
}
}
if discoveredName == "" {
return "", "", fmt.Errorf(
"no Supervisor upstream identity providers of type \"%s\" were found."+
" Found these upstreams: %s", idpType, pinnipedIDPsString)
}
return discoveredName, idpType, nil
case idpName != "":
discoveredType := ""
for _, idp := range pinnipedIDPs {
if idp.Name == idpName {
if discoveredType != "" {
return "", "", fmt.Errorf(
"multiple Supervisor upstream identity providers with name \"%s\" were found,"+
" so the --upstream-identity-provider-type flag must be specified. Found these upstreams: %s",
idpName, pinnipedIDPsString)
}
discoveredType = idp.Type
}
}
if discoveredType == "" {
return "", "", fmt.Errorf(
"no Supervisor upstream identity providers with name \"%s\" were found."+
" Found these upstreams: %s", idpName, pinnipedIDPsString)
}
return idpName, discoveredType, nil
default:
return "", "", fmt.Errorf(
"multiple Supervisor upstream identity providers were found,"+
" so the --upstream-identity-provider-name/--upstream-identity-provider-type flags must be specified."+
" Found these upstreams: %s",
pinnipedIDPsString)
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,36 +0,0 @@
// Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"github.com/spf13/cobra"
clientauthv1beta1 "k8s.io/client-go/pkg/apis/clientauthentication/v1beta1"
"k8s.io/client-go/tools/auth/exec"
)
//nolint: gochecknoglobals
var loginCmd = &cobra.Command{
Use: "login",
Short: "login",
Long: "Login to a Pinniped server",
SilenceUsage: true, // Do not print usage message when commands fail.
Hidden: true, // These commands are not really meant to be used directly by users, so it's confusing to have them discoverable.
}
//nolint: gochecknoinits
func init() {
rootCmd.AddCommand(loginCmd)
}
func loadClusterInfo() *clientauthv1beta1.Cluster {
obj, _, err := exec.LoadExecCredentialFromEnv()
if err != nil {
return nil
}
cred, ok := obj.(*clientauthv1beta1.ExecCredential)
if !ok {
return nil
}
return cred.Spec.Cluster
}

View File

@@ -1,321 +0,0 @@
// Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"context"
"crypto/tls"
"crypto/x509"
"encoding/base64"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"os"
"path/filepath"
"time"
"github.com/coreos/go-oidc/v3/oidc"
"github.com/spf13/cobra"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
clientauthv1beta1 "k8s.io/client-go/pkg/apis/clientauthentication/v1beta1"
"k8s.io/client-go/transport"
"k8s.io/klog/v2/klogr"
"go.pinniped.dev/internal/execcredcache"
"go.pinniped.dev/internal/groupsuffix"
"go.pinniped.dev/internal/plog"
"go.pinniped.dev/pkg/conciergeclient"
"go.pinniped.dev/pkg/oidcclient"
"go.pinniped.dev/pkg/oidcclient/filesession"
"go.pinniped.dev/pkg/oidcclient/oidctypes"
)
//nolint: gochecknoinits
func init() {
loginCmd.AddCommand(oidcLoginCommand(oidcLoginCommandRealDeps()))
}
type oidcLoginCommandDeps struct {
lookupEnv func(string) (string, bool)
login func(string, string, ...oidcclient.Option) (*oidctypes.Token, error)
exchangeToken func(context.Context, *conciergeclient.Client, string) (*clientauthv1beta1.ExecCredential, error)
}
func oidcLoginCommandRealDeps() oidcLoginCommandDeps {
return oidcLoginCommandDeps{
lookupEnv: os.LookupEnv,
login: oidcclient.Login,
exchangeToken: func(ctx context.Context, client *conciergeclient.Client, token string) (*clientauthv1beta1.ExecCredential, error) {
return client.ExchangeToken(ctx, token)
},
}
}
type oidcLoginFlags struct {
issuer string
clientID string
listenPort uint16
scopes []string
skipBrowser bool
sessionCachePath string
caBundlePaths []string
caBundleData []string
debugSessionCache bool
requestAudience string
conciergeEnabled bool
conciergeAuthenticatorType string
conciergeAuthenticatorName string
conciergeEndpoint string
conciergeCABundle string
conciergeAPIGroupSuffix string
credentialCachePath string
upstreamIdentityProviderName string
upstreamIdentityProviderType string
}
func oidcLoginCommand(deps oidcLoginCommandDeps) *cobra.Command {
var (
cmd = &cobra.Command{
Args: cobra.NoArgs,
Use: "oidc --issuer ISSUER",
Short: "Login using an OpenID Connect provider",
SilenceUsage: true,
}
flags oidcLoginFlags
conciergeNamespace string // unused now
)
cmd.Flags().StringVar(&flags.issuer, "issuer", "", "OpenID Connect issuer URL")
cmd.Flags().StringVar(&flags.clientID, "client-id", "pinniped-cli", "OpenID Connect client ID")
cmd.Flags().Uint16Var(&flags.listenPort, "listen-port", 0, "TCP port for localhost listener (authorization code flow only)")
cmd.Flags().StringSliceVar(&flags.scopes, "scopes", []string{oidc.ScopeOfflineAccess, oidc.ScopeOpenID, "pinniped:request-audience"}, "OIDC scopes to request during login")
cmd.Flags().BoolVar(&flags.skipBrowser, "skip-browser", false, "Skip opening the browser (just print the URL)")
cmd.Flags().StringVar(&flags.sessionCachePath, "session-cache", filepath.Join(mustGetConfigDir(), "sessions.yaml"), "Path to session cache file")
cmd.Flags().StringSliceVar(&flags.caBundlePaths, "ca-bundle", nil, "Path to TLS certificate authority bundle (PEM format, optional, can be repeated)")
cmd.Flags().StringSliceVar(&flags.caBundleData, "ca-bundle-data", nil, "Base64 encoded TLS certificate authority bundle (base64 encoded PEM format, optional, can be repeated)")
cmd.Flags().BoolVar(&flags.debugSessionCache, "debug-session-cache", false, "Print debug logs related to the session cache")
cmd.Flags().StringVar(&flags.requestAudience, "request-audience", "", "Request a token with an alternate audience using RFC8693 token exchange")
cmd.Flags().BoolVar(&flags.conciergeEnabled, "enable-concierge", false, "Use the Concierge to login")
cmd.Flags().StringVar(&conciergeNamespace, "concierge-namespace", "pinniped-concierge", "Namespace in which the Concierge was installed")
cmd.Flags().StringVar(&flags.conciergeAuthenticatorType, "concierge-authenticator-type", "", "Concierge authenticator type (e.g., 'webhook', 'jwt')")
cmd.Flags().StringVar(&flags.conciergeAuthenticatorName, "concierge-authenticator-name", "", "Concierge authenticator name")
cmd.Flags().StringVar(&flags.conciergeEndpoint, "concierge-endpoint", "", "API base for the Concierge endpoint")
cmd.Flags().StringVar(&flags.conciergeCABundle, "concierge-ca-bundle-data", "", "CA bundle to use when connecting to the Concierge")
cmd.Flags().StringVar(&flags.conciergeAPIGroupSuffix, "concierge-api-group-suffix", groupsuffix.PinnipedDefaultSuffix, "Concierge API group suffix")
cmd.Flags().StringVar(&flags.credentialCachePath, "credential-cache", filepath.Join(mustGetConfigDir(), "credentials.yaml"), "Path to cluster-specific credentials cache (\"\" disables the cache)")
cmd.Flags().StringVar(&flags.upstreamIdentityProviderName, "upstream-identity-provider-name", "", "The name of the upstream identity provider used during login with a Supervisor")
cmd.Flags().StringVar(&flags.upstreamIdentityProviderType, "upstream-identity-provider-type", "oidc", "The type of the upstream identity provider used during login with a Supervisor (e.g. 'oidc', 'ldap')")
mustMarkHidden(cmd, "debug-session-cache")
mustMarkRequired(cmd, "issuer")
cmd.RunE = func(cmd *cobra.Command, args []string) error { return runOIDCLogin(cmd, deps, flags) }
mustMarkDeprecated(cmd, "concierge-namespace", "not needed anymore")
mustMarkHidden(cmd, "concierge-namespace")
return cmd
}
func runOIDCLogin(cmd *cobra.Command, deps oidcLoginCommandDeps, flags oidcLoginFlags) error { //nolint:funlen
pLogger, err := SetLogLevel(deps.lookupEnv)
if err != nil {
plog.WarningErr("Received error while setting log level", err)
}
// Initialize the session cache.
var sessionOptions []filesession.Option
// If the hidden --debug-session-cache option is passed, log all the errors from the session cache with klog.
if flags.debugSessionCache {
logger := klogr.New().WithName("session")
sessionOptions = append(sessionOptions, filesession.WithErrorReporter(func(err error) {
logger.Error(err, "error during session cache operation")
}))
}
sessionCache := filesession.New(flags.sessionCachePath, sessionOptions...)
// Initialize the login handler.
opts := []oidcclient.Option{
oidcclient.WithContext(cmd.Context()),
oidcclient.WithLogger(klogr.New()),
oidcclient.WithScopes(flags.scopes),
oidcclient.WithSessionCache(sessionCache),
}
if flags.listenPort != 0 {
opts = append(opts, oidcclient.WithListenPort(flags.listenPort))
}
if flags.requestAudience != "" {
opts = append(opts, oidcclient.WithRequestAudience(flags.requestAudience))
}
if flags.upstreamIdentityProviderName != "" {
opts = append(opts, oidcclient.WithUpstreamIdentityProvider(
flags.upstreamIdentityProviderName, flags.upstreamIdentityProviderType))
}
switch flags.upstreamIdentityProviderType {
case "oidc":
// this is the default, so don't need to do anything
case "ldap":
opts = append(opts, oidcclient.WithCLISendingCredentials())
default:
// Surprisingly cobra does not support this kind of flag validation. See https://github.com/spf13/pflag/issues/236
return fmt.Errorf(
"--upstream-identity-provider-type value not recognized: %s (supported values: oidc, ldap)",
flags.upstreamIdentityProviderType)
}
var concierge *conciergeclient.Client
if flags.conciergeEnabled {
var err error
concierge, err = conciergeclient.New(
conciergeclient.WithEndpoint(flags.conciergeEndpoint),
conciergeclient.WithBase64CABundle(flags.conciergeCABundle),
conciergeclient.WithAuthenticator(flags.conciergeAuthenticatorType, flags.conciergeAuthenticatorName),
conciergeclient.WithAPIGroupSuffix(flags.conciergeAPIGroupSuffix),
)
if err != nil {
return fmt.Errorf("invalid Concierge parameters: %w", err)
}
}
// --skip-browser replaces the default "browser open" function with one that prints to stderr.
if flags.skipBrowser {
opts = append(opts, oidcclient.WithBrowserOpen(func(url string) error {
cmd.PrintErr("Please log in: ", url, "\n")
return nil
}))
}
if len(flags.caBundlePaths) > 0 || len(flags.caBundleData) > 0 {
client, err := makeClient(flags.caBundlePaths, flags.caBundleData)
if err != nil {
return err
}
opts = append(opts, oidcclient.WithClient(client))
}
// Look up cached credentials based on a hash of all the CLI arguments and the cluster info.
cacheKey := struct {
Args []string `json:"args"`
ClusterInfo *clientauthv1beta1.Cluster `json:"cluster"`
}{
Args: os.Args[1:],
ClusterInfo: loadClusterInfo(),
}
var credCache *execcredcache.Cache
if flags.credentialCachePath != "" {
credCache = execcredcache.New(flags.credentialCachePath)
if cred := credCache.Get(cacheKey); cred != nil {
pLogger.Debug("using cached cluster credential.")
return json.NewEncoder(cmd.OutOrStdout()).Encode(cred)
}
}
pLogger.Debug("Performing OIDC login", "issuer", flags.issuer, "client id", flags.clientID)
// Do the basic login to get an OIDC token.
token, err := deps.login(flags.issuer, flags.clientID, opts...)
if err != nil {
return fmt.Errorf("could not complete Pinniped login: %w", err)
}
cred := tokenCredential(token)
// If the concierge was configured, exchange the credential for a separate short-lived, cluster-specific credential.
if concierge != nil {
pLogger.Debug("Exchanging token for cluster credential", "endpoint", flags.conciergeEndpoint, "authenticator type", flags.conciergeAuthenticatorType, "authenticator name", flags.conciergeAuthenticatorName)
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
cred, err = deps.exchangeToken(ctx, concierge, token.IDToken.Token)
if err != nil {
return fmt.Errorf("could not complete Concierge credential exchange: %w", err)
}
pLogger.Debug("Successfully exchanged token for cluster credential.")
} else {
pLogger.Debug("No concierge configured, skipping token credential exchange")
}
// If there was a credential cache, save the resulting credential for future use.
if credCache != nil {
pLogger.Debug("caching cluster credential for future use.")
credCache.Put(cacheKey, cred)
}
return json.NewEncoder(cmd.OutOrStdout()).Encode(cred)
}
func makeClient(caBundlePaths []string, caBundleData []string) (*http.Client, error) {
pool := x509.NewCertPool()
for _, p := range caBundlePaths {
pem, err := ioutil.ReadFile(p)
if err != nil {
return nil, fmt.Errorf("could not read --ca-bundle: %w", err)
}
pool.AppendCertsFromPEM(pem)
}
for _, d := range caBundleData {
pem, err := base64.StdEncoding.DecodeString(d)
if err != nil {
return nil, fmt.Errorf("could not read --ca-bundle-data: %w", err)
}
pool.AppendCertsFromPEM(pem)
}
client := &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyFromEnvironment,
TLSClientConfig: &tls.Config{
RootCAs: pool,
MinVersion: tls.VersionTLS12,
},
},
}
client.Transport = transport.DebugWrappers(client.Transport)
return client, nil
}
func tokenCredential(token *oidctypes.Token) *clientauthv1beta1.ExecCredential {
cred := clientauthv1beta1.ExecCredential{
TypeMeta: metav1.TypeMeta{
Kind: "ExecCredential",
APIVersion: "client.authentication.k8s.io/v1beta1",
},
Status: &clientauthv1beta1.ExecCredentialStatus{
Token: token.IDToken.Token,
},
}
if !token.IDToken.Expiry.IsZero() {
cred.Status.ExpirationTimestamp = &token.IDToken.Expiry
}
return &cred
}
func SetLogLevel(lookupEnv func(string) (string, bool)) (*plog.PLogger, error) {
debug, _ := lookupEnv("PINNIPED_DEBUG")
if debug == "true" {
err := plog.ValidateAndSetLogLevelGlobally(plog.LevelDebug)
if err != nil {
return nil, err
}
}
logger := plog.New("Pinniped login: ")
return &logger, nil
}
// mustGetConfigDir returns a directory that follows the XDG base directory convention:
// $XDG_CONFIG_HOME defines the base directory relative to which user specific configuration files should
// be stored. If $XDG_CONFIG_HOME is either not set or empty, a default equal to $HOME/.config should be used.
// [1] https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
func mustGetConfigDir() string {
const xdgAppName = "pinniped"
if path := os.Getenv("XDG_CONFIG_HOME"); path != "" {
return filepath.Join(path, xdgAppName)
}
home, err := os.UserHomeDir()
if err != nil {
panic(err)
}
return filepath.Join(home, ".config", xdgAppName)
}

View File

@@ -1,317 +0,0 @@
// Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"bytes"
"context"
"encoding/base64"
"fmt"
"io/ioutil"
"path/filepath"
"testing"
"time"
"github.com/stretchr/testify/require"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
clientauthv1beta1 "k8s.io/client-go/pkg/apis/clientauthentication/v1beta1"
"k8s.io/klog/v2"
"go.pinniped.dev/internal/certauthority"
"go.pinniped.dev/internal/here"
"go.pinniped.dev/internal/testutil"
"go.pinniped.dev/internal/testutil/testlogger"
"go.pinniped.dev/pkg/conciergeclient"
"go.pinniped.dev/pkg/oidcclient"
"go.pinniped.dev/pkg/oidcclient/oidctypes"
)
func TestLoginOIDCCommand(t *testing.T) {
cfgDir := mustGetConfigDir()
testCA, err := certauthority.New("Test CA", 1*time.Hour)
require.NoError(t, err)
tmpdir := testutil.TempDir(t)
testCABundlePath := filepath.Join(tmpdir, "testca.pem")
require.NoError(t, ioutil.WriteFile(testCABundlePath, testCA.Bundle(), 0600))
time1 := time.Date(3020, 10, 12, 13, 14, 15, 16, time.UTC)
tests := []struct {
name string
args []string
loginErr error
conciergeErr error
env map[string]string
wantError bool
wantStdout string
wantStderr string
wantOptionsCount int
wantLogs []string
}{
{
name: "help flag passed",
args: []string{"--help"},
wantStdout: here.Doc(`
Login using an OpenID Connect provider
Usage:
oidc --issuer ISSUER [flags]
Flags:
--ca-bundle strings Path to TLS certificate authority bundle (PEM format, optional, can be repeated)
--ca-bundle-data strings Base64 encoded TLS certificate authority bundle (base64 encoded PEM format, optional, can be repeated)
--client-id string OpenID Connect client ID (default "pinniped-cli")
--concierge-api-group-suffix string Concierge API group suffix (default "pinniped.dev")
--concierge-authenticator-name string Concierge authenticator name
--concierge-authenticator-type string Concierge authenticator type (e.g., 'webhook', 'jwt')
--concierge-ca-bundle-data string CA bundle to use when connecting to the Concierge
--concierge-endpoint string API base for the Concierge endpoint
--credential-cache string Path to cluster-specific credentials cache ("" disables the cache) (default "` + cfgDir + `/credentials.yaml")
--enable-concierge Use the Concierge to login
-h, --help help for oidc
--issuer string OpenID Connect issuer URL
--listen-port uint16 TCP port for localhost listener (authorization code flow only)
--request-audience string Request a token with an alternate audience using RFC8693 token exchange
--scopes strings OIDC scopes to request during login (default [offline_access,openid,pinniped:request-audience])
--session-cache string Path to session cache file (default "` + cfgDir + `/sessions.yaml")
--skip-browser Skip opening the browser (just print the URL)
--upstream-identity-provider-name string The name of the upstream identity provider used during login with a Supervisor
--upstream-identity-provider-type string The type of the upstream identity provider used during login with a Supervisor (e.g. 'oidc', 'ldap') (default "oidc")
`),
},
{
name: "missing required flags",
args: []string{},
wantError: true,
wantStderr: here.Doc(`
Error: required flag(s) "issuer" not set
`),
},
{
name: "missing concierge flags",
args: []string{
"--client-id", "test-client-id",
"--issuer", "test-issuer",
"--enable-concierge",
},
wantError: true,
wantStderr: here.Doc(`
Error: invalid Concierge parameters: endpoint must not be empty
`),
},
{
name: "invalid CA bundle path",
args: []string{
"--client-id", "test-client-id",
"--issuer", "test-issuer",
"--ca-bundle", "./does/not/exist",
},
wantError: true,
wantStderr: here.Doc(`
Error: could not read --ca-bundle: open ./does/not/exist: no such file or directory
`),
},
{
name: "invalid CA bundle data",
args: []string{
"--client-id", "test-client-id",
"--issuer", "test-issuer",
"--ca-bundle-data", "invalid-base64",
},
wantError: true,
wantStderr: here.Doc(`
Error: could not read --ca-bundle-data: illegal base64 data at input byte 7
`),
},
{
name: "invalid API group suffix",
args: []string{
"--issuer", "test-issuer",
"--enable-concierge",
"--concierge-api-group-suffix", ".starts.with.dot",
"--concierge-authenticator-type", "jwt",
"--concierge-authenticator-name", "test-authenticator",
"--concierge-endpoint", "https://127.0.0.1:1234/",
},
wantError: true,
wantStderr: here.Doc(`
Error: invalid Concierge parameters: invalid API group suffix: a lowercase RFC 1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')
`),
},
{
name: "invalid upstream type",
args: []string{
"--issuer", "test-issuer",
"--upstream-identity-provider-type", "invalid",
},
wantError: true,
wantStderr: here.Doc(`
Error: --upstream-identity-provider-type value not recognized: invalid (supported values: oidc, ldap)
`),
},
{
name: "oidc upstream type is allowed",
args: []string{
"--issuer", "test-issuer",
"--client-id", "test-client-id",
"--upstream-identity-provider-type", "oidc",
"--credential-cache", "", // must specify --credential-cache or else the cache file on disk causes test pollution
},
wantOptionsCount: 4,
wantStdout: `{"kind":"ExecCredential","apiVersion":"client.authentication.k8s.io/v1beta1","spec":{},"status":{"expirationTimestamp":"3020-10-12T13:14:15Z","token":"test-id-token"}}` + "\n",
},
{
name: "ldap upstream type is allowed",
args: []string{
"--issuer", "test-issuer",
"--client-id", "test-client-id",
"--upstream-identity-provider-type", "ldap",
"--credential-cache", "", // must specify --credential-cache or else the cache file on disk causes test pollution
},
wantOptionsCount: 5,
wantStdout: `{"kind":"ExecCredential","apiVersion":"client.authentication.k8s.io/v1beta1","spec":{},"status":{"expirationTimestamp":"3020-10-12T13:14:15Z","token":"test-id-token"}}` + "\n",
},
{
name: "login error",
args: []string{
"--client-id", "test-client-id",
"--issuer", "test-issuer",
"--credential-cache", "", // must specify --credential-cache or else the cache file on disk causes test pollution
},
loginErr: fmt.Errorf("some login error"),
wantOptionsCount: 4,
wantError: true,
wantStderr: here.Doc(`
Error: could not complete Pinniped login: some login error
`),
},
{
name: "concierge token exchange error",
args: []string{
"--client-id", "test-client-id",
"--issuer", "test-issuer",
"--enable-concierge",
"--concierge-authenticator-type", "jwt",
"--concierge-authenticator-name", "test-authenticator",
"--concierge-endpoint", "https://127.0.0.1:1234/",
"--credential-cache", "", // must specify --credential-cache or else the cache file on disk causes test pollution
},
conciergeErr: fmt.Errorf("some concierge error"),
wantOptionsCount: 4,
wantError: true,
wantStderr: here.Doc(`
Error: could not complete Concierge credential exchange: some concierge error
`),
},
{
name: "success with minimal options",
args: []string{
"--client-id", "test-client-id",
"--issuer", "test-issuer",
"--credential-cache", "", // must specify --credential-cache or else the cache file on disk causes test pollution
},
env: map[string]string{"PINNIPED_DEBUG": "true"},
wantOptionsCount: 4,
wantStdout: `{"kind":"ExecCredential","apiVersion":"client.authentication.k8s.io/v1beta1","spec":{},"status":{"expirationTimestamp":"3020-10-12T13:14:15Z","token":"test-id-token"}}` + "\n",
wantLogs: []string{
"\"level\"=0 \"msg\"=\"Pinniped login: Performing OIDC login\" \"client id\"=\"test-client-id\" \"issuer\"=\"test-issuer\"",
"\"level\"=0 \"msg\"=\"Pinniped login: No concierge configured, skipping token credential exchange\"",
},
},
{
name: "success with all options",
args: []string{
"--client-id", "test-client-id",
"--issuer", "test-issuer",
"--skip-browser",
"--listen-port", "1234",
"--debug-session-cache",
"--request-audience", "cluster-1234",
"--ca-bundle-data", base64.StdEncoding.EncodeToString(testCA.Bundle()),
"--ca-bundle", testCABundlePath,
"--enable-concierge",
"--concierge-authenticator-type", "webhook",
"--concierge-authenticator-name", "test-authenticator",
"--concierge-endpoint", "https://127.0.0.1:1234/",
"--concierge-ca-bundle-data", base64.StdEncoding.EncodeToString(testCA.Bundle()),
"--concierge-api-group-suffix", "some.suffix.com",
"--credential-cache", testutil.TempDir(t) + "/credentials.yaml", // must specify --credential-cache or else the cache file on disk causes test pollution
"--upstream-identity-provider-name", "some-upstream-name",
"--upstream-identity-provider-type", "ldap",
},
env: map[string]string{"PINNIPED_DEBUG": "true"},
wantOptionsCount: 10,
wantStdout: `{"kind":"ExecCredential","apiVersion":"client.authentication.k8s.io/v1beta1","spec":{},"status":{"token":"exchanged-token"}}` + "\n",
wantLogs: []string{
"\"level\"=0 \"msg\"=\"Pinniped login: Performing OIDC login\" \"client id\"=\"test-client-id\" \"issuer\"=\"test-issuer\"",
"\"level\"=0 \"msg\"=\"Pinniped login: Exchanging token for cluster credential\" \"authenticator name\"=\"test-authenticator\" \"authenticator type\"=\"webhook\" \"endpoint\"=\"https://127.0.0.1:1234/\"",
"\"level\"=0 \"msg\"=\"Pinniped login: Successfully exchanged token for cluster credential.\"",
"\"level\"=0 \"msg\"=\"Pinniped login: caching cluster credential for future use.\"",
},
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
testLogger := testlogger.New(t)
klog.SetLogger(testLogger)
var (
gotOptions []oidcclient.Option
)
cmd := oidcLoginCommand(oidcLoginCommandDeps{
lookupEnv: func(s string) (string, bool) {
v, ok := tt.env[s]
return v, ok
},
login: func(issuer string, clientID string, opts ...oidcclient.Option) (*oidctypes.Token, error) {
require.Equal(t, "test-issuer", issuer)
require.Equal(t, "test-client-id", clientID)
gotOptions = opts
if tt.loginErr != nil {
return nil, tt.loginErr
}
return &oidctypes.Token{
IDToken: &oidctypes.IDToken{
Token: "test-id-token",
Expiry: metav1.NewTime(time1),
},
}, nil
},
exchangeToken: func(ctx context.Context, client *conciergeclient.Client, token string) (*clientauthv1beta1.ExecCredential, error) {
require.Equal(t, token, "test-id-token")
if tt.conciergeErr != nil {
return nil, tt.conciergeErr
}
return &clientauthv1beta1.ExecCredential{
TypeMeta: metav1.TypeMeta{
Kind: "ExecCredential",
APIVersion: "client.authentication.k8s.io/v1beta1",
},
Status: &clientauthv1beta1.ExecCredentialStatus{
Token: "exchanged-token",
},
}, nil
},
})
require.NotNil(t, cmd)
var stdout, stderr bytes.Buffer
cmd.SetOut(&stdout)
cmd.SetErr(&stderr)
cmd.SetArgs(tt.args)
err := cmd.Execute()
if tt.wantError {
require.Error(t, err)
} else {
require.NoError(t, err)
}
require.Equal(t, tt.wantStdout, stdout.String(), "unexpected stdout")
require.Equal(t, tt.wantStderr, stderr.String(), "unexpected stderr")
require.Len(t, gotOptions, tt.wantOptionsCount)
require.Equal(t, tt.wantLogs, testLogger.Lines())
})
}
}

View File

@@ -1,166 +0,0 @@
// Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"context"
"encoding/json"
"fmt"
"io"
"os"
"path/filepath"
"time"
"github.com/spf13/cobra"
clientauthv1beta1 "k8s.io/client-go/pkg/apis/clientauthentication/v1beta1"
"go.pinniped.dev/internal/execcredcache"
"go.pinniped.dev/internal/groupsuffix"
"go.pinniped.dev/internal/plog"
"go.pinniped.dev/pkg/conciergeclient"
"go.pinniped.dev/pkg/oidcclient/oidctypes"
)
//nolint: gochecknoinits
func init() {
loginCmd.AddCommand(staticLoginCommand(staticLoginRealDeps()))
}
type staticLoginDeps struct {
lookupEnv func(string) (string, bool)
exchangeToken func(context.Context, *conciergeclient.Client, string) (*clientauthv1beta1.ExecCredential, error)
}
func staticLoginRealDeps() staticLoginDeps {
return staticLoginDeps{
lookupEnv: os.LookupEnv,
exchangeToken: func(ctx context.Context, client *conciergeclient.Client, token string) (*clientauthv1beta1.ExecCredential, error) {
return client.ExchangeToken(ctx, token)
},
}
}
type staticLoginParams struct {
staticToken string
staticTokenEnvName string
conciergeEnabled bool
conciergeAuthenticatorType string
conciergeAuthenticatorName string
conciergeEndpoint string
conciergeCABundle string
conciergeAPIGroupSuffix string
credentialCachePath string
}
func staticLoginCommand(deps staticLoginDeps) *cobra.Command {
var (
cmd = &cobra.Command{
Args: cobra.NoArgs,
Use: "static [--token TOKEN] [--token-env TOKEN_NAME]",
Short: "Login using a static token",
SilenceUsage: true,
}
flags staticLoginParams
conciergeNamespace string // unused now
)
cmd.Flags().StringVar(&flags.staticToken, "token", "", "Static token to present during login")
cmd.Flags().StringVar(&flags.staticTokenEnvName, "token-env", "", "Environment variable containing a static token")
cmd.Flags().BoolVar(&flags.conciergeEnabled, "enable-concierge", false, "Use the Concierge to login")
cmd.Flags().StringVar(&conciergeNamespace, "concierge-namespace", "pinniped-concierge", "Namespace in which the Concierge was installed")
cmd.Flags().StringVar(&flags.conciergeAuthenticatorType, "concierge-authenticator-type", "", "Concierge authenticator type (e.g., 'webhook', 'jwt')")
cmd.Flags().StringVar(&flags.conciergeAuthenticatorName, "concierge-authenticator-name", "", "Concierge authenticator name")
cmd.Flags().StringVar(&flags.conciergeEndpoint, "concierge-endpoint", "", "API base for the Concierge endpoint")
cmd.Flags().StringVar(&flags.conciergeCABundle, "concierge-ca-bundle-data", "", "CA bundle to use when connecting to the Concierge")
cmd.Flags().StringVar(&flags.conciergeAPIGroupSuffix, "concierge-api-group-suffix", groupsuffix.PinnipedDefaultSuffix, "Concierge API group suffix")
cmd.Flags().StringVar(&flags.credentialCachePath, "credential-cache", filepath.Join(mustGetConfigDir(), "credentials.yaml"), "Path to cluster-specific credentials cache (\"\" disables the cache)")
cmd.RunE = func(cmd *cobra.Command, args []string) error { return runStaticLogin(cmd.OutOrStdout(), deps, flags) }
mustMarkDeprecated(cmd, "concierge-namespace", "not needed anymore")
mustMarkHidden(cmd, "concierge-namespace")
return cmd
}
func runStaticLogin(out io.Writer, deps staticLoginDeps, flags staticLoginParams) error {
pLogger, err := SetLogLevel(deps.lookupEnv)
if err != nil {
plog.WarningErr("Received error while setting log level", err)
}
if flags.staticToken == "" && flags.staticTokenEnvName == "" {
return fmt.Errorf("one of --token or --token-env must be set")
}
var concierge *conciergeclient.Client
if flags.conciergeEnabled {
var err error
concierge, err = conciergeclient.New(
conciergeclient.WithEndpoint(flags.conciergeEndpoint),
conciergeclient.WithBase64CABundle(flags.conciergeCABundle),
conciergeclient.WithAuthenticator(flags.conciergeAuthenticatorType, flags.conciergeAuthenticatorName),
conciergeclient.WithAPIGroupSuffix(flags.conciergeAPIGroupSuffix),
)
if err != nil {
return fmt.Errorf("invalid Concierge parameters: %w", err)
}
}
var token string
if flags.staticToken != "" {
token = flags.staticToken
}
if flags.staticTokenEnvName != "" {
var ok bool
token, ok = deps.lookupEnv(flags.staticTokenEnvName)
if !ok {
return fmt.Errorf("--token-env variable %q is not set", flags.staticTokenEnvName)
}
if token == "" {
return fmt.Errorf("--token-env variable %q is empty", flags.staticTokenEnvName)
}
}
cred := tokenCredential(&oidctypes.Token{IDToken: &oidctypes.IDToken{Token: token}})
// Look up cached credentials based on a hash of all the CLI arguments, the current token value, and the cluster info.
cacheKey := struct {
Args []string `json:"args"`
Token string `json:"token"`
ClusterInfo *clientauthv1beta1.Cluster `json:"cluster"`
}{
Args: os.Args[1:],
Token: token,
ClusterInfo: loadClusterInfo(),
}
var credCache *execcredcache.Cache
if flags.credentialCachePath != "" {
credCache = execcredcache.New(flags.credentialCachePath)
if cred := credCache.Get(cacheKey); cred != nil {
pLogger.Debug("using cached cluster credential.")
return json.NewEncoder(out).Encode(cred)
}
}
// If the concierge was configured, exchange the credential for a separate short-lived, cluster-specific credential.
if concierge != nil {
pLogger.Debug("exchanging static token for cluster credential", "endpoint", flags.conciergeEndpoint, "authenticator type", flags.conciergeAuthenticatorType, "authenticator name", flags.conciergeAuthenticatorName)
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
var err error
cred, err = deps.exchangeToken(ctx, concierge, token)
if err != nil {
return fmt.Errorf("could not complete Concierge credential exchange: %w", err)
}
pLogger.Debug("exchanged static token for cluster credential")
}
// If there was a credential cache, save the resulting credential for future use. We only save to the cache if
// the credential came from the concierge, since that's the only static token case where the cache is useful.
if credCache != nil && concierge != nil {
credCache.Put(cacheKey, cred)
}
return json.NewEncoder(out).Encode(cred)
}

View File

@@ -1,209 +0,0 @@
// Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"bytes"
"context"
"fmt"
"io/ioutil"
"path/filepath"
"testing"
"time"
"k8s.io/klog/v2"
"go.pinniped.dev/internal/testutil/testlogger"
"github.com/stretchr/testify/require"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
clientauthv1beta1 "k8s.io/client-go/pkg/apis/clientauthentication/v1beta1"
"go.pinniped.dev/internal/certauthority"
"go.pinniped.dev/internal/here"
"go.pinniped.dev/internal/testutil"
"go.pinniped.dev/pkg/conciergeclient"
)
func TestLoginStaticCommand(t *testing.T) {
cfgDir := mustGetConfigDir()
testCA, err := certauthority.New("Test CA", 1*time.Hour)
require.NoError(t, err)
tmpdir := testutil.TempDir(t)
testCABundlePath := filepath.Join(tmpdir, "testca.pem")
require.NoError(t, ioutil.WriteFile(testCABundlePath, testCA.Bundle(), 0600))
tests := []struct {
name string
args []string
env map[string]string
loginErr error
conciergeErr error
wantError bool
wantStdout string
wantStderr string
wantOptionsCount int
wantLogs []string
}{
{
name: "help flag passed",
args: []string{"--help"},
wantStdout: here.Doc(`
Login using a static token
Usage:
static [--token TOKEN] [--token-env TOKEN_NAME] [flags]
Flags:
--concierge-api-group-suffix string Concierge API group suffix (default "pinniped.dev")
--concierge-authenticator-name string Concierge authenticator name
--concierge-authenticator-type string Concierge authenticator type (e.g., 'webhook', 'jwt')
--concierge-ca-bundle-data string CA bundle to use when connecting to the Concierge
--concierge-endpoint string API base for the Concierge endpoint
--credential-cache string Path to cluster-specific credentials cache ("" disables the cache) (default "` + cfgDir + `/credentials.yaml")
--enable-concierge Use the Concierge to login
-h, --help help for static
--token string Static token to present during login
--token-env string Environment variable containing a static token
`),
},
{
name: "missing required flags",
args: []string{},
wantError: true,
wantStderr: here.Doc(`
Error: one of --token or --token-env must be set
`),
},
{
name: "missing concierge flags",
args: []string{
"--token", "test-token",
"--enable-concierge",
},
wantError: true,
wantStderr: here.Doc(`
Error: invalid Concierge parameters: endpoint must not be empty
`),
},
{
name: "missing env var",
args: []string{
"--token-env", "TEST_TOKEN_ENV",
},
wantError: true,
wantStderr: here.Doc(`
Error: --token-env variable "TEST_TOKEN_ENV" is not set
`),
},
{
name: "empty env var",
args: []string{
"--token-env", "TEST_TOKEN_ENV",
},
env: map[string]string{
"TEST_TOKEN_ENV": "",
},
wantError: true,
wantStderr: here.Doc(`
Error: --token-env variable "TEST_TOKEN_ENV" is empty
`),
},
{
name: "env var token success",
args: []string{
"--token-env", "TEST_TOKEN_ENV",
},
env: map[string]string{
"TEST_TOKEN_ENV": "test-token",
},
wantStdout: `{"kind":"ExecCredential","apiVersion":"client.authentication.k8s.io/v1beta1","spec":{},"status":{"token":"test-token"}}` + "\n",
},
{
name: "concierge failure",
args: []string{
"--token", "test-token",
"--enable-concierge",
"--concierge-endpoint", "https://127.0.0.1/",
"--concierge-authenticator-type", "webhook",
"--concierge-authenticator-name", "test-authenticator",
},
conciergeErr: fmt.Errorf("some concierge error"),
env: map[string]string{"PINNIPED_DEBUG": "true"},
wantError: true,
wantStderr: here.Doc(`
Error: could not complete Concierge credential exchange: some concierge error
`),
wantLogs: []string{"\"level\"=0 \"msg\"=\"Pinniped login: exchanging static token for cluster credential\" \"authenticator name\"=\"test-authenticator\" \"authenticator type\"=\"webhook\" \"endpoint\"=\"https://127.0.0.1/\""},
},
{
name: "invalid API group suffix",
args: []string{
"--token", "test-token",
"--enable-concierge",
"--concierge-api-group-suffix", ".starts.with.dot",
"--concierge-authenticator-type", "jwt",
"--concierge-authenticator-name", "test-authenticator",
"--concierge-endpoint", "https://127.0.0.1:1234/",
},
wantError: true,
wantStderr: here.Doc(`
Error: invalid Concierge parameters: invalid API group suffix: a lowercase RFC 1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')
`),
},
{
name: "static token success",
args: []string{
"--token", "test-token",
},
env: map[string]string{"PINNIPED_DEBUG": "true"},
wantStdout: `{"kind":"ExecCredential","apiVersion":"client.authentication.k8s.io/v1beta1","spec":{},"status":{"token":"test-token"}}` + "\n",
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
testLogger := testlogger.New(t)
klog.SetLogger(testLogger)
cmd := staticLoginCommand(staticLoginDeps{
lookupEnv: func(s string) (string, bool) {
v, ok := tt.env[s]
return v, ok
},
exchangeToken: func(ctx context.Context, client *conciergeclient.Client, token string) (*clientauthv1beta1.ExecCredential, error) {
require.Equal(t, token, "test-token")
if tt.conciergeErr != nil {
return nil, tt.conciergeErr
}
return &clientauthv1beta1.ExecCredential{
TypeMeta: metav1.TypeMeta{
Kind: "ExecCredential",
APIVersion: "client.authentication.k8s.io/v1beta1",
},
Status: &clientauthv1beta1.ExecCredentialStatus{
Token: "exchanged-token",
},
}, nil
},
})
require.NotNil(t, cmd)
var stdout, stderr bytes.Buffer
cmd.SetOut(&stdout)
cmd.SetErr(&stderr)
cmd.SetArgs(tt.args)
err := cmd.Execute()
if tt.wantError {
require.Error(t, err)
} else {
require.NoError(t, err)
}
require.Equal(t, tt.wantStdout, stdout.String(), "unexpected stdout")
require.Equal(t, tt.wantStderr, stderr.String(), "unexpected stderr")
require.Equal(t, tt.wantLogs, testLogger.Lines())
})
}
}

View File

@@ -1,34 +0,0 @@
// Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"os"
"github.com/spf13/cobra"
"go.pinniped.dev/internal/plog"
)
//nolint: gochecknoglobals
var rootCmd = &cobra.Command{
Use: "pinniped",
Short: "pinniped",
Long: "pinniped is the client-side binary for use with Pinniped-enabled Kubernetes clusters.",
SilenceUsage: true, // do not print usage message when commands fail
}
//nolint: gochecknoinits
func init() {
// We don't want klog flags showing up in our CLI.
plog.RemoveKlogGlobalFlags()
}
// Execute adds all child commands to the root command and sets flags appropriately.
// This is called by main.main(). It only needs to happen once to the rootCmd.
func Execute() {
if err := rootCmd.Execute(); err != nil {
os.Exit(1)
}
}

View File

@@ -1,39 +0,0 @@
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: ZmFrZS1jZXJ0aWZpY2F0ZS1hdXRob3JpdHktZGF0YS12YWx1ZQ== # fake-certificate-authority-data-value
server: https://fake-server-url-value
name: kind-cluster
- cluster:
certificate-authority-data: c29tZS1vdGhlci1mYWtlLWNlcnRpZmljYXRlLWF1dGhvcml0eS1kYXRhLXZhbHVl # some-other-fake-certificate-authority-data-value
server: https://some-other-fake-server-url-value
name: some-other-cluster
contexts:
- context:
cluster: kind-cluster
user: kind-user
name: kind-context
- context:
cluster: some-other-cluster
user: some-other-user
name: some-other-context
- context:
cluster: invalid-cluster
user: some-other-user
name: invalid-context-no-such-cluster
- context:
cluster: some-other-cluster
user: invalid-user
name: invalid-context-no-such-user
current-context: kind-context
kind: Config
preferences: {}
users:
- name: kind-user
user:
client-certificate-data: ZmFrZS1jbGllbnQtY2VydGlmaWNhdGUtZGF0YS12YWx1ZQ== # fake-client-certificate-data-value
client-key-data: ZmFrZS1jbGllbnQta2V5LWRhdGEtdmFsdWU= # fake-client-key-data-value
- name: some-other-user
user:
client-certificate-data: c29tZS1vdGhlci1mYWtlLWNsaWVudC1jZXJ0aWZpY2F0ZS1kYXRhLXZhbHVl # some-other-fake-client-certificate-data-value
client-key-data: c29tZS1vdGhlci1mYWtlLWNsaWVudC1rZXktZGF0YS12YWx1ZQ== # some-other-fake-client-key-data-value

View File

@@ -1,28 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"fmt"
"github.com/spf13/cobra"
"k8s.io/component-base/version"
)
//nolint: gochecknoinits
func init() {
rootCmd.AddCommand(newVersionCommand())
}
func newVersionCommand() *cobra.Command {
return &cobra.Command{
RunE: func(cmd *cobra.Command, _ []string) error {
fmt.Fprintf(cmd.OutOrStdout(), "%#v\n", version.Get())
return nil
},
Args: cobra.NoArgs, // do not accept positional arguments for this command
Use: "version",
Short: "Print the version of this Pinniped CLI",
}
}

View File

@@ -1,85 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"bytes"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.pinniped.dev/internal/here"
)
var (
knownGoodUsageRegexpForVersion = here.Doc(`
Usage:
version \[flags\]
Flags:
-h, --help help for version
`)
knownGoodHelpRegexpForVersion = here.Doc(`
Print the version of this Pinniped CLI
Usage:
version \[flags\]
Flags:
-h, --help help for version
`)
emptyVersionRegexp = `version.Info{Major:"", Minor:"", GitVersion:".*", GitCommit:".*", GitTreeState:"", BuildDate:".*", GoVersion:".*", Compiler:".*", Platform:".*/.*"}`
)
func TestNewVersionCmd(t *testing.T) {
tests := []struct {
name string
args []string
wantError bool
wantStdoutRegexp string
wantStderrRegexp string
}{
{
name: "no flags",
args: []string{},
wantStdoutRegexp: emptyVersionRegexp + "\n",
},
{
name: "help flag passed",
args: []string{"--help"},
wantStdoutRegexp: knownGoodHelpRegexpForVersion,
},
{
name: "arg passed",
args: []string{"tuna"},
wantError: true,
wantStderrRegexp: `Error: unknown command "tuna" for "version"`,
wantStdoutRegexp: knownGoodUsageRegexpForVersion,
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
cmd := newVersionCommand()
require.NotNil(t, cmd)
var stdout, stderr bytes.Buffer
cmd.SetOut(&stdout)
cmd.SetErr(&stderr)
cmd.SetArgs(tt.args)
err := cmd.Execute()
if tt.wantError {
require.Error(t, err)
} else {
require.NoError(t, err)
}
assert.Regexp(t, tt.wantStdoutRegexp, stdout.String(), "unexpected stdout")
assert.Regexp(t, tt.wantStderrRegexp, stderr.String(), "unexpected stderr")
})
}
}

View File

@@ -1,191 +0,0 @@
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"context"
"fmt"
"io"
"os"
"strings"
"time"
"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/serializer"
"k8s.io/client-go/tools/clientcmd"
identityv1alpha1 "go.pinniped.dev/generated/latest/apis/concierge/identity/v1alpha1"
conciergescheme "go.pinniped.dev/internal/concierge/scheme"
"go.pinniped.dev/internal/groupsuffix"
"go.pinniped.dev/internal/here"
)
//nolint: gochecknoinits
func init() {
rootCmd.AddCommand(newWhoamiCommand(getRealConciergeClientset))
}
type whoamiFlags struct {
outputFormat string // e.g., yaml, json, text
kubeconfigPath string
kubeconfigContextOverride string
apiGroupSuffix string
}
type clusterInfo struct {
name string
url string
}
func newWhoamiCommand(getClientset getConciergeClientsetFunc) *cobra.Command {
cmd := &cobra.Command{
Args: cobra.NoArgs, // do not accept positional arguments for this command
Use: "whoami",
Short: "Print information about the current user",
SilenceUsage: true,
}
flags := &whoamiFlags{}
// flags
f := cmd.Flags()
f.StringVarP(&flags.outputFormat, "output", "o", "text", "Output format (e.g., 'yaml', 'json', 'text')")
f.StringVar(&flags.kubeconfigPath, "kubeconfig", os.Getenv("KUBECONFIG"), "Path to kubeconfig file")
f.StringVar(&flags.kubeconfigContextOverride, "kubeconfig-context", "", "Kubeconfig context name (default: current active context)")
f.StringVar(&flags.apiGroupSuffix, "api-group-suffix", groupsuffix.PinnipedDefaultSuffix, "Concierge API group suffix")
cmd.RunE = func(cmd *cobra.Command, _ []string) error {
return runWhoami(cmd.OutOrStdout(), getClientset, flags)
}
return cmd
}
func runWhoami(output io.Writer, getClientset getConciergeClientsetFunc, flags *whoamiFlags) error {
clientConfig := newClientConfig(flags.kubeconfigPath, flags.kubeconfigContextOverride)
clientset, err := getClientset(clientConfig, flags.apiGroupSuffix)
if err != nil {
return fmt.Errorf("could not configure Kubernetes client: %w", err)
}
clusterInfo, err := getCurrentCluster(clientConfig, flags.kubeconfigContextOverride)
if err != nil {
return fmt.Errorf("could not get current cluster info: %w", err)
}
ctx, cancelFunc := context.WithTimeout(context.Background(), time.Second*20)
defer cancelFunc()
whoAmI, err := clientset.IdentityV1alpha1().WhoAmIRequests().Create(ctx, &identityv1alpha1.WhoAmIRequest{}, metav1.CreateOptions{})
if err != nil {
hint := ""
if errors.IsNotFound(err) {
hint = " (is the Pinniped WhoAmI API running and healthy?)"
}
return fmt.Errorf("could not complete WhoAmIRequest%s: %w", hint, err)
}
if err := writeWhoamiOutput(output, flags, clusterInfo, whoAmI); err != nil {
return fmt.Errorf("could not write output: %w", err)
}
return nil
}
func getCurrentCluster(clientConfig clientcmd.ClientConfig, currentContextNameOverride string) (*clusterInfo, error) {
currentKubeConfig, err := clientConfig.RawConfig()
if err != nil {
return nil, err
}
contextName := currentKubeConfig.CurrentContext
if len(currentContextNameOverride) > 0 {
contextName = currentContextNameOverride
}
unknownClusterInfo := &clusterInfo{name: "???", url: "???"}
ctx, ok := currentKubeConfig.Contexts[contextName]
if !ok {
return unknownClusterInfo, nil
}
cluster, ok := currentKubeConfig.Clusters[ctx.Cluster]
if !ok {
return unknownClusterInfo, nil
}
return &clusterInfo{name: ctx.Cluster, url: cluster.Server}, nil
}
func writeWhoamiOutput(output io.Writer, flags *whoamiFlags, cInfo *clusterInfo, whoAmI *identityv1alpha1.WhoAmIRequest) error {
switch flags.outputFormat {
case "text":
return writeWhoamiOutputText(output, cInfo, whoAmI)
case "json":
return writeWhoamiOutputJSON(output, flags.apiGroupSuffix, whoAmI)
case "yaml":
return writeWhoamiOutputYAML(output, flags.apiGroupSuffix, whoAmI)
default:
return fmt.Errorf("unknown output format: %q", flags.outputFormat)
}
}
func writeWhoamiOutputText(output io.Writer, clusterInfo *clusterInfo, whoAmI *identityv1alpha1.WhoAmIRequest) error {
fmt.Fprint(output, here.Docf(`
Current cluster info:
Name: %s
URL: %s
Current user info:
Username: %s
Groups: %s
`, clusterInfo.name, clusterInfo.url, whoAmI.Status.KubernetesUserInfo.User.Username, prettyStrings(whoAmI.Status.KubernetesUserInfo.User.Groups)))
return nil
}
func writeWhoamiOutputJSON(output io.Writer, apiGroupSuffix string, whoAmI *identityv1alpha1.WhoAmIRequest) error {
return serialize(output, apiGroupSuffix, whoAmI, runtime.ContentTypeJSON)
}
func writeWhoamiOutputYAML(output io.Writer, apiGroupSuffix string, whoAmI *identityv1alpha1.WhoAmIRequest) error {
return serialize(output, apiGroupSuffix, whoAmI, runtime.ContentTypeYAML)
}
func serialize(output io.Writer, apiGroupSuffix string, whoAmI *identityv1alpha1.WhoAmIRequest, contentType string) error {
scheme, _, identityGV := conciergescheme.New(apiGroupSuffix)
codecs := serializer.NewCodecFactory(scheme)
respInfo, ok := runtime.SerializerInfoForMediaType(codecs.SupportedMediaTypes(), contentType)
if !ok {
return fmt.Errorf("unknown content type: %q", contentType)
}
// I have seen the pretty serializer be nil before, so this will hopefully protect against that
// corner.
serializer := respInfo.PrettySerializer
if serializer == nil {
serializer = respInfo.Serializer
}
// Ensure that these fields are set so that the JSON/YAML output tells the full story.
whoAmI.APIVersion = identityGV.String()
whoAmI.Kind = "WhoAmIRequest"
return serializer.Encode(whoAmI, output)
}
func prettyStrings(ss []string) string {
b := &strings.Builder{}
for i, s := range ss {
if i != 0 {
b.WriteString(", ")
}
b.WriteString(s)
}
return b.String()
}

View File

@@ -1,327 +0,0 @@
// Copyright 2021 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"bytes"
"testing"
"github.com/stretchr/testify/require"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/runtime"
kubetesting "k8s.io/client-go/testing"
"k8s.io/client-go/tools/clientcmd"
identityv1alpha1 "go.pinniped.dev/generated/latest/apis/concierge/identity/v1alpha1"
conciergeclientset "go.pinniped.dev/generated/latest/client/concierge/clientset/versioned"
fakeconciergeclientset "go.pinniped.dev/generated/latest/client/concierge/clientset/versioned/fake"
"go.pinniped.dev/internal/constable"
"go.pinniped.dev/internal/here"
)
func TestWhoami(t *testing.T) {
tests := []struct {
name string
args []string
groupsOverride []string
gettingClientsetErr error
callingAPIErr error
wantError bool
wantStdout, wantStderr string
}{
{
name: "help flag",
args: []string{"--help"},
wantStdout: here.Doc(`
Print information about the current user
Usage:
whoami [flags]
Flags:
--api-group-suffix string Concierge API group suffix (default "pinniped.dev")
-h, --help help for whoami
--kubeconfig string Path to kubeconfig file
--kubeconfig-context string Kubeconfig context name (default: current active context)
-o, --output string Output format (e.g., 'yaml', 'json', 'text') (default "text")
`),
},
{
name: "text output",
args: []string{"--kubeconfig", "testdata/kubeconfig.yaml"},
wantStdout: here.Doc(`
Current cluster info:
Name: kind-cluster
URL: https://fake-server-url-value
Current user info:
Username: some-username
Groups: some-group-0, some-group-1
`),
},
{
name: "text output with long output flag",
args: []string{"--kubeconfig", "testdata/kubeconfig.yaml", "--output", "text"},
wantStdout: here.Doc(`
Current cluster info:
Name: kind-cluster
URL: https://fake-server-url-value
Current user info:
Username: some-username
Groups: some-group-0, some-group-1
`),
},
{
name: "text output with 1 group",
args: []string{"--kubeconfig", "testdata/kubeconfig.yaml", "--output", "text"},
groupsOverride: []string{"some-group-0"},
wantStdout: here.Doc(`
Current cluster info:
Name: kind-cluster
URL: https://fake-server-url-value
Current user info:
Username: some-username
Groups: some-group-0
`),
},
{
name: "text output with no groups",
args: []string{"--kubeconfig", "testdata/kubeconfig.yaml", "--output", "text"},
groupsOverride: []string{},
wantStdout: here.Doc(`
Current cluster info:
Name: kind-cluster
URL: https://fake-server-url-value
Current user info:
Username: some-username
Groups:
`),
},
{
name: "json output",
args: []string{"--kubeconfig", "testdata/kubeconfig.yaml", "-o", "json"},
wantStdout: here.Doc(`
{
"kind": "WhoAmIRequest",
"apiVersion": "identity.concierge.pinniped.dev/v1alpha1",
"metadata": {
"creationTimestamp": null
},
"spec": {},
"status": {
"kubernetesUserInfo": {
"user": {
"username": "some-username",
"groups": [
"some-group-0",
"some-group-1"
]
}
}
}
}`),
},
{
name: "json output with api group suffix flag",
args: []string{"--kubeconfig", "testdata/kubeconfig.yaml", "-o", "json", "--api-group-suffix", "tuna.io"},
wantStdout: here.Doc(`
{
"kind": "WhoAmIRequest",
"apiVersion": "identity.concierge.tuna.io/v1alpha1",
"metadata": {
"creationTimestamp": null
},
"spec": {},
"status": {
"kubernetesUserInfo": {
"user": {
"username": "some-username",
"groups": [
"some-group-0",
"some-group-1"
]
}
}
}
}`),
},
{
name: "yaml output",
args: []string{"--kubeconfig", "testdata/kubeconfig.yaml", "-o", "yaml"},
wantStdout: here.Doc(`
apiVersion: identity.concierge.pinniped.dev/v1alpha1
kind: WhoAmIRequest
metadata:
creationTimestamp: null
spec: {}
status:
kubernetesUserInfo:
user:
groups:
- some-group-0
- some-group-1
username: some-username
`),
},
{
name: "yaml output with api group suffix",
args: []string{"--kubeconfig", "testdata/kubeconfig.yaml", "-o", "yaml", "--api-group-suffix", "tuna.io"},
wantStdout: here.Doc(`
apiVersion: identity.concierge.tuna.io/v1alpha1
kind: WhoAmIRequest
metadata:
creationTimestamp: null
spec: {}
status:
kubernetesUserInfo:
user:
groups:
- some-group-0
- some-group-1
username: some-username
`),
},
{
name: "extra args",
args: []string{"extra-arg"},
wantError: true,
wantStderr: "Error: unknown command \"extra-arg\" for \"whoami\"\n",
},
{
name: "cannot get cluster info",
args: []string{"--kubeconfig", "this-file-does-not-exist"},
wantError: true,
wantStderr: "Error: could not get current cluster info: stat this-file-does-not-exist: no such file or directory\n",
},
{
name: "different kubeconfig context, but same as current",
args: []string{
"--kubeconfig", "./testdata/kubeconfig.yaml",
"--kubeconfig-context", "kind-context",
},
wantStdout: here.Doc(`
Current cluster info:
Name: kind-cluster
URL: https://fake-server-url-value
Current user info:
Username: some-username
Groups: some-group-0, some-group-1
`),
},
{
name: "different kubeconfig context, not current",
args: []string{
"--kubeconfig", "./testdata/kubeconfig.yaml",
"--kubeconfig-context", "some-other-context",
},
wantStdout: here.Doc(`
Current cluster info:
Name: some-other-cluster
URL: https://some-other-fake-server-url-value
Current user info:
Username: some-username
Groups: some-group-0, some-group-1
`),
},
{
name: "invalid kubeconfig context prints ???",
args: []string{
"--kubeconfig", "./testdata/kubeconfig.yaml",
"--kubeconfig-context", "invalid",
},
wantStdout: here.Doc(`
Current cluster info:
Name: ???
URL: ???
Current user info:
Username: some-username
Groups: some-group-0, some-group-1
`),
},
{
name: "getting clientset fails",
gettingClientsetErr: constable.Error("some get clientset error"),
wantError: true,
wantStderr: "Error: could not configure Kubernetes client: some get clientset error\n",
},
{
name: "calling API fails",
callingAPIErr: constable.Error("some API error"),
wantError: true,
wantStderr: "Error: could not complete WhoAmIRequest: some API error\n",
},
{
name: "calling API fails because WhoAmI API is not installed",
callingAPIErr: errors.NewNotFound(identityv1alpha1.SchemeGroupVersion.WithResource("whoamirequests").GroupResource(), "whatever"),
wantError: true,
wantStderr: "Error: could not complete WhoAmIRequest (is the Pinniped WhoAmI API running and healthy?): whoamirequests.identity.concierge.pinniped.dev \"whatever\" not found\n",
},
}
for _, test := range tests {
test := test
t.Run(test.name, func(t *testing.T) {
getClientset := func(clientConfig clientcmd.ClientConfig, apiGroupSuffix string) (conciergeclientset.Interface, error) {
if test.gettingClientsetErr != nil {
return nil, test.gettingClientsetErr
}
clientset := fakeconciergeclientset.NewSimpleClientset()
clientset.PrependReactor("create", "whoamirequests", func(_ kubetesting.Action) (bool, runtime.Object, error) {
if test.callingAPIErr != nil {
return true, nil, test.callingAPIErr
}
groups := []string{"some-group-0", "some-group-1"}
if test.groupsOverride != nil {
groups = test.groupsOverride
}
return true, &identityv1alpha1.WhoAmIRequest{
Status: identityv1alpha1.WhoAmIRequestStatus{
KubernetesUserInfo: identityv1alpha1.KubernetesUserInfo{
User: identityv1alpha1.UserInfo{
Username: "some-username",
Groups: groups,
},
},
},
}, nil
})
return clientset, nil
}
cmd := newWhoamiCommand(getClientset)
stdout, stderr := bytes.NewBuffer([]byte{}), bytes.NewBuffer([]byte{})
cmd.SetOut(stdout)
cmd.SetErr(stderr)
cmd.SetArgs(test.args)
err := cmd.Execute()
if test.wantError {
require.Error(t, err)
} else {
require.NoError(t, err)
}
require.Equal(t, test.wantStdout, stdout.String())
require.Equal(t, test.wantStderr, stderr.String())
})
}
}

View File

@@ -1,10 +0,0 @@
// Copyright 2020 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package main
import "go.pinniped.dev/cmd/pinniped/cmd"
func main() {
cmd.Execute()
}

View File

@@ -1,3 +0,0 @@
# Pinniped Concierge Deployment
See [the how-to guide for details](https://pinniped.dev/docs/howto/install-concierge/).

View File

@@ -1,171 +0,0 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.4.0
creationTimestamp: null
name: jwtauthenticators.authentication.concierge.pinniped.dev
spec:
group: authentication.concierge.pinniped.dev
names:
categories:
- pinniped
- pinniped-authenticator
- pinniped-authenticators
kind: JWTAuthenticator
listKind: JWTAuthenticatorList
plural: jwtauthenticators
singular: jwtauthenticator
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .spec.issuer
name: Issuer
type: string
name: v1alpha1
schema:
openAPIV3Schema:
description: "JWTAuthenticator describes the configuration of a JWT authenticator.
\n Upon receiving a signed JWT, a JWTAuthenticator will performs some validation
on it (e.g., valid signature, existence of claims, etc.) and extract the
username and groups from the token."
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: Spec for configuring the authenticator.
properties:
audience:
description: Audience is the required value of the "aud" JWT claim.
minLength: 1
type: string
claims:
description: Claims allows customization of the claims that will be
mapped to user identity for Kubernetes access.
properties:
groups:
description: Groups is the name of the claim which should be read
to extract the user's group membership from the JWT token. When
not specified, it will default to "groups".
type: string
username:
description: Username is the name of the claim which should be
read to extract the username from the JWT token. When not specified,
it will default to "username".
type: string
type: object
issuer:
description: Issuer is the OIDC issuer URL that will be used to discover
public signing keys. Issuer is also used to validate the "iss" JWT
claim.
minLength: 1
pattern: ^https://
type: string
tls:
description: TLS configuration for communicating with the OIDC provider.
properties:
certificateAuthorityData:
description: X.509 Certificate Authority (base64-encoded PEM bundle).
If omitted, a default set of system roots will be trusted.
type: string
type: object
required:
- audience
- issuer
type: object
status:
description: Status of the authenticator.
properties:
conditions:
description: Represents the observations of the authenticator's current
state.
items:
description: Condition status of a resource (mirrored from the metav1.Condition
type added in Kubernetes 1.19). In a future API version we can
switch to using the upstream type. See https://github.com/kubernetes/apimachinery/blob/v0.19.0/pkg/apis/meta/v1/types.go#L1353-L1413.
properties:
lastTransitionTime:
description: lastTransitionTime is the last time the condition
transitioned from one status to another. This should be when
the underlying condition changed. If that is not known, then
using the time when the API field changed is acceptable.
format: date-time
type: string
message:
description: message is a human readable message indicating
details about the transition. This may be an empty string.
maxLength: 32768
type: string
observedGeneration:
description: observedGeneration represents the .metadata.generation
that the condition was set based upon. For instance, if .metadata.generation
is currently 12, but the .status.conditions[x].observedGeneration
is 9, the condition is out of date with respect to the current
state of the instance.
format: int64
minimum: 0
type: integer
reason:
description: reason contains a programmatic identifier indicating
the reason for the condition's last transition. Producers
of specific condition types may define expected values and
meanings for this field, and whether the values are considered
a guaranteed API. The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
description: status of the condition, one of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: type of condition in CamelCase or in foo.example.com/CamelCase.
--- Many .condition.type values are consistent across resources
like Available, but because arbitrary conditions can be useful
(see .node.status.conditions), the ability to deconflict is
important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
type: object
required:
- spec
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,147 +0,0 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.4.0
creationTimestamp: null
name: webhookauthenticators.authentication.concierge.pinniped.dev
spec:
group: authentication.concierge.pinniped.dev
names:
categories:
- pinniped
- pinniped-authenticator
- pinniped-authenticators
kind: WebhookAuthenticator
listKind: WebhookAuthenticatorList
plural: webhookauthenticators
singular: webhookauthenticator
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .spec.endpoint
name: Endpoint
type: string
name: v1alpha1
schema:
openAPIV3Schema:
description: WebhookAuthenticator describes the configuration of a webhook
authenticator.
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: Spec for configuring the authenticator.
properties:
endpoint:
description: Webhook server endpoint URL.
minLength: 1
pattern: ^https://
type: string
tls:
description: TLS configuration.
properties:
certificateAuthorityData:
description: X.509 Certificate Authority (base64-encoded PEM bundle).
If omitted, a default set of system roots will be trusted.
type: string
type: object
required:
- endpoint
type: object
status:
description: Status of the authenticator.
properties:
conditions:
description: Represents the observations of the authenticator's current
state.
items:
description: Condition status of a resource (mirrored from the metav1.Condition
type added in Kubernetes 1.19). In a future API version we can
switch to using the upstream type. See https://github.com/kubernetes/apimachinery/blob/v0.19.0/pkg/apis/meta/v1/types.go#L1353-L1413.
properties:
lastTransitionTime:
description: lastTransitionTime is the last time the condition
transitioned from one status to another. This should be when
the underlying condition changed. If that is not known, then
using the time when the API field changed is acceptable.
format: date-time
type: string
message:
description: message is a human readable message indicating
details about the transition. This may be an empty string.
maxLength: 32768
type: string
observedGeneration:
description: observedGeneration represents the .metadata.generation
that the condition was set based upon. For instance, if .metadata.generation
is currently 12, but the .status.conditions[x].observedGeneration
is 9, the condition is out of date with respect to the current
state of the instance.
format: int64
minimum: 0
type: integer
reason:
description: reason contains a programmatic identifier indicating
the reason for the condition's last transition. Producers
of specific condition types may define expected values and
meanings for this field, and whether the values are considered
a guaranteed API. The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
description: status of the condition, one of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: type of condition in CamelCase or in foo.example.com/CamelCase.
--- Many .condition.type values are consistent across resources
like Available, but because arbitrary conditions can be useful
(see .node.status.conditions), the ability to deconflict is
important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
type: object
required:
- spec
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,237 +0,0 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.4.0
creationTimestamp: null
name: credentialissuers.config.concierge.pinniped.dev
spec:
group: config.concierge.pinniped.dev
names:
categories:
- pinniped
kind: CredentialIssuer
listKind: CredentialIssuerList
plural: credentialissuers
singular: credentialissuer
scope: Cluster
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: CredentialIssuer describes the configuration and status of the
Pinniped Concierge credential issuer.
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: Spec describes the intended configuration of the Concierge.
properties:
impersonationProxy:
description: ImpersonationProxy describes the intended configuration
of the Concierge impersonation proxy.
properties:
externalEndpoint:
description: "ExternalEndpoint describes the HTTPS endpoint where
the proxy will be exposed. If not set, the proxy will be served
using the external name of the LoadBalancer service or the cluster
service DNS name. \n This field must be non-empty when spec.impersonationProxy.service.mode
is \"None\"."
type: string
mode:
description: 'Mode configures whether the impersonation proxy
should be started: - "disabled" explicitly disables the impersonation
proxy. This is the default. - "enabled" explicitly enables the
impersonation proxy. - "auto" enables or disables the impersonation
proxy based upon the cluster in which it is running.'
enum:
- auto
- enabled
- disabled
type: string
service:
default:
type: LoadBalancer
description: Service describes the configuration of the Service
provisioned to expose the impersonation proxy to clients.
properties:
annotations:
additionalProperties:
type: string
description: Annotations specifies zero or more key/value
pairs to set as annotations on the provisioned Service.
type: object
loadBalancerIP:
description: LoadBalancerIP specifies the IP address to set
in the spec.loadBalancerIP field of the provisioned Service.
This is not supported on all cloud providers.
maxLength: 255
minLength: 1
type: string
type:
default: LoadBalancer
description: "Type specifies the type of Service to provision
for the impersonation proxy. \n If the type is \"None\",
then the \"spec.impersonationProxy.externalEndpoint\" field
must be set to a non-empty value so that the Concierge can
properly advertise the endpoint in the CredentialIssuer's
status."
enum:
- LoadBalancer
- ClusterIP
- None
type: string
type: object
required:
- mode
- service
type: object
required:
- impersonationProxy
type: object
status:
description: CredentialIssuerStatus describes the status of the Concierge.
properties:
kubeConfigInfo:
description: Information needed to form a valid Pinniped-based kubeconfig
using this credential issuer. This field is deprecated and will
be removed in a future version.
properties:
certificateAuthorityData:
description: The K8s API server CA bundle.
minLength: 1
type: string
server:
description: The K8s API server URL.
minLength: 1
pattern: ^https://|^http://
type: string
required:
- certificateAuthorityData
- server
type: object
strategies:
description: List of integration strategies that were attempted by
Pinniped.
items:
description: CredentialIssuerStrategy describes the status of an
integration strategy that was attempted by Pinniped.
properties:
frontend:
description: Frontend describes how clients can connect using
this strategy.
properties:
impersonationProxyInfo:
description: ImpersonationProxyInfo describes the parameters
for the impersonation proxy on this Concierge. This field
is only set when Type is "ImpersonationProxy".
properties:
certificateAuthorityData:
description: CertificateAuthorityData is the base64-encoded
PEM CA bundle of the impersonation proxy.
minLength: 1
type: string
endpoint:
description: Endpoint is the HTTPS endpoint of the impersonation
proxy.
minLength: 1
pattern: ^https://
type: string
required:
- certificateAuthorityData
- endpoint
type: object
tokenCredentialRequestInfo:
description: TokenCredentialRequestAPIInfo describes the
parameters for the TokenCredentialRequest API on this
Concierge. This field is only set when Type is "TokenCredentialRequestAPI".
properties:
certificateAuthorityData:
description: CertificateAuthorityData is the base64-encoded
Kubernetes API server CA bundle.
minLength: 1
type: string
server:
description: Server is the Kubernetes API server URL.
minLength: 1
pattern: ^https://|^http://
type: string
required:
- certificateAuthorityData
- server
type: object
type:
description: Type describes which frontend mechanism clients
can use with a strategy.
enum:
- TokenCredentialRequestAPI
- ImpersonationProxy
type: string
required:
- type
type: object
lastUpdateTime:
description: When the status was last checked.
format: date-time
type: string
message:
description: Human-readable description of the current status.
minLength: 1
type: string
reason:
description: Reason for the current status.
enum:
- Listening
- Pending
- Disabled
- ErrorDuringSetup
- CouldNotFetchKey
- CouldNotGetClusterInfo
- FetchedKey
type: string
status:
description: Status of the attempted integration strategy.
enum:
- Success
- Error
type: string
type:
description: Type of integration attempted.
enum:
- KubeClusterSigningCertificate
- ImpersonationProxy
type: string
required:
- lastUpdateTime
- message
- reason
- status
- type
type: object
type: array
required:
- strategies
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,300 +0,0 @@
#! Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
#! SPDX-License-Identifier: Apache-2.0
#@ load("@ytt:data", "data")
#@ load("@ytt:json", "json")
#@ load("helpers.lib.yaml", "defaultLabel", "labels", "namespace", "defaultResourceName", "defaultResourceNameWithSuffix", "getAndValidateLogLevel", "pinnipedDevAPIGroupWithPrefix")
#@ if not data.values.into_namespace:
---
apiVersion: v1
kind: Namespace
metadata:
name: #@ data.values.namespace
labels: #@ labels()
#@ end
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: #@ defaultResourceName()
namespace: #@ namespace()
labels: #@ labels()
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: #@ defaultResourceNameWithSuffix("kube-cert-agent")
namespace: #@ namespace()
labels: #@ labels()
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: #@ defaultResourceNameWithSuffix("impersonation-proxy")
namespace: #@ namespace()
labels: #@ labels()
annotations:
#! we need to create this service account before we create the secret
kapp.k14s.io/change-group: "impersonation-proxy.concierge.pinniped.dev/serviceaccount"
secrets: #! make sure the token controller does not create any other secrets
- name: #@ defaultResourceNameWithSuffix("impersonation-proxy")
---
apiVersion: v1
kind: ConfigMap
metadata:
name: #@ defaultResourceNameWithSuffix("config")
namespace: #@ namespace()
labels: #@ labels()
data:
#! If names.apiService is changed in this ConfigMap, must also change name of the ClusterIP Service resource below.
#@yaml/text-templated-strings
pinniped.yaml: |
discovery:
url: (@= data.values.discovery_url or "null" @)
api:
servingCertificate:
durationSeconds: (@= str(data.values.api_serving_certificate_duration_seconds) @)
renewBeforeSeconds: (@= str(data.values.api_serving_certificate_renew_before_seconds) @)
apiGroupSuffix: (@= data.values.api_group_suffix @)
names:
servingCertificateSecret: (@= defaultResourceNameWithSuffix("api-tls-serving-certificate") @)
credentialIssuer: (@= defaultResourceNameWithSuffix("config") @)
apiService: (@= defaultResourceNameWithSuffix("api") @)
impersonationLoadBalancerService: (@= defaultResourceNameWithSuffix("impersonation-proxy-load-balancer") @)
impersonationClusterIPService: (@= defaultResourceNameWithSuffix("impersonation-proxy-cluster-ip") @)
impersonationTLSCertificateSecret: (@= defaultResourceNameWithSuffix("impersonation-proxy-tls-serving-certificate") @)
impersonationCACertificateSecret: (@= defaultResourceNameWithSuffix("impersonation-proxy-ca-certificate") @)
impersonationSignerSecret: (@= defaultResourceNameWithSuffix("impersonation-proxy-signer-ca-certificate") @)
agentServiceAccount: (@= defaultResourceNameWithSuffix("kube-cert-agent") @)
labels: (@= json.encode(labels()).rstrip() @)
kubeCertAgent:
namePrefix: (@= defaultResourceNameWithSuffix("kube-cert-agent-") @)
(@ if data.values.kube_cert_agent_image: @)
image: (@= data.values.kube_cert_agent_image @)
(@ else: @)
(@ if data.values.image_digest: @)
image: (@= data.values.image_repo + "@" + data.values.image_digest @)
(@ else: @)
image: (@= data.values.image_repo + ":" + data.values.image_tag @)
(@ end @)
(@ end @)
(@ if data.values.image_pull_dockerconfigjson: @)
imagePullSecrets:
- image-pull-secret
(@ end @)
(@ if data.values.log_level: @)
logLevel: (@= getAndValidateLogLevel() @)
(@ end @)
---
#@ if data.values.image_pull_dockerconfigjson and data.values.image_pull_dockerconfigjson != "":
apiVersion: v1
kind: Secret
metadata:
name: image-pull-secret
namespace: #@ namespace()
labels: #@ labels()
type: kubernetes.io/dockerconfigjson
data:
.dockerconfigjson: #@ data.values.image_pull_dockerconfigjson
#@ end
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: #@ defaultResourceName()
namespace: #@ namespace()
labels: #@ labels()
spec:
replicas: #@ data.values.replicas
selector:
matchLabels: #@ defaultLabel()
template:
metadata:
labels: #@ defaultLabel()
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ""
spec:
securityContext:
runAsUser: #@ data.values.run_as_user
runAsGroup: #@ data.values.run_as_group
serviceAccountName: #@ defaultResourceName()
#@ if data.values.image_pull_dockerconfigjson and data.values.image_pull_dockerconfigjson != "":
imagePullSecrets:
- name: image-pull-secret
#@ end
containers:
- name: #@ defaultResourceName()
#@ if data.values.image_digest:
image: #@ data.values.image_repo + "@" + data.values.image_digest
#@ else:
image: #@ data.values.image_repo + ":" + data.values.image_tag
#@ end
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "100m"
memory: "128Mi"
args:
- --config=/etc/config/pinniped.yaml
- --downward-api-path=/etc/podinfo
volumeMounts:
- name: config-volume
mountPath: /etc/config
- name: podinfo
mountPath: /etc/podinfo
- name: impersonation-proxy
mountPath: /var/run/secrets/impersonation-proxy.concierge.pinniped.dev/serviceaccount
livenessProbe:
httpGet:
path: /healthz
port: 8443
scheme: HTTPS
initialDelaySeconds: 2
timeoutSeconds: 15
periodSeconds: 10
failureThreshold: 5
readinessProbe:
httpGet:
path: /healthz
port: 8443
scheme: HTTPS
initialDelaySeconds: 2
timeoutSeconds: 3
periodSeconds: 10
failureThreshold: 3
volumes:
- name: config-volume
configMap:
name: #@ defaultResourceNameWithSuffix("config")
- name: impersonation-proxy
secret:
secretName: #@ defaultResourceNameWithSuffix("impersonation-proxy")
items: #! make sure our pod does not start until the token controller has a chance to populate the secret
- key: token
path: token
- name: podinfo
downwardAPI:
items:
- path: "labels"
fieldRef:
fieldPath: metadata.labels
- path: "name"
fieldRef:
fieldPath: metadata.name
- path: "namespace"
fieldRef:
fieldPath: metadata.namespace
tolerations:
- key: CriticalAddonsOnly
operator: Exists
- key: node-role.kubernetes.io/master #! Allow running on master nodes too
effect: NoSchedule
#! "system-cluster-critical" cannot be used outside the kube-system namespace until Kubernetes >= 1.17,
#! so we skip setting this for now (see https://github.com/kubernetes/kubernetes/issues/60596).
#!priorityClassName: system-cluster-critical
#! This will help make sure our multiple pods run on different nodes, making
#! our deployment "more" "HA".
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 50
podAffinityTerm:
labelSelector:
matchLabels: #@ defaultLabel()
topologyKey: kubernetes.io/hostname
---
apiVersion: v1
kind: Service
metadata:
#! If name is changed, must also change names.apiService in the ConfigMap above and spec.service.name in the APIService below.
name: #@ defaultResourceNameWithSuffix("api")
namespace: #@ namespace()
labels: #@ labels()
spec:
type: ClusterIP
selector: #@ defaultLabel()
ports:
- protocol: TCP
port: 443
targetPort: 8443
---
apiVersion: v1
kind: Service
metadata:
name: #@ defaultResourceNameWithSuffix("proxy")
namespace: #@ namespace()
labels: #@ labels()
spec:
type: ClusterIP
selector: #@ defaultLabel()
ports:
- protocol: TCP
port: 443
targetPort: 8444
---
apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:
name: #@ pinnipedDevAPIGroupWithPrefix("v1alpha1.login.concierge")
labels: #@ labels()
spec:
version: v1alpha1
group: #@ pinnipedDevAPIGroupWithPrefix("login.concierge")
groupPriorityMinimum: 9900
versionPriority: 15
#! caBundle: Do not include this key here. Starts out null, will be updated/owned by the golang code.
service:
name: #@ defaultResourceNameWithSuffix("api")
namespace: #@ namespace()
port: 443
---
apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:
name: #@ pinnipedDevAPIGroupWithPrefix("v1alpha1.identity.concierge")
labels: #@ labels()
spec:
version: v1alpha1
group: #@ pinnipedDevAPIGroupWithPrefix("identity.concierge")
groupPriorityMinimum: 9900
versionPriority: 15
#! caBundle: Do not include this key here. Starts out null, will be updated/owned by the golang code.
service:
name: #@ defaultResourceNameWithSuffix("api")
namespace: #@ namespace()
port: 443
---
apiVersion: #@ pinnipedDevAPIGroupWithPrefix("config.concierge") + "/v1alpha1"
kind: CredentialIssuer
metadata:
name: #@ defaultResourceNameWithSuffix("config")
labels: #@ labels()
spec:
impersonationProxy:
mode: #@ data.values.impersonation_proxy_spec.mode
#@ if data.values.impersonation_proxy_spec.external_endpoint:
externalEndpoint: #@ data.values.impersonation_proxy_spec.external_endpoint
#@ end
service:
type: #@ data.values.impersonation_proxy_spec.service.type
#@ if data.values.impersonation_proxy_spec.service.load_balancer_ip:
loadBalancerIP: #@ data.values.impersonation_proxy_spec.service.load_balancer_ip
#@ end
annotations: #@ data.values.impersonation_proxy_spec.service.annotations
---
apiVersion: v1
kind: Secret
metadata:
name: #@ defaultResourceNameWithSuffix("impersonation-proxy")
namespace: #@ namespace()
labels: #@ labels()
annotations:
#! wait until the SA exists to create this secret so that the token controller does not delete it
#! we have this secret at the end so that kubectl will create the service account first
kapp.k14s.io/change-rule: "upsert after upserting impersonation-proxy.concierge.pinniped.dev/serviceaccount"
kubernetes.io/service-account.name: #@ defaultResourceNameWithSuffix("impersonation-proxy")
type: kubernetes.io/service-account-token

View File

@@ -1,42 +0,0 @@
#! Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
#! SPDX-License-Identifier: Apache-2.0
#@ load("@ytt:data", "data")
#@ load("@ytt:template", "template")
#@ def defaultResourceName():
#@ return data.values.app_name
#@ end
#@ def defaultResourceNameWithSuffix(suffix):
#@ return data.values.app_name + "-" + suffix
#@ end
#@ def pinnipedDevAPIGroupWithPrefix(prefix):
#@ return prefix + "." + data.values.api_group_suffix
#@ end
#@ def namespace():
#@ if data.values.into_namespace:
#@ return data.values.into_namespace
#@ else:
#@ return data.values.namespace
#@ end
#@ end
#@ def defaultLabel():
app: #@ data.values.app_name
#@ end
#@ def labels():
_: #@ template.replace(defaultLabel())
_: #@ template.replace(data.values.custom_labels)
#@ end
#@ def getAndValidateLogLevel():
#@ log_level = data.values.log_level
#@ if log_level != "info" and log_level != "debug" and log_level != "trace" and log_level != "all":
#@ fail("log_level '" + log_level + "' is invalid")
#@ end
#@ return log_level
#@ end

View File

@@ -1,293 +0,0 @@
#! Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
#! SPDX-License-Identifier: Apache-2.0
#@ load("@ytt:data", "data")
#@ load("helpers.lib.yaml", "labels", "namespace", "defaultResourceName", "defaultResourceNameWithSuffix", "pinnipedDevAPIGroupWithPrefix")
#! Give permission to various cluster-scoped objects
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: #@ defaultResourceNameWithSuffix("aggregated-api-server")
labels: #@ labels()
rules:
- apiGroups: [ "" ]
resources: [ namespaces ]
verbs: [ get, list, watch ]
- apiGroups: [ apiregistration.k8s.io ]
resources: [ apiservices ]
verbs: [ get, list, patch, update, watch ]
- apiGroups: [ admissionregistration.k8s.io ]
resources: [ validatingwebhookconfigurations, mutatingwebhookconfigurations ]
verbs: [ get, list, watch ]
- apiGroups: [ flowcontrol.apiserver.k8s.io ]
resources: [ flowschemas, prioritylevelconfigurations ]
verbs: [ get, list, watch ]
- apiGroups: [ security.openshift.io ]
resources: [ securitycontextconstraints ]
verbs: [ use ]
resourceNames: [ nonroot ]
- apiGroups: [ "" ]
resources: [ nodes ]
verbs: [ list ]
- apiGroups:
- #@ pinnipedDevAPIGroupWithPrefix("config.concierge")
resources: [ credentialissuers ]
verbs: [ get, list, watch, create ]
- apiGroups:
- #@ pinnipedDevAPIGroupWithPrefix("config.concierge")
resources: [ credentialissuers/status ]
verbs: [ get, patch, update ]
- apiGroups:
- #@ pinnipedDevAPIGroupWithPrefix("authentication.concierge")
resources: [ jwtauthenticators, webhookauthenticators ]
verbs: [ get, list, watch ]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: #@ defaultResourceNameWithSuffix("aggregated-api-server")
labels: #@ labels()
subjects:
- kind: ServiceAccount
name: #@ defaultResourceName()
namespace: #@ namespace()
roleRef:
kind: ClusterRole
name: #@ defaultResourceNameWithSuffix("aggregated-api-server")
apiGroup: rbac.authorization.k8s.io
#! Give minimal permissions to impersonation proxy service account
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: #@ defaultResourceNameWithSuffix("impersonation-proxy")
labels: #@ labels()
rules:
- apiGroups: [ "" ]
resources: [ "users", "groups", "serviceaccounts" ]
verbs: [ "impersonate" ]
- apiGroups: [ "authentication.k8s.io" ]
resources: [ "*" ] #! What we really want is userextras/* but the RBAC authorizer only supports */subresource, not resource/*
verbs: [ "impersonate" ]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: #@ defaultResourceNameWithSuffix("impersonation-proxy")
labels: #@ labels()
subjects:
- kind: ServiceAccount
name: #@ defaultResourceNameWithSuffix("impersonation-proxy")
namespace: #@ namespace()
roleRef:
kind: ClusterRole
name: #@ defaultResourceNameWithSuffix("impersonation-proxy")
apiGroup: rbac.authorization.k8s.io
#! Give permission to the kube-cert-agent Pod to run privileged.
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: #@ defaultResourceNameWithSuffix("kube-cert-agent")
namespace: #@ namespace()
labels: #@ labels()
rules:
- apiGroups: [ policy ]
resources: [ podsecuritypolicies ]
verbs: [ use ]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: #@ defaultResourceNameWithSuffix("kube-cert-agent")
namespace: #@ namespace()
labels: #@ labels()
subjects:
- kind: ServiceAccount
name: #@ defaultResourceNameWithSuffix("kube-cert-agent")
namespace: #@ namespace()
roleRef:
kind: Role
name: #@ defaultResourceNameWithSuffix("kube-cert-agent")
apiGroup: rbac.authorization.k8s.io
#! Give permission to various objects within the app's own namespace
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: #@ defaultResourceNameWithSuffix("aggregated-api-server")
namespace: #@ namespace()
labels: #@ labels()
rules:
- apiGroups: [ "" ]
resources: [ services ]
verbs: [ create, get, list, patch, update, watch, delete ]
- apiGroups: [ "" ]
resources: [ secrets ]
verbs: [ create, get, list, patch, update, watch, delete ]
#! We need to be able to watch pods in our namespace so we can find the kube-cert-agent pods.
- apiGroups: [ "" ]
resources: [ pods ]
verbs: [ get, list, watch ]
#! We need to be able to exec into pods in our namespace so we can grab the API server's private key
- apiGroups: [ "" ]
resources: [ pods/exec ]
verbs: [ create ]
#! We need to be able to delete pods in our namespace so we can clean up legacy kube-cert-agent pods.
- apiGroups: [ "" ]
resources: [ pods ]
verbs: [ delete ]
#! We need to be able to create and update deployments in our namespace so we can manage the kube-cert-agent Deployment.
- apiGroups: [ apps ]
resources: [ deployments ]
verbs: [ create, get, list, patch, update, watch ]
#! We need to be able to get replicasets so we can form the correct owner references on our generated objects.
- apiGroups: [ apps ]
resources: [ replicasets ]
verbs: [ get ]
- apiGroups: [ "" ]
resources: [ configmaps ]
verbs: [ list, get, watch ]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: #@ defaultResourceNameWithSuffix("aggregated-api-server")
namespace: #@ namespace()
labels: #@ labels()
subjects:
- kind: ServiceAccount
name: #@ defaultResourceName()
namespace: #@ namespace()
roleRef:
kind: Role
name: #@ defaultResourceNameWithSuffix("aggregated-api-server")
apiGroup: rbac.authorization.k8s.io
#! Give permission to read pods in the kube-system namespace so we can find the API server's private key
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: #@ defaultResourceNameWithSuffix("kube-system-pod-read")
namespace: kube-system
labels: #@ labels()
rules:
- apiGroups: [ "" ]
resources: [ pods ]
verbs: [ get, list, watch ]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: #@ defaultResourceNameWithSuffix("kube-system-pod-read")
namespace: kube-system
labels: #@ labels()
subjects:
- kind: ServiceAccount
name: #@ defaultResourceName()
namespace: #@ namespace()
roleRef:
kind: Role
name: #@ defaultResourceNameWithSuffix("kube-system-pod-read")
apiGroup: rbac.authorization.k8s.io
#! Allow both authenticated and unauthenticated TokenCredentialRequests (i.e. allow all requests)
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: #@ defaultResourceNameWithSuffix("pre-authn-apis")
labels: #@ labels()
rules:
- apiGroups:
- #@ pinnipedDevAPIGroupWithPrefix("login.concierge")
resources: [ tokencredentialrequests ]
verbs: [ create, list ]
- apiGroups:
- #@ pinnipedDevAPIGroupWithPrefix("identity.concierge")
resources: [ whoamirequests ]
verbs: [ create, list ]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: #@ defaultResourceNameWithSuffix("pre-authn-apis")
labels: #@ labels()
subjects:
- kind: Group
name: system:authenticated
apiGroup: rbac.authorization.k8s.io
- kind: Group
name: system:unauthenticated
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: #@ defaultResourceNameWithSuffix("pre-authn-apis")
apiGroup: rbac.authorization.k8s.io
#! Give permissions for subjectaccessreviews, tokenreview that is needed by aggregated api servers
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: #@ defaultResourceName()
labels: #@ labels()
subjects:
- kind: ServiceAccount
name: #@ defaultResourceName()
namespace: #@ namespace()
roleRef:
kind: ClusterRole
name: system:auth-delegator
apiGroup: rbac.authorization.k8s.io
#! Give permissions for a special configmap of CA bundles that is needed by aggregated api servers
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: #@ defaultResourceNameWithSuffix("extension-apiserver-authentication-reader")
namespace: kube-system
labels: #@ labels()
subjects:
- kind: ServiceAccount
name: #@ defaultResourceName()
namespace: #@ namespace()
roleRef:
kind: Role
name: extension-apiserver-authentication-reader
apiGroup: rbac.authorization.k8s.io
#! Give permission to list and watch ConfigMaps in kube-public
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: #@ defaultResourceNameWithSuffix("cluster-info-lister-watcher")
namespace: kube-public
labels: #@ labels()
rules:
- apiGroups: [ "" ]
resources: [ configmaps ]
verbs: [ list, watch ]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: #@ defaultResourceNameWithSuffix("cluster-info-lister-watcher")
namespace: kube-public
labels: #@ labels()
subjects:
- kind: ServiceAccount
name: #@ defaultResourceName()
namespace: #@ namespace()
roleRef:
kind: Role
name: #@ defaultResourceNameWithSuffix("cluster-info-lister-watcher")
apiGroup: rbac.authorization.k8s.io

View File

@@ -1,95 +0,0 @@
#! Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
#! SPDX-License-Identifier: Apache-2.0
#@data/values
---
app_name: pinniped-concierge
#! Creates a new namespace statically in yaml with the given name and installs the app into that namespace.
namespace: pinniped-concierge
#! If specified, assumes that a namespace of the given name already exists and installs the app into that namespace.
#! If both `namespace` and `into_namespace` are specified, then only `into_namespace` is used.
into_namespace: #! e.g. my-preexisting-namespace
#! All resources created statically by yaml at install-time and all resources created dynamically
#! by controllers at runtime will be labelled with `app: $app_name` and also with the labels
#! specified here. The value of `custom_labels` must be a map of string keys to string values.
#! The app can be uninstalled either by:
#! 1. Deleting the static install-time yaml resources including the static namespace, which will cascade and also delete
#! resources that were dynamically created by controllers at runtime
#! 2. Or, deleting all resources by label, which does not assume that there was a static install-time yaml namespace.
custom_labels: {} #! e.g. {myCustomLabelName: myCustomLabelValue, otherCustomLabelName: otherCustomLabelValue}
#! Specify how many replicas of the Pinniped server to run.
replicas: 2
#! Specify either an image_digest or an image_tag. If both are given, only image_digest will be used.
image_repo: projects.registry.vmware.com/pinniped/pinniped-server
image_digest: #! e.g. sha256:f3c4fdfd3ef865d4b97a1fd295d94acc3f0c654c46b6f27ffad5cf80216903c8
image_tag: latest
#! Optionally specify a different image for the "kube-cert-agent" pod which is scheduled
#! on the control plane. This image needs only to include `sleep` and `cat` binaries.
#! By default, the same image specified for image_repo/image_digest/image_tag will be re-used.
kube_cert_agent_image:
#! Specifies a secret to be used when pulling the above `image_repo` container image.
#! Can be used when the above image_repo is a private registry.
#! Typically the value would be the output of: kubectl create secret docker-registry x --docker-server=https://example.io --docker-username="USERNAME" --docker-password="PASSWORD" --dry-run=client -o json | jq -r '.data[".dockerconfigjson"]'
#! Optional.
image_pull_dockerconfigjson: #! e.g. {"auths":{"https://registry.example.com":{"username":"USERNAME","password":"PASSWORD","auth":"BASE64_ENCODED_USERNAME_COLON_PASSWORD"}}}
#! Pinniped will try to guess the right K8s API URL for sharing that information with potential clients.
#! This settings allows the guess to be overridden.
#! Optional.
discovery_url: #! e.g., https://example.com
#! Specify the duration and renewal interval for the API serving certificate.
#! The defaults are set to expire the cert about every 30 days, and to rotate it
#! about every 25 days.
api_serving_certificate_duration_seconds: 2592000
api_serving_certificate_renew_before_seconds: 2160000
#! Specify the verbosity of logging: info ("nice to know" information), debug (developer
#! information), trace (timing information), all (kitchen sink).
log_level: #! By default, when this value is left unset, only warnings and errors are printed. There is no way to suppress warning and error logs.
run_as_user: 1001 #! run_as_user specifies the user ID that will own the process
run_as_group: 1001 #! run_as_group specifies the group ID that will own the process
#! Specify the API group suffix for all Pinniped API groups. By default, this is set to
#! pinniped.dev, so Pinniped API groups will look like foo.pinniped.dev,
#! authentication.concierge.pinniped.dev, etc. As an example, if this is set to tuna.io, then
#! Pinniped API groups will look like foo.tuna.io. authentication.concierge.tuna.io, etc.
api_group_suffix: pinniped.dev
#! Customize CredentialIssuer.spec.impersonationProxy to change how the concierge
#! handles impersonation.
impersonation_proxy_spec:
#! options are "auto", "disabled" or "enabled".
#! If auto, the impersonation proxy will run only if the cluster signing key is not available
#! and the other strategy does not work.
#! If disabled, the impersonation proxy will never run, which could mean that the concierge
#! doesn't work at all.
#! If enabled, the impersonation proxy will always run regardless of other strategies available.
mode: auto
#! The endpoint which the client should use to connect to the impersonation proxy.
#! If left unset, the client will default to connecting based on the ClusterIP or LoadBalancer
#! endpoint.
external_endpoint:
service:
#! Options are "LoadBalancer", "ClusterIP" and "None".
#! LoadBalancer automatically provisions a Service of type LoadBalancer pointing at
#! the impersonation proxy. Some cloud providers will allocate
#! a public IP address by default even on private clusters.
#! ClusterIP automatically provisions a Service of type ClusterIP pointing at the
#! impersonation proxy.
#! None does not provision either and assumes that you have set the external_endpoint
#! and set up your own ingress to connect to the impersonation proxy.
type: LoadBalancer
#! The annotations that should be set on the ClusterIP or LoadBalancer Service.
annotations:
{service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "4000"}
#! When mode LoadBalancer is set, this will set the LoadBalancer Service's Spec.LoadBalancerIP.
load_balancer_ip:

View File

@@ -1,33 +0,0 @@
#! Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
#! SPDX-License-Identifier: Apache-2.0
#@ load("@ytt:overlay", "overlay")
#@ load("helpers.lib.yaml", "labels", "pinnipedDevAPIGroupWithPrefix")
#@ load("@ytt:data", "data")
#@overlay/match by=overlay.subset({"kind": "CustomResourceDefinition", "metadata":{"name":"credentialissuers.config.concierge.pinniped.dev"}}), expects=1
---
metadata:
#@overlay/match missing_ok=True
labels: #@ labels()
name: #@ pinnipedDevAPIGroupWithPrefix("credentialissuers.config.concierge")
spec:
group: #@ pinnipedDevAPIGroupWithPrefix("config.concierge")
#@overlay/match by=overlay.subset({"kind": "CustomResourceDefinition", "metadata":{"name":"webhookauthenticators.authentication.concierge.pinniped.dev"}}), expects=1
---
metadata:
#@overlay/match missing_ok=True
labels: #@ labels()
name: #@ pinnipedDevAPIGroupWithPrefix("webhookauthenticators.authentication.concierge")
spec:
group: #@ pinnipedDevAPIGroupWithPrefix("authentication.concierge")
#@overlay/match by=overlay.subset({"kind": "CustomResourceDefinition", "metadata":{"name":"jwtauthenticators.authentication.concierge.pinniped.dev"}}), expects=1
---
metadata:
#@overlay/match missing_ok=True
labels: #@ labels()
name: #@ pinnipedDevAPIGroupWithPrefix("jwtauthenticators.authentication.concierge")
spec:
group: #@ pinnipedDevAPIGroupWithPrefix("authentication.concierge")

View File

@@ -1,163 +0,0 @@
# Deploying local-user-authenticator
## What is local-user-authenticator?
The local-user-authenticator app is an identity provider used for integration testing and demos.
If you would like to demo Pinniped, but you don't have a compatible identity provider handy,
you can use Pinniped's local-user-authenticator identity provider. Note that this is not recommended for
production use.
The local-user-authenticator is a Kubernetes Deployment which runs a webhook server that implements the Kubernetes
[Webhook Token Authentication interface](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication).
User accounts can be created and edited dynamically using `kubectl` commands (see below).
## Installing the Latest Version with Default Options
```bash
kubectl apply -f https://get.pinniped.dev/latest/install-local-user-authenticator.yaml
```
## Installing a Specific Version with Default Options
Choose your preferred [release](https://github.com/vmware-tanzu/pinniped/releases) version number
and use it to replace the version number in the URL below.
```bash
# Replace v0.4.1 with your preferred version in the URL below
kubectl apply -f https://get.pinniped.dev/v0.4.1/install-local-user-authenticator.yaml
```
## Installing with Custom Options
Creating your own deployment YAML file requires `ytt` from [Carvel](https://carvel.dev/) to template the YAML files
in the `deploy/local-user-authenticator` directory.
Either [install `ytt`](https://get-ytt.io/) or use the [container image from Dockerhub](https://hub.docker.com/r/k14s/image/tags).
1. `git clone` this repo and `git checkout` the release version tag of the release that you would like to deploy.
1. The configuration options are in [deploy/local-user-authenticator/values.yml](values.yaml).
Fill in the values in that file, or override those values using additional `ytt` command-line options in
the command below. Use the release version tag as the `image_tag` value.
2. In a terminal, cd to this `deploy/local-user-authenticator` directory
3. To generate the final YAML files, run `ytt --file .`
4. Deploy the generated YAML using your preferred deployment tool, such as `kubectl` or [`kapp`](https://get-kapp.io/).
For example: `ytt --file . | kapp deploy --yes --app local-user-authenticator --diff-changes --file -`
## Configuring After Installing
### Create Users
Use `kubectl` to create, edit, and delete user accounts by creating a `Secret` for each user account in the same
namespace where local-user-authenticator is deployed. The name of the `Secret` resource is the username.
Store the user's group membership and `bcrypt` encrypted password as the contents of the `Secret`.
For example, to create a user named `pinny-the-seal` with the password `password123`
who belongs to the groups `group1` and `group2`, use:
```bash
kubectl create secret generic pinny-the-seal \
--namespace local-user-authenticator \
--from-literal=groups=group1,group2 \
--from-literal=passwordHash=$(htpasswd -nbBC 10 x password123 | sed -e "s/^x://")
```
Note that the above command requires a tool capable of generating a `bcrypt` hash. It uses `htpasswd`,
which is installed on most macOS systems, and can be
installed on some Linux systems via the `apache2-utils` package (e.g., `apt-get install apache2-utils`).
### Get the local-user-authenticator App's Auto-Generated Certificate Authority Bundle
Fetch the auto-generated CA bundle for the local-user-authenticator's HTTP TLS endpoint.
```bash
kubectl get secret local-user-authenticator-tls-serving-certificate --namespace local-user-authenticator \
-o jsonpath={.data.caCertificate} \
| base64 -d \
| tee /tmp/local-user-authenticator-ca
```
### Configuring Pinniped to Use local-user-authenticator as an Identity Provider
When installing Pinniped on the same cluster, configure local-user-authenticator as an Identity Provider for Pinniped
using the webhook URL `https://local-user-authenticator.local-user-authenticator.svc/authenticate`
along with the CA bundle fetched by the above command. See [demo](https://pinniped.dev/docs/demo/) for an example.
## Optional: Manually Testing the Webhook Endpoint After Installing
The following steps demonstrate the API of the local-user-authenticator app. Typically, a user would not need to
interact with this API directly. Pinniped will automatically integrate with this API if the local-user-authenticator
is configured as an identity provider for Pinniped.
1. Start a pod from which you can curl the endpoint from inside the cluster.
```bash
kubectl run curlpod --image=curlimages/curl --command -- /bin/sh -c "while true; do echo hi; sleep 120; done"
```
1. Copy the CA bundle that was fetched above onto the new pod.
```bash
kubectl cp /tmp/local-user-authenticator-ca curlpod:/tmp/local-user-authenticator-ca
```
1. Run a `curl` command to try to authenticate as the user created above.
```bash
kubectl -it exec curlpod -- curl https://local-user-authenticator.local-user-authenticator.svc/authenticate \
--cacert /tmp/local-user-authenticator-ca \
-H 'Content-Type: application/json' -H 'Accept: application/json' -d '
{
"apiVersion": "authentication.k8s.io/v1beta1",
"kind": "TokenReview",
"spec": {
"token": "pinny-the-seal:password123"
}
}'
```
When authentication is successful the above command should return some JSON similar to the following.
Note that the value of `authenticated` is `true` to indicate a successful authentication.
```json
{
"kind": "TokenReview",
"apiVersion": "authentication.k8s.io/v1beta1",
"metadata": {
"creationTimestamp": null
},
"spec": {},
"status": {
"authenticated": true,
"user": {
"username": "pinny-the-seal",
"uid": "19c433ec-8f58-44ca-9ef0-2d1081ccb876",
"groups": [
"group1",
"group2"
]
}
}
}
```
Trying the above `curl` command again with the wrong username or password in the body of the request
should result in a JSON response which indicates that the authentication failed.
```json
{
"kind": "TokenReview",
"apiVersion": "authentication.k8s.io/v1beta1",
"metadata": {
"creationTimestamp": null
},
"spec": {},
"status": {
"user": {}
}
}
```
1. Remove the curl pod.
```bash
kubectl delete pod curlpod
```

View File

@@ -1,83 +0,0 @@
#! Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
#! SPDX-License-Identifier: Apache-2.0
#@ load("@ytt:data", "data")
---
apiVersion: v1
kind: Namespace
metadata:
name: local-user-authenticator
labels:
name: local-user-authenticator
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: local-user-authenticator
namespace: local-user-authenticator
---
#@ if data.values.image_pull_dockerconfigjson and data.values.image_pull_dockerconfigjson != "":
apiVersion: v1
kind: Secret
metadata:
name: image-pull-secret
namespace: local-user-authenticator
labels:
app: local-user-authenticator
type: kubernetes.io/dockerconfigjson
data:
.dockerconfigjson: #@ data.values.image_pull_dockerconfigjson
#@ end
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: local-user-authenticator
namespace: local-user-authenticator
labels:
app: local-user-authenticator
spec:
replicas: 1
selector:
matchLabels:
app: local-user-authenticator
template:
metadata:
labels:
app: local-user-authenticator
spec:
securityContext:
runAsUser: #@ data.values.run_as_user
runAsGroup: #@ data.values.run_as_group
serviceAccountName: local-user-authenticator
#@ if data.values.image_pull_dockerconfigjson and data.values.image_pull_dockerconfigjson != "":
imagePullSecrets:
- name: image-pull-secret
#@ end
containers:
- name: local-user-authenticator
#@ if data.values.image_digest:
image: #@ data.values.image_repo + "@" + data.values.image_digest
#@ else:
image: #@ data.values.image_repo + ":" + data.values.image_tag
#@ end
imagePullPolicy: IfNotPresent
command: #! override the default entrypoint
- /usr/local/bin/local-user-authenticator
---
apiVersion: v1
kind: Service
metadata:
name: local-user-authenticator
namespace: local-user-authenticator
labels:
app: local-user-authenticator
spec:
type: ClusterIP
selector:
app: local-user-authenticator
ports:
- protocol: TCP
port: 443
targetPort: 8443

View File

@@ -1,30 +0,0 @@
#! Copyright 2020 the Pinniped contributors. All Rights Reserved.
#! SPDX-License-Identifier: Apache-2.0
#@ load("@ytt:data", "data")
#! Give permission to various objects within the app's own namespace
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: local-user-authenticator
namespace: local-user-authenticator
rules:
- apiGroups: [""]
resources: [secrets]
verbs: [create, get, list, patch, update, watch]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: local-user-authenticator
namespace: local-user-authenticator
subjects:
- kind: ServiceAccount
name: local-user-authenticator
namespace: local-user-authenticator
roleRef:
kind: Role
name: local-user-authenticator
apiGroup: rbac.authorization.k8s.io

View File

@@ -1,19 +0,0 @@
#! Copyright 2020-2021 the Pinniped contributors. All Rights Reserved.
#! SPDX-License-Identifier: Apache-2.0
#@data/values
---
#! Specify either an image_digest or an image_tag. If both are given, only image_digest will be used.
image_repo: projects.registry.vmware.com/pinniped/pinniped-server
image_digest: #! e.g. sha256:f3c4fdfd3ef865d4b97a1fd295d94acc3f0c654c46b6f27ffad5cf80216903c8
image_tag: latest
#! Specifies a secret to be used when pulling the above `image_repo` container image.
#! Can be used when the above image_repo is a private registry.
#! Typically the value would be the output of: kubectl create secret docker-registry x --docker-server=https://example.io --docker-username="USERNAME" --docker-password="PASSWORD" --dry-run=client -o json | jq -r '.data[".dockerconfigjson"]'
#! Optional.
image_pull_dockerconfigjson: #! e.g. {"auths":{"https://registry.example.com":{"username":"USERNAME","password":"PASSWORD","auth":"BASE64_ENCODED_USERNAME_COLON_PASSWORD"}}}
run_as_user: 1001 #! run_as_user specifies the user ID that will own the process
run_as_group: 1001 #! run_as_group specifies the group ID that will own the process

View File

@@ -1,3 +0,0 @@
# Pinniped Supervisor Deployment
See [the how-to guide for details](https://pinniped.dev/docs/howto/install-supervisor/).

View File

@@ -1,160 +0,0 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.4.0
creationTimestamp: null
name: federationdomains.config.supervisor.pinniped.dev
spec:
group: config.supervisor.pinniped.dev
names:
categories:
- pinniped
kind: FederationDomain
listKind: FederationDomainList
plural: federationdomains
singular: federationdomain
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: FederationDomain describes the configuration of an OIDC provider.
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: Spec of the OIDC provider.
properties:
issuer:
description: "Issuer is the OIDC Provider's issuer, per the OIDC Discovery
Metadata document, as well as the identifier that it will use for
the iss claim in issued JWTs. This field will also be used as the
base URL for any endpoints used by the OIDC Provider (e.g., if your
issuer is https://example.com/foo, then your authorization endpoint
will look like https://example.com/foo/some/path/to/auth/endpoint).
\n See https://openid.net/specs/openid-connect-discovery-1_0.html#rfc.section.3
for more information."
minLength: 1
type: string
tls:
description: TLS configures how this FederationDomain is served over
Transport Layer Security (TLS).
properties:
secretName:
description: "SecretName is an optional name of a Secret in the
same namespace, of type `kubernetes.io/tls`, which contains
the TLS serving certificate for the HTTPS endpoints served by
this FederationDomain. When provided, the TLS Secret named here
must contain keys named `tls.crt` and `tls.key` that contain
the certificate and private key to use for TLS. \n Server Name
Indication (SNI) is an extension to the Transport Layer Security
(TLS) supported by all major browsers. \n SecretName is required
if you would like to use different TLS certificates for issuers
of different hostnames. SNI requests do not include port numbers,
so all issuers with the same DNS hostname must use the same
SecretName value even if they have different port numbers. \n
SecretName is not required when you would like to use only the
HTTP endpoints (e.g. when terminating TLS at an Ingress). It
is also not required when you would like all requests to this
OIDC Provider's HTTPS endpoints to use the default TLS certificate,
which is configured elsewhere. \n When your Issuer URL's host
is an IP address, then this field is ignored. SNI does not work
for IP addresses."
type: string
type: object
required:
- issuer
type: object
status:
description: Status of the OIDC provider.
properties:
lastUpdateTime:
description: LastUpdateTime holds the time at which the Status was
last updated. It is a pointer to get around some undesirable behavior
with respect to the empty metav1.Time value (see https://github.com/kubernetes/kubernetes/issues/86811).
format: date-time
type: string
message:
description: Message provides human-readable details about the Status.
type: string
secrets:
description: Secrets contains information about this OIDC Provider's
secrets.
properties:
jwks:
description: JWKS holds the name of the corev1.Secret in which
this OIDC Provider's signing/verification keys are stored. If
it is empty, then the signing/verification keys are either unknown
or they don't exist.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion, kind, uid?'
type: string
type: object
stateEncryptionKey:
description: StateSigningKey holds the name of the corev1.Secret
in which this OIDC Provider's key for encrypting state parameters
is stored.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion, kind, uid?'
type: string
type: object
stateSigningKey:
description: StateSigningKey holds the name of the corev1.Secret
in which this OIDC Provider's key for signing state parameters
is stored.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion, kind, uid?'
type: string
type: object
tokenSigningKey:
description: TokenSigningKey holds the name of the corev1.Secret
in which this OIDC Provider's key for signing tokens is stored.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion, kind, uid?'
type: string
type: object
type: object
status:
description: Status holds an enum that describes the state of this
OIDC Provider. Note that this Status can represent success or failure.
enum:
- Success
- Duplicate
- Invalid
- SameIssuerHostMustUseSameSecret
type: string
type: object
required:
- spec
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

Some files were not shown because too many files have changed in this diff Show More