Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] master from kubernetes:master #28

Open
wants to merge 106 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
106 commits
Select commit Hold shift + click to select a range
45634be
Fix convert deployment log error (#1378)
hangyan May 1, 2021
fb3b225
Fix secret name error (#1379)
hangyan May 1, 2021
bd1abff
Fix labels merge error (#1380)
hangyan May 1, 2021
771ecbf
Fix intro doc error (#1382)
hangyan May 5, 2021
0b331d9
Fixed, #1385 (#1386)
james-song May 19, 2021
c51d595
actually use normalizeNetworkNames to produce valid network names (#1…
exokortex Jul 7, 2021
deb00f3
support multiple containers in a pod (#1394)
tk42 Jul 8, 2021
cfb16f2
release script: remove check for
kadel Jul 12, 2021
8c6fa3d
1.23.0 Release
kadel Jul 12, 2021
bc7d9f4
Merge pull request #1398 from kadel/release-1.23.0
k8s-ci-robot Jul 13, 2021
f7f987d
Add ServiceAccountName
tk42 Jul 23, 2021
0262c16
chore: update error for wrong volume type
Yiyiyimu Aug 4, 2021
4386b5a
Merge pull request #1402 from Yiyiyimu/patch-1
k8s-ci-robot Aug 5, 2021
6addbe5
fix: --build flag default change to local
zeromake Aug 6, 2021
bd52469
fix: revert --build flag, change push-image default is false
zeromake Aug 6, 2021
5a17ee4
fix the selector field of service resource
cnbailian Aug 6, 2021
3d43a1d
Merge pull request #1404 from cnbailian/fix-svc-selector
k8s-ci-robot Aug 6, 2021
33b646c
Merge pull request #1405 from zeromake/hotfix/build_local
k8s-ci-robot Aug 6, 2021
b605fd9
Add "--pvc-request-size" new command line parameter (#1406)
ithaiq Aug 7, 2021
ef47480
Fix build context (#1411)
lexcao Aug 11, 2021
82440ed
Support custom registry on pushing image
lexcao Aug 10, 2021
f78eed9
Add a separate test file about fundamental tests for local push image
lexcao Aug 11, 2021
abbe054
Add autocompletion for fish shell (#1412)
top Aug 11, 2021
acaf222
Add license for new files
lexcao Aug 11, 2021
f1c9d80
Add user guide on build and push image
lexcao Aug 11, 2021
0dd38ac
Polish document sentences and fix some grammar
lexcao Aug 11, 2021
b02ad5d
Merge pull request #1409 from lexcao/feat/image/registry
k8s-ci-robot Aug 11, 2021
998dbd7
Fixed LabelServiceAccountName
tk42 Aug 12, 2021
94bff75
Merge pull request #1401 from tk42/service_account
k8s-ci-robot Aug 12, 2021
b2dee80
Add storageClassName label to pvc manifest(#1413)
Wusuluren Aug 15, 2021
e8966d9
Fix kompose.image-pull-secret invalid issue when use compose configs …
xingjianhui Aug 23, 2021
473f54f
Add support for windows volume (#1417)
jayscodeasy Aug 24, 2021
e3c78d7
Add golangci-lint (#1420)
aiyijing Aug 27, 2021
e82fe96
Add support for negated placement constraint (#1419)
ichxxx Aug 27, 2021
0671410
Add support for bindata in cm (#1418)
hangyan Aug 29, 2021
2f08107
Fix misuse in struct kobject.ServiceConfig.Port (#1423)
ichxxx Aug 29, 2021
7c62953
1.24.0 Release (#1424)
hangyan Aug 29, 2021
8207146
Add install golangci-lint to project dir of bin (#1428)
aiyijing Sep 1, 2021
65fe33a
Add instruction to change directory to cloned repo while building. (#…
sbs2001 Sep 19, 2021
a4c784d
Document debian package. (#1432)
sbs2001 Sep 24, 2021
41cd310
Remove code for parsing DAB files (#1435)
sbs2001 Oct 1, 2021
6bd22ce
Upgrade Ingress apiversion (#1436)
hangyan Oct 1, 2021
9a6a24c
Update golang versions in ci (#1437)
hangyan Oct 1, 2021
5d7ed19
Code Refactor (#1438)
hangyan Oct 3, 2021
72ea6a3
Support group service by shared volumes (#1439)
hangyan Oct 3, 2021
8340b08
Fix typo: loadbalander -> loadbalancer (#1442)
kevmo314 Oct 13, 2021
c7ba832
Remove bundle test and it's fixtures (#1443)
sbs2001 Oct 17, 2021
a87dd94
Fix merge compose file's replicas error (#1446)
hangyan Oct 17, 2021
d029f2c
Add cmd tests for emptyvols and emptyDir (#1447)
sbs2001 Oct 17, 2021
6a5f21a
Fix typo in empty volume warning (#1441)
sbs2001 Oct 17, 2021
fe720df
1.25 Release (#1450)
hangyan Oct 23, 2021
ce46a5b
Update windows bin ext (#1451)
hangyan Oct 24, 2021
d55071e
Support tcp/http liveness/readiness probe (#1449)
ichxxx Nov 3, 2021
c921643
Add support for statefulset controller. (#1452)
sbs2001 Nov 4, 2021
8cb1b05
Add support for placement preferences docker-compose v3.3+ (#1425)
ichxxx Nov 4, 2021
6836599
Add make rule for darwin arm64 in cross target (#1455)
sbs2001 Nov 6, 2021
1c4ff96
Infer storage type using label (#1456)
sbs2001 Nov 13, 2021
40646f4
1.26.0 Release (#1460)
hangyan Nov 13, 2021
a46582b
Fix ImageStream tags in openshift provider mode (#1461)
sbs2001 Nov 20, 2021
034c271
Added more installation instructions (#1468)
Arian-D Jan 10, 2022
a9d05d5
1.26.1 Release (#1470)
cdrage Jan 10, 2022
ff4a65c
Add new Kompose site (#1474)
cdrage Jan 13, 2022
597e7b0
Add new kompose site (#1475)
cdrage Jan 13, 2022
bd94da0
Create CNAME
cdrage Jan 13, 2022
235a2ae
Delete CNAME
cdrage Jan 13, 2022
99936cf
Create CNAME
cdrage Jan 13, 2022
e2b5c98
Synchronize site and update .gitignore (#1477)
cdrage Jan 13, 2022
7b3b812
Update README for docs website (#1476)
cdrage Jan 13, 2022
b796ec0
Sync site
cdrage Jan 14, 2022
acf24e9
Fixed secret file locations to match results from docker-compose when…
campos-ddc Jan 19, 2022
4a8bd3f
Remove [file] from convert helptext
mac-chaffee Mar 9, 2022
8e94728
Merge pull request #1485 from mac-chaffee/fixups
k8s-ci-robot Mar 15, 2022
9857864
Add kompose.service.expose.ingress-class-name (#1486)
sergeyshevch Mar 15, 2022
734b88e
fix(v3): Added network name normalization in v3 parsing
sergeyshevch Mar 21, 2022
0964a7c
Fix build error on go1.18
darklore Mar 23, 2022
d976c81
Merge pull request #1490 from sergeyshevch/feature/fix-network-normal…
k8s-ci-robot Mar 24, 2022
1b040dd
Merge pull request #1493 from darklore/go1.18
k8s-ci-robot Mar 24, 2022
06bb4f5
fix daemonset creation (add selector)
realgam3 Jun 30, 2022
6512dd3
fix: change the port ID definition in kubernetes.go file (#1515)
AhmedGrati Aug 16, 2022
3a431dd
recommend to use 'go install @latest" for Go
dmitris Mar 14, 2022
9055f21
Merge pull request #1512 from realgam3/master
k8s-ci-robot Aug 23, 2022
ec62854
update packages to fix trivy vulnerability scan (#1508)
hookenz Aug 26, 2022
4f20198
Provide updated installation instructions (#1496)
suntorytimed Aug 26, 2022
20fbab4
Merge pull request #1478 from campos-ddc/fix-secret-file-locations
k8s-ci-robot Aug 29, 2022
a4413b2
Merge pull request #1488 from dmitris/patch-1
kadel Sep 26, 2022
849c229
Fix(CI Pipeline): Update Kubernetes unit tests and CI Pipeline config…
AhmedGrati Nov 12, 2022
fd7b751
Fix container name (#1528)
AhmedGrati Nov 13, 2022
b0ed6a2
1.27.0 Release (#1534)
cdrage Nov 18, 2022
e0e69ae
Update release script (#1535)
cdrage Nov 18, 2022
089e946
remove sync docs from ci (#1536)
cdrage Nov 18, 2022
acb8046
Fix environment variables interpolation (#1524)
AhmedGrati Nov 19, 2022
af82f7e
fix all known trivy scan vulnerabilities (#1516)
hookenz Nov 19, 2022
36593e8
Update e2e tests (#1538)
AhmedGrati Nov 21, 2022
4c14b06
chore: add AhmedGrati as owner of Kompose (#1540)
AhmedGrati Nov 22, 2022
91391eb
Fix: Make the out flag print to one file using seperator (#1541)
AhmedGrati Dec 1, 2022
7304bb6
fix: update match output function (#1546)
AhmedGrati Dec 8, 2022
2ad5745
feat: migrate from libcompose to compose-go (#1547)
Lctrs Jan 12, 2023
e85329f
Remove old scripts, modify manual syncing doc script (#1549)
cdrage Jan 12, 2023
d4001c9
Fix CI (#1550)
cdrage Jan 13, 2023
cb41c16
chore: require go >=1.18, bump deps and get rid of replace directives…
Lctrs Jan 13, 2023
eb9f15b
owners: Remove surajssd (#1555)
surajssd Jan 19, 2023
26d28d5
remove unused js files (#1561)
cdrage Jan 23, 2023
c413701
1.28.0 Release (#1562)
cdrage Jan 23, 2023
c70a945
fix small errors in release script (#1563)
cdrage Jan 24, 2023
57bd544
corrected broken diagram link in site (#1566)
kundan2707 Jan 31, 2023
b3d4aec
k8sutils: Update helm template to use apiVersion v2 (#1567)
mrueg Feb 1, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add ServiceAccountName
The label `kompose.service.accountname` defines the service account name
to provide the credential info of the pod.
  • Loading branch information
tk42 committed Jul 23, 2021
commit f7f987de498971f27b9966c44837d66d8baf1c04
13 changes: 13 additions & 0 deletions docs/user-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,19 @@ services:
- "6379"
```

- `kompose.service.accountname` defines the service account name to provide the credential info of the pod.

For example:

```yaml
version: '3.4'
services:
app:
image: python
labels:
kompose.service.accountname: "my-service"
```

- `kompose.image-pull-secret` defines a kubernetes secret name for imagePullSecrets podspec field.
This secret will be used for pulling private images.
For example:
Expand Down
4 changes: 3 additions & 1 deletion pkg/loader/compose/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,10 @@ const (
LabelNodePortPort = "kompose.service.nodeport.port"
// LabelServiceExpose defines if the service needs to be made accessible from outside the cluster or not
LabelServiceExpose = "kompose.service.expose"
// LabelServiceExposeTLSSecret provides the name of the TLS secret to use with the Kubernetes ingress controller
// LabelServiceExposeTLSSecret provides the name of the TLS secret to use with the Kubernetes ingress controller
LabelServiceExposeTLSSecret = "kompose.service.expose.tls-secret"
// LabelServiceAccountName defines the service account name to provide the credential info of the pod.
LabelServiceAccountName = "kompose.service.accountname"
// LabelControllerType defines the type of controller to be created
LabelControllerType = "kompose.controller.type"
// LabelImagePullSecret defines a secret name for kubernetes ImagePullSecrets
Expand Down
4 changes: 4 additions & 0 deletions pkg/transformer/kubernetes/k8sutils.go
Original file line number Diff line number Diff line change
Expand Up @@ -670,6 +670,10 @@ func (k *Kubernetes) UpdateKubernetesObjects(name string, service kobject.Servic
template.Spec.Subdomain = service.DomainName
}

if serviceAccountName, ok := service.Labels[compose.LabelServiceAccountName]; ok {
template.Spec.ServiceAccountName = serviceAccountName
}

return nil
}

Expand Down
29 changes: 29 additions & 0 deletions pkg/transformer/kubernetes/k8sutils_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (
"testing"

"github.com/kubernetes/kompose/pkg/kobject"
"github.com/kubernetes/kompose/pkg/loader/compose"
"github.com/kubernetes/kompose/pkg/testutils"
"github.com/pkg/errors"
appsv1 "k8s.io/api/apps/v1"
Expand Down Expand Up @@ -487,3 +488,31 @@ func TestDurationStrToSecondsInt(t *testing.T) {
}
}
}

func TestServiceWithServiceAccount(t *testing.T) {
assertServiceAccountName := "my-service"

service := kobject.ServiceConfig{
ContainerName: "name",
Image: "image",
Port: []kobject.Ports{{HostPort: 55555}},
Labels: map[string]string{compose.LabelServiceAccountName: assertServiceAccountName},
}

komposeObject := kobject.KomposeObject{
ServiceConfigs: map[string]kobject.ServiceConfig{"app": service},
}
k := Kubernetes{}

objects, err := k.Transform(komposeObject, kobject.ConvertOptions{CreateD: true})
if err != nil {
t.Error(errors.Wrap(err, "k.Transform failed"))
}
for _, obj := range objects {
if deployment, ok := obj.(*appsv1.Deployment); ok {
if deployment.Spec.Template.Spec.ServiceAccountName != assertServiceAccountName {
t.Errorf("Expected %v returned, got %v", assertServiceAccountName, deployment.Spec.Template.Spec.ServiceAccountName)
}
}
}
}
4 changes: 4 additions & 0 deletions pkg/transformer/kubernetes/kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -1261,6 +1261,10 @@ func (k *Kubernetes) Transform(komposeObject kobject.KomposeObject, opt kobject.
TerminationGracePeriodSeconds(name, service),
)

if serviceAccountName, ok := service.Labels[compose.LabelServiceAccountName]; ok {
podSpec.Append(ServiceAccountName(serviceAccountName))
}

err = k.UpdateKubernetesObjectsMultipleContainers(name, service, opt, &objects, podSpec)
if err != nil {
return nil, errors.Wrap(err, "Error transforming Kubernetes objects")
Expand Down
57 changes: 57 additions & 0 deletions pkg/transformer/kubernetes/kubernetes_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -639,3 +639,60 @@ func TestMultipleContainersInPod(t *testing.T) {
}
}
}

func TestServiceAccountNameOnMultipleContainers(t *testing.T) {
groupName := "pod_group"
serviceAccountName := "my-service"

createConfigs := func(labels map[string]string) map[string]kobject.ServiceConfig {
createConfig := func(name string) kobject.ServiceConfig {
config := newServiceConfig()
config.Labels = map[string]string{compose.LabelServiceGroup: groupName}
for k, v := range labels {
config.Labels[k] = v
}
config.Name = name
config.ContainerName = ""
config.Volumes = []kobject.Volumes{
{
VolumeName: "mountVolume",
MountPath: "/data",
},
}
return config
}
return map[string]kobject.ServiceConfig{"app1": createConfig("app1"), "app2": createConfig("app2")}
}

testCases := map[string]struct {
komposeObject kobject.KomposeObject
expectedLabelNames []string
}{
"Converted multiple containers with ServiceAccountName": {
kobject.KomposeObject{
ServiceConfigs: createConfigs(map[string]string{compose.LabelServiceAccountName: serviceAccountName}),
}, []string{serviceAccountName}},
}

for name, test := range testCases {
t.Log("Test case:", name)
k := Kubernetes{}
// Run Transform
objs, err := k.Transform(test.komposeObject, kobject.ConvertOptions{MultipleContainerMode: true, CreateD: true})
if err != nil {
t.Error(errors.Wrap(err, "k.Transform failed"))
}

// Check results
for _, obj := range objs {
if deployment, ok := obj.(*appsv1.Deployment); ok {
if deployment.Name != groupName {
t.Errorf("Expected %v returned, got %v", groupName, deployment.Name)
}
if deployment.Spec.Template.Spec.ServiceAccountName != serviceAccountName {
t.Errorf("Expected %v returned, got %v", serviceAccountName, deployment.Spec.Template.Spec.ServiceAccountName)
}
}
}
}
}
6 changes: 6 additions & 0 deletions pkg/transformer/kubernetes/podspec.go
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,12 @@ func ReadinessProbe(service kobject.ServiceConfig) PodSpecOption {
}
}

func ServiceAccountName(serviceAccountName string) PodSpecOption {
return func(podSpec *PodSpec) {
podSpec.ServiceAccountName = serviceAccountName
}
}

func (podSpec *PodSpec) Append(ops ...PodSpecOption) *PodSpec {
for _, option := range ops {
option(podSpec)
Expand Down