mirror of https://github.com/linkerd/linkerd2.git
jaeger: add install unit tests (#6166)
Manifests are very prone to go wrong as Helm indentation changes, etc are very easy to go wrong. This PR adds unit tests to the render logic, so that changes to the output manifests are tracked. This follows the same pattern as that of other render unit tests in core cp, viz, etc. Signed-off-by: Tarun Pothulapati <tarunpothulapati@outlook.com>
This commit is contained in:
parent
8c98d88763
commit
acee6b0a64
|
|
@ -0,0 +1,43 @@
|
|||
package cmd
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/linkerd/linkerd2/pkg/charts"
|
||||
)
|
||||
|
||||
func TestRender(t *testing.T) {
|
||||
|
||||
// pin values that are changed by render functions on each test run
|
||||
defaultValues := map[string]interface{}{
|
||||
"webhook": map[string]interface{}{
|
||||
"keyPEM": "test-webhhook-key-pem",
|
||||
"crtPEM": "test-webhook-crt-pem",
|
||||
"caBundle": "test-webhook-ca-bundle",
|
||||
},
|
||||
}
|
||||
|
||||
testCases := []struct {
|
||||
values map[string]interface{}
|
||||
goldenFileName string
|
||||
}{
|
||||
{
|
||||
nil,
|
||||
"install_default.golden",
|
||||
},
|
||||
}
|
||||
|
||||
for i, tc := range testCases {
|
||||
tc := tc // pin
|
||||
t.Run(fmt.Sprintf("%d: %s", i, tc.goldenFileName), func(t *testing.T) {
|
||||
var buf bytes.Buffer
|
||||
// Merge overrides with default
|
||||
if err := render(&buf, charts.MergeMaps(defaultValues, tc.values)); err != nil {
|
||||
t.Fatalf("Failed to render templates: %v", err)
|
||||
}
|
||||
testDataDiffer.DiffTestdata(t, tc.goldenFileName, buf.String())
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
package cmd
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/linkerd/linkerd2/testutil"
|
||||
)
|
||||
|
||||
var (
|
||||
testDataDiffer testutil.TestDataDiffer
|
||||
)
|
||||
|
||||
// TestMain parses flags before running tests
|
||||
func TestMain(m *testing.M) {
|
||||
flag.BoolVar(&testDataDiffer.UpdateFixtures, "update", false, "update text fixtures in place")
|
||||
prettyDiff := os.Getenv("LINKERD_TEST_PRETTY_DIFF") != ""
|
||||
flag.BoolVar(&testDataDiffer.PrettyDiff, "pretty-diff", prettyDiff, "display the full text when diffing")
|
||||
flag.StringVar(&testDataDiffer.RejectPath, "reject-path", "", "write results for failed tests to this path (path is relative to the test location)")
|
||||
flag.Parse()
|
||||
os.Exit(m.Run())
|
||||
}
|
||||
|
|
@ -0,0 +1,358 @@
|
|||
---
|
||||
kind: Namespace
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: linkerd-jaeger
|
||||
labels:
|
||||
linkerd.io/extension: jaeger
|
||||
annotations:
|
||||
linkerd.io/inject: enabled
|
||||
config.linkerd.io/proxy-await: "enabled"
|
||||
---
|
||||
###
|
||||
### Jaeger Injector
|
||||
###
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
labels:
|
||||
linkerd.io/extension: jaeger
|
||||
app.kubernetes.io/name: jaeger-injector
|
||||
app.kubernetes.io/part-of: Linkerd
|
||||
app.kubernetes.io/version: dev-undefined
|
||||
component: jaeger-injector
|
||||
name: jaeger-injector
|
||||
namespace: linkerd-jaeger
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
linkerd.io/extension: jaeger
|
||||
component: jaeger-injector
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
checksum/config: 525d4805deeeee18bbcd97ab075362fcae2250d997ff311665a0b7b464eebdc4
|
||||
labels:
|
||||
linkerd.io/extension: jaeger
|
||||
component: jaeger-injector
|
||||
spec:
|
||||
nodeSelector:
|
||||
beta.kubernetes.io/os: linux
|
||||
containers:
|
||||
- args:
|
||||
- -collector-svc-addr=collector.linkerd-jaeger:55678
|
||||
- -collector-svc-account=collector
|
||||
- -log-level=info
|
||||
image: cr.l5d.io/linkerd/jaeger-webhook:dev-undefined
|
||||
imagePullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /ping
|
||||
port: 9995
|
||||
initialDelaySeconds: 10
|
||||
name: jaeger-injector
|
||||
ports:
|
||||
- containerPort: 8443
|
||||
name: jaeger-injector
|
||||
- containerPort: 9995
|
||||
name: admin-http
|
||||
readinessProbe:
|
||||
failureThreshold: 7
|
||||
httpGet:
|
||||
path: /ready
|
||||
port: 9995
|
||||
volumeMounts:
|
||||
- mountPath: /var/run/linkerd/tls
|
||||
name: tls
|
||||
readOnly: true
|
||||
serviceAccountName: jaeger-injector
|
||||
volumes:
|
||||
- name: tls
|
||||
secret:
|
||||
secretName: jaeger-injector-k8s-tls
|
||||
---
|
||||
kind: Service
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: jaeger-injector
|
||||
namespace: linkerd-jaeger
|
||||
labels:
|
||||
linkerd.io/extension: jaeger
|
||||
component: jaeger-injector
|
||||
spec:
|
||||
type: ClusterIP
|
||||
selector:
|
||||
linkerd.io/extension: jaeger
|
||||
component: jaeger-injector
|
||||
ports:
|
||||
- name: jaeger-injector
|
||||
port: 443
|
||||
targetPort: jaeger-injector
|
||||
---
|
||||
###
|
||||
### collector RBAC
|
||||
###
|
||||
kind: ServiceAccount
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: collector
|
||||
namespace: linkerd-jaeger
|
||||
---
|
||||
###
|
||||
### jaeger RBAC
|
||||
###
|
||||
kind: ServiceAccount
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: jaeger
|
||||
namespace: linkerd-jaeger
|
||||
|
||||
---
|
||||
###
|
||||
### Jaeger Injector RBAC
|
||||
###
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: linkerd-jaeger-injector
|
||||
labels:
|
||||
linkerd.io/extension: jaeger
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["namespaces"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
---
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: linkerd-jaeger-injector
|
||||
labels:
|
||||
linkerd.io/extension: jaeger
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: jaeger-injector
|
||||
namespace: linkerd-jaeger
|
||||
apiGroup: ""
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: linkerd-jaeger-injector
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
---
|
||||
kind: ServiceAccount
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: jaeger-injector
|
||||
namespace: linkerd-jaeger
|
||||
---
|
||||
kind: Secret
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: jaeger-injector-k8s-tls
|
||||
namespace: linkerd-jaeger
|
||||
type: kubernetes.io/tls
|
||||
data:
|
||||
tls.crt: dGVzdC13ZWJob29rLWNydC1wZW0=
|
||||
tls.key: dGVzdC13ZWJoaG9vay1rZXktcGVt
|
||||
---
|
||||
apiVersion: admissionregistration.k8s.io/v1
|
||||
kind: MutatingWebhookConfiguration
|
||||
metadata:
|
||||
name: linkerd-jaeger-injector-webhook-config
|
||||
labels:
|
||||
linkerd.io/extension: jaeger
|
||||
webhooks:
|
||||
- name: jaeger-injector.linkerd.io
|
||||
clientConfig:
|
||||
service:
|
||||
name: jaeger-injector
|
||||
namespace: linkerd-jaeger
|
||||
path: "/"
|
||||
caBundle: dGVzdC13ZWJob29rLWNhLWJ1bmRsZQ==
|
||||
failurePolicy: Ignore
|
||||
admissionReviewVersions: ["v1", "v1beta1"]
|
||||
reinvocationPolicy: IfNeeded
|
||||
rules:
|
||||
- operations: [ "CREATE" ]
|
||||
apiGroups: [""]
|
||||
apiVersions: ["v1"]
|
||||
resources: ["pods"]
|
||||
sideEffects: None
|
||||
---
|
||||
###
|
||||
### Tracing Collector Service
|
||||
###
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: collector-config
|
||||
namespace: linkerd-jaeger
|
||||
labels:
|
||||
component: collector
|
||||
data:
|
||||
collector-config: |
|
||||
receivers:
|
||||
opencensus:
|
||||
port: 55678
|
||||
zipkin:
|
||||
port: 9411
|
||||
jaeger:
|
||||
jaeger-thrift-http-port: 14268
|
||||
queued-exporters:
|
||||
jaeger-all-in-one:
|
||||
num-workers: 4
|
||||
queue-size: 100
|
||||
retry-on-failure: true
|
||||
sender-type: jaeger-thrift-http
|
||||
jaeger-thrift-http:
|
||||
collector-endpoint: http://jaeger.linkerd-jaeger:14268/api/traces
|
||||
timeout: 5s
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: collector
|
||||
namespace: linkerd-jaeger
|
||||
labels:
|
||||
component: collector
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- name: opencensus
|
||||
port: 55678
|
||||
protocol: TCP
|
||||
targetPort: 55678
|
||||
- name: zipkin
|
||||
port: 9411
|
||||
protocol: TCP
|
||||
targetPort: 9411
|
||||
- name: jaeger
|
||||
port: 14268
|
||||
protocol: TCP
|
||||
targetPort: 14268
|
||||
selector:
|
||||
component: collector
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: collector
|
||||
app.kubernetes.io/part-of: Linkerd
|
||||
component: collector
|
||||
name: collector
|
||||
namespace: linkerd-jaeger
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
component: collector
|
||||
minReadySeconds: 5
|
||||
progressDeadlineSeconds: 120
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
prometheus.io/path: /metrics
|
||||
prometheus.io/port: "8888"
|
||||
prometheus.io/scrape: "true"
|
||||
labels:
|
||||
component: collector
|
||||
spec:
|
||||
nodeSelector:
|
||||
beta.kubernetes.io/os: linux
|
||||
containers:
|
||||
- command:
|
||||
- /occollector_linux
|
||||
- --config=/conf/collector-config.yaml
|
||||
env:
|
||||
- name: GOGC
|
||||
value: "80"
|
||||
image: omnition/opencensus-collector:0.1.11
|
||||
imagePullPolicy: Always
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: 13133
|
||||
name: oc-collector
|
||||
ports:
|
||||
- containerPort: 55678
|
||||
- containerPort: 9411
|
||||
- containerPort: 14268
|
||||
- containerPort: 8888
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: 13133
|
||||
volumeMounts:
|
||||
- mountPath: /conf
|
||||
name: collector-config-val
|
||||
serviceAccountName: collector
|
||||
volumes:
|
||||
- configMap:
|
||||
items:
|
||||
- key: collector-config
|
||||
path: collector-config.yaml
|
||||
name: collector-config
|
||||
name: collector-config-val
|
||||
---
|
||||
###
|
||||
### Tracing Jaeger Service
|
||||
###
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: jaeger
|
||||
namespace: linkerd-jaeger
|
||||
labels:
|
||||
component: jaeger
|
||||
spec:
|
||||
type: ClusterIP
|
||||
selector:
|
||||
component: jaeger
|
||||
ports:
|
||||
- name: collection
|
||||
port: 14268
|
||||
- name: ui
|
||||
port: 16686
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: jaeger
|
||||
app.kubernetes.io/part-of: Linkerd
|
||||
component: jaeger
|
||||
name: jaeger
|
||||
namespace: linkerd-jaeger
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
component: jaeger
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
config.linkerd.io/proxy-await: "enabled"
|
||||
prometheus.io/path: /metrics
|
||||
prometheus.io/port: "14269"
|
||||
prometheus.io/scrape: "true"
|
||||
labels:
|
||||
component: jaeger
|
||||
spec:
|
||||
nodeSelector:
|
||||
beta.kubernetes.io/os: linux
|
||||
containers:
|
||||
- args:
|
||||
- --query.base-path=/jaeger
|
||||
image: jaegertracing/all-in-one:1.19.2
|
||||
imagePullPolicy: Always
|
||||
name: jaeger
|
||||
ports:
|
||||
- containerPort: 14269
|
||||
name: admin
|
||||
- containerPort: 14268
|
||||
name: collection
|
||||
- containerPort: 16686
|
||||
name: ui
|
||||
dnsPolicy: ClusterFirst
|
||||
serviceAccountName: jaeger
|
||||
Loading…
Reference in New Issue