mirror of https://github.com/kubernetes/kops.git
Compare commits
80 Commits
v1.34.0-al
...
master
Author | SHA1 | Date |
---|---|---|
|
9ed63e10f7 | |
|
416f9f5034 | |
|
4d977166f3 | |
|
04fd259a7d | |
|
1a8ce9b027 | |
|
447395427f | |
|
092073eb0c | |
|
d3b5bfceff | |
|
285e110ed2 | |
|
adfdc7797e | |
|
6ede243f40 | |
|
66bc1860e8 | |
|
7769558a63 | |
|
5391dbced8 | |
|
6bd7b39827 | |
|
62ed422629 | |
|
25519c973f | |
|
60ab99c154 | |
|
cd4d7ae8e4 | |
|
3940478b9a | |
|
72d999e22d | |
|
4eeb347aaa | |
|
cbd4667d38 | |
|
665265a338 | |
|
e8419e29c4 | |
|
5bce5f397a | |
|
96a7fd8988 | |
|
a8001b8fba | |
|
d8a9697152 | |
|
b336829add | |
|
ddc21c750f | |
|
7850359c2f | |
|
b058094b78 | |
|
4e008ffe7a | |
|
633a9b757b | |
|
237479701a | |
|
60895f55d7 | |
|
dec7d23d10 | |
|
47592cb53e | |
|
91e5ba54ea | |
|
d3a7607637 | |
|
2de74a73ce | |
|
c98fb47eb8 | |
|
24f2701152 | |
|
05099d65d3 | |
|
4569dd4f98 | |
|
dc8f27f356 | |
|
669c47c4ed | |
|
b9448cabe5 | |
|
3f519b48c3 | |
|
0338832c51 | |
|
7694fce7cd | |
|
9d41b64f2e | |
|
ec67c4acdc | |
|
701f01a26b | |
|
af86a55c81 | |
|
3b3df48117 | |
|
99b8ff05df | |
|
df39d62034 | |
|
5c0e35e4e2 | |
|
bd203fb693 | |
|
6d8aeb0144 | |
|
1c64206d0e | |
|
cac9dcfca0 | |
|
1ad9b17968 | |
|
237b19ef44 | |
|
a0b5174c85 | |
|
4aaeb5f92f | |
|
d4fe130e78 | |
|
fb666c7924 | |
|
8c6ac690b1 | |
|
896dbb28d9 | |
|
9547347a04 | |
|
b97df8de6e | |
|
e54132c827 | |
|
93c7490597 | |
|
d38b89e0c5 | |
|
a758ae0e9f | |
|
da4af99967 | |
|
3f99d04ca5 |
|
@ -14,6 +14,6 @@ jobs:
|
|||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: 'Checkout Repository'
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
|
||||
- name: 'Review Dependencies'
|
||||
uses: actions/dependency-review-action@da24556b548a50705dd671f47852072ea4c105d9
|
||||
uses: actions/dependency-review-action@595b5aeba73380359d98a5e087f648dbb0edce1b
|
||||
|
|
|
@ -17,7 +17,7 @@ jobs:
|
|||
runs-on: ubuntu-24.04
|
||||
timeout-minutes: 70
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
|
||||
with:
|
||||
path: ${{ env.GOPATH }}/src/k8s.io/kops
|
||||
fetch-depth: 3
|
||||
|
@ -51,7 +51,7 @@ jobs:
|
|||
runs-on: ubuntu-24.04
|
||||
timeout-minutes: 70
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
|
||||
with:
|
||||
path: ${{ env.GOPATH }}/src/k8s.io/kops
|
||||
fetch-depth: 3
|
||||
|
|
|
@ -26,7 +26,7 @@ jobs:
|
|||
name: build-linux-${{ matrix.os.arch }}
|
||||
runs-on: ${{ matrix.os.runs-on }}
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
|
||||
with:
|
||||
path: ${{ env.GOPATH }}/src/k8s.io/kops
|
||||
|
||||
|
@ -43,7 +43,7 @@ jobs:
|
|||
build-macos-amd64:
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
|
||||
with:
|
||||
path: ${{ env.GOPATH }}/src/k8s.io/kops
|
||||
|
||||
|
@ -60,7 +60,7 @@ jobs:
|
|||
build-windows-amd64:
|
||||
runs-on: windows-2022
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
|
||||
with:
|
||||
path: ${{ env.GOPATH }}/src/k8s.io/kops
|
||||
|
||||
|
@ -87,7 +87,7 @@ jobs:
|
|||
name: verify-${{ matrix.os.arch }}
|
||||
runs-on: ${{ matrix.os.runs-on }}
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
|
||||
with:
|
||||
path: ${{ env.GOPATH }}/src/k8s.io/kops
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ jobs:
|
|||
contents: write
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
|
||||
- run: /usr/bin/git config --global user.email actions@github.com
|
||||
- run: /usr/bin/git config --global user.name 'GitHub Actions Release Tagger'
|
||||
- run: hack/tag-release.sh
|
||||
|
|
|
@ -1,35 +1,46 @@
|
|||
version: "2"
|
||||
run:
|
||||
timeout: 30m
|
||||
go: "1.24"
|
||||
|
||||
issues:
|
||||
max-same-issues: 0
|
||||
# Excluding configuration per-path, per-linter, per-text and per-source
|
||||
exclude-rules:
|
||||
# exclude ineffassing linter for generated files for conversion
|
||||
- path: conversion\.go
|
||||
linters:
|
||||
- ineffassign
|
||||
exclude-files:
|
||||
- "^zz_generated.*"
|
||||
|
||||
go: "1.25"
|
||||
linters:
|
||||
disable-all: true
|
||||
default: none
|
||||
enable:
|
||||
- govet
|
||||
- ineffassign
|
||||
- staticcheck
|
||||
- tenv
|
||||
|
||||
linters-settings: # please keep this alphabetized
|
||||
staticcheck:
|
||||
checks: [
|
||||
"all",
|
||||
"-ST1000", # Incorrect or missing package comment
|
||||
"-ST1003", # Poorly chosen identifier
|
||||
"-ST1005", # Incorrectly formatted error string
|
||||
"-ST1006", # Poorly chosen receiver name
|
||||
"-ST1012", # Poorly chosen name for error variable
|
||||
"-ST1016", # Use consistent method receiver names
|
||||
"-SA1019", # Using a deprecated function, variable, constant or field
|
||||
]
|
||||
settings:
|
||||
staticcheck:
|
||||
checks:
|
||||
- all
|
||||
- -QF1008 # ignore omit embbed fields from selector expressions
|
||||
- -ST1000 # Incorrect or missing package comment
|
||||
- -ST1003 # Poorly chosen identifier
|
||||
- -ST1005 # Incorrectly formatted error string
|
||||
- -ST1006 # Poorly chosen receiver name
|
||||
- -ST1012 # Poorly chosen name for error variable
|
||||
- -ST1016 # Use consistent method receiver names
|
||||
- -SA1019 # Using a deprecated function, variable, constant or field
|
||||
exclusions:
|
||||
generated: lax
|
||||
presets:
|
||||
- comments
|
||||
- common-false-positives
|
||||
- legacy
|
||||
- std-error-handling
|
||||
rules:
|
||||
- linters:
|
||||
- ineffassign
|
||||
path: conversion\.go
|
||||
paths:
|
||||
- ^zz_generated.*
|
||||
- third_party$
|
||||
- builtin$
|
||||
- examples$
|
||||
issues:
|
||||
max-same-issues: 0
|
||||
formatters:
|
||||
exclusions:
|
||||
generated: lax
|
||||
paths:
|
||||
- third_party$
|
||||
- builtin$
|
||||
- examples$
|
||||
|
|
|
@ -0,0 +1,115 @@
|
|||
# kOps Project Overview
|
||||
|
||||
kOps is a command-line tool for creating, destroying, upgrading, and maintaining production-grade, highly available Kubernetes clusters. It is written in Go and supports multiple cloud providers, including AWS, GCP, DigitalOcean, Hetzner, OpenStack, and Azure.
|
||||
|
||||
The project is well-structured, with a clear separation of concerns between the different packages. The `cmd` directory contains the main entry points for the `kops` CLI and other related commands. The `pkg` directory contains the core logic for managing clusters, and the `upup` directory contains the code for provisioning cloud infrastructure.
|
||||
|
||||
The project has a comprehensive test suite, including unit tests, integration tests, and end-to-end tests. It also has a robust CI/CD pipeline that runs these tests on every pull request.
|
||||
|
||||
## Building and Running
|
||||
|
||||
### Prerequisites
|
||||
|
||||
* `make`
|
||||
|
||||
### Building
|
||||
|
||||
To build the `kops` binary, run the following command:
|
||||
|
||||
```bash
|
||||
make kops
|
||||
```
|
||||
|
||||
This will create the `kops` binary in the `.build/dist/<os>/<arch>` directory.
|
||||
|
||||
To build all the binaries, including `kops`, `protokube`, `nodeup`, and `channels`, run the following command:
|
||||
|
||||
```bash
|
||||
make all
|
||||
```
|
||||
|
||||
### Running
|
||||
|
||||
To run the `kops` binary, you can either run it directly from the `dist` directory or install it to your `$GOPATH/bin` directory by running the following command:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
### Testing
|
||||
|
||||
To run the unit tests, run the following command:
|
||||
|
||||
```bash
|
||||
make test
|
||||
```
|
||||
|
||||
To run the verification scripts, run the following command:
|
||||
|
||||
```bash
|
||||
make verify
|
||||
```
|
||||
|
||||
To run the full suite of CI checks, run the following command:
|
||||
|
||||
```bash
|
||||
make ci
|
||||
```
|
||||
|
||||
## Development Conventions
|
||||
|
||||
### Guidelines for Programming Assistance
|
||||
|
||||
When assisting with programming tasks, you will adhere to the following principles:
|
||||
|
||||
* **Follow Requirements**: Carefully follow the user's requirements to the letter.
|
||||
* **Plan First**: For any non-trivial change, first describe a detailed, step-by-step plan, including the files you intend to modify and the tests you will add or update.
|
||||
* **Test Thoroughly**: Implement comprehensive tests to ensure correctness and prevent regressions.
|
||||
* **Comment Intelligently**: Add comments to explain the "why" behind complex or non-obvious code, keeping in mind that the reader may not be a Kubernetes expert.
|
||||
* **No TODOs**: Leave no `TODO` comments, placeholders, or incomplete implementations.
|
||||
* **Prioritize Correctness**: Always prioritize security, scalability, and maintainability in your implementations.
|
||||
|
||||
### Avoiding Loops
|
||||
|
||||
When performing complex tasks, especially those involving code modifications and verification, it's important to avoid getting into loops. A loop can occur when the agent repeatedly tries the same action without success, or when it gets stuck in a cycle of analysis, action, and failure.
|
||||
|
||||
To avoid loops:
|
||||
* **Analyze the problem carefully**: Before taking any action, make sure you understand the problem and have a clear plan to solve it.
|
||||
* **Break down the problem**: Break down complex problems into smaller, more manageable steps.
|
||||
* **Verify each step**: After each step, verify that it was successful before moving on to the next one.
|
||||
* **Don't repeat failed actions**: If an action fails, don't just repeat it. Analyze the cause of the failure and try a different approach.
|
||||
* **Ask for help**: If you're stuck, don't hesitate to ask for help from the user.
|
||||
|
||||
### Code Style
|
||||
|
||||
The project follows the standard Go code style and the official [Kubernetes coding conventions](https://www.k8s.dev/docs/guide/coding-convention/). All code should be formatted with `gofmt` and `goimports`. You can format the code by running the following commands:
|
||||
|
||||
```bash
|
||||
make gofmt
|
||||
make goimports
|
||||
```
|
||||
|
||||
### Linting
|
||||
|
||||
The project uses `golangci-lint` to lint the code. You can run the linter by running the following command:
|
||||
|
||||
```bash
|
||||
make verify-golangci-lint
|
||||
```
|
||||
|
||||
### Dependencies
|
||||
|
||||
The project uses Go modules to manage dependencies. To add a new dependency, add it to the `go.mod` file and then run the following command:
|
||||
|
||||
```bash
|
||||
make gomod
|
||||
```
|
||||
|
||||
### Commits
|
||||
|
||||
The project follows the conventional commit message format.
|
||||
|
||||
### Contributions
|
||||
|
||||
Contributions are welcome! Before submitting a pull request, please open an issue to discuss your proposed changes. All pull requests must be reviewed and approved by a maintainer before they can be merged.
|
||||
|
2
Makefile
2
Makefile
|
@ -42,7 +42,7 @@ endif
|
|||
# CODEGEN_VERSION is the version of k8s.io/code-generator to use
|
||||
CODEGEN_VERSION=v0.29.0
|
||||
|
||||
KO=go run github.com/google/ko@v0.14.1
|
||||
KO=go run github.com/google/ko@v0.18.0
|
||||
|
||||
UPLOAD_CMD=$(KOPS_ROOT)/hack/upload ${UPLOAD_ARGS}
|
||||
|
||||
|
|
|
@ -119,14 +119,20 @@ spec:
|
|||
networking:
|
||||
kubenet: {}
|
||||
kubernetesVersions:
|
||||
- range: ">=1.34.0"
|
||||
recommendedVersion: 1.34.0
|
||||
requiredVersion: 1.34.0
|
||||
- range: ">=1.33.0"
|
||||
recommendedVersion: 1.33.4
|
||||
requiredVersion: 1.33.0
|
||||
- range: ">=1.32.0"
|
||||
recommendedVersion: 1.32.4
|
||||
recommendedVersion: 1.32.8
|
||||
requiredVersion: 1.32.0
|
||||
- range: ">=1.31.0"
|
||||
recommendedVersion: 1.31.8
|
||||
recommendedVersion: 1.31.12
|
||||
requiredVersion: 1.31.0
|
||||
- range: ">=1.30.0"
|
||||
recommendedVersion: 1.30.12
|
||||
recommendedVersion: 1.30.14
|
||||
requiredVersion: 1.30.0
|
||||
- range: ">=1.29.0"
|
||||
recommendedVersion: 1.29.15
|
||||
|
@ -189,36 +195,44 @@ spec:
|
|||
recommendedVersion: 1.11.10
|
||||
requiredVersion: 1.11.10
|
||||
kopsVersions:
|
||||
- range: ">=1.34.0-alpha.1"
|
||||
recommendedVersion: "1.33.1"
|
||||
#requiredVersion: 1.34.0
|
||||
kubernetesVersion: 1.34.0
|
||||
- range: ">=1.33.0-alpha.1"
|
||||
recommendedVersion: "1.33.1"
|
||||
#requiredVersion: 1.33.0
|
||||
kubernetesVersion: 1.33.4
|
||||
- range: ">=1.32.0-alpha.1"
|
||||
recommendedVersion: "1.31.0-beta.1"
|
||||
recommendedVersion: "1.33.1"
|
||||
#requiredVersion: 1.32.0
|
||||
kubernetesVersion: 1.32.4
|
||||
kubernetesVersion: 1.32.8
|
||||
- range: ">=1.31.0-alpha.1"
|
||||
recommendedVersion: "1.31.0-beta.1"
|
||||
recommendedVersion: "1.33.1"
|
||||
#requiredVersion: 1.31.0
|
||||
kubernetesVersion: 1.31.8
|
||||
kubernetesVersion: 1.31.12
|
||||
- range: ">=1.30.0-alpha.1"
|
||||
recommendedVersion: "1.30.3"
|
||||
recommendedVersion: "1.33.1"
|
||||
#requiredVersion: 1.30.0
|
||||
kubernetesVersion: 1.30.12
|
||||
kubernetesVersion: 1.30.14
|
||||
- range: ">=1.29.0-alpha.1"
|
||||
recommendedVersion: "1.30.3"
|
||||
recommendedVersion: "1.33.1"
|
||||
#requiredVersion: 1.29.0
|
||||
kubernetesVersion: 1.29.15
|
||||
- range: ">=1.28.0-alpha.1"
|
||||
recommendedVersion: "1.30.3"
|
||||
recommendedVersion: "1.33.1"
|
||||
#requiredVersion: 1.28.0
|
||||
kubernetesVersion: 1.28.15
|
||||
- range: ">=1.27.0-alpha.1"
|
||||
recommendedVersion: "1.30.3"
|
||||
recommendedVersion: "1.32.2"
|
||||
#requiredVersion: 1.27.0
|
||||
kubernetesVersion: 1.27.16
|
||||
- range: ">=1.26.0-alpha.1"
|
||||
recommendedVersion: "1.30.3"
|
||||
recommendedVersion: "1.31.0"
|
||||
#requiredVersion: 1.26.0
|
||||
kubernetesVersion: 1.26.15
|
||||
- range: ">=1.25.0-alpha.1"
|
||||
recommendedVersion: "1.30.3"
|
||||
recommendedVersion: "1.30.4"
|
||||
#requiredVersion: 1.25.0
|
||||
kubernetesVersion: 1.25.16
|
||||
- range: ">=1.24.0-alpha.1"
|
||||
|
|
|
@ -24,12 +24,10 @@ import (
|
|||
"os"
|
||||
|
||||
"github.com/blang/semver/v4"
|
||||
"github.com/cert-manager/cert-manager/pkg/client/clientset/versioned"
|
||||
certmanager "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned"
|
||||
"github.com/spf13/cobra"
|
||||
"go.uber.org/multierr"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||
"k8s.io/client-go/dynamic"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
"k8s.io/client-go/restmapper"
|
||||
|
@ -41,8 +39,6 @@ import (
|
|||
|
||||
type ApplyChannelOptions struct {
|
||||
Yes bool
|
||||
|
||||
configFlags genericclioptions.ConfigFlags
|
||||
}
|
||||
|
||||
func NewCmdApplyChannel(f *ChannelsFactory, out io.Writer) *cobra.Command {
|
||||
|
@ -120,7 +116,7 @@ func RunApplyChannel(ctx context.Context, f *ChannelsFactory, out io.Writer, opt
|
|||
return applyMenu(ctx, menu, f.VFSContext(), k8sClient, cmClient, dynamicClient, restMapper, options.Yes)
|
||||
}
|
||||
|
||||
func applyMenu(ctx context.Context, menu *channels.AddonMenu, vfsContext *vfs.VFSContext, k8sClient kubernetes.Interface, cmClient versioned.Interface, dynamicClient dynamic.Interface, restMapper *restmapper.DeferredDiscoveryRESTMapper, apply bool) error {
|
||||
func applyMenu(ctx context.Context, menu *channels.AddonMenu, vfsContext *vfs.VFSContext, k8sClient kubernetes.Interface, cmClient certmanager.Interface, dynamicClient dynamic.Interface, restMapper *restmapper.DeferredDiscoveryRESTMapper, apply bool) error {
|
||||
// channelVersions is the list of installed addons in the cluster.
|
||||
// It is keyed by <namespace>:<addon name>.
|
||||
channelVersions, err := getChannelVersions(ctx, k8sClient)
|
||||
|
@ -198,7 +194,7 @@ func applyMenu(ctx context.Context, menu *channels.AddonMenu, vfsContext *vfs.VF
|
|||
return merr
|
||||
}
|
||||
|
||||
func getUpdates(ctx context.Context, menu *channels.AddonMenu, k8sClient kubernetes.Interface, cmClient versioned.Interface, channelVersions map[string]*channels.ChannelVersion) ([]*channels.AddonUpdate, []*channels.Addon, error) {
|
||||
func getUpdates(ctx context.Context, menu *channels.AddonMenu, k8sClient kubernetes.Interface, cmClient certmanager.Interface, channelVersions map[string]*channels.ChannelVersion) ([]*channels.AddonUpdate, []*channels.Addon, error) {
|
||||
var updates []*channels.AddonUpdate
|
||||
var needUpdates []*channels.Addon
|
||||
for _, addon := range menu.Addons {
|
||||
|
|
|
@ -119,14 +119,20 @@ spec:
|
|||
networking:
|
||||
kubenet: {}
|
||||
kubernetesVersions:
|
||||
- range: ">=1.34.0"
|
||||
recommendedVersion: 1.34.0
|
||||
requiredVersion: 1.34.0
|
||||
- range: ">=1.33.0"
|
||||
recommendedVersion: 1.33.4
|
||||
requiredVersion: 1.33.0
|
||||
- range: ">=1.32.0"
|
||||
recommendedVersion: 1.32.4
|
||||
recommendedVersion: 1.32.8
|
||||
requiredVersion: 1.32.0
|
||||
- range: ">=1.31.0"
|
||||
recommendedVersion: 1.31.8
|
||||
recommendedVersion: 1.31.12
|
||||
requiredVersion: 1.31.0
|
||||
- range: ">=1.30.0"
|
||||
recommendedVersion: 1.30.12
|
||||
recommendedVersion: 1.30.14
|
||||
requiredVersion: 1.30.0
|
||||
- range: ">=1.29.0"
|
||||
recommendedVersion: 1.29.15
|
||||
|
@ -189,36 +195,44 @@ spec:
|
|||
recommendedVersion: 1.11.10
|
||||
requiredVersion: 1.11.10
|
||||
kopsVersions:
|
||||
- range: ">=1.34.0-alpha.1"
|
||||
recommendedVersion: "1.33.1"
|
||||
#requiredVersion: 1.34.0
|
||||
kubernetesVersion: 1.34.0
|
||||
- range: ">=1.33.0-alpha.1"
|
||||
recommendedVersion: "1.33.1"
|
||||
#requiredVersion: 1.33.0
|
||||
kubernetesVersion: 1.33.4
|
||||
- range: ">=1.32.0-alpha.1"
|
||||
recommendedVersion: "1.31.0-beta.1"
|
||||
recommendedVersion: "1.33.1"
|
||||
#requiredVersion: 1.32.0
|
||||
kubernetesVersion: 1.32.4
|
||||
kubernetesVersion: 1.32.8
|
||||
- range: ">=1.31.0-alpha.1"
|
||||
recommendedVersion: "1.31.0-beta.1"
|
||||
recommendedVersion: "1.33.1"
|
||||
#requiredVersion: 1.31.0
|
||||
kubernetesVersion: 1.31.8
|
||||
kubernetesVersion: 1.31.12
|
||||
- range: ">=1.30.0-alpha.1"
|
||||
recommendedVersion: "1.30.3"
|
||||
recommendedVersion: "1.33.1"
|
||||
#requiredVersion: 1.30.0
|
||||
kubernetesVersion: 1.30.12
|
||||
kubernetesVersion: 1.30.14
|
||||
- range: ">=1.29.0-alpha.1"
|
||||
recommendedVersion: "1.30.3"
|
||||
recommendedVersion: "1.33.1"
|
||||
#requiredVersion: 1.29.0
|
||||
kubernetesVersion: 1.29.15
|
||||
- range: ">=1.28.0-alpha.1"
|
||||
recommendedVersion: "1.30.3"
|
||||
recommendedVersion: "1.33.1"
|
||||
#requiredVersion: 1.28.0
|
||||
kubernetesVersion: 1.28.15
|
||||
- range: ">=1.27.0-alpha.1"
|
||||
recommendedVersion: "1.30.3"
|
||||
recommendedVersion: "1.32.2"
|
||||
#requiredVersion: 1.27.0
|
||||
kubernetesVersion: 1.27.16
|
||||
- range: ">=1.26.0-alpha.1"
|
||||
recommendedVersion: "1.30.3"
|
||||
recommendedVersion: "1.31.0"
|
||||
#requiredVersion: 1.26.0
|
||||
kubernetesVersion: 1.26.15
|
||||
- range: ">=1.25.0-alpha.1"
|
||||
recommendedVersion: "1.30.3"
|
||||
recommendedVersion: "1.30.4"
|
||||
#requiredVersion: 1.25.0
|
||||
kubernetesVersion: 1.25.16
|
||||
- range: ">=1.24.0-alpha.1"
|
||||
|
|
|
@ -5,7 +5,7 @@ options:
|
|||
machineType: "E2_HIGHCPU_32"
|
||||
steps:
|
||||
# Push the images
|
||||
- name: "mirror.gcr.io/library/golang:1.24.4-bookworm"
|
||||
- name: "mirror.gcr.io/library/golang:1.25.0-trixie"
|
||||
id: images
|
||||
entrypoint: make
|
||||
env:
|
||||
|
@ -21,7 +21,7 @@ steps:
|
|||
- dns-controller-push
|
||||
- kube-apiserver-healthcheck-push
|
||||
# Push the artifacts
|
||||
- name: "mirror.gcr.io/library/golang:1.24.4-bookworm"
|
||||
- name: "mirror.gcr.io/library/golang:1.25.0-trixie"
|
||||
id: artifacts
|
||||
entrypoint: make
|
||||
env:
|
||||
|
@ -36,7 +36,7 @@ steps:
|
|||
args:
|
||||
- gcs-upload-and-tag
|
||||
# Build cloudbuild artifacts (for attestation)
|
||||
- name: "mirror.gcr.io/library/golang:1.24.4-bookworm"
|
||||
- name: "mirror.gcr.io/library/golang:1.25.0-trixie"
|
||||
id: cloudbuild-artifacts
|
||||
entrypoint: make
|
||||
env:
|
||||
|
|
|
@ -20,8 +20,6 @@ import (
|
|||
"net/http/httptest"
|
||||
"sync"
|
||||
|
||||
"github.com/gophercloud/gophercloud/v2/openstack/compute/v2/instanceactions"
|
||||
|
||||
"github.com/gophercloud/gophercloud/v2"
|
||||
|
||||
"github.com/gophercloud/gophercloud/v2/openstack/compute/v2/flavors"
|
||||
|
@ -37,13 +35,12 @@ type MockClient struct {
|
|||
openstack.MockOpenstackServer
|
||||
mutex sync.Mutex
|
||||
|
||||
serverGroups map[string]servergroups.ServerGroup
|
||||
servers map[string]servers.Server
|
||||
keyPairs map[string]keypairs.KeyPair
|
||||
images map[string]images.Image
|
||||
flavors map[string]flavors.Flavor
|
||||
instanceActions map[string]instanceactions.InstanceAction
|
||||
networkClient *gophercloud.ServiceClient
|
||||
serverGroups map[string]servergroups.ServerGroup
|
||||
servers map[string]servers.Server
|
||||
keyPairs map[string]keypairs.KeyPair
|
||||
images map[string]images.Image
|
||||
flavors map[string]flavors.Flavor
|
||||
networkClient *gophercloud.ServiceClient
|
||||
}
|
||||
|
||||
// CreateClient will create a new mock networking client
|
||||
|
|
|
@ -181,7 +181,8 @@ func (m *MockClient) routerInterface(w http.ResponseWriter, r *http.Request) {
|
|||
if err != nil {
|
||||
panic("error decoding create router interface request")
|
||||
}
|
||||
if parts[2] == "add_router_interface" {
|
||||
switch parts[2] {
|
||||
case "add_router_interface":
|
||||
subnet := m.subnets[createInterface.SubnetID]
|
||||
interfaces := m.routerInterfaces[routerID]
|
||||
interfaces = append(interfaces, routers.InterfaceInfo{
|
||||
|
@ -201,7 +202,7 @@ func (m *MockClient) routerInterface(w http.ResponseWriter, r *http.Request) {
|
|||
},
|
||||
}
|
||||
m.ports[port.ID] = port
|
||||
} else if parts[2] == "remove_router_interface" {
|
||||
case "remove_router_interface":
|
||||
interfaces := make([]routers.InterfaceInfo, 0)
|
||||
for _, i := range m.routerInterfaces[routerID] {
|
||||
if i.SubnetID != createInterface.SubnetID {
|
||||
|
@ -209,7 +210,7 @@ func (m *MockClient) routerInterface(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
}
|
||||
m.routerInterfaces[routerID] = interfaces
|
||||
} else {
|
||||
default:
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -107,7 +107,7 @@ func (f *FakeDomainAPI) UpdateDNSZoneRecords(req *domain.UpdateDNSZoneRecordsReq
|
|||
break
|
||||
}
|
||||
}
|
||||
if found == false {
|
||||
if !found {
|
||||
return nil, fmt.Errorf("could not find record %s to delete", *change.Delete.ID)
|
||||
}
|
||||
|
||||
|
|
|
@ -161,7 +161,7 @@ func (s *Server) bootstrap(w http.ResponseWriter, r *http.Request) {
|
|||
if err != nil {
|
||||
klog.Infof("bootstrap %s read err: %v", r.RemoteAddr, err)
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
_, _ = w.Write([]byte(fmt.Sprintf("bootstrap %s failed to read body: %v", r.RemoteAddr, err)))
|
||||
_, _ = fmt.Fprintf(w, "bootstrap %s failed to read body: %v", r.RemoteAddr, err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -208,7 +208,7 @@ func (s *Server) bootstrap(w http.ResponseWriter, r *http.Request) {
|
|||
if err := json.Unmarshal(body, req); err != nil {
|
||||
klog.Infof("bootstrap %s decode err: %v", r.RemoteAddr, err)
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
_, _ = w.Write([]byte(fmt.Sprintf("failed to decode: %v", err)))
|
||||
_, _ = fmt.Fprintf(w, "failed to decode: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -264,7 +264,7 @@ func (s *Server) bootstrap(w http.ResponseWriter, r *http.Request) {
|
|||
if err != nil {
|
||||
klog.Infof("bootstrap %s cert %q issue err: %v", r.RemoteAddr, name, err)
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
_, _ = w.Write([]byte(fmt.Sprintf("failed to issue %q: %v", name, err)))
|
||||
_, _ = fmt.Fprintf(w, "failed to issue %q: %v", name, err)
|
||||
return
|
||||
}
|
||||
resp.Certs[name] = cert
|
||||
|
|
|
@ -858,7 +858,7 @@ func parseCloudLabels(s string) (map[string]string, error) {
|
|||
// Replace commas with newlines to allow a single pass with csv.Reader.
|
||||
// We can't use csv.Reader for the initial split because it would see each key=value record as a single field
|
||||
// and significantly complicates using quoted fields as keys or values.
|
||||
records := strings.Replace(s, ",", "\n", -1)
|
||||
records := strings.ReplaceAll(s, ",", "\n")
|
||||
|
||||
// Let the CSV library do the heavy-lifting in handling nested ='s
|
||||
r := csv.NewReader(strings.NewReader(records))
|
||||
|
|
|
@ -46,8 +46,6 @@ var MagicTimestamp = metav1.Time{Time: time.Date(2017, 1, 1, 0, 0, 0, 0, time.UT
|
|||
|
||||
// TestCreateClusterMinimal runs kops create cluster minimal.example.com --zones us-test-1a
|
||||
func TestCreateClusterMinimal(t *testing.T) {
|
||||
runCreateClusterIntegrationTest(t, "../../tests/integration/create_cluster/minimal-1.27", "v1alpha2")
|
||||
runCreateClusterIntegrationTest(t, "../../tests/integration/create_cluster/minimal-1.28", "v1alpha2")
|
||||
runCreateClusterIntegrationTest(t, "../../tests/integration/create_cluster/minimal-1.29", "v1alpha2")
|
||||
runCreateClusterIntegrationTest(t, "../../tests/integration/create_cluster/minimal-1.30", "v1alpha2")
|
||||
runCreateClusterIntegrationTest(t, "../../tests/integration/create_cluster/minimal-1.31", "v1alpha2")
|
||||
|
|
|
@ -246,28 +246,6 @@ func TestMinimalAWS(t *testing.T) {
|
|||
runTestTerraformAWS(t)
|
||||
}
|
||||
|
||||
// TestMinimal runs the test on a minimum configuration
|
||||
func TestMinimal_v1_27(t *testing.T) {
|
||||
newIntegrationTest("minimal.example.com", "minimal-1.27").
|
||||
withAddons(
|
||||
awsEBSCSIAddon,
|
||||
dnsControllerAddon,
|
||||
awsCCMAddon,
|
||||
).
|
||||
runTestTerraformAWS(t)
|
||||
}
|
||||
|
||||
// TestMinimal runs the test on a minimum configuration
|
||||
func TestMinimal_v1_28(t *testing.T) {
|
||||
newIntegrationTest("minimal.example.com", "minimal-1.28").
|
||||
withAddons(
|
||||
awsEBSCSIAddon,
|
||||
dnsControllerAddon,
|
||||
awsCCMAddon,
|
||||
).
|
||||
runTestTerraformAWS(t)
|
||||
}
|
||||
|
||||
// TestMinimal runs the test on a minimum configuration
|
||||
func TestMinimal_v1_29(t *testing.T) {
|
||||
newIntegrationTest("minimal.example.com", "minimal-1.29").
|
||||
|
@ -722,15 +700,6 @@ func TestPrivateCiliumENI(t *testing.T) {
|
|||
runTestTerraformAWS(t)
|
||||
}
|
||||
|
||||
// TestPrivateCanal runs the test on a configuration with private topology, canal networking
|
||||
func TestPrivateCanal(t *testing.T) {
|
||||
newIntegrationTest("privatecanal.example.com", "privatecanal").
|
||||
withPrivate().
|
||||
withDefaultAddons30().
|
||||
withAddons(canalAddon).
|
||||
runTestTerraformAWS(t)
|
||||
}
|
||||
|
||||
const kopeioNetworkingAddon = "networking.kope.io-k8s-1.12"
|
||||
|
||||
// TestPrivateKopeio runs the test on a configuration with private topology, kopeio networking
|
||||
|
@ -1605,7 +1574,7 @@ func (i *integrationTest) runTestTerraformAWS(t *testing.T) {
|
|||
"aws_cloudwatch_event_rule_" + awsup.GetClusterName40(i.clusterName) + "-SpotInterruption_event_pattern",
|
||||
"aws_cloudwatch_event_rule_" + awsup.GetClusterName40(i.clusterName) + "-InstanceStateChange_event_pattern",
|
||||
"aws_cloudwatch_event_rule_" + awsup.GetClusterName40(i.clusterName) + "-InstanceScheduledChange_event_pattern",
|
||||
"aws_sqs_queue_" + strings.Replace(i.clusterName, ".", "-", -1) + "-nth_policy",
|
||||
"aws_sqs_queue_" + strings.ReplaceAll(i.clusterName, ".", "-") + "-nth_policy",
|
||||
}...)
|
||||
}
|
||||
if i.nthRebalance {
|
||||
|
@ -1633,7 +1602,8 @@ func (i *integrationTest) runTestPhase(t *testing.T, phase cloudup.Phase) {
|
|||
|
||||
expectedFilenames := i.expectTerraformFilenames
|
||||
|
||||
if phase == cloudup.PhaseSecurity {
|
||||
switch phase {
|
||||
case cloudup.PhaseSecurity:
|
||||
expectedFilenames = []string{
|
||||
"aws_iam_role_masters." + i.clusterName + "_policy",
|
||||
"aws_iam_role_nodes." + i.clusterName + "_policy",
|
||||
|
@ -1648,7 +1618,7 @@ func (i *integrationTest) runTestPhase(t *testing.T, phase cloudup.Phase) {
|
|||
"aws_launch_template_bastion." + i.clusterName + "_user_data",
|
||||
}...)
|
||||
}
|
||||
} else if phase == cloudup.PhaseCluster {
|
||||
case cloudup.PhaseCluster:
|
||||
expectedFilenames = []string{
|
||||
"aws_launch_template_nodes." + i.clusterName + "_user_data",
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ func (o *LifecycleTestOptions) AddDefaults() {
|
|||
o.Version = "v1alpha2"
|
||||
}
|
||||
if o.ClusterName == "" {
|
||||
o.ClusterName = strings.Replace(o.SrcDir, "_", "", -1) + ".example.com"
|
||||
o.ClusterName = strings.ReplaceAll(o.SrcDir, "_", "") + ".example.com"
|
||||
}
|
||||
|
||||
o.SrcDir = "../../tests/integration/update_cluster/" + o.SrcDir
|
||||
|
|
|
@ -22,8 +22,8 @@ import (
|
|||
"io"
|
||||
"strings"
|
||||
|
||||
"github.com/aws/amazon-ec2-instance-selector/v2/pkg/cli"
|
||||
"github.com/aws/amazon-ec2-instance-selector/v2/pkg/selector"
|
||||
"github.com/aws/amazon-ec2-instance-selector/v3/pkg/cli"
|
||||
"github.com/aws/amazon-ec2-instance-selector/v3/pkg/selector"
|
||||
ec2types "github.com/aws/aws-sdk-go-v2/service/ec2/types"
|
||||
"github.com/spf13/cobra"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
@ -520,7 +520,8 @@ func decorateWithMixedInstancesPolicy(instanceGroup *kops.InstanceGroup, usageCl
|
|||
ig := instanceGroup
|
||||
ig.Spec.MachineType = instanceSelections[0]
|
||||
|
||||
if usageClass == ec2types.UsageClassTypeSpot {
|
||||
switch usageClass {
|
||||
case ec2types.UsageClassTypeSpot:
|
||||
ondemandBase := int64(0)
|
||||
ondemandAboveBase := int64(0)
|
||||
spotAllocationStrategy := "capacity-optimized"
|
||||
|
@ -530,11 +531,11 @@ func decorateWithMixedInstancesPolicy(instanceGroup *kops.InstanceGroup, usageCl
|
|||
OnDemandAboveBase: &ondemandAboveBase,
|
||||
SpotAllocationStrategy: &spotAllocationStrategy,
|
||||
}
|
||||
} else if usageClass == ec2types.UsageClassTypeOnDemand {
|
||||
case ec2types.UsageClassTypeOnDemand:
|
||||
ig.Spec.MixedInstancesPolicy = &kops.MixedInstancesPolicySpec{
|
||||
Instances: instanceSelections,
|
||||
}
|
||||
} else {
|
||||
default:
|
||||
return nil, fmt.Errorf("error node usage class not supported")
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ import (
|
|||
"regexp"
|
||||
"testing"
|
||||
|
||||
"github.com/aws/amazon-ec2-instance-selector/v2/pkg/cli"
|
||||
"github.com/aws/amazon-ec2-instance-selector/v3/pkg/cli"
|
||||
ec2types "github.com/aws/aws-sdk-go-v2/service/ec2/types"
|
||||
"k8s.io/kops/pkg/apis/kops"
|
||||
)
|
||||
|
|
|
@ -36,7 +36,6 @@ import (
|
|||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/kops/cmd/kops/util"
|
||||
"k8s.io/kops/pkg/apis/kops"
|
||||
kopsapi "k8s.io/kops/pkg/apis/kops"
|
||||
"k8s.io/kops/pkg/validation"
|
||||
"k8s.io/kops/util/pkg/tables"
|
||||
|
@ -63,7 +62,7 @@ var (
|
|||
|
||||
type ValidateClusterOptions struct {
|
||||
ClusterName string
|
||||
InstanceGroupRoles []kops.InstanceGroupRole
|
||||
InstanceGroupRoles []kopsapi.InstanceGroupRole
|
||||
output string
|
||||
wait time.Duration
|
||||
count int
|
||||
|
@ -71,7 +70,7 @@ type ValidateClusterOptions struct {
|
|||
kubeconfig string
|
||||
|
||||
// filterInstanceGroups is a function that returns true if the instance group should be validated
|
||||
filterInstanceGroups func(ig *kops.InstanceGroup) bool
|
||||
filterInstanceGroups func(ig *kopsapi.InstanceGroup) bool
|
||||
|
||||
// filterPodsForValidation is a function that returns true if the pod should be validated
|
||||
filterPodsForValidation func(pod *v1.Pod) bool
|
||||
|
|
|
@ -201,9 +201,10 @@ func (c *NodeController) updateNodeRecords(node *v1.Node) string {
|
|||
|
||||
for _, a := range node.Status.Addresses {
|
||||
var roleType string
|
||||
if a.Type == v1.NodeInternalIP {
|
||||
switch a.Type {
|
||||
case v1.NodeInternalIP:
|
||||
roleType = dns.RoleTypeInternal
|
||||
} else if a.Type == v1.NodeExternalIP {
|
||||
case v1.NodeExternalIP:
|
||||
roleType = dns.RoleTypeExternal
|
||||
}
|
||||
var recordType dns.RecordType = dns.RecordTypeA
|
||||
|
|
|
@ -152,7 +152,8 @@ func (c *ServiceController) updateServiceRecords(service *v1.Service) string {
|
|||
if len(specExternal) != 0 || len(specInternal) != 0 {
|
||||
var ingresses []dns.Record
|
||||
|
||||
if service.Spec.Type == v1.ServiceTypeLoadBalancer {
|
||||
switch service.Spec.Type {
|
||||
case v1.ServiceTypeLoadBalancer:
|
||||
for i := range service.Status.LoadBalancer.Ingress {
|
||||
ingress := &service.Status.LoadBalancer.Ingress[i]
|
||||
if ingress.Hostname != "" {
|
||||
|
@ -175,7 +176,7 @@ func (c *ServiceController) updateServiceRecords(service *v1.Service) string {
|
|||
klog.V(4).Infof("Found A record for service %s/%s: %q", service.Namespace, service.Name, ingress.IP)
|
||||
}
|
||||
}
|
||||
} else if service.Spec.Type == v1.ServiceTypeNodePort {
|
||||
case v1.ServiceTypeNodePort:
|
||||
var roleType string
|
||||
if len(specExternal) != 0 && len(specInternal) != 0 {
|
||||
klog.Warningln("DNS Records not possible for both Internal and Externals IPs.")
|
||||
|
@ -190,7 +191,7 @@ func (c *ServiceController) updateServiceRecords(service *v1.Service) string {
|
|||
Value: dns.AliasForNodesInRole("node", roleType),
|
||||
})
|
||||
klog.V(4).Infof("Setting internal alias for NodePort service %s/%s", service.Namespace, service.Name)
|
||||
} else {
|
||||
default:
|
||||
// TODO: Emit event so that users are informed of this
|
||||
klog.V(2).Infof("Cannot expose service %s/%s of type %q", service.Namespace, service.Name, service.Spec.Type)
|
||||
}
|
||||
|
|
|
@ -46,6 +46,6 @@ func (m *ManagedZonesService) List(project string) interfaces.ManagedZonesListCa
|
|||
}
|
||||
|
||||
func (m *ManagedZonesService) NewManagedZone(dnsName string) interfaces.ManagedZone {
|
||||
name := "x" + strings.Replace(string(uuid.NewUUID()), "-", "", -1)[0:30] // Unique name, strip out the "-" chars to shorten it, start with a lower case alpha, and truncate to Cloud DNS 32 character limit
|
||||
name := "x" + strings.ReplaceAll(string(uuid.NewUUID()), "-", "")[0:30] // Unique name, strip out the "-" chars to shorten it, start with a lower case alpha, and truncate to Cloud DNS 32 character limit
|
||||
return &ManagedZone{impl: &dns.ManagedZone{Name: name, Description: "Kubernetes Federated Service", DnsName: dnsName}}
|
||||
}
|
||||
|
|
|
@ -1,45 +1,120 @@
|
|||
## Release notes for kOps 1.33 series
|
||||
|
||||
**⚠ kOps 1.33 has not been released yet! ⚠**
|
||||
|
||||
This is a document to gather the release notes prior to the release.
|
||||
kOps 1.33.0 introduces significant improvements to cloud provider support, networking capabilities, and Kubernetes integration. This release adds new features for AWS ECR, Hetzner Cloud, and Cilium while removing deprecated legacy components.
|
||||
|
||||
# Significant changes
|
||||
|
||||
* TODO
|
||||
## New Features
|
||||
|
||||
## Some Feature
|
||||
### AWS ECR Pull-Through Cache Support
|
||||
* Add support for using ECR as pull-through image cache ([#16593](https://github.com/kubernetes/kops/pull/16593))
|
||||
- Enables faster container image pulls by caching images in ECR
|
||||
- Reduces external registry dependencies and improves reliability
|
||||
|
||||
* TODO
|
||||
### Hetzner Cloud Object Storage
|
||||
* Add support for Object Storage ([#17453](https://github.com/kubernetes/kops/pull/17453))
|
||||
- Enables state store configuration using Hetzner Cloud Object Storage
|
||||
- Provides alternative to S3 for Hetzner Cloud users
|
||||
|
||||
## AWS
|
||||
### Cilium Gateway API Support
|
||||
* Add support for Gateway API within Cilium ([#17358](https://github.com/kubernetes/kops/pull/17358))
|
||||
- Enables modern Kubernetes networking with Gateway API
|
||||
- Provides advanced traffic management capabilities
|
||||
|
||||
* TODO
|
||||
## Cloud Provider Improvements
|
||||
|
||||
## GCP
|
||||
### Kubernetes 1.33 Cloud Provider Changes
|
||||
* Remove cloud-config and cloud-provider flags from kubelet and kube-apiserver for Kubernetes 1.33+ ([#17412](https://github.com/kubernetes/kops/pull/17412), [#17270](https://github.com/kubernetes/kops/pull/17270))
|
||||
- Aligns with Kubernetes deprecation of in-tree cloud providers
|
||||
- Mandatory for Kubernetes 1.33+ compatibility
|
||||
|
||||
* TODO
|
||||
### Azure Enhancements
|
||||
* Deploy cloud-node-manager for Kubernetes 1.31+
|
||||
- Ensures proper node management for newer Kubernetes versions
|
||||
- Improves Azure cloud integration
|
||||
|
||||
## Openstack
|
||||
### GCP Updates
|
||||
* Do not reset MIG target size on cluster updates
|
||||
- Prevents unwanted scaling during cluster operations
|
||||
- Improves autoscaler compatibility
|
||||
|
||||
* TODO
|
||||
## Container Runtime and Component Updates
|
||||
|
||||
# Other changes of note
|
||||
### Major Version Updates
|
||||
* Update Cilium to v1.16.7
|
||||
* Update Calico to v3.29.4
|
||||
* Update CoreDNS to v1.11.4
|
||||
* Update containerd to v1.7.28
|
||||
* Update etcd to v3.5.21
|
||||
* Update etcd-manager to v3.0.20250803
|
||||
* Update metrics-server to v0.7.2
|
||||
* Update flannel to v0.26.4
|
||||
* Update kube-router from v2.1.1 to v2.5.0
|
||||
* Update Amazon VPC CNI to v1.19.3
|
||||
|
||||
* TODO
|
||||
### Flannel Support Restored
|
||||
* Re-enable Flannel and remove deprecation notice
|
||||
- Flannel continues to be supported as a networking option
|
||||
- Updates documentation to reflect continued support
|
||||
|
||||
# Breaking changes
|
||||
|
||||
## Other breaking changes
|
||||
## Legacy Addon Removal
|
||||
* Remove legacy addons from kOps repository ([#17332](https://github.com/kubernetes/kops/pull/17332))
|
||||
- Only affects clusters using kOps versions prior to 1.22
|
||||
- Modern clusters using managed addons are unaffected
|
||||
|
||||
* Legacy addons have been removed from the kOps repo. These were only referenced by kOps <1.22 ([17322](https://github.com/kubernetes/kops/pull/17332))
|
||||
## Cloud Provider Flag Removal
|
||||
* Remove cloud-config and cloud-provider flags for Kubernetes 1.33+
|
||||
- **Breaking change** for clusters upgrading to Kubernetes 1.33
|
||||
- External cloud providers must be configured separately
|
||||
- Ensures compliance with Kubernetes 1.33 requirements
|
||||
|
||||
# Other notable changes
|
||||
|
||||
## Networking Enhancements
|
||||
* Add CNI-exclusive setting for Cilium
|
||||
* Allow setup of CoreDNS pod annotations ([#17315](https://github.com/kubernetes/kops/pull/17315))
|
||||
* Prevent systemd-networkd from removing Cilium routes on restart
|
||||
* Support systemd config on Ubuntu 22.04+ for Amazon VPC CNI
|
||||
|
||||
## Security and Configuration
|
||||
* Use official etcd images from registry.k8s.io
|
||||
* Increase key size for KubeConfig private key
|
||||
* Enable more admission controllers by default
|
||||
* Add goaway-chance parameter for kube-apiserver
|
||||
|
||||
## Testing and Infrastructure
|
||||
* Use ephemeral S3 buckets for E2E tests ([#17157](https://github.com/kubernetes/kops/pull/17157))
|
||||
- Improves test isolation and cleanup
|
||||
- Reduces testing infrastructure costs
|
||||
|
||||
## OpenStack Support
|
||||
* Fix: determine ports to delete based on tags
|
||||
- Improves resource cleanup accuracy
|
||||
- Prevents deletion of unmanaged ports
|
||||
|
||||
# Known Issues
|
||||
|
||||
* TODO
|
||||
* None at this time
|
||||
|
||||
# Deprecations
|
||||
|
||||
* Support for Kubernetes version 1.27 is removed in kOps 1.33.
|
||||
* Support for Kubernetes version 1.27 is removed in kOps 1.33
|
||||
* Support for Kubernetes version 1.28 is deprecated and will be removed in kOps 1.34
|
||||
|
||||
* Support for Kubernetes version 1.28 is deprecated and will be removed in kOps 1.34.
|
||||
# Installation and Upgrade Notes
|
||||
|
||||
## Kubernetes 1.33 Upgrade Requirements
|
||||
* **Important**: Clusters upgrading to Kubernetes 1.33 must use external cloud providers
|
||||
* The cloud-config and cloud-provider flags are no longer supported in Kubernetes 1.33
|
||||
* Plan your upgrade carefully and test in non-production environments first
|
||||
|
||||
## Recommended Upgrade Process
|
||||
* Use the `kops reconcile cluster` command for Kubernetes minor version upgrades
|
||||
* Review breaking changes before upgrading production clusters
|
||||
* Ensure proper testing of cloud provider configuration changes
|
||||
|
||||
---
|
||||
|
||||
This release includes contributions from the kOps community. Thank you to all contributors who made this release possible!
|
||||
|
|
|
@ -7,6 +7,8 @@ This is a document to gather the release notes prior to the release.
|
|||
# Significant changes
|
||||
|
||||
* Default SSH key is now `~/.ssh/id_ed25519.pub`, instead of the less secure `~/.ssh/id_rsa.pub`.
|
||||
* `crictl` and `nerdctl` are now only installed on demand, by setting `spec.containerd.installCriCtl=true` and `spec.containerd.installNerdCtl=true`.
|
||||
* `ebtables`, `ethtool` and `socat` are no longer installed by default.
|
||||
|
||||
## Some Feature
|
||||
|
||||
|
|
47
go.mod
47
go.mod
|
@ -1,9 +1,9 @@
|
|||
module k8s.io/kops
|
||||
|
||||
// This should be kept in sync with cloudbuild.yaml and the other go.mod files
|
||||
go 1.24.4
|
||||
go 1.25.0
|
||||
|
||||
godebug default=go1.24
|
||||
godebug default=go1.25
|
||||
|
||||
require (
|
||||
cloud.google.com/go/compute/metadata v0.7.0
|
||||
|
@ -18,7 +18,7 @@ require (
|
|||
github.com/MakeNowJust/heredoc/v2 v2.0.1
|
||||
github.com/Masterminds/sprig/v3 v3.3.0
|
||||
github.com/apparentlymart/go-cidr v1.1.0
|
||||
github.com/aws/amazon-ec2-instance-selector/v2 v2.4.2-0.20231216170552-14d4dfcbaadf
|
||||
github.com/aws/amazon-ec2-instance-selector/v3 v3.1.1
|
||||
github.com/aws/aws-sdk-go-v2 v1.36.5
|
||||
github.com/aws/aws-sdk-go-v2/config v1.29.17
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.17.70
|
||||
|
@ -70,12 +70,12 @@ require (
|
|||
go.opentelemetry.io/otel/trace v1.37.0
|
||||
go.opentelemetry.io/proto/otlp v1.7.0
|
||||
go.uber.org/multierr v1.11.0
|
||||
golang.org/x/crypto v0.39.0
|
||||
golang.org/x/crypto v0.41.0
|
||||
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b
|
||||
golang.org/x/net v0.41.0
|
||||
golang.org/x/net v0.43.0
|
||||
golang.org/x/oauth2 v0.30.0
|
||||
golang.org/x/sync v0.15.0
|
||||
golang.org/x/sys v0.33.0
|
||||
golang.org/x/sync v0.16.0
|
||||
golang.org/x/sys v0.35.0
|
||||
google.golang.org/api v0.239.0
|
||||
google.golang.org/grpc v1.73.0
|
||||
google.golang.org/protobuf v1.36.6
|
||||
|
@ -123,17 +123,18 @@ require (
|
|||
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.7.4 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.17 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/pricing v1.21.6 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/pricing v1.32.17 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.25.5 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3 // indirect
|
||||
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||
github.com/chai2010/gettext-go v1.0.2 // indirect
|
||||
github.com/charmbracelet/bubbles v0.16.1 // indirect
|
||||
github.com/charmbracelet/bubbletea v0.24.2 // indirect
|
||||
github.com/charmbracelet/lipgloss v0.7.1 // indirect
|
||||
github.com/containerd/console v1.0.4 // indirect
|
||||
github.com/charmbracelet/bubbles v0.20.0 // indirect
|
||||
github.com/charmbracelet/bubbletea v1.3.3 // indirect
|
||||
github.com/charmbracelet/lipgloss v1.0.0 // indirect
|
||||
github.com/charmbracelet/x/ansi v0.8.0 // indirect
|
||||
github.com/charmbracelet/x/term v0.2.1 // indirect
|
||||
github.com/containerd/containerd v1.7.27 // indirect
|
||||
github.com/containerd/errdefs v1.0.0 // indirect
|
||||
github.com/containerd/log v0.1.0 // indirect
|
||||
|
@ -146,9 +147,10 @@ require (
|
|||
github.com/docker/docker-credential-helpers v0.9.3 // indirect
|
||||
github.com/docker/go-events v0.0.0-20250114142523-c867878c5e32 // indirect
|
||||
github.com/emicklei/go-restful/v3 v3.12.1 // indirect
|
||||
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
|
||||
github.com/evanphx/json-patch v5.9.11+incompatible // indirect
|
||||
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
|
||||
github.com/evertras/bubble-table v0.15.2 // indirect
|
||||
github.com/evertras/bubble-table v0.17.1 // indirect
|
||||
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect
|
||||
github.com/felixge/httpsnoop v1.0.4 // indirect
|
||||
github.com/fsnotify/fsnotify v1.8.0 // indirect
|
||||
|
@ -183,7 +185,6 @@ require (
|
|||
github.com/hashicorp/golang-lru v0.5.4 // indirect
|
||||
github.com/hashicorp/memberlist v0.3.1 // indirect
|
||||
github.com/huandu/xstrings v1.5.0 // indirect
|
||||
github.com/imdario/mergo v0.3.16 // indirect
|
||||
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
||||
github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24 // indirect
|
||||
github.com/josharian/intern v1.0.0 // indirect
|
||||
|
@ -196,7 +197,7 @@ require (
|
|||
github.com/mailru/easyjson v0.9.0 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/mattn/go-localereader v0.0.1 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.14 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.16 // indirect
|
||||
github.com/miekg/dns v1.1.62 // indirect
|
||||
github.com/mitchellh/copystructure v1.2.0 // indirect
|
||||
github.com/mitchellh/go-homedir v1.1.0 // indirect
|
||||
|
@ -209,10 +210,10 @@ require (
|
|||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect
|
||||
github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect
|
||||
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
|
||||
github.com/muesli/cancelreader v0.2.2 // indirect
|
||||
github.com/muesli/reflow v0.3.0 // indirect
|
||||
github.com/muesli/termenv v0.15.2 // indirect
|
||||
github.com/muesli/termenv v0.16.0 // indirect
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
||||
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
|
||||
github.com/oklog/ulid v1.3.1 // indirect
|
||||
|
@ -228,10 +229,10 @@ require (
|
|||
github.com/prometheus/client_model v0.6.2 // indirect
|
||||
github.com/prometheus/common v0.62.0 // indirect
|
||||
github.com/prometheus/procfs v0.15.1 // indirect
|
||||
github.com/rivo/uniseg v0.2.0 // indirect
|
||||
github.com/rivo/uniseg v0.4.7 // indirect
|
||||
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||
github.com/sagikazarmark/locafero v0.7.0 // indirect
|
||||
github.com/sahilm/fuzzy v0.1.0 // indirect
|
||||
github.com/sahilm/fuzzy v0.1.1 // indirect
|
||||
github.com/samber/lo v1.50.0 // indirect
|
||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect
|
||||
github.com/shopspring/decimal v1.4.0 // indirect
|
||||
|
@ -248,11 +249,11 @@ require (
|
|||
go.opentelemetry.io/otel/metric v1.37.0 // indirect
|
||||
go.yaml.in/yaml/v2 v2.4.2 // indirect
|
||||
go.yaml.in/yaml/v3 v3.0.3 // indirect
|
||||
golang.org/x/mod v0.25.0 // indirect
|
||||
golang.org/x/term v0.32.0 // indirect
|
||||
golang.org/x/text v0.26.0 // indirect
|
||||
golang.org/x/mod v0.27.0 // indirect
|
||||
golang.org/x/term v0.34.0 // indirect
|
||||
golang.org/x/text v0.28.0 // indirect
|
||||
golang.org/x/time v0.12.0 // indirect
|
||||
golang.org/x/tools v0.34.0 // indirect
|
||||
golang.org/x/tools v0.36.0 // indirect
|
||||
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect
|
||||
|
|
92
go.sum
92
go.sum
|
@ -71,11 +71,10 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd
|
|||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
|
||||
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
|
||||
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
|
||||
github.com/aws/amazon-ec2-instance-selector/v2 v2.4.2-0.20231216170552-14d4dfcbaadf h1:1zems5/6/Fs+1dFsjTZ+oSogVHkfGl1VWuttRXYGx+0=
|
||||
github.com/aws/amazon-ec2-instance-selector/v2 v2.4.2-0.20231216170552-14d4dfcbaadf/go.mod h1:zsxolOKwtNEvoOPScJy5+Bu8F72LZy7pqVJNhP8tqVE=
|
||||
github.com/aws/amazon-ec2-instance-selector/v3 v3.1.1 h1:8pw8T4Ae8tiXbxTxXhVStJSUJpEv29+YOQaDxIv3EaI=
|
||||
github.com/aws/amazon-ec2-instance-selector/v3 v3.1.1/go.mod h1:RU/lVVsYHNN7Bwr2UmCw5z2aWPcNIHADY49bj082oYM=
|
||||
github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=
|
||||
github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
|
||||
github.com/aws/aws-sdk-go-v2 v1.21.0/go.mod h1:/RfNgGmRxI+iFOB1OeJUyxiU+9s88k3pfHvDagGEp0M=
|
||||
github.com/aws/aws-sdk-go-v2 v1.36.5 h1:0OF9RiEMEdDdZEMqF9MRjevyxAQcf6gY+E7vwBILFj0=
|
||||
github.com/aws/aws-sdk-go-v2 v1.36.5/go.mod h1:EYrzvCCN9CMUTa5+6lf6MM4tq3Zjp8UhSGR/cBsjai0=
|
||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.11 h1:12SpdwU8Djs+YGklkinSSlcrPyj3H4VifVsKf78KbwA=
|
||||
|
@ -86,10 +85,8 @@ github.com/aws/aws-sdk-go-v2/credentials v1.17.70 h1:ONnH5CM16RTXRkS8Z1qg7/s2eDO
|
|||
github.com/aws/aws-sdk-go-v2/credentials v1.17.70/go.mod h1:M+lWhhmomVGgtuPOhO85u4pEa3SmssPTdcYpP/5J/xc=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32 h1:KAXP9JSHO1vKGCr5f4O6WmlVKLFFXgWYAGoJosorxzU=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32/go.mod h1:h4Sg6FQdexC1yYG9RDnOvLbW1a/P986++/Y/a+GyEM8=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.41/go.mod h1:CrObHAuPneJBlfEJ5T3szXOUkLEThaGfvnhTf33buas=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 h1:SsytQyTMHMDPspp+spo7XwXTP44aJZZAC7fBV2C5+5s=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36/go.mod h1:Q1lnJArKRXkenyog6+Y+zr7WDpk4e6XlR6gs20bbeNo=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.35/go.mod h1:SJC1nEVVva1g3pHAIdCp7QsRIkMmLAgoDquQ9Rr8kYw=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 h1:i2vNHQiXUvKhs3quBR6aqlgJaiaexz/aNvdCktW/kAM=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36/go.mod h1:UdyGa7Q91id/sdyHPwth+043HhmP6yP9MBHgbZM0xo8=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo=
|
||||
|
@ -118,8 +115,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.17 h1:qcLWgdhq45sDM
|
|||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.17/go.mod h1:M+jkjBFZ2J6DJrjMv2+vkBbuht6kxJYtJiwoVgX4p4U=
|
||||
github.com/aws/aws-sdk-go-v2/service/kms v1.41.2 h1:zJeUxFP7+XP52u23vrp4zMcVhShTWbNO8dHV6xCSvFo=
|
||||
github.com/aws/aws-sdk-go-v2/service/kms v1.41.2/go.mod h1:Pqd9k4TuespkireN206cK2QBsaBTL6X+VPAez5Qcijk=
|
||||
github.com/aws/aws-sdk-go-v2/service/pricing v1.21.6 h1:k/f3T13s7wx/By6aKovlVsjdNkRVT0QRR2RlZEvaTGg=
|
||||
github.com/aws/aws-sdk-go-v2/service/pricing v1.21.6/go.mod h1:9n3tkRCngy3+Iw/8vK3C69iXh22SCGsy3yn16nTxH+s=
|
||||
github.com/aws/aws-sdk-go-v2/service/pricing v1.32.17 h1:EtZFyL/uhaXlHjIwHW0KSJvppg+Ie1fzQ3wEXLEUj0I=
|
||||
github.com/aws/aws-sdk-go-v2/service/pricing v1.32.17/go.mod h1:l7bufyRvU+8mY0Z1BNWbWvjr59dlj9YrLKmeiz5CJ30=
|
||||
github.com/aws/aws-sdk-go-v2/service/route53 v1.52.2 h1:dXHWVVPx2W2fq2PTugj8QXpJ0YTRAGx0KLPKhMBmcsY=
|
||||
github.com/aws/aws-sdk-go-v2/service/route53 v1.52.2/go.mod h1:wi1naoiPnCQG3cyjsivwPON1ZmQt/EJGxFqXzubBTAw=
|
||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.82.0 h1:JubM8CGDDFaAOmBrd8CRYNr49ZNgEAiLwGwgNMdS0nw=
|
||||
|
@ -134,7 +131,6 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3 h1:BpOxT3yhLwSJ77qIY3DoHAQj
|
|||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3/go.mod h1:vq/GQR1gOFLquZMSrxUK/cpvKCNVYibNyJ1m7JrU88E=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.34.0 h1:NFOJ/NXEGV4Rq//71Hs1jC/NvPs1ezajK+yQmkwnPV0=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.34.0/go.mod h1:7ph2tGpfQvwzgistp2+zga9f+bCjlQJPkPUmMgDSD7w=
|
||||
github.com/aws/smithy-go v1.14.2/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
|
||||
github.com/aws/smithy-go v1.22.4 h1:uqXzVZNuNexwc/xrh6Tb56u89WDlJY6HS+KC0S4QSjw=
|
||||
github.com/aws/smithy-go v1.22.4/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
|
||||
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
|
||||
|
@ -157,16 +153,18 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF
|
|||
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk=
|
||||
github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA=
|
||||
github.com/charmbracelet/bubbles v0.16.1 h1:6uzpAAaT9ZqKssntbvZMlksWHruQLNxg49H5WdeuYSY=
|
||||
github.com/charmbracelet/bubbles v0.16.1/go.mod h1:2QCp9LFlEsBQMvIYERr7Ww2H2bA7xen1idUDIzm/+Xc=
|
||||
github.com/charmbracelet/bubbletea v0.24.2 h1:uaQIKx9Ai6Gdh5zpTbGiWpytMU+CfsPp06RaW2cx/SY=
|
||||
github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FDaJmO3l2nejekbsgg=
|
||||
github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E=
|
||||
github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c=
|
||||
github.com/charmbracelet/bubbles v0.20.0 h1:jSZu6qD8cRQ6k9OMfR1WlM+ruM8fkPWkHvQWD9LIutE=
|
||||
github.com/charmbracelet/bubbles v0.20.0/go.mod h1:39slydyswPy+uVOHZ5x/GjwVAFkCsV8IIVy+4MhzwwU=
|
||||
github.com/charmbracelet/bubbletea v1.3.3 h1:WpU6fCY0J2vDWM3zfS3vIDi/ULq3SYphZhkAGGvmEUY=
|
||||
github.com/charmbracelet/bubbletea v1.3.3/go.mod h1:dtcUCyCGEX3g9tosuYiut3MXgY/Jsv9nKVdibKKRRXo=
|
||||
github.com/charmbracelet/lipgloss v1.0.0 h1:O7VkGDvqEdGi93X+DeqsQ7PKHDgtQfF8j8/O2qFMQNg=
|
||||
github.com/charmbracelet/lipgloss v1.0.0/go.mod h1:U5fy9Z+C38obMs+T+tJqst9VGzlOYGj4ri9reL3qUlo=
|
||||
github.com/charmbracelet/x/ansi v0.8.0 h1:9GTq3xq9caJW8ZrBTe0LIe2fvfLR/bYXKTx2llXn7xE=
|
||||
github.com/charmbracelet/x/ansi v0.8.0/go.mod h1:wdYl/ONOLHLIVmQaxbIYEC/cRKOQyjTkowiI4blgS9Q=
|
||||
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
|
||||
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
|
||||
github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=
|
||||
github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
|
||||
github.com/containerd/console v1.0.4 h1:F2g4+oChYvBTsASRTz8NP6iIAi97J3TtSAsLbIFn4ro=
|
||||
github.com/containerd/console v1.0.4/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk=
|
||||
github.com/containerd/containerd v1.7.27 h1:yFyEyojddO3MIGVER2xJLWoCIn+Up4GaHFquP7hsFII=
|
||||
github.com/containerd/containerd v1.7.27/go.mod h1:xZmPnl75Vc+BLGt4MIfu6bp+fy03gdHAn9bz+FreFR0=
|
||||
github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI=
|
||||
|
@ -210,12 +208,14 @@ github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQ
|
|||
github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw=
|
||||
github.com/emicklei/go-restful/v3 v3.12.1 h1:PJMDIM/ak7btuL8Ex0iYET9hxM3CI2sjZtzpL63nKAU=
|
||||
github.com/emicklei/go-restful/v3 v3.12.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
|
||||
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4=
|
||||
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM=
|
||||
github.com/evanphx/json-patch v5.9.11+incompatible h1:ixHHqfcGvxhWkniF1tWxBHA0yb4Z+d1UQi45df52xW8=
|
||||
github.com/evanphx/json-patch v5.9.11+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
||||
github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
|
||||
github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
|
||||
github.com/evertras/bubble-table v0.15.2 h1:hVj27V9tk5TD5p6mVv0RK/KJu2sHq0U+mBMux/HptkU=
|
||||
github.com/evertras/bubble-table v0.15.2/go.mod h1:SPOZKbIpyYWPHBNki3fyNpiPBQkvkULAtOT7NTD5fKY=
|
||||
github.com/evertras/bubble-table v0.17.1 h1:HJwq3iQrZulXDE93ZcqJNiUVQCBbN4IJ2CkB/IxO3kk=
|
||||
github.com/evertras/bubble-table v0.17.1/go.mod h1:ifHujS1YxwnYSOgcR2+m3GnJ84f7CVU/4kUOxUCjEbQ=
|
||||
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f h1:Wl78ApPPB2Wvf/TIe2xdyJxTlb6obmF18d8QdkxNDu4=
|
||||
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f/go.mod h1:OSYXu++VVOHnXeitef/D8n/6y4QV8uLHSFXX4NeXMGc=
|
||||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
|
||||
|
@ -287,7 +287,6 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
|
|||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
||||
|
@ -379,13 +378,10 @@ github.com/hetznercloud/hcloud-go/v2 v2.21.1 h1:IH3liW8/cCRjfJ4cyqYvw3s1ek+KWP8d
|
|||
github.com/hetznercloud/hcloud-go/v2 v2.21.1/go.mod h1:XOaYycZJ3XKMVWzmqQ24/+1V7ormJHmPdck/kxrNnQA=
|
||||
github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI=
|
||||
github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
|
||||
github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
|
||||
github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
|
||||
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
||||
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||
github.com/jacksontj/memberlistmesh v0.0.0-20190905163944-93462b9d2bb7 h1:q9rwMYjPWIFOSijnxXre4+RGo8xS0NVbJzXg+F0NMHc=
|
||||
github.com/jacksontj/memberlistmesh v0.0.0-20190905163944-93462b9d2bb7/go.mod h1:fFX3XoduobgoJsVtpzIFRTgKZAbNhsSJIDNOgeUU5g4=
|
||||
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
|
||||
github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24 h1:liMMTbpW34dhU4az1GN0pTPADwNmvoRSeoZ6PItiqnY=
|
||||
github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
|
||||
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
|
||||
|
@ -432,8 +428,8 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D
|
|||
github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4=
|
||||
github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
|
||||
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
|
||||
github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
|
||||
github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
||||
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
|
||||
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
||||
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
|
||||
github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso=
|
||||
|
@ -466,14 +462,14 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G
|
|||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0=
|
||||
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4=
|
||||
github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b h1:1XF24mVaiu7u+CFywTdcDo2ie1pzzhwjt6RHqzpMU34=
|
||||
github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho=
|
||||
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI=
|
||||
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo=
|
||||
github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
|
||||
github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
|
||||
github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=
|
||||
github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=
|
||||
github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
|
||||
github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
|
||||
github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
|
||||
github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||
|
@ -545,8 +541,9 @@ github.com/redis/go-redis/extra/redisotel/v9 v9.0.5/go.mod h1:WZjPDy7VNzn77AAfnA
|
|||
github.com/redis/go-redis/v9 v9.8.0 h1:q3nRvjrlge/6UD7eTu/DSg2uYiU2mCL0G/uzBWqhicI=
|
||||
github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw=
|
||||
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
|
||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
|
||||
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
||||
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
|
||||
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
|
||||
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
|
||||
|
@ -554,8 +551,8 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD
|
|||
github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||
github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo=
|
||||
github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k=
|
||||
github.com/sahilm/fuzzy v0.1.0 h1:FzWGaw2Opqyu+794ZQ9SYifWv2EIXpwP4q8dY1kDAwI=
|
||||
github.com/sahilm/fuzzy v0.1.0/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y=
|
||||
github.com/sahilm/fuzzy v0.1.1 h1:ceu5RHF8DGgoi+/dR5PsECjCDH1BE3Fnmpo7aVXOdRA=
|
||||
github.com/sahilm/fuzzy v0.1.1/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y=
|
||||
github.com/samber/lo v1.50.0 h1:XrG0xOeHs+4FQ8gJR97zDz5uOFMW7OwFWiFVzqopKgY=
|
||||
github.com/samber/lo v1.50.0/go.mod h1:RjZyNk6WSnUFRKK6EyOhsRJMqft3G+pg7dCWHQCWvsc=
|
||||
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33 h1:KhF0WejiUTDbL5X55nXowP7zNopwpowa6qaMAWyIE+0=
|
||||
|
@ -683,8 +680,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY
|
|||
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
|
||||
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
|
||||
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
|
||||
golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM=
|
||||
golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U=
|
||||
golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
|
||||
golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
|
||||
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o=
|
||||
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8=
|
||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
|
@ -694,8 +691,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
|||
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||
golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w=
|
||||
golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
|
||||
golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ=
|
||||
golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=
|
||||
golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
|
@ -712,8 +709,8 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
|||
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
|
||||
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
|
||||
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
|
||||
golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw=
|
||||
golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA=
|
||||
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
|
||||
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
|
||||
golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
|
||||
golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
|
@ -727,8 +724,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
|||
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8=
|
||||
golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
|
||||
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
|
@ -745,6 +742,7 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||
golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
|
@ -756,8 +754,8 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|||
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
|
||||
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||
golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
|
||||
golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
|
@ -767,8 +765,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
|
|||
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
|
||||
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
|
||||
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
|
||||
golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg=
|
||||
golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ=
|
||||
golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4=
|
||||
golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
|
@ -779,8 +777,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
|||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
||||
golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M=
|
||||
golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA=
|
||||
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
|
||||
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
|
||||
golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE=
|
||||
golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
|
@ -794,8 +792,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc
|
|||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
|
||||
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
|
||||
golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo=
|
||||
golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg=
|
||||
golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg=
|
||||
golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
|
|
|
@ -161,9 +161,10 @@ generate_k8s_hashes 1.27 16
|
|||
generate_k8s_hashes 1.28 15
|
||||
generate_k8s_hashes 1.29 15
|
||||
generate_k8s_hashes 1.30 14
|
||||
generate_k8s_hashes 1.31 11
|
||||
generate_k8s_hashes 1.32 7
|
||||
generate_k8s_hashes 1.33 3
|
||||
generate_k8s_hashes 1.31 12
|
||||
generate_k8s_hashes 1.32 8
|
||||
generate_k8s_hashes 1.33 4
|
||||
generate_k8s_hashes 1.34 0
|
||||
|
||||
# Generate runc hashes.
|
||||
# The first argument is the major and minor version, the second is the maximum patch version.
|
||||
|
|
163
hack/go.mod
163
hack/go.mod
|
@ -1,11 +1,11 @@
|
|||
module k8s.io/kops/hack
|
||||
|
||||
go 1.24.4
|
||||
go 1.25.0
|
||||
|
||||
require (
|
||||
github.com/client9/misspell v0.3.4
|
||||
github.com/golangci/golangci-lint v1.64.8
|
||||
golang.org/x/tools v0.34.0
|
||||
github.com/golangci/golangci-lint/v2 v2.4.0
|
||||
golang.org/x/tools v0.36.0
|
||||
honnef.co/go/tools v0.6.1
|
||||
sigs.k8s.io/controller-tools v0.18.0
|
||||
)
|
||||
|
@ -13,52 +13,64 @@ require (
|
|||
require (
|
||||
4d63.com/gocheckcompilerdirectives v1.3.0 // indirect
|
||||
4d63.com/gochecknoglobals v0.2.2 // indirect
|
||||
github.com/4meepo/tagalign v1.4.2 // indirect
|
||||
github.com/Abirdcfly/dupword v0.1.3 // indirect
|
||||
github.com/Antonboom/errname v1.0.0 // indirect
|
||||
github.com/Antonboom/nilnil v1.0.1 // indirect
|
||||
github.com/Antonboom/testifylint v1.5.2 // indirect
|
||||
github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect
|
||||
github.com/Crocmagnon/fatcontext v0.7.1 // indirect
|
||||
codeberg.org/chavacava/garif v0.2.0 // indirect
|
||||
dev.gaijin.team/go/exhaustruct/v4 v4.0.0 // indirect
|
||||
dev.gaijin.team/go/golib v0.6.0 // indirect
|
||||
github.com/4meepo/tagalign v1.4.3 // indirect
|
||||
github.com/Abirdcfly/dupword v0.1.6 // indirect
|
||||
github.com/AlwxSin/noinlineerr v1.0.5 // indirect
|
||||
github.com/Antonboom/errname v1.1.0 // indirect
|
||||
github.com/Antonboom/nilnil v1.1.0 // indirect
|
||||
github.com/Antonboom/testifylint v1.6.1 // indirect
|
||||
github.com/BurntSushi/toml v1.5.0 // indirect
|
||||
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect
|
||||
github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 // indirect
|
||||
github.com/Masterminds/semver/v3 v3.3.0 // indirect
|
||||
github.com/Masterminds/semver/v3 v3.3.1 // indirect
|
||||
github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect
|
||||
github.com/alecthomas/chroma/v2 v2.20.0 // indirect
|
||||
github.com/alecthomas/go-check-sumtype v0.3.1 // indirect
|
||||
github.com/alexkohler/nakedret/v2 v2.0.5 // indirect
|
||||
github.com/alexkohler/nakedret/v2 v2.0.6 // indirect
|
||||
github.com/alexkohler/prealloc v1.0.0 // indirect
|
||||
github.com/alfatraining/structtag v1.0.0 // indirect
|
||||
github.com/alingse/asasalint v0.0.11 // indirect
|
||||
github.com/alingse/nilnesserr v0.1.2 // indirect
|
||||
github.com/ashanbrown/forbidigo v1.6.0 // indirect
|
||||
github.com/ashanbrown/makezero v1.2.0 // indirect
|
||||
github.com/alingse/nilnesserr v0.2.0 // indirect
|
||||
github.com/ashanbrown/forbidigo/v2 v2.1.0 // indirect
|
||||
github.com/ashanbrown/makezero/v2 v2.0.1 // indirect
|
||||
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/bkielbasa/cyclop v1.2.3 // indirect
|
||||
github.com/blizzy78/varnamelen v0.8.0 // indirect
|
||||
github.com/bombsimon/wsl/v4 v4.5.0 // indirect
|
||||
github.com/breml/bidichk v0.3.2 // indirect
|
||||
github.com/breml/errchkjson v0.4.0 // indirect
|
||||
github.com/butuzov/ireturn v0.3.1 // indirect
|
||||
github.com/bombsimon/wsl/v4 v4.7.0 // indirect
|
||||
github.com/bombsimon/wsl/v5 v5.1.1 // indirect
|
||||
github.com/breml/bidichk v0.3.3 // indirect
|
||||
github.com/breml/errchkjson v0.4.1 // indirect
|
||||
github.com/butuzov/ireturn v0.4.0 // indirect
|
||||
github.com/butuzov/mirror v1.3.0 // indirect
|
||||
github.com/catenacyber/perfsprint v0.8.2 // indirect
|
||||
github.com/ccojocar/zxcvbn-go v1.0.2 // indirect
|
||||
github.com/catenacyber/perfsprint v0.9.1 // indirect
|
||||
github.com/ccojocar/zxcvbn-go v1.0.4 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||
github.com/charithe/durationcheck v0.0.10 // indirect
|
||||
github.com/chavacava/garif v0.1.0 // indirect
|
||||
github.com/ckaznocha/intrange v0.3.0 // indirect
|
||||
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect
|
||||
github.com/charmbracelet/lipgloss v1.1.0 // indirect
|
||||
github.com/charmbracelet/x/ansi v0.8.0 // indirect
|
||||
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect
|
||||
github.com/charmbracelet/x/term v0.2.1 // indirect
|
||||
github.com/ckaznocha/intrange v0.3.1 // indirect
|
||||
github.com/curioswitch/go-reassign v0.3.0 // indirect
|
||||
github.com/daixiang0/gci v0.13.5 // indirect
|
||||
github.com/daixiang0/gci v0.13.7 // indirect
|
||||
github.com/dave/dst v0.27.3 // indirect
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||
github.com/denis-tingaikin/go-header v0.5.0 // indirect
|
||||
github.com/dlclark/regexp2 v1.11.5 // indirect
|
||||
github.com/ettle/strcase v0.2.0 // indirect
|
||||
github.com/fatih/color v1.18.0 // indirect
|
||||
github.com/fatih/structtag v1.2.0 // indirect
|
||||
github.com/firefart/nonamedreturns v1.0.5 // indirect
|
||||
github.com/firefart/nonamedreturns v1.0.6 // indirect
|
||||
github.com/fsnotify/fsnotify v1.7.0 // indirect
|
||||
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
|
||||
github.com/fzipp/gocyclo v0.6.0 // indirect
|
||||
github.com/ghostiam/protogetter v0.3.9 // indirect
|
||||
github.com/go-critic/go-critic v0.12.0 // indirect
|
||||
github.com/go-logr/logr v1.4.2 // indirect
|
||||
github.com/ghostiam/protogetter v0.3.15 // indirect
|
||||
github.com/go-critic/go-critic v0.13.0 // indirect
|
||||
github.com/go-logr/logr v1.4.3 // indirect
|
||||
github.com/go-openapi/jsonpointer v0.21.0 // indirect
|
||||
github.com/go-openapi/jsonreference v0.20.2 // indirect
|
||||
github.com/go-openapi/swag v0.23.0 // indirect
|
||||
|
@ -69,7 +81,7 @@ require (
|
|||
github.com/go-toolsmith/astp v1.1.0 // indirect
|
||||
github.com/go-toolsmith/strparse v1.1.0 // indirect
|
||||
github.com/go-toolsmith/typep v1.1.0 // indirect
|
||||
github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
|
||||
github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
|
||||
github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect
|
||||
github.com/gobuffalo/flect v1.0.3 // indirect
|
||||
github.com/gobwas/glob v0.2.3 // indirect
|
||||
|
@ -78,10 +90,12 @@ require (
|
|||
github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect
|
||||
github.com/golangci/go-printf-func-name v0.1.0 // indirect
|
||||
github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect
|
||||
github.com/golangci/misspell v0.6.0 // indirect
|
||||
github.com/golangci/plugin-module-register v0.1.1 // indirect
|
||||
github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 // indirect
|
||||
github.com/golangci/misspell v0.7.0 // indirect
|
||||
github.com/golangci/plugin-module-register v0.1.2 // indirect
|
||||
github.com/golangci/revgrep v0.8.0 // indirect
|
||||
github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed // indirect
|
||||
github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e // indirect
|
||||
github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e // indirect
|
||||
github.com/google/gnostic-models v0.6.9 // indirect
|
||||
github.com/google/go-cmp v0.7.0 // indirect
|
||||
github.com/gordonklaus/ineffassign v0.1.0 // indirect
|
||||
|
@ -95,9 +109,9 @@ require (
|
|||
github.com/hashicorp/hcl v1.0.1-vault-5 // indirect
|
||||
github.com/hexops/gotextdiff v1.0.3 // indirect
|
||||
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
||||
github.com/jgautheron/goconst v1.7.1 // indirect
|
||||
github.com/jgautheron/goconst v1.8.2 // indirect
|
||||
github.com/jingyugao/rowserrcheck v1.1.1 // indirect
|
||||
github.com/jjti/go-spancheck v0.6.4 // indirect
|
||||
github.com/jjti/go-spancheck v0.6.5 // indirect
|
||||
github.com/josharian/intern v1.0.0 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/julz/importas v0.2.0 // indirect
|
||||
|
@ -105,43 +119,46 @@ require (
|
|||
github.com/kisielk/errcheck v1.9.0 // indirect
|
||||
github.com/kkHAIKE/contextcheck v1.1.6 // indirect
|
||||
github.com/kulti/thelper v0.6.3 // indirect
|
||||
github.com/kunwardeep/paralleltest v1.0.10 // indirect
|
||||
github.com/kunwardeep/paralleltest v1.0.14 // indirect
|
||||
github.com/lasiar/canonicalheader v1.1.2 // indirect
|
||||
github.com/ldez/exptostd v0.4.2 // indirect
|
||||
github.com/ldez/gomoddirectives v0.6.1 // indirect
|
||||
github.com/ldez/grignotin v0.9.0 // indirect
|
||||
github.com/ldez/exptostd v0.4.4 // indirect
|
||||
github.com/ldez/gomoddirectives v0.7.0 // indirect
|
||||
github.com/ldez/grignotin v0.10.0 // indirect
|
||||
github.com/ldez/tagliatelle v0.7.1 // indirect
|
||||
github.com/ldez/usetesting v0.4.2 // indirect
|
||||
github.com/ldez/usetesting v0.5.0 // indirect
|
||||
github.com/leonklingele/grouper v1.1.2 // indirect
|
||||
github.com/macabu/inamedparam v0.1.3 // indirect
|
||||
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
|
||||
github.com/macabu/inamedparam v0.2.0 // indirect
|
||||
github.com/magiconair/properties v1.8.7 // indirect
|
||||
github.com/mailru/easyjson v0.7.7 // indirect
|
||||
github.com/manuelarte/embeddedstructfieldcheck v0.3.0 // indirect
|
||||
github.com/manuelarte/funcorder v0.5.0 // indirect
|
||||
github.com/maratori/testableexamples v1.0.0 // indirect
|
||||
github.com/maratori/testpackage v1.1.1 // indirect
|
||||
github.com/matoous/godox v1.1.0 // indirect
|
||||
github.com/mattn/go-colorable v0.1.14 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.16 // indirect
|
||||
github.com/mgechev/revive v1.7.0 // indirect
|
||||
github.com/mgechev/revive v1.11.0 // indirect
|
||||
github.com/mitchellh/go-homedir v1.1.0 // indirect
|
||||
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||
github.com/moricho/tparallel v0.3.2 // indirect
|
||||
github.com/muesli/termenv v0.16.0 // indirect
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
||||
github.com/nakabonne/nestif v0.3.1 // indirect
|
||||
github.com/nishanths/exhaustive v0.12.0 // indirect
|
||||
github.com/nishanths/predeclared v0.2.2 // indirect
|
||||
github.com/nunnatsa/ginkgolinter v0.19.1 // indirect
|
||||
github.com/olekukonko/tablewriter v0.0.5 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
|
||||
github.com/nunnatsa/ginkgolinter v0.20.0 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
|
||||
github.com/polyfloyd/go-errorlint v1.7.1 // indirect
|
||||
github.com/polyfloyd/go-errorlint v1.8.0 // indirect
|
||||
github.com/prometheus/client_golang v1.22.0 // indirect
|
||||
github.com/prometheus/client_model v0.6.1 // indirect
|
||||
github.com/prometheus/common v0.62.0 // indirect
|
||||
github.com/prometheus/procfs v0.15.1 // indirect
|
||||
github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 // indirect
|
||||
github.com/quasilyte/go-ruleguard v0.4.4 // indirect
|
||||
github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect
|
||||
github.com/quasilyte/gogrep v0.5.0 // indirect
|
||||
github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect
|
||||
|
@ -149,25 +166,24 @@ require (
|
|||
github.com/raeperd/recvcheck v0.2.0 // indirect
|
||||
github.com/rivo/uniseg v0.4.7 // indirect
|
||||
github.com/rogpeppe/go-internal v1.14.1 // indirect
|
||||
github.com/ryancurrah/gomodguard v1.3.5 // indirect
|
||||
github.com/ryancurrah/gomodguard v1.4.1 // indirect
|
||||
github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect
|
||||
github.com/sagikazarmark/locafero v0.4.0 // indirect
|
||||
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
|
||||
github.com/sanposhiho/wastedassign/v2 v2.1.0 // indirect
|
||||
github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect
|
||||
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect
|
||||
github.com/sashamelentyev/interfacebloat v1.1.0 // indirect
|
||||
github.com/sashamelentyev/usestdlibvars v1.28.0 // indirect
|
||||
github.com/securego/gosec/v2 v2.22.2 // indirect
|
||||
github.com/sashamelentyev/usestdlibvars v1.29.0 // indirect
|
||||
github.com/securego/gosec/v2 v2.22.7 // indirect
|
||||
github.com/sirupsen/logrus v1.9.3 // indirect
|
||||
github.com/sivchari/containedctx v1.0.3 // indirect
|
||||
github.com/sivchari/tenv v1.12.1 // indirect
|
||||
github.com/sonatard/noctx v0.1.0 // indirect
|
||||
github.com/sonatard/noctx v0.4.0 // indirect
|
||||
github.com/sourcegraph/conc v0.3.0 // indirect
|
||||
github.com/sourcegraph/go-diff v0.7.0 // indirect
|
||||
github.com/spf13/afero v1.12.0 // indirect
|
||||
github.com/spf13/afero v1.14.0 // indirect
|
||||
github.com/spf13/cast v1.7.0 // indirect
|
||||
github.com/spf13/cobra v1.9.1 // indirect
|
||||
github.com/spf13/pflag v1.0.6 // indirect
|
||||
github.com/spf13/pflag v1.0.7 // indirect
|
||||
github.com/spf13/viper v1.19.0 // indirect
|
||||
github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect
|
||||
github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect
|
||||
|
@ -175,34 +191,37 @@ require (
|
|||
github.com/stretchr/testify v1.10.0 // indirect
|
||||
github.com/subosito/gotenv v1.6.0 // indirect
|
||||
github.com/tdakkota/asciicheck v0.4.1 // indirect
|
||||
github.com/tetafro/godot v1.5.0 // indirect
|
||||
github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 // indirect
|
||||
github.com/timonwong/loggercheck v0.10.1 // indirect
|
||||
github.com/tomarrell/wrapcheck/v2 v2.10.0 // indirect
|
||||
github.com/tetafro/godot v1.5.1 // indirect
|
||||
github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 // indirect
|
||||
github.com/timonwong/loggercheck v0.11.0 // indirect
|
||||
github.com/tomarrell/wrapcheck/v2 v2.11.0 // indirect
|
||||
github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect
|
||||
github.com/ultraware/funlen v0.2.0 // indirect
|
||||
github.com/ultraware/whitespace v0.2.0 // indirect
|
||||
github.com/uudashr/gocognit v1.2.0 // indirect
|
||||
github.com/uudashr/iface v1.3.1 // indirect
|
||||
github.com/uudashr/iface v1.4.1 // indirect
|
||||
github.com/x448/float16 v0.8.4 // indirect
|
||||
github.com/xen0n/gosmopolitan v1.2.2 // indirect
|
||||
github.com/xen0n/gosmopolitan v1.3.0 // indirect
|
||||
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
|
||||
github.com/yagipy/maintidx v1.0.0 // indirect
|
||||
github.com/yeya24/promlinter v0.3.0 // indirect
|
||||
github.com/ykadowak/zerologlint v0.1.5 // indirect
|
||||
gitlab.com/bosi/decorder v0.4.2 // indirect
|
||||
go-simpler.org/musttag v0.13.0 // indirect
|
||||
go-simpler.org/sloglint v0.9.0 // indirect
|
||||
go-simpler.org/musttag v0.13.1 // indirect
|
||||
go-simpler.org/sloglint v0.11.1 // indirect
|
||||
go.augendre.info/arangolint v0.2.0 // indirect
|
||||
go.augendre.info/fatcontext v0.8.0 // indirect
|
||||
go.uber.org/automaxprocs v1.6.0 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
go.uber.org/zap v1.27.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect
|
||||
golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect
|
||||
golang.org/x/mod v0.25.0 // indirect
|
||||
golang.org/x/net v0.41.0 // indirect
|
||||
golang.org/x/sync v0.15.0 // indirect
|
||||
golang.org/x/sys v0.33.0 // indirect
|
||||
golang.org/x/text v0.26.0 // indirect
|
||||
google.golang.org/protobuf v1.36.5 // indirect
|
||||
golang.org/x/exp/typeparams v0.0.0-20250620022241-b7579e27df2b // indirect
|
||||
golang.org/x/mod v0.27.0 // indirect
|
||||
golang.org/x/net v0.43.0 // indirect
|
||||
golang.org/x/sync v0.16.0 // indirect
|
||||
golang.org/x/sys v0.35.0 // indirect
|
||||
golang.org/x/text v0.28.0 // indirect
|
||||
google.golang.org/protobuf v1.36.6 // indirect
|
||||
gopkg.in/inf.v0 v0.9.1 // indirect
|
||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
|
@ -215,8 +234,8 @@ require (
|
|||
k8s.io/klog/v2 v2.130.1 // indirect
|
||||
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect
|
||||
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect
|
||||
mvdan.cc/gofumpt v0.7.0 // indirect
|
||||
mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f // indirect
|
||||
mvdan.cc/gofumpt v0.8.0 // indirect
|
||||
mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4 // indirect
|
||||
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
|
||||
sigs.k8s.io/randfill v1.0.0 // indirect
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect
|
||||
|
|
358
hack/go.sum
358
hack/go.sum
|
@ -2,98 +2,122 @@
|
|||
4d63.com/gocheckcompilerdirectives v1.3.0/go.mod h1:ofsJ4zx2QAuIP/NO/NAh1ig6R1Fb18/GI7RVMwz7kAY=
|
||||
4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU=
|
||||
4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0=
|
||||
github.com/4meepo/tagalign v1.4.2 h1:0hcLHPGMjDyM1gHG58cS73aQF8J4TdVR96TZViorO9E=
|
||||
github.com/4meepo/tagalign v1.4.2/go.mod h1:+p4aMyFM+ra7nb41CnFG6aSDXqRxU/w1VQqScKqDARI=
|
||||
github.com/Abirdcfly/dupword v0.1.3 h1:9Pa1NuAsZvpFPi9Pqkd93I7LIYRURj+A//dFd5tgBeE=
|
||||
github.com/Abirdcfly/dupword v0.1.3/go.mod h1:8VbB2t7e10KRNdwTVoxdBaxla6avbhGzb8sCTygUMhw=
|
||||
github.com/Antonboom/errname v1.0.0 h1:oJOOWR07vS1kRusl6YRSlat7HFnb3mSfMl6sDMRoTBA=
|
||||
github.com/Antonboom/errname v1.0.0/go.mod h1:gMOBFzK/vrTiXN9Oh+HFs+e6Ndl0eTFbtsRTSRdXyGI=
|
||||
github.com/Antonboom/nilnil v1.0.1 h1:C3Tkm0KUxgfO4Duk3PM+ztPncTFlOf0b2qadmS0s4xs=
|
||||
github.com/Antonboom/nilnil v1.0.1/go.mod h1:CH7pW2JsRNFgEh8B2UaPZTEPhCMuFowP/e8Udp9Nnb0=
|
||||
github.com/Antonboom/testifylint v1.5.2 h1:4s3Xhuv5AvdIgbd8wOOEeo0uZG7PbDKQyKY5lGoQazk=
|
||||
github.com/Antonboom/testifylint v1.5.2/go.mod h1:vxy8VJ0bc6NavlYqjZfmp6EfqXMtBgQ4+mhCojwC1P8=
|
||||
github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs=
|
||||
github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
|
||||
github.com/Crocmagnon/fatcontext v0.7.1 h1:SC/VIbRRZQeQWj/TcQBS6JmrXcfA+BU4OGSVUt54PjM=
|
||||
github.com/Crocmagnon/fatcontext v0.7.1/go.mod h1:1wMvv3NXEBJucFGfwOJBxSVWcoIO6emV215SMkW9MFU=
|
||||
codeberg.org/chavacava/garif v0.2.0 h1:F0tVjhYbuOCnvNcU3YSpO6b3Waw6Bimy4K0mM8y6MfY=
|
||||
codeberg.org/chavacava/garif v0.2.0/go.mod h1:P2BPbVbT4QcvLZrORc2T29szK3xEOlnl0GiPTJmEqBQ=
|
||||
dev.gaijin.team/go/exhaustruct/v4 v4.0.0 h1:873r7aNneqoBB3IaFIzhvt2RFYTuHgmMjoKfwODoI1Y=
|
||||
dev.gaijin.team/go/exhaustruct/v4 v4.0.0/go.mod h1:aZ/k2o4Y05aMJtiux15x8iXaumE88YdiB0Ai4fXOzPI=
|
||||
dev.gaijin.team/go/golib v0.6.0 h1:v6nnznFTs4bppib/NyU1PQxobwDHwCXXl15P7DV5Zgo=
|
||||
dev.gaijin.team/go/golib v0.6.0/go.mod h1:uY1mShx8Z/aNHWDyAkZTkX+uCi5PdX7KsG1eDQa2AVE=
|
||||
github.com/4meepo/tagalign v1.4.3 h1:Bnu7jGWwbfpAie2vyl63Zup5KuRv21olsPIha53BJr8=
|
||||
github.com/4meepo/tagalign v1.4.3/go.mod h1:00WwRjiuSbrRJnSVeGWPLp2epS5Q/l4UEy0apLLS37c=
|
||||
github.com/Abirdcfly/dupword v0.1.6 h1:qeL6u0442RPRe3mcaLcbaCi2/Y/hOcdtw6DE9odjz9c=
|
||||
github.com/Abirdcfly/dupword v0.1.6/go.mod h1:s+BFMuL/I4YSiFv29snqyjwzDp4b65W2Kvy+PKzZ6cw=
|
||||
github.com/AlwxSin/noinlineerr v1.0.5 h1:RUjt63wk1AYWTXtVXbSqemlbVTb23JOSRiNsshj7TbY=
|
||||
github.com/AlwxSin/noinlineerr v1.0.5/go.mod h1:+QgkkoYrMH7RHvcdxdlI7vYYEdgeoFOVjU9sUhw/rQc=
|
||||
github.com/Antonboom/errname v1.1.0 h1:A+ucvdpMwlo/myWrkHEUEBWc/xuXdud23S8tmTb/oAE=
|
||||
github.com/Antonboom/errname v1.1.0/go.mod h1:O1NMrzgUcVBGIfi3xlVuvX8Q/VP/73sseCaAppfjqZw=
|
||||
github.com/Antonboom/nilnil v1.1.0 h1:jGxJxjgYS3VUUtOTNk8Z1icwT5ESpLH/426fjmQG+ng=
|
||||
github.com/Antonboom/nilnil v1.1.0/go.mod h1:b7sAlogQjFa1wV8jUW3o4PMzDVFLbTux+xnQdvzdcIE=
|
||||
github.com/Antonboom/testifylint v1.6.1 h1:6ZSytkFWatT8mwZlmRCHkWz1gPi+q6UBSbieji2Gj/o=
|
||||
github.com/Antonboom/testifylint v1.6.1/go.mod h1:k+nEkathI2NFjKO6HvwmSrbzUcQ6FAnbZV+ZRrnXPLI=
|
||||
github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg=
|
||||
github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
|
||||
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM=
|
||||
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs=
|
||||
github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 h1:Sz1JIXEcSfhz7fUi7xHnhpIE0thVASYjvosApmHuD2k=
|
||||
github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1/go.mod h1:n/LSCXNuIYqVfBlVXyHfMQkZDdp1/mmxfSjADd3z1Zg=
|
||||
github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0=
|
||||
github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
|
||||
github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4=
|
||||
github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
|
||||
github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4=
|
||||
github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo=
|
||||
github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
|
||||
github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
|
||||
github.com/alecthomas/chroma/v2 v2.20.0 h1:sfIHpxPyR07/Oylvmcai3X/exDlE8+FA820NTz+9sGw=
|
||||
github.com/alecthomas/chroma/v2 v2.20.0/go.mod h1:e7tViK0xh/Nf4BYHl00ycY6rV7b8iXBksI9E359yNmA=
|
||||
github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsrxJb4Aq31NLkU=
|
||||
github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E=
|
||||
github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
|
||||
github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
|
||||
github.com/alexkohler/nakedret/v2 v2.0.5 h1:fP5qLgtwbx9EJE8dGEERT02YwS8En4r9nnZ71RK+EVU=
|
||||
github.com/alexkohler/nakedret/v2 v2.0.5/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU=
|
||||
github.com/alecthomas/repr v0.5.1 h1:E3G4t2QbHTSNpPKBgMTln5KLkZHLOcU7r37J4pXBuIg=
|
||||
github.com/alecthomas/repr v0.5.1/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
|
||||
github.com/alexkohler/nakedret/v2 v2.0.6 h1:ME3Qef1/KIKr3kWX3nti3hhgNxw6aqN5pZmQiFSsuzQ=
|
||||
github.com/alexkohler/nakedret/v2 v2.0.6/go.mod h1:l3RKju/IzOMQHmsEvXwkqMDzHHvurNQfAgE1eVmT40Q=
|
||||
github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw=
|
||||
github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE=
|
||||
github.com/alfatraining/structtag v1.0.0 h1:2qmcUqNcCoyVJ0up879K614L9PazjBSFruTB0GOFjCc=
|
||||
github.com/alfatraining/structtag v1.0.0/go.mod h1:p3Xi5SwzTi+Ryj64DqjLWz7XurHxbGsq6y3ubePJPus=
|
||||
github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw=
|
||||
github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I=
|
||||
github.com/alingse/nilnesserr v0.1.2 h1:Yf8Iwm3z2hUUrP4muWfW83DF4nE3r1xZ26fGWUKCZlo=
|
||||
github.com/alingse/nilnesserr v0.1.2/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg=
|
||||
github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY=
|
||||
github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU=
|
||||
github.com/ashanbrown/makezero v1.2.0 h1:/2Lp1bypdmK9wDIq7uWBlDF1iMUpIIS4A+pF6C9IEUU=
|
||||
github.com/ashanbrown/makezero v1.2.0/go.mod h1:dxlPhHbDMC6N6xICzFBSK+4njQDdK8euNO0qjQMtGY4=
|
||||
github.com/alingse/nilnesserr v0.2.0 h1:raLem5KG7EFVb4UIDAXgrv3N2JIaffeKNtcEXkEWd/w=
|
||||
github.com/alingse/nilnesserr v0.2.0/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg=
|
||||
github.com/ashanbrown/forbidigo/v2 v2.1.0 h1:NAxZrWqNUQiDz19FKScQ/xvwzmij6BiOw3S0+QUQ+Hs=
|
||||
github.com/ashanbrown/forbidigo/v2 v2.1.0/go.mod h1:0zZfdNAuZIL7rSComLGthgc/9/n2FqspBOH90xlCHdA=
|
||||
github.com/ashanbrown/makezero/v2 v2.0.1 h1:r8GtKetWOgoJ4sLyUx97UTwyt2dO7WkGFHizn/Lo8TY=
|
||||
github.com/ashanbrown/makezero/v2 v2.0.1/go.mod h1:kKU4IMxmYW1M4fiEHMb2vc5SFoPzXvgbMR9gIp5pjSw=
|
||||
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
|
||||
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
|
||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
||||
github.com/bkielbasa/cyclop v1.2.3 h1:faIVMIGDIANuGPWH031CZJTi2ymOQBULs9H21HSMa5w=
|
||||
github.com/bkielbasa/cyclop v1.2.3/go.mod h1:kHTwA9Q0uZqOADdupvcFJQtp/ksSnytRMe8ztxG8Fuo=
|
||||
github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M=
|
||||
github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k=
|
||||
github.com/bombsimon/wsl/v4 v4.5.0 h1:iZRsEvDdyhd2La0FVi5k6tYehpOR/R7qIUjmKk7N74A=
|
||||
github.com/bombsimon/wsl/v4 v4.5.0/go.mod h1:NOQ3aLF4nD7N5YPXMruR6ZXDOAqLoM0GEpLwTdvmOSc=
|
||||
github.com/breml/bidichk v0.3.2 h1:xV4flJ9V5xWTqxL+/PMFF6dtJPvZLPsyixAoPe8BGJs=
|
||||
github.com/breml/bidichk v0.3.2/go.mod h1:VzFLBxuYtT23z5+iVkamXO386OB+/sVwZOpIj6zXGos=
|
||||
github.com/breml/errchkjson v0.4.0 h1:gftf6uWZMtIa/Is3XJgibewBm2ksAQSY/kABDNFTAdk=
|
||||
github.com/breml/errchkjson v0.4.0/go.mod h1:AuBOSTHyLSaaAFlWsRSuRBIroCh3eh7ZHh5YeelDIk8=
|
||||
github.com/butuzov/ireturn v0.3.1 h1:mFgbEI6m+9W8oP/oDdfA34dLisRFCj2G6o/yiI1yZrY=
|
||||
github.com/butuzov/ireturn v0.3.1/go.mod h1:ZfRp+E7eJLC0NQmk1Nrm1LOrn/gQlOykv+cVPdiXH5M=
|
||||
github.com/bombsimon/wsl/v4 v4.7.0 h1:1Ilm9JBPRczjyUs6hvOPKvd7VL1Q++PL8M0SXBDf+jQ=
|
||||
github.com/bombsimon/wsl/v4 v4.7.0/go.mod h1:uV/+6BkffuzSAVYD+yGyld1AChO7/EuLrCF/8xTiapg=
|
||||
github.com/bombsimon/wsl/v5 v5.1.1 h1:cQg5KJf9FlctAH4cpL9vLKnziYknoCMCdqXl0wjl72Q=
|
||||
github.com/bombsimon/wsl/v5 v5.1.1/go.mod h1:Gp8lD04z27wm3FANIUPZycXp+8huVsn0oxc+n4qfV9I=
|
||||
github.com/breml/bidichk v0.3.3 h1:WSM67ztRusf1sMoqH6/c4OBCUlRVTKq+CbSeo0R17sE=
|
||||
github.com/breml/bidichk v0.3.3/go.mod h1:ISbsut8OnjB367j5NseXEGGgO/th206dVa427kR8YTE=
|
||||
github.com/breml/errchkjson v0.4.1 h1:keFSS8D7A2T0haP9kzZTi7o26r7kE3vymjZNeNDRDwg=
|
||||
github.com/breml/errchkjson v0.4.1/go.mod h1:a23OvR6Qvcl7DG/Z4o0el6BRAjKnaReoPQFciAl9U3s=
|
||||
github.com/butuzov/ireturn v0.4.0 h1:+s76bF/PfeKEdbG8b54aCocxXmi0wvYdOVsWxVO7n8E=
|
||||
github.com/butuzov/ireturn v0.4.0/go.mod h1:ghI0FrCmap8pDWZwfPisFD1vEc56VKH4NpQUxDHta70=
|
||||
github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc=
|
||||
github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI=
|
||||
github.com/catenacyber/perfsprint v0.8.2 h1:+o9zVmCSVa7M4MvabsWvESEhpsMkhfE7k0sHNGL95yw=
|
||||
github.com/catenacyber/perfsprint v0.8.2/go.mod h1:q//VWC2fWbcdSLEY1R3l8n0zQCDPdE4IjZwyY1HMunM=
|
||||
github.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg=
|
||||
github.com/ccojocar/zxcvbn-go v1.0.2/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60=
|
||||
github.com/catenacyber/perfsprint v0.9.1 h1:5LlTp4RwTooQjJCvGEFV6XksZvWE7wCOUvjD2z0vls0=
|
||||
github.com/catenacyber/perfsprint v0.9.1/go.mod h1:q//VWC2fWbcdSLEY1R3l8n0zQCDPdE4IjZwyY1HMunM=
|
||||
github.com/ccojocar/zxcvbn-go v1.0.4 h1:FWnCIRMXPj43ukfX000kvBZvV6raSxakYr1nzyNrUcc=
|
||||
github.com/ccojocar/zxcvbn-go v1.0.4/go.mod h1:3GxGX+rHmueTUMvm5ium7irpyjmm7ikxYFOSJB21Das=
|
||||
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
|
||||
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4=
|
||||
github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ=
|
||||
github.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc=
|
||||
github.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+UIPD+Gww=
|
||||
github.com/ckaznocha/intrange v0.3.0 h1:VqnxtK32pxgkhJgYQEeOArVidIPg+ahLP7WBOXZd5ZY=
|
||||
github.com/ckaznocha/intrange v0.3.0/go.mod h1:+I/o2d2A1FBHgGELbGxzIcyd3/9l9DuwjM8FsbSS3Lo=
|
||||
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs=
|
||||
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk=
|
||||
github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY=
|
||||
github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30=
|
||||
github.com/charmbracelet/x/ansi v0.8.0 h1:9GTq3xq9caJW8ZrBTe0LIe2fvfLR/bYXKTx2llXn7xE=
|
||||
github.com/charmbracelet/x/ansi v0.8.0/go.mod h1:wdYl/ONOLHLIVmQaxbIYEC/cRKOQyjTkowiI4blgS9Q=
|
||||
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0GVL4jeHEwG5YOXDmi86oYw2yuYUGqz6a8sLwg0X8=
|
||||
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs=
|
||||
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
|
||||
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
|
||||
github.com/ckaznocha/intrange v0.3.1 h1:j1onQyXvHUsPWujDH6WIjhyH26gkRt/txNlV7LspvJs=
|
||||
github.com/ckaznocha/intrange v0.3.1/go.mod h1:QVepyz1AkUoFQkpEqksSYpNpUo3c5W7nWh/s6SHIJJk=
|
||||
github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs=
|
||||
github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88=
|
||||
github.com/daixiang0/gci v0.13.5 h1:kThgmH1yBmZSBCh1EJVxQ7JsHpm5Oms0AMed/0LaH4c=
|
||||
github.com/daixiang0/gci v0.13.5/go.mod h1:12etP2OniiIdP4q+kjUGrC/rUagga7ODbqsom5Eo5Yk=
|
||||
github.com/daixiang0/gci v0.13.7 h1:+0bG5eK9vlI08J+J/NWGbWPTNiXPG4WhNLJOkSxWITQ=
|
||||
github.com/daixiang0/gci v0.13.7/go.mod h1:812WVN6JLFY9S6Tv76twqmNqevN0pa3SX3nih0brVzQ=
|
||||
github.com/dave/dst v0.27.3 h1:P1HPoMza3cMEquVf9kKy8yXsFirry4zEnWOdYPOoIzY=
|
||||
github.com/dave/dst v0.27.3/go.mod h1:jHh6EOibnHgcUW3WjKHisiooEkYwqpHLBSX1iOBhEyc=
|
||||
github.com/dave/jennifer v1.7.1 h1:B4jJJDHelWcDhlRQxWeo0Npa/pYKBLrirAQoTN45txo=
|
||||
github.com/dave/jennifer v1.7.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8=
|
||||
github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY=
|
||||
github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI=
|
||||
github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
|
||||
github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ=
|
||||
github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
|
||||
github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q=
|
||||
github.com/ettle/strcase v0.2.0/go.mod h1:DajmHElDSaX76ITe3/VHVyMin4LWSJN5Z909Wp+ED1A=
|
||||
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
|
||||
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
|
||||
github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=
|
||||
github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
|
||||
github.com/firefart/nonamedreturns v1.0.5 h1:tM+Me2ZaXs8tfdDw3X6DOX++wMCOqzYUho6tUTYIdRA=
|
||||
github.com/firefart/nonamedreturns v1.0.5/go.mod h1:gHJjDqhGM4WyPt639SOZs+G89Ko7QKH5R5BhnO6xJhw=
|
||||
github.com/firefart/nonamedreturns v1.0.6 h1:vmiBcKV/3EqKY3ZiPxCINmpS431OcE1S47AQUwhrg8E=
|
||||
github.com/firefart/nonamedreturns v1.0.6/go.mod h1:R8NisJnSIpvPWheCq0mNRXJok6D8h7fagJTF8EMEwCo=
|
||||
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
|
||||
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
|
||||
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
|
||||
|
@ -102,12 +126,12 @@ github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv
|
|||
github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
|
||||
github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo=
|
||||
github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA=
|
||||
github.com/ghostiam/protogetter v0.3.9 h1:j+zlLLWzqLay22Cz/aYwTHKQ88GE2DQ6GkWSYFOI4lQ=
|
||||
github.com/ghostiam/protogetter v0.3.9/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA=
|
||||
github.com/go-critic/go-critic v0.12.0 h1:iLosHZuye812wnkEz1Xu3aBwn5ocCPfc9yqmFG9pa6w=
|
||||
github.com/go-critic/go-critic v0.12.0/go.mod h1:DpE0P6OVc6JzVYzmM5gq5jMU31zLr4am5mB/VfFK64w=
|
||||
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
|
||||
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||
github.com/ghostiam/protogetter v0.3.15 h1:1KF5sXel0HE48zh1/vn0Loiw25A9ApyseLzQuif1mLY=
|
||||
github.com/ghostiam/protogetter v0.3.15/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA=
|
||||
github.com/go-critic/go-critic v0.13.0 h1:kJzM7wzltQasSUXtYyTl6UaPVySO6GkaR1thFnJ6afY=
|
||||
github.com/go-critic/go-critic v0.13.0/go.mod h1:M/YeuJ3vOCQDnP2SU+ZhjgRzwzcBW87JqLpMJLrZDLI=
|
||||
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
|
||||
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
|
||||
github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
|
||||
github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
|
||||
|
@ -139,8 +163,8 @@ github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQi
|
|||
github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ=
|
||||
github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus=
|
||||
github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig=
|
||||
github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss=
|
||||
github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
|
||||
github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs=
|
||||
github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
|
||||
github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUWY=
|
||||
github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM=
|
||||
github.com/gobuffalo/flect v1.0.3 h1:xeWBM2nui+qnVvNM4S3foBhCAL2XgPU+a7FdpelbTq4=
|
||||
|
@ -157,29 +181,32 @@ github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUP
|
|||
github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s=
|
||||
github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE=
|
||||
github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY=
|
||||
github.com/golangci/golangci-lint v1.64.8 h1:y5TdeVidMtBGG32zgSC7ZXTFNHrsJkDnpO4ItB3Am+I=
|
||||
github.com/golangci/golangci-lint v1.64.8/go.mod h1:5cEsUQBSr6zi8XI8OjmcY2Xmliqc4iYL7YoPrL+zLJ4=
|
||||
github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs=
|
||||
github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo=
|
||||
github.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c=
|
||||
github.com/golangci/plugin-module-register v0.1.1/go.mod h1:TTpqoB6KkwOJMV8u7+NyXMrkwwESJLOkfl9TxR1DGFc=
|
||||
github.com/golangci/golangci-lint/v2 v2.4.0 h1:qz6O6vr7kVzXJqyvHjHSz5fA3D+PM8v96QU5gxZCNWM=
|
||||
github.com/golangci/golangci-lint/v2 v2.4.0/go.mod h1:Oq7vuAf6L1iNL34uHDcsIF6Mnc0amOPdsT3/GlpHD+I=
|
||||
github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 h1:AkK+w9FZBXlU/xUmBtSJN1+tAI4FIvy5WtnUnY8e4p8=
|
||||
github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95/go.mod h1:k9mmcyWKSTMcPPvQUCfRWWQ9VHJ1U9Dc0R7kaXAgtnQ=
|
||||
github.com/golangci/misspell v0.7.0 h1:4GOHr/T1lTW0hhR4tgaaV1WS/lJ+ncvYCoFKmqJsj0c=
|
||||
github.com/golangci/misspell v0.7.0/go.mod h1:WZyyI2P3hxPY2UVHs3cS8YcllAeyfquQcKfdeE9AFVg=
|
||||
github.com/golangci/plugin-module-register v0.1.2 h1:e5WM6PO6NIAEcij3B053CohVp3HIYbzSuP53UAYgOpg=
|
||||
github.com/golangci/plugin-module-register v0.1.2/go.mod h1:1+QGTsKBvAIvPvoY/os+G5eoqxWn70HYDm2uvUyGuVw=
|
||||
github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2s=
|
||||
github.com/golangci/revgrep v0.8.0/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k=
|
||||
github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed h1:IURFTjxeTfNFP0hTEi1YKjB/ub8zkpaOqFFMApi2EAs=
|
||||
github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed/go.mod h1:XLXN8bNw4CGRPaqgl3bv/lhz7bsGPh4/xSaMTbo2vkQ=
|
||||
github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e h1:ai0EfmVYE2bRA5htgAG9r7s3tHsfjIhN98WshBTJ9jM=
|
||||
github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e/go.mod h1:Vrn4B5oR9qRwM+f54koyeH3yzphlecwERs0el27Fr/s=
|
||||
github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e h1:gD6P7NEo7Eqtt0ssnqSJNNndxe69DOQ24A5h7+i3KpM=
|
||||
github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e/go.mod h1:h+wZwLjUTJnm/P2rwlbJdRPZXOzaT36/FwnPnY2inzc=
|
||||
github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw=
|
||||
github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw=
|
||||
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
||||
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg=
|
||||
github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
|
||||
github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a h1://KbezygeMJZCSHH+HgUZiTeSoiuFspbMg1ge+eFj18=
|
||||
github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA=
|
||||
github.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s=
|
||||
github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0=
|
||||
github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk=
|
||||
|
@ -210,12 +237,12 @@ github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUq
|
|||
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
|
||||
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
||||
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||
github.com/jgautheron/goconst v1.7.1 h1:VpdAG7Ca7yvvJk5n8dMwQhfEZJh95kl/Hl9S1OI5Jkk=
|
||||
github.com/jgautheron/goconst v1.7.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4=
|
||||
github.com/jgautheron/goconst v1.8.2 h1:y0XF7X8CikZ93fSNT6WBTb/NElBu9IjaY7CCYQrCMX4=
|
||||
github.com/jgautheron/goconst v1.8.2/go.mod h1:A0oxgBCHy55NQn6sYpO7UdnA9p+h7cPtoOZUmvNIako=
|
||||
github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs=
|
||||
github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c=
|
||||
github.com/jjti/go-spancheck v0.6.4 h1:Tl7gQpYf4/TMU7AT84MN83/6PutY21Nb9fuQjFTpRRc=
|
||||
github.com/jjti/go-spancheck v0.6.4/go.mod h1:yAEYdKJ2lRkDA8g7X+oKUHXOWVAXSBJRv04OhF+QUjk=
|
||||
github.com/jjti/go-spancheck v0.6.5 h1:lmi7pKxa37oKYIMScialXUK6hP3iY5F1gu+mLBPgYB8=
|
||||
github.com/jjti/go-spancheck v0.6.5/go.mod h1:aEogkeatBrbYsyW6y5TgDfihCulDYciL1B7rG2vSsrU=
|
||||
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
|
||||
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
|
||||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||
|
@ -239,28 +266,34 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
|||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs=
|
||||
github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I=
|
||||
github.com/kunwardeep/paralleltest v1.0.10 h1:wrodoaKYzS2mdNVnc4/w31YaXFtsc21PCTdvWJ/lDDs=
|
||||
github.com/kunwardeep/paralleltest v1.0.10/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY=
|
||||
github.com/kunwardeep/paralleltest v1.0.14 h1:wAkMoMeGX/kGfhQBPODT/BL8XhK23ol/nuQ3SwFaUw8=
|
||||
github.com/kunwardeep/paralleltest v1.0.14/go.mod h1:di4moFqtfz3ToSKxhNjhOZL+696QtJGCFe132CbBLGk=
|
||||
github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4=
|
||||
github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI=
|
||||
github.com/ldez/exptostd v0.4.2 h1:l5pOzHBz8mFOlbcifTxzfyYbgEmoUqjxLFHZkjlbHXs=
|
||||
github.com/ldez/exptostd v0.4.2/go.mod h1:iZBRYaUmcW5jwCR3KROEZ1KivQQp6PHXbDPk9hqJKCQ=
|
||||
github.com/ldez/gomoddirectives v0.6.1 h1:Z+PxGAY+217f/bSGjNZr/b2KTXcyYLgiWI6geMBN2Qc=
|
||||
github.com/ldez/gomoddirectives v0.6.1/go.mod h1:cVBiu3AHR9V31em9u2kwfMKD43ayN5/XDgr+cdaFaKs=
|
||||
github.com/ldez/grignotin v0.9.0 h1:MgOEmjZIVNn6p5wPaGp/0OKWyvq42KnzAt/DAb8O4Ow=
|
||||
github.com/ldez/grignotin v0.9.0/go.mod h1:uaVTr0SoZ1KBii33c47O1M8Jp3OP3YDwhZCmzT9GHEk=
|
||||
github.com/ldez/exptostd v0.4.4 h1:58AtQjnLcT/tI5W/1KU7xE/O7zW9RAWB6c/ScQAnfus=
|
||||
github.com/ldez/exptostd v0.4.4/go.mod h1:QfdzPw6oHjFVdNV7ILoPu5sw3OZ3OG1JS0I5JN3J4Js=
|
||||
github.com/ldez/gomoddirectives v0.7.0 h1:EOx8Dd56BZYSez11LVgdj025lKwlP0/E5OLSl9HDwsY=
|
||||
github.com/ldez/gomoddirectives v0.7.0/go.mod h1:wR4v8MN9J8kcwvrkzrx6sC9xe9Cp68gWYCsda5xvyGc=
|
||||
github.com/ldez/grignotin v0.10.0 h1:NQPeh1E/Eza4F0exCeC1WkpnLvgUcQDT8MQ1vOLML0E=
|
||||
github.com/ldez/grignotin v0.10.0/go.mod h1:oR4iCKUP9fwoeO6vCQeD7M5SMxCT6xdVas4vg0h1LaI=
|
||||
github.com/ldez/tagliatelle v0.7.1 h1:bTgKjjc2sQcsgPiT902+aadvMjCeMHrY7ly2XKFORIk=
|
||||
github.com/ldez/tagliatelle v0.7.1/go.mod h1:3zjxUpsNB2aEZScWiZTHrAXOl1x25t3cRmzfK1mlo2I=
|
||||
github.com/ldez/usetesting v0.4.2 h1:J2WwbrFGk3wx4cZwSMiCQQ00kjGR0+tuuyW0Lqm4lwA=
|
||||
github.com/ldez/usetesting v0.4.2/go.mod h1:eEs46T3PpQ+9RgN9VjpY6qWdiw2/QmfiDeWmdZdrjIQ=
|
||||
github.com/ldez/usetesting v0.5.0 h1:3/QtzZObBKLy1F4F8jLuKJiKBjjVFi1IavpoWbmqLwc=
|
||||
github.com/ldez/usetesting v0.5.0/go.mod h1:Spnb4Qppf8JTuRgblLrEWb7IE6rDmUpGvxY3iRrzvDQ=
|
||||
github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY=
|
||||
github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA=
|
||||
github.com/macabu/inamedparam v0.1.3 h1:2tk/phHkMlEL/1GNe/Yf6kkR/hkcUdAEY3L0hjYV1Mk=
|
||||
github.com/macabu/inamedparam v0.1.3/go.mod h1:93FLICAIk/quk7eaPPQvbzihUdn/QkGDwIZEoLtpH6I=
|
||||
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
|
||||
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
|
||||
github.com/macabu/inamedparam v0.2.0 h1:VyPYpOc10nkhI2qeNUdh3Zket4fcZjEWe35poddBCpE=
|
||||
github.com/macabu/inamedparam v0.2.0/go.mod h1:+Pee9/YfGe5LJ62pYXqB89lJ+0k5bsR8Wgz/C0Zlq3U=
|
||||
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
|
||||
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
|
||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
|
||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
|
||||
github.com/manuelarte/embeddedstructfieldcheck v0.3.0 h1:VhGqK8gANDvFYDxQkjPbv7/gDJtsGU9k6qj/hC2hgso=
|
||||
github.com/manuelarte/embeddedstructfieldcheck v0.3.0/go.mod h1:LSo/IQpPfx1dXMcX4ibZCYA7Yy6ayZHIaOGM70+1Wy8=
|
||||
github.com/manuelarte/funcorder v0.5.0 h1:llMuHXXbg7tD0i/LNw8vGnkDTHFpTnWqKPI85Rknc+8=
|
||||
github.com/manuelarte/funcorder v0.5.0/go.mod h1:Yt3CiUQthSBMBxjShjdXMexmzpP8YGvGLjrxJNkO2hA=
|
||||
github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI=
|
||||
github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE=
|
||||
github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04=
|
||||
|
@ -273,11 +306,10 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP
|
|||
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
|
||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
||||
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
|
||||
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
||||
github.com/mgechev/revive v1.7.0 h1:JyeQ4yO5K8aZhIKf5rec56u0376h8AlKNQEmjfkjKlY=
|
||||
github.com/mgechev/revive v1.7.0/go.mod h1:qZnwcNhoguE58dfi96IJeSTPeZQejNeoMQLUZGi4SW4=
|
||||
github.com/mgechev/revive v1.11.0 h1:b/gLLpBE427o+Xmd8G58gSA+KtBwxWinH/A565Awh0w=
|
||||
github.com/mgechev/revive v1.11.0/go.mod h1:tI0oLF/2uj+InHCBLrrqfTKfjtFTBCFFfG05auyzgdw=
|
||||
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
||||
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
|
||||
|
@ -289,6 +321,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G
|
|||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||
github.com/moricho/tparallel v0.3.2 h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKHTI=
|
||||
github.com/moricho/tparallel v0.3.2/go.mod h1:OQ+K3b4Ln3l2TZveGCywybl68glfLEwFGqvnjok8b+U=
|
||||
github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
|
||||
github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||
github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U=
|
||||
|
@ -297,16 +331,14 @@ github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhK
|
|||
github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs=
|
||||
github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk=
|
||||
github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c=
|
||||
github.com/nunnatsa/ginkgolinter v0.19.1 h1:mjwbOlDQxZi9Cal+KfbEJTCz327OLNfwNvoZ70NJ+c4=
|
||||
github.com/nunnatsa/ginkgolinter v0.19.1/go.mod h1:jkQ3naZDmxaZMXPWaS9rblH+i+GWXQCaS/JFIWcOH2s=
|
||||
github.com/nunnatsa/ginkgolinter v0.20.0 h1:OmWLkAFO2HUTYcU6mprnKud1Ey5pVdiVNYGO5HVicx8=
|
||||
github.com/nunnatsa/ginkgolinter v0.20.0/go.mod h1:dCIuFlTPfQerXgGUju3VygfAFPdC5aE1mdacCDKDJcQ=
|
||||
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
|
||||
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
|
||||
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
|
||||
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
|
||||
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
|
||||
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
|
||||
github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU=
|
||||
github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk=
|
||||
github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus=
|
||||
github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8=
|
||||
github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y=
|
||||
github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0=
|
||||
github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw=
|
||||
|
@ -316,13 +348,13 @@ github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJ
|
|||
github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs=
|
||||
github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo=
|
||||
github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc=
|
||||
github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=
|
||||
github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
|
||||
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
|
||||
github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/polyfloyd/go-errorlint v1.7.1 h1:RyLVXIbosq1gBdk/pChWA8zWYLsq9UEw7a1L5TVMCnA=
|
||||
github.com/polyfloyd/go-errorlint v1.7.1/go.mod h1:aXjNb1x2TNhoLsk26iv1yl7a+zTnXPhwEMtEXukiLR8=
|
||||
github.com/polyfloyd/go-errorlint v1.8.0 h1:DL4RestQqRLr8U4LygLw8g2DX6RN1eBJOpa2mzsrl1Q=
|
||||
github.com/polyfloyd/go-errorlint v1.8.0/go.mod h1:G2W0Q5roxbLCt0ZQbdoxQxXktTjwNyDbEaj3n7jvl4s=
|
||||
github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=
|
||||
github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
|
||||
github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
|
||||
|
@ -333,8 +365,8 @@ github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ
|
|||
github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I=
|
||||
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
|
||||
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
|
||||
github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 h1:+Wl/0aFp0hpuHM3H//KMft64WQ1yX9LdJY64Qm/gFCo=
|
||||
github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1/go.mod h1:GJLgqsLeo4qgavUoL8JeGFNS7qcisx3awV/w9eWTmNI=
|
||||
github.com/quasilyte/go-ruleguard v0.4.4 h1:53DncefIeLX3qEpjzlS1lyUmQoUEeOWPFWqaTJq9eAQ=
|
||||
github.com/quasilyte/go-ruleguard v0.4.4/go.mod h1:Vl05zJ538vcEEwu16V/Hdu7IYZWyKSwIy4c88Ro1kRE=
|
||||
github.com/quasilyte/go-ruleguard/dsl v0.3.22 h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe60+5DqOpCjPE=
|
||||
github.com/quasilyte/go-ruleguard/dsl v0.3.22/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU=
|
||||
github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo=
|
||||
|
@ -351,8 +383,8 @@ github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUc
|
|||
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
|
||||
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
|
||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||
github.com/ryancurrah/gomodguard v1.3.5 h1:cShyguSwUEeC0jS7ylOiG/idnd1TpJ1LfHGpV3oJmPU=
|
||||
github.com/ryancurrah/gomodguard v1.3.5/go.mod h1:MXlEPQRxgfPQa62O8wzK3Ozbkv9Rkqr+wKjSxTdsNJE=
|
||||
github.com/ryancurrah/gomodguard v1.4.1 h1:eWC8eUMNZ/wM/PWuZBv7JxxqT5fiIKSIyTvjb7Elr+g=
|
||||
github.com/ryancurrah/gomodguard v1.4.1/go.mod h1:qnMJwV1hX9m+YJseXEBhd2s90+1Xn6x9dLz11ualI1I=
|
||||
github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU=
|
||||
github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ=
|
||||
github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ=
|
||||
|
@ -361,37 +393,38 @@ github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6g
|
|||
github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
|
||||
github.com/sanposhiho/wastedassign/v2 v2.1.0 h1:crurBF7fJKIORrV85u9UUpePDYGWnwvv3+A96WvwXT0=
|
||||
github.com/sanposhiho/wastedassign/v2 v2.1.0/go.mod h1:+oSmSC+9bQ+VUAxA66nBb0Z7N8CK7mscKTDYC6aIek4=
|
||||
github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 h1:PKK9DyHxif4LZo+uQSgXNqs0jj5+xZwwfKHgph2lxBw=
|
||||
github.com/santhosh-tekuri/jsonschema/v6 v6.0.1/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU=
|
||||
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEVZGK7IN2kJkjTuQ=
|
||||
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU=
|
||||
github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw=
|
||||
github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ=
|
||||
github.com/sashamelentyev/usestdlibvars v1.28.0 h1:jZnudE2zKCtYlGzLVreNp5pmCdOxXUzwsMDBkR21cyQ=
|
||||
github.com/sashamelentyev/usestdlibvars v1.28.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8=
|
||||
github.com/securego/gosec/v2 v2.22.2 h1:IXbuI7cJninj0nRpZSLCUlotsj8jGusohfONMrHoF6g=
|
||||
github.com/securego/gosec/v2 v2.22.2/go.mod h1:UEBGA+dSKb+VqM6TdehR7lnQtIIMorYJ4/9CW1KVQBE=
|
||||
github.com/sashamelentyev/usestdlibvars v1.29.0 h1:8J0MoRrw4/NAXtjQqTHrbW9NN+3iMf7Knkq057v4XOQ=
|
||||
github.com/sashamelentyev/usestdlibvars v1.29.0/go.mod h1:8PpnjHMk5VdeWlVb4wCdrB8PNbLqZ3wBZTZWkrpZZL8=
|
||||
github.com/securego/gosec/v2 v2.22.7 h1:8/9P+oTYI4yIpAzccQKVsg1/90Po+JzGtAhqoHImDeM=
|
||||
github.com/securego/gosec/v2 v2.22.7/go.mod h1:510TFNDMrIPytokyHQAVLvPeDr41Yihn2ak8P+XQfNE=
|
||||
github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
|
||||
github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
|
||||
github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk=
|
||||
github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ=
|
||||
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
||||
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
||||
github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE=
|
||||
github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4=
|
||||
github.com/sivchari/tenv v1.12.1 h1:+E0QzjktdnExv/wwsnnyk4oqZBUfuh89YMQT1cyuvSY=
|
||||
github.com/sivchari/tenv v1.12.1/go.mod h1:1LjSOUCc25snIr5n3DtGGrENhX3LuWefcplwVGC24mw=
|
||||
github.com/sonatard/noctx v0.1.0 h1:JjqOc2WN16ISWAjAk8M5ej0RfExEXtkEyExl2hLW+OM=
|
||||
github.com/sonatard/noctx v0.1.0/go.mod h1:0RvBxqY8D4j9cTTTWE8ylt2vqj2EPI8fHmrxHdsaZ2c=
|
||||
github.com/sonatard/noctx v0.4.0 h1:7MC/5Gg4SQ4lhLYR6mvOP6mQVSxCrdyiExo7atBs27o=
|
||||
github.com/sonatard/noctx v0.4.0/go.mod h1:64XdbzFb18XL4LporKXp8poqZtPKbCrqQ402CV+kJas=
|
||||
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
|
||||
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
|
||||
github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0=
|
||||
github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs=
|
||||
github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs=
|
||||
github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4=
|
||||
github.com/spf13/afero v1.14.0 h1:9tH6MapGnn/j0eb0yIXiLjERO8RB6xIVZRDCX7PtqWA=
|
||||
github.com/spf13/afero v1.14.0/go.mod h1:acJQ8t0ohCGuMN3O+Pv0V0hgMxNYDlvdk+VTfyZmbYo=
|
||||
github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w=
|
||||
github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
|
||||
github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
|
||||
github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
|
||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
|
||||
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M=
|
||||
github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI=
|
||||
github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg=
|
||||
github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0=
|
||||
|
@ -405,12 +438,10 @@ github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
|
|||
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
||||
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
|
||||
|
@ -421,14 +452,14 @@ github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA
|
|||
github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0=
|
||||
github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag=
|
||||
github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY=
|
||||
github.com/tetafro/godot v1.5.0 h1:aNwfVI4I3+gdxjMgYPus9eHmoBeJIbnajOyqZYStzuw=
|
||||
github.com/tetafro/godot v1.5.0/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio=
|
||||
github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 h1:y4mJRFlM6fUyPhoXuFg/Yu02fg/nIPFMOY8tOqppoFg=
|
||||
github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460=
|
||||
github.com/timonwong/loggercheck v0.10.1 h1:uVZYClxQFpw55eh+PIoqM7uAOHMrhVcDoWDery9R8Lg=
|
||||
github.com/timonwong/loggercheck v0.10.1/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8=
|
||||
github.com/tomarrell/wrapcheck/v2 v2.10.0 h1:SzRCryzy4IrAH7bVGG4cK40tNUhmVmMDuJujy4XwYDg=
|
||||
github.com/tomarrell/wrapcheck/v2 v2.10.0/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo=
|
||||
github.com/tetafro/godot v1.5.1 h1:PZnjCol4+FqaEzvZg5+O8IY2P3hfY9JzRBNPv1pEDS4=
|
||||
github.com/tetafro/godot v1.5.1/go.mod h1:cCdPtEndkmqqrhiCfkmxDodMQJ/f3L1BCNskCUZdTwk=
|
||||
github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 h1:9LPGD+jzxMlnk5r6+hJnar67cgpDIz/iyD+rfl5r2Vk=
|
||||
github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460=
|
||||
github.com/timonwong/loggercheck v0.11.0 h1:jdaMpYBl+Uq9mWPXv1r8jc5fC3gyXx4/WGwTnnNKn4M=
|
||||
github.com/timonwong/loggercheck v0.11.0/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8=
|
||||
github.com/tomarrell/wrapcheck/v2 v2.11.0 h1:BJSt36snX9+4WTIXeJ7nvHBQBcm1h2SjQMSlmQ6aFSU=
|
||||
github.com/tomarrell/wrapcheck/v2 v2.11.0/go.mod h1:wFL9pDWDAbXhhPZZt+nG8Fu+h29TtnZ2MW6Lx4BRXIU=
|
||||
github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw=
|
||||
github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw=
|
||||
github.com/ultraware/funlen v0.2.0 h1:gCHmCn+d2/1SemTdYMiKLAHFYxTYz7z9VIDRaTGyLkI=
|
||||
|
@ -437,12 +468,14 @@ github.com/ultraware/whitespace v0.2.0 h1:TYowo2m9Nfj1baEQBjuHzvMRbp19i+RCcRYrSW
|
|||
github.com/ultraware/whitespace v0.2.0/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8=
|
||||
github.com/uudashr/gocognit v1.2.0 h1:3BU9aMr1xbhPlvJLSydKwdLN3tEUUrzPSSM8S4hDYRA=
|
||||
github.com/uudashr/gocognit v1.2.0/go.mod h1:k/DdKPI6XBZO1q7HgoV2juESI2/Ofj9AcHPZhBBdrTU=
|
||||
github.com/uudashr/iface v1.3.1 h1:bA51vmVx1UIhiIsQFSNq6GZ6VPTk3WNMZgRiCe9R29U=
|
||||
github.com/uudashr/iface v1.3.1/go.mod h1:4QvspiRd3JLPAEXBQ9AiZpLbJlrWWgRChOKDJEuQTdg=
|
||||
github.com/uudashr/iface v1.4.1 h1:J16Xl1wyNX9ofhpHmQ9h9gk5rnv2A6lX/2+APLTo0zU=
|
||||
github.com/uudashr/iface v1.4.1/go.mod h1:pbeBPlbuU2qkNDn0mmfrxP2X+wjPMIQAy+r1MBXSXtg=
|
||||
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
|
||||
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
|
||||
github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU=
|
||||
github.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg=
|
||||
github.com/xen0n/gosmopolitan v1.3.0 h1:zAZI1zefvo7gcpbCOrPSHJZJYA9ZgLfJqtKzZ5pHqQM=
|
||||
github.com/xen0n/gosmopolitan v1.3.0/go.mod h1:rckfr5T6o4lBtM1ga7mLGKZmLxswUoH1zxHgNXOsEt4=
|
||||
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
|
||||
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
|
||||
github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM=
|
||||
github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk=
|
||||
github.com/yeya24/promlinter v0.3.0 h1:JVDbMp08lVCP7Y6NP3qHroGAO6z2yGKQtS5JsjqtoFs=
|
||||
|
@ -460,10 +493,14 @@ gitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo=
|
|||
gitlab.com/bosi/decorder v0.4.2/go.mod h1:muuhHoaJkA9QLcYHq4Mj8FJUwDZ+EirSHRiaTcTf6T8=
|
||||
go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ=
|
||||
go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28=
|
||||
go-simpler.org/musttag v0.13.0 h1:Q/YAW0AHvaoaIbsPj3bvEI5/QFP7w696IMUpnKXQfCE=
|
||||
go-simpler.org/musttag v0.13.0/go.mod h1:FTzIGeK6OkKlUDVpj0iQUXZLUO1Js9+mvykDQy9C5yM=
|
||||
go-simpler.org/sloglint v0.9.0 h1:/40NQtjRx9txvsB/RN022KsUJU+zaaSb/9q9BSefSrE=
|
||||
go-simpler.org/sloglint v0.9.0/go.mod h1:G/OrAF6uxj48sHahCzrbarVMptL2kjWTaUeC8+fOGww=
|
||||
go-simpler.org/musttag v0.13.1 h1:lw2sJyu7S1X8lc8zWUAdH42y+afdcCnHhWpnkWvd6vU=
|
||||
go-simpler.org/musttag v0.13.1/go.mod h1:8r450ehpMLQgvpb6sg+hV5Ur47eH6olp/3yEanfG97k=
|
||||
go-simpler.org/sloglint v0.11.1 h1:xRbPepLT/MHPTCA6TS/wNfZrDzkGvCCqUv4Bdwc3H7s=
|
||||
go-simpler.org/sloglint v0.11.1/go.mod h1:2PowwiCOK8mjiF+0KGifVOT8ZsCNiFzvfyJeJOIt8MQ=
|
||||
go.augendre.info/arangolint v0.2.0 h1:2NP/XudpPmfBhQKX4rMk+zDYIj//qbt4hfZmSSTcpj8=
|
||||
go.augendre.info/arangolint v0.2.0/go.mod h1:Vx4KSJwu48tkE+8uxuf0cbBnAPgnt8O1KWiT7bljq7w=
|
||||
go.augendre.info/fatcontext v0.8.0 h1:2dfk6CQbDGeu1YocF59Za5Pia7ULeAM6friJ3LP7lmk=
|
||||
go.augendre.info/fatcontext v0.8.0/go.mod h1:oVJfMgwngMsHO+KB2MdgzcO+RvtNdiCEOlWvSFtax/s=
|
||||
go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
|
||||
go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
|
||||
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
|
||||
|
@ -482,21 +519,19 @@ golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWB
|
|||
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY=
|
||||
golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
|
||||
golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
|
||||
golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac h1:TSSpLIG4v+p0rPv1pNOQtl1I8knsO4S9trOxNMOLVP4=
|
||||
golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
|
||||
golang.org/x/exp/typeparams v0.0.0-20250620022241-b7579e27df2b h1:KdrhdYPDUvJTvrDK9gdjfFd6JTk8vA1WJoldYSi0kHo=
|
||||
golang.org/x/exp/typeparams v0.0.0-20250620022241-b7579e27df2b/go.mod h1:LKZHyeOpPuZcMgxeHjJp4p5yvxrCX1xDvH10zYHhjjQ=
|
||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||
golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w=
|
||||
golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
|
||||
golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ=
|
||||
golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
|
@ -506,14 +541,12 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
|
|||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
|
||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
|
||||
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
||||
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
|
||||
golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
|
||||
golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw=
|
||||
golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA=
|
||||
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
|
||||
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
|
@ -523,8 +556,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ
|
|||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
||||
golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
||||
golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8=
|
||||
golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
|
||||
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
|
@ -540,19 +573,16 @@ golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
|
||||
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||
golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
|
||||
golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
|
||||
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
|
||||
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
|
||||
golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
|
||||
|
@ -561,13 +591,11 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
|||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
||||
golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M=
|
||||
golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA=
|
||||
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
|
||||
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
|
||||
|
@ -583,19 +611,21 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
|||
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||
golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k=
|
||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||
golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
|
||||
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
|
||||
golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg=
|
||||
golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo=
|
||||
golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg=
|
||||
golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg=
|
||||
golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s=
|
||||
golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM=
|
||||
golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY=
|
||||
golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM=
|
||||
golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated/go.mod h1:RVAQXBGNv1ib0J382/DPCRS/BPnsGebyM1Gj5VSDpG8=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
|
||||
google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
|
||||
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
|
||||
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||
|
@ -629,10 +659,10 @@ k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff h1:/usPimJzUKKu+m+TE36gUy
|
|||
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff/go.mod h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8=
|
||||
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro=
|
||||
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
|
||||
mvdan.cc/gofumpt v0.7.0 h1:bg91ttqXmi9y2xawvkuMXyvAA/1ZGJqYAEGjXuP0JXU=
|
||||
mvdan.cc/gofumpt v0.7.0/go.mod h1:txVFJy/Sc/mvaycET54pV8SW8gWxTlUuGHVEcncmNUo=
|
||||
mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f h1:lMpcwN6GxNbWtbpI1+xzFLSW8XzX0u72NttUGVFjO3U=
|
||||
mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f/go.mod h1:RSLa7mKKCNeTTMHBw5Hsy2rfJmd6O2ivt9Dw9ZqCQpQ=
|
||||
mvdan.cc/gofumpt v0.8.0 h1:nZUCeC2ViFaerTcYKstMmfysj6uhQrA2vJe+2vwGU6k=
|
||||
mvdan.cc/gofumpt v0.8.0/go.mod h1:vEYnSzyGPmjvFkqJWtXkh79UwPWP9/HMxQdGEXZHjpg=
|
||||
mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4 h1:WjUu4yQoT5BHT1w8Zu56SP8367OuBV5jvo+4Ulppyf8=
|
||||
mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4/go.mod h1:rthT7OuvRbaGcd5ginj6dA2oLE7YNlta9qhBNNdCaLE=
|
||||
sigs.k8s.io/controller-tools v0.18.0 h1:rGxGZCZTV2wJreeRgqVoWab/mfcumTMmSwKzoM9xrsE=
|
||||
sigs.k8s.io/controller-tools v0.18.0/go.mod h1:gLKoiGBriyNh+x1rWtUQnakUYEujErjXs9pf+x/8n1U=
|
||||
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8=
|
||||
|
|
|
@ -25,5 +25,5 @@ import (
|
|||
|
||||
_ "sigs.k8s.io/controller-tools/cmd/controller-gen"
|
||||
|
||||
_ "github.com/golangci/golangci-lint/cmd/golangci-lint"
|
||||
_ "github.com/golangci/golangci-lint/v2/cmd/golangci-lint"
|
||||
)
|
||||
|
|
|
@ -28,9 +28,11 @@ export GOBIN="${TOOLS_BIN}"
|
|||
PATH="${GOBIN}:${PATH}"
|
||||
|
||||
# Install golangci-lint
|
||||
if ! command -v golangci-lint &> /dev/null; then
|
||||
if ! command -v golangci-lint &>/dev/null; then
|
||||
cd "${KOPS_ROOT}/hack" || exit 1
|
||||
go install github.com/golangci/golangci-lint/cmd/golangci-lint
|
||||
go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint
|
||||
GOLANGCI_LINT_VERSION=$(go list -m -f '{{.Version}}' github.com/golangci/golangci-lint/v2)
|
||||
echo "golangci-lint version: ${GOLANGCI_LINT_VERSION}"
|
||||
fi
|
||||
|
||||
cd "${KOPS_ROOT}"
|
||||
|
@ -39,9 +41,9 @@ cd "${KOPS_ROOT}"
|
|||
echo 'running golangci-lint ' >&2
|
||||
res=0
|
||||
if [[ "$#" -gt 0 ]]; then
|
||||
golangci-lint run "$@" >&2 || res=$?
|
||||
golangci-lint run "$@" >&2 || res=$?
|
||||
else
|
||||
golangci-lint run ./... >&2 || res=$?
|
||||
golangci-lint run ./... >&2 || res=$?
|
||||
fi
|
||||
|
||||
# print a message based on the result
|
||||
|
|
|
@ -897,6 +897,12 @@ spec:
|
|||
description: ConfigOverride is the complete containerd config
|
||||
file provided by the user.
|
||||
type: string
|
||||
installCriCtl:
|
||||
description: InstallCriCtl installs crictl (default "false").
|
||||
type: boolean
|
||||
installNerdCtl:
|
||||
description: InstallNerdCtl installs nerdctl (default "false").
|
||||
type: boolean
|
||||
logLevel:
|
||||
description: LogLevel controls the logging details [trace, debug,
|
||||
info, warn, error, fatal, panic] (default "info").
|
||||
|
|
|
@ -133,6 +133,12 @@ spec:
|
|||
description: ConfigOverride is the complete containerd config
|
||||
file provided by the user.
|
||||
type: string
|
||||
installCriCtl:
|
||||
description: InstallCriCtl installs crictl (default "false").
|
||||
type: boolean
|
||||
installNerdCtl:
|
||||
description: InstallNerdCtl installs nerdctl (default "false").
|
||||
type: boolean
|
||||
logLevel:
|
||||
description: LogLevel controls the logging details [trace, debug,
|
||||
info, warn, error, fatal, panic] (default "info").
|
||||
|
|
|
@ -173,6 +173,7 @@ nav:
|
|||
- Ports: "contributing/ports.md"
|
||||
- Cluster Addons & Manager : "contributing/addons.md"
|
||||
- Releases:
|
||||
- "1.33": releases/1.33-NOTES.md
|
||||
- "1.32": releases/1.32-NOTES.md
|
||||
- "1.31": releases/1.31-NOTES.md
|
||||
- "1.30": releases/1.30-NOTES.md
|
||||
|
|
|
@ -33,6 +33,11 @@ type CrictlBuilder struct {
|
|||
var _ fi.NodeupModelBuilder = &CrictlBuilder{}
|
||||
|
||||
func (b *CrictlBuilder) Build(c *fi.NodeupModelBuilderContext) error {
|
||||
if b.skipInstall() {
|
||||
klog.V(8).Info("won't install crictl")
|
||||
return nil
|
||||
}
|
||||
|
||||
assets := b.Assets.FindMatches(regexp.MustCompile(`^crictl$`))
|
||||
if len(assets) == 0 {
|
||||
klog.Warning("unable to find any crictl binaries in assets")
|
||||
|
@ -65,3 +70,13 @@ func (b *CrictlBuilder) binaryPath() string {
|
|||
}
|
||||
return path
|
||||
}
|
||||
|
||||
func (b *CrictlBuilder) skipInstall() bool {
|
||||
containerd := b.NodeupConfig.ContainerdConfig
|
||||
|
||||
if containerd == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
return containerd.SkipInstall && !containerd.InstallCriCtl
|
||||
}
|
||||
|
|
|
@ -795,7 +795,7 @@ func (b *KubeAPIServerBuilder) buildPod(ctx context.Context, kubeAPIServer *kops
|
|||
}
|
||||
|
||||
for _, path := range b.SSLHostPaths() {
|
||||
name := strings.Replace(path, "/", "", -1)
|
||||
name := strings.ReplaceAll(path, "/", "")
|
||||
kubemanifest.AddHostPathMapping(pod, container, name, path)
|
||||
}
|
||||
|
||||
|
|
|
@ -261,7 +261,7 @@ func (b *KubeControllerManagerBuilder) buildPod(kcm *kops.KubeControllerManagerC
|
|||
container.Args = append(container.Args, sortedStrings(flags)...)
|
||||
}
|
||||
for _, path := range b.SSLHostPaths() {
|
||||
name := strings.Replace(path, "/", "", -1)
|
||||
name := strings.ReplaceAll(path, "/", "")
|
||||
kubemanifest.AddHostPathMapping(pod, container, name, path)
|
||||
}
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ func TestTaintsApplied(t *testing.T) {
|
|||
expectTaints []string
|
||||
}{
|
||||
{
|
||||
version: "1.28.0",
|
||||
version: "1.29.0",
|
||||
taints: []string{"foo", "bar", "baz"},
|
||||
expectTaints: []string{"foo", "bar", "baz", "node-role.kubernetes.io/control-plane=:NoSchedule"},
|
||||
},
|
||||
|
@ -101,8 +101,8 @@ func TestTaintsApplied(t *testing.T) {
|
|||
}
|
||||
|
||||
func stringSlicesEqual(exp, other []string) bool {
|
||||
sort.Sort(sort.StringSlice(exp))
|
||||
sort.Sort(sort.StringSlice(other))
|
||||
sort.Strings(exp)
|
||||
sort.Strings(other)
|
||||
if exp == nil && other != nil {
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ package model
|
|||
|
||||
import (
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
|
@ -33,24 +34,28 @@ var _ fi.NodeupModelBuilder = &NerdctlBuilder{}
|
|||
|
||||
func (b *NerdctlBuilder) Build(c *fi.NodeupModelBuilderContext) error {
|
||||
if b.skipInstall() {
|
||||
klog.Info("containerd.skipInstall is set to true; won't install nerdctl")
|
||||
klog.V(8).Info("won't install nerdctl")
|
||||
return nil
|
||||
}
|
||||
|
||||
assetName := "nerdctl"
|
||||
assetPath := ""
|
||||
asset, err := b.Assets.Find(assetName, assetPath)
|
||||
if err != nil {
|
||||
klog.Warningf("unable to locate asset %q: %v", assetName, err)
|
||||
assets := b.Assets.FindMatches(regexp.MustCompile(`^nerdctl$`))
|
||||
if len(assets) == 0 {
|
||||
klog.Warning("unable to find any nerdctl binaries in assets")
|
||||
return nil
|
||||
}
|
||||
if len(assets) > 1 {
|
||||
klog.Warning("multiple nerdctl binaries are found")
|
||||
return nil
|
||||
}
|
||||
|
||||
c.AddTask(&nodetasks.File{
|
||||
Path: b.nerdctlPath(),
|
||||
Contents: asset,
|
||||
Type: nodetasks.FileType_File,
|
||||
Mode: s("0755"),
|
||||
})
|
||||
for k, v := range assets {
|
||||
c.AddTask(&nodetasks.File{
|
||||
Path: filepath.Join(b.binaryPath(), k),
|
||||
Contents: v,
|
||||
Type: nodetasks.FileType_File,
|
||||
Mode: s("0755"),
|
||||
})
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
@ -64,19 +69,14 @@ func (b *NerdctlBuilder) binaryPath() string {
|
|||
path = "/home/kubernetes/bin"
|
||||
}
|
||||
return path
|
||||
|
||||
}
|
||||
|
||||
func (b *NerdctlBuilder) nerdctlPath() string {
|
||||
return filepath.Join(b.binaryPath(), "nerdctl")
|
||||
}
|
||||
|
||||
func (b *NerdctlBuilder) skipInstall() bool {
|
||||
d := b.NodeupConfig.ContainerdConfig
|
||||
containerd := b.NodeupConfig.ContainerdConfig
|
||||
|
||||
if d == nil {
|
||||
if containerd == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
return d.SkipInstall
|
||||
return containerd.SkipInstall && !containerd.InstallNerdCtl
|
||||
}
|
||||
|
|
|
@ -35,21 +35,21 @@ var _ fi.NodeupModelBuilder = &PackagesBuilder{}
|
|||
func (b *PackagesBuilder) Build(c *fi.NodeupModelBuilderContext) error {
|
||||
// kubelet needs:
|
||||
// conntrack - kops #5671
|
||||
// ebtables - kops #1711
|
||||
// ethtool - kops #1830
|
||||
if b.Distribution.IsDebianFamily() {
|
||||
// From containerd: https://github.com/containerd/cri/blob/master/contrib/ansible/tasks/bootstrap_ubuntu.yaml
|
||||
c.AddTask(&nodetasks.Package{Name: "bridge-utils"})
|
||||
c.AddTask(&nodetasks.Package{Name: "cgroupfs-mount"})
|
||||
if (b.Distribution.IsDebian() && b.Distribution.Version() < 13) || (b.Distribution.IsUbuntu() && b.Distribution.Version() < 25.10) {
|
||||
c.AddTask(&nodetasks.Package{Name: "cgroupfs-mount"})
|
||||
}
|
||||
c.AddTask(&nodetasks.Package{Name: "conntrack"})
|
||||
c.AddTask(&nodetasks.Package{Name: "ebtables"})
|
||||
c.AddTask(&nodetasks.Package{Name: "ethtool"})
|
||||
c.AddTask(&nodetasks.Package{Name: "iptables"})
|
||||
c.AddTask(&nodetasks.Package{Name: "libapparmor1"})
|
||||
c.AddTask(&nodetasks.Package{Name: "libseccomp2"})
|
||||
c.AddTask(&nodetasks.Package{Name: "libltdl7"})
|
||||
if b.NodeupConfig.KubeProxy != nil && fi.ValueOf(b.NodeupConfig.KubeProxy.Enabled) && b.NodeupConfig.KubeProxy.ProxyMode == "nftables" {
|
||||
c.AddTask(&nodetasks.Package{Name: "nftables"})
|
||||
}
|
||||
c.AddTask(&nodetasks.Package{Name: "pigz"})
|
||||
c.AddTask(&nodetasks.Package{Name: "socat"})
|
||||
c.AddTask(&nodetasks.Package{Name: "util-linux"})
|
||||
// Additional packages
|
||||
for _, additionalPackage := range b.NodeupConfig.Packages {
|
||||
|
@ -58,8 +58,6 @@ func (b *PackagesBuilder) Build(c *fi.NodeupModelBuilderContext) error {
|
|||
} else if b.Distribution.IsRHELFamily() {
|
||||
// From containerd: https://github.com/containerd/cri/blob/master/contrib/ansible/tasks/bootstrap_centos.yaml
|
||||
c.AddTask(&nodetasks.Package{Name: "conntrack-tools"})
|
||||
c.AddTask(&nodetasks.Package{Name: "ebtables"})
|
||||
c.AddTask(&nodetasks.Package{Name: "ethtool"})
|
||||
if b.Distribution == distributions.DistributionAmazonLinux2023 {
|
||||
// install iptables-nft in al2023 (NOT the iptables-legacy!)
|
||||
c.AddTask(&nodetasks.Package{Name: "iptables-nft"})
|
||||
|
@ -68,7 +66,9 @@ func (b *PackagesBuilder) Build(c *fi.NodeupModelBuilderContext) error {
|
|||
}
|
||||
c.AddTask(&nodetasks.Package{Name: "libseccomp"})
|
||||
c.AddTask(&nodetasks.Package{Name: "libtool-ltdl"})
|
||||
c.AddTask(&nodetasks.Package{Name: "socat"})
|
||||
if b.NodeupConfig.KubeProxy != nil && fi.ValueOf(b.NodeupConfig.KubeProxy.Enabled) && b.NodeupConfig.KubeProxy.ProxyMode == "nftables" {
|
||||
c.AddTask(&nodetasks.Package{Name: "nftables"})
|
||||
}
|
||||
c.AddTask(&nodetasks.Package{Name: "util-linux"})
|
||||
// Handle some packages differently for each distro
|
||||
// Amazon Linux 2 doesn't have SELinux enabled by default
|
||||
|
|
|
@ -54,7 +54,7 @@ contents: |
|
|||
- --etcd-keyfile=/srv/kubernetes/kube-apiserver/etcd-client.key
|
||||
- --etcd-servers-overrides=/events#https://127.0.0.1:4002
|
||||
- --etcd-servers=https://127.0.0.1:4001
|
||||
- --feature-gates=CSIMigrationAWS=true,InTreePluginAWSUnregister=true
|
||||
- --feature-gates=InTreePluginAWSUnregister=true
|
||||
- --kubelet-client-certificate=/srv/kubernetes/kube-apiserver/kubelet-api.crt
|
||||
- --kubelet-client-key=/srv/kubernetes/kube-apiserver/kubelet-api.key
|
||||
- --kubelet-preferred-address-types=InternalIP,Hostname,ExternalIP
|
||||
|
|
|
@ -32,7 +32,7 @@ contents: |
|
|||
- --etcd-keyfile=/srv/kubernetes/kube-apiserver/etcd-client.key
|
||||
- --etcd-servers-overrides=/events#https://events.etcd.internal.minimal.example.com:4002
|
||||
- --etcd-servers=https://main.etcd.internal.minimal.example.com:4001
|
||||
- --feature-gates=CSIMigrationAWS=true,InTreePluginAWSUnregister=true
|
||||
- --feature-gates=InTreePluginAWSUnregister=true
|
||||
- --kubelet-client-certificate=/srv/kubernetes/kube-apiserver/kubelet-api.crt
|
||||
- --kubelet-client-key=/srv/kubernetes/kube-apiserver/kubelet-api.key
|
||||
- --kubelet-preferred-address-types=InternalIP,Hostname,ExternalIP
|
||||
|
|
|
@ -31,7 +31,7 @@ contents: |
|
|||
- --etcd-certfile=/srv/kubernetes/kube-apiserver/etcd-client.crt
|
||||
- --etcd-keyfile=/srv/kubernetes/kube-apiserver/etcd-client.key
|
||||
- --etcd-servers=https://127.0.0.1:4001
|
||||
- --feature-gates=CSIMigrationAWS=true,InTreePluginAWSUnregister=true
|
||||
- --feature-gates=InTreePluginAWSUnregister=true
|
||||
- --kubelet-client-certificate=/srv/kubernetes/kube-apiserver/kubelet-api.crt
|
||||
- --kubelet-client-key=/srv/kubernetes/kube-apiserver/kubelet-api.key
|
||||
- --kubelet-preferred-address-types=InternalIP,Hostname,ExternalIP
|
||||
|
|
|
@ -3,7 +3,7 @@ path: /etc/kubernetes/manifests
|
|||
type: directory
|
||||
---
|
||||
contents: |
|
||||
DAEMON_ARGS="--authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --cgroup-root=/ --client-ca-file=/srv/kubernetes/ca.crt --cloud-provider=external --cluster-dns=100.64.0.10 --cluster-domain=cluster.local --enable-debugging-handlers=true --eviction-hard=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% --feature-gates=AllowExtTrafficLocalEndpoints=false,CSIMigrationAWS=true,ExperimentalCriticalPodAnnotation=true,InTreePluginAWSUnregister=true --kubeconfig=/var/lib/kubelet/kubeconfig --pod-infra-container-image=registry.k8s.io/pause:3.9 --pod-manifest-path=/etc/kubernetes/manifests --protect-kernel-defaults=true --register-schedulable=true --resolv-conf=/run/systemd/resolve/resolv.conf --v=2 --volume-plugin-dir=/usr/libexec/kubernetes/kubelet-plugins/volume/exec/ --cloud-config=/etc/kubernetes/in-tree-cloud.config --runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock --tls-cert-file=/srv/kubernetes/kubelet-server.crt --tls-private-key-file=/srv/kubernetes/kubelet-server.key --config=/var/lib/kubelet/kubelet.conf"
|
||||
DAEMON_ARGS="--authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --cgroup-root=/ --client-ca-file=/srv/kubernetes/ca.crt --cloud-provider=external --cluster-dns=100.64.0.10 --cluster-domain=cluster.local --enable-debugging-handlers=true --eviction-hard=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% --feature-gates=AllowExtTrafficLocalEndpoints=false,ExperimentalCriticalPodAnnotation=true,InTreePluginAWSUnregister=true --kubeconfig=/var/lib/kubelet/kubeconfig --pod-infra-container-image=registry.k8s.io/pause:3.9 --pod-manifest-path=/etc/kubernetes/manifests --protect-kernel-defaults=true --register-schedulable=true --resolv-conf=/run/systemd/resolve/resolv.conf --v=2 --volume-plugin-dir=/usr/libexec/kubernetes/kubelet-plugins/volume/exec/ --cloud-config=/etc/kubernetes/in-tree-cloud.config --runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock --tls-cert-file=/srv/kubernetes/kubelet-server.crt --tls-private-key-file=/srv/kubernetes/kubelet-server.key --config=/var/lib/kubelet/kubelet.conf --image-credential-provider-config=/var/lib/kubelet/credential-provider.conf --image-credential-provider-bin-dir=/usr/local/bin"
|
||||
HOME="/root"
|
||||
path: /etc/sysconfig/kubelet
|
||||
type: file
|
||||
|
|
|
@ -3,7 +3,7 @@ path: /etc/kubernetes/manifests
|
|||
type: directory
|
||||
---
|
||||
contents: |
|
||||
DAEMON_ARGS="--authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --cgroup-root=/ --client-ca-file=/srv/kubernetes/ca.crt --cloud-provider=external --cluster-dns=100.64.0.10 --cluster-domain=cluster.local --enable-debugging-handlers=true --eviction-hard=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% --feature-gates=CSIMigrationAWS=true,InTreePluginAWSUnregister=true --kubeconfig=/var/lib/kubelet/kubeconfig --pod-infra-container-image=registry.k8s.io/pause:3.9 --pod-manifest-path=/etc/kubernetes/manifests --protect-kernel-defaults=true --register-schedulable=true --resolv-conf=/run/systemd/resolve/resolv.conf --v=2 --volume-plugin-dir=/usr/libexec/kubernetes/kubelet-plugins/volume/exec/ --cloud-config=/etc/kubernetes/in-tree-cloud.config --runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock --tls-cert-file=/srv/kubernetes/kubelet-server.crt --tls-private-key-file=/srv/kubernetes/kubelet-server.key --config=/var/lib/kubelet/kubelet.conf"
|
||||
DAEMON_ARGS="--authentication-token-webhook=true --authorization-mode=Webhook --cgroup-driver=systemd --cgroup-root=/ --client-ca-file=/srv/kubernetes/ca.crt --cloud-provider=external --cluster-dns=100.64.0.10 --cluster-domain=cluster.local --enable-debugging-handlers=true --eviction-hard=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% --feature-gates=InTreePluginAWSUnregister=true --kubeconfig=/var/lib/kubelet/kubeconfig --pod-infra-container-image=registry.k8s.io/pause:3.9 --pod-manifest-path=/etc/kubernetes/manifests --protect-kernel-defaults=true --register-schedulable=true --resolv-conf=/run/systemd/resolve/resolv.conf --v=2 --volume-plugin-dir=/usr/libexec/kubernetes/kubelet-plugins/volume/exec/ --cloud-config=/etc/kubernetes/in-tree-cloud.config --runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock --tls-cert-file=/srv/kubernetes/kubelet-server.crt --tls-private-key-file=/srv/kubernetes/kubelet-server.key --config=/var/lib/kubelet/kubelet.conf --image-credential-provider-config=/var/lib/kubelet/credential-provider.conf --image-credential-provider-bin-dir=/usr/local/bin"
|
||||
HOME="/root"
|
||||
path: /etc/sysconfig/kubelet
|
||||
type: file
|
||||
|
|
|
@ -19,6 +19,7 @@ package kops
|
|||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/blang/semver/v4"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
@ -947,6 +948,29 @@ func (c *Cluster) InstallCNIAssets() bool {
|
|||
c.Spec.Networking.Cilium == nil
|
||||
}
|
||||
|
||||
func (c *Cluster) HasImageVolumesSupport() bool {
|
||||
// Image Volumes was added to Kubernetes v1.31
|
||||
// https://kubernetes.io/blog/2024/08/16/kubernetes-1-31-image-volume-source/
|
||||
// Image Volumes graduated to beta in Kubernetes v1.33
|
||||
// https://kubernetes.io/blog/2025/04/29/kubernetes-v1-33-image-volume-beta/
|
||||
if c.IsKubernetesLT("1.33.0") {
|
||||
return false
|
||||
}
|
||||
if c.Spec.Containerd == nil || c.Spec.Containerd.Version == nil {
|
||||
return false
|
||||
}
|
||||
sv, err := semver.ParseTolerant(*c.Spec.Containerd.Version)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
// Image Volumes was released in Containerd v2.1.0
|
||||
// https://github.com/containerd/containerd/releases/tag/v2.1.0
|
||||
if sv.LT(semver.MustParse("2.1.0")) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (c *Cluster) APIInternalName() string {
|
||||
return "api.internal." + c.ObjectMeta.Name
|
||||
}
|
||||
|
|
|
@ -60,6 +60,10 @@ type ContainerdConfig struct {
|
|||
NRI *NRIConfig `json:"nri,omitempty"`
|
||||
// Enables Kubelet ECR Credential helper to pass credentials to containerd mirrors, to use ECR as a pull-through cache
|
||||
UseECRCredentialsForMirrors bool `json:"useECRCredentialsForMirrors,omitempty"`
|
||||
// InstallCriCtl installs crictl (default "false").
|
||||
InstallCriCtl bool `json:"installCriCtl,omitempty"`
|
||||
// InstallNerdCtl installs nerdctl (default "false").
|
||||
InstallNerdCtl bool `json:"installNerdCtl,omitempty"`
|
||||
}
|
||||
|
||||
type NRIConfig struct {
|
||||
|
|
|
@ -73,7 +73,7 @@ func UseExternalKubeletCredentialProvider(k8sVersion *KubernetesVersion, cloudPr
|
|||
case kops.CloudProviderGCE:
|
||||
return k8sVersion.IsGTE("1.29")
|
||||
case kops.CloudProviderAWS:
|
||||
return k8sVersion.IsGTE("1.27")
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -53,6 +53,10 @@ type ContainerdConfig struct {
|
|||
NRI *NRIConfig `json:"nri,omitempty"`
|
||||
// Enables Kubelet ECR Credential helper to pass credentials to containerd mirrors, to use ECR as a pull-through cache
|
||||
UseECRCredentialsForMirrors bool `json:"useECRCredentialsForMirrors,omitempty"`
|
||||
// InstallCriCtl installs crictl (default "false").
|
||||
InstallCriCtl bool `json:"installCriCtl,omitempty"`
|
||||
// InstallNerdCtl installs nerdctl (default "false").
|
||||
InstallNerdCtl bool `json:"installNerdCtl,omitempty"`
|
||||
}
|
||||
|
||||
type NRIConfig struct {
|
||||
|
|
|
@ -3318,6 +3318,8 @@ func autoConvert_v1alpha2_ContainerdConfig_To_kops_ContainerdConfig(in *Containe
|
|||
out.NRI = nil
|
||||
}
|
||||
out.UseECRCredentialsForMirrors = in.UseECRCredentialsForMirrors
|
||||
out.InstallCriCtl = in.InstallCriCtl
|
||||
out.InstallNerdCtl = in.InstallNerdCtl
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -3374,6 +3376,8 @@ func autoConvert_kops_ContainerdConfig_To_v1alpha2_ContainerdConfig(in *kops.Con
|
|||
out.NRI = nil
|
||||
}
|
||||
out.UseECRCredentialsForMirrors = in.UseECRCredentialsForMirrors
|
||||
out.InstallCriCtl = in.InstallCriCtl
|
||||
out.InstallNerdCtl = in.InstallNerdCtl
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -53,6 +53,10 @@ type ContainerdConfig struct {
|
|||
NRI *NRIConfig `json:"nri,omitempty"`
|
||||
// Enables Kubelet ECR Credential helper to pass credentials to containerd mirrors, to use ECR as a pull-through cache
|
||||
UseECRCredentialsForMirrors bool `json:"useECRCredentialsForMirrors,omitempty"`
|
||||
// InstallCriCtl installs crictl (default "false").
|
||||
InstallCriCtl bool `json:"installCriCtl,omitempty"`
|
||||
// InstallNerdCtl installs nerdctl (default "false").
|
||||
InstallNerdCtl bool `json:"installNerdCtl,omitempty"`
|
||||
}
|
||||
|
||||
type NRIConfig struct {
|
||||
|
|
|
@ -3563,6 +3563,8 @@ func autoConvert_v1alpha3_ContainerdConfig_To_kops_ContainerdConfig(in *Containe
|
|||
out.NRI = nil
|
||||
}
|
||||
out.UseECRCredentialsForMirrors = in.UseECRCredentialsForMirrors
|
||||
out.InstallCriCtl = in.InstallCriCtl
|
||||
out.InstallNerdCtl = in.InstallNerdCtl
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -3619,6 +3621,8 @@ func autoConvert_kops_ContainerdConfig_To_v1alpha3_ContainerdConfig(in *kops.Con
|
|||
out.NRI = nil
|
||||
}
|
||||
out.UseECRCredentialsForMirrors = in.UseECRCredentialsForMirrors
|
||||
out.InstallCriCtl = in.InstallCriCtl
|
||||
out.InstallNerdCtl = in.InstallNerdCtl
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -1127,11 +1127,7 @@ func validateNetworking(cluster *kops.Cluster, v *kops.NetworkingSpec, fldPath *
|
|||
}
|
||||
|
||||
if v.Canal != nil {
|
||||
if cluster.IsKubernetesGTE("1.28") {
|
||||
allErrs = append(allErrs, field.Forbidden(fldPath.Child("canal"), "Canal is not supported for Kubernetes >= 1.28"))
|
||||
} else {
|
||||
allErrs = append(allErrs, validateNetworkingCanal(cluster, v.Canal, fldPath.Child("canal"))...)
|
||||
}
|
||||
allErrs = append(allErrs, field.Forbidden(fldPath.Child("canal"), "Canal is not supported for Kubernetes >= 1.28"))
|
||||
}
|
||||
|
||||
if v.KubeRouter != nil {
|
||||
|
@ -1629,13 +1625,14 @@ func validateCalicoAutoDetectionMethod(fldPath *field.Path, runtime string, vers
|
|||
case "can-reach":
|
||||
destStr := method[1]
|
||||
ip := netutils.ParseIPSloppy(destStr)
|
||||
if version == ipv4.Version {
|
||||
switch version {
|
||||
case ipv4.Version:
|
||||
if ip == nil || ip.To4() == nil {
|
||||
return field.ErrorList{field.Invalid(fldPath, runtime, "must be a valid IPv4 address")}
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
} else if version == ipv6.Version {
|
||||
case ipv6.Version:
|
||||
if ip == nil || ip.To4() != nil {
|
||||
return field.ErrorList{field.Invalid(fldPath, runtime, "must be a valid IPv6 address")}
|
||||
} else {
|
||||
|
|
|
@ -379,7 +379,7 @@ func TestValidateKubeControllermanager(t *testing.T) {
|
|||
if g.Cluster == nil {
|
||||
g.Cluster = &kops.Cluster{
|
||||
Spec: kops.ClusterSpec{
|
||||
KubernetesVersion: "1.28.0",
|
||||
KubernetesVersion: "1.29.0",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -436,7 +436,7 @@ func Test_Validate_Networking_Flannel(t *testing.T) {
|
|||
for _, g := range grid {
|
||||
cluster := &kops.Cluster{
|
||||
Spec: kops.ClusterSpec{
|
||||
KubernetesVersion: "1.27.0",
|
||||
KubernetesVersion: "1.29.0",
|
||||
Networking: kops.NetworkingSpec{
|
||||
NetworkCIDR: "10.0.0.0/8",
|
||||
NonMasqueradeCIDR: "100.64.0.0/10",
|
||||
|
@ -502,7 +502,7 @@ func Test_Validate_Networking_Kindnet(t *testing.T) {
|
|||
for _, g := range grid {
|
||||
cluster := &kops.Cluster{
|
||||
Spec: kops.ClusterSpec{
|
||||
KubernetesVersion: "1.27.0",
|
||||
KubernetesVersion: "1.29.0",
|
||||
Networking: kops.NetworkingSpec{
|
||||
NetworkCIDR: "10.0.0.0/8",
|
||||
NonMasqueradeCIDR: "100.64.0.0/10",
|
||||
|
@ -596,7 +596,7 @@ func Test_Validate_Networking_OverlappingCIDR(t *testing.T) {
|
|||
t.Run(g.Name, func(t *testing.T) {
|
||||
cluster := &kops.Cluster{
|
||||
Spec: kops.ClusterSpec{
|
||||
KubernetesVersion: "1.27.0",
|
||||
KubernetesVersion: "1.29.0",
|
||||
},
|
||||
}
|
||||
cluster.Spec.Networking = g.Networking
|
||||
|
|
|
@ -62,9 +62,10 @@ func (req *putResource) Run(s *MockKubeAPIServer) error {
|
|||
|
||||
var updated *unstructured.Unstructured
|
||||
|
||||
if req.SubResource == "" {
|
||||
switch req.SubResource {
|
||||
case "":
|
||||
updated = body
|
||||
} else if req.SubResource == "status" {
|
||||
case "status":
|
||||
updated = existing.DeepCopyObject().(*unstructured.Unstructured)
|
||||
newStatus := body.Object["status"]
|
||||
if newStatus == nil {
|
||||
|
@ -72,7 +73,7 @@ func (req *putResource) Run(s *MockKubeAPIServer) error {
|
|||
return fmt.Errorf("status not specified on status subresource update")
|
||||
}
|
||||
updated.Object["status"] = newStatus
|
||||
} else {
|
||||
default:
|
||||
// TODO: We need to implement put properly
|
||||
return fmt.Errorf("unknown subresource %q", req.SubResource)
|
||||
}
|
||||
|
|
|
@ -688,3 +688,60 @@ files:
|
|||
sha256: 3a0e07fd72709736cd85ce64a2f5505b2bb085fe697417b96ff249febd5357b1
|
||||
- name: v1.31.11/bin/linux/arm64/mounter
|
||||
sha256: 37730eeba14c4a7d0a3644a7f18da852869b1d0f0837d8e765827f2fdd30049b
|
||||
# kubernetes 1.31.12
|
||||
- name: v1.31.12/bin/darwin/amd64/kubectl
|
||||
sha256: 24b8f2417be0c3b934ac78695ed718c24ca4ba399ad1327d557184d3afa4d70e
|
||||
- name: v1.31.12/bin/darwin/amd64/kubectl-convert
|
||||
sha256: 73ce4e133edb670e0308ae05c5766440f6f8e708f42bb399a715e0ec0d0a69bb
|
||||
- name: v1.31.12/bin/darwin/arm64/kubectl
|
||||
sha256: 304093083a8525b7f2c0cfedff97fe091fbe97807dcf82c808cf7ee8a997d348
|
||||
- name: v1.31.12/bin/darwin/arm64/kubectl-convert
|
||||
sha256: 26d2c5e808c3d81a28d685e02932ee2aaf63cc1de1eba4634713c640387411f2
|
||||
- name: v1.31.12/bin/linux/amd64/apiextensions-apiserver
|
||||
sha256: 03271f00ba16a3fecc1c00b3ba95613c617b5662b39c6ce4bac5a61eb44238b5
|
||||
- name: v1.31.12/bin/linux/amd64/kube-aggregator
|
||||
sha256: ba390a94fa5daad369aa1968051d0811810fbd286a38305b4cee73a910a4fb32
|
||||
- name: v1.31.12/bin/linux/amd64/kube-apiserver
|
||||
sha256: 685a93a9bff18be68ae3f5bba6cb0115d1a21d8fc8afbf68050d2c1db64a263a
|
||||
- name: v1.31.12/bin/linux/amd64/kube-controller-manager
|
||||
sha256: b977cb2ef350117525a3a27f45ee7e982123a7e738b7caf95d4a9cdcc21bedab
|
||||
- name: v1.31.12/bin/linux/amd64/kube-log-runner
|
||||
sha256: 2e5e38a65586424eeac375c98ce2ff74a63c245516ebf5a19a823118e37eddeb
|
||||
- name: v1.31.12/bin/linux/amd64/kube-proxy
|
||||
sha256: 147e51afa6d763ed31b1be80932b9db338f95897c9ff138f9f6f604931804b29
|
||||
- name: v1.31.12/bin/linux/amd64/kube-scheduler
|
||||
sha256: b857019850df51739a3353b22e824969aee5ed387fe8153b8869eb304e6b01e5
|
||||
- name: v1.31.12/bin/linux/amd64/kubeadm
|
||||
sha256: 3228da53372fb8ffab303e7d8b1b0f78c016e461216b6535609e4f2377424349
|
||||
- name: v1.31.12/bin/linux/amd64/kubectl
|
||||
sha256: cf609add577be9c898c52027e800a008331d6b2a202ecc61413e847f7a12ccd0
|
||||
- name: v1.31.12/bin/linux/amd64/kubectl-convert
|
||||
sha256: 44aac75128a874fee1a937d98ce96555391de3d693e55498c5a83d7f3cadbe83
|
||||
- name: v1.31.12/bin/linux/amd64/kubelet
|
||||
sha256: 43f4a2ff9d5f40419f74977ed6e1939c4f8db51b0f2e63a98546e146d683c299
|
||||
- name: v1.31.12/bin/linux/amd64/mounter
|
||||
sha256: b442790a3c19472ac0aa0ad2e9261093bead14a31c6c1db9875acab096c73207
|
||||
- name: v1.31.12/bin/linux/arm64/apiextensions-apiserver
|
||||
sha256: 6b9c0c62e36b0fae4a1057fef916fb4f41471007905505883336ccced49fdecd
|
||||
- name: v1.31.12/bin/linux/arm64/kube-aggregator
|
||||
sha256: 2344671afc676ceff65b57192d2339b7b1e8c0d286d65a407db032296613c044
|
||||
- name: v1.31.12/bin/linux/arm64/kube-apiserver
|
||||
sha256: 3c1e31c7e44688be621b838baf7a0e314329975a97d83526994f0781d1d69e58
|
||||
- name: v1.31.12/bin/linux/arm64/kube-controller-manager
|
||||
sha256: eb07d75d25d2b6720415f361f9e606b667015a244befe05d4d805cc1440cc02e
|
||||
- name: v1.31.12/bin/linux/arm64/kube-log-runner
|
||||
sha256: d572a72dba60aa212ac18f9b439446499bbf987d4f2f546390ce0c253332380b
|
||||
- name: v1.31.12/bin/linux/arm64/kube-proxy
|
||||
sha256: 6bceec8e19da373e6216d9996e410f43f7dd6d629891ed1239bc7066266512b7
|
||||
- name: v1.31.12/bin/linux/arm64/kube-scheduler
|
||||
sha256: 2a2e3f44d7b95e827a5331f794f10af0a7cbdcbb8065e9e7094b6f753662f66c
|
||||
- name: v1.31.12/bin/linux/arm64/kubeadm
|
||||
sha256: 88fc31963e833d72d1e26159166591aea537d762debb5cc0f0d059fdc717b43b
|
||||
- name: v1.31.12/bin/linux/arm64/kubectl
|
||||
sha256: 1c2cc071a6522682f645c5987c0601be92c14848c5123473904e5ede0721039b
|
||||
- name: v1.31.12/bin/linux/arm64/kubectl-convert
|
||||
sha256: 6dad32b110b7d1085f71f1f9f8e246b0b8a45b449a906525cceb5a6f8126c7c9
|
||||
- name: v1.31.12/bin/linux/arm64/kubelet
|
||||
sha256: 3dab6925a2beb59fbfa7df2897e001af95886145f556cafdbde8c4facd7ca516
|
||||
- name: v1.31.12/bin/linux/arm64/mounter
|
||||
sha256: 5220ca9d411b2ab0935ec10d4487780d8f863a2cb17df1a077418a2bea24db8b
|
||||
|
|
|
@ -460,3 +460,60 @@ files:
|
|||
sha256: b862a8d550875924c8abed6c15ba22564f7e232c239aa6a2e88caf069a0ab548
|
||||
- name: v1.32.7/bin/linux/arm64/mounter
|
||||
sha256: 819e72f4b78e025021bee7dec67b389a01bee50345cecb598391c87ec1c34809
|
||||
# kubernetes 1.32.8
|
||||
- name: v1.32.8/bin/darwin/amd64/kubectl
|
||||
sha256: a00a8fadd4a7ca520e68e88a640ca60b4601695f68b8dcde33293ed709c8c807
|
||||
- name: v1.32.8/bin/darwin/amd64/kubectl-convert
|
||||
sha256: 6468990e24d4ce8aa0bf504b29bb78e6267c8558c608e6fba5bbcd5a93974edf
|
||||
- name: v1.32.8/bin/darwin/arm64/kubectl
|
||||
sha256: 01e5c58a305f309bd4f268125ba8a9c138a20ca9d602c74cd6b37a0d45fc5818
|
||||
- name: v1.32.8/bin/darwin/arm64/kubectl-convert
|
||||
sha256: 1e3b634a4178f712404442869e4b2da61b42591344bfc7c7d0cb7d66e048db68
|
||||
- name: v1.32.8/bin/linux/amd64/apiextensions-apiserver
|
||||
sha256: ae3985b504f52759b9228409333e476af6433321e019e3b0301ac7a811d3b695
|
||||
- name: v1.32.8/bin/linux/amd64/kube-aggregator
|
||||
sha256: ad9fee71cd0772c40b6cd3a4d1abcd447fb6482d21dadbdd67135737969fcf50
|
||||
- name: v1.32.8/bin/linux/amd64/kube-apiserver
|
||||
sha256: 81c675c06a2bf29cdd1d0be35f9d17830efe73ca13547e265da826e891443dc8
|
||||
- name: v1.32.8/bin/linux/amd64/kube-controller-manager
|
||||
sha256: 38031e7be9fe12884fc302dd8cb401895ce74b252acb38ae2eee8b6a1e2a383f
|
||||
- name: v1.32.8/bin/linux/amd64/kube-log-runner
|
||||
sha256: a8d6ae920c7c5fd711442717205f32d0993f45cabfe2af30630bd182fcb81f5c
|
||||
- name: v1.32.8/bin/linux/amd64/kube-proxy
|
||||
sha256: 8a35fed8c013b8e0403483b5b75747862703ca0e6ea463afd4096dadce08fd31
|
||||
- name: v1.32.8/bin/linux/amd64/kube-scheduler
|
||||
sha256: bd2e3d4092a5d7dfe270acbe6415a20c198f7f799916e18b45f49ffaf9b31f1c
|
||||
- name: v1.32.8/bin/linux/amd64/kubeadm
|
||||
sha256: da4cc996800db14f82fce8813caa55be318e52ef69d82e50e728ef4cfa18b69f
|
||||
- name: v1.32.8/bin/linux/amd64/kubectl
|
||||
sha256: 0fc709a8262be523293a18965771fedfba7466eda7ab4337feaa5c028aa46b1b
|
||||
- name: v1.32.8/bin/linux/amd64/kubectl-convert
|
||||
sha256: 2e31c4236e36143b1659d7f447ffdc946f521cbe762fefb1d6eab65da6b4f716
|
||||
- name: v1.32.8/bin/linux/amd64/kubelet
|
||||
sha256: 7dfca4da9cdf592c0f70800e09fb42553765bc0951cade3d6e0c571daf3f23ee
|
||||
- name: v1.32.8/bin/linux/amd64/mounter
|
||||
sha256: 7d64cb9cd6aa5a0368e8e67be8198e85b29fa5683ca5892809abda4b30a93247
|
||||
- name: v1.32.8/bin/linux/arm64/apiextensions-apiserver
|
||||
sha256: 7235873ac76c205570c625ffd6788a0d8c03939ed83aeea0c02c9b9e3f8670d0
|
||||
- name: v1.32.8/bin/linux/arm64/kube-aggregator
|
||||
sha256: b1bddf28c1f31ff1c479136fc9ec59066acee237245e9f9b7e0b4001bf33fb03
|
||||
- name: v1.32.8/bin/linux/arm64/kube-apiserver
|
||||
sha256: b3ca63f26aedf97920563af4242d462dfe3b27da76369b626665f359c66965de
|
||||
- name: v1.32.8/bin/linux/arm64/kube-controller-manager
|
||||
sha256: ed9669e35d1b3eeccb49ee2efafcf52c60421357d8189eb20bedff983c40cf0e
|
||||
- name: v1.32.8/bin/linux/arm64/kube-log-runner
|
||||
sha256: 47b35e22243df6703f241a3666a9be02720552c8684fe2fd0fc26453b78572ac
|
||||
- name: v1.32.8/bin/linux/arm64/kube-proxy
|
||||
sha256: 476862022743ec531746ed5d03834785f77898b0a7f206c154cde3f3c3406bf9
|
||||
- name: v1.32.8/bin/linux/arm64/kube-scheduler
|
||||
sha256: 68c7f2c369cbda837d87806253a28ccd13d6ae62a6684715aaaf2ce8f6cbbbfa
|
||||
- name: v1.32.8/bin/linux/arm64/kubeadm
|
||||
sha256: 8dbd3fa2d94335d763b983caaf2798caae2d4183f6a95ebff28289f2e86edf68
|
||||
- name: v1.32.8/bin/linux/arm64/kubectl
|
||||
sha256: 8a7371e54187249389a9aa222b150d61a4a745c121ab24dbcbb56d1ac2d0b912
|
||||
- name: v1.32.8/bin/linux/arm64/kubectl-convert
|
||||
sha256: dcce8e6d774ce93c712f42fff51f5daaede776a56f8b404f337136bb14db475e
|
||||
- name: v1.32.8/bin/linux/arm64/kubelet
|
||||
sha256: d5527714fac08eac4c1ddcbd8a3c6db35f3acd335d43360219d733273b672cce
|
||||
- name: v1.32.8/bin/linux/arm64/mounter
|
||||
sha256: 2ad21bc8582399cbd074f5b3636b2b643fab37ab0d9caff58b7e29d9a6f0b07c
|
||||
|
|
|
@ -232,3 +232,60 @@ files:
|
|||
sha256: 3f69bb32debfaf25fce91aa5e7181e1e32f3550f3257b93c17dfb37bed621a9c
|
||||
- name: v1.33.3/bin/linux/arm64/mounter
|
||||
sha256: 79d10821a1e3bad1c76c72891717327ddc92b1cdce51eab89e231beac4e2736f
|
||||
# kubernetes 1.33.4
|
||||
- name: v1.33.4/bin/darwin/amd64/kubectl
|
||||
sha256: 4b39b8bb12e78ce801b39c9ec50421e3d6e144d8e3f113cd18e6d61709b8c73b
|
||||
- name: v1.33.4/bin/darwin/amd64/kubectl-convert
|
||||
sha256: 7a2d37d4f2a2f592e7b8d3dc11b19c74a1c9ebae95eea4aae2b0dfebc9e7af84
|
||||
- name: v1.33.4/bin/darwin/arm64/kubectl
|
||||
sha256: a44662db083fdd1b19ce55ba77eb64d51206310bbae90df90eb5d9e30ea54603
|
||||
- name: v1.33.4/bin/darwin/arm64/kubectl-convert
|
||||
sha256: 1fa5d7a8293fb1c23e6ea0d29b3f8c7e2b57461b47e77f98409a0de19d1bf205
|
||||
- name: v1.33.4/bin/linux/amd64/apiextensions-apiserver
|
||||
sha256: c9d6cf5fca579ff33338115a141e0d3326708824fb4d74fb170931f31607142e
|
||||
- name: v1.33.4/bin/linux/amd64/kube-aggregator
|
||||
sha256: a7975587e815f5281ab606ba4a8119f5c1291402010668684aeaafc57a401e00
|
||||
- name: v1.33.4/bin/linux/amd64/kube-apiserver
|
||||
sha256: d4cf921f007c75a446fc66cd9e73cf245ec049459989a71e3ef2e346ddceed2e
|
||||
- name: v1.33.4/bin/linux/amd64/kube-controller-manager
|
||||
sha256: 13d58af4feea90b014c5e931cccdbbeb90c6ba1d509172ff87f91f1fcec05a41
|
||||
- name: v1.33.4/bin/linux/amd64/kube-log-runner
|
||||
sha256: fb278d721df3f920fdd3eb1221a085ec6e34b1a30974f4830b7b040202a7b5d0
|
||||
- name: v1.33.4/bin/linux/amd64/kube-proxy
|
||||
sha256: 0949a1cac5d7a014767a068d0a637eba46b58d97c6a335a939a6a64bf02a230e
|
||||
- name: v1.33.4/bin/linux/amd64/kube-scheduler
|
||||
sha256: e9883a018508dc2e09a86dbd9bee100a5fbf5253b4db05f32d3f2f41c8e31cd4
|
||||
- name: v1.33.4/bin/linux/amd64/kubeadm
|
||||
sha256: a109ebcb68e52d3dd605d92f92460c884dcc8b68aebe442404af19b6d9d778ec
|
||||
- name: v1.33.4/bin/linux/amd64/kubectl
|
||||
sha256: c2ba72c115d524b72aaee9aab8df8b876e1596889d2f3f27d68405262ce86ca1
|
||||
- name: v1.33.4/bin/linux/amd64/kubectl-convert
|
||||
sha256: ce985bd7ed3818dc0e2a0b63f875a0ad81c4b1c5274830f4b0539188f10f847a
|
||||
- name: v1.33.4/bin/linux/amd64/kubelet
|
||||
sha256: 109bd2607b054a477ede31c55ae814eae8e75543126dc4cea40b04424d843489
|
||||
- name: v1.33.4/bin/linux/amd64/mounter
|
||||
sha256: 0e3c544c0e3514309f369f0eb935ea37fdd2817fcd699d50c541e011f2957abf
|
||||
- name: v1.33.4/bin/linux/arm64/apiextensions-apiserver
|
||||
sha256: 551eeb0dd4d8a8d2ea4cf5f568a35e8970480663169402a7cfa363ad3af7f72a
|
||||
- name: v1.33.4/bin/linux/arm64/kube-aggregator
|
||||
sha256: 3247d5694c461fa7b8938ed0bb52ce904e218c86fc37edc94153c7ef77774fac
|
||||
- name: v1.33.4/bin/linux/arm64/kube-apiserver
|
||||
sha256: 85a03933ab5ce0279a3887017e4cacbe7a63eeee06e067a4b91ee3c860fb8aab
|
||||
- name: v1.33.4/bin/linux/arm64/kube-controller-manager
|
||||
sha256: c154fecbac52586a152bfc6226e482177ca8c39be26001e041d1899737220c35
|
||||
- name: v1.33.4/bin/linux/arm64/kube-log-runner
|
||||
sha256: 9c598641b69799dce0bd3656875492e7ca443be59dffe0452cf0a964fdbaecf1
|
||||
- name: v1.33.4/bin/linux/arm64/kube-proxy
|
||||
sha256: b84fcf33a5cf1565f1de44b085e873b84e824d3905c18276fa91cb62a7dc051d
|
||||
- name: v1.33.4/bin/linux/arm64/kube-scheduler
|
||||
sha256: 8052d65c4243df07714b7dcdfe292b335f876af2e55e79cafc372009739cfdda
|
||||
- name: v1.33.4/bin/linux/arm64/kubeadm
|
||||
sha256: ef471b454d68ee211e279ddeaebde6ee7a8e14b66ae58e0d0184e967c3595892
|
||||
- name: v1.33.4/bin/linux/arm64/kubectl
|
||||
sha256: 76cd7a2aa59571519b68c3943521404cbce55dafb7d8866f8d0ea2995b396eef
|
||||
- name: v1.33.4/bin/linux/arm64/kubectl-convert
|
||||
sha256: 3c44f6c5f0442aa5661573a772f92922ff6ecd1ea353dd7805b7ef53dbc390ed
|
||||
- name: v1.33.4/bin/linux/arm64/kubelet
|
||||
sha256: 623329b1a5f4858e3a5406d3947807b75144f4e71dde11ef1a71362c3a8619cc
|
||||
- name: v1.33.4/bin/linux/arm64/mounter
|
||||
sha256: 28d3a538fd8a5df14cfc67b1a90b4b2daa17b0ba9ce5973c822d8c265c984bec
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
# This file is generated by generate-asset-hashes.sh
|
||||
|
||||
filestores:
|
||||
- base: https://dl.k8s.io/release/
|
||||
|
||||
files:
|
||||
# kubernetes 1.34.0
|
||||
- name: v1.34.0/bin/darwin/amd64/kubectl
|
||||
sha256: a5904061dd5c8e57d55e52c78fa23790e76de30924b26ba31be891e75710d7a9
|
||||
- name: v1.34.0/bin/darwin/amd64/kubectl-convert
|
||||
sha256: 6103c0ba68dd4abe49127ac7ca1903ffa2130ab8a4d6a7720d725a0de27c973f
|
||||
- name: v1.34.0/bin/darwin/arm64/kubectl
|
||||
sha256: d491f4c47c34856188d38e87a27866bd94a66a57b8db3093a82ae43baf3bb20d
|
||||
- name: v1.34.0/bin/darwin/arm64/kubectl-convert
|
||||
sha256: 977540b88b3cfa07fb00da381967ff3f5e11eaa9bee48d92b4281ececaca193a
|
||||
- name: v1.34.0/bin/linux/amd64/apiextensions-apiserver
|
||||
sha256: 78e26a8ceb81e7f57097f9a26c2db8832d0a228411cded6d25d340a8a8503046
|
||||
- name: v1.34.0/bin/linux/amd64/kube-aggregator
|
||||
sha256: bc4a68b9e0b701056bc23527d87b19e0c9820723d7f68e52ccda3a753bdf4c8b
|
||||
- name: v1.34.0/bin/linux/amd64/kube-apiserver
|
||||
sha256: 48da54d0563302fa81101d18f048ce123ca1fb7ef5e429d4245c428594a056df
|
||||
- name: v1.34.0/bin/linux/amd64/kube-controller-manager
|
||||
sha256: dd49fc2991df033c1eef6c12574795d64633a95e665d1b369afe0760472c24d1
|
||||
- name: v1.34.0/bin/linux/amd64/kube-log-runner
|
||||
sha256: cb170de3aea9199cb1eb90ed6b9081856db4b62e9a2ef5e3ae2b44c929f52784
|
||||
- name: v1.34.0/bin/linux/amd64/kube-proxy
|
||||
sha256: daa59c4692a8cd260bcbda0e98180aae322250fae8a8be16619b9ede9ee29c20
|
||||
- name: v1.34.0/bin/linux/amd64/kube-scheduler
|
||||
sha256: 956a64e7dbe8fda38abe4a10d785e085108d30dba7319eb2abd2962921eea82e
|
||||
- name: v1.34.0/bin/linux/amd64/kubeadm
|
||||
sha256: aecc23726768d1753fd417f6e7395cb1a350373295e8e9d9f80e95ed3618e38e
|
||||
- name: v1.34.0/bin/linux/amd64/kubectl
|
||||
sha256: cfda68cba5848bc3b6c6135ae2f20ba2c78de20059f68789c090166d6abc3e2c
|
||||
- name: v1.34.0/bin/linux/amd64/kubectl-convert
|
||||
sha256: e9bac458029516603f40574800ce5c87b14e31d11eb403cdd79763238536c925
|
||||
- name: v1.34.0/bin/linux/amd64/kubelet
|
||||
sha256: 5c0d28cea2a3a5c91861dda088a29d56c1b027e184dae1d792686f0710750076
|
||||
- name: v1.34.0/bin/linux/amd64/mounter
|
||||
sha256: b01a50c801286cc28f2429dad0381e13dabddc27530d9b2885d16fbe28691a25
|
||||
- name: v1.34.0/bin/linux/arm64/apiextensions-apiserver
|
||||
sha256: 7bf2ab888581c6b42a66e45409b79967c275e3073a2bf2b4059d7fef0e213359
|
||||
- name: v1.34.0/bin/linux/arm64/kube-aggregator
|
||||
sha256: 82e9fdb311a5da457b2e73e69f6f6029953132e0f587e5913c7bb55a1d90c3e0
|
||||
- name: v1.34.0/bin/linux/arm64/kube-apiserver
|
||||
sha256: a83b3a8aa7abd3a03788ba38a8b3b7094272117cedf0350508fdf84ea0568f31
|
||||
- name: v1.34.0/bin/linux/arm64/kube-controller-manager
|
||||
sha256: 779fccbe119b9a0b4a9852c95d24454314bc5ac4ad6013b472df7ce019129b0d
|
||||
- name: v1.34.0/bin/linux/arm64/kube-log-runner
|
||||
sha256: 53e7f0c45db85c5baf1b93ed5c38bf8eaf7724414d97cdc06f265518d34db880
|
||||
- name: v1.34.0/bin/linux/arm64/kube-proxy
|
||||
sha256: f6b377d9a942ea4f35398b26c65ecccc881b21cebd3ccd16c2f55a93c8c48569
|
||||
- name: v1.34.0/bin/linux/arm64/kube-scheduler
|
||||
sha256: 4efd5c8b6dc1808b32f6efb449e987879deb71cd1df7f1d5ff371eba07abdce1
|
||||
- name: v1.34.0/bin/linux/arm64/kubeadm
|
||||
sha256: 6b7108016bb2b74132f7494e200501d6522682c01759db91892051a052079c77
|
||||
- name: v1.34.0/bin/linux/arm64/kubectl
|
||||
sha256: 00b182d103a8a73da7a4d11e7526d0543dcf352f06cc63a1fde25ce9243f49a0
|
||||
- name: v1.34.0/bin/linux/arm64/kubectl-convert
|
||||
sha256: 24e912cec3e5f7c45e4c0e95963c6bbb66404f40bb470176923a3a91a2e94b76
|
||||
- name: v1.34.0/bin/linux/arm64/kubelet
|
||||
sha256: e45a7795391cd62ee226666039153832d3096c0f892266cd968936e18b2b40b0
|
||||
- name: v1.34.0/bin/linux/arm64/mounter
|
||||
sha256: ae0b9e6e430133fbb9371e97a0b92327bf7b455465a9dfd0822bd77ba04609df
|
|
@ -374,7 +374,7 @@ func NormalizeImage(a *AssetBuilder, image string) string {
|
|||
if !strings.HasPrefix(normalized, registryMirror+"/") {
|
||||
// We can't nest arbitrarily
|
||||
// Some risk of collisions, but also -- and __ in the names appear to be blocked by docker hub
|
||||
normalized = strings.Replace(normalized, "/", "-", -1)
|
||||
normalized = strings.ReplaceAll(normalized, "/", "-")
|
||||
normalized = registryMirror + "/" + normalized
|
||||
}
|
||||
image = normalized
|
||||
|
|
|
@ -22,12 +22,6 @@ import (
|
|||
"k8s.io/kops"
|
||||
)
|
||||
|
||||
const (
|
||||
// defaultKopsMirrorBase will be detected and automatically set to pull from the defaultKopsMirrors
|
||||
kopsDefaultBase = "https://artifacts.k8s.io/binaries/kops/%s/"
|
||||
githubKopsMirrorBase = "https://github.com/kubernetes/kops/releases/download/v%s/"
|
||||
)
|
||||
|
||||
type mirrorConfig struct {
|
||||
Base string
|
||||
Mirrors []string
|
||||
|
|
|
@ -196,6 +196,6 @@ func restNamespaceForClusterName(clusterName string) string {
|
|||
// We are not allowed dots, so we map them to dashes
|
||||
// This can conflict, but this will simply be a limitation that we pass on to the user
|
||||
// i.e. it will not be possible to create a.b.example.com and a-b.example.com
|
||||
namespace := strings.Replace(clusterName, ".", "-", -1)
|
||||
namespace := strings.ReplaceAll(clusterName, ".", "-")
|
||||
return namespace
|
||||
}
|
||||
|
|
|
@ -118,10 +118,7 @@ func RunToolboxEnroll(ctx context.Context, f commandutils.Factory, out io.Writer
|
|||
return err
|
||||
}
|
||||
|
||||
sudo := true
|
||||
if options.SSHUser == "root" {
|
||||
sudo = false
|
||||
}
|
||||
sudo := options.SSHUser != "root"
|
||||
|
||||
sshTarget, err := NewSSHHost(ctx, options.Host, options.SSHPort, options.SSHUser, sudo)
|
||||
if err != nil {
|
||||
|
|
|
@ -607,7 +607,7 @@ func (a ByScoreDescending) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
|
|||
func (a ByScoreDescending) Less(i, j int) bool {
|
||||
if a[i].score != a[j].score {
|
||||
// ! to sort highest score first
|
||||
return !(a[i].score < a[j].score)
|
||||
return a[i].score >= a[j].score
|
||||
}
|
||||
// Use name to break ties consistently
|
||||
return a[i].subnet.Name < a[j].subnet.Name
|
||||
|
|
|
@ -307,15 +307,14 @@ func (b *AutoscalingGroupModelBuilder) buildLaunchTemplateTask(c *fi.CloudupMode
|
|||
|
||||
if ig.Spec.InstanceMetadata != nil && ig.Spec.InstanceMetadata.HTTPTokens != nil {
|
||||
lt.HTTPTokens = fi.PtrTo(ec2types.LaunchTemplateHttpTokensState(fi.ValueOf(ig.Spec.InstanceMetadata.HTTPTokens)))
|
||||
} else if b.IsKubernetesLT("1.27") {
|
||||
lt.HTTPTokens = fi.PtrTo(ec2types.LaunchTemplateHttpTokensStateOptional)
|
||||
}
|
||||
|
||||
if rootVolumeType == ec2types.VolumeTypeIo1 || rootVolumeType == ec2types.VolumeTypeIo2 {
|
||||
switch rootVolumeType {
|
||||
case ec2types.VolumeTypeIo1, ec2types.VolumeTypeIo2:
|
||||
if ig.Spec.RootVolume == nil || fi.ValueOf(ig.Spec.RootVolume.IOPS) < 100 {
|
||||
lt.RootVolumeIops = fi.PtrTo(int32(DefaultVolumeIonIops))
|
||||
}
|
||||
} else if rootVolumeType == ec2types.VolumeTypeGp3 {
|
||||
case ec2types.VolumeTypeGp3:
|
||||
if ig.Spec.RootVolume == nil || fi.ValueOf(ig.Spec.RootVolume.IOPS) < 3000 {
|
||||
lt.RootVolumeIops = fi.PtrTo(int32(DefaultVolumeGp3Iops))
|
||||
}
|
||||
|
@ -324,7 +323,7 @@ func (b *AutoscalingGroupModelBuilder) buildLaunchTemplateTask(c *fi.CloudupMode
|
|||
} else {
|
||||
lt.RootVolumeThroughput = fi.PtrTo(int32(fi.ValueOf(ig.Spec.RootVolume.Throughput)))
|
||||
}
|
||||
} else {
|
||||
default:
|
||||
lt.RootVolumeIops = nil
|
||||
}
|
||||
|
||||
|
|
|
@ -194,10 +194,6 @@ func (b *KubeAPIServerOptionsBuilder) BuildOptions(cluster *kops.Cluster) error
|
|||
if _, found := c.FeatureGates["InTreePluginAWSUnregister"]; !found && b.ControlPlaneKubernetesVersion().IsLT("1.31") {
|
||||
c.FeatureGates["InTreePluginAWSUnregister"] = "true"
|
||||
}
|
||||
|
||||
if _, found := c.FeatureGates["CSIMigrationAWS"]; !found && b.ControlPlaneKubernetesVersion().IsLT("1.27") {
|
||||
c.FeatureGates["CSIMigrationAWS"] = "true"
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
|
@ -43,8 +43,7 @@ func (b *AWSEBSCSIDriverOptionsBuilder) BuildOptions(o *kops.Cluster) error {
|
|||
c := aws.EBSCSIDriver
|
||||
|
||||
if c.Version == nil {
|
||||
version := "v1.38.1"
|
||||
c.Version = &version
|
||||
c.Version = fi.PtrTo("v1.47.0")
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
|
@ -42,11 +42,6 @@ func (b *ContainerdOptionsBuilder) BuildOptions(o *kops.Cluster) error {
|
|||
// Set version based on Kubernetes version
|
||||
if fi.ValueOf(containerd.Version) == "" {
|
||||
switch {
|
||||
case b.IsKubernetesLT("1.27.2"):
|
||||
containerd.Version = fi.PtrTo("1.6.20")
|
||||
containerd.Runc = &kops.Runc{
|
||||
Version: fi.PtrTo("1.1.5"),
|
||||
}
|
||||
case b.IsKubernetesLT("1.32"):
|
||||
containerd.Version = fi.PtrTo("1.7.28")
|
||||
containerd.Runc = &kops.Runc{
|
||||
|
|
|
@ -236,7 +236,22 @@ func (b *EtcdManagerBuilder) buildPod(etcdCluster kops.EtcdClusterSpec, instance
|
|||
}
|
||||
}
|
||||
|
||||
{
|
||||
if b.Cluster.HasImageVolumesSupport() {
|
||||
for _, etcdVersion := range etcdSupportedVersions() {
|
||||
if etcdVersion.SymlinkToVersion == "" {
|
||||
volume := v1.Volume{
|
||||
Name: "etcd-v" + strings.ReplaceAll(etcdVersion.Version, ".", "-"),
|
||||
VolumeSource: v1.VolumeSource{
|
||||
Image: &v1.ImageVolumeSource{
|
||||
Reference: b.AssetBuilder.RemapImage(etcdVersion.Image),
|
||||
PullPolicy: v1.PullIfNotPresent,
|
||||
},
|
||||
},
|
||||
}
|
||||
pod.Spec.Volumes = append(pod.Spec.Volumes, volume)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
utilMounts := []v1.VolumeMount{
|
||||
{
|
||||
MountPath: "/opt",
|
||||
|
@ -331,6 +346,20 @@ func (b *EtcdManagerBuilder) buildPod(etcdCluster kops.EtcdClusterSpec, instance
|
|||
|
||||
// Remap image via AssetBuilder
|
||||
container.Image = b.AssetBuilder.RemapImage(container.Image)
|
||||
|
||||
if b.Cluster.HasImageVolumesSupport() {
|
||||
for _, etcdVersion := range etcdSupportedVersions() {
|
||||
volumeMount := v1.VolumeMount{
|
||||
MountPath: "/opt/etcd-v" + etcdVersion.Version,
|
||||
}
|
||||
if etcdVersion.SymlinkToVersion == "" {
|
||||
volumeMount.Name = "etcd-v" + strings.ReplaceAll(etcdVersion.Version, ".", "-")
|
||||
} else {
|
||||
volumeMount.Name = "etcd-v" + strings.ReplaceAll(etcdVersion.SymlinkToVersion, ".", "-")
|
||||
}
|
||||
container.VolumeMounts = append(container.VolumeMounts, volumeMount)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var clientHost string
|
||||
|
|
|
@ -40,6 +40,20 @@ var _ loader.ClusterOptionsBuilder = &EtcdManagerOptionsBuilder{}
|
|||
func (b *EtcdManagerOptionsBuilder) BuildOptions(o *kops.Cluster) error {
|
||||
clusterSpec := &o.Spec
|
||||
|
||||
// Image Volumes will become GA in Kubernetes 1.35
|
||||
// https://github.com/kubernetes/enhancements/pull/5450
|
||||
if b.ControlPlaneKubernetesVersion().IsLT("1.36.0") && o.HasImageVolumesSupport() {
|
||||
if clusterSpec.ControlPlaneKubelet == nil {
|
||||
clusterSpec.ControlPlaneKubelet = &kops.KubeletConfigSpec{}
|
||||
}
|
||||
if clusterSpec.ControlPlaneKubelet.FeatureGates == nil {
|
||||
clusterSpec.ControlPlaneKubelet.FeatureGates = make(map[string]string)
|
||||
}
|
||||
if _, found := clusterSpec.ControlPlaneKubelet.FeatureGates["ImageVolume"]; !found {
|
||||
clusterSpec.ControlPlaneKubelet.FeatureGates["ImageVolume"] = "true"
|
||||
}
|
||||
}
|
||||
|
||||
for i := range clusterSpec.EtcdClusters {
|
||||
etcdCluster := &clusterSpec.EtcdClusters[i]
|
||||
if etcdCluster.Backups == nil {
|
||||
|
|
|
@ -28,7 +28,9 @@ spec:
|
|||
provider: Manager
|
||||
backups:
|
||||
backupStore: memfs://clusters.example.com/minimal.example.com/backups/etcd-events
|
||||
kubernetesVersion: v1.21.0
|
||||
containerd:
|
||||
version: 2.1.4
|
||||
kubernetesVersion: v1.33.0
|
||||
masterPublicName: api.minimal.example.com
|
||||
networkCIDR: 172.20.0.0/16
|
||||
networking:
|
||||
|
|
|
@ -102,80 +102,34 @@ Contents: |
|
|||
name: pki
|
||||
- mountPath: /opt
|
||||
name: opt
|
||||
- mountPath: /opt/etcd-v3.4.13
|
||||
name: etcd-v3-4-13
|
||||
- mountPath: /opt/etcd-v3.4.3
|
||||
name: etcd-v3-4-13
|
||||
- mountPath: /opt/etcd-v3.5.0
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /opt/etcd-v3.5.1
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /opt/etcd-v3.5.13
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /opt/etcd-v3.5.17
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /opt/etcd-v3.5.21
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /opt/etcd-v3.5.3
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /opt/etcd-v3.5.4
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /opt/etcd-v3.5.6
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /opt/etcd-v3.5.7
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /opt/etcd-v3.5.9
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /var/log/etcd.log
|
||||
name: varlogetcd
|
||||
hostNetwork: true
|
||||
hostPID: true
|
||||
initContainers:
|
||||
- args:
|
||||
- --target-dir=/opt/kops-utils/
|
||||
- --src=/ko-app/kops-utils-cp
|
||||
command:
|
||||
- /ko-app/kops-utils-cp
|
||||
image: registry.k8s.io/kops/kops-utils-cp:1.34.0-alpha.1
|
||||
name: kops-utils-cp
|
||||
resources: {}
|
||||
volumeMounts:
|
||||
- mountPath: /opt
|
||||
name: opt
|
||||
- args:
|
||||
- --target-dir=/opt/etcd-v3.4.13
|
||||
- --src=/usr/local/bin/etcd
|
||||
- --src=/usr/local/bin/etcdctl
|
||||
command:
|
||||
- /opt/kops-utils/kops-utils-cp
|
||||
image: registry.k8s.io/etcd:v3.4.13
|
||||
name: init-etcd-3-4-13
|
||||
resources: {}
|
||||
volumeMounts:
|
||||
- mountPath: /opt
|
||||
name: opt
|
||||
- args:
|
||||
- --target-dir=/opt/etcd-v3.5.21
|
||||
- --src=/usr/local/bin/etcd
|
||||
- --src=/usr/local/bin/etcdctl
|
||||
command:
|
||||
- /opt/kops-utils/kops-utils-cp
|
||||
image: registry.k8s.io/etcd:v3.5.21
|
||||
name: init-etcd-3-5-21
|
||||
resources: {}
|
||||
volumeMounts:
|
||||
- mountPath: /opt
|
||||
name: opt
|
||||
- args:
|
||||
- --symlink
|
||||
- --target-dir=/opt/etcd-v3.4.3
|
||||
- --src=/opt/etcd-v3.4.13/etcd
|
||||
- --src=/opt/etcd-v3.4.13/etcdctl
|
||||
command:
|
||||
- /opt/kops-utils/kops-utils-cp
|
||||
image: registry.k8s.io/kops/kops-utils-cp:1.34.0-alpha.1
|
||||
name: init-etcd-symlinks-3-4-13
|
||||
resources: {}
|
||||
volumeMounts:
|
||||
- mountPath: /opt
|
||||
name: opt
|
||||
- args:
|
||||
- --symlink
|
||||
- --target-dir=/opt/etcd-v3.5.0
|
||||
- --target-dir=/opt/etcd-v3.5.1
|
||||
- --target-dir=/opt/etcd-v3.5.13
|
||||
- --target-dir=/opt/etcd-v3.5.17
|
||||
- --target-dir=/opt/etcd-v3.5.3
|
||||
- --target-dir=/opt/etcd-v3.5.4
|
||||
- --target-dir=/opt/etcd-v3.5.6
|
||||
- --target-dir=/opt/etcd-v3.5.7
|
||||
- --target-dir=/opt/etcd-v3.5.9
|
||||
- --src=/opt/etcd-v3.5.21/etcd
|
||||
- --src=/opt/etcd-v3.5.21/etcdctl
|
||||
command:
|
||||
- /opt/kops-utils/kops-utils-cp
|
||||
image: registry.k8s.io/kops/kops-utils-cp:1.34.0-alpha.1
|
||||
name: init-etcd-symlinks-3-5-21
|
||||
resources: {}
|
||||
volumeMounts:
|
||||
- mountPath: /opt
|
||||
name: opt
|
||||
priorityClassName: system-cluster-critical
|
||||
tolerations:
|
||||
- key: CriticalAddonsOnly
|
||||
|
@ -195,6 +149,14 @@ Contents: |
|
|||
name: pki
|
||||
- emptyDir: {}
|
||||
name: opt
|
||||
- image:
|
||||
pullPolicy: IfNotPresent
|
||||
reference: registry.k8s.io/etcd:v3.4.13
|
||||
name: etcd-v3-4-13
|
||||
- image:
|
||||
pullPolicy: IfNotPresent
|
||||
reference: registry.k8s.io/etcd:v3.5.21
|
||||
name: etcd-v3-5-21
|
||||
- hostPath:
|
||||
path: /var/log/etcd-events.log
|
||||
type: FileOrCreate
|
||||
|
@ -244,80 +206,34 @@ Contents: |
|
|||
name: pki
|
||||
- mountPath: /opt
|
||||
name: opt
|
||||
- mountPath: /opt/etcd-v3.4.13
|
||||
name: etcd-v3-4-13
|
||||
- mountPath: /opt/etcd-v3.4.3
|
||||
name: etcd-v3-4-13
|
||||
- mountPath: /opt/etcd-v3.5.0
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /opt/etcd-v3.5.1
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /opt/etcd-v3.5.13
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /opt/etcd-v3.5.17
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /opt/etcd-v3.5.21
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /opt/etcd-v3.5.3
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /opt/etcd-v3.5.4
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /opt/etcd-v3.5.6
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /opt/etcd-v3.5.7
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /opt/etcd-v3.5.9
|
||||
name: etcd-v3-5-21
|
||||
- mountPath: /var/log/etcd.log
|
||||
name: varlogetcd
|
||||
hostNetwork: true
|
||||
hostPID: true
|
||||
initContainers:
|
||||
- args:
|
||||
- --target-dir=/opt/kops-utils/
|
||||
- --src=/ko-app/kops-utils-cp
|
||||
command:
|
||||
- /ko-app/kops-utils-cp
|
||||
image: registry.k8s.io/kops/kops-utils-cp:1.34.0-alpha.1
|
||||
name: kops-utils-cp
|
||||
resources: {}
|
||||
volumeMounts:
|
||||
- mountPath: /opt
|
||||
name: opt
|
||||
- args:
|
||||
- --target-dir=/opt/etcd-v3.4.13
|
||||
- --src=/usr/local/bin/etcd
|
||||
- --src=/usr/local/bin/etcdctl
|
||||
command:
|
||||
- /opt/kops-utils/kops-utils-cp
|
||||
image: registry.k8s.io/etcd:v3.4.13
|
||||
name: init-etcd-3-4-13
|
||||
resources: {}
|
||||
volumeMounts:
|
||||
- mountPath: /opt
|
||||
name: opt
|
||||
- args:
|
||||
- --target-dir=/opt/etcd-v3.5.21
|
||||
- --src=/usr/local/bin/etcd
|
||||
- --src=/usr/local/bin/etcdctl
|
||||
command:
|
||||
- /opt/kops-utils/kops-utils-cp
|
||||
image: registry.k8s.io/etcd:v3.5.21
|
||||
name: init-etcd-3-5-21
|
||||
resources: {}
|
||||
volumeMounts:
|
||||
- mountPath: /opt
|
||||
name: opt
|
||||
- args:
|
||||
- --symlink
|
||||
- --target-dir=/opt/etcd-v3.4.3
|
||||
- --src=/opt/etcd-v3.4.13/etcd
|
||||
- --src=/opt/etcd-v3.4.13/etcdctl
|
||||
command:
|
||||
- /opt/kops-utils/kops-utils-cp
|
||||
image: registry.k8s.io/kops/kops-utils-cp:1.34.0-alpha.1
|
||||
name: init-etcd-symlinks-3-4-13
|
||||
resources: {}
|
||||
volumeMounts:
|
||||
- mountPath: /opt
|
||||
name: opt
|
||||
- args:
|
||||
- --symlink
|
||||
- --target-dir=/opt/etcd-v3.5.0
|
||||
- --target-dir=/opt/etcd-v3.5.1
|
||||
- --target-dir=/opt/etcd-v3.5.13
|
||||
- --target-dir=/opt/etcd-v3.5.17
|
||||
- --target-dir=/opt/etcd-v3.5.3
|
||||
- --target-dir=/opt/etcd-v3.5.4
|
||||
- --target-dir=/opt/etcd-v3.5.6
|
||||
- --target-dir=/opt/etcd-v3.5.7
|
||||
- --target-dir=/opt/etcd-v3.5.9
|
||||
- --src=/opt/etcd-v3.5.21/etcd
|
||||
- --src=/opt/etcd-v3.5.21/etcdctl
|
||||
command:
|
||||
- /opt/kops-utils/kops-utils-cp
|
||||
image: registry.k8s.io/kops/kops-utils-cp:1.34.0-alpha.1
|
||||
name: init-etcd-symlinks-3-5-21
|
||||
resources: {}
|
||||
volumeMounts:
|
||||
- mountPath: /opt
|
||||
name: opt
|
||||
priorityClassName: system-cluster-critical
|
||||
tolerations:
|
||||
- key: CriticalAddonsOnly
|
||||
|
@ -337,6 +253,14 @@ Contents: |
|
|||
name: pki
|
||||
- emptyDir: {}
|
||||
name: opt
|
||||
- image:
|
||||
pullPolicy: IfNotPresent
|
||||
reference: registry.k8s.io/etcd:v3.4.13
|
||||
name: etcd-v3-4-13
|
||||
- image:
|
||||
pullPolicy: IfNotPresent
|
||||
reference: registry.k8s.io/etcd:v3.5.21
|
||||
name: etcd-v3-5-21
|
||||
- hostPath:
|
||||
path: /var/log/etcd.log
|
||||
type: FileOrCreate
|
||||
|
|
|
@ -161,10 +161,6 @@ func (b *KubeControllerManagerOptionsBuilder) BuildOptions(o *kops.Cluster) erro
|
|||
if _, found := kcm.FeatureGates["InTreePluginAWSUnregister"]; !found && b.ControlPlaneKubernetesVersion().IsLT("1.31") {
|
||||
kcm.FeatureGates["InTreePluginAWSUnregister"] = "true"
|
||||
}
|
||||
|
||||
if _, found := kcm.FeatureGates["CSIMigrationAWS"]; !found && b.ControlPlaneKubernetesVersion().IsLT("1.27") {
|
||||
kcm.FeatureGates["CSIMigrationAWS"] = "true"
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
|
@ -183,10 +183,6 @@ func (b *KubeletOptionsBuilder) configureKubelet(cluster *kops.Cluster, kubelet
|
|||
if _, found := kubelet.FeatureGates["InTreePluginAWSUnregister"]; !found && kubernetesVersion.IsLT("1.31") {
|
||||
kubelet.FeatureGates["InTreePluginAWSUnregister"] = "true"
|
||||
}
|
||||
|
||||
if _, found := kubelet.FeatureGates["CSIMigrationAWS"]; !found && kubernetesVersion.IsLT("1.27") {
|
||||
kubelet.FeatureGates["CSIMigrationAWS"] = "true"
|
||||
}
|
||||
}
|
||||
|
||||
// Set systemd as the default cgroup driver for kubelet
|
||||
|
|
|
@ -66,10 +66,6 @@ func (b *KubeSchedulerOptionsBuilder) BuildOptions(o *kops.Cluster) error {
|
|||
if _, found := config.FeatureGates["InTreePluginAWSUnregister"]; !found && b.ControlPlaneKubernetesVersion().IsLT("1.31") {
|
||||
config.FeatureGates["InTreePluginAWSUnregister"] = "true"
|
||||
}
|
||||
|
||||
if _, found := config.FeatureGates["CSIMigrationAWS"]; !found && b.ControlPlaneKubernetesVersion().IsLT("1.27") {
|
||||
config.FeatureGates["CSIMigrationAWS"] = "true"
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -265,7 +265,7 @@ func (b *KopsModelContext) CloudTags(name string, shared bool) map[string]string
|
|||
}
|
||||
case kops.CloudProviderScaleway:
|
||||
for k, v := range b.Cluster.Spec.CloudLabels {
|
||||
if k == scaleway.TagClusterName && shared == true {
|
||||
if k == scaleway.TagClusterName && shared {
|
||||
klog.V(4).Infof("Skipping %q tag for shared resource", scaleway.TagClusterName)
|
||||
continue
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ func (b *NetworkModelBuilder) Build(c *fi.CloudupModelBuilderContext) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
clusterName := strings.Replace(b.ClusterName(), ".", "-", -1)
|
||||
clusterName := strings.ReplaceAll(b.ClusterName(), ".", "-")
|
||||
vpcName := "vpc-" + clusterName
|
||||
|
||||
// Create a separate vpc for this cluster.
|
||||
|
|
|
@ -283,10 +283,7 @@ func (b *AutoscalingGroupModelBuilder) splitToZones(ig *kops.InstanceGroup) (map
|
|||
totalSize += targetSizes[i]
|
||||
}
|
||||
i := 0
|
||||
for {
|
||||
if totalSize >= minSize {
|
||||
break
|
||||
}
|
||||
for totalSize < minSize {
|
||||
targetSizes[i]++
|
||||
totalSize++
|
||||
|
||||
|
|
|
@ -287,7 +287,7 @@ func (b *MasterVolumeBuilder) addGCEVolume(c *fi.CloudupModelBuilderContext, pre
|
|||
tags[gce.GceLabelNameEtcdClusterPrefix+etcd.Name] = gce.EncodeGCELabel(clusterSpec)
|
||||
|
||||
// GCE disk names must match the following regular expression: '[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?'
|
||||
prefix = strings.Replace(prefix, ".", "-", -1)
|
||||
prefix = strings.ReplaceAll(prefix, ".", "-")
|
||||
if strings.IndexByte("0123456789-", prefix[0]) != -1 {
|
||||
prefix = "d" + prefix
|
||||
}
|
||||
|
@ -320,8 +320,6 @@ func (b *MasterVolumeBuilder) addHetznerVolume(c *fi.CloudupModelBuilderContext,
|
|||
Labels: tags,
|
||||
}
|
||||
c.AddTask(t)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (b *MasterVolumeBuilder) addOpenstackVolume(c *fi.CloudupModelBuilderContext, name string, volumeSize int32, zone string, etcd kops.EtcdClusterSpec, m kops.EtcdMemberSpec, allMembers []string) error {
|
||||
|
@ -430,6 +428,4 @@ func (b *MasterVolumeBuilder) addScalewayVolume(c *fi.CloudupModelBuilderContext
|
|||
Type: fi.PtrTo(string(instance.VolumeVolumeTypeBSSD)),
|
||||
}
|
||||
c.AddTask(t)
|
||||
|
||||
return
|
||||
}
|
||||
|
|
|
@ -706,10 +706,7 @@ func (b *FirewallModelBuilder) Build(c *fi.CloudupModelBuilderContext) error {
|
|||
|
||||
sgMap := make(map[string]*openstacktasks.SecurityGroup)
|
||||
|
||||
useVIPACL := false
|
||||
if b.UseLoadBalancerForAPI() && b.UseVIPACL() {
|
||||
useVIPACL = true
|
||||
}
|
||||
useVIPACL := b.UseLoadBalancerForAPI() && b.UseVIPACL()
|
||||
sg := &openstacktasks.SecurityGroup{
|
||||
Name: s(b.APIResourceName()),
|
||||
Lifecycle: b.Lifecycle,
|
||||
|
@ -729,11 +726,12 @@ func (b *FirewallModelBuilder) Build(c *fi.CloudupModelBuilderContext) error {
|
|||
Lifecycle: b.Lifecycle,
|
||||
RemoveGroup: false,
|
||||
}
|
||||
if role == kops.InstanceGroupRoleBastion {
|
||||
switch role {
|
||||
case kops.InstanceGroupRoleBastion:
|
||||
sg.RemoveExtraRules = []string{"port=22"}
|
||||
} else if role == kops.InstanceGroupRoleNode {
|
||||
case kops.InstanceGroupRoleNode:
|
||||
sg.RemoveExtraRules = []string{"port=22", "port=10250"}
|
||||
} else if role == kops.InstanceGroupRoleControlPlane {
|
||||
case kops.InstanceGroupRoleControlPlane:
|
||||
sg.RemoveExtraRules = []string{"port=22", "port=443", "port=10250"}
|
||||
}
|
||||
c.AddTask(sg)
|
||||
|
|
|
@ -53,12 +53,9 @@ func (b *NetworkModelBuilder) Build(c *fi.CloudupModelBuilderContext) error {
|
|||
c.AddTask(t)
|
||||
}
|
||||
|
||||
needRouter := true
|
||||
// Do not need router if there is no external network
|
||||
if osSpec.Router == nil || osSpec.Router.ExternalNetwork == nil {
|
||||
needRouter = false
|
||||
}
|
||||
routerName := strings.Replace(clusterName, ".", "-", -1)
|
||||
needRouter := osSpec.Router != nil && osSpec.Router.ExternalNetwork != nil
|
||||
routerName := strings.ReplaceAll(clusterName, ".", "-")
|
||||
for _, sp := range b.Cluster.Spec.Networking.Subnets {
|
||||
// assumes that we do not need to create routers if we use existing subnets
|
||||
if sp.ID != "" {
|
||||
|
|
|
@ -88,7 +88,7 @@ func (b *ServerGroupModelBuilder) buildInstances(c *fi.CloudupModelBuilderContex
|
|||
return err
|
||||
}
|
||||
|
||||
sshKeyName := strings.Replace(sshKeyNameFull, ":", "_", -1)
|
||||
sshKeyName := strings.ReplaceAll(sshKeyNameFull, ":", "_")
|
||||
|
||||
igMeta := make(map[string]string)
|
||||
cloudTags, err := b.KopsModelContext.CloudTagsForInstanceGroup(ig)
|
||||
|
@ -145,8 +145,8 @@ func (b *ServerGroupModelBuilder) buildInstances(c *fi.CloudupModelBuilderContex
|
|||
for i := int32(0); i < *ig.Spec.MinSize; i++ {
|
||||
// FIXME: Must ensure 63 or less characters
|
||||
// replace all dots and _ with -, this is needed to get external cloudprovider working
|
||||
iName := strings.Replace(strings.ToLower(fmt.Sprintf("%s-%d.%s", ig.Name, i+1, b.ClusterName())), "_", "-", -1)
|
||||
instanceName := fi.PtrTo(strings.Replace(iName, ".", "-", -1))
|
||||
iName := strings.ReplaceAll(strings.ToLower(fmt.Sprintf("%s-%d.%s", ig.Name, i+1, b.ClusterName())), "_", "-")
|
||||
instanceName := fi.PtrTo(strings.ReplaceAll(iName, ".", "-"))
|
||||
|
||||
var az *string
|
||||
var subnets []*openstacktasks.Subnet
|
||||
|
@ -175,13 +175,13 @@ func (b *ServerGroupModelBuilder) buildInstances(c *fi.CloudupModelBuilderContex
|
|||
}
|
||||
// Create instance port task
|
||||
portName := fmt.Sprintf("%s-%s", "port", *instanceName)
|
||||
portTagKopsName := strings.Replace(
|
||||
strings.Replace(
|
||||
portTagKopsName := strings.ReplaceAll(
|
||||
strings.ReplaceAll(
|
||||
strings.ToLower(
|
||||
fmt.Sprintf("port-%s-%d", ig.Name, i+1),
|
||||
),
|
||||
"_", "-", -1,
|
||||
), ".", "-", -1,
|
||||
"_", "-",
|
||||
), ".", "-",
|
||||
)
|
||||
portTask := &openstacktasks.Port{
|
||||
Name: fi.PtrTo(portName),
|
||||
|
|
|
@ -74,7 +74,7 @@ download-or-bust() {
|
|||
local -r file="$1"
|
||||
local -r hash="$2"
|
||||
local -a urls
|
||||
mapfile -t urls < <(split-commas "$3")
|
||||
IFS=, read -r -a urls <<< "$3"
|
||||
|
||||
if [[ -f "${file}" ]]; then
|
||||
if ! validate-hash "${file}" "${hash}"; then
|
||||
|
@ -125,10 +125,6 @@ validate-hash() {
|
|||
fi
|
||||
}
|
||||
|
||||
function split-commas() {
|
||||
echo "$1" | tr "," "\n"
|
||||
}
|
||||
|
||||
function download-release() {
|
||||
case "$(uname -m)" in
|
||||
x86_64*|i?86_64*|amd64*)
|
||||
|
@ -299,7 +295,7 @@ func AWSMultipartMIME(bootScript string, ig *kops.InstanceGroup) (string, error)
|
|||
return "", err
|
||||
}
|
||||
|
||||
writer.Write([]byte(fmt.Sprintf("Content-Type: multipart/mixed; boundary=\"%s\"\r\n", boundary)))
|
||||
fmt.Fprintf(writer, "Content-Type: multipart/mixed; boundary=\"%s\"\r\n", boundary)
|
||||
writer.Write([]byte("MIME-Version: 1.0\r\n\r\n"))
|
||||
|
||||
var err error
|
||||
|
@ -317,7 +313,7 @@ func AWSMultipartMIME(bootScript string, ig *kops.InstanceGroup) (string, error)
|
|||
}
|
||||
}
|
||||
|
||||
writer.Write([]byte(fmt.Sprintf("\r\n--%s--\r\n", boundary)))
|
||||
fmt.Fprintf(writer, "\r\n--%s--\r\n", boundary)
|
||||
|
||||
writer.Flush()
|
||||
mimeWriter.Close()
|
||||
|
|
|
@ -52,7 +52,7 @@ download-or-bust() {
|
|||
local -r file="$1"
|
||||
local -r hash="$2"
|
||||
local -a urls
|
||||
mapfile -t urls < <(split-commas "$3")
|
||||
IFS=, read -r -a urls <<< "$3"
|
||||
|
||||
if [[ -f "${file}" ]]; then
|
||||
if ! validate-hash "${file}" "${hash}"; then
|
||||
|
@ -103,10 +103,6 @@ validate-hash() {
|
|||
fi
|
||||
}
|
||||
|
||||
function split-commas() {
|
||||
echo "$1" | tr "," "\n"
|
||||
}
|
||||
|
||||
function download-release() {
|
||||
case "$(uname -m)" in
|
||||
x86_64*|i?86_64*|amd64*)
|
||||
|
|
|
@ -52,7 +52,7 @@ download-or-bust() {
|
|||
local -r file="$1"
|
||||
local -r hash="$2"
|
||||
local -a urls
|
||||
mapfile -t urls < <(split-commas "$3")
|
||||
IFS=, read -r -a urls <<< "$3"
|
||||
|
||||
if [[ -f "${file}" ]]; then
|
||||
if ! validate-hash "${file}" "${hash}"; then
|
||||
|
@ -103,10 +103,6 @@ validate-hash() {
|
|||
fi
|
||||
}
|
||||
|
||||
function split-commas() {
|
||||
echo "$1" | tr "," "\n"
|
||||
}
|
||||
|
||||
function download-release() {
|
||||
case "$(uname -m)" in
|
||||
x86_64*|i?86_64*|amd64*)
|
||||
|
|
|
@ -52,7 +52,7 @@ download-or-bust() {
|
|||
local -r file="$1"
|
||||
local -r hash="$2"
|
||||
local -a urls
|
||||
mapfile -t urls < <(split-commas "$3")
|
||||
IFS=, read -r -a urls <<< "$3"
|
||||
|
||||
if [[ -f "${file}" ]]; then
|
||||
if ! validate-hash "${file}" "${hash}"; then
|
||||
|
@ -103,10 +103,6 @@ validate-hash() {
|
|||
fi
|
||||
}
|
||||
|
||||
function split-commas() {
|
||||
echo "$1" | tr "," "\n"
|
||||
}
|
||||
|
||||
function download-release() {
|
||||
case "$(uname -m)" in
|
||||
x86_64*|i?86_64*|amd64*)
|
||||
|
|
|
@ -52,7 +52,7 @@ download-or-bust() {
|
|||
local -r file="$1"
|
||||
local -r hash="$2"
|
||||
local -a urls
|
||||
mapfile -t urls < <(split-commas "$3")
|
||||
IFS=, read -r -a urls <<< "$3"
|
||||
|
||||
if [[ -f "${file}" ]]; then
|
||||
if ! validate-hash "${file}" "${hash}"; then
|
||||
|
@ -103,10 +103,6 @@ validate-hash() {
|
|||
fi
|
||||
}
|
||||
|
||||
function split-commas() {
|
||||
echo "$1" | tr "," "\n"
|
||||
}
|
||||
|
||||
function download-release() {
|
||||
case "$(uname -m)" in
|
||||
x86_64*|i?86_64*|amd64*)
|
||||
|
|
|
@ -52,7 +52,7 @@ download-or-bust() {
|
|||
local -r file="$1"
|
||||
local -r hash="$2"
|
||||
local -a urls
|
||||
mapfile -t urls < <(split-commas "$3")
|
||||
IFS=, read -r -a urls <<< "$3"
|
||||
|
||||
if [[ -f "${file}" ]]; then
|
||||
if ! validate-hash "${file}" "${hash}"; then
|
||||
|
@ -103,10 +103,6 @@ validate-hash() {
|
|||
fi
|
||||
}
|
||||
|
||||
function split-commas() {
|
||||
echo "$1" | tr "," "\n"
|
||||
}
|
||||
|
||||
function download-release() {
|
||||
case "$(uname -m)" in
|
||||
x86_64*|i?86_64*|amd64*)
|
||||
|
|
|
@ -52,7 +52,7 @@ download-or-bust() {
|
|||
local -r file="$1"
|
||||
local -r hash="$2"
|
||||
local -a urls
|
||||
mapfile -t urls < <(split-commas "$3")
|
||||
IFS=, read -r -a urls <<< "$3"
|
||||
|
||||
if [[ -f "${file}" ]]; then
|
||||
if ! validate-hash "${file}" "${hash}"; then
|
||||
|
@ -103,10 +103,6 @@ validate-hash() {
|
|||
fi
|
||||
}
|
||||
|
||||
function split-commas() {
|
||||
echo "$1" | tr "," "\n"
|
||||
}
|
||||
|
||||
function download-release() {
|
||||
case "$(uname -m)" in
|
||||
x86_64*|i?86_64*|amd64*)
|
||||
|
|
|
@ -146,23 +146,25 @@ func BuildKubernetesFileAssets(ig model.InstanceGroup, assetBuilder *assets.Asse
|
|||
if runcAsset != nil {
|
||||
kubernetesAssets[arch] = append(kubernetesAssets[arch], assets.BuildMirroredAsset(runcAsset))
|
||||
}
|
||||
nerdctlAsset, err := wellknownassets.FindNerdctlAsset(ig, assetBuilder, arch)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
if ig.RawClusterSpec().Containerd.InstallNerdCtl {
|
||||
nerdctlAsset, err := wellknownassets.FindNerdctlAsset(ig, assetBuilder, arch)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if nerdctlAsset != nil {
|
||||
kubernetesAssets[arch] = append(kubernetesAssets[arch], assets.BuildMirroredAsset(nerdctlAsset))
|
||||
}
|
||||
}
|
||||
if nerdctlAsset != nil {
|
||||
kubernetesAssets[arch] = append(kubernetesAssets[arch], assets.BuildMirroredAsset(nerdctlAsset))
|
||||
if ig.RawClusterSpec().Containerd.InstallCriCtl {
|
||||
crictlAsset, err := wellknownassets.FindCrictlAsset(ig, assetBuilder, arch)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if crictlAsset != nil {
|
||||
kubernetesAssets[arch] = append(kubernetesAssets[arch], assets.BuildMirroredAsset(crictlAsset))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
crictlAsset, err := wellknownassets.FindCrictlAsset(ig, assetBuilder, arch)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if crictlAsset != nil {
|
||||
kubernetesAssets[arch] = append(kubernetesAssets[arch], assets.BuildMirroredAsset(crictlAsset))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return &KubernetesFileAssets{
|
||||
|
|
|
@ -369,9 +369,7 @@ func (n *nodeUpConfigBuilder) BuildConfig(ig *kops.InstanceGroup, wellKnownAddre
|
|||
|
||||
case kops.CloudProviderDO, kops.CloudProviderScaleway, kops.CloudProviderAzure:
|
||||
// Use any IP address that is found (including public ones)
|
||||
for _, additionalIP := range wellKnownAddresses[wellknownservices.KubeAPIServer] {
|
||||
controlPlaneIPs = append(controlPlaneIPs, additionalIP)
|
||||
}
|
||||
controlPlaneIPs = append(controlPlaneIPs, wellKnownAddresses[wellknownservices.KubeAPIServer]...)
|
||||
}
|
||||
|
||||
if cluster.UsesNoneDNS() {
|
||||
|
|
|
@ -95,12 +95,7 @@ func FindCNIAssets(ig model.InstanceGroup, assetBuilder *assets.AssetBuilder, ar
|
|||
cniAssetURL = defaultCNIAssetAmd64K8s_30
|
||||
case ig.KubernetesVersion().IsGTE("1.29"):
|
||||
cniAssetURL = defaultCNIAssetAmd64K8s_29
|
||||
case ig.KubernetesVersion().IsGTE("1.27"):
|
||||
cniAssetURL = defaultCNIAssetAmd64K8s_27
|
||||
default:
|
||||
cniAssetURL = defaultCNIAssetAmd64K8s_22
|
||||
}
|
||||
klog.V(2).Infof("Adding default ARM64 CNI plugin binaries asset: %s", cniAssetURL)
|
||||
case architectures.ArchitectureArm64:
|
||||
switch {
|
||||
case ig.KubernetesVersion().IsGTE("1.32"):
|
||||
|
@ -111,16 +106,17 @@ func FindCNIAssets(ig model.InstanceGroup, assetBuilder *assets.AssetBuilder, ar
|
|||
cniAssetURL = defaultCNIAssetArm64K8s_30
|
||||
case ig.KubernetesVersion().IsGTE("1.29"):
|
||||
cniAssetURL = defaultCNIAssetArm64K8s_29
|
||||
case ig.KubernetesVersion().IsGTE("1.27"):
|
||||
cniAssetURL = defaultCNIAssetArm64K8s_27
|
||||
default:
|
||||
cniAssetURL = defaultCNIAssetArm64K8s_22
|
||||
}
|
||||
klog.V(2).Infof("Adding default AMD64 CNI plugin binaries asset: %s", cniAssetURL)
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown arch for CNI plugin binaries asset: %s", arch)
|
||||
}
|
||||
|
||||
if cniAssetURL == "" {
|
||||
return nil, fmt.Errorf("unknown CNI plugin binaries asset: %s", arch)
|
||||
} else {
|
||||
klog.V(2).Infof("Adding CNI plugin binaries asset: %s", cniAssetURL)
|
||||
}
|
||||
|
||||
u, err := url.Parse(cniAssetURL)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unable to parse CNI plugin binaries asset URL %q: %v", cniAssetURL, err)
|
||||
|
|
|
@ -59,12 +59,12 @@ func Test_FindCNIAssetFromEnvironmentVariable(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func Test_FindCNIAssetFromDefaults122(t *testing.T) {
|
||||
desiredCNIVersionURL := "https://storage.googleapis.com/k8s-artifacts-cni/release/v0.9.1/cni-plugins-linux-amd64-v0.9.1.tgz"
|
||||
desiredCNIVersionHash := "sha256:962100bbc4baeaaa5748cdbfce941f756b1531c2eadb290129401498bfac21e7"
|
||||
func Test_FindCNIAssetFromDefaults134(t *testing.T) {
|
||||
desiredCNIVersionURL := "https://storage.googleapis.com/k8s-artifacts-cni/release/v1.6.1/cni-plugins-linux-amd64-v1.6.1.tgz"
|
||||
desiredCNIVersionHash := "sha256:2503ce29ac445715ebe146073f45468153f9e28f45fa173cb060cfd9e735f563"
|
||||
|
||||
cluster := &api.Cluster{}
|
||||
cluster.Spec.KubernetesVersion = "v1.22.0"
|
||||
cluster.Spec.KubernetesVersion = "v1.34.0"
|
||||
|
||||
ig := &api.InstanceGroup{}
|
||||
|
||||
|
|
|
@ -190,20 +190,21 @@ func parsePEMPrivateKey(pemData []byte) (crypto.Signer, error) {
|
|||
return nil, fmt.Errorf("could not parse private key (unable to decode PEM)")
|
||||
}
|
||||
|
||||
if block.Type == "RSA PRIVATE KEY" {
|
||||
switch block.Type {
|
||||
case "RSA PRIVATE KEY":
|
||||
klog.V(10).Infof("Parsing pem block: %q", block.Type)
|
||||
return x509.ParsePKCS1PrivateKey(block.Bytes)
|
||||
} else if block.Type == "EC PRIVATE KEY" {
|
||||
case "EC PRIVATE KEY":
|
||||
klog.V(10).Infof("Parsing pem block: %q", block.Type)
|
||||
return x509.ParseECPrivateKey(block.Bytes)
|
||||
} else if block.Type == "PRIVATE KEY" {
|
||||
case "PRIVATE KEY":
|
||||
klog.V(10).Infof("Parsing pem block: %q", block.Type)
|
||||
k, err := x509.ParsePKCS8PrivateKey(block.Bytes)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return k.(crypto.Signer), nil
|
||||
} else {
|
||||
default:
|
||||
klog.Infof("Ignoring unexpected PEM block: %q", block.Type)
|
||||
}
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue