mirror of https://github.com/linkerd/linkerd2.git
Use cniPluginVersion with Helm for linkerd2-cni (#4693)
use `cniPluginVersion` as the fall-back version with Helm
This commit is contained in:
parent
361d35bb6a
commit
c3131cde0e
|
@ -163,7 +163,7 @@ metadata:
|
||||||
k8s-app: linkerd-cni
|
k8s-app: linkerd-cni
|
||||||
{{.Values.cniResourceLabel}}: "true"
|
{{.Values.cniResourceLabel}}: "true"
|
||||||
annotations:
|
annotations:
|
||||||
{{.Values.createdByAnnotation}}: {{.Values.cliVersion}}
|
{{.Values.createdByAnnotation}}: {{default (printf "linkerd/helm %s" .Values.cniPluginVersion) .Values.cliVersion}}
|
||||||
spec:
|
spec:
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
|
@ -177,7 +177,7 @@ spec:
|
||||||
labels:
|
labels:
|
||||||
k8s-app: linkerd-cni
|
k8s-app: linkerd-cni
|
||||||
annotations:
|
annotations:
|
||||||
{{.Values.createdByAnnotation}}: {{.Values.cliVersion}}
|
{{.Values.createdByAnnotation}}: {{default (printf "linkerd/helm %s" .Values.cniPluginVersion) .Values.cliVersion}}
|
||||||
spec:
|
spec:
|
||||||
nodeSelector:
|
nodeSelector:
|
||||||
beta.kubernetes.io/os: linux
|
beta.kubernetes.io/os: linux
|
||||||
|
|
|
@ -19,18 +19,13 @@ func TestRenderCniHelm(t *testing.T) {
|
||||||
// the golden file is generated using the following `helm template` command:
|
// the golden file is generated using the following `helm template` command:
|
||||||
// bin/helm template --set namespace="linkerd-test" --set controllerNamespaceLabel="linkerd.io/control-plane-ns-test" --set cniResourceAnnotation="linkerd.io/cni-resource-test" --set inboundProxyPort=1234 --set outboundProxyPort=5678 --set createdByAnnotation="linkerd.io/created-by-test" --set cniPluginImage="gcr.io/linkerd-io/cni-plugin-test" --set cniPluginVersion="test-version" --set logLevel="debug" --set proxyUID=1111 --set destCNINetDir="/etc/cni/net.d-test" --set destCNIBinDir="/opt/cni/bin-test" --set useWaitFlag=true --set cliVersion=test-version charts/linkerd2-cni
|
// bin/helm template --set namespace="linkerd-test" --set controllerNamespaceLabel="linkerd.io/control-plane-ns-test" --set cniResourceAnnotation="linkerd.io/cni-resource-test" --set inboundProxyPort=1234 --set outboundProxyPort=5678 --set createdByAnnotation="linkerd.io/created-by-test" --set cniPluginImage="gcr.io/linkerd-io/cni-plugin-test" --set cniPluginVersion="test-version" --set logLevel="debug" --set proxyUID=1111 --set destCNINetDir="/etc/cni/net.d-test" --set destCNIBinDir="/opt/cni/bin-test" --set useWaitFlag=true --set cliVersion=test-version charts/linkerd2-cni
|
||||||
|
|
||||||
t.Run("Cni Install", func(t *testing.T) {
|
t.Run("Cni Install with defaults", func(t *testing.T) {
|
||||||
chartCni := chartCniPlugin(t)
|
chartCni := chartCniPlugin(t)
|
||||||
testRenderCniHelm(t, chartCni, "install_cni_helm_output.golden")
|
testRenderCniHelm(t, chartCni, &pb.Config{}, "install_cni_helm_default_output.golden")
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
t.Run("Cni Install with overridden values", func(t *testing.T) {
|
||||||
|
chartCni := chartCniPlugin(t)
|
||||||
func testRenderCniHelm(t *testing.T, chart *pb.Chart, goldenFileName string) {
|
|
||||||
var (
|
|
||||||
chartName = "linkerd2-cni"
|
|
||||||
namespace = "linkerd-test"
|
|
||||||
)
|
|
||||||
overrideJSON :=
|
overrideJSON :=
|
||||||
`{
|
`{
|
||||||
"namespace": "linkerd-test",
|
"namespace": "linkerd-test",
|
||||||
|
@ -49,6 +44,16 @@ func testRenderCniHelm(t *testing.T, chart *pb.Chart, goldenFileName string) {
|
||||||
}`
|
}`
|
||||||
|
|
||||||
overrideConfig := &pb.Config{Raw: overrideJSON}
|
overrideConfig := &pb.Config{Raw: overrideJSON}
|
||||||
|
testRenderCniHelm(t, chartCni, overrideConfig, "install_cni_helm_override_output.golden")
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func testRenderCniHelm(t *testing.T, chart *pb.Chart, overrideConfig *pb.Config, goldenFileName string) {
|
||||||
|
var (
|
||||||
|
chartName = "linkerd2-cni"
|
||||||
|
namespace = "linkerd-test"
|
||||||
|
)
|
||||||
|
|
||||||
releaseOptions := renderutil.Options{
|
releaseOptions := renderutil.Options{
|
||||||
ReleaseOptions: chartutil.ReleaseOptions{
|
ReleaseOptions: chartutil.ReleaseOptions{
|
||||||
|
|
|
@ -0,0 +1,204 @@
|
||||||
|
---
|
||||||
|
# Source: linkerd2-cni/templates/cni-plugin.yaml
|
||||||
|
kind: Namespace
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: linkerd-cni
|
||||||
|
annotations:
|
||||||
|
linkerd.io/inject: disabled
|
||||||
|
labels:
|
||||||
|
linkerd.io/cni-resource: "true"
|
||||||
|
config.linkerd.io/admission-webhooks: disabled
|
||||||
|
---
|
||||||
|
apiVersion: policy/v1beta1
|
||||||
|
kind: PodSecurityPolicy
|
||||||
|
metadata:
|
||||||
|
name: linkerd-linkerd-cni-cni
|
||||||
|
labels:
|
||||||
|
linkerd.io/cni-resource: "true"
|
||||||
|
spec:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
fsGroup:
|
||||||
|
rule: RunAsAny
|
||||||
|
hostNetwork: true
|
||||||
|
runAsUser:
|
||||||
|
rule: RunAsAny
|
||||||
|
seLinux:
|
||||||
|
rule: RunAsAny
|
||||||
|
supplementalGroups:
|
||||||
|
rule: RunAsAny
|
||||||
|
volumes:
|
||||||
|
- hostPath
|
||||||
|
- secret
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: linkerd-cni
|
||||||
|
namespace: linkerd-cni
|
||||||
|
labels:
|
||||||
|
linkerd.io/cni-resource: "true"
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: Role
|
||||||
|
metadata:
|
||||||
|
name: linkerd-cni
|
||||||
|
namespace: linkerd-cni
|
||||||
|
labels:
|
||||||
|
linkerd.io/cni-resource: "true"
|
||||||
|
rules:
|
||||||
|
- apiGroups: ['extensions', 'policy']
|
||||||
|
resources: ['podsecuritypolicies']
|
||||||
|
resourceNames:
|
||||||
|
- linkerd-linkerd-cni-cni
|
||||||
|
verbs: ['use']
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
name: linkerd-cni
|
||||||
|
namespace: linkerd-cni
|
||||||
|
labels:
|
||||||
|
linkerd.io/cni-resource: "true"
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: Role
|
||||||
|
name: linkerd-cni
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: linkerd-cni
|
||||||
|
namespace: linkerd-cni
|
||||||
|
---
|
||||||
|
kind: ClusterRole
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||||
|
metadata:
|
||||||
|
name: linkerd-cni
|
||||||
|
labels:
|
||||||
|
linkerd.io/cni-resource: "true"
|
||||||
|
rules:
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources: ["pods", "nodes", "namespaces"]
|
||||||
|
verbs: ["list", "get", "watch"]
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: linkerd-cni
|
||||||
|
labels:
|
||||||
|
linkerd.io/cni-resource: "true"
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: linkerd-cni
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: linkerd-cni
|
||||||
|
namespace: linkerd-cni
|
||||||
|
---
|
||||||
|
kind: ConfigMap
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: linkerd-cni-config
|
||||||
|
namespace: linkerd-cni
|
||||||
|
labels:
|
||||||
|
linkerd.io/cni-resource: "true"
|
||||||
|
data:
|
||||||
|
dest_cni_net_dir: "/etc/cni/net.d"
|
||||||
|
dest_cni_bin_dir: "/opt/cni/bin"
|
||||||
|
# The CNI network configuration to install on each node. The special
|
||||||
|
# values in this config will be automatically populated.
|
||||||
|
cni_network_config: |-
|
||||||
|
{
|
||||||
|
"name": "linkerd-cni",
|
||||||
|
"type": "linkerd-cni",
|
||||||
|
"log_level": "info",
|
||||||
|
"policy": {
|
||||||
|
"type": "k8s",
|
||||||
|
"k8s_api_root": "https://__KUBERNETES_SERVICE_HOST__:__KUBERNETES_SERVICE_PORT__",
|
||||||
|
"k8s_auth_token": "__SERVICEACCOUNT_TOKEN__"
|
||||||
|
},
|
||||||
|
"kubernetes": {
|
||||||
|
"kubeconfig": "__KUBECONFIG_FILEPATH__"
|
||||||
|
},
|
||||||
|
"linkerd": {
|
||||||
|
"incoming-proxy-port": 4143,
|
||||||
|
"outgoing-proxy-port": 4140,
|
||||||
|
"proxy-uid": 2102,
|
||||||
|
"ports-to-redirect": [],
|
||||||
|
"inbound-ports-to-ignore": [],
|
||||||
|
"outbound-ports-to-ignore": [],
|
||||||
|
"simulate": false,
|
||||||
|
"use-wait-flag": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
---
|
||||||
|
kind: DaemonSet
|
||||||
|
apiVersion: apps/v1
|
||||||
|
metadata:
|
||||||
|
name: linkerd-cni
|
||||||
|
namespace: linkerd-cni
|
||||||
|
labels:
|
||||||
|
k8s-app: linkerd-cni
|
||||||
|
linkerd.io/cni-resource: "true"
|
||||||
|
annotations:
|
||||||
|
linkerd.io/created-by: linkerd/cli dev-undefined
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
k8s-app: linkerd-cni
|
||||||
|
updateStrategy:
|
||||||
|
type: RollingUpdate
|
||||||
|
rollingUpdate:
|
||||||
|
maxUnavailable: 1
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: linkerd-cni
|
||||||
|
annotations:
|
||||||
|
linkerd.io/created-by: linkerd/cli dev-undefined
|
||||||
|
spec:
|
||||||
|
nodeSelector:
|
||||||
|
beta.kubernetes.io/os: linux
|
||||||
|
hostNetwork: true
|
||||||
|
serviceAccountName: linkerd-cni
|
||||||
|
containers:
|
||||||
|
# This container installs the linkerd CNI binaries
|
||||||
|
# and CNI network config file on each node. The install
|
||||||
|
# script copies the files into place and then sleeps so
|
||||||
|
# that Kubernetes doesn't keep trying to restart it.
|
||||||
|
- name: install-cni
|
||||||
|
image: gcr.io/linkerd-io/cni-plugin:linkerdVersionValue
|
||||||
|
env:
|
||||||
|
- name: DEST_CNI_NET_DIR
|
||||||
|
valueFrom:
|
||||||
|
configMapKeyRef:
|
||||||
|
name: linkerd-cni-config
|
||||||
|
key: dest_cni_net_dir
|
||||||
|
- name: DEST_CNI_BIN_DIR
|
||||||
|
valueFrom:
|
||||||
|
configMapKeyRef:
|
||||||
|
name: linkerd-cni-config
|
||||||
|
key: dest_cni_bin_dir
|
||||||
|
- name: CNI_NETWORK_CONFIG
|
||||||
|
valueFrom:
|
||||||
|
configMapKeyRef:
|
||||||
|
name: linkerd-cni-config
|
||||||
|
key: cni_network_config
|
||||||
|
- name: SLEEP
|
||||||
|
value: "true"
|
||||||
|
lifecycle:
|
||||||
|
preStop:
|
||||||
|
exec:
|
||||||
|
command: ["kill","-15","1"]
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /host/opt/cni/bin
|
||||||
|
name: cni-bin-dir
|
||||||
|
- mountPath: /host/etc/cni/net.d
|
||||||
|
name: cni-net-dir
|
||||||
|
volumes:
|
||||||
|
- name: cni-bin-dir
|
||||||
|
hostPath:
|
||||||
|
path: /opt/cni/bin
|
||||||
|
- name: cni-net-dir
|
||||||
|
hostPath:
|
||||||
|
path: /etc/cni/net.d
|
Loading…
Reference in New Issue