Upgrade Ingress apiversion (#1436)

Signed-off-by: Hang Yan <hang.yan@hotmail.com>
This commit is contained in:
Hang Yan 2021-10-02 01:52:20 +08:00 committed by GitHub
parent 41cd3108d9
commit 6bd22ce565
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
49 changed files with 570 additions and 17 deletions

View File

@ -43,7 +43,6 @@ import (
appsv1 "k8s.io/api/apps/v1" appsv1 "k8s.io/api/apps/v1"
api "k8s.io/api/core/v1" api "k8s.io/api/core/v1"
networkingv1 "k8s.io/api/networking/v1" networkingv1 "k8s.io/api/networking/v1"
networkingv1beta1 "k8s.io/api/networking/v1beta1"
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
@ -431,36 +430,43 @@ func (k *Kubernetes) InitDS(name string, service kobject.ServiceConfig) *appsv1.
return ds return ds
} }
func (k *Kubernetes) initIngress(name string, service kobject.ServiceConfig, port int32) *networkingv1beta1.Ingress { func (k *Kubernetes) initIngress(name string, service kobject.ServiceConfig, port int32) *networkingv1.Ingress {
hosts := regexp.MustCompile("[ ,]*,[ ,]*").Split(service.ExposeService, -1) hosts := regexp.MustCompile("[ ,]*,[ ,]*").Split(service.ExposeService, -1)
ingress := &networkingv1beta1.Ingress{ ingress := &networkingv1.Ingress{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
Kind: "Ingress", Kind: "Ingress",
APIVersion: "extensions/v1beta1", APIVersion: "networking.k8s.io/v1",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: name, Name: name,
Labels: transformer.ConfigLabels(name), Labels: transformer.ConfigLabels(name),
Annotations: transformer.ConfigAnnotations(service), Annotations: transformer.ConfigAnnotations(service),
}, },
Spec: networkingv1beta1.IngressSpec{ Spec: networkingv1.IngressSpec{
Rules: make([]networkingv1beta1.IngressRule, len(hosts)), Rules: make([]networkingv1.IngressRule, len(hosts)),
}, },
} }
tlsHosts := make([]string, len(hosts)) tlsHosts := make([]string, len(hosts))
pathType := networkingv1.PathTypePrefix
for i, host := range hosts { for i, host := range hosts {
host, p := transformer.ParseIngressPath(host) host, p := transformer.ParseIngressPath(host)
ingress.Spec.Rules[i] = networkingv1beta1.IngressRule{ if p == "" {
IngressRuleValue: networkingv1beta1.IngressRuleValue{ p = "/"
HTTP: &networkingv1beta1.HTTPIngressRuleValue{ }
Paths: []networkingv1beta1.HTTPIngressPath{ ingress.Spec.Rules[i] = networkingv1.IngressRule{
IngressRuleValue: networkingv1.IngressRuleValue{
HTTP: &networkingv1.HTTPIngressRuleValue{
Paths: []networkingv1.HTTPIngressPath{
{ {
Path: p, Path: p,
Backend: networkingv1beta1.IngressBackend{ PathType: &pathType,
ServiceName: name, Backend: networkingv1.IngressBackend{
ServicePort: intstr.IntOrString{ Service: &networkingv1.IngressServiceBackend{
IntVal: port, Name: name,
Port: networkingv1.ServiceBackendPort{
Number: port,
},
}, },
}, },
}, },
@ -475,14 +481,14 @@ func (k *Kubernetes) initIngress(name string, service kobject.ServiceConfig, por
} }
if service.ExposeServiceTLS != "" { if service.ExposeServiceTLS != "" {
if service.ExposeServiceTLS != "true" { if service.ExposeServiceTLS != "true" {
ingress.Spec.TLS = []networkingv1beta1.IngressTLS{ ingress.Spec.TLS = []networkingv1.IngressTLS{
{ {
Hosts: tlsHosts, Hosts: tlsHosts,
SecretName: service.ExposeServiceTLS, SecretName: service.ExposeServiceTLS,
}, },
} }
} else { } else {
ingress.Spec.TLS = []networkingv1beta1.IngressTLS{ ingress.Spec.TLS = []networkingv1.IngressTLS{
{ {
Hosts: tlsHosts, Hosts: tlsHosts,
}, },

View File

@ -133,3 +133,11 @@ k8s_output="$KOMPOSE_ROOT/script/test/fixtures/configmap-volume/output-k8s.json"
os_output="$KOMPOSE_ROOT/script/test/fixtures/configmap-volume/output-os.json" os_output="$KOMPOSE_ROOT/script/test/fixtures/configmap-volume/output-os.json"
convert::expect_success_and_warning "$k8s_cmd" "$k8s_output" convert::expect_success_and_warning "$k8s_cmd" "$k8s_output"
convert::expect_success "$os_cmd" "$os_output" convert::expect_success "$os_cmd" "$os_output"
# test service expose
k8s_cmd="kompose -f $KOMPOSE_ROOT/script/test/fixtures/expose/compose.yaml convert --stdout -j --with-kompose-annotation=false"
ocp_cmd="kompose --provider=openshift -f $KOMPOSE_ROOT/script/test/fixtures/expose/compose.yaml convert --stdout -j --with-kompose-annotation=false"
k8s_output="$KOMPOSE_ROOT/script/test/fixtures/expose/output-k8s.json"
ocp_output="$KOMPOSE_ROOT/script/test/fixtures/expose/output-ocp.json"
convert::expect_success "$k8s_cmd" "$k8s_output"
convert::expect_success "$ocp_cmd" "$ocp_output"

View File

@ -0,0 +1,13 @@
web:
image: tuna/docker-counter23
ports:
- "5000:5000"
links:
- redis
labels:
kompose.service.expose: "batman.example.com/dev,batwoman.example.com"
kompose.service.expose.tls-secret: "test-secret"
redis:
image: redis:3.0
ports:
- "6379"

View File

@ -0,0 +1,228 @@
{
"kind": "List",
"apiVersion": "v1",
"metadata": {},
"items": [
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "redis",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "redis"
}
},
"spec": {
"ports": [
{
"name": "6379",
"port": 6379,
"targetPort": 6379
}
],
"selector": {
"io.kompose.service": "redis"
}
},
"status": {
"loadBalancer": {}
}
},
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "web",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "web"
},
"annotations": {
"kompose.service.expose": "batman.example.com/dev,batwoman.example.com",
"kompose.service.expose.tls-secret": "test-secret"
}
},
"spec": {
"ports": [
{
"name": "5000",
"port": 5000,
"targetPort": 5000
}
],
"selector": {
"io.kompose.service": "web"
}
},
"status": {
"loadBalancer": {}
}
},
{
"kind": "Deployment",
"apiVersion": "apps/v1",
"metadata": {
"name": "redis",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "redis"
}
},
"spec": {
"replicas": 1,
"selector": {
"matchLabels": {
"io.kompose.service": "redis"
}
},
"template": {
"metadata": {
"creationTimestamp": null,
"labels": {
"io.kompose.service": "redis"
}
},
"spec": {
"containers": [
{
"name": "redis",
"image": "redis:3.0",
"ports": [
{
"containerPort": 6379
}
],
"resources": {}
}
],
"restartPolicy": "Always"
}
},
"strategy": {}
},
"status": {}
},
{
"kind": "Deployment",
"apiVersion": "apps/v1",
"metadata": {
"name": "web",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "web"
},
"annotations": {
"kompose.service.expose": "batman.example.com/dev,batwoman.example.com",
"kompose.service.expose.tls-secret": "test-secret"
}
},
"spec": {
"replicas": 1,
"selector": {
"matchLabels": {
"io.kompose.service": "web"
}
},
"template": {
"metadata": {
"creationTimestamp": null,
"labels": {
"io.kompose.service": "web"
},
"annotations": {
"kompose.service.expose": "batman.example.com/dev,batwoman.example.com",
"kompose.service.expose.tls-secret": "test-secret"
}
},
"spec": {
"containers": [
{
"name": "web",
"image": "tuna/docker-counter23",
"ports": [
{
"containerPort": 5000
}
],
"resources": {}
}
],
"restartPolicy": "Always"
}
},
"strategy": {}
},
"status": {}
},
{
"kind": "Ingress",
"apiVersion": "networking.k8s.io/v1",
"metadata": {
"name": "web",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "web"
},
"annotations": {
"kompose.service.expose": "batman.example.com/dev,batwoman.example.com",
"kompose.service.expose.tls-secret": "test-secret"
}
},
"spec": {
"tls": [
{
"hosts": [
"batman.example.com",
"batwoman.example.com"
],
"secretName": "test-secret"
}
],
"rules": [
{
"host": "batman.example.com",
"http": {
"paths": [
{
"path": "/dev",
"pathType": "Prefix",
"backend": {
"service": {
"name": "web",
"port": {
"number": 5000
}
}
}
}
]
}
},
{
"host": "batwoman.example.com",
"http": {
"paths": [
{
"path": "/",
"pathType": "Prefix",
"backend": {
"service": {
"name": "web",
"port": {
"number": 5000
}
}
}
}
]
}
}
]
},
"status": {
"loadBalancer": {}
}
}
]
}

View File

@ -0,0 +1,298 @@
{
"kind": "List",
"apiVersion": "v1",
"metadata": {},
"items": [
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "redis",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "redis"
}
},
"spec": {
"ports": [
{
"name": "6379",
"port": 6379,
"targetPort": 6379
}
],
"selector": {
"io.kompose.service": "redis"
}
},
"status": {
"loadBalancer": {}
}
},
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "web",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "web"
},
"annotations": {
"kompose.service.expose": "batman.example.com/dev,batwoman.example.com",
"kompose.service.expose.tls-secret": "test-secret"
}
},
"spec": {
"ports": [
{
"name": "5000",
"port": 5000,
"targetPort": 5000
}
],
"selector": {
"io.kompose.service": "web"
}
},
"status": {
"loadBalancer": {}
}
},
{
"kind": "DeploymentConfig",
"apiVersion": "v1",
"metadata": {
"name": "redis",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "redis"
}
},
"spec": {
"strategy": {
"resources": {}
},
"triggers": [
{
"type": "ConfigChange"
},
{
"type": "ImageChange",
"imageChangeParams": {
"automatic": true,
"containerNames": [
"redis"
],
"from": {
"kind": "ImageStreamTag",
"name": "redis:3.0"
}
}
}
],
"replicas": 1,
"test": false,
"selector": {
"io.kompose.service": "redis"
},
"template": {
"metadata": {
"creationTimestamp": null,
"labels": {
"io.kompose.service": "redis"
}
},
"spec": {
"containers": [
{
"name": "redis",
"image": " ",
"ports": [
{
"containerPort": 6379
}
],
"resources": {}
}
],
"restartPolicy": "Always"
}
}
},
"status": {
"latestVersion": 0,
"observedGeneration": 0,
"replicas": 0,
"updatedReplicas": 0,
"availableReplicas": 0,
"unavailableReplicas": 0
}
},
{
"kind": "ImageStream",
"apiVersion": "v1",
"metadata": {
"name": "redis",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "redis"
}
},
"spec": {
"lookupPolicy": {
"local": false
},
"tags": [
{
"name": "",
"annotations": null,
"from": {
"kind": "DockerImage",
"name": "redis:3.0"
},
"generation": null,
"importPolicy": {},
"referencePolicy": {
"type": ""
}
}
]
},
"status": {
"dockerImageRepository": ""
}
},
{
"kind": "DeploymentConfig",
"apiVersion": "v1",
"metadata": {
"name": "web",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "web"
},
"annotations": {
"kompose.service.expose": "batman.example.com/dev,batwoman.example.com",
"kompose.service.expose.tls-secret": "test-secret"
}
},
"spec": {
"strategy": {
"resources": {}
},
"triggers": [
{
"type": "ConfigChange"
},
{
"type": "ImageChange",
"imageChangeParams": {
"automatic": true,
"containerNames": [
"web"
],
"from": {
"kind": "ImageStreamTag",
"name": "web:latest"
}
}
}
],
"replicas": 1,
"test": false,
"selector": {
"io.kompose.service": "web"
},
"template": {
"metadata": {
"creationTimestamp": null,
"labels": {
"io.kompose.service": "web"
}
},
"spec": {
"containers": [
{
"name": "web",
"image": " ",
"ports": [
{
"containerPort": 5000
}
],
"resources": {}
}
],
"restartPolicy": "Always"
}
}
},
"status": {
"latestVersion": 0,
"observedGeneration": 0,
"replicas": 0,
"updatedReplicas": 0,
"availableReplicas": 0,
"unavailableReplicas": 0
}
},
{
"kind": "ImageStream",
"apiVersion": "v1",
"metadata": {
"name": "web",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "web"
}
},
"spec": {
"lookupPolicy": {
"local": false
},
"tags": [
{
"name": "",
"annotations": null,
"from": {
"kind": "DockerImage",
"name": "tuna/docker-counter23"
},
"generation": null,
"importPolicy": {},
"referencePolicy": {
"type": ""
}
}
]
},
"status": {
"dockerImageRepository": ""
}
},
{
"kind": "Route",
"apiVersion": "v1",
"metadata": {
"name": "web",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "web"
}
},
"spec": {
"host": "batman.example.com/dev,batwoman.example.com",
"to": {
"kind": "Service",
"name": "web",
"weight": null
},
"port": {
"targetPort": 5000
}
},
"status": {}
}
]
}