From 4f91d0b9bdae945c53cc4777a9e8c6707b18348e Mon Sep 17 00:00:00 2001 From: Manuel Hutter Date: Mon, 14 Oct 2024 13:10:50 +0200 Subject: [PATCH] chore: Bump Docker Compose deps Signed-off-by: Manuel Hutter --- go.mod | 6 ++---- go.sum | 12 ++++-------- main.go | 12 ++++++------ pkg/converter/converter.go | 11 +++++------ pkg/ir/ir.go | 7 ++++--- .../demo/manifests/portal-oasp-deployment.yaml | 8 ++++---- .../demo/manifests/portal-oasp-ingress.yaml | 12 ++++++------ .../demo/manifests/portal-oasp-service.yaml | 6 +++--- tests/golden/empty-env-vars-list/compose.yml | 2 -- tests/golden/empty-env-vars-map/compose.yml | 2 -- .../external-converter/docker-compose.yml | 3 +-- tests/golden/noports/compose.yml | 1 - tests/golden/parts-ingress/compose.yml | 3 +-- tests/golden/parts/docker-compose-prod.yml | 17 ++++++++--------- tests/golden/parts/docker-compose.yml | 1 - .../nginx-frontend-oasp-deployment.yaml | 4 ++-- 16 files changed, 46 insertions(+), 61 deletions(-) diff --git a/go.mod b/go.mod index fec6593..75cdb3d 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.22.0 toolchain go1.22.7 require ( - github.com/compose-spec/compose-go v1.20.2 + github.com/compose-spec/compose-go/v2 v2.3.0 github.com/docker/go-units v0.5.0 github.com/joho/godotenv v1.5.1 github.com/sirupsen/logrus v1.9.3 @@ -26,18 +26,16 @@ require ( github.com/docker/go-connections v0.4.0 // indirect github.com/fxamacker/cbor/v2 v2.7.0 // indirect github.com/go-logr/logr v1.4.2 // indirect + github.com/go-viper/mapstructure/v2 v2.0.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/imdario/mergo v0.3.16 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect github.com/mattn/go-shellwords v1.0.12 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moby/term v0.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/opencontainers/go-digest v1.0.0 // indirect - github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect diff --git a/go.sum b/go.sum index b38163e..c322789 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/compose-spec/compose-go v1.20.2 h1:u/yfZHn4EaHGdidrZycWpxXgFffjYULlTbRfJ51ykjQ= -github.com/compose-spec/compose-go v1.20.2/go.mod h1:+MdqXV4RA7wdFsahh/Kb8U0pAJqkg7mr4PM9tFKU8RM= +github.com/compose-spec/compose-go/v2 v2.3.0 h1:5eomqgNcs/GqVknPtXF68V3muc67cOdXD35zCXn1aes= +github.com/compose-spec/compose-go/v2 v2.3.0/go.mod h1:lFN0DrMxIncJGYAXTfWuajfwj5haBJqrBkarHcnjJKc= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -18,6 +18,8 @@ github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= 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/go-viper/mapstructure/v2 v2.0.0 h1:dhn8MZ1gZ0mzeodTG3jt5Vj/o87xZKuNAprG2mQfMfc= +github.com/go-viper/mapstructure/v2 v2.0.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -26,8 +28,6 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -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/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -42,8 +42,6 @@ github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhn github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk= github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -53,8 +51,6 @@ 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/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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= diff --git a/main.go b/main.go index a48f46d..b3be929 100644 --- a/main.go +++ b/main.go @@ -5,8 +5,8 @@ import ( "os" "time" - composeLoader "github.com/compose-spec/compose-go/loader" - composeTypes "github.com/compose-spec/compose-go/types" + composeLoader "github.com/compose-spec/compose-go/v2/loader" + composeTypes "github.com/compose-spec/compose-go/v2/types" "github.com/joho/godotenv" "github.com/sirupsen/logrus" "github.com/spf13/pflag" @@ -68,7 +68,7 @@ func Main(args []string) int { for _, shellEnvFile := range shellEnvFiles.Values { err := godotenv.Load(shellEnvFile) if err != nil { - logrus.Error(err) + logrus.Errorf("Loading dotfiles: %s", err) return 1 } } @@ -91,9 +91,9 @@ func Main(args []string) int { ConfigFiles: composeConfigFiles, Environment: env, } - project, err := composeLoader.Load(configDetails) + project, err := composeLoader.Load(configDetails, func(opts *composeLoader.Options) { opts.SetProjectName("k8ify", true) }) if err != nil { - logrus.Error(err) + logrus.Errorf("Loading compose configuration: %s", err) return 1 } @@ -117,7 +117,7 @@ func Main(args []string) int { err = internal.WriteManifests(config.OutputDir, objects) if err != nil { - logrus.Error(err) + logrus.Errorf("Writing manifests: %s", err) return 1 } diff --git a/pkg/converter/converter.go b/pkg/converter/converter.go index 0671e33..0affd12 100644 --- a/pkg/converter/converter.go +++ b/pkg/converter/converter.go @@ -8,10 +8,9 @@ import ( "os" "os/exec" "sort" - "strconv" "strings" - composeTypes "github.com/compose-spec/compose-go/types" + composeTypes "github.com/compose-spec/compose-go/v2/types" "github.com/sirupsen/logrus" "github.com/vshn/k8ify/pkg/ir" "github.com/vshn/k8ify/pkg/util" @@ -602,8 +601,8 @@ func composeServiceToResourceRequirements(composeService composeTypes.ServiceCon if composeService.Deploy != nil { if composeService.Deploy.Resources.Reservations != nil { // NanoCPU appears to be a misnomer, it's actually a float indicating the number of CPU cores, nothing 'nano' - cpuRequest, err := strconv.ParseFloat(composeService.Deploy.Resources.Reservations.NanoCPUs, 64) - if err == nil && cpuRequest > 0 { + cpuRequest := composeService.Deploy.Resources.Reservations.NanoCPUs + if cpuRequest > 0 { requestsMap["cpu"] = resource.MustParse(fmt.Sprintf("%f", cpuRequest)) limitsMap["cpu"] = resource.MustParse(fmt.Sprintf("%f", cpuRequest*10.0)) } @@ -616,8 +615,8 @@ func composeServiceToResourceRequirements(composeService composeTypes.ServiceCon if composeService.Deploy.Resources.Limits != nil { // If there are explicit limits configured we ignore the defaults calculated from the requests limitsMap = core.ResourceList{} - cpuLimit, err := strconv.ParseFloat(composeService.Deploy.Resources.Limits.NanoCPUs, 64) - if err == nil && cpuLimit > 0 { + cpuLimit := composeService.Deploy.Resources.Limits.NanoCPUs + if cpuLimit > 0 { limitsMap["cpu"] = resource.MustParse(fmt.Sprintf("%f", cpuLimit)) } memLimit := composeService.Deploy.Resources.Limits.MemoryBytes diff --git a/pkg/ir/ir.go b/pkg/ir/ir.go index 3fc7816..c27161c 100644 --- a/pkg/ir/ir.go +++ b/pkg/ir/ir.go @@ -1,11 +1,12 @@ package ir import ( - composeTypes "github.com/compose-spec/compose-go/types" - "github.com/vshn/k8ify/pkg/util" - "k8s.io/apimachinery/pkg/api/resource" "strconv" "strings" + + composeTypes "github.com/compose-spec/compose-go/v2/types" + "github.com/vshn/k8ify/pkg/util" + "k8s.io/apimachinery/pkg/api/resource" ) type Inputs struct { diff --git a/tests/golden/demo/manifests/portal-oasp-deployment.yaml b/tests/golden/demo/manifests/portal-oasp-deployment.yaml index c518516..85b3622 100644 --- a/tests/golden/demo/manifests/portal-oasp-deployment.yaml +++ b/tests/golden/demo/manifests/portal-oasp-deployment.yaml @@ -46,20 +46,20 @@ spec: failureThreshold: 3 httpGet: path: /health/alive - port: 8000 + port: 9000 scheme: HTTP periodSeconds: 30 successThreshold: 1 timeoutSeconds: 60 name: portal-oasp ports: - - containerPort: 8000 - containerPort: 9000 + - containerPort: 8000 readinessProbe: failureThreshold: 4 httpGet: path: /health/ready - port: 8000 + port: 9000 scheme: HTTPS initialDelaySeconds: 5 periodSeconds: 31 @@ -76,7 +76,7 @@ spec: failureThreshold: 30 httpGet: path: /health/started - port: 8000 + port: 9000 scheme: HTTP periodSeconds: 10 successThreshold: 1 diff --git a/tests/golden/demo/manifests/portal-oasp-ingress.yaml b/tests/golden/demo/manifests/portal-oasp-ingress.yaml index 1d99bdd..e92ea7a 100644 --- a/tests/golden/demo/manifests/portal-oasp-ingress.yaml +++ b/tests/golden/demo/manifests/portal-oasp-ingress.yaml @@ -10,32 +10,32 @@ metadata: name: portal-oasp spec: rules: - - host: portal-k8ify.apps.cloudscale-lpg-2.appuio.cloud + - host: portal-k8ify-admin.apps.cloudscale-lpg-2.appuio.cloud http: paths: - backend: service: name: portal-oasp port: - number: 8001 + number: 9001 path: / pathType: Prefix - - host: portal-k8ify-admin.apps.cloudscale-lpg-2.appuio.cloud + - host: portal-k8ify.apps.cloudscale-lpg-2.appuio.cloud http: paths: - backend: service: name: portal-oasp port: - number: 9001 + number: 8001 path: / pathType: Prefix tls: - hosts: - - portal-k8ify.apps.cloudscale-lpg-2.appuio.cloud + - portal-k8ify-admin.apps.cloudscale-lpg-2.appuio.cloud secretName: portal-oasp - hosts: - - portal-k8ify-admin.apps.cloudscale-lpg-2.appuio.cloud + - portal-k8ify.apps.cloudscale-lpg-2.appuio.cloud secretName: portal-oasp status: loadBalancer: {} diff --git a/tests/golden/demo/manifests/portal-oasp-service.yaml b/tests/golden/demo/manifests/portal-oasp-service.yaml index 9d8ab11..d4be35c 100644 --- a/tests/golden/demo/manifests/portal-oasp-service.yaml +++ b/tests/golden/demo/manifests/portal-oasp-service.yaml @@ -8,12 +8,12 @@ metadata: name: portal-oasp spec: ports: - - name: "8001" - port: 8001 - targetPort: 8000 - name: "9001" port: 9001 targetPort: 9000 + - name: "8001" + port: 8001 + targetPort: 8000 selector: k8ify.ref-slug: oasp k8ify.service: portal diff --git a/tests/golden/empty-env-vars-list/compose.yml b/tests/golden/empty-env-vars-list/compose.yml index 30876b2..91a7389 100644 --- a/tests/golden/empty-env-vars-list/compose.yml +++ b/tests/golden/empty-env-vars-list/compose.yml @@ -1,4 +1,3 @@ -version: '3.4' services: pinger: image: pinger:4.0 @@ -7,4 +6,3 @@ services: - testempty2=$foo - testempty3=$bar - testnotempty=$baz - diff --git a/tests/golden/empty-env-vars-map/compose.yml b/tests/golden/empty-env-vars-map/compose.yml index 04914a0..00c5707 100644 --- a/tests/golden/empty-env-vars-map/compose.yml +++ b/tests/golden/empty-env-vars-map/compose.yml @@ -1,4 +1,3 @@ -version: '3.4' services: pinger: image: pinger:4.0 @@ -9,4 +8,3 @@ services: testempty4: testempty5: null testnotempty: $baz - diff --git a/tests/golden/external-converter/docker-compose.yml b/tests/golden/external-converter/docker-compose.yml index eb539a2..4368c93 100644 --- a/tests/golden/external-converter/docker-compose.yml +++ b/tests/golden/external-converter/docker-compose.yml @@ -1,4 +1,3 @@ -version: '3.4' services: mongo: labels: @@ -6,7 +5,7 @@ services: image: mongo:4 volumes: - mongo-data:/var/lib/mongodb - + volumes: mongo-data: labels: diff --git a/tests/golden/noports/compose.yml b/tests/golden/noports/compose.yml index ab351fa..0331b23 100644 --- a/tests/golden/noports/compose.yml +++ b/tests/golden/noports/compose.yml @@ -1,4 +1,3 @@ -version: '3.4' services: pinger: labels: diff --git a/tests/golden/parts-ingress/compose.yml b/tests/golden/parts-ingress/compose.yml index 1f98fde..f8f1d20 100644 --- a/tests/golden/parts-ingress/compose.yml +++ b/tests/golden/parts-ingress/compose.yml @@ -1,4 +1,3 @@ -version: '3.4' services: nginx-frontend: ports: @@ -8,6 +7,6 @@ services: image: php-backend:prod labels: k8ify.partOf: nginx-frontend - k8ify.expose: 'nginx-bypass.mywebapp.example.com' + k8ify.expose: "nginx-bypass.mywebapp.example.com" ports: - "1180-1190:4480" diff --git a/tests/golden/parts/docker-compose-prod.yml b/tests/golden/parts/docker-compose-prod.yml index e48c0fc..562d86a 100644 --- a/tests/golden/parts/docker-compose-prod.yml +++ b/tests/golden/parts/docker-compose-prod.yml @@ -1,4 +1,3 @@ -version: '3.4' services: nginx-frontend: image: nginx-frontend:prod @@ -6,21 +5,21 @@ services: replicas: 2 resources: reservations: - cpus: '1' + cpus: "1" memory: 2G labels: - k8ify.expose.80: 'mywebapp.example.com' + k8ify.expose.80: "mywebapp.example.com" k8ify.Ingress.annotations.cert-manager.io/cluster-issuer: letsencrypt-production php-backend: image: php-backend:prod labels: k8ify.partOf: nginx-frontend - k8ify.expose.4480: 'nginx-bypass.mywebapp.example.com' + k8ify.expose.4480: "nginx-bypass.mywebapp.example.com" k8ify.Ingress.annotations.cert-manager.io/cluster-issuer: letsencrypt-production deploy: resources: reservations: - cpus: '2' + cpus: "2" memory: 4G mongo: @@ -33,10 +32,10 @@ services: limits: memory: 8G reservations: - cpus: '0.5' + cpus: "0.5" memory: 4G ports: - - '127.0.0.1:27017:27017' + - "127.0.0.1:27017:27017" volumes: - mongodb_data:/data/db mongo-metrics-sidecar: @@ -44,13 +43,13 @@ services: deploy: resources: reservations: - cpus: '0.1' + cpus: "0.1" memory: 256M labels: k8ify.singleton: true k8ify.partOf: mongo ports: - - '127.0.0.1:33000:33000' + - "127.0.0.1:33000:33000" volumes: - mongodb_data:/data/db diff --git a/tests/golden/parts/docker-compose.yml b/tests/golden/parts/docker-compose.yml index 0239ef9..6a216d1 100644 --- a/tests/golden/parts/docker-compose.yml +++ b/tests/golden/parts/docker-compose.yml @@ -1,4 +1,3 @@ -version: '3.4' services: nginx-frontend: image: nginx-frontend:dev diff --git a/tests/golden/parts/manifests/nginx-frontend-oasp-deployment.yaml b/tests/golden/parts/manifests/nginx-frontend-oasp-deployment.yaml index 858d74a..a99366f 100644 --- a/tests/golden/parts/manifests/nginx-frontend-oasp-deployment.yaml +++ b/tests/golden/parts/manifests/nginx-frontend-oasp-deployment.yaml @@ -94,10 +94,10 @@ spec: port: 4480 timeoutSeconds: 60 volumeMounts: - - mountPath: /data/sessions - name: sessions - mountPath: /data/web name: webdata + - mountPath: /data/sessions + name: sessions restartPolicy: Always volumes: - name: sessions