...

Source file src/sigs.k8s.io/kustomize/api/krusty/issue3377_test.go

Documentation: sigs.k8s.io/kustomize/api/krusty

     1  // Copyright 2021 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package krusty_test
     5  
     6  import (
     7  	"testing"
     8  
     9  	kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
    10  )
    11  
    12  func TestIssue3377(t *testing.T) {
    13  	th := kusttest_test.MakeHarness(t)
    14  	opts := th.MakeDefaultOptions()
    15  	th.WriteK(".", `
    16  resources:
    17  - service-a.yaml
    18  - service-b.yaml
    19  
    20  patchesJson6902:
    21  - path: service-a-patch.yaml
    22    target:
    23      version: v1
    24      group: networking.k8s.io
    25      kind: Ingress
    26      name: service-a
    27  - path: service-b-patch.yaml
    28    target:
    29      version: v1
    30      group: networking.k8s.io
    31      kind: Ingress
    32      name: service-b
    33  vars:
    34  - name: SERVICE_A_DNS_NAME
    35    objref:
    36      apiVersion: networking.k8s.io/v1
    37      kind: Ingress
    38      name: service-a
    39    fieldref:
    40      fieldpath: spec.rules[0].host
    41  - name: SERVICE_B_DNS_NAME
    42    objref:
    43      apiVersion: networking.k8s.io/v1
    44      kind: Ingress
    45      name: service-b
    46    fieldref:
    47      fieldpath: spec.rules[0].host
    48  `)
    49  
    50  	th.WriteF("service-a.yaml", `
    51  apiVersion: apps/v1
    52  kind: Deployment
    53  metadata:
    54    name: service-a
    55  spec:
    56    replicas: 1
    57    selector:
    58      matchLabels:
    59        app.kubernetes.io/component: service-a
    60    template:
    61      metadata:
    62        labels:
    63          app.kubernetes.io/component: service-a
    64      spec:
    65        containers:
    66        - image: repository/service-a:v1
    67          imagePullPolicy: Always
    68          name: service-b
    69          ports:
    70          - containerPort: 8080
    71          env:
    72          - name: REDIRECT_URI
    73            value: "http://$(SERVICE_B_DNS_NAME):80/oauth_redir"
    74  ---
    75  apiVersion: v1
    76  kind: Service
    77  metadata:
    78    name: service-a
    79    labels:
    80      app.kubernetes.io/component: service-a
    81  spec:
    82    type: LoadBalancer
    83    ports:
    84    - port: 8080
    85    selector:
    86      app.kubernetes.io/component: service-a
    87  ---
    88  apiVersion: networking.k8s.io/v1
    89  kind: Ingress
    90  metadata:
    91    name: service-a
    92  spec:
    93    rules:
    94    - host: service-a.k8s.com
    95      http:
    96        paths:
    97        - path: /
    98          pathType: Prefix
    99          backend:
   100            service:
   101              name: service-a
   102              port:
   103                number: 8080
   104  `)
   105  
   106  	th.WriteF("service-a-patch.yaml", `
   107  - op: replace
   108    path: /spec/rules/0/host
   109    value: new-service-a.k8s.com
   110  `)
   111  
   112  	th.WriteF("service-b.yaml", `
   113  apiVersion: apps/v1
   114  kind: Deployment
   115  metadata:
   116    name: service-b
   117  spec:
   118    replicas: 1
   119    selector:
   120      matchLabels:
   121        app.kubernetes.io/component: service-b
   122    template:
   123      metadata:
   124        labels:
   125          app.kubernetes.io/component: service-b
   126      spec:
   127        containers:
   128        - image: repository/service-b:v1
   129          imagePullPolicy: Always
   130          name: service-b
   131          ports:
   132          - containerPort: 8080
   133          env:
   134          - name: REDIRECT_URI
   135            value: "http://$(SERVICE_A_DNS_NAME):80/oauth_redir"
   136  ---
   137  apiVersion: v1
   138  kind: Service
   139  metadata:
   140    name: service-b
   141    labels:
   142      app.kubernetes.io/component: service-b
   143  spec:
   144    type: LoadBalancer
   145    ports:
   146    - port: 8080
   147    selector:
   148      app.kubernetes.io/component: service-b
   149  ---
   150  apiVersion: networking.k8s.io/v1
   151  kind: Ingress
   152  metadata:
   153    name: service-b
   154  spec:
   155    rules:
   156    - host: service-b.k8s.com
   157      http:
   158        paths:
   159        - path: /
   160          pathType: Prefix
   161          backend:
   162            service:
   163              name: service-b
   164              port:
   165                number: 8080
   166  `)
   167  	th.WriteF("service-b-patch.yaml", `
   168  - op: replace
   169    path: /spec/rules/0/host
   170    value: new-service-b.k8s.com
   171  `)
   172  	m := th.Run(".", opts)
   173  	th.AssertActualEqualsExpected(
   174  		m, `
   175  apiVersion: apps/v1
   176  kind: Deployment
   177  metadata:
   178    name: service-a
   179  spec:
   180    replicas: 1
   181    selector:
   182      matchLabels:
   183        app.kubernetes.io/component: service-a
   184    template:
   185      metadata:
   186        labels:
   187          app.kubernetes.io/component: service-a
   188      spec:
   189        containers:
   190        - env:
   191          - name: REDIRECT_URI
   192            value: http://new-service-b.k8s.com:80/oauth_redir
   193          image: repository/service-a:v1
   194          imagePullPolicy: Always
   195          name: service-b
   196          ports:
   197          - containerPort: 8080
   198  ---
   199  apiVersion: v1
   200  kind: Service
   201  metadata:
   202    labels:
   203      app.kubernetes.io/component: service-a
   204    name: service-a
   205  spec:
   206    ports:
   207    - port: 8080
   208    selector:
   209      app.kubernetes.io/component: service-a
   210    type: LoadBalancer
   211  ---
   212  apiVersion: networking.k8s.io/v1
   213  kind: Ingress
   214  metadata:
   215    name: service-a
   216  spec:
   217    rules:
   218    - host: new-service-a.k8s.com
   219      http:
   220        paths:
   221        - backend:
   222            service:
   223              name: service-a
   224              port:
   225                number: 8080
   226          path: /
   227          pathType: Prefix
   228  ---
   229  apiVersion: apps/v1
   230  kind: Deployment
   231  metadata:
   232    name: service-b
   233  spec:
   234    replicas: 1
   235    selector:
   236      matchLabels:
   237        app.kubernetes.io/component: service-b
   238    template:
   239      metadata:
   240        labels:
   241          app.kubernetes.io/component: service-b
   242      spec:
   243        containers:
   244        - env:
   245          - name: REDIRECT_URI
   246            value: http://new-service-a.k8s.com:80/oauth_redir
   247          image: repository/service-b:v1
   248          imagePullPolicy: Always
   249          name: service-b
   250          ports:
   251          - containerPort: 8080
   252  ---
   253  apiVersion: v1
   254  kind: Service
   255  metadata:
   256    labels:
   257      app.kubernetes.io/component: service-b
   258    name: service-b
   259  spec:
   260    ports:
   261    - port: 8080
   262    selector:
   263      app.kubernetes.io/component: service-b
   264    type: LoadBalancer
   265  ---
   266  apiVersion: networking.k8s.io/v1
   267  kind: Ingress
   268  metadata:
   269    name: service-b
   270  spec:
   271    rules:
   272    - host: new-service-b.k8s.com
   273      http:
   274        paths:
   275        - backend:
   276            service:
   277              name: service-b
   278              port:
   279                number: 8080
   280          path: /
   281          pathType: Prefix
   282  `)
   283  }
   284  

View as plain text