Develop #138

Merged
metal3d merged 5 commits from develop into master 2025-07-13 13:37:31 +00:00
7 changed files with 47 additions and 6 deletions

2
.gitignore vendored
View File

@@ -28,3 +28,5 @@ __pycache__
.rpmmacros .rpmmacros
*.gpg *.gpg
katenary

View File

@@ -2,4 +2,5 @@ MD012: false
MD013: false MD013: false
MD022: false MD022: false
MD033: false MD033: false
MD041: false
MD046: false MD046: false

View File

@@ -731,7 +731,7 @@ func (s *Secret) Yaml() ([]byte, error)
Yaml returns the yaml representation of the secret. Yaml returns the yaml representation of the secret.
<a name="Service"></a> <a name="Service"></a>
## type [Service](<https://github.com/katenary/katenary/blob/develop/generator/service.go#L17-L20>) ## type [Service](<https://github.com/katenary/katenary/blob/develop/generator/service.go#L18-L21>)
Service is a kubernetes Service. Service is a kubernetes Service.
@@ -743,7 +743,7 @@ type Service struct {
``` ```
<a name="NewService"></a> <a name="NewService"></a>
### func [NewService](<https://github.com/katenary/katenary/blob/develop/generator/service.go#L23>) ### func [NewService](<https://github.com/katenary/katenary/blob/develop/generator/service.go#L24>)
```go ```go
func NewService(service types.ServiceConfig, appName string) *Service func NewService(service types.ServiceConfig, appName string) *Service
@@ -752,7 +752,7 @@ func NewService(service types.ServiceConfig, appName string) *Service
NewService creates a new Service from a compose service. NewService creates a new Service from a compose service.
<a name="Service.AddPort"></a> <a name="Service.AddPort"></a>
### func \(\*Service\) [AddPort](<https://github.com/katenary/katenary/blob/develop/generator/service.go#L52>) ### func \(\*Service\) [AddPort](<https://github.com/katenary/katenary/blob/develop/generator/service.go#L53>)
```go ```go
func (s *Service) AddPort(port types.ServicePortConfig, serviceName ...string) func (s *Service) AddPort(port types.ServicePortConfig, serviceName ...string)
@@ -761,7 +761,7 @@ func (s *Service) AddPort(port types.ServicePortConfig, serviceName ...string)
AddPort adds a port to the service. AddPort adds a port to the service.
<a name="Service.Filename"></a> <a name="Service.Filename"></a>
### func \(\*Service\) [Filename](<https://github.com/katenary/katenary/blob/develop/generator/service.go#L76>) ### func \(\*Service\) [Filename](<https://github.com/katenary/katenary/blob/develop/generator/service.go#L78>)
```go ```go
func (s *Service) Filename() string func (s *Service) Filename() string
@@ -770,7 +770,7 @@ func (s *Service) Filename() string
Filename returns the filename of the service. Filename returns the filename of the service.
<a name="Service.Yaml"></a> <a name="Service.Yaml"></a>
### func \(\*Service\) [Yaml](<https://github.com/katenary/katenary/blob/develop/generator/service.go#L81>) ### func \(\*Service\) [Yaml](<https://github.com/katenary/katenary/blob/develop/generator/service.go#L83>)
```go ```go
func (s *Service) Yaml() ([]byte, error) func (s *Service) Yaml() ([]byte, error)

View File

@@ -145,7 +145,7 @@ For more complete label usage, see [the labels page](labels.md).
### Work with Depends On? ### Work with Depends On?
Kubernetes does not provide service or pod starting detection from others pods. But katenary will create init containers Kubernetes does not provide service or pod starting detection from others pods. But Katenary will create `initContainer`
to make you able to wait for a service to respond. But you'll probably need to adapt a bit the compose file. to make you able to wait for a service to respond. But you'll probably need to adapt a bit the compose file.
See this compose file: See this compose file:

View File

@@ -5,3 +5,5 @@ pymdown-extensions==10.*
mkdocs-material==9.* mkdocs-material==9.*
mkdocs-material-extensions==1.* mkdocs-material-extensions==1.*
mkdocs-plugin-inline-svg-mod mkdocs-plugin-inline-svg-mod
beautifulsoup4==4.*
mkdocs-manpage[preprocess]

View File

@@ -1,6 +1,7 @@
package generator package generator
import ( import (
"fmt"
"katenary/utils" "katenary/utils"
"regexp" "regexp"
"strings" "strings"
@@ -59,6 +60,7 @@ func (s *Service) AddPort(port types.ServicePortConfig, serviceName ...string) {
if targetPort := utils.GetServiceNameByPort(int(port.Target)); targetPort == "" { if targetPort := utils.GetServiceNameByPort(int(port.Target)); targetPort == "" {
finalport = intstr.FromInt(int(port.Target)) finalport = intstr.FromInt(int(port.Target))
name = fmt.Sprintf("port-%d", port.Target)
} else { } else {
finalport = intstr.FromString(targetPort) finalport = intstr.FromString(targetPort)
name = targetPort name = targetPort

View File

@@ -47,3 +47,37 @@ services:
t.Errorf("Expected 2 ports, got %d", foundPort) t.Errorf("Expected 2 ports, got %d", foundPort)
} }
} }
func TestWithSeveralUnknownPorts(t *testing.T) {
composeFile := `
services:
multi:
image: nginx
ports:
- 12443
- 12480
labels:
katenary.v3/ingress: |-
port: 12443
`
tmpDir := setup(composeFile)
defer teardown(tmpDir)
currentDir, _ := os.Getwd()
os.Chdir(tmpDir)
defer os.Chdir(currentDir)
output := internalCompileTest(t, "-s", "templates/multi/service.yaml")
service := v1.Service{}
if err := yaml.Unmarshal([]byte(output), &service); err != nil {
t.Errorf(unmarshalError, err)
}
if len(service.Spec.Ports) != 2 {
t.Errorf("Expected 2 ports, got %d", len(service.Spec.Ports))
}
// ensure that both port names are different
if service.Spec.Ports[0].Name == service.Spec.Ports[1].Name {
t.Errorf("Expected different port names, got %s and %s", service.Spec.Ports[0].Name, service.Spec.Ports[1].Name)
}
}