Merge pull request #1185 from philnichol/adding-appprotocol

feat: Add an optional `appProtocol` field to `spec.service`
This commit is contained in:
Sanskar Jaiswal
2022-05-19 19:26:49 +05:30
committed by GitHub
6 changed files with 17 additions and 0 deletions
+5
View File
@@ -128,6 +128,11 @@ type CanaryService struct {
// +optional
TargetPort intstr.IntOrString `json:"targetPort,omitempty"`
// AppProtocol of the service
// https://kubernetes.io/docs/concepts/services-networking/service/#application-protocol
// +optional
AppProtocol string `json:"appProtocol,omitempty"`
// PortDiscovery adds all container ports to the generated Kubernetes service
PortDiscovery bool `json:"portDiscovery"`
+4
View File
@@ -114,6 +114,10 @@ func (c *KubernetesDefaultRouter) reconcileService(canary *flaggerv1.Canary, nam
},
}
if v := canary.Spec.Service.AppProtocol; v != "" {
svcSpec.Ports[0].AppProtocol = &v
}
// set additional ports
for n, p := range c.ports {
cp := corev1.ServicePort{
+2
View File
@@ -39,6 +39,7 @@ func TestServiceRouter_Create(t *testing.T) {
flaggerClient: mocks.flaggerClient,
logger: mocks.logger,
}
appProtocol := "http"
err := router.Initialize(mocks.canary)
require.NoError(t, err)
@@ -49,6 +50,7 @@ func TestServiceRouter_Create(t *testing.T) {
canarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get(context.TODO(), "podinfo-canary", metav1.GetOptions{})
require.NoError(t, err)
assert.Equal(t, &appProtocol, canarySvc.Spec.Ports[0].AppProtocol)
assert.Equal(t, "http", canarySvc.Spec.Ports[0].Name)
assert.Equal(t, int32(9898), canarySvc.Spec.Ports[0].Port)
+1
View File
@@ -100,6 +100,7 @@ func newTestCanary() *flaggerv1.Canary {
Service: flaggerv1.CanaryService{
Port: 9898,
PortDiscovery: true,
AppProtocol: "http",
Headers: &istiov1alpha3.Headers{
Request: &istiov1alpha3.HeaderOperations{
Add: map[string]string{