forked from LaconicNetwork/kompose
Support hostname and domainname
This commit is contained in:
parent
b141064ef4
commit
88b8e316b9
@ -40,6 +40,7 @@ __Glossary:__
|
||||
| depends_on | x | x | x | | |
|
||||
| dns | x | x | x | | Not used within Kubernetes. Kubernetes uses a managed DNS server |
|
||||
| dns_search | x | x | x | | See `dns` key |
|
||||
| dommainname | ✓ | ✓ | ✓ | Pod.Spec.SubDomain |
|
||||
| tmpfs | ✓ | ✓ | ✓ | Pod.Spec.Containers.Volumes.EmptyDir | Creates emptyDirvolume with medium set to Memory & mounts given directory inside container |
|
||||
| entrypoint | ✓ | ✓ | ✓ | Pod.Spec.Container.Command | Same as command |
|
||||
| env_file | n | n | ✓ | | |
|
||||
@ -50,6 +51,7 @@ __Glossary:__
|
||||
| extra_hosts | n | n | n | | |
|
||||
| group_add | ✓ | ✓ | ✓ | | |
|
||||
| healthcheck | - | n | ✓ | | |
|
||||
| hostname | ✓ | ✓ | ✓ | Pod.Spec.HostName | |
|
||||
| image | ✓ | ✓ | ✓ | Deployment.Spec.Containers.Image | |
|
||||
| isolation | x | x | x | | Not applicable as this applies to Windows with HyperV support |
|
||||
| labels | ✓ | ✓ | ✓ | Metadata.Annotations | |
|
||||
|
||||
@ -69,6 +69,8 @@ type ServiceConfig struct {
|
||||
Port []Ports `compose:"ports"`
|
||||
Command []string `compose:"command"`
|
||||
WorkingDir string `compose:""`
|
||||
DomainName string `compose:"domainname"`
|
||||
HostName string `compose:"hostname"`
|
||||
Args []string `compose:"args"`
|
||||
VolList []string `compose:"volumes"`
|
||||
Network []string `compose:"network"`
|
||||
|
||||
@ -53,11 +53,9 @@ func checkUnsupportedKey(composeProject *project.Project) []string {
|
||||
"DependsOn": false,
|
||||
"DNS": false,
|
||||
"DNSSearch": false,
|
||||
"DomainName": false,
|
||||
"EnvFile": false,
|
||||
"ExternalLinks": false,
|
||||
"ExtraHosts": false,
|
||||
"Hostname": false,
|
||||
"Ipc": false,
|
||||
"Logging": false,
|
||||
"MacAddress": false,
|
||||
|
||||
@ -318,7 +318,7 @@ func TestUnsupportedKeys(t *testing.T) {
|
||||
}{
|
||||
"With Networks (service and root level)": {
|
||||
projectWithNetworks,
|
||||
[]string{"root level networks", "root level volumes", "hostname", "networks"},
|
||||
[]string{"root level networks", "root level volumes", "networks"},
|
||||
},
|
||||
"Empty Networks on Service level": {
|
||||
projectWithEmptyNetwork,
|
||||
|
||||
@ -199,6 +199,8 @@ func libComposeToKomposeMapping(composeObject *project.Project) (kobject.Kompose
|
||||
log.Infof("Container name in service %q has been changed from %q to %q", name, composeServiceConfig.ContainerName, newName)
|
||||
}
|
||||
serviceConfig.Command = composeServiceConfig.Entrypoint
|
||||
serviceConfig.HostName = composeServiceConfig.Hostname
|
||||
serviceConfig.DomainName = composeServiceConfig.DomainName
|
||||
serviceConfig.Args = composeServiceConfig.Command
|
||||
serviceConfig.Dockerfile = composeServiceConfig.Build.Dockerfile
|
||||
serviceConfig.BuildArgs = composeServiceConfig.Build.Args
|
||||
|
||||
@ -241,6 +241,8 @@ func dockerComposeToKomposeMapping(composeObject *types.Config) (kobject.Kompose
|
||||
serviceConfig.Command = composeServiceConfig.Entrypoint
|
||||
serviceConfig.Args = composeServiceConfig.Command
|
||||
serviceConfig.Labels = composeServiceConfig.Labels
|
||||
serviceConfig.HostName = composeServiceConfig.Hostname
|
||||
serviceConfig.DomainName = composeServiceConfig.DomainName
|
||||
|
||||
//
|
||||
// Deploy keys
|
||||
|
||||
@ -514,6 +514,15 @@ func (k *Kubernetes) UpdateKubernetesObjects(name string, service kobject.Servic
|
||||
default:
|
||||
return errors.New("Unknown restart policy " + service.Restart + " for service " + name)
|
||||
}
|
||||
|
||||
// Configure hostname/domain_name settings
|
||||
if service.HostName != "" {
|
||||
template.Spec.Hostname = service.HostName
|
||||
}
|
||||
if service.DomainName != "" {
|
||||
template.Spec.Subdomain = service.DomainName
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@ -261,6 +261,30 @@ cmd="kompose -f $KOMPOSE_ROOT/script/test/fixtures/restart-options/docker-compos
|
||||
sed -e "s;%VERSION%;$version;g" -e "s;%CMD%;$cmd;g" "$KOMPOSE_ROOT/script/test/fixtures/restart-options/output-os-restart-unless-stopped.json" > /tmp/output-os.json
|
||||
convert::expect_success_and_warning "$cmd" /tmp/output-os.json
|
||||
|
||||
|
||||
|
||||
#####
|
||||
# Test related to hostname/domainname in docker-compose
|
||||
# kubernetes test
|
||||
cmd="kompose -f $KOMPOSE_ROOT/script/test/fixtures/domain/docker-compose.yaml convert --stdout -j"
|
||||
sed -e "s;%VERSION%;$version;g" -e "s;%CMD%;$cmd;g" "$KOMPOSE_ROOT/script/test/fixtures/domain/output-k8s.json" > /tmp/output-k8s.json
|
||||
convert::expect_success "$cmd" /tmp/output-k8s.json
|
||||
|
||||
cmd="kompose -f $KOMPOSE_ROOT/script/test/fixtures/domain/docker-compose-v3.yaml convert --stdout -j"
|
||||
sed -e "s;%VERSION%;$version;g" -e "s;%CMD%;$cmd;g" "$KOMPOSE_ROOT/script/test/fixtures/domain/output-k8s.json" > /tmp/output-k8s.json
|
||||
convert::expect_success "$cmd" /tmp/output-k8s.json
|
||||
|
||||
|
||||
# openshift test
|
||||
cmd="kompose --provider openshift -f $KOMPOSE_ROOT/script/test/fixtures/domain/docker-compose.yaml convert --stdout -j"
|
||||
sed -e "s;%VERSION%;$version;g" -e "s;%CMD%;$cmd;g" "$KOMPOSE_ROOT/script/test/fixtures/domain/output-os.json" > /tmp/output-os.json
|
||||
convert::expect_success "$cmd" /tmp/output-os.json
|
||||
|
||||
cmd="kompose --provider openshift -f $KOMPOSE_ROOT/script/test/fixtures/domain/docker-compose-v3.yaml convert --stdout -j"
|
||||
sed -e "s;%VERSION%;$version;g" -e "s;%CMD%;$cmd;g" "$KOMPOSE_ROOT/script/test/fixtures/domain/output-os.json" > /tmp/output-os.json
|
||||
convert::expect_success "$cmd" /tmp/output-os.json
|
||||
|
||||
|
||||
######
|
||||
# Test key-only environment variable
|
||||
export $(cat $KOMPOSE_ROOT/script/test/fixtures/keyonly-envs/envs)
|
||||
@ -448,9 +472,9 @@ sed -e "s;%VERSION%;$version;g" -e "s;%CMD%;$cmd;g" $KOMPOSE_ROOT/script/test/f
|
||||
convert::expect_success_and_warning "$cmd" "/tmp/output-k8s.json" "Volume mount on the host "\"."\" isn't supported - ignoring path on the host"
|
||||
|
||||
#Failing test for `--volumes` option
|
||||
convert::expect_failure "kompose convert --stdout -j -f $KOMPOSE_ROOT/script/test/fixtures/change-in-volume/docker-compose.yaml --volumes foobar"
|
||||
convert::expect_failure "kompose convert --stdout -j -f $KOMPOSE_ROOT/script/test/fixtures/change-in-volume/docker-compose.yml --volumes foobar"
|
||||
|
||||
# Test related to support docker-compose.yaml beside docker-compose.yml
|
||||
# Test related to support docker-compose.yml beside docker-compose.yml
|
||||
# Store the original path
|
||||
CURRENT_DIR=$(pwd)
|
||||
# Kubernets test
|
||||
@ -543,7 +567,7 @@ convert::expect_success "$cmd" "/tmp/output-k8s.json"
|
||||
|
||||
|
||||
# Test that two files that are different versions fail
|
||||
convert::expect_failure "kompose convert --stdout -j -f $KOMPOSE_ROOT/script/test/fixtures/v3/docker-compose.yaml -f $KOMPOSE_ROOT/script/test/fixtures/etherpad/docker-compose.yml"
|
||||
convert::expect_failure "kompose convert --stdout -j -f $KOMPOSE_ROOT/script/test/fixtures/v3/docker-compose.yaml -f $KOMPOSE_ROOT/script/test/fixtures/etherpad/docker-compose.yaml"
|
||||
|
||||
# Kubernetes
|
||||
cmd="kompose convert --stdout -j -f $KOMPOSE_ROOT/script/test/fixtures/v3/docker-compose.yaml"
|
||||
|
||||
6
script/test/fixtures/domain/docker-compose-v3.yaml
vendored
Normal file
6
script/test/fixtures/domain/docker-compose-v3.yaml
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
version: '3'
|
||||
services:
|
||||
dns:
|
||||
image: phensley/docker-dns
|
||||
hostname: affy
|
||||
domainname: affy.com
|
||||
6
script/test/fixtures/domain/docker-compose.yaml
vendored
Normal file
6
script/test/fixtures/domain/docker-compose.yaml
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
version: 2
|
||||
services:
|
||||
dns:
|
||||
image: phensley/docker-dns
|
||||
hostname: affy
|
||||
domainname: affy.com
|
||||
78
script/test/fixtures/domain/output-k8s.json
vendored
Normal file
78
script/test/fixtures/domain/output-k8s.json
vendored
Normal file
@ -0,0 +1,78 @@
|
||||
{
|
||||
"kind": "List",
|
||||
"apiVersion": "v1",
|
||||
"metadata": {},
|
||||
"items": [
|
||||
{
|
||||
"kind": "Service",
|
||||
"apiVersion": "v1",
|
||||
"metadata": {
|
||||
"name": "dns",
|
||||
"creationTimestamp": null,
|
||||
"labels": {
|
||||
"io.kompose.service": "dns"
|
||||
},
|
||||
"annotations": {
|
||||
"kompose.cmd": "%CMD%",
|
||||
"kompose.version": "%VERSION%"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"ports": [
|
||||
{
|
||||
"name": "headless",
|
||||
"port": 55555,
|
||||
"targetPort": 0
|
||||
}
|
||||
],
|
||||
"selector": {
|
||||
"io.kompose.service": "dns"
|
||||
},
|
||||
"clusterIP": "None"
|
||||
},
|
||||
"status": {
|
||||
"loadBalancer": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "Deployment",
|
||||
"apiVersion": "extensions/v1beta1",
|
||||
"metadata": {
|
||||
"name": "dns",
|
||||
"creationTimestamp": null,
|
||||
"labels": {
|
||||
"io.kompose.service": "dns"
|
||||
},
|
||||
"annotations": {
|
||||
"kompose.cmd": "%CMD%",
|
||||
"kompose.version": "%VERSION%"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"replicas": 1,
|
||||
"template": {
|
||||
"metadata": {
|
||||
"creationTimestamp": null,
|
||||
"labels": {
|
||||
"io.kompose.service": "dns"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"containers": [
|
||||
{
|
||||
"name": "dns",
|
||||
"image": "phensley/docker-dns",
|
||||
"resources": {}
|
||||
}
|
||||
],
|
||||
"restartPolicy": "Always",
|
||||
"hostname": "affy",
|
||||
"subdomain": "affy.com"
|
||||
}
|
||||
},
|
||||
"strategy": {}
|
||||
},
|
||||
"status": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
130
script/test/fixtures/domain/output-os.json
vendored
Normal file
130
script/test/fixtures/domain/output-os.json
vendored
Normal file
@ -0,0 +1,130 @@
|
||||
{
|
||||
"kind": "List",
|
||||
"apiVersion": "v1",
|
||||
"metadata": {},
|
||||
"items": [
|
||||
{
|
||||
"kind": "Service",
|
||||
"apiVersion": "v1",
|
||||
"metadata": {
|
||||
"name": "dns",
|
||||
"creationTimestamp": null,
|
||||
"labels": {
|
||||
"io.kompose.service": "dns"
|
||||
},
|
||||
"annotations": {
|
||||
"kompose.cmd": "%CMD%",
|
||||
"kompose.version": "%VERSION%"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"ports": [
|
||||
{
|
||||
"name": "headless",
|
||||
"port": 55555,
|
||||
"targetPort": 0
|
||||
}
|
||||
],
|
||||
"selector": {
|
||||
"io.kompose.service": "dns"
|
||||
},
|
||||
"clusterIP": "None"
|
||||
},
|
||||
"status": {
|
||||
"loadBalancer": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "DeploymentConfig",
|
||||
"apiVersion": "v1",
|
||||
"metadata": {
|
||||
"name": "dns",
|
||||
"creationTimestamp": null,
|
||||
"labels": {
|
||||
"io.kompose.service": "dns"
|
||||
},
|
||||
"annotations": {
|
||||
"kompose.cmd": "%CMD%",
|
||||
"kompose.version": "%VERSION%"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"strategy": {
|
||||
"resources": {}
|
||||
},
|
||||
"triggers": [
|
||||
{
|
||||
"type": "ConfigChange"
|
||||
},
|
||||
{
|
||||
"type": "ImageChange",
|
||||
"imageChangeParams": {
|
||||
"automatic": true,
|
||||
"containerNames": [
|
||||
"dns"
|
||||
],
|
||||
"from": {
|
||||
"kind": "ImageStreamTag",
|
||||
"name": "dns:latest"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"replicas": 1,
|
||||
"test": false,
|
||||
"selector": {
|
||||
"io.kompose.service": "dns"
|
||||
},
|
||||
"template": {
|
||||
"metadata": {
|
||||
"creationTimestamp": null,
|
||||
"labels": {
|
||||
"io.kompose.service": "dns"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"containers": [
|
||||
{
|
||||
"name": "dns",
|
||||
"image": " ",
|
||||
"resources": {}
|
||||
}
|
||||
],
|
||||
"restartPolicy": "Always",
|
||||
"hostname": "affy",
|
||||
"subdomain": "affy.com"
|
||||
}
|
||||
}
|
||||
},
|
||||
"status": {}
|
||||
},
|
||||
{
|
||||
"kind": "ImageStream",
|
||||
"apiVersion": "v1",
|
||||
"metadata": {
|
||||
"name": "dns",
|
||||
"creationTimestamp": null,
|
||||
"labels": {
|
||||
"io.kompose.service": "dns"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"tags": [
|
||||
{
|
||||
"name": "latest",
|
||||
"annotations": null,
|
||||
"from": {
|
||||
"kind": "DockerImage",
|
||||
"name": "phensley/docker-dns"
|
||||
},
|
||||
"generation": null,
|
||||
"importPolicy": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
"status": {
|
||||
"dockerImageRepository": ""
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -223,7 +223,9 @@
|
||||
"tty": true
|
||||
}
|
||||
],
|
||||
"restartPolicy": "OnFailure"
|
||||
"restartPolicy": "OnFailure",
|
||||
"hostname": "foo",
|
||||
"subdomain": "foo.com"
|
||||
},
|
||||
"status": {}
|
||||
},
|
||||
|
||||
@ -223,7 +223,9 @@
|
||||
"tty": true
|
||||
}
|
||||
],
|
||||
"restartPolicy": "OnFailure"
|
||||
"restartPolicy": "OnFailure",
|
||||
"hostname": "foo",
|
||||
"subdomain": "foo.com"
|
||||
},
|
||||
"status": {}
|
||||
},
|
||||
|
||||
Loading…
Reference in New Issue
Block a user